monaco-editor-core 0.55.1 → 0.56.0-dev-20251121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +27 -8
- package/esm/vs/base/browser/dom.js +31 -34
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
- package/esm/vs/base/browser/keyboardEvent.js +3 -3
- package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +5 -2
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +5 -5
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +1 -1
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
- package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
- package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
- package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
- package/esm/vs/base/browser/ui/list/listView.js +7 -2
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/arrays.js +10 -0
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +34 -0
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/buffer.js +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +3 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/collections.js.map +1 -1
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +32 -15
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/filters.js +22 -3
- package/esm/vs/base/common/filters.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -2
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/iterator.js +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keyCodes.js +7 -6
- package/esm/vs/base/common/keyCodes.js.map +1 -1
- package/esm/vs/base/common/linkedList.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marked/marked.js +0 -1
- package/esm/vs/base/common/network.js +26 -1
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/normalization.js +19 -6
- package/esm/vs/base/common/normalization.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +0 -1
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +4 -4
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/path.js +1 -0
- package/esm/vs/base/common/path.js.map +1 -1
- package/esm/vs/base/common/strings.js +27 -19
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
- package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/config/tabFocus.js +4 -2
- package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js +1 -2
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/services/contribution.js +9 -0
- package/esm/vs/editor/browser/services/contribution.js.map +1 -0
- package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +5 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
- package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
- package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +374 -360
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/2d/rect.js +7 -0
- package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
- package/esm/vs/editor/common/core/2d/size.js +20 -0
- package/esm/vs/editor/common/core/2d/size.js.map +1 -0
- package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
- package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
- package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
- package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorContextKeys.js +47 -47
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
- package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -10
- package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +1 -1
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/format.js +21 -6
- package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverUtils.js +24 -0
- package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +415 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +253 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -31
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/editor/editor.all.js +1 -0
- package/esm/vs/editor/editor.all.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +9 -5
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +2 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configuration.js +5 -4
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +11 -32
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +35 -14
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +71 -40
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
- package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
- package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
- package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
- package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +9 -5
- package/package.json +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
|
@@ -21,9 +21,29 @@ import { QuickInputTreeDelegate } from './quickInputDelegate.js';
|
|
|
21
21
|
import { getParentNodeState } from './quickInputTree.js';
|
|
22
22
|
import { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';
|
|
23
23
|
import { QuickInputTreeFilter } from './quickInputTreeFilter.js';
|
|
24
|
-
import { QuickInputTreeRenderer } from './quickInputTreeRenderer.js';
|
|
24
|
+
import { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';
|
|
25
25
|
import { QuickInputTreeSorter } from './quickInputTreeSorter.js';
|
|
26
|
+
import { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';
|
|
26
27
|
const $ = dom.$;
|
|
28
|
+
class QuickInputTreeIdentityProvider {
|
|
29
|
+
constructor() {
|
|
30
|
+
this._elementIds = new WeakMap();
|
|
31
|
+
this._counter = 0;
|
|
32
|
+
}
|
|
33
|
+
getId(element) {
|
|
34
|
+
let id = element.id;
|
|
35
|
+
if (id !== undefined) {
|
|
36
|
+
return id;
|
|
37
|
+
}
|
|
38
|
+
id = this._elementIds.get(element);
|
|
39
|
+
if (id !== undefined) {
|
|
40
|
+
return id;
|
|
41
|
+
}
|
|
42
|
+
id = `__generated_${this._counter++}`;
|
|
43
|
+
this._elementIds.set(element, id);
|
|
44
|
+
return id;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
27
47
|
let QuickInputTreeController = class QuickInputTreeController extends Disposable {
|
|
28
48
|
constructor(container, hoverDelegate, instantiationService) {
|
|
29
49
|
super();
|
|
@@ -31,7 +51,7 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
|
|
|
31
51
|
this._onDidTriggerButton = this._register(new Emitter());
|
|
32
52
|
this._onDidChangeCheckboxState = this._register(new Emitter());
|
|
33
53
|
this.onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;
|
|
34
|
-
this._onDidCheckedLeafItemsChange = this._register(new Emitter);
|
|
54
|
+
this._onDidCheckedLeafItemsChange = this._register(new Emitter());
|
|
35
55
|
this._onLeave = new Emitter();
|
|
36
56
|
/**
|
|
37
57
|
* Event that is fired when the tree would no longer have focus.
|
|
@@ -43,7 +63,8 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
|
|
|
43
63
|
*/
|
|
44
64
|
this.onDidAccept = this._onDidAccept.event;
|
|
45
65
|
this._container = dom.append(container, $('.quick-input-tree'));
|
|
46
|
-
this.
|
|
66
|
+
this._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler());
|
|
67
|
+
this._renderer = this._register(this.instantiationService.createInstance(QuickInputTreeRenderer, hoverDelegate, this._onDidTriggerButton, this.onDidChangeCheckboxState, this._checkboxStateHandler));
|
|
47
68
|
this._filter = this.instantiationService.createInstance(QuickInputTreeFilter);
|
|
48
69
|
this._sorter = this._register(new QuickInputTreeSorter());
|
|
49
70
|
this._tree = this._register(this.instantiationService.createInstance((WorkbenchObjectTree), 'QuickInputTree', this._container, new QuickInputTreeDelegate(), [this._renderer], {
|
|
@@ -58,9 +79,10 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
|
|
|
58
79
|
expandOnlyOnTwistieClick: true,
|
|
59
80
|
disableExpandOnSpacebar: true,
|
|
60
81
|
sorter: this._sorter,
|
|
61
|
-
filter: this._filter
|
|
82
|
+
filter: this._filter,
|
|
83
|
+
identityProvider: new QuickInputTreeIdentityProvider()
|
|
62
84
|
}));
|
|
63
|
-
this.
|
|
85
|
+
this.registerCheckboxStateListeners();
|
|
64
86
|
}
|
|
65
87
|
get tree() {
|
|
66
88
|
return this._tree;
|
|
@@ -98,7 +120,7 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
|
|
|
98
120
|
+ 6}px` : '';
|
|
99
121
|
this._tree.layout();
|
|
100
122
|
}
|
|
101
|
-
|
|
123
|
+
registerCheckboxStateListeners() {
|
|
102
124
|
this._register(this._tree.onDidOpen(e => {
|
|
103
125
|
const item = e.element;
|
|
104
126
|
if (!item) {
|
|
@@ -114,44 +136,53 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
|
|
|
114
136
|
this._onDidAccept.fire();
|
|
115
137
|
return;
|
|
116
138
|
}
|
|
117
|
-
const
|
|
118
|
-
if ((
|
|
119
|
-
return;
|
|
139
|
+
const target = e.browserEvent?.target;
|
|
140
|
+
if (target && target.classList.contains(Checkbox.CLASS_NAME)) {
|
|
141
|
+
return;
|
|
120
142
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
143
|
+
this.updateCheckboxState(item, item.checked === true);
|
|
144
|
+
}));
|
|
145
|
+
this._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {
|
|
146
|
+
this.updateCheckboxState(e.item, e.checked === true);
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
updateCheckboxState(item, newState) {
|
|
150
|
+
if ((item.checked ?? false) === newState) {
|
|
151
|
+
return; // No change
|
|
152
|
+
}
|
|
153
|
+
// Handle checked item
|
|
154
|
+
item.checked = newState;
|
|
155
|
+
this._tree.rerender(item);
|
|
156
|
+
// Handle children of the checked item
|
|
157
|
+
const updateSet = new Set();
|
|
158
|
+
const toUpdate = [...this._tree.getNode(item).children];
|
|
159
|
+
while (toUpdate.length) {
|
|
160
|
+
const pop = toUpdate.shift();
|
|
161
|
+
if (pop?.element && !updateSet.has(pop.element)) {
|
|
162
|
+
updateSet.add(pop.element);
|
|
163
|
+
if ((pop.element.checked ?? false) !== item.checked) {
|
|
164
|
+
pop.element.checked = item.checked;
|
|
165
|
+
this._tree.rerender(pop.element);
|
|
136
166
|
}
|
|
167
|
+
toUpdate.push(...pop.children);
|
|
137
168
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
parent = this._tree.getParentElement(parent);
|
|
169
|
+
}
|
|
170
|
+
// Handle parents of the checked item
|
|
171
|
+
let parent = this._tree.getParentElement(item);
|
|
172
|
+
while (parent) {
|
|
173
|
+
const parentChildren = [...this._tree.getNode(parent).children];
|
|
174
|
+
const newState = getParentNodeState(parentChildren);
|
|
175
|
+
if ((parent.checked ?? false) !== newState) {
|
|
176
|
+
parent.checked = newState;
|
|
177
|
+
this._tree.rerender(parent);
|
|
148
178
|
}
|
|
149
|
-
this.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
})
|
|
179
|
+
parent = this._tree.getParentElement(parent);
|
|
180
|
+
}
|
|
181
|
+
this._onDidChangeCheckboxState.fire({
|
|
182
|
+
item,
|
|
183
|
+
checked: item.checked ?? false
|
|
184
|
+
});
|
|
185
|
+
this._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());
|
|
155
186
|
}
|
|
156
187
|
getCheckedLeafItems() {
|
|
157
188
|
const lookedAt = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts","vs/platform/quickinput/browser/tree/quickInputTreeController.ts"],"names":[],"mappings":"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","file":"quickInputTreeController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\n\nconst $ = dom.$;\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>);\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(QuickInputTreeRenderer, hoverDelegate, this._onDidTriggerButton, this.onDidChangeCheckboxState));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter\n\t\t\t}\n\t\t));\n\t\tthis.registerOnOpenListener();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterOnOpenListener() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newState = item.checked !== true;\n\t\t\tif ((item.checked ?? false) === newState) {\n\t\t\t\treturn; // No change\n\t\t\t}\n\n\t\t\t// Handle checked item\n\t\t\titem.checked = newState;\n\t\t\tthis._tree.rerender(item);\n\n\t\t\t// Handle children of the checked item\n\t\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\t\twhile (toUpdate.length) {\n\t\t\t\tconst pop = toUpdate.shift();\n\t\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t\t}\n\t\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle parents of the checked item\n\t\t\tlet parent = this._tree.getParentElement(item);\n\t\t\twhile (parent) {\n\t\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\t\tparent.checked = newState;\n\t\t\t\t\tthis._tree.rerender(parent);\n\t\t\t\t}\n\t\t\t\tparent = this._tree.getParentElement(parent);\n\t\t\t}\n\n\t\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\t\titem,\n\t\t\t\tchecked: item.checked ?? false\n\t\t\t});\n\t\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\n\nconst $ = dom.$;\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>);\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(QuickInputTreeRenderer, hoverDelegate, this._onDidTriggerButton, this.onDidChangeCheckboxState));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter\n\t\t\t}\n\t\t));\n\t\tthis.registerOnOpenListener();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterOnOpenListener() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newState = item.checked !== true;\n\t\t\tif ((item.checked ?? false) === newState) {\n\t\t\t\treturn; // No change\n\t\t\t}\n\n\t\t\t// Handle checked item\n\t\t\titem.checked = newState;\n\t\t\tthis._tree.rerender(item);\n\n\t\t\t// Handle children of the checked item\n\t\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\t\twhile (toUpdate.length) {\n\t\t\t\tconst pop = toUpdate.shift();\n\t\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t\t}\n\t\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle parents of the checked item\n\t\t\tlet parent = this._tree.getParentElement(item);\n\t\t\twhile (parent) {\n\t\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\t\tparent.checked = newState;\n\t\t\t\t\tthis._tree.rerender(parent);\n\t\t\t\t}\n\t\t\t\tparent = this._tree.getParentElement(parent);\n\t\t\t}\n\n\t\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\t\titem,\n\t\t\t\tchecked: item.checked ?? false\n\t\t\t});\n\t\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts","vs/platform/quickinput/browser/tree/quickInputTreeController.ts"],"names":[],"mappings":"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","file":"quickInputTreeController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\n\t}\n}\n"]}
|
|
@@ -17,7 +17,7 @@ import * as dom from '../../../../base/browser/dom.js';
|
|
|
17
17
|
import { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';
|
|
18
18
|
import { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';
|
|
19
19
|
import { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';
|
|
20
|
-
import { Event } from '../../../../base/common/event.js';
|
|
20
|
+
import { Emitter, Event } from '../../../../base/common/event.js';
|
|
21
21
|
import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';
|
|
22
22
|
import { URI } from '../../../../base/common/uri.js';
|
|
23
23
|
import { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';
|
|
@@ -26,14 +26,25 @@ import { escape } from '../../../../base/common/strings.js';
|
|
|
26
26
|
import { IThemeService } from '../../../theme/common/themeService.js';
|
|
27
27
|
import { quickInputButtonToAction } from '../quickInputUtils.js';
|
|
28
28
|
const $ = dom.$;
|
|
29
|
+
export class QuickInputCheckboxStateHandler extends Disposable {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this._onDidChangeCheckboxState = this._register(new Emitter());
|
|
33
|
+
this.onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;
|
|
34
|
+
}
|
|
35
|
+
setCheckboxState(node, checked) {
|
|
36
|
+
this._onDidChangeCheckboxState.fire({ item: node, checked });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
29
39
|
let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
|
|
30
40
|
static { QuickInputTreeRenderer_1 = this; }
|
|
31
41
|
static { this.ID = 'quickInputTreeElement'; }
|
|
32
|
-
constructor(_hoverDelegate, _buttonTriggeredEmitter, onCheckedEvent, _themeService) {
|
|
42
|
+
constructor(_hoverDelegate, _buttonTriggeredEmitter, onCheckedEvent, _checkboxStateHandler, _themeService) {
|
|
33
43
|
super();
|
|
34
44
|
this._hoverDelegate = _hoverDelegate;
|
|
35
45
|
this._buttonTriggeredEmitter = _buttonTriggeredEmitter;
|
|
36
46
|
this.onCheckedEvent = onCheckedEvent;
|
|
47
|
+
this._checkboxStateHandler = _checkboxStateHandler;
|
|
37
48
|
this._themeService = _themeService;
|
|
38
49
|
this.templateId = QuickInputTreeRenderer_1.ID;
|
|
39
50
|
}
|
|
@@ -65,7 +76,7 @@ let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
|
|
|
65
76
|
toDisposeElement: new DisposableStore(),
|
|
66
77
|
};
|
|
67
78
|
}
|
|
68
|
-
renderElement(node,
|
|
79
|
+
renderElement(node, _index, templateData, _details) {
|
|
69
80
|
const store = templateData.toDisposeElement;
|
|
70
81
|
const quickTreeItem = node.element;
|
|
71
82
|
// Checkbox
|
|
@@ -74,12 +85,14 @@ let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
|
|
|
74
85
|
templateData.checkbox.domNode.style.display = 'none';
|
|
75
86
|
}
|
|
76
87
|
else {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
const checkbox = templateData.checkbox;
|
|
89
|
+
checkbox.domNode.style.display = '';
|
|
90
|
+
checkbox.checked = quickTreeItem.checked ?? false;
|
|
91
|
+
store.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));
|
|
80
92
|
if (quickTreeItem.disabled) {
|
|
81
|
-
|
|
93
|
+
checkbox.disable();
|
|
82
94
|
}
|
|
95
|
+
store.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));
|
|
83
96
|
}
|
|
84
97
|
// Icon
|
|
85
98
|
if (quickTreeItem.iconPath) {
|
|
@@ -134,7 +147,7 @@ let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
|
|
|
134
147
|
}
|
|
135
148
|
};
|
|
136
149
|
QuickInputTreeRenderer = QuickInputTreeRenderer_1 = __decorate([
|
|
137
|
-
__param(
|
|
150
|
+
__param(4, IThemeService)
|
|
138
151
|
], QuickInputTreeRenderer);
|
|
139
152
|
export { QuickInputTreeRenderer };
|
|
140
153
|
//# sourceMappingURL=quickInputTreeRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts","vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts"],"names":[],"mappings":"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","file":"quickInputTreeRenderer.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\ttemplateData.checkbox.domNode.style.display = '';\n\t\t\ttemplateData.checkbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => templateData.checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\ttemplateData.checkbox.disable();\n\t\t\t}\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\ttemplateData.checkbox.domNode.style.display = '';\n\t\t\ttemplateData.checkbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => templateData.checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\ttemplateData.checkbox.disable();\n\t\t\t}\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts","vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts"],"names":[],"mappings":"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","file":"quickInputTreeRenderer.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gdprTypings.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sources":["vs/platform/telemetry/common/gdprTypings.ts"],"names":[],"mappings":"","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 *--------------------------------------------------------------------------------------------*/\nexport interface IPropertyData {\n}\n\nexport interface IGDPRProperty {\n\treadonly [name: string]: IPropertyData | undefined | IGDPRProperty | string;\n}\n\ntype IGDPRPropertyWithoutMetadata = Omit<IGDPRProperty, 'owner' | 'comment' | 'expiration'>;\nexport type OmitMetadata<T> = Omit<T, 'owner' | 'comment' | 'expiration'>;\n\nexport type ClassifiedEvent<T extends IGDPRPropertyWithoutMetadata> = {\n\t[k in keyof T]:
|
|
1
|
+
{"version":3,"file":"gdprTypings.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sources":["vs/platform/telemetry/common/gdprTypings.ts"],"names":[],"mappings":"","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 *--------------------------------------------------------------------------------------------*/\nexport interface IPropertyData {\n}\n\nexport interface IGDPRProperty {\n\treadonly [name: string]: IPropertyData | undefined | IGDPRProperty | string;\n}\n\ntype IGDPRPropertyWithoutMetadata = Omit<IGDPRProperty, 'owner' | 'comment' | 'expiration'>;\nexport type OmitMetadata<T> = Omit<T, 'owner' | 'comment' | 'expiration'>;\n\nexport type ClassifiedEvent<T extends IGDPRPropertyWithoutMetadata> = {\n\t[k in keyof T]: unknown;\n};\n\nexport type StrictPropertyChecker<TEvent, TClassification, TError> = keyof TEvent extends keyof OmitMetadata<TClassification> ? keyof OmitMetadata<TClassification> extends keyof TEvent ? TEvent : TError : TError;\n\nexport type StrictPropertyCheckError = { error: 'Type of classified event does not match event properties' };\n\nexport type StrictPropertyCheck<T extends IGDPRProperty, E> = StrictPropertyChecker<E, ClassifiedEvent<OmitMetadata<T>>, StrictPropertyCheckError>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/telemetry/common/telemetry.ts","vs/platform/telemetry/common/telemetry.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAoB,kBAAkB,CAAC,CAAC","file":"telemetry.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 { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from './gdprTypings.js';\n\nexport const ITelemetryService = createDecorator<ITelemetryService>('telemetryService');\n\nexport interface ITelemetryData {\n\t[key: string]:
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/telemetry/common/telemetry.ts","vs/platform/telemetry/common/telemetry.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAoB,kBAAkB,CAAC,CAAC","file":"telemetry.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 { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from './gdprTypings.js';\n\nexport const ITelemetryService = createDecorator<ITelemetryService>('telemetryService');\n\nexport interface ITelemetryData {\n\t[key: string]: string | unknown | undefined;\n}\n\nexport interface ITelemetryService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Sends a telemetry event that has been privacy approved.\n\t * Do not call this unless you have been given approval.\n\t */\n\tpublicLog2<E extends ClassifiedEvent<OmitMetadata<T>> = never, T extends IGDPRProperty = never>(eventName: string, data?: StrictPropertyCheck<T, E>): void;\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 { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from './gdprTypings.js';\n\nexport const ITelemetryService = createDecorator<ITelemetryService>('telemetryService');\n\nexport interface ITelemetryData {\n\t[key: string]: string | unknown | undefined;\n}\n\nexport interface ITelemetryService {\n\n\treadonly _serviceBrand: undefined;\n\n\t/**\n\t * Sends a telemetry event that has been privacy approved.\n\t * Do not call this unless you have been given approval.\n\t */\n\tpublicLog2<E extends ClassifiedEvent<OmitMetadata<T>> = never, T extends IGDPRProperty = never>(eventName: string, data?: StrictPropertyCheck<T, E>): void;\n}\n"]}
|
|
@@ -51,13 +51,13 @@ class ColorRegistry extends Disposable {
|
|
|
51
51
|
}
|
|
52
52
|
if (needsTransparency) {
|
|
53
53
|
propertySchema.pattern = '^#(?:(?<rgba>[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$';
|
|
54
|
-
propertySchema.patternErrorMessage = nls.localize(
|
|
54
|
+
propertySchema.patternErrorMessage = nls.localize(2029, 'This color must be transparent or it will obscure content');
|
|
55
55
|
}
|
|
56
56
|
this.colorSchema.properties[id] = {
|
|
57
57
|
description,
|
|
58
58
|
oneOf: [
|
|
59
59
|
propertySchema,
|
|
60
|
-
{ type: 'string', const: DEFAULT_COLOR_CONFIG_VALUE, description: nls.localize(
|
|
60
|
+
{ type: 'string', const: DEFAULT_COLOR_CONFIG_VALUE, description: nls.localize(2030, 'Use the default color.') }
|
|
61
61
|
]
|
|
62
62
|
};
|
|
63
63
|
this.colorReferenceSchema.enum.push(id);
|
|
@@ -6,25 +6,25 @@ import * as nls from '../../../../nls.js';
|
|
|
6
6
|
// Import the effects we need
|
|
7
7
|
import { Color } from '../../../../base/common/color.js';
|
|
8
8
|
import { registerColor, transparent } from '../colorUtils.js';
|
|
9
|
-
export const foreground = registerColor('foreground', { dark: '#CCCCCC', light: '#616161', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize(
|
|
10
|
-
export const disabledForeground = registerColor('disabledForeground', { dark: '#CCCCCC80', light: '#61616180', hcDark: '#A5A5A5', hcLight: '#7F7F7F' }, nls.localize(
|
|
11
|
-
export const errorForeground = registerColor('errorForeground', { dark: '#F48771', light: '#A1260D', hcDark: '#F48771', hcLight: '#B5200D' }, nls.localize(
|
|
12
|
-
export const descriptionForeground = registerColor('descriptionForeground', { light: '#717171', dark: transparent(foreground, 0.7), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, nls.localize(
|
|
13
|
-
export const iconForeground = registerColor('icon.foreground', { dark: '#C5C5C5', light: '#424242', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize(
|
|
14
|
-
export const focusBorder = registerColor('focusBorder', { dark: '#007FD4', light: '#0090F1', hcDark: '#F38518', hcLight: '#006BBD' }, nls.localize(
|
|
15
|
-
export const contrastBorder = registerColor('contrastBorder', { light: null, dark: null, hcDark: '#6FC3DF', hcLight: '#0F4A85' }, nls.localize(
|
|
16
|
-
export const activeContrastBorder = registerColor('contrastActiveBorder', { light: null, dark: null, hcDark: focusBorder, hcLight: focusBorder }, nls.localize(
|
|
17
|
-
export const selectionBackground = registerColor('selection.background', null, nls.localize(
|
|
9
|
+
export const foreground = registerColor('foreground', { dark: '#CCCCCC', light: '#616161', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize(1780, "Overall foreground color. This color is only used if not overridden by a component."));
|
|
10
|
+
export const disabledForeground = registerColor('disabledForeground', { dark: '#CCCCCC80', light: '#61616180', hcDark: '#A5A5A5', hcLight: '#7F7F7F' }, nls.localize(1781, "Overall foreground for disabled elements. This color is only used if not overridden by a component."));
|
|
11
|
+
export const errorForeground = registerColor('errorForeground', { dark: '#F48771', light: '#A1260D', hcDark: '#F48771', hcLight: '#B5200D' }, nls.localize(1782, "Overall foreground color for error messages. This color is only used if not overridden by a component."));
|
|
12
|
+
export const descriptionForeground = registerColor('descriptionForeground', { light: '#717171', dark: transparent(foreground, 0.7), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, nls.localize(1783, "Foreground color for description text providing additional information, for example for a label."));
|
|
13
|
+
export const iconForeground = registerColor('icon.foreground', { dark: '#C5C5C5', light: '#424242', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize(1784, "The default color for icons in the workbench."));
|
|
14
|
+
export const focusBorder = registerColor('focusBorder', { dark: '#007FD4', light: '#0090F1', hcDark: '#F38518', hcLight: '#006BBD' }, nls.localize(1785, "Overall border color for focused elements. This color is only used if not overridden by a component."));
|
|
15
|
+
export const contrastBorder = registerColor('contrastBorder', { light: null, dark: null, hcDark: '#6FC3DF', hcLight: '#0F4A85' }, nls.localize(1786, "An extra border around elements to separate them from others for greater contrast."));
|
|
16
|
+
export const activeContrastBorder = registerColor('contrastActiveBorder', { light: null, dark: null, hcDark: focusBorder, hcLight: focusBorder }, nls.localize(1787, "An extra border around active elements to separate them from others for greater contrast."));
|
|
17
|
+
export const selectionBackground = registerColor('selection.background', null, nls.localize(1788, "The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor."));
|
|
18
18
|
// ------ text link
|
|
19
|
-
export const textLinkForeground = registerColor('textLink.foreground', { light: '#006AB1', dark: '#3794FF', hcDark: '#21A6FF', hcLight: '#0F4A85' }, nls.localize(
|
|
20
|
-
export const textLinkActiveForeground = registerColor('textLink.activeForeground', { light: '#006AB1', dark: '#3794FF', hcDark: '#21A6FF', hcLight: '#0F4A85' }, nls.localize(
|
|
21
|
-
export const textSeparatorForeground = registerColor('textSeparator.foreground', { light: '#0000002e', dark: '#ffffff2e', hcDark: Color.black, hcLight: '#292929' }, nls.localize(
|
|
19
|
+
export const textLinkForeground = registerColor('textLink.foreground', { light: '#006AB1', dark: '#3794FF', hcDark: '#21A6FF', hcLight: '#0F4A85' }, nls.localize(1789, "Foreground color for links in text."));
|
|
20
|
+
export const textLinkActiveForeground = registerColor('textLink.activeForeground', { light: '#006AB1', dark: '#3794FF', hcDark: '#21A6FF', hcLight: '#0F4A85' }, nls.localize(1790, "Foreground color for links in text when clicked on and on mouse hover."));
|
|
21
|
+
export const textSeparatorForeground = registerColor('textSeparator.foreground', { light: '#0000002e', dark: '#ffffff2e', hcDark: Color.black, hcLight: '#292929' }, nls.localize(1791, "Color for text separators."));
|
|
22
22
|
// ------ text preformat
|
|
23
|
-
export const textPreformatForeground = registerColor('textPreformat.foreground', { light: '#A31515', dark: '#D7BA7D', hcDark: '#000000', hcLight: '#FFFFFF' }, nls.localize(
|
|
24
|
-
export const textPreformatBackground = registerColor('textPreformat.background', { light: '#0000001A', dark: '#FFFFFF1A', hcDark: '#FFFFFF', hcLight: '#09345f' }, nls.localize(
|
|
23
|
+
export const textPreformatForeground = registerColor('textPreformat.foreground', { light: '#A31515', dark: '#D7BA7D', hcDark: '#000000', hcLight: '#FFFFFF' }, nls.localize(1792, "Foreground color for preformatted text segments."));
|
|
24
|
+
export const textPreformatBackground = registerColor('textPreformat.background', { light: '#0000001A', dark: '#FFFFFF1A', hcDark: '#FFFFFF', hcLight: '#09345f' }, nls.localize(1793, "Background color for preformatted text segments."));
|
|
25
25
|
// ------ text block quote
|
|
26
|
-
export const textBlockQuoteBackground = registerColor('textBlockQuote.background', { light: '#f2f2f2', dark: '#222222', hcDark: null, hcLight: '#F2F2F2' }, nls.localize(
|
|
27
|
-
export const textBlockQuoteBorder = registerColor('textBlockQuote.border', { light: '#007acc80', dark: '#007acc80', hcDark: Color.white, hcLight: '#292929' }, nls.localize(
|
|
26
|
+
export const textBlockQuoteBackground = registerColor('textBlockQuote.background', { light: '#f2f2f2', dark: '#222222', hcDark: null, hcLight: '#F2F2F2' }, nls.localize(1794, "Background color for block quotes in text."));
|
|
27
|
+
export const textBlockQuoteBorder = registerColor('textBlockQuote.border', { light: '#007acc80', dark: '#007acc80', hcDark: Color.white, hcLight: '#292929' }, nls.localize(1795, "Border color for block quotes in text."));
|
|
28
28
|
// ------ text code block
|
|
29
|
-
export const textCodeBlockBackground = registerColor('textCodeBlock.background', { light: '#dcdcdc66', dark: '#0a0a0a66', hcDark: Color.black, hcLight: '#F2F2F2' }, nls.localize(
|
|
29
|
+
export const textCodeBlockBackground = registerColor('textCodeBlock.background', { light: '#dcdcdc66', dark: '#0a0a0a66', hcDark: Color.black, hcLight: '#F2F2F2' }, nls.localize(1796, "Background color for code blocks in text."));
|
|
30
30
|
//# sourceMappingURL=baseColors.js.map
|
|
@@ -7,12 +7,12 @@ import { registerColor, transparent } from '../colorUtils.js';
|
|
|
7
7
|
import { foreground } from './baseColors.js';
|
|
8
8
|
import { editorErrorForeground, editorInfoForeground, editorWarningForeground } from './editorColors.js';
|
|
9
9
|
import { minimapFindMatch } from './minimapColors.js';
|
|
10
|
-
export const chartsForeground = registerColor('charts.foreground', foreground, nls.localize(
|
|
11
|
-
export const chartsLines = registerColor('charts.lines', transparent(foreground, .5), nls.localize(
|
|
12
|
-
export const chartsRed = registerColor('charts.red', editorErrorForeground, nls.localize(
|
|
13
|
-
export const chartsBlue = registerColor('charts.blue', editorInfoForeground, nls.localize(
|
|
14
|
-
export const chartsYellow = registerColor('charts.yellow', editorWarningForeground, nls.localize(
|
|
15
|
-
export const chartsOrange = registerColor('charts.orange', minimapFindMatch, nls.localize(
|
|
16
|
-
export const chartsGreen = registerColor('charts.green', { dark: '#89D185', light: '#388A34', hcDark: '#89D185', hcLight: '#374e06' }, nls.localize(
|
|
17
|
-
export const chartsPurple = registerColor('charts.purple', { dark: '#B180D7', light: '#652D90', hcDark: '#B180D7', hcLight: '#652D90' }, nls.localize(
|
|
10
|
+
export const chartsForeground = registerColor('charts.foreground', foreground, nls.localize(1797, "The foreground color used in charts."));
|
|
11
|
+
export const chartsLines = registerColor('charts.lines', transparent(foreground, .5), nls.localize(1798, "The color used for horizontal lines in charts."));
|
|
12
|
+
export const chartsRed = registerColor('charts.red', editorErrorForeground, nls.localize(1799, "The red color used in chart visualizations."));
|
|
13
|
+
export const chartsBlue = registerColor('charts.blue', editorInfoForeground, nls.localize(1800, "The blue color used in chart visualizations."));
|
|
14
|
+
export const chartsYellow = registerColor('charts.yellow', editorWarningForeground, nls.localize(1801, "The yellow color used in chart visualizations."));
|
|
15
|
+
export const chartsOrange = registerColor('charts.orange', minimapFindMatch, nls.localize(1802, "The orange color used in chart visualizations."));
|
|
16
|
+
export const chartsGreen = registerColor('charts.green', { dark: '#89D185', light: '#388A34', hcDark: '#89D185', hcLight: '#374e06' }, nls.localize(1803, "The green color used in chart visualizations."));
|
|
17
|
+
export const chartsPurple = registerColor('charts.purple', { dark: '#B180D7', light: '#652D90', hcDark: '#B180D7', hcLight: '#652D90' }, nls.localize(1804, "The purple color used in chart visualizations."));
|
|
18
18
|
//# sourceMappingURL=chartsColors.js.map
|