{"version":3,"file":"static/js/4930_df1518794305e0a09365.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxNative.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js"],"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 *--------------------------------------------------------------------------------------------*/\nimport { GlobalPointerMoveMonitor } from '../../globalPointerMoveMonitor.js';\nimport { Widget } from '../widget.js';\nimport { TimeoutTimer } from '../../../common/async.js';\nimport { ThemeIcon } from '../../../common/themables.js';\nimport * as dom from '../../dom.js';\n/**\n * The arrow image size.\n */\nexport const ARROW_IMG_SIZE = 11;\nexport class ScrollbarArrow extends Widget {\n constructor(opts) {\n super();\n this._onActivate = opts.onActivate;\n this.bgDomNode = document.createElement('div');\n this.bgDomNode.className = 'arrow-background';\n this.bgDomNode.style.position = 'absolute';\n this.bgDomNode.style.width = opts.bgWidth + 'px';\n this.bgDomNode.style.height = opts.bgHeight + 'px';\n if (typeof opts.top !== 'undefined') {\n this.bgDomNode.style.top = '0px';\n }\n if (typeof opts.left !== 'undefined') {\n this.bgDomNode.style.left = '0px';\n }\n if (typeof opts.bottom !== 'undefined') {\n this.bgDomNode.style.bottom = '0px';\n }\n if (typeof opts.right !== 'undefined') {\n this.bgDomNode.style.right = '0px';\n }\n this.domNode = document.createElement('div');\n this.domNode.className = opts.className;\n this.domNode.classList.add(...ThemeIcon.asClassNameArray(opts.icon));\n this.domNode.style.position = 'absolute';\n this.domNode.style.width = ARROW_IMG_SIZE + 'px';\n this.domNode.style.height = ARROW_IMG_SIZE + 'px';\n if (typeof opts.top !== 'undefined') {\n this.domNode.style.top = opts.top + 'px';\n }\n if (typeof opts.left !== 'undefined') {\n this.domNode.style.left = opts.left + 'px';\n }\n if (typeof opts.bottom !== 'undefined') {\n this.domNode.style.bottom = opts.bottom + 'px';\n }\n if (typeof opts.right !== 'undefined') {\n this.domNode.style.right = opts.right + 'px';\n }\n this._pointerMoveMonitor = this._register(new GlobalPointerMoveMonitor());\n this._register(dom.addStandardDisposableListener(this.bgDomNode, dom.EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e)));\n this._register(dom.addStandardDisposableListener(this.domNode, dom.EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e)));\n this._pointerdownRepeatTimer = this._register(new dom.WindowIntervalTimer());\n this._pointerdownScheduleRepeatTimer = this._register(new TimeoutTimer());\n }\n _arrowPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const scheduleRepeater = () => {\n this._pointerdownRepeatTimer.cancelAndSet(() => this._onActivate(), 1000 / 24, dom.getWindow(e));\n };\n this._onActivate();\n this._pointerdownRepeatTimer.cancel();\n this._pointerdownScheduleRepeatTimer.cancelAndSet(scheduleRepeater, 200);\n this._pointerMoveMonitor.startMonitoring(e.target, e.pointerId, e.buttons, (pointerMoveData) => { }, () => {\n this._pointerdownRepeatTimer.cancel();\n this._pointerdownScheduleRepeatTimer.cancel();\n });\n e.preventDefault();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { TimeoutTimer } from '../../../common/async.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nexport class ScrollbarVisibilityController extends Disposable {\n constructor(visibility, visibleClassName, invisibleClassName) {\n super();\n this._visibility = visibility;\n this._visibleClassName = visibleClassName;\n this._invisibleClassName = invisibleClassName;\n this._domNode = null;\n this._isVisible = false;\n this._isNeeded = false;\n this._rawShouldBeVisible = false;\n this._shouldBeVisible = false;\n this._revealTimer = this._register(new TimeoutTimer());\n }\n setVisibility(visibility) {\n if (this._visibility !== visibility) {\n this._visibility = visibility;\n this._updateShouldBeVisible();\n }\n }\n // ----------------- Hide / Reveal\n setShouldBeVisible(rawShouldBeVisible) {\n this._rawShouldBeVisible = rawShouldBeVisible;\n this._updateShouldBeVisible();\n }\n _applyVisibilitySetting() {\n if (this._visibility === 2 /* ScrollbarVisibility.Hidden */) {\n return false;\n }\n if (this._visibility === 3 /* ScrollbarVisibility.Visible */) {\n return true;\n }\n return this._rawShouldBeVisible;\n }\n _updateShouldBeVisible() {\n const shouldBeVisible = this._applyVisibilitySetting();\n if (this._shouldBeVisible !== shouldBeVisible) {\n this._shouldBeVisible = shouldBeVisible;\n this.ensureVisibility();\n }\n }\n setIsNeeded(isNeeded) {\n if (this._isNeeded !== isNeeded) {\n this._isNeeded = isNeeded;\n this.ensureVisibility();\n }\n }\n setDomNode(domNode) {\n this._domNode = domNode;\n this._domNode.setClassName(this._invisibleClassName);\n // Now that the flags & the dom node are in a consistent state, ensure the Hidden/Visible configuration\n this.setShouldBeVisible(false);\n }\n ensureVisibility() {\n if (!this._isNeeded) {\n // Nothing to be rendered\n this._hide(false);\n return;\n }\n if (this._shouldBeVisible) {\n this._reveal();\n }\n else {\n this._hide(true);\n }\n }\n _reveal() {\n if (this._isVisible) {\n return;\n }\n this._isVisible = true;\n // The CSS animation doesn't play otherwise\n this._revealTimer.setIfNotSet(() => {\n var _a;\n (_a = this._domNode) === null || _a === void 0 ? void 0 : _a.setClassName(this._visibleClassName);\n }, 0);\n }\n _hide(withFadeAway) {\n var _a;\n this._revealTimer.cancel();\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n (_a = this._domNode) === null || _a === void 0 ? void 0 : _a.setClassName(this._invisibleClassName + (withFadeAway ? ' fade' : ''));\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { createFastDomNode } from '../../fastDomNode.js';\nimport { GlobalPointerMoveMonitor } from '../../globalPointerMoveMonitor.js';\nimport { ScrollbarArrow } from './scrollbarArrow.js';\nimport { ScrollbarVisibilityController } from './scrollbarVisibilityController.js';\nimport { Widget } from '../widget.js';\nimport * as platform from '../../../common/platform.js';\n/**\n * The orthogonal distance to the slider at which dragging \"resets\". This implements \"snapping\"\n */\nconst POINTER_DRAG_RESET_DISTANCE = 140;\nexport class AbstractScrollbar extends Widget {\n constructor(opts) {\n super();\n this._lazyRender = opts.lazyRender;\n this._host = opts.host;\n this._scrollable = opts.scrollable;\n this._scrollByPage = opts.scrollByPage;\n this._scrollbarState = opts.scrollbarState;\n this._visibilityController = this._register(new ScrollbarVisibilityController(opts.visibility, 'visible scrollbar ' + opts.extraScrollbarClassName, 'invisible scrollbar ' + opts.extraScrollbarClassName));\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._pointerMoveMonitor = this._register(new GlobalPointerMoveMonitor());\n this._shouldRender = true;\n this.domNode = createFastDomNode(document.createElement('div'));\n this.domNode.setAttribute('role', 'presentation');\n this.domNode.setAttribute('aria-hidden', 'true');\n this._visibilityController.setDomNode(this.domNode);\n this.domNode.setPosition('absolute');\n this._register(dom.addDisposableListener(this.domNode.domNode, dom.EventType.POINTER_DOWN, (e) => this._domNodePointerDown(e)));\n }\n // ----------------- creation\n /**\n * Creates the dom node for an arrow & adds it to the container\n */\n _createArrow(opts) {\n const arrow = this._register(new ScrollbarArrow(opts));\n this.domNode.domNode.appendChild(arrow.bgDomNode);\n this.domNode.domNode.appendChild(arrow.domNode);\n }\n /**\n * Creates the slider dom node, adds it to the container & hooks up the events\n */\n _createSlider(top, left, width, height) {\n this.slider = createFastDomNode(document.createElement('div'));\n this.slider.setClassName('slider');\n this.slider.setPosition('absolute');\n this.slider.setTop(top);\n this.slider.setLeft(left);\n if (typeof width === 'number') {\n this.slider.setWidth(width);\n }\n if (typeof height === 'number') {\n this.slider.setHeight(height);\n }\n this.slider.setLayerHinting(true);\n this.slider.setContain('strict');\n this.domNode.domNode.appendChild(this.slider.domNode);\n this._register(dom.addDisposableListener(this.slider.domNode, dom.EventType.POINTER_DOWN, (e) => {\n if (e.button === 0) {\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }));\n this.onclick(this.slider.domNode, e => {\n if (e.leftButton) {\n e.stopPropagation();\n }\n });\n }\n // ----------------- Update state\n _onElementSize(visibleSize) {\n if (this._scrollbarState.setVisibleSize(visibleSize)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n _onElementScrollSize(elementScrollSize) {\n if (this._scrollbarState.setScrollSize(elementScrollSize)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n _onElementScrollPosition(elementScrollPosition) {\n if (this._scrollbarState.setScrollPosition(elementScrollPosition)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n // ----------------- rendering\n beginReveal() {\n this._visibilityController.setShouldBeVisible(true);\n }\n beginHide() {\n this._visibilityController.setShouldBeVisible(false);\n }\n render() {\n if (!this._shouldRender) {\n return;\n }\n this._shouldRender = false;\n this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize());\n this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition());\n }\n // ----------------- DOM events\n _domNodePointerDown(e) {\n if (e.target !== this.domNode.domNode) {\n return;\n }\n this._onPointerDown(e);\n }\n delegatePointerDown(e) {\n const domTop = this.domNode.domNode.getClientRects()[0].top;\n const sliderStart = domTop + this._scrollbarState.getSliderPosition();\n const sliderStop = domTop + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize();\n const pointerPos = this._sliderPointerPosition(e);\n if (sliderStart <= pointerPos && pointerPos <= sliderStop) {\n // Act as if it was a pointer down on the slider\n if (e.button === 0) {\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }\n else {\n // Act as if it was a pointer down on the scrollbar\n this._onPointerDown(e);\n }\n }\n _onPointerDown(e) {\n let offsetX;\n let offsetY;\n if (e.target === this.domNode.domNode && typeof e.offsetX === 'number' && typeof e.offsetY === 'number') {\n offsetX = e.offsetX;\n offsetY = e.offsetY;\n }\n else {\n const domNodePosition = dom.getDomNodePagePosition(this.domNode.domNode);\n offsetX = e.pageX - domNodePosition.left;\n offsetY = e.pageY - domNodePosition.top;\n }\n const offset = this._pointerDownRelativePosition(offsetX, offsetY);\n this._setDesiredScrollPositionNow(this._scrollByPage\n ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(offset)\n : this._scrollbarState.getDesiredScrollPositionFromOffset(offset));\n if (e.button === 0) {\n // left button\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }\n _sliderPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const initialPointerPosition = this._sliderPointerPosition(e);\n const initialPointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(e);\n const initialScrollbarState = this._scrollbarState.clone();\n this.slider.toggleClassName('active', true);\n this._pointerMoveMonitor.startMonitoring(e.target, e.pointerId, e.buttons, (pointerMoveData) => {\n const pointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(pointerMoveData);\n const pointerOrthogonalDelta = Math.abs(pointerOrthogonalPosition - initialPointerOrthogonalPosition);\n if (platform.isWindows && pointerOrthogonalDelta > POINTER_DRAG_RESET_DISTANCE) {\n // The pointer has wondered away from the scrollbar => reset dragging\n this._setDesiredScrollPositionNow(initialScrollbarState.getScrollPosition());\n return;\n }\n const pointerPosition = this._sliderPointerPosition(pointerMoveData);\n const pointerDelta = pointerPosition - initialPointerPosition;\n this._setDesiredScrollPositionNow(initialScrollbarState.getDesiredScrollPositionFromDelta(pointerDelta));\n }, () => {\n this.slider.toggleClassName('active', false);\n this._host.onDragEnd();\n });\n this._host.onDragStart();\n }\n _setDesiredScrollPositionNow(_desiredScrollPosition) {\n const desiredScrollPosition = {};\n this.writeScrollPosition(desiredScrollPosition, _desiredScrollPosition);\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\n }\n updateScrollbarSize(scrollbarSize) {\n this._updateScrollbarSize(scrollbarSize);\n this._scrollbarState.setScrollbarSize(scrollbarSize);\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n isNeeded() {\n return this._scrollbarState.isNeeded();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { StandardWheelEvent } from '../../mouseEvent.js';\nimport { AbstractScrollbar } from './abstractScrollbar.js';\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\nimport { ScrollbarState } from './scrollbarState.js';\nimport { Codicon } from '../../../common/codicons.js';\nexport class HorizontalScrollbar extends AbstractScrollbar {\n constructor(scrollable, options, host) {\n const scrollDimensions = scrollable.getScrollDimensions();\n const scrollPosition = scrollable.getCurrentScrollPosition();\n super({\n lazyRender: options.lazyRender,\n host: host,\n scrollbarState: new ScrollbarState((options.horizontalHasArrows ? options.arrowSize : 0), (options.horizontal === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.horizontalScrollbarSize), (options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize), scrollDimensions.width, scrollDimensions.scrollWidth, scrollPosition.scrollLeft),\n visibility: options.horizontal,\n extraScrollbarClassName: 'horizontal',\n scrollable: scrollable,\n scrollByPage: options.scrollByPage\n });\n if (options.horizontalHasArrows) {\n const arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\n const scrollbarDelta = (options.horizontalScrollbarSize - ARROW_IMG_SIZE) / 2;\n this._createArrow({\n className: 'scra',\n icon: Codicon.scrollbarButtonLeft,\n top: scrollbarDelta,\n left: arrowDelta,\n bottom: undefined,\n right: undefined,\n bgWidth: options.arrowSize,\n bgHeight: options.horizontalScrollbarSize,\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 1, 0)),\n });\n this._createArrow({\n className: 'scra',\n icon: Codicon.scrollbarButtonRight,\n top: scrollbarDelta,\n left: undefined,\n bottom: undefined,\n right: arrowDelta,\n bgWidth: options.arrowSize,\n bgHeight: options.horizontalScrollbarSize,\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, -1, 0)),\n });\n }\n this._createSlider(Math.floor((options.horizontalScrollbarSize - options.horizontalSliderSize) / 2), 0, undefined, options.horizontalSliderSize);\n }\n _updateSlider(sliderSize, sliderPosition) {\n this.slider.setWidth(sliderSize);\n this.slider.setLeft(sliderPosition);\n }\n _renderDomNode(largeSize, smallSize) {\n this.domNode.setWidth(largeSize);\n this.domNode.setHeight(smallSize);\n this.domNode.setLeft(0);\n this.domNode.setBottom(0);\n }\n onDidScroll(e) {\n this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender;\n this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender;\n this._shouldRender = this._onElementSize(e.width) || this._shouldRender;\n return this._shouldRender;\n }\n _pointerDownRelativePosition(offsetX, offsetY) {\n return offsetX;\n }\n _sliderPointerPosition(e) {\n return e.pageX;\n }\n _sliderOrthogonalPointerPosition(e) {\n return e.pageY;\n }\n _updateScrollbarSize(size) {\n this.slider.setHeight(size);\n }\n writeScrollPosition(target, scrollPosition) {\n target.scrollLeft = scrollPosition;\n }\n updateOptions(options) {\n this.updateScrollbarSize(options.horizontal === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.horizontalScrollbarSize);\n this._scrollbarState.setOppositeScrollbarSize(options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize);\n this._visibilityController.setVisibility(options.horizontal);\n this._scrollByPage = options.scrollByPage;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { StandardWheelEvent } from '../../mouseEvent.js';\nimport { AbstractScrollbar } from './abstractScrollbar.js';\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\nimport { ScrollbarState } from './scrollbarState.js';\nimport { Codicon } from '../../../common/codicons.js';\nexport class VerticalScrollbar extends AbstractScrollbar {\n constructor(scrollable, options, host) {\n const scrollDimensions = scrollable.getScrollDimensions();\n const scrollPosition = scrollable.getCurrentScrollPosition();\n super({\n lazyRender: options.lazyRender,\n host: host,\n scrollbarState: new ScrollbarState((options.verticalHasArrows ? options.arrowSize : 0), (options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize), \n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\n 0, scrollDimensions.height, scrollDimensions.scrollHeight, scrollPosition.scrollTop),\n visibility: options.vertical,\n extraScrollbarClassName: 'vertical',\n scrollable: scrollable,\n scrollByPage: options.scrollByPage\n });\n if (options.verticalHasArrows) {\n const arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\n const scrollbarDelta = (options.verticalScrollbarSize - ARROW_IMG_SIZE) / 2;\n this._createArrow({\n className: 'scra',\n icon: Codicon.scrollbarButtonUp,\n top: arrowDelta,\n left: scrollbarDelta,\n bottom: undefined,\n right: undefined,\n bgWidth: options.verticalScrollbarSize,\n bgHeight: options.arrowSize,\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, 1)),\n });\n this._createArrow({\n className: 'scra',\n icon: Codicon.scrollbarButtonDown,\n top: undefined,\n left: scrollbarDelta,\n bottom: arrowDelta,\n right: undefined,\n bgWidth: options.verticalScrollbarSize,\n bgHeight: options.arrowSize,\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, -1)),\n });\n }\n this._createSlider(0, Math.floor((options.verticalScrollbarSize - options.verticalSliderSize) / 2), options.verticalSliderSize, undefined);\n }\n _updateSlider(sliderSize, sliderPosition) {\n this.slider.setHeight(sliderSize);\n this.slider.setTop(sliderPosition);\n }\n _renderDomNode(largeSize, smallSize) {\n this.domNode.setWidth(smallSize);\n this.domNode.setHeight(largeSize);\n this.domNode.setRight(0);\n this.domNode.setTop(0);\n }\n onDidScroll(e) {\n this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender;\n this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender;\n this._shouldRender = this._onElementSize(e.height) || this._shouldRender;\n return this._shouldRender;\n }\n _pointerDownRelativePosition(offsetX, offsetY) {\n return offsetY;\n }\n _sliderPointerPosition(e) {\n return e.pageY;\n }\n _sliderOrthogonalPointerPosition(e) {\n return e.pageX;\n }\n _updateScrollbarSize(size) {\n this.slider.setWidth(size);\n }\n writeScrollPosition(target, scrollPosition) {\n target.scrollTop = scrollPosition;\n }\n updateOptions(options) {\n this.updateScrollbarSize(options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize);\n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\n this._scrollbarState.setOppositeScrollbarSize(0);\n this._visibilityController.setVisibility(options.vertical);\n this._scrollByPage = options.scrollByPage;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getZoomFactor, isChrome } from '../../browser.js';\nimport * as dom from '../../dom.js';\nimport { createFastDomNode } from '../../fastDomNode.js';\nimport { StandardWheelEvent } from '../../mouseEvent.js';\nimport { HorizontalScrollbar } from './horizontalScrollbar.js';\nimport { VerticalScrollbar } from './verticalScrollbar.js';\nimport { Widget } from '../widget.js';\nimport { TimeoutTimer } from '../../../common/async.js';\nimport { Emitter } from '../../../common/event.js';\nimport { dispose } from '../../../common/lifecycle.js';\nimport * as platform from '../../../common/platform.js';\nimport { Scrollable } from '../../../common/scrollable.js';\nimport './media/scrollbars.css';\nconst HIDE_TIMEOUT = 500;\nconst SCROLL_WHEEL_SENSITIVITY = 50;\nconst SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED = true;\nclass MouseWheelClassifierItem {\n constructor(timestamp, deltaX, deltaY) {\n this.timestamp = timestamp;\n this.deltaX = deltaX;\n this.deltaY = deltaY;\n this.score = 0;\n }\n}\nexport class MouseWheelClassifier {\n constructor() {\n this._capacity = 5;\n this._memory = [];\n this._front = -1;\n this._rear = -1;\n }\n isPhysicalMouseWheel() {\n if (this._front === -1 && this._rear === -1) {\n // no elements\n return false;\n }\n // 0.5 * last + 0.25 * 2nd last + 0.125 * 3rd last + ...\n let remainingInfluence = 1;\n let score = 0;\n let iteration = 1;\n let index = this._rear;\n do {\n const influence = (index === this._front ? remainingInfluence : Math.pow(2, -iteration));\n remainingInfluence -= influence;\n score += this._memory[index].score * influence;\n if (index === this._front) {\n break;\n }\n index = (this._capacity + index - 1) % this._capacity;\n iteration++;\n } while (true);\n return (score <= 0.5);\n }\n acceptStandardWheelEvent(e) {\n if (isChrome) {\n const targetWindow = dom.getWindow(e.browserEvent);\n const pageZoomFactor = getZoomFactor(targetWindow);\n // On Chrome, the incoming delta events are multiplied with the OS zoom factor.\n // The OS zoom factor can be reverse engineered by using the device pixel ratio and the configured zoom factor into account.\n this.accept(Date.now(), e.deltaX * pageZoomFactor, e.deltaY * pageZoomFactor);\n }\n else {\n this.accept(Date.now(), e.deltaX, e.deltaY);\n }\n }\n accept(timestamp, deltaX, deltaY) {\n let previousItem = null;\n const item = new MouseWheelClassifierItem(timestamp, deltaX, deltaY);\n if (this._front === -1 && this._rear === -1) {\n this._memory[0] = item;\n this._front = 0;\n this._rear = 0;\n }\n else {\n previousItem = this._memory[this._rear];\n this._rear = (this._rear + 1) % this._capacity;\n if (this._rear === this._front) {\n // Drop oldest\n this._front = (this._front + 1) % this._capacity;\n }\n this._memory[this._rear] = item;\n }\n item.score = this._computeScore(item, previousItem);\n }\n /**\n * A score between 0 and 1 for `item`.\n * - a score towards 0 indicates that the source appears to be a physical mouse wheel\n * - a score towards 1 indicates that the source appears to be a touchpad or magic mouse, etc.\n */\n _computeScore(item, previousItem) {\n if (Math.abs(item.deltaX) > 0 && Math.abs(item.deltaY) > 0) {\n // both axes exercised => definitely not a physical mouse wheel\n return 1;\n }\n let score = 0.5;\n if (!this._isAlmostInt(item.deltaX) || !this._isAlmostInt(item.deltaY)) {\n // non-integer deltas => indicator that this is not a physical mouse wheel\n score += 0.25;\n }\n // Non-accelerating scroll => indicator that this is a physical mouse wheel\n // These can be identified by seeing whether they are the module of one another.\n if (previousItem) {\n const absDeltaX = Math.abs(item.deltaX);\n const absDeltaY = Math.abs(item.deltaY);\n const absPreviousDeltaX = Math.abs(previousItem.deltaX);\n const absPreviousDeltaY = Math.abs(previousItem.deltaY);\n // Min 1 to avoid division by zero, module 1 will still be 0.\n const minDeltaX = Math.max(Math.min(absDeltaX, absPreviousDeltaX), 1);\n const minDeltaY = Math.max(Math.min(absDeltaY, absPreviousDeltaY), 1);\n const maxDeltaX = Math.max(absDeltaX, absPreviousDeltaX);\n const maxDeltaY = Math.max(absDeltaY, absPreviousDeltaY);\n const isSameModulo = (maxDeltaX % minDeltaX === 0 && maxDeltaY % minDeltaY === 0);\n if (isSameModulo) {\n score -= 0.5;\n }\n }\n return Math.min(Math.max(score, 0), 1);\n }\n _isAlmostInt(value) {\n const delta = Math.abs(Math.round(value) - value);\n return (delta < 0.01);\n }\n}\nMouseWheelClassifier.INSTANCE = new MouseWheelClassifier();\nexport class AbstractScrollableElement extends Widget {\n get options() {\n return this._options;\n }\n constructor(element, options, scrollable) {\n super();\n this._onScroll = this._register(new Emitter());\n this.onScroll = this._onScroll.event;\n this._onWillScroll = this._register(new Emitter());\n element.style.overflow = 'hidden';\n this._options = resolveOptions(options);\n this._scrollable = scrollable;\n this._register(this._scrollable.onScroll((e) => {\n this._onWillScroll.fire(e);\n this._onDidScroll(e);\n this._onScroll.fire(e);\n }));\n const scrollbarHost = {\n onMouseWheel: (mouseWheelEvent) => this._onMouseWheel(mouseWheelEvent),\n onDragStart: () => this._onDragStart(),\n onDragEnd: () => this._onDragEnd(),\n };\n this._verticalScrollbar = this._register(new VerticalScrollbar(this._scrollable, this._options, scrollbarHost));\n this._horizontalScrollbar = this._register(new HorizontalScrollbar(this._scrollable, this._options, scrollbarHost));\n this._domNode = document.createElement('div');\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\n this._domNode.setAttribute('role', 'presentation');\n this._domNode.style.position = 'relative';\n this._domNode.style.overflow = 'hidden';\n this._domNode.appendChild(element);\n this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode);\n this._domNode.appendChild(this._verticalScrollbar.domNode.domNode);\n if (this._options.useShadows) {\n this._leftShadowDomNode = createFastDomNode(document.createElement('div'));\n this._leftShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._leftShadowDomNode.domNode);\n this._topShadowDomNode = createFastDomNode(document.createElement('div'));\n this._topShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._topShadowDomNode.domNode);\n this._topLeftShadowDomNode = createFastDomNode(document.createElement('div'));\n this._topLeftShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._topLeftShadowDomNode.domNode);\n }\n else {\n this._leftShadowDomNode = null;\n this._topShadowDomNode = null;\n this._topLeftShadowDomNode = null;\n }\n this._listenOnDomNode = this._options.listenOnDomNode || this._domNode;\n this._mouseWheelToDispose = [];\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\n this.onmouseover(this._listenOnDomNode, (e) => this._onMouseOver(e));\n this.onmouseleave(this._listenOnDomNode, (e) => this._onMouseLeave(e));\n this._hideTimeout = this._register(new TimeoutTimer());\n this._isDragging = false;\n this._mouseIsOver = false;\n this._shouldRender = true;\n this._revealOnScroll = true;\n }\n dispose() {\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\n super.dispose();\n }\n /**\n * Get the generated 'scrollable' dom node\n */\n getDomNode() {\n return this._domNode;\n }\n getOverviewRulerLayoutInfo() {\n return {\n parent: this._domNode,\n insertBefore: this._verticalScrollbar.domNode.domNode,\n };\n }\n /**\n * Delegate a pointer down event to the vertical scrollbar.\n * This is to help with clicking somewhere else and having the scrollbar react.\n */\n delegateVerticalScrollbarPointerDown(browserEvent) {\n this._verticalScrollbar.delegatePointerDown(browserEvent);\n }\n getScrollDimensions() {\n return this._scrollable.getScrollDimensions();\n }\n setScrollDimensions(dimensions) {\n this._scrollable.setScrollDimensions(dimensions, false);\n }\n /**\n * Update the class name of the scrollable element.\n */\n updateClassName(newClassName) {\n this._options.className = newClassName;\n // Defaults are different on Macs\n if (platform.isMacintosh) {\n this._options.className += ' mac';\n }\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\n }\n /**\n * Update configuration options for the scrollbar.\n */\n updateOptions(newOptions) {\n if (typeof newOptions.handleMouseWheel !== 'undefined') {\n this._options.handleMouseWheel = newOptions.handleMouseWheel;\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\n }\n if (typeof newOptions.mouseWheelScrollSensitivity !== 'undefined') {\n this._options.mouseWheelScrollSensitivity = newOptions.mouseWheelScrollSensitivity;\n }\n if (typeof newOptions.fastScrollSensitivity !== 'undefined') {\n this._options.fastScrollSensitivity = newOptions.fastScrollSensitivity;\n }\n if (typeof newOptions.scrollPredominantAxis !== 'undefined') {\n this._options.scrollPredominantAxis = newOptions.scrollPredominantAxis;\n }\n if (typeof newOptions.horizontal !== 'undefined') {\n this._options.horizontal = newOptions.horizontal;\n }\n if (typeof newOptions.vertical !== 'undefined') {\n this._options.vertical = newOptions.vertical;\n }\n if (typeof newOptions.horizontalScrollbarSize !== 'undefined') {\n this._options.horizontalScrollbarSize = newOptions.horizontalScrollbarSize;\n }\n if (typeof newOptions.verticalScrollbarSize !== 'undefined') {\n this._options.verticalScrollbarSize = newOptions.verticalScrollbarSize;\n }\n if (typeof newOptions.scrollByPage !== 'undefined') {\n this._options.scrollByPage = newOptions.scrollByPage;\n }\n this._horizontalScrollbar.updateOptions(this._options);\n this._verticalScrollbar.updateOptions(this._options);\n if (!this._options.lazyRender) {\n this._render();\n }\n }\n delegateScrollFromMouseWheelEvent(browserEvent) {\n this._onMouseWheel(new StandardWheelEvent(browserEvent));\n }\n // -------------------- mouse wheel scrolling --------------------\n _setListeningToMouseWheel(shouldListen) {\n const isListening = (this._mouseWheelToDispose.length > 0);\n if (isListening === shouldListen) {\n // No change\n return;\n }\n // Stop listening (if necessary)\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\n // Start listening (if necessary)\n if (shouldListen) {\n const onMouseWheel = (browserEvent) => {\n this._onMouseWheel(new StandardWheelEvent(browserEvent));\n };\n this._mouseWheelToDispose.push(dom.addDisposableListener(this._listenOnDomNode, dom.EventType.MOUSE_WHEEL, onMouseWheel, { passive: false }));\n }\n }\n _onMouseWheel(e) {\n var _a;\n if ((_a = e.browserEvent) === null || _a === void 0 ? void 0 : _a.defaultPrevented) {\n return;\n }\n const classifier = MouseWheelClassifier.INSTANCE;\n if (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED) {\n classifier.acceptStandardWheelEvent(e);\n }\n // useful for creating unit tests:\n // console.log(`${Date.now()}, ${e.deltaY}, ${e.deltaX}`);\n let didScroll = false;\n if (e.deltaY || e.deltaX) {\n let deltaY = e.deltaY * this._options.mouseWheelScrollSensitivity;\n let deltaX = e.deltaX * this._options.mouseWheelScrollSensitivity;\n if (this._options.scrollPredominantAxis) {\n if (this._options.scrollYToX && deltaX + deltaY === 0) {\n // when configured to map Y to X and we both see\n // no dominant axis and X and Y are competing with\n // identical values into opposite directions, we\n // ignore the delta as we cannot make a decision then\n deltaX = deltaY = 0;\n }\n else if (Math.abs(deltaY) >= Math.abs(deltaX)) {\n deltaX = 0;\n }\n else {\n deltaY = 0;\n }\n }\n if (this._options.flipAxes) {\n [deltaY, deltaX] = [deltaX, deltaY];\n }\n // Convert vertical scrolling to horizontal if shift is held, this\n // is handled at a higher level on Mac\n const shiftConvert = !platform.isMacintosh && e.browserEvent && e.browserEvent.shiftKey;\n if ((this._options.scrollYToX || shiftConvert) && !deltaX) {\n deltaX = deltaY;\n deltaY = 0;\n }\n if (e.browserEvent && e.browserEvent.altKey) {\n // fastScrolling\n deltaX = deltaX * this._options.fastScrollSensitivity;\n deltaY = deltaY * this._options.fastScrollSensitivity;\n }\n const futureScrollPosition = this._scrollable.getFutureScrollPosition();\n let desiredScrollPosition = {};\n if (deltaY) {\n const deltaScrollTop = SCROLL_WHEEL_SENSITIVITY * deltaY;\n // Here we convert values such as -0.3 to -1 or 0.3 to 1, otherwise low speed scrolling will never scroll\n const desiredScrollTop = futureScrollPosition.scrollTop - (deltaScrollTop < 0 ? Math.floor(deltaScrollTop) : Math.ceil(deltaScrollTop));\n this._verticalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollTop);\n }\n if (deltaX) {\n const deltaScrollLeft = SCROLL_WHEEL_SENSITIVITY * deltaX;\n // Here we convert values such as -0.3 to -1 or 0.3 to 1, otherwise low speed scrolling will never scroll\n const desiredScrollLeft = futureScrollPosition.scrollLeft - (deltaScrollLeft < 0 ? Math.floor(deltaScrollLeft) : Math.ceil(deltaScrollLeft));\n this._horizontalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollLeft);\n }\n // Check that we are scrolling towards a location which is valid\n desiredScrollPosition = this._scrollable.validateScrollPosition(desiredScrollPosition);\n if (futureScrollPosition.scrollLeft !== desiredScrollPosition.scrollLeft || futureScrollPosition.scrollTop !== desiredScrollPosition.scrollTop) {\n const canPerformSmoothScroll = (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED\n && this._options.mouseWheelSmoothScroll\n && classifier.isPhysicalMouseWheel());\n if (canPerformSmoothScroll) {\n this._scrollable.setScrollPositionSmooth(desiredScrollPosition);\n }\n else {\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\n }\n didScroll = true;\n }\n }\n let consumeMouseWheel = didScroll;\n if (!consumeMouseWheel && this._options.alwaysConsumeMouseWheel) {\n consumeMouseWheel = true;\n }\n if (!consumeMouseWheel && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded())) {\n consumeMouseWheel = true;\n }\n if (consumeMouseWheel) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n _onDidScroll(e) {\n this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender;\n this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender;\n if (this._options.useShadows) {\n this._shouldRender = true;\n }\n if (this._revealOnScroll) {\n this._reveal();\n }\n if (!this._options.lazyRender) {\n this._render();\n }\n }\n /**\n * Render / mutate the DOM now.\n * Should be used together with the ctor option `lazyRender`.\n */\n renderNow() {\n if (!this._options.lazyRender) {\n throw new Error('Please use `lazyRender` together with `renderNow`!');\n }\n this._render();\n }\n _render() {\n if (!this._shouldRender) {\n return;\n }\n this._shouldRender = false;\n this._horizontalScrollbar.render();\n this._verticalScrollbar.render();\n if (this._options.useShadows) {\n const scrollState = this._scrollable.getCurrentScrollPosition();\n const enableTop = scrollState.scrollTop > 0;\n const enableLeft = scrollState.scrollLeft > 0;\n const leftClassName = (enableLeft ? ' left' : '');\n const topClassName = (enableTop ? ' top' : '');\n const topLeftClassName = (enableLeft || enableTop ? ' top-left-corner' : '');\n this._leftShadowDomNode.setClassName(`shadow${leftClassName}`);\n this._topShadowDomNode.setClassName(`shadow${topClassName}`);\n this._topLeftShadowDomNode.setClassName(`shadow${topLeftClassName}${topClassName}${leftClassName}`);\n }\n }\n // -------------------- fade in / fade out --------------------\n _onDragStart() {\n this._isDragging = true;\n this._reveal();\n }\n _onDragEnd() {\n this._isDragging = false;\n this._hide();\n }\n _onMouseLeave(e) {\n this._mouseIsOver = false;\n this._hide();\n }\n _onMouseOver(e) {\n this._mouseIsOver = true;\n this._reveal();\n }\n _reveal() {\n this._verticalScrollbar.beginReveal();\n this._horizontalScrollbar.beginReveal();\n this._scheduleHide();\n }\n _hide() {\n if (!this._mouseIsOver && !this._isDragging) {\n this._verticalScrollbar.beginHide();\n this._horizontalScrollbar.beginHide();\n }\n }\n _scheduleHide() {\n if (!this._mouseIsOver && !this._isDragging) {\n this._hideTimeout.cancelAndSet(() => this._hide(), HIDE_TIMEOUT);\n }\n }\n}\nexport class ScrollableElement extends AbstractScrollableElement {\n constructor(element, options) {\n options = options || {};\n options.mouseWheelSmoothScroll = false;\n const scrollable = new Scrollable({\n forceIntegerValues: true,\n smoothScrollDuration: 0,\n scheduleAtNextAnimationFrame: (callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(element), callback)\n });\n super(element, options, scrollable);\n this._register(scrollable);\n }\n setScrollPosition(update) {\n this._scrollable.setScrollPositionNow(update);\n }\n}\nexport class SmoothScrollableElement extends AbstractScrollableElement {\n constructor(element, options, scrollable) {\n super(element, options, scrollable);\n }\n setScrollPosition(update) {\n if (update.reuseAnimation) {\n this._scrollable.setScrollPositionSmooth(update, update.reuseAnimation);\n }\n else {\n this._scrollable.setScrollPositionNow(update);\n }\n }\n getScrollPosition() {\n return this._scrollable.getCurrentScrollPosition();\n }\n}\nexport class DomScrollableElement extends AbstractScrollableElement {\n constructor(element, options) {\n options = options || {};\n options.mouseWheelSmoothScroll = false;\n const scrollable = new Scrollable({\n forceIntegerValues: false, // See https://github.com/microsoft/vscode/issues/139877\n smoothScrollDuration: 0,\n scheduleAtNextAnimationFrame: (callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(element), callback)\n });\n super(element, options, scrollable);\n this._register(scrollable);\n this._element = element;\n this._register(this.onScroll((e) => {\n if (e.scrollTopChanged) {\n this._element.scrollTop = e.scrollTop;\n }\n if (e.scrollLeftChanged) {\n this._element.scrollLeft = e.scrollLeft;\n }\n }));\n this.scanDomNode();\n }\n setScrollPosition(update) {\n this._scrollable.setScrollPositionNow(update);\n }\n getScrollPosition() {\n return this._scrollable.getCurrentScrollPosition();\n }\n scanDomNode() {\n // width, scrollLeft, scrollWidth, height, scrollTop, scrollHeight\n this.setScrollDimensions({\n width: this._element.clientWidth,\n scrollWidth: this._element.scrollWidth,\n height: this._element.clientHeight,\n scrollHeight: this._element.scrollHeight\n });\n this.setScrollPosition({\n scrollLeft: this._element.scrollLeft,\n scrollTop: this._element.scrollTop,\n });\n }\n}\nfunction resolveOptions(opts) {\n const result = {\n lazyRender: (typeof opts.lazyRender !== 'undefined' ? opts.lazyRender : false),\n className: (typeof opts.className !== 'undefined' ? opts.className : ''),\n useShadows: (typeof opts.useShadows !== 'undefined' ? opts.useShadows : true),\n handleMouseWheel: (typeof opts.handleMouseWheel !== 'undefined' ? opts.handleMouseWheel : true),\n flipAxes: (typeof opts.flipAxes !== 'undefined' ? opts.flipAxes : false),\n consumeMouseWheelIfScrollbarIsNeeded: (typeof opts.consumeMouseWheelIfScrollbarIsNeeded !== 'undefined' ? opts.consumeMouseWheelIfScrollbarIsNeeded : false),\n alwaysConsumeMouseWheel: (typeof opts.alwaysConsumeMouseWheel !== 'undefined' ? opts.alwaysConsumeMouseWheel : false),\n scrollYToX: (typeof opts.scrollYToX !== 'undefined' ? opts.scrollYToX : false),\n mouseWheelScrollSensitivity: (typeof opts.mouseWheelScrollSensitivity !== 'undefined' ? opts.mouseWheelScrollSensitivity : 1),\n fastScrollSensitivity: (typeof opts.fastScrollSensitivity !== 'undefined' ? opts.fastScrollSensitivity : 5),\n scrollPredominantAxis: (typeof opts.scrollPredominantAxis !== 'undefined' ? opts.scrollPredominantAxis : true),\n mouseWheelSmoothScroll: (typeof opts.mouseWheelSmoothScroll !== 'undefined' ? opts.mouseWheelSmoothScroll : true),\n arrowSize: (typeof opts.arrowSize !== 'undefined' ? opts.arrowSize : 11),\n listenOnDomNode: (typeof opts.listenOnDomNode !== 'undefined' ? opts.listenOnDomNode : null),\n horizontal: (typeof opts.horizontal !== 'undefined' ? opts.horizontal : 1 /* ScrollbarVisibility.Auto */),\n horizontalScrollbarSize: (typeof opts.horizontalScrollbarSize !== 'undefined' ? opts.horizontalScrollbarSize : 10),\n horizontalSliderSize: (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : 0),\n horizontalHasArrows: (typeof opts.horizontalHasArrows !== 'undefined' ? opts.horizontalHasArrows : false),\n vertical: (typeof opts.vertical !== 'undefined' ? opts.vertical : 1 /* ScrollbarVisibility.Auto */),\n verticalScrollbarSize: (typeof opts.verticalScrollbarSize !== 'undefined' ? opts.verticalScrollbarSize : 10),\n verticalHasArrows: (typeof opts.verticalHasArrows !== 'undefined' ? opts.verticalHasArrows : false),\n verticalSliderSize: (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : 0),\n scrollByPage: (typeof opts.scrollByPage !== 'undefined' ? opts.scrollByPage : false)\n };\n result.horizontalSliderSize = (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : result.horizontalScrollbarSize);\n result.verticalSliderSize = (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : result.verticalScrollbarSize);\n // Defaults are different on Macs\n if (platform.isMacintosh) {\n result.className += ' mac';\n }\n return result;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * The minimal size of the slider (such that it can still be clickable) -- it is artificially enlarged.\n */\nconst MINIMUM_SLIDER_SIZE = 20;\nexport class ScrollbarState {\n constructor(arrowSize, scrollbarSize, oppositeScrollbarSize, visibleSize, scrollSize, scrollPosition) {\n this._scrollbarSize = Math.round(scrollbarSize);\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\n this._arrowSize = Math.round(arrowSize);\n this._visibleSize = visibleSize;\n this._scrollSize = scrollSize;\n this._scrollPosition = scrollPosition;\n this._computedAvailableSize = 0;\n this._computedIsNeeded = false;\n this._computedSliderSize = 0;\n this._computedSliderRatio = 0;\n this._computedSliderPosition = 0;\n this._refreshComputedValues();\n }\n clone() {\n return new ScrollbarState(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n }\n setVisibleSize(visibleSize) {\n const iVisibleSize = Math.round(visibleSize);\n if (this._visibleSize !== iVisibleSize) {\n this._visibleSize = iVisibleSize;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollSize(scrollSize) {\n const iScrollSize = Math.round(scrollSize);\n if (this._scrollSize !== iScrollSize) {\n this._scrollSize = iScrollSize;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollPosition(scrollPosition) {\n const iScrollPosition = Math.round(scrollPosition);\n if (this._scrollPosition !== iScrollPosition) {\n this._scrollPosition = iScrollPosition;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollbarSize(scrollbarSize) {\n this._scrollbarSize = Math.round(scrollbarSize);\n }\n setOppositeScrollbarSize(oppositeScrollbarSize) {\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\n }\n static _computeValues(oppositeScrollbarSize, arrowSize, visibleSize, scrollSize, scrollPosition) {\n const computedAvailableSize = Math.max(0, visibleSize - oppositeScrollbarSize);\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * arrowSize);\n const computedIsNeeded = (scrollSize > 0 && scrollSize > visibleSize);\n if (!computedIsNeeded) {\n // There is no need for a slider\n return {\n computedAvailableSize: Math.round(computedAvailableSize),\n computedIsNeeded: computedIsNeeded,\n computedSliderSize: Math.round(computedRepresentableSize),\n computedSliderRatio: 0,\n computedSliderPosition: 0,\n };\n }\n // We must artificially increase the size of the slider if needed, since the slider would be too small to grab with the mouse otherwise\n const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollSize)));\n // The slider can move from 0 to `computedRepresentableSize` - `computedSliderSize`\n // in the same way `scrollPosition` can move from 0 to `scrollSize` - `visibleSize`.\n const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollSize - visibleSize);\n const computedSliderPosition = (scrollPosition * computedSliderRatio);\n return {\n computedAvailableSize: Math.round(computedAvailableSize),\n computedIsNeeded: computedIsNeeded,\n computedSliderSize: Math.round(computedSliderSize),\n computedSliderRatio: computedSliderRatio,\n computedSliderPosition: Math.round(computedSliderPosition),\n };\n }\n _refreshComputedValues() {\n const r = ScrollbarState._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n this._computedAvailableSize = r.computedAvailableSize;\n this._computedIsNeeded = r.computedIsNeeded;\n this._computedSliderSize = r.computedSliderSize;\n this._computedSliderRatio = r.computedSliderRatio;\n this._computedSliderPosition = r.computedSliderPosition;\n }\n getArrowSize() {\n return this._arrowSize;\n }\n getScrollPosition() {\n return this._scrollPosition;\n }\n getRectangleLargeSize() {\n return this._computedAvailableSize;\n }\n getRectangleSmallSize() {\n return this._scrollbarSize;\n }\n isNeeded() {\n return this._computedIsNeeded;\n }\n getSliderSize() {\n return this._computedSliderSize;\n }\n getSliderPosition() {\n return this._computedSliderPosition;\n }\n /**\n * Compute a desired `scrollPosition` such that `offset` ends up in the center of the slider.\n * `offset` is based on the same coordinate system as the `sliderPosition`.\n */\n getDesiredScrollPositionFromOffset(offset) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const desiredSliderPosition = offset - this._arrowSize - this._computedSliderSize / 2;\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\n }\n /**\n * Compute a desired `scrollPosition` from if offset is before or after the slider position.\n * If offset is before slider, treat as a page up (or left). If after, page down (or right).\n * `offset` and `_computedSliderPosition` are based on the same coordinate system.\n * `_visibleSize` corresponds to a \"page\" of lines in the returned coordinate system.\n */\n getDesiredScrollPositionFromOffsetPaged(offset) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const correctedOffset = offset - this._arrowSize; // compensate if has arrows\n let desiredScrollPosition = this._scrollPosition;\n if (correctedOffset < this._computedSliderPosition) {\n desiredScrollPosition -= this._visibleSize; // page up/left\n }\n else {\n desiredScrollPosition += this._visibleSize; // page down/right\n }\n return desiredScrollPosition;\n }\n /**\n * Compute a desired `scrollPosition` such that the slider moves by `delta`.\n */\n getDesiredScrollPositionFromDelta(delta) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const desiredSliderPosition = this._computedSliderPosition + delta;\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { DomEmitter } from '../../event.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { renderMarkdown } from '../../markdownRenderer.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { List } from '../list/listWidget.js';\nimport * as arrays from '../../../common/arrays.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { KeyCodeUtils } from '../../../common/keyCodes.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport { isMacintosh } from '../../../common/platform.js';\nimport './selectBoxCustom.css';\nimport { localize } from '../../../../nls.js';\nconst $ = dom.$;\nconst SELECT_OPTION_ENTRY_TEMPLATE_ID = 'selectOption.entry.template';\nclass SelectListRenderer {\n get templateId() { return SELECT_OPTION_ENTRY_TEMPLATE_ID; }\n renderTemplate(container) {\n const data = Object.create(null);\n data.root = container;\n data.text = dom.append(container, $('.option-text'));\n data.detail = dom.append(container, $('.option-detail'));\n data.decoratorRight = dom.append(container, $('.option-decorator-right'));\n return data;\n }\n renderElement(element, index, templateData) {\n const data = templateData;\n const text = element.text;\n const detail = element.detail;\n const decoratorRight = element.decoratorRight;\n const isDisabled = element.isDisabled;\n data.text.textContent = text;\n data.detail.textContent = !!detail ? detail : '';\n data.decoratorRight.innerText = !!decoratorRight ? decoratorRight : '';\n // pseudo-select disabled option\n if (isDisabled) {\n data.root.classList.add('option-disabled');\n }\n else {\n // Make sure we do class removal from prior template rendering\n data.root.classList.remove('option-disabled');\n }\n }\n disposeTemplate(_templateData) {\n // noop\n }\n}\nexport class SelectBoxList extends Disposable {\n constructor(options, selected, contextViewProvider, styles, selectBoxOptions) {\n super();\n this.options = [];\n this._currentSelection = 0;\n this._hasDetails = false;\n this._skipLayout = false;\n this._sticky = false; // for dev purposes only\n this._isVisible = false;\n this.styles = styles;\n this.selectBoxOptions = selectBoxOptions || Object.create(null);\n if (typeof this.selectBoxOptions.minBottomMargin !== 'number') {\n this.selectBoxOptions.minBottomMargin = SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN;\n }\n else if (this.selectBoxOptions.minBottomMargin < 0) {\n this.selectBoxOptions.minBottomMargin = 0;\n }\n this.selectElement = document.createElement('select');\n // Use custom CSS vars for padding calculation\n this.selectElement.className = 'monaco-select-box monaco-select-box-dropdown-padding';\n if (typeof this.selectBoxOptions.ariaLabel === 'string') {\n this.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n }\n if (typeof this.selectBoxOptions.ariaDescription === 'string') {\n this.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n }\n this._onDidSelect = new Emitter();\n this._register(this._onDidSelect);\n this.registerListeners();\n this.constructSelectDropDown(contextViewProvider);\n this.selected = selected || 0;\n if (options) {\n this.setOptions(options, selected);\n }\n this.initStyleSheet();\n }\n setTitle(title) {\n if (!this._hover && title) {\n this._hover = this._register(getBaseLayerHoverDelegate().setupUpdatableHover(getDefaultHoverDelegate('mouse'), this.selectElement, title));\n }\n else if (this._hover) {\n this._hover.update(title);\n }\n }\n // IDelegate - List renderer\n getHeight() {\n return 22;\n }\n getTemplateId() {\n return SELECT_OPTION_ENTRY_TEMPLATE_ID;\n }\n constructSelectDropDown(contextViewProvider) {\n // SetUp ContextView container to hold select Dropdown\n this.contextViewProvider = contextViewProvider;\n this.selectDropDownContainer = dom.$('.monaco-select-box-dropdown-container');\n // Use custom CSS vars for padding calculation (shared with parent select)\n this.selectDropDownContainer.classList.add('monaco-select-box-dropdown-padding');\n // Setup container for select option details\n this.selectionDetailsPane = dom.append(this.selectDropDownContainer, $('.select-box-details-pane'));\n // Create span flex box item/div we can measure and control\n const widthControlOuterDiv = dom.append(this.selectDropDownContainer, $('.select-box-dropdown-container-width-control'));\n const widthControlInnerDiv = dom.append(widthControlOuterDiv, $('.width-control-div'));\n this.widthControlElement = document.createElement('span');\n this.widthControlElement.className = 'option-text-width-control';\n dom.append(widthControlInnerDiv, this.widthControlElement);\n // Always default to below position\n this._dropDownPosition = 0 /* AnchorPosition.BELOW */;\n // Inline stylesheet for themes\n this.styleElement = dom.createStyleSheet(this.selectDropDownContainer);\n // Prevent dragging of dropdown #114329\n this.selectDropDownContainer.setAttribute('draggable', 'true');\n this._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.DRAG_START, (e) => {\n dom.EventHelper.stop(e, true);\n }));\n }\n registerListeners() {\n // Parent native select keyboard listeners\n this._register(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n this.selected = e.target.selectedIndex;\n this._onDidSelect.fire({\n index: e.target.selectedIndex,\n selected: e.target.value\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.setTitle(this.options[this.selected].text);\n }\n }));\n // Have to implement both keyboard and mouse controllers to handle disabled options\n // Intercept mouse events to override normal select actions on parents\n this._register(dom.addDisposableListener(this.selectElement, dom.EventType.CLICK, (e) => {\n dom.EventHelper.stop(e);\n if (this._isVisible) {\n this.hideSelectDropDown(true);\n }\n else {\n this.showSelectDropDown();\n }\n }));\n this._register(dom.addDisposableListener(this.selectElement, dom.EventType.MOUSE_DOWN, (e) => {\n dom.EventHelper.stop(e);\n }));\n // Intercept touch events\n // The following implementation is slightly different from the mouse event handlers above.\n // Use the following helper variable, otherwise the list flickers.\n let listIsVisibleOnTouchStart;\n this._register(dom.addDisposableListener(this.selectElement, 'touchstart', (e) => {\n listIsVisibleOnTouchStart = this._isVisible;\n }));\n this._register(dom.addDisposableListener(this.selectElement, 'touchend', (e) => {\n dom.EventHelper.stop(e);\n if (listIsVisibleOnTouchStart) {\n this.hideSelectDropDown(true);\n }\n else {\n this.showSelectDropDown();\n }\n }));\n // Intercept keyboard handling\n this._register(dom.addDisposableListener(this.selectElement, dom.EventType.KEY_DOWN, (e) => {\n const event = new StandardKeyboardEvent(e);\n let showDropDown = false;\n // Create and drop down select list on keyboard select\n if (isMacintosh) {\n if (event.keyCode === 18 /* KeyCode.DownArrow */ || event.keyCode === 16 /* KeyCode.UpArrow */ || event.keyCode === 10 /* KeyCode.Space */ || event.keyCode === 3 /* KeyCode.Enter */) {\n showDropDown = true;\n }\n }\n else {\n if (event.keyCode === 18 /* KeyCode.DownArrow */ && event.altKey || event.keyCode === 16 /* KeyCode.UpArrow */ && event.altKey || event.keyCode === 10 /* KeyCode.Space */ || event.keyCode === 3 /* KeyCode.Enter */) {\n showDropDown = true;\n }\n }\n if (showDropDown) {\n this.showSelectDropDown();\n dom.EventHelper.stop(e, true);\n }\n }));\n }\n get onDidSelect() {\n return this._onDidSelect.event;\n }\n setOptions(options, selected) {\n if (!arrays.equals(this.options, options)) {\n this.options = options;\n this.selectElement.options.length = 0;\n this._hasDetails = false;\n this._cachedMaxDetailsHeight = undefined;\n this.options.forEach((option, index) => {\n this.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n if (typeof option.description === 'string') {\n this._hasDetails = true;\n }\n });\n }\n if (selected !== undefined) {\n this.select(selected);\n // Set current = selected since this is not necessarily a user exit\n this._currentSelection = this.selected;\n }\n }\n setOptionsList() {\n var _a;\n // Mirror options in drop-down\n // Populate select list for non-native select mode\n (_a = this.selectList) === null || _a === void 0 ? void 0 : _a.splice(0, this.selectList.length, this.options);\n }\n select(index) {\n if (index >= 0 && index < this.options.length) {\n this.selected = index;\n }\n else if (index > this.options.length - 1) {\n // Adjust index to end of list\n // This could make client out of sync with the select\n this.select(this.options.length - 1);\n }\n else if (this.selected < 0) {\n this.selected = 0;\n }\n this.selectElement.selectedIndex = this.selected;\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.setTitle(this.options[this.selected].text);\n }\n }\n focus() {\n if (this.selectElement) {\n this.selectElement.tabIndex = 0;\n this.selectElement.focus();\n }\n }\n blur() {\n if (this.selectElement) {\n this.selectElement.tabIndex = -1;\n this.selectElement.blur();\n }\n }\n setFocusable(focusable) {\n this.selectElement.tabIndex = focusable ? 0 : -1;\n }\n render(container) {\n this.container = container;\n container.classList.add('select-container');\n container.appendChild(this.selectElement);\n this.styleSelectElement();\n }\n initStyleSheet() {\n const content = [];\n // Style non-native select mode\n if (this.styles.listFocusBackground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`);\n }\n if (this.styles.listFocusForeground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`);\n }\n if (this.styles.decoratorRightForeground) {\n content.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 }\n if (this.styles.selectBackground && this.styles.selectBorder && this.styles.selectBorder !== this.styles.selectBackground) {\n content.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `);\n }\n else if (this.styles.selectListBorder) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `);\n }\n // Hover foreground - ignore for disabled options\n if (this.styles.listHoverForeground) {\n content.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 }\n // Hover background - ignore for disabled options\n if (this.styles.listHoverBackground) {\n content.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 }\n // Match quick input outline styles - ignore for disabled options\n if (this.styles.listFocusOutline) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`);\n }\n if (this.styles.listHoverOutline) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`);\n }\n // Clear list styles on focus and on hover for disabled options\n content.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 content.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 this.styleElement.textContent = content.join('\\n');\n }\n styleSelectElement() {\n var _a, _b, _c;\n const background = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n const foreground = (_b = this.styles.selectForeground) !== null && _b !== void 0 ? _b : '';\n const border = (_c = this.styles.selectBorder) !== null && _c !== void 0 ? _c : '';\n this.selectElement.style.backgroundColor = background;\n this.selectElement.style.color = foreground;\n this.selectElement.style.borderColor = border;\n }\n styleList() {\n var _a, _b;\n const background = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n const listBackground = dom.asCssValueWithDefault(this.styles.selectListBackground, background);\n this.selectDropDownListContainer.style.backgroundColor = listBackground;\n this.selectionDetailsPane.style.backgroundColor = listBackground;\n const optionsBorder = (_b = this.styles.focusBorder) !== null && _b !== void 0 ? _b : '';\n this.selectDropDownContainer.style.outlineColor = optionsBorder;\n this.selectDropDownContainer.style.outlineOffset = '-1px';\n this.selectList.style(this.styles);\n }\n createOption(value, index, disabled) {\n const option = document.createElement('option');\n option.value = value;\n option.text = value;\n option.disabled = !!disabled;\n return option;\n }\n // ContextView dropdown methods\n showSelectDropDown() {\n this.selectionDetailsPane.innerText = '';\n if (!this.contextViewProvider || this._isVisible) {\n return;\n }\n // Lazily create and populate list only at open, moved from constructor\n this.createSelectList(this.selectDropDownContainer);\n this.setOptionsList();\n // This allows us to flip the position based on measurement\n // Set drop-down position above/below from required height and margins\n // If pre-layout cannot fit at least one option do not show drop-down\n this.contextViewProvider.showContextView({\n getAnchor: () => this.selectElement,\n render: (container) => this.renderSelectDropDown(container, true),\n layout: () => {\n this.layoutSelectDropDown();\n },\n onHide: () => {\n this.selectDropDownContainer.classList.remove('visible');\n this.selectElement.classList.remove('synthetic-focus');\n },\n anchorPosition: this._dropDownPosition\n }, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n // Hide so we can relay out\n this._isVisible = true;\n this.hideSelectDropDown(false);\n this.contextViewProvider.showContextView({\n getAnchor: () => this.selectElement,\n render: (container) => this.renderSelectDropDown(container),\n layout: () => this.layoutSelectDropDown(),\n onHide: () => {\n this.selectDropDownContainer.classList.remove('visible');\n this.selectElement.classList.remove('synthetic-focus');\n },\n anchorPosition: this._dropDownPosition\n }, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n // Track initial selection the case user escape, blur\n this._currentSelection = this.selected;\n this._isVisible = true;\n this.selectElement.setAttribute('aria-expanded', 'true');\n }\n hideSelectDropDown(focusSelect) {\n if (!this.contextViewProvider || !this._isVisible) {\n return;\n }\n this._isVisible = false;\n this.selectElement.setAttribute('aria-expanded', 'false');\n if (focusSelect) {\n this.selectElement.focus();\n }\n this.contextViewProvider.hideContextView();\n }\n renderSelectDropDown(container, preLayoutPosition) {\n container.appendChild(this.selectDropDownContainer);\n // Pre-Layout allows us to change position\n this.layoutSelectDropDown(preLayoutPosition);\n return {\n dispose: () => {\n // contextView will dispose itself if moving from one View to another\n try {\n container.removeChild(this.selectDropDownContainer); // remove to take out the CSS rules we add\n }\n catch (error) {\n // Ignore, removed already by change of focus\n }\n }\n };\n }\n // Iterate over detailed descriptions, find max height\n measureMaxDetailsHeight() {\n let maxDetailsPaneHeight = 0;\n this.options.forEach((_option, index) => {\n this.updateDetail(index);\n if (this.selectionDetailsPane.offsetHeight > maxDetailsPaneHeight) {\n maxDetailsPaneHeight = this.selectionDetailsPane.offsetHeight;\n }\n });\n return maxDetailsPaneHeight;\n }\n layoutSelectDropDown(preLayoutPosition) {\n // Avoid recursion from layout called in onListFocus\n if (this._skipLayout) {\n return false;\n }\n // Layout ContextView drop down select list and container\n // Have to manage our vertical overflow, sizing, position below or above\n // Position has to be determined and set prior to contextView instantiation\n if (this.selectList) {\n // Make visible to enable measurements\n this.selectDropDownContainer.classList.add('visible');\n const window = dom.getWindow(this.selectElement);\n const selectPosition = dom.getDomNodePagePosition(this.selectElement);\n const styles = dom.getWindow(this.selectElement).getComputedStyle(this.selectElement);\n const verticalPadding = parseFloat(styles.getPropertyValue('--dropdown-padding-top')) + parseFloat(styles.getPropertyValue('--dropdown-padding-bottom'));\n const maxSelectDropDownHeightBelow = (window.innerHeight - selectPosition.top - selectPosition.height - (this.selectBoxOptions.minBottomMargin || 0));\n const maxSelectDropDownHeightAbove = (selectPosition.top - SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN);\n // Determine optimal width - min(longest option), opt(parent select, excluding margins), max(ContextView controlled)\n const selectWidth = this.selectElement.offsetWidth;\n const selectMinWidth = this.setWidthControlElement(this.widthControlElement);\n const selectOptimalWidth = Math.max(selectMinWidth, Math.round(selectWidth)).toString() + 'px';\n this.selectDropDownContainer.style.width = selectOptimalWidth;\n // Get initial list height and determine space above and below\n this.selectList.getHTMLElement().style.height = '';\n this.selectList.layout();\n let listHeight = this.selectList.contentHeight;\n if (this._hasDetails && this._cachedMaxDetailsHeight === undefined) {\n this._cachedMaxDetailsHeight = this.measureMaxDetailsHeight();\n }\n const maxDetailsPaneHeight = this._hasDetails ? this._cachedMaxDetailsHeight : 0;\n const minRequiredDropDownHeight = listHeight + verticalPadding + maxDetailsPaneHeight;\n const maxVisibleOptionsBelow = ((Math.floor((maxSelectDropDownHeightBelow - verticalPadding - maxDetailsPaneHeight) / this.getHeight())));\n const maxVisibleOptionsAbove = ((Math.floor((maxSelectDropDownHeightAbove - verticalPadding - maxDetailsPaneHeight) / this.getHeight())));\n // If we are only doing pre-layout check/adjust position only\n // Calculate vertical space available, flip up if insufficient\n // Use reflected padding on parent select, ContextView style\n // properties not available before DOM attachment\n if (preLayoutPosition) {\n // Check if select moved out of viewport , do not open\n // If at least one option cannot be shown, don't open the drop-down or hide/remove if open\n if ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n || selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n || ((maxVisibleOptionsBelow < 1) && (maxVisibleOptionsAbove < 1))) {\n // Indicate we cannot open\n return false;\n }\n // Determine if we have to flip up\n // Always show complete list items - never more than Max available vertical height\n if (maxVisibleOptionsBelow < SelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS\n && maxVisibleOptionsAbove > maxVisibleOptionsBelow\n && this.options.length > maxVisibleOptionsBelow) {\n this._dropDownPosition = 1 /* AnchorPosition.ABOVE */;\n this.selectDropDownContainer.removeChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.removeChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n this.selectionDetailsPane.classList.remove('border-top');\n this.selectionDetailsPane.classList.add('border-bottom');\n }\n else {\n this._dropDownPosition = 0 /* AnchorPosition.BELOW */;\n this.selectDropDownContainer.removeChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.removeChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n this.selectionDetailsPane.classList.remove('border-bottom');\n this.selectionDetailsPane.classList.add('border-top');\n }\n // Do full layout on showSelectDropDown only\n return true;\n }\n // Check if select out of viewport or cutting into status bar\n if ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n || selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n || (this._dropDownPosition === 0 /* AnchorPosition.BELOW */ && maxVisibleOptionsBelow < 1)\n || (this._dropDownPosition === 1 /* AnchorPosition.ABOVE */ && maxVisibleOptionsAbove < 1)) {\n // Cannot properly layout, close and hide\n this.hideSelectDropDown(true);\n return false;\n }\n // SetUp list dimensions and layout - account for container padding\n // Use position to check above or below available space\n if (this._dropDownPosition === 0 /* AnchorPosition.BELOW */) {\n if (this._isVisible && maxVisibleOptionsBelow + maxVisibleOptionsAbove < 1) {\n // If drop-down is visible, must be doing a DOM re-layout, hide since we don't fit\n // Hide drop-down, hide contextview, focus on parent select\n this.hideSelectDropDown(true);\n return false;\n }\n // Adjust list height to max from select bottom to margin (default/minBottomMargin)\n if (minRequiredDropDownHeight > maxSelectDropDownHeightBelow) {\n listHeight = (maxVisibleOptionsBelow * this.getHeight());\n }\n }\n else {\n if (minRequiredDropDownHeight > maxSelectDropDownHeightAbove) {\n listHeight = (maxVisibleOptionsAbove * this.getHeight());\n }\n }\n // Set adjusted list height and relayout\n this.selectList.layout(listHeight);\n this.selectList.domFocus();\n // Finally set focus on selected item\n if (this.selectList.length > 0) {\n this.selectList.setFocus([this.selected || 0]);\n this.selectList.reveal(this.selectList.getFocus()[0] || 0);\n }\n if (this._hasDetails) {\n // Leave the selectDropDownContainer to size itself according to children (list + details) - #57447\n this.selectList.getHTMLElement().style.height = (listHeight + verticalPadding) + 'px';\n this.selectDropDownContainer.style.height = '';\n }\n else {\n this.selectDropDownContainer.style.height = (listHeight + verticalPadding) + 'px';\n }\n this.updateDetail(this.selected);\n this.selectDropDownContainer.style.width = selectOptimalWidth;\n // Maintain focus outline on parent select as well as list container - tabindex for focus\n this.selectDropDownListContainer.setAttribute('tabindex', '0');\n this.selectElement.classList.add('synthetic-focus');\n this.selectDropDownContainer.classList.add('synthetic-focus');\n return true;\n }\n else {\n return false;\n }\n }\n setWidthControlElement(container) {\n let elementWidth = 0;\n if (container) {\n let longest = 0;\n let longestLength = 0;\n this.options.forEach((option, index) => {\n const detailLength = !!option.detail ? option.detail.length : 0;\n const rightDecoratorLength = !!option.decoratorRight ? option.decoratorRight.length : 0;\n const len = option.text.length + detailLength + rightDecoratorLength;\n if (len > longestLength) {\n longest = index;\n longestLength = len;\n }\n });\n container.textContent = this.options[longest].text + (!!this.options[longest].decoratorRight ? (this.options[longest].decoratorRight + ' ') : '');\n elementWidth = dom.getTotalWidth(container);\n }\n return elementWidth;\n }\n createSelectList(parent) {\n // If we have already constructive list on open, skip\n if (this.selectList) {\n return;\n }\n // SetUp container for list\n this.selectDropDownListContainer = dom.append(parent, $('.select-box-dropdown-list-container'));\n this.listRenderer = new SelectListRenderer();\n this.selectList = new List('SelectBoxCustom', this.selectDropDownListContainer, this, [this.listRenderer], {\n useShadows: false,\n verticalScrollMode: 3 /* ScrollbarVisibility.Visible */,\n keyboardSupport: false,\n mouseSupport: false,\n accessibilityProvider: {\n getAriaLabel: element => {\n let label = element.text;\n if (element.detail) {\n label += `. ${element.detail}`;\n }\n if (element.decoratorRight) {\n label += `. ${element.decoratorRight}`;\n }\n if (element.description) {\n label += `. ${element.description}`;\n }\n return label;\n },\n getWidgetAriaLabel: () => localize({ key: 'selectBox', comment: ['Behave like native select dropdown element.'] }, \"Select Box\"),\n getRole: () => isMacintosh ? '' : 'option',\n getWidgetRole: () => 'listbox'\n }\n });\n if (this.selectBoxOptions.ariaLabel) {\n this.selectList.ariaLabel = this.selectBoxOptions.ariaLabel;\n }\n // SetUp list keyboard controller - control navigation, disabled items, focus\n const onKeyDown = this._register(new DomEmitter(this.selectDropDownListContainer, 'keydown'));\n const onSelectDropDownKeyDown = Event.chain(onKeyDown.event, $ => $.filter(() => this.selectList.length > 0)\n .map(e => new StandardKeyboardEvent(e)));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 3 /* KeyCode.Enter */))(this.onEnter, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 2 /* KeyCode.Tab */))(this.onEnter, this)); // Tab should behave the same as enter, #79339\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 9 /* KeyCode.Escape */))(this.onEscape, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 16 /* KeyCode.UpArrow */))(this.onUpArrow, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 18 /* KeyCode.DownArrow */))(this.onDownArrow, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 12 /* KeyCode.PageDown */))(this.onPageDown, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 11 /* KeyCode.PageUp */))(this.onPageUp, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 14 /* KeyCode.Home */))(this.onHome, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => e.keyCode === 13 /* KeyCode.End */))(this.onEnd, this));\n this._register(Event.chain(onSelectDropDownKeyDown, $ => $.filter(e => (e.keyCode >= 21 /* KeyCode.Digit0 */ && e.keyCode <= 56 /* KeyCode.KeyZ */) || (e.keyCode >= 85 /* KeyCode.Semicolon */ && e.keyCode <= 113 /* KeyCode.NumpadDivide */)))(this.onCharacter, this));\n // SetUp list mouse controller - control navigation, disabled items, focus\n this._register(dom.addDisposableListener(this.selectList.getHTMLElement(), dom.EventType.POINTER_UP, e => this.onPointerUp(e)));\n this._register(this.selectList.onMouseOver(e => typeof e.index !== 'undefined' && this.selectList.setFocus([e.index])));\n this._register(this.selectList.onDidChangeFocus(e => this.onListFocus(e)));\n this._register(dom.addDisposableListener(this.selectDropDownContainer, dom.EventType.FOCUS_OUT, e => {\n if (!this._isVisible || dom.isAncestor(e.relatedTarget, this.selectDropDownContainer)) {\n return;\n }\n this.onListBlur();\n }));\n this.selectList.getHTMLElement().setAttribute('aria-label', this.selectBoxOptions.ariaLabel || '');\n this.selectList.getHTMLElement().setAttribute('aria-expanded', 'true');\n this.styleList();\n }\n // List methods\n // List mouse controller - active exit, select option, fire onDidSelect if change, return focus to parent select\n // Also takes in touchend events\n onPointerUp(e) {\n if (!this.selectList.length) {\n return;\n }\n dom.EventHelper.stop(e);\n const target = e.target;\n if (!target) {\n return;\n }\n // Check our mouse event is on an option (not scrollbar)\n if (target.classList.contains('slider')) {\n return;\n }\n const listRowElement = target.closest('.monaco-list-row');\n if (!listRowElement) {\n return;\n }\n const index = Number(listRowElement.getAttribute('data-index'));\n const disabled = listRowElement.classList.contains('option-disabled');\n // Ignore mouse selection of disabled options\n if (index >= 0 && index < this.options.length && !disabled) {\n this.selected = index;\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n // Only fire if selection change\n if (this.selected !== this._currentSelection) {\n // Set current = selected\n this._currentSelection = this.selected;\n this._onDidSelect.fire({\n index: this.selectElement.selectedIndex,\n selected: this.options[this.selected].text\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.setTitle(this.options[this.selected].text);\n }\n }\n this.hideSelectDropDown(true);\n }\n }\n // List Exit - passive - implicit no selection change, hide drop-down\n onListBlur() {\n if (this._sticky) {\n return;\n }\n if (this.selected !== this._currentSelection) {\n // Reset selected to current if no change\n this.select(this._currentSelection);\n }\n this.hideSelectDropDown(false);\n }\n renderDescriptionMarkdown(text, actionHandler) {\n const cleanRenderedMarkdown = (element) => {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes.item(i);\n const tagName = child.tagName && child.tagName.toLowerCase();\n if (tagName === 'img') {\n element.removeChild(child);\n }\n else {\n cleanRenderedMarkdown(child);\n }\n }\n };\n const rendered = renderMarkdown({ value: text, supportThemeIcons: true }, { actionHandler });\n rendered.element.classList.add('select-box-description-markdown');\n cleanRenderedMarkdown(rendered.element);\n return rendered.element;\n }\n // List Focus Change - passive - update details pane with newly focused element's data\n onListFocus(e) {\n // Skip during initial layout\n if (!this._isVisible || !this._hasDetails) {\n return;\n }\n this.updateDetail(e.indexes[0]);\n }\n updateDetail(selectedIndex) {\n var _a, _b;\n this.selectionDetailsPane.innerText = '';\n const option = this.options[selectedIndex];\n const description = (_a = option === null || option === void 0 ? void 0 : option.description) !== null && _a !== void 0 ? _a : '';\n const descriptionIsMarkdown = (_b = option === null || option === void 0 ? void 0 : option.descriptionIsMarkdown) !== null && _b !== void 0 ? _b : false;\n if (description) {\n if (descriptionIsMarkdown) {\n const actionHandler = option.descriptionMarkdownActionHandler;\n this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(description, actionHandler));\n }\n else {\n this.selectionDetailsPane.innerText = description;\n }\n this.selectionDetailsPane.style.display = 'block';\n }\n else {\n this.selectionDetailsPane.style.display = 'none';\n }\n // Avoid recursion\n this._skipLayout = true;\n this.contextViewProvider.layout();\n this._skipLayout = false;\n }\n // List keyboard controller\n // List exit - active - hide ContextView dropdown, reset selection, return focus to parent select\n onEscape(e) {\n dom.EventHelper.stop(e);\n // Reset selection to value when opened\n this.select(this._currentSelection);\n this.hideSelectDropDown(true);\n }\n // List exit - active - hide ContextView dropdown, return focus to parent select, fire onDidSelect if change\n onEnter(e) {\n dom.EventHelper.stop(e);\n // Only fire if selection change\n if (this.selected !== this._currentSelection) {\n this._currentSelection = this.selected;\n this._onDidSelect.fire({\n index: this.selectElement.selectedIndex,\n selected: this.options[this.selected].text\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.setTitle(this.options[this.selected].text);\n }\n }\n this.hideSelectDropDown(true);\n }\n // List navigation - have to handle a disabled option (jump over)\n onDownArrow(e) {\n if (this.selected < this.options.length - 1) {\n dom.EventHelper.stop(e, true);\n // Skip disabled options\n const nextOptionDisabled = this.options[this.selected + 1].isDisabled;\n if (nextOptionDisabled && this.options.length > this.selected + 2) {\n this.selected += 2;\n }\n else if (nextOptionDisabled) {\n return;\n }\n else {\n this.selected++;\n }\n // Set focus/selection - only fire event when closing drop-down or on blur\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n }\n }\n onUpArrow(e) {\n if (this.selected > 0) {\n dom.EventHelper.stop(e, true);\n // Skip disabled options\n const previousOptionDisabled = this.options[this.selected - 1].isDisabled;\n if (previousOptionDisabled && this.selected > 1) {\n this.selected -= 2;\n }\n else {\n this.selected--;\n }\n // Set focus/selection - only fire event when closing drop-down or on blur\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n }\n }\n onPageUp(e) {\n dom.EventHelper.stop(e);\n this.selectList.focusPreviousPage();\n // Allow scrolling to settle\n setTimeout(() => {\n this.selected = this.selectList.getFocus()[0];\n // Shift selection down if we land on a disabled option\n if (this.options[this.selected].isDisabled && this.selected < this.options.length - 1) {\n this.selected++;\n this.selectList.setFocus([this.selected]);\n }\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }, 1);\n }\n onPageDown(e) {\n dom.EventHelper.stop(e);\n this.selectList.focusNextPage();\n // Allow scrolling to settle\n setTimeout(() => {\n this.selected = this.selectList.getFocus()[0];\n // Shift selection up if we land on a disabled option\n if (this.options[this.selected].isDisabled && this.selected > 0) {\n this.selected--;\n this.selectList.setFocus([this.selected]);\n }\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }, 1);\n }\n onHome(e) {\n dom.EventHelper.stop(e);\n if (this.options.length < 2) {\n return;\n }\n this.selected = 0;\n if (this.options[this.selected].isDisabled && this.selected > 1) {\n this.selected++;\n }\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }\n onEnd(e) {\n dom.EventHelper.stop(e);\n if (this.options.length < 2) {\n return;\n }\n this.selected = this.options.length - 1;\n if (this.options[this.selected].isDisabled && this.selected > 1) {\n this.selected--;\n }\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }\n // Mimic option first character navigation of native select\n onCharacter(e) {\n const ch = KeyCodeUtils.toString(e.keyCode);\n let optionIndex = -1;\n for (let i = 0; i < this.options.length - 1; i++) {\n optionIndex = (i + this.selected + 1) % this.options.length;\n if (this.options[optionIndex].text.charAt(0).toUpperCase() === ch && !this.options[optionIndex].isDisabled) {\n this.select(optionIndex);\n this.selectList.setFocus([optionIndex]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n dom.EventHelper.stop(e);\n break;\n }\n }\n }\n dispose() {\n this.hideSelectDropDown(false);\n super.dispose();\n }\n}\nSelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32;\nSelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN = 2;\nSelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS = 3;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { EventType, Gesture } from '../../touch.js';\nimport * as arrays from '../../../common/arrays.js';\nimport { Emitter } from '../../../common/event.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport { isMacintosh } from '../../../common/platform.js';\nexport class SelectBoxNative extends Disposable {\n constructor(options, selected, styles, selectBoxOptions) {\n super();\n this.selected = 0;\n this.selectBoxOptions = selectBoxOptions || Object.create(null);\n this.options = [];\n this.selectElement = document.createElement('select');\n this.selectElement.className = 'monaco-select-box';\n if (typeof this.selectBoxOptions.ariaLabel === 'string') {\n this.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n }\n if (typeof this.selectBoxOptions.ariaDescription === 'string') {\n this.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n }\n this._onDidSelect = this._register(new Emitter());\n this.styles = styles;\n this.registerListeners();\n this.setOptions(options, selected);\n }\n registerListeners() {\n this._register(Gesture.addTarget(this.selectElement));\n [EventType.Tap].forEach(eventType => {\n this._register(dom.addDisposableListener(this.selectElement, eventType, (e) => {\n this.selectElement.focus();\n }));\n });\n this._register(dom.addStandardDisposableListener(this.selectElement, 'click', (e) => {\n dom.EventHelper.stop(e, true);\n }));\n this._register(dom.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n this.selectElement.title = e.target.value;\n this._onDidSelect.fire({\n index: e.target.selectedIndex,\n selected: e.target.value\n });\n }));\n this._register(dom.addStandardDisposableListener(this.selectElement, 'keydown', (e) => {\n let showSelect = false;\n if (isMacintosh) {\n if (e.keyCode === 18 /* KeyCode.DownArrow */ || e.keyCode === 16 /* KeyCode.UpArrow */ || e.keyCode === 10 /* KeyCode.Space */) {\n showSelect = true;\n }\n }\n else {\n if (e.keyCode === 18 /* KeyCode.DownArrow */ && e.altKey || e.keyCode === 10 /* KeyCode.Space */ || e.keyCode === 3 /* KeyCode.Enter */) {\n showSelect = true;\n }\n }\n if (showSelect) {\n // Space, Enter, is used to expand select box, do not propagate it (prevent action bar action run)\n e.stopPropagation();\n }\n }));\n }\n get onDidSelect() {\n return this._onDidSelect.event;\n }\n setOptions(options, selected) {\n if (!this.options || !arrays.equals(this.options, options)) {\n this.options = options;\n this.selectElement.options.length = 0;\n this.options.forEach((option, index) => {\n this.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n });\n }\n if (selected !== undefined) {\n this.select(selected);\n }\n }\n select(index) {\n if (this.options.length === 0) {\n this.selected = 0;\n }\n else if (index >= 0 && index < this.options.length) {\n this.selected = index;\n }\n else if (index > this.options.length - 1) {\n // Adjust index to end of list\n // This could make client out of sync with the select\n this.select(this.options.length - 1);\n }\n else if (this.selected < 0) {\n this.selected = 0;\n }\n this.selectElement.selectedIndex = this.selected;\n if ((this.selected < this.options.length) && typeof this.options[this.selected].text === 'string') {\n this.selectElement.title = this.options[this.selected].text;\n }\n else {\n this.selectElement.title = '';\n }\n }\n focus() {\n if (this.selectElement) {\n this.selectElement.tabIndex = 0;\n this.selectElement.focus();\n }\n }\n blur() {\n if (this.selectElement) {\n this.selectElement.tabIndex = -1;\n this.selectElement.blur();\n }\n }\n setFocusable(focusable) {\n this.selectElement.tabIndex = focusable ? 0 : -1;\n }\n render(container) {\n container.classList.add('select-container');\n container.appendChild(this.selectElement);\n this.setOptions(this.options, this.selected);\n this.applyStyles();\n }\n applyStyles() {\n var _a, _b, _c;\n // Style native select\n if (this.selectElement) {\n this.selectElement.style.backgroundColor = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n this.selectElement.style.color = (_b = this.styles.selectForeground) !== null && _b !== void 0 ? _b : '';\n this.selectElement.style.borderColor = (_c = this.styles.selectBorder) !== null && _c !== void 0 ? _c : '';\n }\n }\n createOption(value, index, disabled) {\n const option = document.createElement('option');\n option.value = value;\n option.text = value;\n option.disabled = !!disabled;\n return option;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { SelectBoxList } from './selectBoxCustom.js';\nimport { SelectBoxNative } from './selectBoxNative.js';\nimport { Widget } from '../widget.js';\nimport { isMacintosh } from '../../../common/platform.js';\nimport './selectBox.css';\nexport class SelectBox extends Widget {\n constructor(options, selected, contextViewProvider, styles, selectBoxOptions) {\n super();\n // Default to native SelectBox for OSX unless overridden\n if (isMacintosh && !(selectBoxOptions === null || selectBoxOptions === void 0 ? void 0 : selectBoxOptions.useCustomDrawn)) {\n this.selectBoxDelegate = new SelectBoxNative(options, selected, styles, selectBoxOptions);\n }\n else {\n this.selectBoxDelegate = new SelectBoxList(options, selected, contextViewProvider, styles, selectBoxOptions);\n }\n this._register(this.selectBoxDelegate);\n }\n // Public SelectBox Methods - routed through delegate interface\n get onDidSelect() {\n return this.selectBoxDelegate.onDidSelect;\n }\n setOptions(options, selected) {\n this.selectBoxDelegate.setOptions(options, selected);\n }\n select(index) {\n this.selectBoxDelegate.select(index);\n }\n focus() {\n this.selectBoxDelegate.focus();\n }\n blur() {\n this.selectBoxDelegate.blur();\n }\n setFocusable(focusable) {\n this.selectBoxDelegate.setFocusable(focusable);\n }\n render(container) {\n this.selectBoxDelegate.render(container);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { $, addDisposableListener, append, getWindow, scheduleAtNextAnimationFrame } from '../../dom.js';\nimport { DomEmitter } from '../../event.js';\nimport { Sash } from '../sash/sash.js';\nimport { SmoothScrollableElement } from '../scrollbar/scrollableElement.js';\nimport { pushToEnd, pushToStart, range } from '../../../common/arrays.js';\nimport { Color } from '../../../common/color.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { combinedDisposable, Disposable, dispose, toDisposable } from '../../../common/lifecycle.js';\nimport { clamp } from '../../../common/numbers.js';\nimport { Scrollable } from '../../../common/scrollable.js';\nimport * as types from '../../../common/types.js';\nimport './splitview.css';\nconst defaultStyles = {\n separatorBorder: Color.transparent\n};\nclass ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n setVisible(visible, size) {\n var _a, _b;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize = typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n try {\n (_b = (_a = this.view).setVisible) === null || _b === void 0 ? void 0 : _b.call(_a, visible);\n }\n catch (e) {\n console.error('Splitview: Failed to set visible view');\n console.error(e);\n }\n }\n get minimumSize() { return this.visible ? this.view.minimumSize : 0; }\n get viewMinimumSize() { return this.view.minimumSize; }\n get maximumSize() { return this.visible ? this.view.maximumSize : 0; }\n get viewMaximumSize() { return this.view.maximumSize; }\n get priority() { return this.view.priority; }\n get proportionalLayout() { var _a; return (_a = this.view.proportionalLayout) !== null && _a !== void 0 ? _a : true; }\n get snap() { return !!this.view.snap; }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n layout(offset, layoutContext) {\n this.layoutContainer(offset);\n try {\n this.view.layout(this.size, offset, layoutContext);\n }\n catch (e) {\n console.error('Splitview: Failed to layout view');\n console.error(e);\n }\n }\n dispose() {\n this.disposable.dispose();\n }\n}\nclass VerticalViewItem extends ViewItem {\n layoutContainer(offset) {\n this.container.style.top = `${offset}px`;\n this.container.style.height = `${this.size}px`;\n }\n}\nclass HorizontalViewItem extends ViewItem {\n layoutContainer(offset) {\n this.container.style.left = `${offset}px`;\n this.container.style.width = `${this.size}px`;\n }\n}\nvar State;\n(function (State) {\n State[State[\"Idle\"] = 0] = \"Idle\";\n State[State[\"Busy\"] = 1] = \"Busy\";\n})(State || (State = {}));\nexport var Sizing;\n(function (Sizing) {\n /**\n * When adding or removing views, distribute the delta space among\n * all other views.\n */\n Sizing.Distribute = { type: 'distribute' };\n /**\n * When adding or removing views, split the delta space with another\n * specific view, indexed by the provided `index`.\n */\n function Split(index) { return { type: 'split', index }; }\n Sizing.Split = Split;\n /**\n * When adding a view, use DistributeSizing when all pre-existing views are\n * distributed evenly, otherwise use SplitSizing.\n */\n function Auto(index) { return { type: 'auto', index }; }\n Sizing.Auto = Auto;\n /**\n * When adding or removing views, assume the view is invisible.\n */\n function Invisible(cachedVisibleSize) { return { type: 'invisible', cachedVisibleSize }; }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\n/**\n * The {@link SplitView} is the UI component which implements a one dimensional\n * flex-like layout algorithm for a collection of {@link IView} instances, which\n * are essentially HTMLElement instances with the following size constraints:\n *\n * - {@link IView.minimumSize}\n * - {@link IView.maximumSize}\n * - {@link IView.priority}\n * - {@link IView.snap}\n *\n * In case the SplitView doesn't have enough size to fit all views, it will overflow\n * its content with a scrollbar.\n *\n * In between each pair of views there will be a {@link Sash} allowing the user\n * to resize the views, making sure the constraints are respected.\n *\n * An optional {@link TLayoutContext layout context type} may be used in order to\n * pass along layout contextual data from the {@link SplitView.layout} method down\n * to each view's {@link IView.layout} calls.\n *\n * Features:\n * - Flex-like layout algorithm\n * - Snap support\n * - Orthogonal sash support, for corner sashes\n * - View hide/show support\n * - View swap/move support\n * - Alt key modifier behavior, macOS style\n */\nexport class SplitView extends Disposable {\n get orthogonalStartSash() { return this._orthogonalStartSash; }\n get orthogonalEndSash() { return this._orthogonalEndSash; }\n get startSnappingEnabled() { return this._startSnappingEnabled; }\n get endSnappingEnabled() { return this._endSnappingEnabled; }\n /**\n * A reference to a sash, perpendicular to all sashes in this {@link SplitView},\n * located at the left- or top-most side of the SplitView.\n * Corner sashes will be created automatically at the intersections.\n */\n set orthogonalStartSash(sash) {\n for (const sashItem of this.sashItems) {\n sashItem.sash.orthogonalStartSash = sash;\n }\n this._orthogonalStartSash = sash;\n }\n /**\n * A reference to a sash, perpendicular to all sashes in this {@link SplitView},\n * located at the right- or bottom-most side of the SplitView.\n * Corner sashes will be created automatically at the intersections.\n */\n set orthogonalEndSash(sash) {\n for (const sashItem of this.sashItems) {\n sashItem.sash.orthogonalEndSash = sash;\n }\n this._orthogonalEndSash = sash;\n }\n /**\n * Enable/disable snapping at the beginning of this {@link SplitView}.\n */\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n /**\n * Enable/disable snapping at the end of this {@link SplitView}.\n */\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n /**\n * Create a new {@link SplitView} instance.\n */\n constructor(container, options = {}) {\n var _a, _b, _c, _d, _e;\n super();\n this.size = 0;\n this._contentSize = 0;\n this.proportions = undefined;\n this.viewItems = [];\n this.sashItems = []; // used in tests\n this.state = State.Idle;\n this._onDidSashChange = this._register(new Emitter());\n this._onDidSashReset = this._register(new Emitter());\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n /**\n * Fires whenever the user resizes a {@link Sash sash}.\n */\n this.onDidSashChange = this._onDidSashChange.event;\n /**\n * Fires whenever the user double clicks a {@link Sash sash}.\n */\n this.onDidSashReset = this._onDidSashReset.event;\n this.orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : 0 /* Orientation.VERTICAL */;\n this.inverseAltBehavior = (_b = options.inverseAltBehavior) !== null && _b !== void 0 ? _b : false;\n this.proportionalLayout = (_c = options.proportionalLayout) !== null && _c !== void 0 ? _c : true;\n this.getSashOrthogonalSize = options.getSashOrthogonalSize;\n this.el = document.createElement('div');\n this.el.classList.add('monaco-split-view2');\n this.el.classList.add(this.orientation === 0 /* Orientation.VERTICAL */ ? 'vertical' : 'horizontal');\n container.appendChild(this.el);\n this.sashContainer = append(this.el, $('.sash-container'));\n this.viewContainer = $('.split-view-container');\n this.scrollable = this._register(new Scrollable({\n forceIntegerValues: true,\n smoothScrollDuration: 125,\n scheduleAtNextAnimationFrame: callback => scheduleAtNextAnimationFrame(getWindow(this.el), callback),\n }));\n this.scrollableElement = this._register(new SmoothScrollableElement(this.viewContainer, {\n vertical: this.orientation === 0 /* Orientation.VERTICAL */ ? ((_d = options.scrollbarVisibility) !== null && _d !== void 0 ? _d : 1 /* ScrollbarVisibility.Auto */) : 2 /* ScrollbarVisibility.Hidden */,\n horizontal: this.orientation === 1 /* Orientation.HORIZONTAL */ ? ((_e = options.scrollbarVisibility) !== null && _e !== void 0 ? _e : 1 /* ScrollbarVisibility.Auto */) : 2 /* ScrollbarVisibility.Hidden */\n }, this.scrollable));\n // https://github.com/microsoft/vscode/issues/157737\n const onDidScrollViewContainer = this._register(new DomEmitter(this.viewContainer, 'scroll')).event;\n this._register(onDidScrollViewContainer(_ => {\n const position = this.scrollableElement.getScrollPosition();\n const scrollLeft = Math.abs(this.viewContainer.scrollLeft - position.scrollLeft) <= 1 ? undefined : this.viewContainer.scrollLeft;\n const scrollTop = Math.abs(this.viewContainer.scrollTop - position.scrollTop) <= 1 ? undefined : this.viewContainer.scrollTop;\n if (scrollLeft !== undefined || scrollTop !== undefined) {\n this.scrollableElement.setScrollPosition({ scrollLeft, scrollTop });\n }\n }));\n this.onDidScroll = this.scrollableElement.onScroll;\n this._register(this.onDidScroll(e => {\n if (e.scrollTopChanged) {\n this.viewContainer.scrollTop = e.scrollTop;\n }\n if (e.scrollLeftChanged) {\n this.viewContainer.scrollLeft = e.scrollLeft;\n }\n }));\n append(this.el, this.scrollableElement.getDomNode());\n this.style(options.styles || defaultStyles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this.size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = types.isUndefined(viewDescriptor.visible) || viewDescriptor.visible ? viewDescriptor.size : { type: 'invisible', cachedVisibleSize: viewDescriptor.size };\n const view = viewDescriptor.view;\n this.doAddView(view, sizing, index, true);\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if (styles.separatorBorder.isTransparent()) {\n this.el.classList.remove('separator-border');\n this.el.style.removeProperty('--separator-border');\n }\n else {\n this.el.classList.add('separator-border');\n this.el.style.setProperty('--separator-border', styles.separatorBorder.toString());\n }\n }\n /**\n * Add a {@link IView view} to this {@link SplitView}.\n *\n * @param view The view to add.\n * @param size Either a fixed size, or a dynamic {@link Sizing} strategy.\n * @param index The index to insert the view on.\n * @param skipLayout Whether layout should be skipped.\n */\n addView(view, size, index = this.viewItems.length, skipLayout) {\n this.doAddView(view, size, index, skipLayout);\n }\n /**\n * Layout the {@link SplitView}.\n *\n * @param size The entire size of the {@link SplitView}.\n * @param layoutContext An optional layout context to pass along to {@link IView views}.\n */\n layout(size, layoutContext) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.layoutContext = layoutContext;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round(proportion * size / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this.proportions = this.viewItems.map(v => v.proportionalLayout && v.visible ? v.size / this._contentSize : undefined);\n }\n }\n onSashStart({ sash, start, alt }) {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const index = this.sashItems.findIndex(item => item.sash === sash);\n // This way, we can press Alt while we resize a sash, macOS style!\n const disposable = combinedDisposable(addDisposableListener(this.el.ownerDocument.body, 'keydown', e => resetSashDragState(this.sashDragState.current, e.altKey)), addDisposableListener(this.el.ownerDocument.body, 'keyup', () => resetSashDragState(this.sashDragState.current, false)));\n const resetSashDragState = (start, alt) => {\n const sizes = this.viewItems.map(i => i.size);\n let minDelta = Number.NEGATIVE_INFINITY;\n let maxDelta = Number.POSITIVE_INFINITY;\n if (this.inverseAltBehavior) {\n alt = !alt;\n }\n if (alt) {\n // When we're using the last sash with Alt, we're resizing\n // the view to the left/up, instead of right/down as usual\n // Thus, we must do the inverse of the usual\n const isLastSash = index === this.sashItems.length - 1;\n if (isLastSash) {\n const viewItem = this.viewItems[index];\n minDelta = (viewItem.minimumSize - viewItem.size) / 2;\n maxDelta = (viewItem.maximumSize - viewItem.size) / 2;\n }\n else {\n const viewItem = this.viewItems[index + 1];\n minDelta = (viewItem.size - viewItem.maximumSize) / 2;\n maxDelta = (viewItem.size - viewItem.minimumSize) / 2;\n }\n }\n let snapBefore;\n let snapAfter;\n if (!alt) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const viewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize,\n size: viewItem.size\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const viewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize,\n size: viewItem.size\n };\n }\n }\n this.sashDragState = { start, current: start, index, sizes, minDelta, maxDelta, alt, snapBefore, snapAfter, disposable };\n };\n resetSashDragState(start, alt);\n }\n onSashChange({ current }) {\n const { index, start, sizes, alt, minDelta, maxDelta, snapBefore, snapAfter } = this.sashDragState;\n this.sashDragState.current = current;\n const delta = current - start;\n const newDelta = this.resize(index, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n if (alt) {\n const isLastSash = index === this.sashItems.length - 1;\n const newSizes = this.viewItems.map(i => i.size);\n const viewItemIndex = isLastSash ? index : index + 1;\n const viewItem = this.viewItems[viewItemIndex];\n const newMinDelta = viewItem.size - viewItem.maximumSize;\n const newMaxDelta = viewItem.size - viewItem.minimumSize;\n const resizeIndex = isLastSash ? index - 1 : index + 1;\n this.resize(resizeIndex, -newDelta, newSizes, undefined, undefined, newMinDelta, newMaxDelta);\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n onSashEnd(index) {\n this._onDidSashChange.fire(index);\n this.sashDragState.disposable.dispose();\n this.saveProportions();\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n }\n onViewChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n if (this.inverseAltBehavior && index > 0) {\n // In this case, we want the view to grow or shrink both sides equally\n // so we just resize the \"left\" side by half and let `resize` do the clamping magic\n this.resize(index - 1, Math.floor((item.size - size) / 2));\n this.distributeEmptySpace();\n this.layoutViews();\n }\n else {\n item.size = size;\n this.relayout([index], undefined);\n }\n }\n /**\n * Resize a {@link IView view} within the {@link SplitView}.\n *\n * @param index The {@link IView view} index.\n * @param size The {@link IView view} size.\n */\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n if (this.state !== State.Idle) {\n throw new Error('Cant modify splitview');\n }\n this.state = State.Busy;\n try {\n const indexes = range(this.viewItems.length).filter(i => i !== index);\n const lowPriorityIndexes = [...indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */), index];\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this.size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n finally {\n this.state = State.Idle;\n }\n }\n /**\n * Distribute the entire {@link SplitView} size among all {@link IView views}.\n */\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n /**\n * Returns the size of a {@link IView view}.\n */\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n doAddView(view, size, index = this.viewItems.length, skipLayout) {\n if (this.state !== State.Idle) {\n throw new Error('Cant modify splitview');\n }\n this.state = State.Busy;\n try {\n // Add view\n const container = $('.split-view-view');\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n const onChangeDisposable = view.onDidChange(size => this.onViewChange(item, size));\n const containerDisposable = toDisposable(() => this.viewContainer.removeChild(container));\n const disposable = combinedDisposable(onChangeDisposable, containerDisposable);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else {\n if (size.type === 'auto') {\n if (this.areViewsDistributed()) {\n size = { type: 'distribute' };\n }\n else {\n size = { type: 'split', index: size.index };\n }\n }\n if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n }\n const item = this.orientation === 0 /* Orientation.VERTICAL */\n ? new VerticalViewItem(container, view, viewSize, disposable)\n : new HorizontalViewItem(container, view, viewSize, disposable);\n this.viewItems.splice(index, 0, item);\n // Add sash\n if (this.viewItems.length > 1) {\n const opts = { orthogonalStartSash: this.orthogonalStartSash, orthogonalEndSash: this.orthogonalEndSash };\n const sash = this.orientation === 0 /* Orientation.VERTICAL */\n ? new Sash(this.sashContainer, { getHorizontalSashTop: s => this.getSashPosition(s), getHorizontalSashWidth: this.getSashOrthogonalSize }, { ...opts, orientation: 1 /* Orientation.HORIZONTAL */ })\n : new Sash(this.sashContainer, { getVerticalSashLeft: s => this.getSashPosition(s), getVerticalSashHeight: this.getSashOrthogonalSize }, { ...opts, orientation: 0 /* Orientation.VERTICAL */ });\n const sashEventMapper = this.orientation === 0 /* Orientation.VERTICAL */\n ? (e) => ({ sash, start: e.startY, current: e.currentY, alt: e.altKey })\n : (e) => ({ sash, start: e.startX, current: e.currentX, alt: e.altKey });\n const onStart = Event.map(sash.onDidStart, sashEventMapper);\n const onStartDisposable = onStart(this.onSashStart, this);\n const onChange = Event.map(sash.onDidChange, sashEventMapper);\n const onChangeDisposable = onChange(this.onSashChange, this);\n const onEnd = Event.map(sash.onDidEnd, () => this.sashItems.findIndex(item => item.sash === sash));\n const onEndDisposable = onEnd(this.onSashEnd, this);\n const onDidResetDisposable = sash.onDidReset(() => {\n const index = this.sashItems.findIndex(item => item.sash === sash);\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible) {\n return;\n }\n if (typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible) {\n return;\n }\n this._onDidSashReset.fire(index);\n });\n const disposable = combinedDisposable(onStartDisposable, onChangeDisposable, onEndDisposable, onDidResetDisposable, sash);\n const sashItem = { sash, disposable };\n this.sashItems.splice(index - 1, 0, sashItem);\n }\n container.appendChild(view.element);\n let highPriorityIndexes;\n if (typeof size !== 'number' && size.type === 'split') {\n highPriorityIndexes = [size.index];\n }\n if (!skipLayout) {\n this.relayout([index], highPriorityIndexes);\n }\n if (!skipLayout && typeof size !== 'number' && size.type === 'distribute') {\n this.distributeViewSizes();\n }\n }\n finally {\n this.state = State.Idle;\n }\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this.size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n resize(index, delta, sizes = this.viewItems.map(i => i.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) {\n if (index < 0 || index >= this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n if (highPriorityIndexes) {\n for (const index of highPriorityIndexes) {\n pushToStart(upIndexes, index);\n pushToStart(downIndexes, index);\n }\n }\n if (lowPriorityIndexes) {\n for (const index of lowPriorityIndexes) {\n pushToEnd(upIndexes, index);\n pushToEnd(downIndexes, index);\n }\n }\n const upItems = upIndexes.map(i => this.viewItems[i]);\n const upSizes = upIndexes.map(i => sizes[i]);\n const downItems = downIndexes.map(i => this.viewItems[i]);\n const downSizes = downIndexes.map(i => sizes[i]);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].maximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].maximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown, overloadMinDelta);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp, overloadMaxDelta);\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n delta = clamp(delta, minDelta, maxDelta);\n for (let i = 0, deltaUp = delta; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n deltaUp -= viewDelta;\n item.size = size;\n }\n for (let i = 0, deltaDown = delta; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n return delta;\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n layoutViews() {\n // Save new content size\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n // Layout views\n let offset = 0;\n for (const viewItem of this.viewItems) {\n viewItem.layout(offset, this.layoutContext);\n offset += viewItem.size;\n }\n // Layout sashes\n this.sashItems.forEach(item => item.sash.layout());\n this.updateSashEnablement();\n this.updateScrollableElement();\n }\n updateScrollableElement() {\n if (this.orientation === 0 /* Orientation.VERTICAL */) {\n this.scrollableElement.setScrollDimensions({\n height: this.size,\n scrollHeight: this._contentSize\n });\n }\n else {\n this.scrollableElement.setScrollDimensions({\n width: this.size,\n scrollWidth: this._contentSize\n });\n }\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map(i => previous = (i.size - i.minimumSize > 0) || previous);\n previous = false;\n const expandsDown = this.viewItems.map(i => previous = (i.maximumSize - i.size > 0) || previous);\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews.map(i => previous = (i.size - i.minimumSize > 0) || previous).reverse();\n previous = false;\n const expandsUp = reverseViews.map(i => previous = (i.maximumSize - i.size > 0) || previous).reverse();\n let position = 0;\n for (let index = 0; index < this.sashItems.length; index++) {\n const { sash } = this.sashItems[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore && collapsesUp[index] && (position > 0 || this.startSnappingEnabled)) {\n sash.state = 1 /* SashState.AtMinimum */;\n }\n else if (snappedAfter && collapsesDown[index] && (position < this._contentSize || this.endSnappingEnabled)) {\n sash.state = 2 /* SashState.AtMaximum */;\n }\n else {\n sash.state = 0 /* SashState.Disabled */;\n }\n }\n else if (min && !max) {\n sash.state = 1 /* SashState.AtMinimum */;\n }\n else if (!min && max) {\n sash.state = 2 /* SashState.AtMaximum */;\n }\n else {\n sash.state = 3 /* SashState.Enabled */;\n }\n }\n }\n getSashPosition(sash) {\n let position = 0;\n for (let i = 0; i < this.sashItems.length; i++) {\n position += this.viewItems[i].size;\n if (this.sashItems[i].sash === sash) {\n return position;\n }\n }\n return 0;\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible && viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n areViewsDistributed() {\n let min = undefined, max = undefined;\n for (const view of this.viewItems) {\n min = min === undefined ? view.size : Math.min(min, view.size);\n max = max === undefined ? view.size : Math.max(max, view.size);\n if (max - min > 2) {\n return false;\n }\n }\n return true;\n }\n dispose() {\n var _a;\n (_a = this.sashDragState) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n dispose(this.viewItems);\n this.viewItems = [];\n this.sashItems.forEach(i => i.disposable.dispose());\n this.sashItems = [];\n super.dispose();\n }\n}\n"],"names":["ARROW_IMG_SIZE","ScrollbarArrow","constructor","opts","super","this","_onActivate","onActivate","bgDomNode","document","createElement","className","style","position","width","bgWidth","height","bgHeight","top","left","bottom","right","domNode","classList","add","icon","_pointerMoveMonitor","_register","dom","e","_arrowPointerDown","_pointerdownRepeatTimer","_pointerdownScheduleRepeatTimer","target","Element","cancel","cancelAndSet","startMonitoring","pointerId","buttons","pointerMoveData","preventDefault","ScrollbarVisibilityController","visibility","visibleClassName","invisibleClassName","_visibility","_visibleClassName","_invisibleClassName","_domNode","_isVisible","_isNeeded","_rawShouldBeVisible","_shouldBeVisible","_revealTimer","setVisibility","_updateShouldBeVisible","setShouldBeVisible","rawShouldBeVisible","_applyVisibilitySetting","shouldBeVisible","ensureVisibility","setIsNeeded","isNeeded","setDomNode","setClassName","_reveal","_hide","setIfNotSet","_a","withFadeAway","AbstractScrollbar","_lazyRender","lazyRender","_host","host","_scrollable","scrollable","_scrollByPage","scrollByPage","_scrollbarState","scrollbarState","_visibilityController","extraScrollbarClassName","_shouldRender","setAttribute","setPosition","_domNodePointerDown","_createArrow","arrow","appendChild","_createSlider","slider","setTop","setLeft","setWidth","setHeight","setLayerHinting","setContain","button","_sliderPointerDown","onclick","leftButton","stopPropagation","_onElementSize","visibleSize","setVisibleSize","render","_onElementScrollSize","elementScrollSize","setScrollSize","_onElementScrollPosition","elementScrollPosition","setScrollPosition","beginReveal","beginHide","_renderDomNode","getRectangleLargeSize","getRectangleSmallSize","_updateSlider","getSliderSize","getArrowSize","getSliderPosition","_onPointerDown","delegatePointerDown","domTop","getClientRects","sliderStart","sliderStop","pointerPos","_sliderPointerPosition","offsetX","offsetY","domNodePosition","pageX","pageY","offset","_pointerDownRelativePosition","_setDesiredScrollPositionNow","getDesiredScrollPositionFromOffsetPaged","getDesiredScrollPositionFromOffset","initialPointerPosition","initialPointerOrthogonalPosition","_sliderOrthogonalPointerPosition","initialScrollbarState","clone","toggleClassName","pointerOrthogonalPosition","pointerOrthogonalDelta","Math","abs","platform","getScrollPosition","pointerDelta","getDesiredScrollPositionFromDelta","onDragEnd","onDragStart","_desiredScrollPosition","desiredScrollPosition","writeScrollPosition","setScrollPositionNow","updateScrollbarSize","scrollbarSize","_updateScrollbarSize","setScrollbarSize","HorizontalScrollbar","options","scrollDimensions","getScrollDimensions","scrollPosition","getCurrentScrollPosition","horizontalHasArrows","arrowSize","horizontal","horizontalScrollbarSize","vertical","verticalScrollbarSize","scrollWidth","scrollLeft","arrowDelta","scrollbarDelta","undefined","onMouseWheel","floor","horizontalSliderSize","sliderSize","sliderPosition","largeSize","smallSize","setBottom","onDidScroll","size","updateOptions","setOppositeScrollbarSize","VerticalScrollbar","verticalHasArrows","scrollHeight","scrollTop","verticalSliderSize","setRight","MouseWheelClassifierItem","timestamp","deltaX","deltaY","score","MouseWheelClassifier","_capacity","_memory","_front","_rear","isPhysicalMouseWheel","remainingInfluence","iteration","index","influence","pow","acceptStandardWheelEvent","targetWindow","browserEvent","pageZoomFactor","accept","Date","now","previousItem","item","_computeScore","_isAlmostInt","absDeltaX","absDeltaY","absPreviousDeltaX","absPreviousDeltaY","minDeltaX","max","min","minDeltaY","maxDeltaX","maxDeltaY","value","round","INSTANCE","AbstractScrollableElement","_options","element","_onScroll","onScroll","event","_onWillScroll","overflow","result","useShadows","handleMouseWheel","flipAxes","consumeMouseWheelIfScrollbarIsNeeded","alwaysConsumeMouseWheel","scrollYToX","mouseWheelScrollSensitivity","fastScrollSensitivity","scrollPredominantAxis","mouseWheelSmoothScroll","listenOnDomNode","resolveOptions","fire","_onDidScroll","scrollbarHost","mouseWheelEvent","_onMouseWheel","_onDragStart","_onDragEnd","_verticalScrollbar","_horizontalScrollbar","_leftShadowDomNode","_topShadowDomNode","_topLeftShadowDomNode","_listenOnDomNode","_mouseWheelToDispose","_setListeningToMouseWheel","onmouseover","_onMouseOver","onmouseleave","_onMouseLeave","_hideTimeout","_isDragging","_mouseIsOver","_revealOnScroll","dispose","getDomNode","getOverviewRulerLayoutInfo","parent","insertBefore","delegateVerticalScrollbarPointerDown","setScrollDimensions","dimensions","updateClassName","newClassName","newOptions","_render","delegateScrollFromMouseWheelEvent","shouldListen","length","push","passive","defaultPrevented","classifier","didScroll","shiftConvert","shiftKey","altKey","futureScrollPosition","getFutureScrollPosition","deltaScrollTop","desiredScrollTop","ceil","deltaScrollLeft","desiredScrollLeft","validateScrollPosition","setScrollPositionSmooth","consumeMouseWheel","renderNow","Error","scrollState","enableTop","enableLeft","leftClassName","topClassName","topLeftClassName","_scheduleHide","ScrollableElement","forceIntegerValues","smoothScrollDuration","scheduleAtNextAnimationFrame","callback","update","SmoothScrollableElement","reuseAnimation","DomScrollableElement","_element","scrollTopChanged","scrollLeftChanged","scanDomNode","clientWidth","clientHeight","ScrollbarState","oppositeScrollbarSize","scrollSize","_scrollbarSize","_oppositeScrollbarSize","_arrowSize","_visibleSize","_scrollSize","_scrollPosition","_computedAvailableSize","_computedIsNeeded","_computedSliderSize","_computedSliderRatio","_computedSliderPosition","_refreshComputedValues","iVisibleSize","iScrollSize","iScrollPosition","_computeValues","computedAvailableSize","computedRepresentableSize","computedIsNeeded","computedSliderSize","computedSliderRatio","computedSliderPosition","r","desiredSliderPosition","correctedOffset","delta","$","SELECT_OPTION_ENTRY_TEMPLATE_ID","SelectListRenderer","templateId","renderTemplate","container","data","Object","create","root","text","detail","decoratorRight","renderElement","templateData","isDisabled","textContent","innerText","remove","disposeTemplate","_templateData","SelectBoxList","selected","contextViewProvider","styles","selectBoxOptions","_currentSelection","_hasDetails","_skipLayout","_sticky","minBottomMargin","DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN","selectElement","ariaLabel","ariaDescription","_onDidSelect","registerListeners","constructSelectDropDown","setOptions","initStyleSheet","setTitle","title","_hover","setupUpdatableHover","getHeight","getTemplateId","selectDropDownContainer","selectionDetailsPane","widthControlOuterDiv","widthControlInnerDiv","widthControlElement","_dropDownPosition","styleElement","listIsVisibleOnTouchStart","selectedIndex","hideSelectDropDown","showSelectDropDown","showDropDown","keyCode","onDidSelect","arrays","_cachedMaxDetailsHeight","forEach","option","createOption","description","select","setOptionsList","selectList","splice","focus","tabIndex","blur","setFocusable","focusable","styleSelectElement","content","listFocusBackground","listFocusForeground","decoratorRightForeground","selectBackground","selectBorder","selectListBorder","listHoverForeground","listHoverBackground","listFocusOutline","listHoverOutline","join","_b","_c","background","foreground","selectForeground","border","backgroundColor","color","borderColor","styleList","listBackground","selectListBackground","selectDropDownListContainer","optionsBorder","focusBorder","outlineColor","outlineOffset","disabled","createSelectList","showContextView","getAnchor","renderSelectDropDown","layout","layoutSelectDropDown","onHide","anchorPosition","optionsAsChildren","focusSelect","hideContextView","preLayoutPosition","removeChild","error","measureMaxDetailsHeight","maxDetailsPaneHeight","_option","updateDetail","offsetHeight","window","selectPosition","getComputedStyle","verticalPadding","parseFloat","getPropertyValue","maxSelectDropDownHeightBelow","innerHeight","maxSelectDropDownHeightAbove","DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN","selectWidth","offsetWidth","selectMinWidth","setWidthControlElement","selectOptimalWidth","toString","getHTMLElement","listHeight","contentHeight","minRequiredDropDownHeight","maxVisibleOptionsBelow","maxVisibleOptionsAbove","DEFAULT_MINIMUM_VISIBLE_OPTIONS","domFocus","setFocus","reveal","getFocus","elementWidth","longest","longestLength","detailLength","rightDecoratorLength","len","listRenderer","verticalScrollMode","keyboardSupport","mouseSupport","accessibilityProvider","getAriaLabel","label","getWidgetAriaLabel","key","comment","getRole","getWidgetRole","onKeyDown","onSelectDropDownKeyDown","filter","map","onEnter","onEscape","onUpArrow","onDownArrow","onPageDown","onPageUp","onHome","onEnd","onCharacter","onPointerUp","onMouseOver","onDidChangeFocus","onListFocus","relatedTarget","onListBlur","contains","listRowElement","closest","Number","getAttribute","renderDescriptionMarkdown","actionHandler","cleanRenderedMarkdown","i","childNodes","child","tagName","toLowerCase","rendered","supportThemeIcons","indexes","descriptionIsMarkdown","descriptionMarkdownActionHandler","display","nextOptionDisabled","focusPreviousPage","setTimeout","focusNextPage","ch","optionIndex","charAt","toUpperCase","SelectBoxNative","eventType","showSelect","applyStyles","SelectBox","useCustomDrawn","selectBoxDelegate","defaultStyles","separatorBorder","ViewItem","_size","visible","_cachedVisibleSize","setVisible","viewMinimumSize","viewMaximumSize","toggle","view","call","console","minimumSize","maximumSize","priority","proportionalLayout","snap","enabled","pointerEvents","disposable","cachedVisibleSize","layoutContext","layoutContainer","VerticalViewItem","HorizontalViewItem","State","Sizing","Distribute","type","Split","Auto","Invisible","SplitView","orthogonalStartSash","_orthogonalStartSash","orthogonalEndSash","_orthogonalEndSash","startSnappingEnabled","_startSnappingEnabled","endSnappingEnabled","_endSnappingEnabled","sash","sashItem","sashItems","updateSashEnablement","_d","_e","_contentSize","proportions","viewItems","state","Idle","_onDidSashChange","_onDidSashReset","onDidSashChange","onDidSashReset","orientation","inverseAltBehavior","getSashOrthogonalSize","el","sashContainer","viewContainer","scrollableElement","scrollbarVisibility","onDidScrollViewContainer","_","descriptor","views","viewDescriptor","sizing","doAddView","reduce","saveProportions","isTransparent","removeProperty","setProperty","addView","skipLayout","previousSize","total","proportion","lowPriorityIndexes","highPriorityIndexes","resize","distributeEmptySpace","layoutViews","v","onSashStart","start","alt","findIndex","ownerDocument","body","resetSashDragState","sashDragState","current","sizes","snapBefore","snapAfter","minDelta","NEGATIVE_INFINITY","maxDelta","POSITIVE_INFINITY","viewItem","upIndexes","downIndexes","minDeltaUp","maxDeltaUp","maxDeltaDown","minDeltaDown","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","halfSize","limitDelta","onSashChange","newDelta","isLastSash","newSizes","viewItemIndex","newMinDelta","newMaxDelta","resizeIndex","onSashEnd","onViewChange","indexOf","relayout","resizeView","Busy","distributeViewSizes","flexibleViewItems","flexibleSize","getViewSize","children","onChangeDisposable","onDidChange","containerDisposable","viewSize","areViewsDistributed","getHorizontalSashTop","s","getSashPosition","getHorizontalSashWidth","getVerticalSashLeft","getVerticalSashHeight","sashEventMapper","startY","currentY","startX","currentX","onStartDisposable","onDidStart","onStart","onChange","onDidEnd","onEndDisposable","onDidResetDisposable","onDidReset","contentSize","overloadMinDelta","overloadMaxDelta","upItems","upSizes","downItems","downSizes","snapped","snapView","deltaUp","deltaDown","lowPriorityIndex","emptyDelta","updateScrollableElement","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","snappedBefore","snappedAfter"],"sourceRoot":""}