monaco-editor-core 0.57.0 → 0.58.0-dev-20261104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +38 -6
- package/esm/vs/base/browser/browser.js +8 -0
- package/esm/vs/base/browser/browser.js.map +1 -1
- package/esm/vs/base/browser/contextmenu.js +8 -1
- package/esm/vs/base/browser/contextmenu.js.map +1 -1
- package/esm/vs/base/browser/dom.js +34 -5
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +2457 -2640
- package/esm/vs/base/browser/markdownRenderer.js +48 -21
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +3 -2
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +5 -2
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +7 -2
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/animations/animations.js +68 -40
- package/esm/vs/base/browser/ui/animations/animations.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +7 -0
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/contextview/contextview.css +15 -0
- package/esm/vs/base/browser/ui/contextview/contextview.js +266 -40
- package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js +72 -0
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js.map +1 -0
- package/esm/vs/base/browser/ui/dialog/dialog.css +5 -0
- package/esm/vs/base/browser/ui/dropdown/dropdown.js +2 -1
- package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +1 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listView.js +87 -15
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +37 -15
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/menu/menu.js +189 -52
- package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
- package/esm/vs/base/browser/ui/radio/radio.css +11 -0
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +2 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +14 -8
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/splitview/splitview.js +11 -7
- package/esm/vs/base/browser/ui/splitview/splitview.js.map +1 -1
- package/esm/vs/base/browser/ui/toggle/switch.css +16 -7
- package/esm/vs/base/browser/ui/toggle/switch.js +9 -6
- package/esm/vs/base/browser/ui/toggle/switch.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.css +1 -2
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +85 -38
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +48 -9
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +10 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/actions.js +8 -2
- package/esm/vs/base/common/actions.js.map +1 -1
- package/esm/vs/base/common/arrays.js +4 -4
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +12 -8
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/cancellation.js +25 -0
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codicons.js +2 -0
- package/esm/vs/base/common/codicons.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +2 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/color.js +1 -1
- package/esm/vs/base/common/color.js.map +1 -1
- package/esm/vs/base/common/diff/diff.js +60 -1
- package/esm/vs/base/common/diff/diff.js.map +1 -1
- package/esm/vs/base/common/event.js +1 -1
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -0
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +74 -12
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/base/common/json.js +19 -0
- package/esm/vs/base/common/json.js.map +1 -0
- package/esm/vs/base/common/network.js +16 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/resources.js +14 -2
- package/esm/vs/base/common/resources.js.map +1 -1
- package/esm/vs/base/common/strings.js +1 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/base/common/uri.js +2 -2
- package/esm/vs/base/common/uri.js.map +1 -1
- package/esm/vs/editor/browser/config/editorConfiguration.js +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js +19 -6
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +11 -5
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -38
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +6 -6
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +12 -10
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +7 -7
- package/esm/vs/editor/browser/controller/mouseTarget.js +3 -3
- package/esm/vs/editor/browser/coreCommands.js +2 -2
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js +19 -0
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js.map +1 -0
- package/esm/vs/editor/browser/gpu/rectangleRenderer.js +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js +3 -2
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +6 -2
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +34 -11
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/viewController.js +7 -7
- package/esm/vs/editor/browser/view/viewController.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewOverlays.js +4 -4
- package/esm/vs/editor/browser/view.js +5 -5
- package/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +11 -3
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +6 -6
- package/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js +12 -12
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +9 -2
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js +2 -2
- package/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js +2 -2
- package/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js +2 -2
- package/esm/vs/editor/browser/viewParts/margin/margin.js +2 -2
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +6 -6
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +9 -2
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js +5 -5
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +3 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +2 -2
- package/esm/vs/editor/browser/viewParts/rulersGpu/rulersGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +3 -3
- package/esm/vs/editor/browser/viewParts/selections/selections.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js +6 -6
- package/esm/vs/editor/browser/viewParts/viewLines/viewLineOptions.js +5 -5
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +11 -11
- package/esm/vs/editor/browser/viewParts/viewLinesGpu/viewLinesGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +2 -2
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +4 -4
- package/esm/vs/editor/browser/viewParts/wordWrapIndicator/wordWrapIndicator.js +2 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +22 -21
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +18 -18
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +3 -3
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +4 -4
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js +21 -3
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js +21 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +11 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js +1 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js.map +1 -1
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js +64 -0
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js.map +1 -0
- package/esm/vs/editor/common/config/editorConfigurationSchema.js +68 -58
- package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +560 -500
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/editorColorRegistry.js +71 -71
- package/esm/vs/editor/common/core/edits/textEdit.js +16 -0
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursor.js +20 -10
- package/esm/vs/editor/common/cursor/cursor.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +67 -14
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js +2 -2
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js.map +1 -1
- package/esm/vs/editor/common/cursorCommon.js +22 -21
- package/esm/vs/editor/common/cursorCommon.js.map +1 -1
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js +21 -8
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js +38 -26
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/rangeMapping.js +11 -1
- package/esm/vs/editor/common/diff/rangeMapping.js.map +1 -1
- package/esm/vs/editor/common/diff/verifyLinesDiff.js +28 -0
- package/esm/vs/editor/common/diff/verifyLinesDiff.js.map +1 -0
- package/esm/vs/editor/common/editorContextKeys.js +53 -53
- package/esm/vs/editor/common/languages/languageConfiguration.js +8 -0
- package/esm/vs/editor/common/languages/languageConfiguration.js.map +1 -1
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +27 -6
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorker.js.map +1 -1
- package/esm/vs/editor/common/services/languageService.js +6 -4
- package/esm/vs/editor/common/services/languageService.js.map +1 -1
- package/esm/vs/editor/common/services/markerDecorationsService.js +21 -2
- package/esm/vs/editor/common/services/markerDecorationsService.js.map +1 -1
- package/esm/vs/editor/common/standalone/standaloneEnums.js +100 -97
- package/esm/vs/editor/common/standalone/standaloneEnums.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -11
- package/esm/vs/editor/common/textModelEditSource.js +9 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLayout.js +16 -16
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +19 -19
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +9 -9
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +23 -20
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +25 -10
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerContribution.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +3 -3
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +17 -17
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +39 -39
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js +19 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js.map +1 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +26 -18
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js.map +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +18 -18
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +6 -6
- package/esm/vs/editor/contrib/find/browser/findWidget.js +40 -40
- package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +23 -23
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +2 -2
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +4 -4
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +9 -3
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -8
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +6 -6
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +5 -5
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +9 -9
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js +3 -3
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +5 -4
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js.map +1 -1
- package/esm/vs/editor/contrib/links/browser/links.js +16 -15
- package/esm/vs/editor/contrib/links/browser/links.js.map +1 -1
- package/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js +1 -1
- package/esm/vs/editor/contrib/message/browser/messageController.js +16 -12
- package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
- package/esm/vs/editor/contrib/middleScroll/browser/middleScrollController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +91 -55
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js +3 -3
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +6 -4
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderTextContribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +12 -12
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +3 -3
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +6 -6
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +23 -13
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetSession.js +2 -2
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +10 -8
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js +2 -2
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +6 -6
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +15 -15
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestModel.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +27 -27
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +8 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +5 -5
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +3 -3
- package/esm/vs/editor/contrib/suggest/browser/wordDistance.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +27 -27
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js.map +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +50 -14
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +6 -6
- package/esm/vs/editor/editor.api.d.ts +133 -98
- package/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js +1 -1
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +5 -3
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +15 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/nls.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +72 -66
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js.map +1 -1
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +434 -136
- package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +74 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +24 -26
- package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js +16 -0
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js.map +1 -0
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +15 -17
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +25 -12
- package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js +4 -2
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +15 -8
- package/esm/vs/platform/actions/common/menuService.js.map +1 -1
- package/esm/vs/platform/configuration/common/configuration.js +3 -1
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +16 -11
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +29 -27
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js +13 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +2 -2
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +28 -14
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkeys.js +10 -10
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js +17 -4
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextView.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextViewService.js +7 -2
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/editor/common/editor.js +17 -0
- package/esm/vs/platform/editor/common/editor.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverService.js +6 -3
- package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +38 -6
- package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +32 -5
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
- package/esm/vs/platform/keybinding/common/keybindingResolver.js +1 -1
- package/esm/vs/platform/keybinding/common/keybindingResolver.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +11 -8
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/markers/common/markers.js.map +1 -1
- package/esm/vs/platform/notification/common/notification.js.map +1 -1
- package/esm/vs/platform/notification/common/notificationMessage.js +37 -0
- package/esm/vs/platform/notification/common/notificationMessage.js.map +1 -0
- package/esm/vs/platform/opener/common/opener.js.map +1 -1
- package/esm/vs/platform/progress/common/progress.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +33 -2
- package/esm/vs/platform/quickinput/browser/quickAccess.js +7 -4
- package/esm/vs/platform/quickinput/browser/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +65 -15
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +96 -90
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputService.js +5 -7
- package/esm/vs/platform/quickinput/browser/quickInputService.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
- package/esm/vs/platform/quickinput/common/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/storage/common/storage.js.map +1 -1
- package/esm/vs/platform/theme/common/colorRegistry.js +1 -0
- package/esm/vs/platform/theme/common/colorRegistry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +11 -3
- package/esm/vs/platform/theme/common/colorUtils.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/baseColors.js +19 -19
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -9
- package/esm/vs/platform/theme/common/colors/chartsColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/confettiColors.js +14 -0
- package/esm/vs/platform/theme/common/colors/confettiColors.js.map +1 -0
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +48 -48
- package/esm/vs/platform/theme/common/colors/inputColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +10 -10
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +133 -98
- package/package.json +3 -3
- package/version.txt +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/base/browser/ui/selectBox/selectBoxCustom.ts"],"names":[],"mappings":"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","file":"selectBoxCustom.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 { localize } from '../../../../nls.js';\nimport * as arrays from '../../../common/arrays.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { KeyCode, KeyCodeUtils } from '../../../common/keyCodes.js';\nimport { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../common/lifecycle.js';\nimport { isMacintosh } from '../../../common/platform.js';\nimport { ScrollbarVisibility } from '../../../common/scrollable.js';\nimport * as cssJs from '../../cssValue.js';\nimport * as dom from '../../dom.js';\nimport * as domStylesheetsJs from '../../domStylesheets.js';\nimport { DomEmitter } from '../../event.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { IRenderedMarkdown, MarkdownActionHandler, renderMarkdown } from '../../markdownRenderer.js';\nimport { HoverPosition } from '../hover/hoverWidget.js';\nimport { AnchorPosition, IContextViewProvider } from '../contextview/contextview.js';\nimport { IHoverWidget, IManagedHover } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IListEvent, IListRenderer, IListVirtualDelegate } from '../list/list.js';\nimport { List } from '../list/listWidget.js';\nimport { ISelectBoxDelegate, ISelectBoxOptions, ISelectBoxStyles, ISelectData, ISelectOptionItem } from './selectBox.js';\nimport './selectBoxCustom.css';\n\n\nconst $ = dom.$;\n\nconst SELECT_OPTION_ENTRY_TEMPLATE_ID = 'selectOption.entry.template';\nconst SELECT_OPTION_HEIGHT = 22;\n\ninterface ISelectListTemplateData {\n\troot: HTMLElement;\n\ttext: HTMLElement;\n\tdetail: HTMLElement;\n\tdecoratorRight: HTMLElement;\n\telement?: ISelectOptionItem;\n}\n\nclass SelectListRenderer implements IListRenderer<ISelectOptionItem, ISelectListTemplateData> {\n\n\tprivate readonly elements = new Map<ISelectOptionItem, HTMLElement>();\n\n\tget templateId(): string { return SELECT_OPTION_ENTRY_TEMPLATE_ID; }\n\n\trenderTemplate(container: HTMLElement): ISelectListTemplateData {\n\t\tconst data: ISelectListTemplateData = Object.create(null);\n\t\tdata.root = container;\n\t\tdata.text = dom.append(container, $('.option-text'));\n\t\tdata.detail = dom.append(container, $('.option-detail'));\n\t\tdata.decoratorRight = dom.append(container, $('.option-decorator-right'));\n\n\t\treturn data;\n\t}\n\n\trenderElement(element: ISelectOptionItem, index: number, templateData: ISelectListTemplateData): void {\n\t\tconst data: ISelectListTemplateData = templateData;\n\t\tif (data.element) {\n\t\t\tthis.elements.delete(data.element);\n\t\t}\n\t\tdata.element = element;\n\t\tthis.elements.set(element, data.root);\n\n\t\tconst text = element.text;\n\t\tconst detail = element.detail;\n\t\tconst decoratorRight = element.decoratorRight;\n\n\t\tconst isDisabled = element.isDisabled;\n\n\t\tdata.text.textContent = text;\n\t\tdata.detail.textContent = !!detail ? detail : '';\n\t\tdata.decoratorRight.textContent = !!decoratorRight ? decoratorRight : '';\n\n\t\t// pseudo-select disabled option\n\t\tif (isDisabled) {\n\t\t\tdata.root.classList.add('option-disabled');\n\t\t} else {\n\t\t\t// Make sure we do class removal from prior template rendering\n\t\t\tdata.root.classList.remove('option-disabled');\n\t\t}\n\n\t\t// Separator option - show a CSS border instead of text characters\n\t\tif (element.isSeparator) {\n\t\t\tdata.root.classList.add('option-separator');\n\t\t\tdata.root.classList.add('option-disabled');\n\t\t} else {\n\t\t\tdata.root.classList.remove('option-separator');\n\t\t}\n\t}\n\n\tdisposeTemplate(templateData: ISelectListTemplateData): void {\n\t\tif (templateData.element) {\n\t\t\tthis.elements.delete(templateData.element);\n\t\t}\n\t}\n\n\tgetElement(element: ISelectOptionItem): HTMLElement | undefined {\n\t\treturn this.elements.get(element);\n\t}\n}\n\nexport class SelectBoxList extends Disposable implements ISelectBoxDelegate, IListVirtualDelegate<ISelectOptionItem> {\n\n\tprivate static readonly DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32;\n\tprivate static readonly DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN = 2;\n\tprivate static readonly DEFAULT_MINIMUM_VISIBLE_OPTIONS = 3;\n\n\tprivate _isVisible: boolean;\n\tprivate selectBoxOptions: ISelectBoxOptions;\n\tprivate selectElement: HTMLSelectElement;\n\tprivate container?: HTMLElement;\n\tprivate options: ISelectOptionItem[] = [];\n\tprivate selected: number;\n\tprivate readonly _onDidSelect: Emitter<ISelectData>;\n\tprivate readonly styles: ISelectBoxStyles;\n\tprivate listRenderer!: SelectListRenderer;\n\tprivate contextViewProvider!: IContextViewProvider;\n\tprivate selectDropDownContainer!: HTMLElement;\n\tprivate styleElement!: HTMLStyleElement;\n\tprivate selectList!: List<ISelectOptionItem>;\n\tprivate selectDropDownListContainer!: HTMLElement;\n\tprivate widthControlElement!: HTMLElement;\n\tprivate listOptionIndexes: number[] = [];\n\tprivate _currentSelection = 0;\n\tprivate _dropDownPosition!: AnchorPosition;\n\tprivate _hasDetails: boolean = false;\n\tprivate selectionDetailsPane!: HTMLElement;\n\tprivate readonly _selectionDetailsDisposables = this._register(new DisposableStore());\n\tprivate readonly _optionDescriptionHover = this._register(new MutableDisposable<IHoverWidget>());\n\tprivate _skipLayout: boolean = false;\n\tprivate _cachedMaxDetailsHeight?: number;\n\tprivate _hover?: IManagedHover;\n\n\tprivate _sticky: boolean = false; // for dev purposes only\n\n\tconstructor(options: ISelectOptionItem[], selected: number, contextViewProvider: IContextViewProvider, styles: ISelectBoxStyles, selectBoxOptions?: ISelectBoxOptions) {\n\n\t\tsuper();\n\t\tthis._isVisible = false;\n\t\tthis.styles = styles;\n\n\t\tthis.selectBoxOptions = selectBoxOptions || Object.create(null);\n\n\t\tif (typeof this.selectBoxOptions.minBottomMargin !== 'number') {\n\t\t\tthis.selectBoxOptions.minBottomMargin = SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN;\n\t\t} else if (this.selectBoxOptions.minBottomMargin < 0) {\n\t\t\tthis.selectBoxOptions.minBottomMargin = 0;\n\t\t}\n\n\t\tthis.selectElement = document.createElement('select');\n\t\tthis.selectElement.className = 'monaco-select-box';\n\n\t\tif (typeof this.selectBoxOptions.ariaLabel === 'string') {\n\t\t\tthis.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n\t\t}\n\n\t\tif (typeof this.selectBoxOptions.ariaDescription === 'string') {\n\t\t\tthis.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n\t\t}\n\n\t\tthis._onDidSelect = new Emitter<ISelectData>();\n\t\tthis._register(this._onDidSelect);\n\n\t\tthis.registerListeners();\n\t\tthis.constructSelectDropDown(contextViewProvider);\n\n\t\tthis.selected = selected || 0;\n\n\t\tif (options) {\n\t\t\tthis.setOptions(options, selected);\n\t\t}\n\n\t\tthis.initStyleSheet();\n\n\t}\n\n\tprivate setTitle(title: string): void {\n\t\tif (!this._hover && title) {\n\t\t\tthis._hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate('mouse'), this.selectElement, title));\n\t\t} else if (this._hover) {\n\t\t\tthis._hover.update(title);\n\t\t}\n\t}\n\n\t// IDelegate - List renderer\n\n\tgetHeight(_element: ISelectOptionItem): number {\n\t\treturn SELECT_OPTION_HEIGHT;\n\t}\n\n\tgetTemplateId(): string {\n\t\treturn SELECT_OPTION_ENTRY_TEMPLATE_ID;\n\t}\n\n\tprivate constructSelectDropDown(contextViewProvider: IContextViewProvider) {\n\n\t\t// SetUp ContextView container to hold select Dropdown\n\t\tthis.contextViewProvider = contextViewProvider;\n\t\tthis.selectDropDownContainer = dom.$('.monaco-select-box-dropdown-container');\n\n\t\t// Setup container for select option details\n\t\tthis.selectionDetailsPane = dom.append(this.selectDropDownContainer, $('.select-box-details-pane'));\n\n\t\t// Create span flex box item/div we can measure and control\n\t\tconst widthControlOuterDiv = dom.append(this.selectDropDownContainer, $('.select-box-dropdown-container-width-control'));\n\t\tconst widthControlInnerDiv = dom.append(widthControlOuterDiv, $('.width-control-div'));\n\t\tthis.widthControlElement = document.createElement('span');\n\t\tthis.widthControlElement.className = 'option-text-width-control';\n\t\tdom.append(widthControlInnerDiv, this.widthControlElement);\n\n\t\t// Always default to below position\n\t\tthis._dropDownPosition = AnchorPosition.BELOW;\n\n\t\t// Inline stylesheet for themes\n\t\tthis.styleElement = domStylesheetsJs.createStyleSheet(this.selectDropDownContainer);\n\n\t\t// Prevent dragging of dropdown #114329\n\t\tthis.selectDropDownContainer.setAttribute('draggable', 'true');\n\t\tthis._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.DRAG_START, (e) => {\n\t\t\tdom.EventHelper.stop(e, true);\n\t\t}));\n\t}\n\n\tprivate registerListeners() {\n\n\t\t// Parent native select keyboard listeners\n\n\t\tthis._register(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n\t\t\tthis.selected = e.target.selectedIndex;\n\t\t\tthis._onDidSelect.fire({\n\t\t\t\tindex: e.target.selectedIndex,\n\t\t\t\tselected: e.target.value\n\t\t\t});\n\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t}\n\t\t}));\n\n\t\t// Have to implement both keyboard and mouse controllers to handle disabled options\n\t\t// Intercept mouse events to override normal select actions on parents\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.CLICK, (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\n\t\t\tif (this._isVisible) {\n\t\t\t\tthis.cancelSelectDropDown(true);\n\t\t\t} else {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.MOUSE_DOWN, (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t}));\n\n\t\t// Intercept touch events\n\t\t// The following implementation is slightly different from the mouse event handlers above.\n\t\t// Use the following helper variable, otherwise the list flickers.\n\t\tlet listIsVisibleOnTouchStart: boolean;\n\t\tthis._register(dom.addDisposableListener(this.selectElement, 'touchstart', (e) => {\n\t\t\tlistIsVisibleOnTouchStart = this._isVisible;\n\t\t}));\n\t\tthis._register(dom.addDisposableListener(this.selectElement, 'touchend', (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\n\t\t\tif (listIsVisibleOnTouchStart) {\n\t\t\t\tthis.cancelSelectDropDown(true);\n\t\t\t} else {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t}\n\t\t}));\n\n\t\t// Intercept keyboard handling\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => {\n\t\t\tconst event = new StandardKeyboardEvent(e);\n\t\t\tlet showDropDown = false;\n\n\t\t\t// Create and drop down select list on keyboard select\n\t\t\tif (isMacintosh) {\n\t\t\t\tif (event.keyCode === KeyCode.DownArrow || event.keyCode === KeyCode.UpArrow || event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n\t\t\t\t\tshowDropDown = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (event.keyCode === KeyCode.DownArrow && event.altKey || event.keyCode === KeyCode.UpArrow && event.altKey || event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n\t\t\t\t\tshowDropDown = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (showDropDown) {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t\tdom.EventHelper.stop(e, true);\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic get onDidSelect(): Event<ISelectData> {\n\t\treturn this._onDidSelect.event;\n\t}\n\n\tpublic setOptions(options: ISelectOptionItem[], selected?: number): void {\n\t\tif (!arrays.equals(this.options, options)) {\n\t\t\tthis.options = options;\n\t\t\tthis.selectElement.options.length = 0;\n\t\t\tthis._hasDetails = false;\n\t\t\tthis._cachedMaxDetailsHeight = undefined;\n\n\t\t\tthis.options.forEach((option, index) => {\n\t\t\t\tthis.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n\t\t\t\tif (typeof option.description === 'string' && !this.selectBoxOptions.showOptionDescriptionHovers) {\n\t\t\t\t\tthis._hasDetails = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (selected !== undefined) {\n\t\t\tthis.select(selected);\n\t\t\t// Set current = selected since this is not necessarily a user exit\n\t\t\tthis._currentSelection = this.selected;\n\t\t}\n\t}\n\n\tprivate setOptionsList() {\n\n\t\t// Mirror options in drop-down\n\t\t// Populate select list for non-native select mode\n\t\tthis.listOptionIndexes = [];\n\t\tfor (let index = 0; index < this.options.length; index++) {\n\t\t\tif (!this.selectBoxOptions.hideDisabledOptions || !this.options[index].isDisabled) {\n\t\t\t\tthis.listOptionIndexes.push(index);\n\t\t\t}\n\t\t}\n\t\tthis.selectList?.splice(0, this.selectList.length, this.listOptionIndexes.map(index => this.options[index]));\n\t}\n\n\tprivate getListIndex(optionIndex: number): number {\n\t\treturn this.listOptionIndexes.indexOf(optionIndex);\n\t}\n\n\tprivate getOptionIndex(listIndex: number): number {\n\t\treturn this.listOptionIndexes[listIndex];\n\t}\n\n\tprivate focusOption(optionIndex: number): void {\n\t\tconst listIndex = this.getListIndex(optionIndex);\n\t\tif (listIndex >= 0) {\n\t\t\tthis.selectList.reveal(listIndex);\n\t\t\tthis.selectList.setFocus([listIndex]);\n\t\t}\n\t}\n\n\tpublic select(index: number): void {\n\n\t\tif (index >= 0 && index < this.options.length) {\n\t\t\tthis.selected = index;\n\t\t} else if (index > this.options.length - 1) {\n\t\t\t// Adjust index to end of list\n\t\t\t// This could make client out of sync with the select\n\t\t\tthis.select(this.options.length - 1);\n\t\t} else if (this.selected < 0) {\n\t\t\tthis.selected = 0;\n\t\t}\n\n\t\tthis.selectElement.selectedIndex = this.selected;\n\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (this.selectElement) {\n\t\t\tthis.selectElement.tabIndex = 0;\n\t\t\tthis.selectElement.focus();\n\t\t}\n\t}\n\n\tpublic blur(): void {\n\t\tif (this.selectElement) {\n\t\t\tthis.selectElement.tabIndex = -1;\n\t\t\tthis.selectElement.blur();\n\t\t}\n\t}\n\n\tpublic setFocusable(focusable: boolean): void {\n\t\tthis.selectElement.tabIndex = focusable ? 0 : -1;\n\t}\n\n\tpublic render(container: HTMLElement): void {\n\t\tthis.container = container;\n\t\tcontainer.classList.add('select-container');\n\t\tcontainer.appendChild(this.selectElement);\n\t\tthis.styleSelectElement();\n\t}\n\n\tprivate initStyleSheet(): void {\n\n\t\tconst content: string[] = [];\n\n\t\t// Style non-native select mode\n\n\t\tif (this.styles.listFocusBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`);\n\t\t}\n\n\t\tif (this.styles.listFocusForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`);\n\t\t}\n\n\t\tif (this.styles.decoratorRightForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`);\n\t\t}\n\n\t\tif (this.styles.selectBackground && this.styles.selectBorder && this.styles.selectBorder !== this.styles.selectBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `);\n\n\t\t}\n\t\telse if (this.styles.selectListBorder) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `);\n\t\t}\n\n\t\t// Hover foreground - ignore for disabled options\n\t\tif (this.styles.listHoverForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`);\n\t\t}\n\n\t\t// Hover background - ignore for disabled options\n\t\tif (this.styles.listHoverBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`);\n\t\t}\n\n\t\t// Match action widget outline styles - ignore for disabled options\n\t\tif (this.styles.listFocusOutline) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1px solid ${this.styles.listFocusOutline} !important; outline-offset: -1px !important; }`);\n\t\t}\n\n\t\tif (this.styles.listHoverOutline) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1px solid ${this.styles.listHoverOutline} !important; outline-offset: -1px !important; }`);\n\t\t}\n\n\t\t// Clear list styles on focus and on hover for disabled options\n\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n\n\t\tthis.styleElement.textContent = content.join('\\n');\n\t}\n\n\tprivate styleSelectElement(): void {\n\t\tconst background = this.styles.selectBackground ?? '';\n\t\tconst foreground = this.styles.selectForeground ?? '';\n\t\tconst border = this.styles.selectBorder ?? '';\n\n\t\tthis.selectElement.style.backgroundColor = background;\n\t\tthis.selectElement.style.color = foreground;\n\t\tthis.selectElement.style.borderColor = border;\n\t}\n\n\tprivate styleList() {\n\t\tconst background = this.styles.selectBackground ?? '';\n\n\t\tconst listBackground = cssJs.asCssValueWithDefault(this.styles.selectListBackground, background);\n\t\tthis.selectDropDownContainer.style.backgroundColor = listBackground;\n\t\tthis.selectDropDownListContainer.style.backgroundColor = listBackground;\n\t\tthis.selectionDetailsPane.style.backgroundColor = listBackground;\n\n\t\tthis.selectList.style(this.styles);\n\t}\n\n\tprivate createOption(value: string, index: number, disabled?: boolean): HTMLOptionElement {\n\t\tconst option = document.createElement('option');\n\t\toption.value = value;\n\t\toption.text = value;\n\t\toption.disabled = !!disabled;\n\n\t\treturn option;\n\t}\n\n\t// ContextView dropdown methods\n\n\tprivate showSelectDropDown() {\n\t\tthis.selectionDetailsPane.textContent = '';\n\n\t\tif (!this.contextViewProvider || this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Lazily create and populate list only at open, moved from constructor\n\t\tthis.createSelectList(this.selectDropDownContainer);\n\t\tthis.setOptionsList();\n\t\tthis._currentSelection = this.selected;\n\n\t\t// This allows us to flip the position based on measurement\n\t\t// Set drop-down position above/below from required height and margins\n\t\t// If pre-layout cannot fit at least one option do not show drop-down\n\n\t\tthis.contextViewProvider.showContextView({\n\t\t\tgetAnchor: () => this.selectElement,\n\t\t\trender: (container: HTMLElement) => this.renderSelectDropDown(container, true),\n\t\t\tlayout: () => {\n\t\t\t\tthis.layoutSelectDropDown();\n\t\t\t},\n\t\t\tonHide: () => {\n\t\t\t\tthis.selectDropDownContainer.classList.remove('visible');\n\t\t\t},\n\t\t\tanchorPosition: this._dropDownPosition\n\t\t}, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n\n\t\t// Hide so we can relay out\n\t\tthis._isVisible = true;\n\t\tthis.hideSelectDropDown(false);\n\n\t\tthis.contextViewProvider.showContextView({\n\t\t\tgetAnchor: () => this.selectElement,\n\t\t\trender: (container: HTMLElement) => this.renderSelectDropDown(container),\n\t\t\tlayout: () => this.layoutSelectDropDown(),\n\t\t\tonHide: () => {\n\t\t\t\tthis.selectDropDownContainer.classList.remove('visible');\n\t\t\t},\n\t\t\tanchorPosition: this._dropDownPosition\n\t\t}, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n\n\t\tthis._isVisible = true;\n\t\tthis.selectElement.setAttribute('aria-expanded', 'true');\n\t\tconst focusedListIndex = this.selectList.getFocus()[0];\n\t\tif (focusedListIndex !== undefined) {\n\t\t\tthis.showOptionDescriptionHover(focusedListIndex);\n\t\t}\n\t}\n\n\tprivate hideSelectDropDown(focusSelect: boolean) {\n\t\tif (!this.contextViewProvider || !this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isVisible = false;\n\t\tthis._optionDescriptionHover.clear();\n\t\tthis.selectElement.setAttribute('aria-expanded', 'false');\n\n\t\tif (focusSelect) {\n\t\t\tthis.selectElement.focus();\n\t\t}\n\n\t\tthis.contextViewProvider.hideContextView();\n\t}\n\n\tprivate cancelSelectDropDown(focusSelect: boolean): void {\n\t\tthis.select(this._currentSelection);\n\t\tthis.hideSelectDropDown(focusSelect);\n\t}\n\n\tprivate renderSelectDropDown(container: HTMLElement, preLayoutPosition?: boolean): IDisposable {\n\t\tcontainer.appendChild(this.selectDropDownContainer);\n\n\t\t// Inherit font-size from the select button so the dropdown matches\n\t\tconst computedFontSize = dom.getWindow(this.selectElement).getComputedStyle(this.selectElement).fontSize;\n\t\tif (computedFontSize) {\n\t\t\tthis.selectDropDownContainer.style.fontSize = computedFontSize;\n\t\t}\n\n\t\t// Pre-Layout allows us to change position\n\t\tthis.layoutSelectDropDown(preLayoutPosition);\n\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\t// contextView will dispose itself if moving from one View to another\n\t\t\t\tthis.selectDropDownContainer.remove(); // remove to take out the CSS rules we add\n\t\t\t}\n\t\t};\n\t}\n\n\t// Iterate over detailed descriptions, find max height\n\tprivate measureMaxDetailsHeight(): number {\n\t\tlet maxDetailsPaneHeight = 0;\n\t\tthis.options.forEach((_option, index) => {\n\t\t\tthis.updateDetail(index);\n\n\t\t\tif (this.selectionDetailsPane.offsetHeight > maxDetailsPaneHeight) {\n\t\t\t\tmaxDetailsPaneHeight = this.selectionDetailsPane.offsetHeight;\n\t\t\t}\n\t\t});\n\n\t\treturn maxDetailsPaneHeight;\n\t}\n\n\tprivate layoutSelectDropDown(preLayoutPosition?: boolean): boolean {\n\n\t\t// Avoid recursion from layout called in onListFocus\n\t\tif (this._skipLayout) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Layout ContextView drop down select list and container\n\t\t// Have to manage our vertical overflow, sizing, position below or above\n\t\t// Position has to be determined and set prior to contextView instantiation\n\n\t\tif (this.selectList) {\n\n\t\t\t// Make visible to enable measurements\n\t\t\tthis.selectDropDownContainer.classList.add('visible');\n\n\t\t\tconst window = dom.getWindow(this.selectElement);\n\t\t\tconst selectPosition = dom.getDomNodePagePosition(this.selectElement);\n\t\t\tconst maxSelectDropDownHeightBelow = (window.innerHeight - selectPosition.top - selectPosition.height - (this.selectBoxOptions.minBottomMargin || 0));\n\t\t\tconst maxSelectDropDownHeightAbove = (selectPosition.top - SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN);\n\n\t\t\t// Determine optimal width - min(longest option), opt(parent select, excluding margins), max(ContextView controlled)\n\t\t\tconst selectWidth = this.selectElement.offsetWidth;\n\t\t\tconst selectMinWidth = this.setWidthControlElement(this.widthControlElement);\n\t\t\tconst selectOptimalWidth = `${Math.max(selectMinWidth, Math.round(selectWidth))}px`;\n\n\t\t\tthis.selectDropDownContainer.style.width = selectOptimalWidth;\n\n\t\t\t// Get initial list height and determine space above and below\n\t\t\tthis.selectList.getHTMLElement().style.height = '';\n\t\t\tthis.selectList.layout();\n\t\t\tlet listHeight = this.selectList.contentHeight;\n\n\t\t\tif (this._hasDetails && this._cachedMaxDetailsHeight === undefined) {\n\t\t\t\tthis._cachedMaxDetailsHeight = this.measureMaxDetailsHeight();\n\t\t\t}\n\t\t\tconst maxDetailsPaneHeight = this._hasDetails ? this._cachedMaxDetailsHeight! : 0;\n\n\t\t\tconst minRequiredDropDownHeight = listHeight + maxDetailsPaneHeight;\n\t\t\tconst maxVisibleOptionsBelow = ((Math.floor((maxSelectDropDownHeightBelow - maxDetailsPaneHeight) / SELECT_OPTION_HEIGHT)));\n\t\t\tconst maxVisibleOptionsAbove = ((Math.floor((maxSelectDropDownHeightAbove - maxDetailsPaneHeight) / SELECT_OPTION_HEIGHT)));\n\n\t\t\t// If we are only doing pre-layout check/adjust position only\n\t\t\t// Calculate vertical space available, flip up if insufficient\n\t\t\t// Use reflected padding on parent select, ContextView style\n\t\t\t// properties not available before DOM attachment\n\n\t\t\tif (preLayoutPosition) {\n\n\t\t\t\t// Check if select moved out of viewport , do not open\n\t\t\t\t// If at least one option cannot be shown, don't open the drop-down or hide/remove if open\n\n\t\t\t\tif ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n\t\t\t\t\t|| selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n\t\t\t\t\t|| ((maxVisibleOptionsBelow < 1) && (maxVisibleOptionsAbove < 1))) {\n\t\t\t\t\t// Indicate we cannot open\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Determine if we have to flip up\n\t\t\t\t// Always show complete list items - never more than Max available vertical height\n\t\t\t\tif (maxVisibleOptionsBelow < SelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS\n\t\t\t\t\t&& maxVisibleOptionsAbove > maxVisibleOptionsBelow\n\t\t\t\t\t&& this.selectList.length > maxVisibleOptionsBelow\n\t\t\t\t) {\n\t\t\t\t\tthis._dropDownPosition = AnchorPosition.ABOVE;\n\t\t\t\t\tthis.selectDropDownListContainer.remove();\n\t\t\t\t\tthis.selectionDetailsPane.remove();\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n\n\t\t\t\t\tthis.selectionDetailsPane.classList.remove('border-top');\n\t\t\t\t\tthis.selectionDetailsPane.classList.add('border-bottom');\n\n\t\t\t\t} else {\n\t\t\t\t\tthis._dropDownPosition = AnchorPosition.BELOW;\n\t\t\t\t\tthis.selectDropDownListContainer.remove();\n\t\t\t\t\tthis.selectionDetailsPane.remove();\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n\n\t\t\t\t\tthis.selectionDetailsPane.classList.remove('border-bottom');\n\t\t\t\t\tthis.selectionDetailsPane.classList.add('border-top');\n\t\t\t\t}\n\t\t\t\t// Do full layout on showSelectDropDown only\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Check if select out of viewport or cutting into status bar\n\t\t\tif ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n\t\t\t\t|| selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n\t\t\t\t|| (this._dropDownPosition === AnchorPosition.BELOW && maxVisibleOptionsBelow < 1)\n\t\t\t\t|| (this._dropDownPosition === AnchorPosition.ABOVE && maxVisibleOptionsAbove < 1)) {\n\t\t\t\t// Cannot properly layout, close and hide\n\t\t\t\tthis.hideSelectDropDown(true);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// SetUp list dimensions and layout - account for container padding\n\t\t\t// Use position to check above or below available space\n\t\t\tif (this._dropDownPosition === AnchorPosition.BELOW) {\n\t\t\t\tif (this._isVisible && maxVisibleOptionsBelow + maxVisibleOptionsAbove < 1) {\n\t\t\t\t\t// If drop-down is visible, must be doing a DOM re-layout, hide since we don't fit\n\t\t\t\t\t// Hide drop-down, hide contextview, focus on parent select\n\t\t\t\t\tthis.hideSelectDropDown(true);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Adjust list height to max from select bottom to margin (default/minBottomMargin)\n\t\t\t\tif (minRequiredDropDownHeight > maxSelectDropDownHeightBelow) {\n\t\t\t\t\tlistHeight = (maxVisibleOptionsBelow * SELECT_OPTION_HEIGHT);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (minRequiredDropDownHeight > maxSelectDropDownHeightAbove) {\n\t\t\t\t\tlistHeight = (maxVisibleOptionsAbove * SELECT_OPTION_HEIGHT);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set adjusted list height and relayout\n\t\t\tthis.selectList.layout(listHeight);\n\t\t\tthis.selectList.domFocus();\n\n\t\t\t// Finally set focus on selected item\n\t\t\tif (this.selectList.length > 0) {\n\t\t\t\tlet selectedListIndex = this.getListIndex(this.selected);\n\t\t\t\tif (selectedListIndex < 0) {\n\t\t\t\t\tselectedListIndex = 0;\n\t\t\t\t\tthis.selected = this.getOptionIndex(selectedListIndex);\n\t\t\t\t\tthis.select(this.selected);\n\t\t\t\t}\n\t\t\t\tthis.selectList.reveal(selectedListIndex);\n\t\t\t\tthis.selectList.setFocus([selectedListIndex]);\n\t\t\t}\n\n\t\t\tif (this._hasDetails) {\n\t\t\t\t// Leave the selectDropDownContainer to size itself according to children (list + details) - #57447\n\t\t\t\tthis.selectList.getHTMLElement().style.height = `${listHeight}px`;\n\t\t\t\tthis.selectDropDownContainer.style.height = '';\n\t\t\t} else {\n\t\t\t\tthis.selectDropDownContainer.style.height = `${listHeight}px`;\n\t\t\t}\n\n\t\t\tif (this._hasDetails) {\n\t\t\t\tthis.updateDetail(this.selected);\n\t\t\t} else {\n\t\t\t\tthis.selectionDetailsPane.style.display = 'none';\n\t\t\t}\n\n\t\t\tthis.selectDropDownContainer.style.width = selectOptimalWidth;\n\t\t\tthis.selectDropDownListContainer.setAttribute('tabindex', '0');\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate setWidthControlElement(container: HTMLElement): number {\n\t\tlet elementWidth = 0;\n\n\t\tif (container) {\n\t\t\tlet longest = 0;\n\t\t\tlet longestLength = 0;\n\n\t\t\tthis.options.forEach((option, index) => {\n\t\t\t\tconst detailLength = !!option.detail ? option.detail.length : 0;\n\t\t\t\tconst rightDecoratorLength = !!option.decoratorRight ? option.decoratorRight.length : 0;\n\n\t\t\t\tconst len = option.text.length + detailLength + rightDecoratorLength;\n\t\t\t\tif (len > longestLength) {\n\t\t\t\t\tlongest = index;\n\t\t\t\t\tlongestLength = len;\n\t\t\t\t}\n\t\t\t});\n\n\n\t\t\tcontainer.textContent = this.options[longest].text + (!!this.options[longest].decoratorRight ? `${this.options[longest].decoratorRight} ` : '');\n\t\t\telementWidth = dom.getTotalWidth(container);\n\t\t}\n\n\t\treturn elementWidth;\n\t}\n\n\tprivate createSelectList(parent: HTMLElement): void {\n\n\t\t// If we have already constructive list on open, skip\n\t\tif (this.selectList) {\n\t\t\treturn;\n\t\t}\n\n\t\t// SetUp container for list\n\t\tthis.selectDropDownListContainer = dom.append(parent, $('.select-box-dropdown-list-container'));\n\n\t\tthis.listRenderer = new SelectListRenderer();\n\n\t\tthis.selectList = this._register(new List('SelectBoxCustom', this.selectDropDownListContainer, this, [this.listRenderer], {\n\t\t\tuseShadows: false,\n\t\t\tverticalScrollMode: ScrollbarVisibility.Visible,\n\t\t\tkeyboardSupport: false,\n\t\t\tmouseSupport: false,\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetAriaLabel: element => {\n\t\t\t\t\tif (element.isSeparator) {\n\t\t\t\t\t\treturn localize('selectBoxSeparator', \"separator\");\n\t\t\t\t\t}\n\n\t\t\t\t\tlet label = element.text;\n\t\t\t\t\tif (element.detail) {\n\t\t\t\t\t\tlabel += `. ${element.detail}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.decoratorRight) {\n\t\t\t\t\t\tlabel += `. ${element.decoratorRight}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.description) {\n\t\t\t\t\t\tlabel += `. ${element.description}`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn label;\n\t\t\t\t},\n\t\t\t\tgetWidgetAriaLabel: () => localize({ key: 'selectBox', comment: ['Behave like native select dropdown element.'] }, \"Select Box\"),\n\t\t\t\tgetRole: () => isMacintosh ? '' : 'option',\n\t\t\t\tgetWidgetRole: () => 'listbox'\n\t\t\t}\n\t\t}));\n\t\tif (this.selectBoxOptions.ariaLabel) {\n\t\t\tthis.selectList.ariaLabel = this.selectBoxOptions.ariaLabel;\n\t\t}\n\n\t\t// SetUp list keyboard controller - control navigation, disabled items, focus\n\t\tconst onKeyDown = this._register(new DomEmitter(this.selectDropDownListContainer, 'keydown'));\n\t\tconst onSelectDropDownKeyDown = Event.chain(onKeyDown.event, $ =>\n\t\t\t$.filter(() => this.selectList.length > 0)\n\t\t\t\t.map(e => new StandardKeyboardEvent(e))\n\t\t);\n\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Enter))(this.onEnter, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Tab))(this.onEnter, this)); // Tab should behave the same as enter, #79339\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Escape))(this.onEscape, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.UpArrow))(this.onUpArrow, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.DownArrow))(this.onDownArrow, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.PageDown))(this.onPageDown, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.PageUp))(this.onPageUp, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Home))(this.onHome, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.End))(this.onEnd, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => (e.keyCode >= KeyCode.Digit0 && e.keyCode <= KeyCode.KeyZ) || (e.keyCode >= KeyCode.Semicolon && e.keyCode <= KeyCode.NumpadDivide)))(this.onCharacter, this));\n\n\t\t// SetUp list mouse controller - control navigation, disabled items, focus\n\t\tthis._register(dom.addDisposableListener(this.selectList.getHTMLElement(), dom.EventType.POINTER_UP, e => this.onPointerUp(e)));\n\n\t\tthis._register(this.selectList.onMouseOver(e => typeof e.index !== 'undefined' && !e.element?.isDisabled && this.selectList.setFocus([e.index])));\n\t\tthis._register(this.selectList.onDidChangeFocus(e => this.onListFocus(e)));\n\n\t\tthis._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.FOCUS_OUT, e => {\n\t\t\tif (!this._isVisible || dom.isAncestor(e.relatedTarget as HTMLElement, this.selectDropDownContainer)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.onListBlur();\n\t\t}));\n\n\t\tthis.selectList.getHTMLElement().setAttribute('aria-label', this.selectBoxOptions.ariaLabel || '');\n\t\tthis.selectList.getHTMLElement().setAttribute('aria-expanded', 'true');\n\n\t\tthis.styleList();\n\t}\n\n\t// List methods\n\n\t// List mouse controller - active exit, select option, fire onDidSelect if change, return focus to parent select\n\t// Also takes in touchend events\n\tprivate onPointerUp(e: PointerEvent): void {\n\n\t\tif (!this.selectList.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tdom.EventHelper.stop(e);\n\n\t\tconst target = <Element>e.target;\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check our mouse event is on an option (not scrollbar)\n\t\tif (target.classList.contains('slider')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listRowElement = target.closest('.monaco-list-row');\n\n\t\tif (!listRowElement) {\n\t\t\treturn;\n\t\t}\n\t\tconst index = this.getOptionIndex(Number(listRowElement.getAttribute('data-index')));\n\t\tconst disabled = listRowElement.classList.contains('option-disabled');\n\n\t\t// Ignore mouse selection of disabled options\n\t\tif (index >= 0 && index < this.options.length && !disabled) {\n\t\t\tthis.selected = index;\n\t\t\tthis.select(this.selected);\n\n\t\t\tthis.focusOption(this.selected);\n\n\t\t\t// Only fire if selection change\n\t\t\tif (this.selected !== this._currentSelection) {\n\t\t\t\t// Set current = selected\n\t\t\t\tthis._currentSelection = this.selected;\n\n\t\t\t\tthis._onDidSelect.fire({\n\t\t\t\t\tindex: this.selectElement.selectedIndex,\n\t\t\t\t\tselected: this.options[this.selected].text\n\n\t\t\t\t});\n\t\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.hideSelectDropDown(true);\n\t\t}\n\t}\n\n\t// List Exit - passive - implicit no selection change, hide drop-down\n\tprivate onListBlur(): void {\n\t\tif (this._sticky) { return; }\n\t\tthis.cancelSelectDropDown(false);\n\t}\n\n\n\tprivate renderDescriptionMarkdown(text: string, actionHandler?: MarkdownActionHandler): IRenderedMarkdown {\n\t\tconst cleanRenderedMarkdown = (element: Node) => {\n\t\t\tfor (let i = 0; i < element.childNodes.length; i++) {\n\t\t\t\tconst child = <Element>element.childNodes.item(i);\n\n\t\t\t\tconst tagName = child.tagName && child.tagName.toLowerCase();\n\t\t\t\tif (tagName === 'img') {\n\t\t\t\t\tchild.remove();\n\t\t\t\t} else {\n\t\t\t\t\tcleanRenderedMarkdown(child);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst rendered = renderMarkdown({ value: text, supportThemeIcons: true }, { actionHandler });\n\n\t\trendered.element.classList.add('select-box-description-markdown');\n\t\tcleanRenderedMarkdown(rendered.element);\n\n\t\treturn rendered;\n\t}\n\n\t// List Focus Change - passive - update details pane with newly focused element's data\n\tprivate onListFocus(e: IListEvent<ISelectOptionItem>) {\n\t\t// Skip during initial layout\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listIndex = e.indexes[0];\n\t\tconst optionIndex = this.getOptionIndex(listIndex);\n\t\tif (this._hasDetails) {\n\t\t\tthis.updateDetail(optionIndex);\n\t\t}\n\t\tthis.showOptionDescriptionHover(listIndex);\n\t}\n\n\tprivate showOptionDescriptionHover(listIndex: number): void {\n\t\tif (!this.selectBoxOptions.showOptionDescriptionHovers) {\n\t\t\treturn;\n\t\t}\n\t\tconst option = this.options[this.getOptionIndex(listIndex)];\n\t\tconst description = option?.description;\n\t\tconst target = option ? this.listRenderer.getElement(option) : undefined;\n\t\tthis._optionDescriptionHover.value = description && target\n\t\t\t? getBaseLayerHoverDelegate().showDelayedHover({\n\t\t\t\tcontent: description,\n\t\t\t\ttarget,\n\t\t\t\tposition: { hoverPosition: HoverPosition.RIGHT },\n\t\t\t}, { groupId: 'select-box-option-description' })\n\t\t\t: undefined;\n\t}\n\n\tprivate updateDetail(selectedIndex: number): void {\n\t\t// Reset\n\t\tthis._selectionDetailsDisposables.clear();\n\t\tthis.selectionDetailsPane.textContent = '';\n\n\t\tconst option = this.options[selectedIndex];\n\t\tconst description = option?.description ?? '';\n\t\tconst descriptionIsMarkdown = option?.descriptionIsMarkdown ?? false;\n\n\t\tif (description) {\n\t\t\tif (descriptionIsMarkdown) {\n\t\t\t\tconst actionHandler = option.descriptionMarkdownActionHandler;\n\t\t\t\tconst result = this._selectionDetailsDisposables.add(this.renderDescriptionMarkdown(description, actionHandler));\n\t\t\t\tthis.selectionDetailsPane.appendChild(result.element);\n\t\t\t} else {\n\t\t\t\tthis.selectionDetailsPane.textContent = description;\n\t\t\t}\n\t\t\tthis.selectionDetailsPane.style.display = 'block';\n\t\t} else {\n\t\t\tthis.selectionDetailsPane.style.display = 'none';\n\t\t}\n\n\t\t// Avoid recursion\n\t\tthis._skipLayout = true;\n\t\tthis.contextViewProvider.layout();\n\t\tthis._skipLayout = false;\n\t}\n\n\t// List keyboard controller\n\n\t// List exit - active - hide ContextView dropdown, reset selection, return focus to parent select\n\tprivate onEscape(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\t// Reset selection to value when opened\n\t\tthis.cancelSelectDropDown(true);\n\t}\n\n\t// List exit - active - hide ContextView dropdown, return focus to parent select, fire onDidSelect if change\n\tprivate onEnter(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\t// Ignore if current selection is disabled (e.g. separator)\n\t\tif (this.options[this.selected]?.isDisabled) {\n\t\t\tthis.hideSelectDropDown(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// Only fire if selection change\n\t\tif (this.selected !== this._currentSelection) {\n\t\t\tthis._currentSelection = this.selected;\n\t\t\tthis._onDidSelect.fire({\n\t\t\t\tindex: this.selectElement.selectedIndex,\n\t\t\t\tselected: this.options[this.selected].text\n\t\t\t});\n\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t}\n\t\t}\n\n\t\tthis.hideSelectDropDown(true);\n\t}\n\n\t// List navigation - have to handle disabled options (jump over)\n\tprivate onDownArrow(e: StandardKeyboardEvent): void {\n\t\tif (this.selected < this.options.length - 1) {\n\t\t\tdom.EventHelper.stop(e, true);\n\n\t\t\t// Skip over all contiguous disabled options\n\t\t\tlet next = this.selected + 1;\n\t\t\twhile (next < this.options.length && this.options[next].isDisabled) {\n\t\t\t\tnext++;\n\t\t\t}\n\n\t\t\tif (next >= this.options.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selected = next;\n\n\t\t\t// Set focus/selection - only fire event when closing drop-down or on blur\n\t\t\tthis.select(this.selected);\n\t\t\tthis.focusOption(this.selected);\n\t\t}\n\t}\n\n\tprivate onUpArrow(e: StandardKeyboardEvent): void {\n\t\tif (this.selected > 0) {\n\t\t\tdom.EventHelper.stop(e, true);\n\n\t\t\t// Skip over all contiguous disabled options\n\t\t\tlet prev = this.selected - 1;\n\t\t\twhile (prev >= 0 && this.options[prev].isDisabled) {\n\t\t\t\tprev--;\n\t\t\t}\n\n\t\t\tif (prev < 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selected = prev;\n\n\t\t\t// Set focus/selection - only fire event when closing drop-down or on blur\n\t\t\tthis.select(this.selected);\n\t\t\tthis.focusOption(this.selected);\n\t\t}\n\t}\n\n\tprivate onPageUp(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tthis.selectList.focusPreviousPage();\n\n\t\t// Allow scrolling to settle\n\t\tsetTimeout(() => {\n\t\t\tlet candidate = this.selectList.getFocus()[0];\n\n\t\t\t// Shift selection up if we land on a disabled option\n\t\t\twhile (candidate > 0 && this.options[this.getOptionIndex(candidate)].isDisabled) {\n\t\t\t\tcandidate--;\n\t\t\t}\n\t\t\tconst optionIndex = this.getOptionIndex(candidate);\n\t\t\tif (this.options[optionIndex].isDisabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selected = optionIndex;\n\t\t\tthis.selectList.reveal(candidate);\n\t\t\tthis.selectList.setFocus([candidate]);\n\t\t\tthis.select(this.selected);\n\t\t}, 1);\n\t}\n\n\tprivate onPageDown(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tthis.selectList.focusNextPage();\n\n\t\t// Allow scrolling to settle\n\t\tsetTimeout(() => {\n\t\t\tlet candidate = this.selectList.getFocus()[0];\n\n\t\t\t// Shift selection down if we land on a disabled option\n\t\t\twhile (candidate < this.selectList.length - 1 && this.options[this.getOptionIndex(candidate)].isDisabled) {\n\t\t\t\tcandidate++;\n\t\t\t}\n\t\t\tconst optionIndex = this.getOptionIndex(candidate);\n\t\t\tif (this.options[optionIndex].isDisabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selected = optionIndex;\n\t\t\tthis.selectList.reveal(candidate);\n\t\t\tthis.selectList.setFocus([candidate]);\n\t\t\tthis.select(this.selected);\n\t\t}, 1);\n\t}\n\n\tprivate onHome(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tif (this.options.length < 2) {\n\t\t\treturn;\n\t\t}\n\t\tlet candidate = 0;\n\t\twhile (candidate < this.options.length - 1 && this.options[candidate].isDisabled) {\n\t\t\tcandidate++;\n\t\t}\n\t\tif (this.options[candidate].isDisabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.selected = candidate;\n\t\tthis.focusOption(this.selected);\n\t\tthis.select(this.selected);\n\t}\n\n\tprivate onEnd(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tif (this.options.length < 2) {\n\t\t\treturn;\n\t\t}\n\t\tlet candidate = this.options.length - 1;\n\t\twhile (candidate > 0 && this.options[candidate].isDisabled) {\n\t\t\tcandidate--;\n\t\t}\n\t\tif (this.options[candidate].isDisabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.selected = candidate;\n\t\tthis.focusOption(this.selected);\n\t\tthis.select(this.selected);\n\t}\n\n\t// Mimic option first character navigation of native select\n\tprivate onCharacter(e: StandardKeyboardEvent): void {\n\t\tconst ch = KeyCodeUtils.toString(e.keyCode);\n\t\tlet optionIndex = -1;\n\n\t\tfor (let i = 0; i < this.options.length - 1; i++) {\n\t\t\toptionIndex = (i + this.selected + 1) % this.options.length;\n\t\t\tif (this.options[optionIndex].text.charAt(0).toUpperCase() === ch && !this.options[optionIndex].isDisabled) {\n\t\t\t\tthis.select(optionIndex);\n\t\t\t\tthis.focusOption(optionIndex);\n\t\t\t\tdom.EventHelper.stop(e);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.hideSelectDropDown(false);\n\t\tsuper.dispose();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/base/browser/ui/selectBox/selectBoxCustom.ts"],"names":[],"mappings":"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","file":"selectBoxCustom.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 { localize } from '../../../../nls.js';\nimport * as arrays from '../../../common/arrays.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { KeyCode, KeyCodeUtils } from '../../../common/keyCodes.js';\nimport { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../common/lifecycle.js';\nimport { isMacintosh } from '../../../common/platform.js';\nimport { ScrollbarVisibility } from '../../../common/scrollable.js';\nimport * as cssJs from '../../cssValue.js';\nimport * as dom from '../../dom.js';\nimport * as domStylesheetsJs from '../../domStylesheets.js';\nimport { DomEmitter } from '../../event.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { IRenderedMarkdown, MarkdownActionHandler, renderMarkdown } from '../../markdownRenderer.js';\nimport { HoverPosition } from '../hover/hoverWidget.js';\nimport { AnchorPosition, IContextViewProvider } from '../contextview/contextview.js';\nimport { IHoverWidget, IManagedHover } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IListEvent, IListRenderer, IListVirtualDelegate } from '../list/list.js';\nimport { List } from '../list/listWidget.js';\nimport { ISelectBoxDelegate, ISelectBoxOptions, ISelectBoxStyles, ISelectData, ISelectOptionItem } from './selectBox.js';\nimport './selectBoxCustom.css';\n\n\nconst $ = dom.$;\n\nconst SELECT_OPTION_ENTRY_TEMPLATE_ID = 'selectOption.entry.template';\nconst SELECT_OPTION_HEIGHT = 22;\n\ninterface ISelectListTemplateData {\n\troot: HTMLElement;\n\ttext: HTMLElement;\n\tdetail: HTMLElement;\n\tdecoratorRight: HTMLElement;\n\telement?: ISelectOptionItem;\n}\n\nclass SelectListRenderer implements IListRenderer<ISelectOptionItem, ISelectListTemplateData> {\n\n\tprivate readonly elements = new Map<ISelectOptionItem, HTMLElement>();\n\n\tget templateId(): string { return SELECT_OPTION_ENTRY_TEMPLATE_ID; }\n\n\trenderTemplate(container: HTMLElement): ISelectListTemplateData {\n\t\tconst data: ISelectListTemplateData = Object.create(null);\n\t\tdata.root = container;\n\t\tdata.text = dom.append(container, $('.option-text'));\n\t\tdata.detail = dom.append(container, $('.option-detail'));\n\t\tdata.decoratorRight = dom.append(container, $('.option-decorator-right'));\n\n\t\treturn data;\n\t}\n\n\trenderElement(element: ISelectOptionItem, index: number, templateData: ISelectListTemplateData): void {\n\t\tconst data: ISelectListTemplateData = templateData;\n\t\tif (data.element) {\n\t\t\tthis.elements.delete(data.element);\n\t\t}\n\t\tdata.element = element;\n\t\tthis.elements.set(element, data.root);\n\n\t\tconst text = element.text;\n\t\tconst detail = element.detail;\n\t\tconst decoratorRight = element.decoratorRight;\n\n\t\tconst isDisabled = element.isDisabled;\n\n\t\tdata.text.textContent = text;\n\t\tdata.detail.textContent = !!detail ? detail : '';\n\t\tdata.decoratorRight.textContent = !!decoratorRight ? decoratorRight : '';\n\n\t\t// pseudo-select disabled option\n\t\tif (isDisabled) {\n\t\t\tdata.root.classList.add('option-disabled');\n\t\t} else {\n\t\t\t// Make sure we do class removal from prior template rendering\n\t\t\tdata.root.classList.remove('option-disabled');\n\t\t}\n\n\t\t// Separator option - show a CSS border instead of text characters\n\t\tif (element.isSeparator) {\n\t\t\tdata.root.classList.add('option-separator');\n\t\t\tdata.root.classList.add('option-disabled');\n\t\t} else {\n\t\t\tdata.root.classList.remove('option-separator');\n\t\t}\n\t}\n\n\tdisposeTemplate(templateData: ISelectListTemplateData): void {\n\t\tif (templateData.element) {\n\t\t\tthis.elements.delete(templateData.element);\n\t\t}\n\t}\n\n\tgetElement(element: ISelectOptionItem): HTMLElement | undefined {\n\t\treturn this.elements.get(element);\n\t}\n}\n\nexport class SelectBoxList extends Disposable implements ISelectBoxDelegate, IListVirtualDelegate<ISelectOptionItem> {\n\n\tprivate static readonly DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32;\n\tprivate static readonly DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN = 2;\n\tprivate static readonly DEFAULT_MINIMUM_VISIBLE_OPTIONS = 3;\n\n\tprivate _isVisible: boolean;\n\tprivate selectBoxOptions: ISelectBoxOptions;\n\tprivate selectElement: HTMLSelectElement;\n\tprivate container?: HTMLElement;\n\tprivate options: ISelectOptionItem[] = [];\n\tprivate selected: number;\n\tprivate readonly _onDidSelect: Emitter<ISelectData>;\n\tprivate readonly styles: ISelectBoxStyles;\n\tprivate listRenderer!: SelectListRenderer;\n\tprivate contextViewProvider!: IContextViewProvider;\n\tprivate selectDropDownContainer!: HTMLElement;\n\tprivate styleElement!: HTMLStyleElement;\n\tprivate selectList!: List<ISelectOptionItem>;\n\tprivate selectDropDownListContainer!: HTMLElement;\n\tprivate widthControlElement!: HTMLElement;\n\tprivate listOptionIndexes: number[] = [];\n\tprivate _currentSelection = 0;\n\tprivate _dropDownPosition!: AnchorPosition;\n\tprivate _hasDetails: boolean = false;\n\tprivate selectionDetailsPane!: HTMLElement;\n\tprivate readonly _selectionDetailsDisposables = this._register(new DisposableStore());\n\tprivate readonly _optionDescriptionHover = this._register(new MutableDisposable<IHoverWidget>());\n\tprivate _skipLayout: boolean = false;\n\tprivate _cachedMaxDetailsHeight?: number;\n\tprivate _hover?: IManagedHover;\n\n\tprivate _sticky: boolean = false; // for dev purposes only\n\n\tconstructor(options: ISelectOptionItem[], selected: number, contextViewProvider: IContextViewProvider, styles: ISelectBoxStyles, selectBoxOptions?: ISelectBoxOptions) {\n\n\t\tsuper();\n\t\tthis._isVisible = false;\n\t\tthis.styles = styles;\n\n\t\tthis.selectBoxOptions = selectBoxOptions || Object.create(null);\n\n\t\tif (typeof this.selectBoxOptions.minBottomMargin !== 'number') {\n\t\t\tthis.selectBoxOptions.minBottomMargin = SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN;\n\t\t} else if (this.selectBoxOptions.minBottomMargin < 0) {\n\t\t\tthis.selectBoxOptions.minBottomMargin = 0;\n\t\t}\n\n\t\tthis.selectElement = document.createElement('select');\n\t\tthis.selectElement.className = 'monaco-select-box';\n\n\t\tif (typeof this.selectBoxOptions.ariaLabel === 'string') {\n\t\t\tthis.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n\t\t}\n\n\t\tif (typeof this.selectBoxOptions.ariaDescription === 'string') {\n\t\t\tthis.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n\t\t}\n\n\t\tthis._onDidSelect = new Emitter<ISelectData>();\n\t\tthis._register(this._onDidSelect);\n\n\t\tthis.registerListeners();\n\t\tthis.constructSelectDropDown(contextViewProvider);\n\n\t\tthis.selected = selected || 0;\n\n\t\tif (options) {\n\t\t\tthis.setOptions(options, selected);\n\t\t}\n\n\t\tthis.initStyleSheet();\n\n\t}\n\n\tprivate setTitle(title: string): void {\n\t\tif (!this._hover && title) {\n\t\t\tthis._hover = this._register(getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate('mouse'), this.selectElement, title));\n\t\t} else if (this._hover) {\n\t\t\tthis._hover.update(title);\n\t\t}\n\t}\n\n\t// IDelegate - List renderer\n\n\tgetHeight(_element: ISelectOptionItem): number {\n\t\treturn SELECT_OPTION_HEIGHT;\n\t}\n\n\tgetTemplateId(): string {\n\t\treturn SELECT_OPTION_ENTRY_TEMPLATE_ID;\n\t}\n\n\tprivate constructSelectDropDown(contextViewProvider: IContextViewProvider) {\n\n\t\t// SetUp ContextView container to hold select Dropdown\n\t\tthis.contextViewProvider = contextViewProvider;\n\t\tthis.selectDropDownContainer = dom.$('.monaco-select-box-dropdown-container');\n\n\t\t// Setup container for select option details\n\t\tthis.selectionDetailsPane = dom.append(this.selectDropDownContainer, $('.select-box-details-pane'));\n\n\t\t// Create span flex box item/div we can measure and control\n\t\tconst widthControlOuterDiv = dom.append(this.selectDropDownContainer, $('.select-box-dropdown-container-width-control'));\n\t\tconst widthControlInnerDiv = dom.append(widthControlOuterDiv, $('.width-control-div'));\n\t\tthis.widthControlElement = document.createElement('span');\n\t\tthis.widthControlElement.className = 'option-text-width-control';\n\t\tdom.append(widthControlInnerDiv, this.widthControlElement);\n\n\t\t// Always default to below position\n\t\tthis._dropDownPosition = AnchorPosition.BELOW;\n\n\t\t// Inline stylesheet for themes\n\t\tthis.styleElement = domStylesheetsJs.createStyleSheet(this.selectDropDownContainer);\n\n\t\t// Prevent dragging of dropdown #114329\n\t\tthis.selectDropDownContainer.setAttribute('draggable', 'true');\n\t\tthis._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.DRAG_START, (e) => {\n\t\t\tdom.EventHelper.stop(e, true);\n\t\t}));\n\t}\n\n\tprivate registerListeners() {\n\n\t\t// Parent native select keyboard listeners\n\n\t\tthis._register(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n\t\t\tthis.selected = e.target.selectedIndex;\n\t\t\tthis._onDidSelect.fire({\n\t\t\t\tindex: e.target.selectedIndex,\n\t\t\t\tselected: e.target.value\n\t\t\t});\n\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t}\n\t\t}));\n\n\t\t// Have to implement both keyboard and mouse controllers to handle disabled options\n\t\t// Intercept mouse events to override normal select actions on parents\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.CLICK, (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\n\t\t\tif (this._isVisible) {\n\t\t\t\tthis.cancelSelectDropDown(true);\n\t\t\t} else {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.MOUSE_DOWN, (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\t\t}));\n\n\t\t// Intercept touch events\n\t\t// The following implementation is slightly different from the mouse event handlers above.\n\t\t// Use the following helper variable, otherwise the list flickers.\n\t\tlet listIsVisibleOnTouchStart: boolean;\n\t\tthis._register(dom.addDisposableListener(this.selectElement, 'touchstart', (e) => {\n\t\t\tlistIsVisibleOnTouchStart = this._isVisible;\n\t\t}));\n\t\tthis._register(dom.addDisposableListener(this.selectElement, 'touchend', (e) => {\n\t\t\tdom.EventHelper.stop(e);\n\n\t\t\tif (listIsVisibleOnTouchStart) {\n\t\t\t\tthis.cancelSelectDropDown(true);\n\t\t\t} else {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t}\n\t\t}));\n\n\t\t// Intercept keyboard handling\n\n\t\tthis._register(dom.addDisposableListener(this.selectElement, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => {\n\t\t\tconst event = new StandardKeyboardEvent(e);\n\t\t\tlet showDropDown = false;\n\n\t\t\t// Create and drop down select list on keyboard select\n\t\t\tif (isMacintosh) {\n\t\t\t\tif (event.keyCode === KeyCode.DownArrow || event.keyCode === KeyCode.UpArrow || event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n\t\t\t\t\tshowDropDown = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (event.keyCode === KeyCode.DownArrow && event.altKey || event.keyCode === KeyCode.UpArrow && event.altKey || event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n\t\t\t\t\tshowDropDown = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (showDropDown) {\n\t\t\t\tthis.showSelectDropDown();\n\t\t\t\tdom.EventHelper.stop(e, true);\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic get onDidSelect(): Event<ISelectData> {\n\t\treturn this._onDidSelect.event;\n\t}\n\n\tpublic setOptions(options: ISelectOptionItem[], selected?: number): void {\n\t\tif (!arrays.equals(this.options, options)) {\n\t\t\tthis.options = options;\n\t\t\tthis.selectElement.options.length = 0;\n\t\t\tthis._hasDetails = false;\n\t\t\tthis._cachedMaxDetailsHeight = undefined;\n\n\t\t\tthis.options.forEach((option, index) => {\n\t\t\t\tthis.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n\t\t\t\tif (typeof option.description === 'string' && !this.selectBoxOptions.showOptionDescriptionHovers) {\n\t\t\t\t\tthis._hasDetails = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (selected !== undefined) {\n\t\t\tthis.select(selected);\n\t\t\t// Set current = selected since this is not necessarily a user exit\n\t\t\tthis._currentSelection = this.selected;\n\t\t}\n\t}\n\n\tprivate setOptionsList() {\n\n\t\t// Mirror options in drop-down\n\t\t// Populate select list for non-native select mode\n\t\tthis.listOptionIndexes = [];\n\t\tfor (let index = 0; index < this.options.length; index++) {\n\t\t\tif (!this.selectBoxOptions.hideDisabledOptions || !this.options[index].isDisabled) {\n\t\t\t\tthis.listOptionIndexes.push(index);\n\t\t\t}\n\t\t}\n\t\tthis.selectList?.splice(0, this.selectList.length, this.listOptionIndexes.map(index => this.options[index]));\n\t}\n\n\tprivate getListIndex(optionIndex: number): number {\n\t\treturn this.listOptionIndexes.indexOf(optionIndex);\n\t}\n\n\tprivate getOptionIndex(listIndex: number): number {\n\t\treturn this.listOptionIndexes[listIndex];\n\t}\n\n\tprivate focusOption(optionIndex: number): void {\n\t\tconst listIndex = this.getListIndex(optionIndex);\n\t\tif (listIndex >= 0) {\n\t\t\tthis.selectList.reveal(listIndex);\n\t\t\tthis.selectList.setFocus([listIndex]);\n\t\t}\n\t}\n\n\tpublic select(index: number): void {\n\n\t\tif (index >= 0 && index < this.options.length) {\n\t\t\tthis.selected = index;\n\t\t} else if (index > this.options.length - 1) {\n\t\t\t// Adjust index to end of list\n\t\t\t// This could make client out of sync with the select\n\t\t\tthis.select(this.options.length - 1);\n\t\t} else if (this.selected < 0) {\n\t\t\tthis.selected = 0;\n\t\t}\n\n\t\tthis.selectElement.selectedIndex = this.selected;\n\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (this.selectElement) {\n\t\t\tthis.selectElement.tabIndex = 0;\n\t\t\tthis.selectElement.focus();\n\t\t}\n\t}\n\n\tpublic blur(): void {\n\t\tif (this.selectElement) {\n\t\t\tthis.selectElement.tabIndex = -1;\n\t\t\tthis.selectElement.blur();\n\t\t}\n\t}\n\n\tpublic setFocusable(focusable: boolean): void {\n\t\tthis.selectElement.tabIndex = focusable ? 0 : -1;\n\t}\n\n\tpublic render(container: HTMLElement): void {\n\t\tthis.container = container;\n\t\tcontainer.classList.add('select-container');\n\t\tcontainer.appendChild(this.selectElement);\n\t\tthis.styleSelectElement();\n\t}\n\n\tprivate initStyleSheet(): void {\n\n\t\tconst content: string[] = [];\n\n\t\t// Style non-native select mode\n\n\t\tif (this.styles.listFocusBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`);\n\t\t}\n\n\t\tif (this.styles.listFocusForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`);\n\t\t}\n\n\t\tif (this.styles.decoratorRightForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`);\n\t\t}\n\n\t\tif (this.styles.selectBackground && this.styles.selectBorder && this.styles.selectBorder !== this.styles.selectBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `);\n\n\t\t}\n\t\telse if (this.styles.selectListBorder) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `);\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `);\n\t\t}\n\n\t\t// Hover foreground - ignore for disabled options\n\t\tif (this.styles.listHoverForeground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`);\n\t\t}\n\n\t\t// Hover background - ignore for disabled options\n\t\tif (this.styles.listHoverBackground) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`);\n\t\t}\n\n\t\t// Match action widget outline styles - ignore for disabled options\n\t\tif (this.styles.listFocusOutline) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1px solid ${this.styles.listFocusOutline} !important; outline-offset: -1px !important; }`);\n\t\t}\n\n\t\tif (this.styles.listHoverOutline) {\n\t\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1px solid ${this.styles.listHoverOutline} !important; outline-offset: -1px !important; }`);\n\t\t}\n\n\t\t// Clear list styles on focus and on hover for disabled options\n\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n\t\tcontent.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n\n\t\tthis.styleElement.textContent = content.join('\\n');\n\t}\n\n\tprivate styleSelectElement(): void {\n\t\tconst background = this.styles.selectBackground ?? '';\n\t\tconst foreground = this.styles.selectForeground ?? '';\n\t\tconst border = this.styles.selectBorder ?? '';\n\n\t\tthis.selectElement.style.backgroundColor = background;\n\t\tthis.selectElement.style.color = foreground;\n\t\tthis.selectElement.style.borderColor = border;\n\t}\n\n\tprivate styleList() {\n\t\tconst background = this.styles.selectBackground ?? '';\n\n\t\tconst listBackground = cssJs.asCssValueWithDefault(this.styles.selectListBackground, background);\n\t\tthis.selectDropDownContainer.style.backgroundColor = listBackground;\n\t\tthis.selectDropDownListContainer.style.backgroundColor = listBackground;\n\t\tthis.selectionDetailsPane.style.backgroundColor = listBackground;\n\n\t\tthis.selectList.style(this.styles);\n\t}\n\n\tprivate createOption(value: string, index: number, disabled?: boolean): HTMLOptionElement {\n\t\tconst option = document.createElement('option');\n\t\toption.value = value;\n\t\toption.text = value;\n\t\toption.disabled = !!disabled;\n\n\t\treturn option;\n\t}\n\n\t// ContextView dropdown methods\n\n\tprivate showSelectDropDown() {\n\t\tthis.selectionDetailsPane.textContent = '';\n\n\t\tif (!this.contextViewProvider || this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Lazily create and populate list only at open, moved from constructor\n\t\tthis.createSelectList(this.selectDropDownContainer);\n\t\tthis.setOptionsList();\n\t\tthis._currentSelection = this.selected;\n\n\t\t// This allows us to flip the position based on measurement\n\t\t// Set drop-down position above/below from required height and margins\n\t\t// If pre-layout cannot fit at least one option do not show drop-down\n\n\t\tthis.contextViewProvider.showContextView({\n\t\t\tgetAnchor: () => this.selectElement,\n\t\t\trender: (container: HTMLElement) => this.renderSelectDropDown(container, true),\n\t\t\tlayout: () => {\n\t\t\t\tthis.layoutSelectDropDown();\n\t\t\t},\n\t\t\tonHide: () => {\n\t\t\t\tthis.selectDropDownContainer.classList.remove('visible');\n\t\t\t},\n\t\t\tanchorPosition: this._dropDownPosition,\n\t\t\tlayer: this.selectBoxOptions.contextViewLayer,\n\t\t}, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n\n\t\t// Hide so we can relay out\n\t\tthis._isVisible = true;\n\t\tthis.hideSelectDropDown(false);\n\n\t\tthis.contextViewProvider.showContextView({\n\t\t\tgetAnchor: () => this.selectElement,\n\t\t\trender: (container: HTMLElement) => this.renderSelectDropDown(container),\n\t\t\tlayout: () => this.layoutSelectDropDown(),\n\t\t\tonHide: () => {\n\t\t\t\tthis.selectDropDownContainer.classList.remove('visible');\n\t\t\t},\n\t\t\tanchorPosition: this._dropDownPosition,\n\t\t\tlayer: this.selectBoxOptions.contextViewLayer,\n\t\t}, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n\n\t\tthis._isVisible = true;\n\t\tthis.selectElement.setAttribute('aria-expanded', 'true');\n\t\tconst focusedListIndex = this.selectList.getFocus()[0];\n\t\tif (focusedListIndex !== undefined) {\n\t\t\tthis.showOptionDescriptionHover(focusedListIndex);\n\t\t}\n\t}\n\n\tprivate hideSelectDropDown(focusSelect: boolean) {\n\t\tif (!this.contextViewProvider || !this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isVisible = false;\n\t\tthis._optionDescriptionHover.clear();\n\t\tthis.selectElement.setAttribute('aria-expanded', 'false');\n\n\t\tif (focusSelect) {\n\t\t\tthis.selectElement.focus();\n\t\t}\n\n\t\tthis.contextViewProvider.hideContextView();\n\t}\n\n\tprivate cancelSelectDropDown(focusSelect: boolean): void {\n\t\tthis.select(this._currentSelection);\n\t\tthis.hideSelectDropDown(focusSelect);\n\t}\n\n\tprivate renderSelectDropDown(container: HTMLElement, preLayoutPosition?: boolean): IDisposable {\n\t\tcontainer.appendChild(this.selectDropDownContainer);\n\n\t\t// Inherit font-size from the select button so the dropdown matches\n\t\tconst computedFontSize = dom.getWindow(this.selectElement).getComputedStyle(this.selectElement).fontSize;\n\t\tif (computedFontSize) {\n\t\t\tthis.selectDropDownContainer.style.fontSize = computedFontSize;\n\t\t}\n\n\t\t// Pre-Layout allows us to change position\n\t\tthis.layoutSelectDropDown(preLayoutPosition);\n\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\t// contextView will dispose itself if moving from one View to another\n\t\t\t\tthis.selectDropDownContainer.remove(); // remove to take out the CSS rules we add\n\t\t\t}\n\t\t};\n\t}\n\n\t// Iterate over detailed descriptions, find max height\n\tprivate measureMaxDetailsHeight(): number {\n\t\tlet maxDetailsPaneHeight = 0;\n\t\tthis.options.forEach((_option, index) => {\n\t\t\tthis.updateDetail(index);\n\n\t\t\tif (this.selectionDetailsPane.offsetHeight > maxDetailsPaneHeight) {\n\t\t\t\tmaxDetailsPaneHeight = this.selectionDetailsPane.offsetHeight;\n\t\t\t}\n\t\t});\n\n\t\treturn maxDetailsPaneHeight;\n\t}\n\n\tprivate layoutSelectDropDown(preLayoutPosition?: boolean): boolean {\n\n\t\t// Avoid recursion from layout called in onListFocus\n\t\tif (this._skipLayout) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Layout ContextView drop down select list and container\n\t\t// Have to manage our vertical overflow, sizing, position below or above\n\t\t// Position has to be determined and set prior to contextView instantiation\n\n\t\tif (this.selectList) {\n\n\t\t\t// Make visible to enable measurements\n\t\t\tthis.selectDropDownContainer.classList.add('visible');\n\n\t\t\tconst window = dom.getWindow(this.selectElement);\n\t\t\tconst selectPosition = dom.getDomNodePagePosition(this.selectElement);\n\t\t\tconst maxSelectDropDownHeightBelow = (window.innerHeight - selectPosition.top - selectPosition.height - (this.selectBoxOptions.minBottomMargin || 0));\n\t\t\tconst maxSelectDropDownHeightAbove = (selectPosition.top - SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN);\n\n\t\t\t// Determine optimal width - min(longest option), opt(parent select, excluding margins), max(ContextView controlled)\n\t\t\tconst selectWidth = this.selectElement.offsetWidth;\n\t\t\tconst selectMinWidth = this.setWidthControlElement(this.widthControlElement);\n\t\t\tconst selectOptimalWidth = `${Math.max(selectMinWidth, Math.round(selectWidth))}px`;\n\n\t\t\tthis.selectDropDownContainer.style.width = selectOptimalWidth;\n\n\t\t\t// Get initial list height and determine space above and below\n\t\t\tthis.selectList.getHTMLElement().style.height = '';\n\t\t\tthis.selectList.layout();\n\t\t\tlet listHeight = Math.min(this.selectList.contentHeight, (this.selectBoxOptions.maxVisibleOptions ?? Infinity) * SELECT_OPTION_HEIGHT);\n\n\t\t\tif (this._hasDetails && this._cachedMaxDetailsHeight === undefined) {\n\t\t\t\tthis._cachedMaxDetailsHeight = this.measureMaxDetailsHeight();\n\t\t\t}\n\t\t\tconst maxDetailsPaneHeight = this._hasDetails ? this._cachedMaxDetailsHeight! : 0;\n\n\t\t\tconst minRequiredDropDownHeight = listHeight + maxDetailsPaneHeight;\n\t\t\tconst maxVisibleOptionsBelow = ((Math.floor((maxSelectDropDownHeightBelow - maxDetailsPaneHeight) / SELECT_OPTION_HEIGHT)));\n\t\t\tconst maxVisibleOptionsAbove = ((Math.floor((maxSelectDropDownHeightAbove - maxDetailsPaneHeight) / SELECT_OPTION_HEIGHT)));\n\n\t\t\t// If we are only doing pre-layout check/adjust position only\n\t\t\t// Calculate vertical space available, flip up if insufficient\n\t\t\t// Use reflected padding on parent select, ContextView style\n\t\t\t// properties not available before DOM attachment\n\n\t\t\tif (preLayoutPosition) {\n\n\t\t\t\t// Check if select moved out of viewport , do not open\n\t\t\t\t// If at least one option cannot be shown, don't open the drop-down or hide/remove if open\n\n\t\t\t\tif ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n\t\t\t\t\t|| selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n\t\t\t\t\t|| ((maxVisibleOptionsBelow < 1) && (maxVisibleOptionsAbove < 1))) {\n\t\t\t\t\t// Indicate we cannot open\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Fall back to the other side when the preferred side cannot show enough options.\n\t\t\t\t// Always show complete list items - never more than Max available vertical height\n\t\t\t\tconst preferAbove = this.selectBoxOptions.anchorPosition === AnchorPosition.ABOVE;\n\t\t\t\tconst preferredVisibleOptions = preferAbove ? maxVisibleOptionsAbove : maxVisibleOptionsBelow;\n\t\t\t\tconst otherVisibleOptions = preferAbove ? maxVisibleOptionsBelow : maxVisibleOptionsAbove;\n\t\t\t\tconst flip = preferredVisibleOptions < SelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS\n\t\t\t\t\t&& otherVisibleOptions > preferredVisibleOptions\n\t\t\t\t\t&& Math.min(this.selectList.length, this.selectBoxOptions.maxVisibleOptions ?? Infinity) > preferredVisibleOptions;\n\t\t\t\tif (preferAbove ? !flip : flip) {\n\t\t\t\t\tthis._dropDownPosition = AnchorPosition.ABOVE;\n\t\t\t\t\tthis.selectDropDownListContainer.remove();\n\t\t\t\t\tthis.selectionDetailsPane.remove();\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n\n\t\t\t\t\tthis.selectionDetailsPane.classList.remove('border-top');\n\t\t\t\t\tthis.selectionDetailsPane.classList.add('border-bottom');\n\n\t\t\t\t} else {\n\t\t\t\t\tthis._dropDownPosition = AnchorPosition.BELOW;\n\t\t\t\t\tthis.selectDropDownListContainer.remove();\n\t\t\t\t\tthis.selectionDetailsPane.remove();\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n\t\t\t\t\tthis.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n\n\t\t\t\t\tthis.selectionDetailsPane.classList.remove('border-bottom');\n\t\t\t\t\tthis.selectionDetailsPane.classList.add('border-top');\n\t\t\t\t}\n\t\t\t\t// Do full layout on showSelectDropDown only\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Check if select out of viewport or cutting into status bar\n\t\t\tif ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n\t\t\t\t|| selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n\t\t\t\t|| (this._dropDownPosition === AnchorPosition.BELOW && maxVisibleOptionsBelow < 1)\n\t\t\t\t|| (this._dropDownPosition === AnchorPosition.ABOVE && maxVisibleOptionsAbove < 1)) {\n\t\t\t\t// Cannot properly layout, close and hide\n\t\t\t\tthis.hideSelectDropDown(true);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// SetUp list dimensions and layout - account for container padding\n\t\t\t// Use position to check above or below available space\n\t\t\tif (this._dropDownPosition === AnchorPosition.BELOW) {\n\t\t\t\tif (this._isVisible && maxVisibleOptionsBelow + maxVisibleOptionsAbove < 1) {\n\t\t\t\t\t// If drop-down is visible, must be doing a DOM re-layout, hide since we don't fit\n\t\t\t\t\t// Hide drop-down, hide contextview, focus on parent select\n\t\t\t\t\tthis.hideSelectDropDown(true);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Adjust list height to max from select bottom to margin (default/minBottomMargin)\n\t\t\t\tif (minRequiredDropDownHeight > maxSelectDropDownHeightBelow) {\n\t\t\t\t\tlistHeight = (maxVisibleOptionsBelow * SELECT_OPTION_HEIGHT);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (minRequiredDropDownHeight > maxSelectDropDownHeightAbove) {\n\t\t\t\t\tlistHeight = (maxVisibleOptionsAbove * SELECT_OPTION_HEIGHT);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set adjusted list height and relayout\n\t\t\tthis.selectList.getHTMLElement().style.height = `${listHeight}px`;\n\t\t\tthis.selectList.layout(listHeight);\n\t\t\tthis.selectList.domFocus();\n\n\t\t\t// Finally set focus on selected item\n\t\t\tif (this.selectList.length > 0) {\n\t\t\t\tlet selectedListIndex = this.getListIndex(this.selected);\n\t\t\t\tif (selectedListIndex < 0) {\n\t\t\t\t\tselectedListIndex = 0;\n\t\t\t\t\tthis.selected = this.getOptionIndex(selectedListIndex);\n\t\t\t\t\tthis.select(this.selected);\n\t\t\t\t}\n\t\t\t\tthis.selectList.reveal(selectedListIndex);\n\t\t\t\tthis.selectList.setFocus([selectedListIndex]);\n\t\t\t}\n\n\t\t\tif (this._hasDetails) {\n\t\t\t\t// Leave the selectDropDownContainer to size itself according to children (list + details) - #57447\n\t\t\t\tthis.selectDropDownContainer.style.height = '';\n\t\t\t} else {\n\t\t\t\tthis.selectDropDownContainer.style.height = `${listHeight}px`;\n\t\t\t}\n\n\t\t\tif (this._hasDetails) {\n\t\t\t\tthis.updateDetail(this.selected);\n\t\t\t} else {\n\t\t\t\tthis.selectionDetailsPane.style.display = 'none';\n\t\t\t}\n\n\t\t\tthis.selectDropDownContainer.style.width = selectOptimalWidth;\n\t\t\tthis.selectDropDownListContainer.setAttribute('tabindex', '0');\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate setWidthControlElement(container: HTMLElement): number {\n\t\tlet elementWidth = 0;\n\n\t\tif (container) {\n\t\t\tlet longest = 0;\n\t\t\tlet longestLength = 0;\n\n\t\t\tthis.options.forEach((option, index) => {\n\t\t\t\tconst detailLength = !!option.detail ? option.detail.length : 0;\n\t\t\t\tconst rightDecoratorLength = !!option.decoratorRight ? option.decoratorRight.length : 0;\n\n\t\t\t\tconst len = option.text.length + detailLength + rightDecoratorLength;\n\t\t\t\tif (len > longestLength) {\n\t\t\t\t\tlongest = index;\n\t\t\t\t\tlongestLength = len;\n\t\t\t\t}\n\t\t\t});\n\n\n\t\t\tcontainer.textContent = this.options[longest].text + (!!this.options[longest].decoratorRight ? `${this.options[longest].decoratorRight} ` : '');\n\t\t\telementWidth = dom.getTotalWidth(container);\n\t\t}\n\n\t\treturn elementWidth;\n\t}\n\n\tprivate createSelectList(parent: HTMLElement): void {\n\n\t\t// If we have already constructive list on open, skip\n\t\tif (this.selectList) {\n\t\t\treturn;\n\t\t}\n\n\t\t// SetUp container for list\n\t\tthis.selectDropDownListContainer = dom.append(parent, $('.select-box-dropdown-list-container'));\n\n\t\tthis.listRenderer = new SelectListRenderer();\n\n\t\tthis.selectList = this._register(new List('SelectBoxCustom', this.selectDropDownListContainer, this, [this.listRenderer], {\n\t\t\tuseShadows: false,\n\t\t\tverticalScrollMode: ScrollbarVisibility.Visible,\n\t\t\tkeyboardSupport: false,\n\t\t\tmouseSupport: false,\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetAriaLabel: element => {\n\t\t\t\t\tif (element.isSeparator) {\n\t\t\t\t\t\treturn localize('selectBoxSeparator', \"separator\");\n\t\t\t\t\t}\n\n\t\t\t\t\tlet label = element.text;\n\t\t\t\t\tif (element.detail) {\n\t\t\t\t\t\tlabel += `. ${element.detail}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.decoratorRight) {\n\t\t\t\t\t\tlabel += `. ${element.decoratorRight}`;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (element.description) {\n\t\t\t\t\t\tlabel += `. ${element.description}`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn label;\n\t\t\t\t},\n\t\t\t\tgetWidgetAriaLabel: () => localize({ key: 'selectBox', comment: ['Behave like native select dropdown element.'] }, \"Select Box\"),\n\t\t\t\tgetRole: () => isMacintosh ? '' : 'option',\n\t\t\t\tgetWidgetRole: () => 'listbox'\n\t\t\t}\n\t\t}));\n\t\tif (this.selectBoxOptions.ariaLabel) {\n\t\t\tthis.selectList.ariaLabel = this.selectBoxOptions.ariaLabel;\n\t\t}\n\n\t\t// SetUp list keyboard controller - control navigation, disabled items, focus\n\t\tconst onKeyDown = this._register(new DomEmitter(this.selectDropDownListContainer, 'keydown'));\n\t\tconst onSelectDropDownKeyDown = Event.chain(onKeyDown.event, $ =>\n\t\t\t$.filter(() => this.selectList.length > 0)\n\t\t\t\t.map(e => new StandardKeyboardEvent(e))\n\t\t);\n\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Enter))(this.onEnter, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Tab))(this.onEnter, this)); // Tab should behave the same as enter, #79339\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Escape))(this.onEscape, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.UpArrow))(this.onUpArrow, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.DownArrow))(this.onDownArrow, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.PageDown))(this.onPageDown, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.PageUp))(this.onPageUp, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.Home))(this.onHome, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === KeyCode.End))(this.onEnd, this));\n\t\tthis._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => (e.keyCode >= KeyCode.Digit0 && e.keyCode <= KeyCode.KeyZ) || (e.keyCode >= KeyCode.Semicolon && e.keyCode <= KeyCode.NumpadDivide)))(this.onCharacter, this));\n\n\t\t// SetUp list mouse controller - control navigation, disabled items, focus\n\t\tthis._register(dom.addDisposableListener(this.selectList.getHTMLElement(), dom.EventType.POINTER_UP, e => this.onPointerUp(e)));\n\n\t\tthis._register(this.selectList.onMouseOver(e => typeof e.index !== 'undefined' && !e.element?.isDisabled && this.selectList.setFocus([e.index])));\n\t\tthis._register(this.selectList.onDidChangeFocus(e => this.onListFocus(e)));\n\n\t\tthis._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.FOCUS_OUT, e => {\n\t\t\tif (!this._isVisible || dom.isAncestor(e.relatedTarget as HTMLElement, this.selectDropDownContainer)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.onListBlur();\n\t\t}));\n\n\t\tthis.selectList.getHTMLElement().setAttribute('aria-label', this.selectBoxOptions.ariaLabel || '');\n\t\tthis.selectList.getHTMLElement().setAttribute('aria-expanded', 'true');\n\n\t\tthis.styleList();\n\t}\n\n\t// List methods\n\n\t// List mouse controller - active exit, select option, fire onDidSelect if change, return focus to parent select\n\t// Also takes in touchend events\n\tprivate onPointerUp(e: PointerEvent): void {\n\n\t\tif (!this.selectList.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tdom.EventHelper.stop(e);\n\n\t\tconst target = <Element>e.target;\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check our mouse event is on an option (not scrollbar)\n\t\tif (target.classList.contains('slider')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listRowElement = target.closest('.monaco-list-row');\n\n\t\tif (!listRowElement) {\n\t\t\treturn;\n\t\t}\n\t\tconst index = this.getOptionIndex(Number(listRowElement.getAttribute('data-index')));\n\t\tconst disabled = listRowElement.classList.contains('option-disabled');\n\n\t\t// Ignore mouse selection of disabled options\n\t\tif (index >= 0 && index < this.options.length && !disabled) {\n\t\t\tthis.selected = index;\n\t\t\tthis.select(this.selected);\n\n\t\t\tthis.focusOption(this.selected);\n\n\t\t\t// Only fire if selection change\n\t\t\tif (this.selected !== this._currentSelection) {\n\t\t\t\t// Set current = selected\n\t\t\t\tthis._currentSelection = this.selected;\n\n\t\t\t\tthis._onDidSelect.fire({\n\t\t\t\t\tindex: this.selectElement.selectedIndex,\n\t\t\t\t\tselected: this.options[this.selected].text\n\n\t\t\t\t});\n\t\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.hideSelectDropDown(true);\n\t\t}\n\t}\n\n\t// List Exit - passive - implicit no selection change, hide drop-down\n\tprivate onListBlur(): void {\n\t\tif (this._sticky) { return; }\n\t\tthis.cancelSelectDropDown(false);\n\t}\n\n\n\tprivate renderDescriptionMarkdown(text: string, actionHandler?: MarkdownActionHandler): IRenderedMarkdown {\n\t\tconst cleanRenderedMarkdown = (element: Node) => {\n\t\t\tfor (let i = 0; i < element.childNodes.length; i++) {\n\t\t\t\tconst child = <Element>element.childNodes.item(i);\n\n\t\t\t\tconst tagName = child.tagName && child.tagName.toLowerCase();\n\t\t\t\tif (tagName === 'img') {\n\t\t\t\t\tchild.remove();\n\t\t\t\t} else {\n\t\t\t\t\tcleanRenderedMarkdown(child);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst rendered = renderMarkdown({ value: text, supportThemeIcons: true }, { actionHandler });\n\n\t\trendered.element.classList.add('select-box-description-markdown');\n\t\tcleanRenderedMarkdown(rendered.element);\n\n\t\treturn rendered;\n\t}\n\n\t// List Focus Change - passive - update details pane with newly focused element's data\n\tprivate onListFocus(e: IListEvent<ISelectOptionItem>) {\n\t\t// Skip during initial layout\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listIndex = e.indexes[0];\n\t\tconst optionIndex = this.getOptionIndex(listIndex);\n\t\tif (this._hasDetails) {\n\t\t\tthis.updateDetail(optionIndex);\n\t\t}\n\t\tthis.showOptionDescriptionHover(listIndex);\n\t}\n\n\tprivate showOptionDescriptionHover(listIndex: number): void {\n\t\tif (!this.selectBoxOptions.showOptionDescriptionHovers) {\n\t\t\treturn;\n\t\t}\n\t\tconst option = this.options[this.getOptionIndex(listIndex)];\n\t\tconst description = option?.description;\n\t\tconst target = option ? this.listRenderer.getElement(option) : undefined;\n\t\tthis._optionDescriptionHover.value = description && target\n\t\t\t? getBaseLayerHoverDelegate().showDelayedHover({\n\t\t\t\tcontent: description,\n\t\t\t\ttarget,\n\t\t\t\tposition: { hoverPosition: HoverPosition.RIGHT },\n\t\t\t}, { groupId: 'select-box-option-description' })\n\t\t\t: undefined;\n\t}\n\n\tprivate updateDetail(selectedIndex: number): void {\n\t\t// Reset\n\t\tthis._selectionDetailsDisposables.clear();\n\t\tthis.selectionDetailsPane.textContent = '';\n\n\t\tconst option = this.options[selectedIndex];\n\t\tconst description = option?.description ?? '';\n\t\tconst descriptionIsMarkdown = option?.descriptionIsMarkdown ?? false;\n\n\t\tif (description) {\n\t\t\tif (descriptionIsMarkdown) {\n\t\t\t\tconst actionHandler = option.descriptionMarkdownActionHandler;\n\t\t\t\tconst result = this._selectionDetailsDisposables.add(this.renderDescriptionMarkdown(description, actionHandler));\n\t\t\t\tthis.selectionDetailsPane.appendChild(result.element);\n\t\t\t} else {\n\t\t\t\tthis.selectionDetailsPane.textContent = description;\n\t\t\t}\n\t\t\tthis.selectionDetailsPane.style.display = 'block';\n\t\t} else {\n\t\t\tthis.selectionDetailsPane.style.display = 'none';\n\t\t}\n\n\t\t// Avoid recursion\n\t\tthis._skipLayout = true;\n\t\tthis.contextViewProvider.layout();\n\t\tthis._skipLayout = false;\n\t}\n\n\t// List keyboard controller\n\n\t// List exit - active - hide ContextView dropdown, reset selection, return focus to parent select\n\tprivate onEscape(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\t// Reset selection to value when opened\n\t\tthis.cancelSelectDropDown(true);\n\t}\n\n\t// List exit - active - hide ContextView dropdown, return focus to parent select, fire onDidSelect if change\n\tprivate onEnter(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\t// Ignore if current selection is disabled (e.g. separator)\n\t\tif (this.options[this.selected]?.isDisabled) {\n\t\t\tthis.hideSelectDropDown(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// Only fire if selection change\n\t\tif (this.selected !== this._currentSelection) {\n\t\t\tthis._currentSelection = this.selected;\n\t\t\tthis._onDidSelect.fire({\n\t\t\t\tindex: this.selectElement.selectedIndex,\n\t\t\t\tselected: this.options[this.selected].text\n\t\t\t});\n\t\t\tif (!!this.options[this.selected] && !!this.options[this.selected].text) {\n\t\t\t\tthis.setTitle(this.options[this.selected].text);\n\t\t\t}\n\t\t}\n\n\t\tthis.hideSelectDropDown(true);\n\t}\n\n\t// List navigation - have to handle disabled options (jump over)\n\tprivate onDownArrow(e: StandardKeyboardEvent): void {\n\t\tif (this.selected < this.options.length - 1) {\n\t\t\tdom.EventHelper.stop(e, true);\n\n\t\t\t// Skip over all contiguous disabled options\n\t\t\tlet next = this.selected + 1;\n\t\t\twhile (next < this.options.length && this.options[next].isDisabled) {\n\t\t\t\tnext++;\n\t\t\t}\n\n\t\t\tif (next >= this.options.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selected = next;\n\n\t\t\t// Set focus/selection - only fire event when closing drop-down or on blur\n\t\t\tthis.select(this.selected);\n\t\t\tthis.focusOption(this.selected);\n\t\t}\n\t}\n\n\tprivate onUpArrow(e: StandardKeyboardEvent): void {\n\t\tif (this.selected > 0) {\n\t\t\tdom.EventHelper.stop(e, true);\n\n\t\t\t// Skip over all contiguous disabled options\n\t\t\tlet prev = this.selected - 1;\n\t\t\twhile (prev >= 0 && this.options[prev].isDisabled) {\n\t\t\t\tprev--;\n\t\t\t}\n\n\t\t\tif (prev < 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selected = prev;\n\n\t\t\t// Set focus/selection - only fire event when closing drop-down or on blur\n\t\t\tthis.select(this.selected);\n\t\t\tthis.focusOption(this.selected);\n\t\t}\n\t}\n\n\tprivate onPageUp(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tthis.selectList.focusPreviousPage();\n\n\t\t// Allow scrolling to settle\n\t\tsetTimeout(() => {\n\t\t\tlet candidate = this.selectList.getFocus()[0];\n\n\t\t\t// Shift selection up if we land on a disabled option\n\t\t\twhile (candidate > 0 && this.options[this.getOptionIndex(candidate)].isDisabled) {\n\t\t\t\tcandidate--;\n\t\t\t}\n\t\t\tconst optionIndex = this.getOptionIndex(candidate);\n\t\t\tif (this.options[optionIndex].isDisabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selected = optionIndex;\n\t\t\tthis.selectList.reveal(candidate);\n\t\t\tthis.selectList.setFocus([candidate]);\n\t\t\tthis.select(this.selected);\n\t\t}, 1);\n\t}\n\n\tprivate onPageDown(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tthis.selectList.focusNextPage();\n\n\t\t// Allow scrolling to settle\n\t\tsetTimeout(() => {\n\t\t\tlet candidate = this.selectList.getFocus()[0];\n\n\t\t\t// Shift selection down if we land on a disabled option\n\t\t\twhile (candidate < this.selectList.length - 1 && this.options[this.getOptionIndex(candidate)].isDisabled) {\n\t\t\t\tcandidate++;\n\t\t\t}\n\t\t\tconst optionIndex = this.getOptionIndex(candidate);\n\t\t\tif (this.options[optionIndex].isDisabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selected = optionIndex;\n\t\t\tthis.selectList.reveal(candidate);\n\t\t\tthis.selectList.setFocus([candidate]);\n\t\t\tthis.select(this.selected);\n\t\t}, 1);\n\t}\n\n\tprivate onHome(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tif (this.options.length < 2) {\n\t\t\treturn;\n\t\t}\n\t\tlet candidate = 0;\n\t\twhile (candidate < this.options.length - 1 && this.options[candidate].isDisabled) {\n\t\t\tcandidate++;\n\t\t}\n\t\tif (this.options[candidate].isDisabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.selected = candidate;\n\t\tthis.focusOption(this.selected);\n\t\tthis.select(this.selected);\n\t}\n\n\tprivate onEnd(e: StandardKeyboardEvent): void {\n\t\tdom.EventHelper.stop(e);\n\n\t\tif (this.options.length < 2) {\n\t\t\treturn;\n\t\t}\n\t\tlet candidate = this.options.length - 1;\n\t\twhile (candidate > 0 && this.options[candidate].isDisabled) {\n\t\t\tcandidate--;\n\t\t}\n\t\tif (this.options[candidate].isDisabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.selected = candidate;\n\t\tthis.focusOption(this.selected);\n\t\tthis.select(this.selected);\n\t}\n\n\t// Mimic option first character navigation of native select\n\tprivate onCharacter(e: StandardKeyboardEvent): void {\n\t\tconst ch = KeyCodeUtils.toString(e.keyCode);\n\t\tlet optionIndex = -1;\n\n\t\tfor (let i = 0; i < this.options.length - 1; i++) {\n\t\t\toptionIndex = (i + this.selected + 1) % this.options.length;\n\t\t\tif (this.options[optionIndex].text.charAt(0).toUpperCase() === ch && !this.options[optionIndex].isDisabled) {\n\t\t\t\tthis.select(optionIndex);\n\t\t\t\tthis.focusOption(optionIndex);\n\t\t\t\tdom.EventHelper.stop(e);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.hideSelectDropDown(false);\n\t\tsuper.dispose();\n\t}\n}\n"]}
|
|
@@ -601,22 +601,26 @@ export class SplitView extends Disposable {
|
|
|
601
601
|
highPriorityIndexes = [size.index];
|
|
602
602
|
}
|
|
603
603
|
if (!skipLayout) {
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
604
|
+
const distribute = typeof size !== 'number' && size.type === 'distribute';
|
|
605
|
+
this.relayout([index], highPriorityIndexes, distribute);
|
|
606
|
+
if (distribute) {
|
|
607
|
+
this.distributeViewSizes();
|
|
608
|
+
}
|
|
608
609
|
}
|
|
609
610
|
}
|
|
610
611
|
finally {
|
|
611
612
|
this.state = State.Idle;
|
|
612
613
|
}
|
|
613
614
|
}
|
|
614
|
-
relayout(lowPriorityIndexes, highPriorityIndexes) {
|
|
615
|
+
relayout(lowPriorityIndexes, highPriorityIndexes, skipLayout = false) {
|
|
615
616
|
const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
|
|
616
617
|
this.resize(this.viewItems.length - 1, this.size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);
|
|
617
618
|
this.distributeEmptySpace();
|
|
618
|
-
this.
|
|
619
|
-
this.
|
|
619
|
+
// The caller lays the views out again, unless a view depends on this intermediate layout.
|
|
620
|
+
if (!skipLayout || !this.viewItems.every(item => item.view.pathIndependentLayout)) {
|
|
621
|
+
this.layoutViews();
|
|
622
|
+
this.saveProportions();
|
|
623
|
+
}
|
|
620
624
|
}
|
|
621
625
|
resize(index, delta, sizes = this.viewItems.map(i => i.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) {
|
|
622
626
|
if (index < 0 || index >= this.viewItems.length) {
|