{"version":3,"file":"static/js/9833_0262139d637159eed1e4.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/editor/browser/viewParts/blockDecorations/blockDecorations.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/rangeUtil.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/domReadingContext.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.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 { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\nimport './blockDecorations.css';\nimport { ViewPart } from '../../view/viewPart.js';\nexport class BlockDecorations extends ViewPart {\n constructor(context) {\n super(context);\n this.blocks = [];\n this.contentWidth = -1;\n this.contentLeft = 0;\n this.domNode = createFastDomNode(document.createElement('div'));\n this.domNode.setAttribute('role', 'presentation');\n this.domNode.setAttribute('aria-hidden', 'true');\n this.domNode.setClassName('blockDecorations-container');\n this.update();\n }\n update() {\n let didChange = false;\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n const newContentWidth = layoutInfo.contentWidth - layoutInfo.verticalScrollbarWidth;\n if (this.contentWidth !== newContentWidth) {\n this.contentWidth = newContentWidth;\n didChange = true;\n }\n const newContentLeft = layoutInfo.contentLeft;\n if (this.contentLeft !== newContentLeft) {\n this.contentLeft = newContentLeft;\n didChange = true;\n }\n return didChange;\n }\n dispose() {\n super.dispose();\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n return this.update();\n }\n onScrollChanged(e) {\n return e.scrollTopChanged || e.scrollLeftChanged;\n }\n onDecorationsChanged(e) {\n return true;\n }\n onZonesChanged(e) {\n return true;\n }\n // --- end event handlers\n prepareRender(ctx) {\n // Nothing to read\n }\n render(ctx) {\n var _a;\n let count = 0;\n const decorations = ctx.getDecorationsInViewport();\n for (const decoration of decorations) {\n if (!decoration.options.blockClassName) {\n continue;\n }\n let block = this.blocks[count];\n if (!block) {\n block = this.blocks[count] = createFastDomNode(document.createElement('div'));\n this.domNode.appendChild(block);\n }\n let top;\n let bottom;\n if (decoration.options.blockIsAfterEnd) {\n // range must be empty\n top = ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, false);\n bottom = ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, true);\n }\n else {\n top = ctx.getVerticalOffsetForLineNumber(decoration.range.startLineNumber, true);\n bottom = decoration.range.isEmpty() && !decoration.options.blockDoesNotCollapse\n ? ctx.getVerticalOffsetForLineNumber(decoration.range.startLineNumber, false)\n : ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, true);\n }\n const [paddingTop, paddingRight, paddingBottom, paddingLeft] = (_a = decoration.options.blockPadding) !== null && _a !== void 0 ? _a : [0, 0, 0, 0];\n block.setClassName('blockDecorations-block ' + decoration.options.blockClassName);\n block.setLeft(this.contentLeft - paddingLeft);\n block.setWidth(this.contentWidth + paddingLeft + paddingRight);\n block.setTop(top - ctx.scrollTop - paddingTop);\n block.setHeight(bottom - top + paddingTop + paddingBottom);\n count++;\n }\n for (let i = count; i < this.blocks.length; i++) {\n this.blocks[i].domNode.remove();\n }\n this.blocks.length = count;\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 '../../../../base/browser/dom.js';\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\nexport class ViewContentWidgets extends ViewPart {\n constructor(context, viewDomNode) {\n super(context);\n this._viewDomNode = viewDomNode;\n this._widgets = {};\n this.domNode = createFastDomNode(document.createElement('div'));\n PartFingerprints.write(this.domNode, 1 /* PartFingerprint.ContentWidgets */);\n this.domNode.setClassName('contentWidgets');\n this.domNode.setPosition('absolute');\n this.domNode.setTop(0);\n this.overflowingContentWidgetsDomNode = createFastDomNode(document.createElement('div'));\n PartFingerprints.write(this.overflowingContentWidgetsDomNode, 2 /* PartFingerprint.OverflowingContentWidgets */);\n this.overflowingContentWidgetsDomNode.setClassName('overflowingContentWidgets');\n }\n dispose() {\n super.dispose();\n this._widgets = {};\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n const keys = Object.keys(this._widgets);\n for (const widgetId of keys) {\n this._widgets[widgetId].onConfigurationChanged(e);\n }\n return true;\n }\n onDecorationsChanged(e) {\n // true for inline decorations that can end up relayouting text\n return true;\n }\n onFlushed(e) {\n return true;\n }\n onLineMappingChanged(e) {\n this._updateAnchorsViewPositions();\n return true;\n }\n onLinesChanged(e) {\n this._updateAnchorsViewPositions();\n return true;\n }\n onLinesDeleted(e) {\n this._updateAnchorsViewPositions();\n return true;\n }\n onLinesInserted(e) {\n this._updateAnchorsViewPositions();\n return true;\n }\n onScrollChanged(e) {\n return true;\n }\n onZonesChanged(e) {\n return true;\n }\n // ---- end view event handlers\n _updateAnchorsViewPositions() {\n const keys = Object.keys(this._widgets);\n for (const widgetId of keys) {\n this._widgets[widgetId].updateAnchorViewPosition();\n }\n }\n addWidget(_widget) {\n const myWidget = new Widget(this._context, this._viewDomNode, _widget);\n this._widgets[myWidget.id] = myWidget;\n if (myWidget.allowEditorOverflow) {\n this.overflowingContentWidgetsDomNode.appendChild(myWidget.domNode);\n }\n else {\n this.domNode.appendChild(myWidget.domNode);\n }\n this.setShouldRender();\n }\n setWidgetPosition(widget, primaryAnchor, secondaryAnchor, preference, affinity) {\n const myWidget = this._widgets[widget.getId()];\n myWidget.setPosition(primaryAnchor, secondaryAnchor, preference, affinity);\n this.setShouldRender();\n }\n removeWidget(widget) {\n const widgetId = widget.getId();\n if (this._widgets.hasOwnProperty(widgetId)) {\n const myWidget = this._widgets[widgetId];\n delete this._widgets[widgetId];\n const domNode = myWidget.domNode.domNode;\n domNode.parentNode.removeChild(domNode);\n domNode.removeAttribute('monaco-visible-content-widget');\n this.setShouldRender();\n }\n }\n shouldSuppressMouseDownOnWidget(widgetId) {\n if (this._widgets.hasOwnProperty(widgetId)) {\n return this._widgets[widgetId].suppressMouseDown;\n }\n return false;\n }\n onBeforeRender(viewportData) {\n const keys = Object.keys(this._widgets);\n for (const widgetId of keys) {\n this._widgets[widgetId].onBeforeRender(viewportData);\n }\n }\n prepareRender(ctx) {\n const keys = Object.keys(this._widgets);\n for (const widgetId of keys) {\n this._widgets[widgetId].prepareRender(ctx);\n }\n }\n render(ctx) {\n const keys = Object.keys(this._widgets);\n for (const widgetId of keys) {\n this._widgets[widgetId].render(ctx);\n }\n }\n}\nclass Widget {\n constructor(context, viewDomNode, actual) {\n this._primaryAnchor = new PositionPair(null, null);\n this._secondaryAnchor = new PositionPair(null, null);\n this._context = context;\n this._viewDomNode = viewDomNode;\n this._actual = actual;\n this.domNode = createFastDomNode(this._actual.getDomNode());\n this.id = this._actual.getId();\n this.allowEditorOverflow = this._actual.allowEditorOverflow || false;\n this.suppressMouseDown = this._actual.suppressMouseDown || false;\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._fixedOverflowWidgets = options.get(42 /* EditorOption.fixedOverflowWidgets */);\n this._contentWidth = layoutInfo.contentWidth;\n this._contentLeft = layoutInfo.contentLeft;\n this._lineHeight = options.get(67 /* EditorOption.lineHeight */);\n this._affinity = null;\n this._preference = [];\n this._cachedDomNodeOffsetWidth = -1;\n this._cachedDomNodeOffsetHeight = -1;\n this._maxWidth = this._getMaxWidth();\n this._isVisible = false;\n this._renderData = null;\n this.domNode.setPosition((this._fixedOverflowWidgets && this.allowEditorOverflow) ? 'fixed' : 'absolute');\n this.domNode.setDisplay('none');\n this.domNode.setVisibility('hidden');\n this.domNode.setAttribute('widgetId', this.id);\n this.domNode.setMaxWidth(this._maxWidth);\n }\n onConfigurationChanged(e) {\n const options = this._context.configuration.options;\n this._lineHeight = options.get(67 /* EditorOption.lineHeight */);\n if (e.hasChanged(145 /* EditorOption.layoutInfo */)) {\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._contentLeft = layoutInfo.contentLeft;\n this._contentWidth = layoutInfo.contentWidth;\n this._maxWidth = this._getMaxWidth();\n }\n }\n updateAnchorViewPosition() {\n this._setPosition(this._affinity, this._primaryAnchor.modelPosition, this._secondaryAnchor.modelPosition);\n }\n _setPosition(affinity, primaryAnchor, secondaryAnchor) {\n this._affinity = affinity;\n this._primaryAnchor = getValidPositionPair(primaryAnchor, this._context.viewModel, this._affinity);\n this._secondaryAnchor = getValidPositionPair(secondaryAnchor, this._context.viewModel, this._affinity);\n function getValidPositionPair(position, viewModel, affinity) {\n if (!position) {\n return new PositionPair(null, null);\n }\n // Do not trust that widgets give a valid position\n const validModelPosition = viewModel.model.validatePosition(position);\n if (viewModel.coordinatesConverter.modelPositionIsVisible(validModelPosition)) {\n const viewPosition = viewModel.coordinatesConverter.convertModelPositionToViewPosition(validModelPosition, affinity !== null && affinity !== void 0 ? affinity : undefined);\n return new PositionPair(position, viewPosition);\n }\n return new PositionPair(position, null);\n }\n }\n _getMaxWidth() {\n const elDocument = this.domNode.domNode.ownerDocument;\n const elWindow = elDocument.defaultView;\n return (this.allowEditorOverflow\n ? (elWindow === null || elWindow === void 0 ? void 0 : elWindow.innerWidth) || elDocument.documentElement.offsetWidth || elDocument.body.offsetWidth\n : this._contentWidth);\n }\n setPosition(primaryAnchor, secondaryAnchor, preference, affinity) {\n this._setPosition(affinity, primaryAnchor, secondaryAnchor);\n this._preference = preference;\n if (this._primaryAnchor.viewPosition && this._preference && this._preference.length > 0) {\n // this content widget would like to be visible if possible\n // we change it from `display:none` to `display:block` even if it\n // might be outside the viewport such that we can measure its size\n // in `prepareRender`\n this.domNode.setDisplay('block');\n }\n else {\n this.domNode.setDisplay('none');\n }\n this._cachedDomNodeOffsetWidth = -1;\n this._cachedDomNodeOffsetHeight = -1;\n }\n _layoutBoxInViewport(anchor, width, height, ctx) {\n // Our visible box is split horizontally by the current line => 2 boxes\n // a) the box above the line\n const aboveLineTop = anchor.top;\n const heightAvailableAboveLine = aboveLineTop;\n // b) the box under the line\n const underLineTop = anchor.top + anchor.height;\n const heightAvailableUnderLine = ctx.viewportHeight - underLineTop;\n const aboveTop = aboveLineTop - height;\n const fitsAbove = (heightAvailableAboveLine >= height);\n const belowTop = underLineTop;\n const fitsBelow = (heightAvailableUnderLine >= height);\n // And its left\n let left = anchor.left;\n if (left + width > ctx.scrollLeft + ctx.viewportWidth) {\n left = ctx.scrollLeft + ctx.viewportWidth - width;\n }\n if (left < ctx.scrollLeft) {\n left = ctx.scrollLeft;\n }\n return { fitsAbove, aboveTop, fitsBelow, belowTop, left };\n }\n _layoutHorizontalSegmentInPage(windowSize, domNodePosition, left, width) {\n var _a;\n // Leave some clearance to the left/right\n const LEFT_PADDING = 15;\n const RIGHT_PADDING = 15;\n // Initially, the limits are defined as the dom node limits\n const MIN_LIMIT = Math.max(LEFT_PADDING, domNodePosition.left - width);\n const MAX_LIMIT = Math.min(domNodePosition.left + domNodePosition.width + width, windowSize.width - RIGHT_PADDING);\n const elDocument = this._viewDomNode.domNode.ownerDocument;\n const elWindow = elDocument.defaultView;\n let absoluteLeft = domNodePosition.left + left - ((_a = elWindow === null || elWindow === void 0 ? void 0 : elWindow.scrollX) !== null && _a !== void 0 ? _a : 0);\n if (absoluteLeft + width > MAX_LIMIT) {\n const delta = absoluteLeft - (MAX_LIMIT - width);\n absoluteLeft -= delta;\n left -= delta;\n }\n if (absoluteLeft < MIN_LIMIT) {\n const delta = absoluteLeft - MIN_LIMIT;\n absoluteLeft -= delta;\n left -= delta;\n }\n return [left, absoluteLeft];\n }\n _layoutBoxInPage(anchor, width, height, ctx) {\n var _a, _b;\n const aboveTop = anchor.top - height;\n const belowTop = anchor.top + anchor.height;\n const domNodePosition = dom.getDomNodePagePosition(this._viewDomNode.domNode);\n const elDocument = this._viewDomNode.domNode.ownerDocument;\n const elWindow = elDocument.defaultView;\n const absoluteAboveTop = domNodePosition.top + aboveTop - ((_a = elWindow === null || elWindow === void 0 ? void 0 : elWindow.scrollY) !== null && _a !== void 0 ? _a : 0);\n const absoluteBelowTop = domNodePosition.top + belowTop - ((_b = elWindow === null || elWindow === void 0 ? void 0 : elWindow.scrollY) !== null && _b !== void 0 ? _b : 0);\n const windowSize = dom.getClientArea(elDocument.body);\n const [left, absoluteAboveLeft] = this._layoutHorizontalSegmentInPage(windowSize, domNodePosition, anchor.left - ctx.scrollLeft + this._contentLeft, width);\n // Leave some clearance to the top/bottom\n const TOP_PADDING = 22;\n const BOTTOM_PADDING = 22;\n const fitsAbove = (absoluteAboveTop >= TOP_PADDING);\n const fitsBelow = (absoluteBelowTop + height <= windowSize.height - BOTTOM_PADDING);\n if (this._fixedOverflowWidgets) {\n return {\n fitsAbove,\n aboveTop: Math.max(absoluteAboveTop, TOP_PADDING),\n fitsBelow,\n belowTop: absoluteBelowTop,\n left: absoluteAboveLeft\n };\n }\n return { fitsAbove, aboveTop, fitsBelow, belowTop, left };\n }\n _prepareRenderWidgetAtExactPositionOverflowing(topLeft) {\n return new Coordinate(topLeft.top, topLeft.left + this._contentLeft);\n }\n /**\n * Compute the coordinates above and below the primary and secondary anchors.\n * The content widget *must* touch the primary anchor.\n * The content widget should touch if possible the secondary anchor.\n */\n _getAnchorsCoordinates(ctx) {\n var _a, _b;\n const primary = getCoordinates(this._primaryAnchor.viewPosition, this._affinity, this._lineHeight);\n const secondaryViewPosition = (((_a = this._secondaryAnchor.viewPosition) === null || _a === void 0 ? void 0 : _a.lineNumber) === ((_b = this._primaryAnchor.viewPosition) === null || _b === void 0 ? void 0 : _b.lineNumber) ? this._secondaryAnchor.viewPosition : null);\n const secondary = getCoordinates(secondaryViewPosition, this._affinity, this._lineHeight);\n return { primary, secondary };\n function getCoordinates(position, affinity, lineHeight) {\n if (!position) {\n return null;\n }\n const horizontalPosition = ctx.visibleRangeForPosition(position);\n if (!horizontalPosition) {\n return null;\n }\n // Left-align widgets that should appear :before content\n const left = (position.column === 1 && affinity === 3 /* PositionAffinity.LeftOfInjectedText */ ? 0 : horizontalPosition.left);\n const top = ctx.getVerticalOffsetForLineNumber(position.lineNumber) - ctx.scrollTop;\n return new AnchorCoordinate(top, left, lineHeight);\n }\n }\n _reduceAnchorCoordinates(primary, secondary, width) {\n if (!secondary) {\n return primary;\n }\n const fontInfo = this._context.configuration.options.get(50 /* EditorOption.fontInfo */);\n let left = secondary.left;\n if (left < primary.left) {\n left = Math.max(left, primary.left - width + fontInfo.typicalFullwidthCharacterWidth);\n }\n else {\n left = Math.min(left, primary.left + width - fontInfo.typicalFullwidthCharacterWidth);\n }\n return new AnchorCoordinate(primary.top, left, primary.height);\n }\n _prepareRenderWidget(ctx) {\n if (!this._preference || this._preference.length === 0) {\n return null;\n }\n const { primary, secondary } = this._getAnchorsCoordinates(ctx);\n if (!primary) {\n return {\n kind: 'offViewport',\n preserveFocus: this.domNode.domNode.contains(this.domNode.domNode.ownerDocument.activeElement)\n };\n // return null;\n }\n if (this._cachedDomNodeOffsetWidth === -1 || this._cachedDomNodeOffsetHeight === -1) {\n let preferredDimensions = null;\n if (typeof this._actual.beforeRender === 'function') {\n preferredDimensions = safeInvoke(this._actual.beforeRender, this._actual);\n }\n if (preferredDimensions) {\n this._cachedDomNodeOffsetWidth = preferredDimensions.width;\n this._cachedDomNodeOffsetHeight = preferredDimensions.height;\n }\n else {\n const domNode = this.domNode.domNode;\n const clientRect = domNode.getBoundingClientRect();\n this._cachedDomNodeOffsetWidth = Math.round(clientRect.width);\n this._cachedDomNodeOffsetHeight = Math.round(clientRect.height);\n }\n }\n const anchor = this._reduceAnchorCoordinates(primary, secondary, this._cachedDomNodeOffsetWidth);\n let placement;\n if (this.allowEditorOverflow) {\n placement = this._layoutBoxInPage(anchor, this._cachedDomNodeOffsetWidth, this._cachedDomNodeOffsetHeight, ctx);\n }\n else {\n placement = this._layoutBoxInViewport(anchor, this._cachedDomNodeOffsetWidth, this._cachedDomNodeOffsetHeight, ctx);\n }\n // Do two passes, first for perfect fit, second picks first option\n for (let pass = 1; pass <= 2; pass++) {\n for (const pref of this._preference) {\n // placement\n if (pref === 1 /* ContentWidgetPositionPreference.ABOVE */) {\n if (!placement) {\n // Widget outside of viewport\n return null;\n }\n if (pass === 2 || placement.fitsAbove) {\n return {\n kind: 'inViewport',\n coordinate: new Coordinate(placement.aboveTop, placement.left),\n position: 1 /* ContentWidgetPositionPreference.ABOVE */\n };\n }\n }\n else if (pref === 2 /* ContentWidgetPositionPreference.BELOW */) {\n if (!placement) {\n // Widget outside of viewport\n return null;\n }\n if (pass === 2 || placement.fitsBelow) {\n return {\n kind: 'inViewport',\n coordinate: new Coordinate(placement.belowTop, placement.left),\n position: 2 /* ContentWidgetPositionPreference.BELOW */\n };\n }\n }\n else {\n if (this.allowEditorOverflow) {\n return {\n kind: 'inViewport',\n coordinate: this._prepareRenderWidgetAtExactPositionOverflowing(new Coordinate(anchor.top, anchor.left)),\n position: 0 /* ContentWidgetPositionPreference.EXACT */\n };\n }\n else {\n return {\n kind: 'inViewport',\n coordinate: new Coordinate(anchor.top, anchor.left),\n position: 0 /* ContentWidgetPositionPreference.EXACT */\n };\n }\n }\n }\n }\n return null;\n }\n /**\n * On this first pass, we ensure that the content widget (if it is in the viewport) has the max width set correctly.\n */\n onBeforeRender(viewportData) {\n if (!this._primaryAnchor.viewPosition || !this._preference) {\n return;\n }\n if (this._primaryAnchor.viewPosition.lineNumber < viewportData.startLineNumber || this._primaryAnchor.viewPosition.lineNumber > viewportData.endLineNumber) {\n // Outside of viewport\n return;\n }\n this.domNode.setMaxWidth(this._maxWidth);\n }\n prepareRender(ctx) {\n this._renderData = this._prepareRenderWidget(ctx);\n }\n render(ctx) {\n var _a;\n if (!this._renderData || this._renderData.kind === 'offViewport') {\n // This widget should be invisible\n if (this._isVisible) {\n this.domNode.removeAttribute('monaco-visible-content-widget');\n this._isVisible = false;\n if (((_a = this._renderData) === null || _a === void 0 ? void 0 : _a.kind) === 'offViewport' && this._renderData.preserveFocus) {\n // widget wants to be shown, but it is outside of the viewport and it\n // has focus which we need to preserve\n this.domNode.setTop(-1000);\n }\n else {\n this.domNode.setVisibility('hidden');\n }\n }\n if (typeof this._actual.afterRender === 'function') {\n safeInvoke(this._actual.afterRender, this._actual, null);\n }\n return;\n }\n // This widget should be visible\n if (this.allowEditorOverflow) {\n this.domNode.setTop(this._renderData.coordinate.top);\n this.domNode.setLeft(this._renderData.coordinate.left);\n }\n else {\n this.domNode.setTop(this._renderData.coordinate.top + ctx.scrollTop - ctx.bigNumbersDelta);\n this.domNode.setLeft(this._renderData.coordinate.left);\n }\n if (!this._isVisible) {\n this.domNode.setVisibility('inherit');\n this.domNode.setAttribute('monaco-visible-content-widget', 'true');\n this._isVisible = true;\n }\n if (typeof this._actual.afterRender === 'function') {\n safeInvoke(this._actual.afterRender, this._actual, this._renderData.position);\n }\n }\n}\nclass PositionPair {\n constructor(modelPosition, viewPosition) {\n this.modelPosition = modelPosition;\n this.viewPosition = viewPosition;\n }\n}\nclass Coordinate {\n constructor(top, left) {\n this.top = top;\n this.left = left;\n this._coordinateBrand = undefined;\n }\n}\nclass AnchorCoordinate {\n constructor(top, left, height) {\n this.top = top;\n this.left = left;\n this.height = height;\n this._anchorCoordinateBrand = undefined;\n }\n}\nfunction safeInvoke(fn, thisArg, ...args) {\n try {\n return fn.call(thisArg, ...args);\n }\n catch (_a) {\n // ignore\n return null;\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 './currentLineHighlight.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { editorLineHighlight, editorLineHighlightBorder } from '../../../common/core/editorColorRegistry.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { Position } from '../../../common/core/position.js';\nexport class AbstractLineHighlightOverlay extends DynamicViewOverlay {\n constructor(context) {\n super();\n this._context = context;\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._renderLineHighlight = options.get(96 /* EditorOption.renderLineHighlight */);\n this._renderLineHighlightOnlyWhenFocus = options.get(97 /* EditorOption.renderLineHighlightOnlyWhenFocus */);\n this._wordWrap = layoutInfo.isViewportWrapping;\n this._contentLeft = layoutInfo.contentLeft;\n this._contentWidth = layoutInfo.contentWidth;\n this._selectionIsEmpty = true;\n this._focused = false;\n this._cursorLineNumbers = [1];\n this._selections = [new Selection(1, 1, 1, 1)];\n this._renderData = null;\n this._context.addEventHandler(this);\n }\n dispose() {\n this._context.removeEventHandler(this);\n super.dispose();\n }\n _readFromSelections() {\n let hasChanged = false;\n const lineNumbers = new Set();\n for (const selection of this._selections) {\n lineNumbers.add(selection.positionLineNumber);\n }\n const cursorsLineNumbers = Array.from(lineNumbers);\n cursorsLineNumbers.sort((a, b) => a - b);\n if (!arrays.equals(this._cursorLineNumbers, cursorsLineNumbers)) {\n this._cursorLineNumbers = cursorsLineNumbers;\n hasChanged = true;\n }\n const selectionIsEmpty = this._selections.every(s => s.isEmpty());\n if (this._selectionIsEmpty !== selectionIsEmpty) {\n this._selectionIsEmpty = selectionIsEmpty;\n hasChanged = true;\n }\n return hasChanged;\n }\n // --- begin event handlers\n onThemeChanged(e) {\n return this._readFromSelections();\n }\n onConfigurationChanged(e) {\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._renderLineHighlight = options.get(96 /* EditorOption.renderLineHighlight */);\n this._renderLineHighlightOnlyWhenFocus = options.get(97 /* EditorOption.renderLineHighlightOnlyWhenFocus */);\n this._wordWrap = layoutInfo.isViewportWrapping;\n this._contentLeft = layoutInfo.contentLeft;\n this._contentWidth = layoutInfo.contentWidth;\n return true;\n }\n onCursorStateChanged(e) {\n this._selections = e.selections;\n return this._readFromSelections();\n }\n onFlushed(e) {\n return true;\n }\n onLinesDeleted(e) {\n return true;\n }\n onLinesInserted(e) {\n return true;\n }\n onScrollChanged(e) {\n return e.scrollWidthChanged || e.scrollTopChanged;\n }\n onZonesChanged(e) {\n return true;\n }\n onFocusChanged(e) {\n if (!this._renderLineHighlightOnlyWhenFocus) {\n return false;\n }\n this._focused = e.isFocused;\n return true;\n }\n // --- end event handlers\n prepareRender(ctx) {\n if (!this._shouldRenderThis()) {\n this._renderData = null;\n return;\n }\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n // initialize renderData\n const renderData = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n renderData[lineIndex] = '';\n }\n if (this._wordWrap) {\n // do a first pass to render wrapped lines\n const renderedLineWrapped = this._renderOne(ctx, false);\n for (const cursorLineNumber of this._cursorLineNumbers) {\n const coordinatesConverter = this._context.viewModel.coordinatesConverter;\n const modelLineNumber = coordinatesConverter.convertViewPositionToModelPosition(new Position(cursorLineNumber, 1)).lineNumber;\n const firstViewLineNumber = coordinatesConverter.convertModelPositionToViewPosition(new Position(modelLineNumber, 1)).lineNumber;\n const lastViewLineNumber = coordinatesConverter.convertModelPositionToViewPosition(new Position(modelLineNumber, this._context.viewModel.model.getLineMaxColumn(modelLineNumber))).lineNumber;\n const firstLine = Math.max(firstViewLineNumber, visibleStartLineNumber);\n const lastLine = Math.min(lastViewLineNumber, visibleEndLineNumber);\n for (let lineNumber = firstLine; lineNumber <= lastLine; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n renderData[lineIndex] = renderedLineWrapped;\n }\n }\n }\n // do a second pass to render exact lines\n const renderedLineExact = this._renderOne(ctx, true);\n for (const cursorLineNumber of this._cursorLineNumbers) {\n if (cursorLineNumber < visibleStartLineNumber || cursorLineNumber > visibleEndLineNumber) {\n continue;\n }\n const lineIndex = cursorLineNumber - visibleStartLineNumber;\n renderData[lineIndex] = renderedLineExact;\n }\n this._renderData = renderData;\n }\n render(startLineNumber, lineNumber) {\n if (!this._renderData) {\n return '';\n }\n const lineIndex = lineNumber - startLineNumber;\n if (lineIndex >= this._renderData.length) {\n return '';\n }\n return this._renderData[lineIndex];\n }\n _shouldRenderInMargin() {\n return ((this._renderLineHighlight === 'gutter' || this._renderLineHighlight === 'all')\n && (!this._renderLineHighlightOnlyWhenFocus || this._focused));\n }\n _shouldRenderInContent() {\n return ((this._renderLineHighlight === 'line' || this._renderLineHighlight === 'all')\n && this._selectionIsEmpty\n && (!this._renderLineHighlightOnlyWhenFocus || this._focused));\n }\n}\nexport class CurrentLineHighlightOverlay extends AbstractLineHighlightOverlay {\n _renderOne(ctx, exact) {\n const className = 'current-line' + (this._shouldRenderInMargin() ? ' current-line-both' : '') + (exact ? ' current-line-exact' : '');\n return `
`;\n }\n _shouldRenderThis() {\n return this._shouldRenderInContent();\n }\n _shouldRenderOther() {\n return this._shouldRenderInMargin();\n }\n}\nexport class CurrentLineMarginHighlightOverlay extends AbstractLineHighlightOverlay {\n _renderOne(ctx, exact) {\n const className = 'current-line' + (this._shouldRenderInMargin() ? ' current-line-margin' : '') + (this._shouldRenderOther() ? ' current-line-margin-both' : '') + (this._shouldRenderInMargin() && exact ? ' current-line-exact-margin' : '');\n return ``;\n }\n _shouldRenderThis() {\n return true;\n }\n _shouldRenderOther() {\n return this._shouldRenderInContent();\n }\n}\nregisterThemingParticipant((theme, collector) => {\n const lineHighlight = theme.getColor(editorLineHighlight);\n if (lineHighlight) {\n collector.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${lineHighlight}; }`);\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${lineHighlight}; border: none; }`);\n }\n if (!lineHighlight || lineHighlight.isTransparent() || theme.defines(editorLineHighlightBorder)) {\n const lineHighlightBorder = theme.getColor(editorLineHighlightBorder);\n if (lineHighlightBorder) {\n collector.addRule(`.monaco-editor .view-overlays .current-line-exact { border: 2px solid ${lineHighlightBorder}; }`);\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid ${lineHighlightBorder}; }`);\n if (isHighContrast(theme.type)) {\n collector.addRule(`.monaco-editor .view-overlays .current-line-exact { border-width: 1px; }`);\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-exact-margin { border-width: 1px; }`);\n }\n }\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 './decorations.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { HorizontalRange } from '../../view/renderingContext.js';\nimport { Range } from '../../../common/core/range.js';\nexport class DecorationsOverlay extends DynamicViewOverlay {\n constructor(context) {\n super();\n this._context = context;\n const options = this._context.configuration.options;\n this._typicalHalfwidthCharacterWidth = options.get(50 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth;\n this._renderResult = null;\n this._context.addEventHandler(this);\n }\n dispose() {\n this._context.removeEventHandler(this);\n this._renderResult = null;\n super.dispose();\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n const options = this._context.configuration.options;\n this._typicalHalfwidthCharacterWidth = options.get(50 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth;\n return true;\n }\n onDecorationsChanged(e) {\n return true;\n }\n onFlushed(e) {\n return true;\n }\n onLinesChanged(e) {\n return true;\n }\n onLinesDeleted(e) {\n return true;\n }\n onLinesInserted(e) {\n return true;\n }\n onScrollChanged(e) {\n return e.scrollTopChanged || e.scrollWidthChanged;\n }\n onZonesChanged(e) {\n return true;\n }\n // --- end event handlers\n prepareRender(ctx) {\n const _decorations = ctx.getDecorationsInViewport();\n // Keep only decorations with `className`\n let decorations = [];\n let decorationsLen = 0;\n for (let i = 0, len = _decorations.length; i < len; i++) {\n const d = _decorations[i];\n if (d.options.className) {\n decorations[decorationsLen++] = d;\n }\n }\n // Sort decorations for consistent render output\n decorations = decorations.sort((a, b) => {\n if (a.options.zIndex < b.options.zIndex) {\n return -1;\n }\n if (a.options.zIndex > b.options.zIndex) {\n return 1;\n }\n const aClassName = a.options.className;\n const bClassName = b.options.className;\n if (aClassName < bClassName) {\n return -1;\n }\n if (aClassName > bClassName) {\n return 1;\n }\n return Range.compareRangesUsingStarts(a.range, b.range);\n });\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n const output = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n output[lineIndex] = '';\n }\n // Render first whole line decorations and then regular decorations\n this._renderWholeLineDecorations(ctx, decorations, output);\n this._renderNormalDecorations(ctx, decorations, output);\n this._renderResult = output;\n }\n _renderWholeLineDecorations(ctx, decorations, output) {\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n for (let i = 0, lenI = decorations.length; i < lenI; i++) {\n const d = decorations[i];\n if (!d.options.isWholeLine) {\n continue;\n }\n const decorationOutput = ('');\n const startLineNumber = Math.max(d.range.startLineNumber, visibleStartLineNumber);\n const endLineNumber = Math.min(d.range.endLineNumber, visibleEndLineNumber);\n for (let j = startLineNumber; j <= endLineNumber; j++) {\n const lineIndex = j - visibleStartLineNumber;\n output[lineIndex] += decorationOutput;\n }\n }\n }\n _renderNormalDecorations(ctx, decorations, output) {\n var _a;\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n let prevClassName = null;\n let prevShowIfCollapsed = false;\n let prevRange = null;\n let prevShouldFillLineOnLineBreak = false;\n for (let i = 0, lenI = decorations.length; i < lenI; i++) {\n const d = decorations[i];\n if (d.options.isWholeLine) {\n continue;\n }\n const className = d.options.className;\n const showIfCollapsed = Boolean(d.options.showIfCollapsed);\n let range = d.range;\n if (showIfCollapsed && range.endColumn === 1 && range.endLineNumber !== range.startLineNumber) {\n range = new Range(range.startLineNumber, range.startColumn, range.endLineNumber - 1, this._context.viewModel.getLineMaxColumn(range.endLineNumber - 1));\n }\n if (prevClassName === className && prevShowIfCollapsed === showIfCollapsed && Range.areIntersectingOrTouching(prevRange, range)) {\n // merge into previous decoration\n prevRange = Range.plusRange(prevRange, range);\n continue;\n }\n // flush previous decoration\n if (prevClassName !== null) {\n this._renderNormalDecoration(ctx, prevRange, prevClassName, prevShouldFillLineOnLineBreak, prevShowIfCollapsed, visibleStartLineNumber, output);\n }\n prevClassName = className;\n prevShowIfCollapsed = showIfCollapsed;\n prevRange = range;\n prevShouldFillLineOnLineBreak = (_a = d.options.shouldFillLineOnLineBreak) !== null && _a !== void 0 ? _a : false;\n }\n if (prevClassName !== null) {\n this._renderNormalDecoration(ctx, prevRange, prevClassName, prevShouldFillLineOnLineBreak, prevShowIfCollapsed, visibleStartLineNumber, output);\n }\n }\n _renderNormalDecoration(ctx, range, className, shouldFillLineOnLineBreak, showIfCollapsed, visibleStartLineNumber, output) {\n const linesVisibleRanges = ctx.linesVisibleRangesForRange(range, /*TODO@Alex*/ className === 'findMatch');\n if (!linesVisibleRanges) {\n return;\n }\n for (let j = 0, lenJ = linesVisibleRanges.length; j < lenJ; j++) {\n const lineVisibleRanges = linesVisibleRanges[j];\n if (lineVisibleRanges.outsideRenderedLine) {\n continue;\n }\n const lineIndex = lineVisibleRanges.lineNumber - visibleStartLineNumber;\n if (showIfCollapsed && lineVisibleRanges.ranges.length === 1) {\n const singleVisibleRange = lineVisibleRanges.ranges[0];\n if (singleVisibleRange.width < this._typicalHalfwidthCharacterWidth) {\n // collapsed/very small range case => make the decoration visible by expanding its width\n // expand its size on both sides (both to the left and to the right, keeping it centered)\n const center = Math.round(singleVisibleRange.left + singleVisibleRange.width / 2);\n const left = Math.max(0, Math.round(center - this._typicalHalfwidthCharacterWidth / 2));\n lineVisibleRanges.ranges[0] = new HorizontalRange(left, this._typicalHalfwidthCharacterWidth);\n }\n }\n for (let k = 0, lenK = lineVisibleRanges.ranges.length; k < lenK; k++) {\n const expandToLeft = shouldFillLineOnLineBreak && lineVisibleRanges.continuesOnNextLine && lenK === 1;\n const visibleRange = lineVisibleRanges.ranges[k];\n const decorationOutput = ('');\n output[lineIndex] += decorationOutput;\n }\n }\n }\n render(startLineNumber, lineNumber) {\n if (!this._renderResult) {\n return '';\n }\n const lineIndex = lineNumber - startLineNumber;\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n return '';\n }\n return this._renderResult[lineIndex];\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 '../../../../base/browser/dom.js';\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\nimport { SmoothScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\nimport { getThemeTypeSelector } from '../../../../platform/theme/common/themeService.js';\nexport class EditorScrollbar extends ViewPart {\n constructor(context, linesContent, viewDomNode, overflowGuardDomNode) {\n super(context);\n const options = this._context.configuration.options;\n const scrollbar = options.get(103 /* EditorOption.scrollbar */);\n const mouseWheelScrollSensitivity = options.get(75 /* EditorOption.mouseWheelScrollSensitivity */);\n const fastScrollSensitivity = options.get(40 /* EditorOption.fastScrollSensitivity */);\n const scrollPredominantAxis = options.get(106 /* EditorOption.scrollPredominantAxis */);\n const scrollbarOptions = {\n listenOnDomNode: viewDomNode.domNode,\n className: 'editor-scrollable' + ' ' + getThemeTypeSelector(context.theme.type),\n useShadows: false,\n lazyRender: true,\n vertical: scrollbar.vertical,\n horizontal: scrollbar.horizontal,\n verticalHasArrows: scrollbar.verticalHasArrows,\n horizontalHasArrows: scrollbar.horizontalHasArrows,\n verticalScrollbarSize: scrollbar.verticalScrollbarSize,\n verticalSliderSize: scrollbar.verticalSliderSize,\n horizontalScrollbarSize: scrollbar.horizontalScrollbarSize,\n horizontalSliderSize: scrollbar.horizontalSliderSize,\n handleMouseWheel: scrollbar.handleMouseWheel,\n alwaysConsumeMouseWheel: scrollbar.alwaysConsumeMouseWheel,\n arrowSize: scrollbar.arrowSize,\n mouseWheelScrollSensitivity: mouseWheelScrollSensitivity,\n fastScrollSensitivity: fastScrollSensitivity,\n scrollPredominantAxis: scrollPredominantAxis,\n scrollByPage: scrollbar.scrollByPage,\n };\n this.scrollbar = this._register(new SmoothScrollableElement(linesContent.domNode, scrollbarOptions, this._context.viewLayout.getScrollable()));\n PartFingerprints.write(this.scrollbar.getDomNode(), 6 /* PartFingerprint.ScrollableElement */);\n this.scrollbarDomNode = createFastDomNode(this.scrollbar.getDomNode());\n this.scrollbarDomNode.setPosition('absolute');\n this._setLayout();\n // When having a zone widget that calls .focus() on one of its dom elements,\n // the browser will try desperately to reveal that dom node, unexpectedly\n // changing the .scrollTop of this.linesContent\n const onBrowserDesperateReveal = (domNode, lookAtScrollTop, lookAtScrollLeft) => {\n const newScrollPosition = {};\n if (lookAtScrollTop) {\n const deltaTop = domNode.scrollTop;\n if (deltaTop) {\n newScrollPosition.scrollTop = this._context.viewLayout.getCurrentScrollTop() + deltaTop;\n domNode.scrollTop = 0;\n }\n }\n if (lookAtScrollLeft) {\n const deltaLeft = domNode.scrollLeft;\n if (deltaLeft) {\n newScrollPosition.scrollLeft = this._context.viewLayout.getCurrentScrollLeft() + deltaLeft;\n domNode.scrollLeft = 0;\n }\n }\n this._context.viewModel.viewLayout.setScrollPosition(newScrollPosition, 1 /* ScrollType.Immediate */);\n };\n // I've seen this happen both on the view dom node & on the lines content dom node.\n this._register(dom.addDisposableListener(viewDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(viewDomNode.domNode, true, true)));\n this._register(dom.addDisposableListener(linesContent.domNode, 'scroll', (e) => onBrowserDesperateReveal(linesContent.domNode, true, false)));\n this._register(dom.addDisposableListener(overflowGuardDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(overflowGuardDomNode.domNode, true, false)));\n this._register(dom.addDisposableListener(this.scrollbarDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(this.scrollbarDomNode.domNode, true, false)));\n }\n dispose() {\n super.dispose();\n }\n _setLayout() {\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this.scrollbarDomNode.setLeft(layoutInfo.contentLeft);\n const minimap = options.get(73 /* EditorOption.minimap */);\n const side = minimap.side;\n if (side === 'right') {\n this.scrollbarDomNode.setWidth(layoutInfo.contentWidth + layoutInfo.minimap.minimapWidth);\n }\n else {\n this.scrollbarDomNode.setWidth(layoutInfo.contentWidth);\n }\n this.scrollbarDomNode.setHeight(layoutInfo.height);\n }\n getOverviewRulerLayoutInfo() {\n return this.scrollbar.getOverviewRulerLayoutInfo();\n }\n getDomNode() {\n return this.scrollbarDomNode;\n }\n delegateVerticalScrollbarPointerDown(browserEvent) {\n this.scrollbar.delegateVerticalScrollbarPointerDown(browserEvent);\n }\n delegateScrollFromMouseWheelEvent(browserEvent) {\n this.scrollbar.delegateScrollFromMouseWheelEvent(browserEvent);\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n if (e.hasChanged(103 /* EditorOption.scrollbar */)\n || e.hasChanged(75 /* EditorOption.mouseWheelScrollSensitivity */)\n || e.hasChanged(40 /* EditorOption.fastScrollSensitivity */)) {\n const options = this._context.configuration.options;\n const scrollbar = options.get(103 /* EditorOption.scrollbar */);\n const mouseWheelScrollSensitivity = options.get(75 /* EditorOption.mouseWheelScrollSensitivity */);\n const fastScrollSensitivity = options.get(40 /* EditorOption.fastScrollSensitivity */);\n const scrollPredominantAxis = options.get(106 /* EditorOption.scrollPredominantAxis */);\n const newOpts = {\n vertical: scrollbar.vertical,\n horizontal: scrollbar.horizontal,\n verticalScrollbarSize: scrollbar.verticalScrollbarSize,\n horizontalScrollbarSize: scrollbar.horizontalScrollbarSize,\n scrollByPage: scrollbar.scrollByPage,\n handleMouseWheel: scrollbar.handleMouseWheel,\n mouseWheelScrollSensitivity: mouseWheelScrollSensitivity,\n fastScrollSensitivity: fastScrollSensitivity,\n scrollPredominantAxis: scrollPredominantAxis\n };\n this.scrollbar.updateOptions(newOpts);\n }\n if (e.hasChanged(145 /* EditorOption.layoutInfo */)) {\n this._setLayout();\n }\n return true;\n }\n onScrollChanged(e) {\n return true;\n }\n onThemeChanged(e) {\n this.scrollbar.updateClassName('editor-scrollable' + ' ' + getThemeTypeSelector(this._context.theme.type));\n return true;\n }\n // --- end event handlers\n prepareRender(ctx) {\n // Nothing to do\n }\n render(ctx) {\n this.scrollbar.renderNow();\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 { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\nimport { ArrayQueue } from '../../../../base/common/arrays.js';\nimport './glyphMargin.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { ViewPart } from '../../view/viewPart.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { GlyphMarginLane } from '../../../common/model.js';\n/**\n * Represents a decoration that should be shown along the lines from `startLineNumber` to `endLineNumber`.\n * This can end up producing multiple `LineDecorationToRender`.\n */\nexport class DecorationToRender {\n constructor(startLineNumber, endLineNumber, className, tooltip, zIndex) {\n this.startLineNumber = startLineNumber;\n this.endLineNumber = endLineNumber;\n this.className = className;\n this.tooltip = tooltip;\n this._decorationToRenderBrand = undefined;\n this.zIndex = zIndex !== null && zIndex !== void 0 ? zIndex : 0;\n }\n}\n/**\n * A decoration that should be shown along a line.\n */\nexport class LineDecorationToRender {\n constructor(className, zIndex, tooltip) {\n this.className = className;\n this.zIndex = zIndex;\n this.tooltip = tooltip;\n }\n}\n/**\n * Decorations to render on a visible line.\n */\nexport class VisibleLineDecorationsToRender {\n constructor() {\n this.decorations = [];\n }\n add(decoration) {\n this.decorations.push(decoration);\n }\n getDecorations() {\n return this.decorations;\n }\n}\nexport class DedupOverlay extends DynamicViewOverlay {\n /**\n * Returns an array with an element for each visible line number.\n */\n _render(visibleStartLineNumber, visibleEndLineNumber, decorations) {\n const output = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n output[lineIndex] = new VisibleLineDecorationsToRender();\n }\n if (decorations.length === 0) {\n return output;\n }\n // Sort decorations by className, then by startLineNumber and then by endLineNumber\n decorations.sort((a, b) => {\n if (a.className === b.className) {\n if (a.startLineNumber === b.startLineNumber) {\n return a.endLineNumber - b.endLineNumber;\n }\n return a.startLineNumber - b.startLineNumber;\n }\n return (a.className < b.className ? -1 : 1);\n });\n let prevClassName = null;\n let prevEndLineIndex = 0;\n for (let i = 0, len = decorations.length; i < len; i++) {\n const d = decorations[i];\n const className = d.className;\n const zIndex = d.zIndex;\n let startLineIndex = Math.max(d.startLineNumber, visibleStartLineNumber) - visibleStartLineNumber;\n const endLineIndex = Math.min(d.endLineNumber, visibleEndLineNumber) - visibleStartLineNumber;\n if (prevClassName === className) {\n // Here we avoid rendering the same className multiple times on the same line\n startLineIndex = Math.max(prevEndLineIndex + 1, startLineIndex);\n prevEndLineIndex = Math.max(prevEndLineIndex, endLineIndex);\n }\n else {\n prevClassName = className;\n prevEndLineIndex = endLineIndex;\n }\n for (let i = startLineIndex; i <= prevEndLineIndex; i++) {\n output[i].add(new LineDecorationToRender(className, zIndex, d.tooltip));\n }\n }\n return output;\n }\n}\nexport class GlyphMarginWidgets extends ViewPart {\n constructor(context) {\n super(context);\n this._widgets = {};\n this._context = context;\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this.domNode = createFastDomNode(document.createElement('div'));\n this.domNode.setClassName('glyph-margin-widgets');\n this.domNode.setPosition('absolute');\n this.domNode.setTop(0);\n this._lineHeight = options.get(67 /* EditorOption.lineHeight */);\n this._glyphMargin = options.get(57 /* EditorOption.glyphMargin */);\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\n this._glyphMarginDecorationLaneCount = layoutInfo.glyphMarginDecorationLaneCount;\n this._managedDomNodes = [];\n this._decorationGlyphsToRender = [];\n }\n dispose() {\n this._managedDomNodes = [];\n this._decorationGlyphsToRender = [];\n this._widgets = {};\n super.dispose();\n }\n getWidgets() {\n return Object.values(this._widgets);\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n const options = this._context.configuration.options;\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._lineHeight = options.get(67 /* EditorOption.lineHeight */);\n this._glyphMargin = options.get(57 /* EditorOption.glyphMargin */);\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\n this._glyphMarginDecorationLaneCount = layoutInfo.glyphMarginDecorationLaneCount;\n return true;\n }\n onDecorationsChanged(e) {\n return true;\n }\n onFlushed(e) {\n return true;\n }\n onLinesChanged(e) {\n return true;\n }\n onLinesDeleted(e) {\n return true;\n }\n onLinesInserted(e) {\n return true;\n }\n onScrollChanged(e) {\n return e.scrollTopChanged;\n }\n onZonesChanged(e) {\n return true;\n }\n // --- end event handlers\n // --- begin widget management\n addWidget(widget) {\n const domNode = createFastDomNode(widget.getDomNode());\n this._widgets[widget.getId()] = {\n widget: widget,\n preference: widget.getPosition(),\n domNode: domNode,\n renderInfo: null\n };\n domNode.setPosition('absolute');\n domNode.setDisplay('none');\n domNode.setAttribute('widgetId', widget.getId());\n this.domNode.appendChild(domNode);\n this.setShouldRender();\n }\n setWidgetPosition(widget, preference) {\n const myWidget = this._widgets[widget.getId()];\n if (myWidget.preference.lane === preference.lane\n && myWidget.preference.zIndex === preference.zIndex\n && Range.equalsRange(myWidget.preference.range, preference.range)) {\n return false;\n }\n myWidget.preference = preference;\n this.setShouldRender();\n return true;\n }\n removeWidget(widget) {\n var _a;\n const widgetId = widget.getId();\n if (this._widgets[widgetId]) {\n const widgetData = this._widgets[widgetId];\n const domNode = widgetData.domNode.domNode;\n delete this._widgets[widgetId];\n (_a = domNode.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(domNode);\n this.setShouldRender();\n }\n }\n // --- end widget management\n _collectDecorationBasedGlyphRenderRequest(ctx, requests) {\n var _a, _b, _c;\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n const decorations = ctx.getDecorationsInViewport();\n for (const d of decorations) {\n const glyphMarginClassName = d.options.glyphMarginClassName;\n if (!glyphMarginClassName) {\n continue;\n }\n const startLineNumber = Math.max(d.range.startLineNumber, visibleStartLineNumber);\n const endLineNumber = Math.min(d.range.endLineNumber, visibleEndLineNumber);\n const lane = (_b = (_a = d.options.glyphMargin) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : GlyphMarginLane.Center;\n const zIndex = (_c = d.options.zIndex) !== null && _c !== void 0 ? _c : 0;\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n const modelPosition = this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(lineNumber, 0));\n const laneIndex = this._context.viewModel.glyphLanes.getLanesAtLine(modelPosition.lineNumber).indexOf(lane);\n requests.push(new DecorationBasedGlyphRenderRequest(lineNumber, laneIndex, zIndex, glyphMarginClassName));\n }\n }\n }\n _collectWidgetBasedGlyphRenderRequest(ctx, requests) {\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n for (const widget of Object.values(this._widgets)) {\n const range = widget.preference.range;\n const { startLineNumber, endLineNumber } = this._context.viewModel.coordinatesConverter.convertModelRangeToViewRange(Range.lift(range));\n if (!startLineNumber || !endLineNumber || endLineNumber < visibleStartLineNumber || startLineNumber > visibleEndLineNumber) {\n // The widget is not in the viewport\n continue;\n }\n // The widget is in the viewport, find a good line for it\n const widgetLineNumber = Math.max(startLineNumber, visibleStartLineNumber);\n const modelPosition = this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(widgetLineNumber, 0));\n const laneIndex = this._context.viewModel.glyphLanes.getLanesAtLine(modelPosition.lineNumber).indexOf(widget.preference.lane);\n requests.push(new WidgetBasedGlyphRenderRequest(widgetLineNumber, laneIndex, widget.preference.zIndex, widget));\n }\n }\n _collectSortedGlyphRenderRequests(ctx) {\n const requests = [];\n this._collectDecorationBasedGlyphRenderRequest(ctx, requests);\n this._collectWidgetBasedGlyphRenderRequest(ctx, requests);\n // sort requests by lineNumber ASC, lane ASC, zIndex DESC, type DESC (widgets first), className ASC\n // don't change this sort unless you understand `prepareRender` below.\n requests.sort((a, b) => {\n if (a.lineNumber === b.lineNumber) {\n if (a.laneIndex === b.laneIndex) {\n if (a.zIndex === b.zIndex) {\n if (b.type === a.type) {\n if (a.type === 0 /* GlyphRenderRequestType.Decoration */ && b.type === 0 /* GlyphRenderRequestType.Decoration */) {\n return (a.className < b.className ? -1 : 1);\n }\n return 0;\n }\n return b.type - a.type;\n }\n return b.zIndex - a.zIndex;\n }\n return a.laneIndex - b.laneIndex;\n }\n return a.lineNumber - b.lineNumber;\n });\n return requests;\n }\n /**\n * Will store render information in each widget's renderInfo and in `_decorationGlyphsToRender`.\n */\n prepareRender(ctx) {\n if (!this._glyphMargin) {\n this._decorationGlyphsToRender = [];\n return;\n }\n for (const widget of Object.values(this._widgets)) {\n widget.renderInfo = null;\n }\n const requests = new ArrayQueue(this._collectSortedGlyphRenderRequests(ctx));\n const decorationGlyphsToRender = [];\n while (requests.length > 0) {\n const first = requests.peek();\n if (!first) {\n // not possible\n break;\n }\n // Requests are sorted by lineNumber and lane, so we read all requests for this particular location\n const requestsAtLocation = requests.takeWhile((el) => el.lineNumber === first.lineNumber && el.laneIndex === first.laneIndex);\n if (!requestsAtLocation || requestsAtLocation.length === 0) {\n // not possible\n break;\n }\n const winner = requestsAtLocation[0];\n if (winner.type === 0 /* GlyphRenderRequestType.Decoration */) {\n // combine all decorations with the same z-index\n const classNames = [];\n // requests are sorted by zIndex, type, and className so we can dedup className by looking at the previous one\n for (const request of requestsAtLocation) {\n if (request.zIndex !== winner.zIndex || request.type !== winner.type) {\n break;\n }\n if (classNames.length === 0 || classNames[classNames.length - 1] !== request.className) {\n classNames.push(request.className);\n }\n }\n decorationGlyphsToRender.push(winner.accept(classNames.join(' '))); // TODO@joyceerhl Implement overflow for remaining decorations\n }\n else {\n // widgets cannot be combined\n winner.widget.renderInfo = {\n lineNumber: winner.lineNumber,\n laneIndex: winner.laneIndex,\n };\n }\n }\n this._decorationGlyphsToRender = decorationGlyphsToRender;\n }\n render(ctx) {\n if (!this._glyphMargin) {\n for (const widget of Object.values(this._widgets)) {\n widget.domNode.setDisplay('none');\n }\n while (this._managedDomNodes.length > 0) {\n const domNode = this._managedDomNodes.pop();\n domNode === null || domNode === void 0 ? void 0 : domNode.domNode.remove();\n }\n return;\n }\n const width = (Math.round(this._glyphMarginWidth / this._glyphMarginDecorationLaneCount));\n // Render widgets\n for (const widget of Object.values(this._widgets)) {\n if (!widget.renderInfo) {\n // this widget is not visible\n widget.domNode.setDisplay('none');\n }\n else {\n const top = ctx.viewportData.relativeVerticalOffset[widget.renderInfo.lineNumber - ctx.viewportData.startLineNumber];\n const left = this._glyphMarginLeft + widget.renderInfo.laneIndex * this._lineHeight;\n widget.domNode.setDisplay('block');\n widget.domNode.setTop(top);\n widget.domNode.setLeft(left);\n widget.domNode.setWidth(width);\n widget.domNode.setHeight(this._lineHeight);\n }\n }\n // Render decorations, reusing previous dom nodes as possible\n for (let i = 0; i < this._decorationGlyphsToRender.length; i++) {\n const dec = this._decorationGlyphsToRender[i];\n const top = ctx.viewportData.relativeVerticalOffset[dec.lineNumber - ctx.viewportData.startLineNumber];\n const left = this._glyphMarginLeft + dec.laneIndex * this._lineHeight;\n let domNode;\n if (i < this._managedDomNodes.length) {\n domNode = this._managedDomNodes[i];\n }\n else {\n domNode = createFastDomNode(document.createElement('div'));\n this._managedDomNodes.push(domNode);\n this.domNode.appendChild(domNode);\n }\n domNode.setClassName(`cgmr codicon ` + dec.combinedClassName);\n domNode.setPosition(`absolute`);\n domNode.setTop(top);\n domNode.setLeft(left);\n domNode.setWidth(width);\n domNode.setHeight(this._lineHeight);\n }\n // remove extra dom nodes\n while (this._managedDomNodes.length > this._decorationGlyphsToRender.length) {\n const domNode = this._managedDomNodes.pop();\n domNode === null || domNode === void 0 ? void 0 : domNode.domNode.remove();\n }\n }\n}\n/**\n * A request to render a decoration in the glyph margin at a certain location.\n */\nclass DecorationBasedGlyphRenderRequest {\n constructor(lineNumber, laneIndex, zIndex, className) {\n this.lineNumber = lineNumber;\n this.laneIndex = laneIndex;\n this.zIndex = zIndex;\n this.className = className;\n this.type = 0 /* GlyphRenderRequestType.Decoration */;\n }\n accept(combinedClassName) {\n return new DecorationBasedGlyph(this.lineNumber, this.laneIndex, combinedClassName);\n }\n}\n/**\n * A request to render a widget in the glyph margin at a certain location.\n */\nclass WidgetBasedGlyphRenderRequest {\n constructor(lineNumber, laneIndex, zIndex, widget) {\n this.lineNumber = lineNumber;\n this.laneIndex = laneIndex;\n this.zIndex = zIndex;\n this.widget = widget;\n this.type = 1 /* GlyphRenderRequestType.Widget */;\n }\n}\nclass DecorationBasedGlyph {\n constructor(lineNumber, laneIndex, combinedClassName) {\n this.lineNumber = lineNumber;\n this.laneIndex = laneIndex;\n this.combinedClassName = combinedClassName;\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 './indentGuides.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { editorBracketHighlightingForeground1, editorBracketHighlightingForeground2, editorBracketHighlightingForeground3, editorBracketHighlightingForeground4, editorBracketHighlightingForeground5, editorBracketHighlightingForeground6, editorBracketPairGuideActiveBackground1, editorBracketPairGuideActiveBackground2, editorBracketPairGuideActiveBackground3, editorBracketPairGuideActiveBackground4, editorBracketPairGuideActiveBackground5, editorBracketPairGuideActiveBackground6, editorBracketPairGuideBackground1, editorBracketPairGuideBackground2, editorBracketPairGuideBackground3, editorBracketPairGuideBackground4, editorBracketPairGuideBackground5, editorBracketPairGuideBackground6, editorIndentGuide1, editorIndentGuide2, editorIndentGuide3, editorIndentGuide4, editorIndentGuide5, editorIndentGuide6, editorActiveIndentGuide1, editorActiveIndentGuide2, editorActiveIndentGuide3, editorActiveIndentGuide4, editorActiveIndentGuide5, editorActiveIndentGuide6 } from '../../../common/core/editorColorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { Position } from '../../../common/core/position.js';\nimport { ArrayQueue } from '../../../../base/common/arrays.js';\nimport { isDefined } from '../../../../base/common/types.js';\nimport { BracketPairGuidesClassNames } from '../../../common/model/guidesTextModelPart.js';\nimport { IndentGuide, HorizontalGuidesState } from '../../../common/textModelGuides.js';\nexport class IndentGuidesOverlay extends DynamicViewOverlay {\n constructor(context) {\n super();\n this._context = context;\n this._primaryPosition = null;\n const options = this._context.configuration.options;\n const wrappingInfo = options.get(146 /* EditorOption.wrappingInfo */);\n const fontInfo = options.get(50 /* EditorOption.fontInfo */);\n this._spaceWidth = fontInfo.spaceWidth;\n this._maxIndentLeft = wrappingInfo.wrappingColumn === -1 ? -1 : (wrappingInfo.wrappingColumn * fontInfo.typicalHalfwidthCharacterWidth);\n this._bracketPairGuideOptions = options.get(16 /* EditorOption.guides */);\n this._renderResult = null;\n this._context.addEventHandler(this);\n }\n dispose() {\n this._context.removeEventHandler(this);\n this._renderResult = null;\n super.dispose();\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n const options = this._context.configuration.options;\n const wrappingInfo = options.get(146 /* EditorOption.wrappingInfo */);\n const fontInfo = options.get(50 /* EditorOption.fontInfo */);\n this._spaceWidth = fontInfo.spaceWidth;\n this._maxIndentLeft = wrappingInfo.wrappingColumn === -1 ? -1 : (wrappingInfo.wrappingColumn * fontInfo.typicalHalfwidthCharacterWidth);\n this._bracketPairGuideOptions = options.get(16 /* EditorOption.guides */);\n return true;\n }\n onCursorStateChanged(e) {\n var _a;\n const selection = e.selections[0];\n const newPosition = selection.getPosition();\n if (!((_a = this._primaryPosition) === null || _a === void 0 ? void 0 : _a.equals(newPosition))) {\n this._primaryPosition = newPosition;\n return true;\n }\n return false;\n }\n onDecorationsChanged(e) {\n // true for inline decorations\n return true;\n }\n onFlushed(e) {\n return true;\n }\n onLinesChanged(e) {\n return true;\n }\n onLinesDeleted(e) {\n return true;\n }\n onLinesInserted(e) {\n return true;\n }\n onScrollChanged(e) {\n return e.scrollTopChanged; // || e.scrollWidthChanged;\n }\n onZonesChanged(e) {\n return true;\n }\n onLanguageConfigurationChanged(e) {\n return true;\n }\n // --- end event handlers\n prepareRender(ctx) {\n var _a, _b, _c, _d;\n if (!this._bracketPairGuideOptions.indentation && this._bracketPairGuideOptions.bracketPairs === false) {\n this._renderResult = null;\n return;\n }\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n const scrollWidth = ctx.scrollWidth;\n const activeCursorPosition = this._primaryPosition;\n const indents = this.getGuidesByLine(visibleStartLineNumber, Math.min(visibleEndLineNumber + 1, this._context.viewModel.getLineCount()), activeCursorPosition);\n const output = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n const indent = indents[lineIndex];\n let result = '';\n const leftOffset = (_b = (_a = ctx.visibleRangeForPosition(new Position(lineNumber, 1))) === null || _a === void 0 ? void 0 : _a.left) !== null && _b !== void 0 ? _b : 0;\n for (const guide of indent) {\n const left = guide.column === -1\n ? leftOffset + (guide.visibleColumn - 1) * this._spaceWidth\n : ctx.visibleRangeForPosition(new Position(lineNumber, guide.column)).left;\n if (left > scrollWidth || (this._maxIndentLeft > 0 && left > this._maxIndentLeft)) {\n break;\n }\n const className = guide.horizontalLine ? (guide.horizontalLine.top ? 'horizontal-top' : 'horizontal-bottom') : 'vertical';\n const width = guide.horizontalLine\n ? ((_d = (_c = ctx.visibleRangeForPosition(new Position(lineNumber, guide.horizontalLine.endColumn))) === null || _c === void 0 ? void 0 : _c.left) !== null && _d !== void 0 ? _d : (left + this._spaceWidth)) - left\n : this._spaceWidth;\n result += ``;\n }\n output[lineIndex] = result;\n }\n this._renderResult = output;\n }\n getGuidesByLine(visibleStartLineNumber, visibleEndLineNumber, activeCursorPosition) {\n const bracketGuides = this._bracketPairGuideOptions.bracketPairs !== false\n ? this._context.viewModel.getBracketGuidesInRangeByLine(visibleStartLineNumber, visibleEndLineNumber, activeCursorPosition, {\n highlightActive: this._bracketPairGuideOptions.highlightActiveBracketPair,\n horizontalGuides: this._bracketPairGuideOptions.bracketPairsHorizontal === true\n ? HorizontalGuidesState.Enabled\n : this._bracketPairGuideOptions.bracketPairsHorizontal === 'active'\n ? HorizontalGuidesState.EnabledForActive\n : HorizontalGuidesState.Disabled,\n includeInactive: this._bracketPairGuideOptions.bracketPairs === true,\n })\n : null;\n const indentGuides = this._bracketPairGuideOptions.indentation\n ? this._context.viewModel.getLinesIndentGuides(visibleStartLineNumber, visibleEndLineNumber)\n : null;\n let activeIndentStartLineNumber = 0;\n let activeIndentEndLineNumber = 0;\n let activeIndentLevel = 0;\n if (this._bracketPairGuideOptions.highlightActiveIndentation !== false && activeCursorPosition) {\n const activeIndentInfo = this._context.viewModel.getActiveIndentGuide(activeCursorPosition.lineNumber, visibleStartLineNumber, visibleEndLineNumber);\n activeIndentStartLineNumber = activeIndentInfo.startLineNumber;\n activeIndentEndLineNumber = activeIndentInfo.endLineNumber;\n activeIndentLevel = activeIndentInfo.indent;\n }\n const { indentSize } = this._context.viewModel.model.getOptions();\n const result = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineGuides = new Array();\n result.push(lineGuides);\n const bracketGuidesInLine = bracketGuides ? bracketGuides[lineNumber - visibleStartLineNumber] : [];\n const bracketGuidesInLineQueue = new ArrayQueue(bracketGuidesInLine);\n const indentGuidesInLine = indentGuides ? indentGuides[lineNumber - visibleStartLineNumber] : 0;\n for (let indentLvl = 1; indentLvl <= indentGuidesInLine; indentLvl++) {\n const indentGuide = (indentLvl - 1) * indentSize + 1;\n const isActive = \n // Disable active indent guide if there are bracket guides.\n (this._bracketPairGuideOptions.highlightActiveIndentation === 'always' || bracketGuidesInLine.length === 0) &&\n activeIndentStartLineNumber <= lineNumber &&\n lineNumber <= activeIndentEndLineNumber &&\n indentLvl === activeIndentLevel;\n lineGuides.push(...bracketGuidesInLineQueue.takeWhile(g => g.visibleColumn < indentGuide) || []);\n const peeked = bracketGuidesInLineQueue.peek();\n if (!peeked || peeked.visibleColumn !== indentGuide || peeked.horizontalLine) {\n lineGuides.push(new IndentGuide(indentGuide, -1, `core-guide-indent lvl-${(indentLvl - 1) % 30}` + (isActive ? ' indent-active' : ''), null, -1, -1));\n }\n }\n lineGuides.push(...bracketGuidesInLineQueue.takeWhile(g => true) || []);\n }\n return result;\n }\n render(startLineNumber, lineNumber) {\n if (!this._renderResult) {\n return '';\n }\n const lineIndex = lineNumber - startLineNumber;\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n return '';\n }\n return this._renderResult[lineIndex];\n }\n}\nfunction transparentToUndefined(color) {\n if (color && color.isTransparent()) {\n return undefined;\n }\n return color;\n}\nregisterThemingParticipant((theme, collector) => {\n const colors = [\n { bracketColor: editorBracketHighlightingForeground1, guideColor: editorBracketPairGuideBackground1, guideColorActive: editorBracketPairGuideActiveBackground1 },\n { bracketColor: editorBracketHighlightingForeground2, guideColor: editorBracketPairGuideBackground2, guideColorActive: editorBracketPairGuideActiveBackground2 },\n { bracketColor: editorBracketHighlightingForeground3, guideColor: editorBracketPairGuideBackground3, guideColorActive: editorBracketPairGuideActiveBackground3 },\n { bracketColor: editorBracketHighlightingForeground4, guideColor: editorBracketPairGuideBackground4, guideColorActive: editorBracketPairGuideActiveBackground4 },\n { bracketColor: editorBracketHighlightingForeground5, guideColor: editorBracketPairGuideBackground5, guideColorActive: editorBracketPairGuideActiveBackground5 },\n { bracketColor: editorBracketHighlightingForeground6, guideColor: editorBracketPairGuideBackground6, guideColorActive: editorBracketPairGuideActiveBackground6 }\n ];\n const colorProvider = new BracketPairGuidesClassNames();\n const indentColors = [\n { indentColor: editorIndentGuide1, indentColorActive: editorActiveIndentGuide1 },\n { indentColor: editorIndentGuide2, indentColorActive: editorActiveIndentGuide2 },\n { indentColor: editorIndentGuide3, indentColorActive: editorActiveIndentGuide3 },\n { indentColor: editorIndentGuide4, indentColorActive: editorActiveIndentGuide4 },\n { indentColor: editorIndentGuide5, indentColorActive: editorActiveIndentGuide5 },\n { indentColor: editorIndentGuide6, indentColorActive: editorActiveIndentGuide6 },\n ];\n const colorValues = colors\n .map(c => {\n var _a, _b;\n const bracketColor = theme.getColor(c.bracketColor);\n const guideColor = theme.getColor(c.guideColor);\n const guideColorActive = theme.getColor(c.guideColorActive);\n const effectiveGuideColor = transparentToUndefined((_a = transparentToUndefined(guideColor)) !== null && _a !== void 0 ? _a : bracketColor === null || bracketColor === void 0 ? void 0 : bracketColor.transparent(0.3));\n const effectiveGuideColorActive = transparentToUndefined((_b = transparentToUndefined(guideColorActive)) !== null && _b !== void 0 ? _b : bracketColor);\n if (!effectiveGuideColor || !effectiveGuideColorActive) {\n return undefined;\n }\n return {\n guideColor: effectiveGuideColor,\n guideColorActive: effectiveGuideColorActive,\n };\n })\n .filter(isDefined);\n const indentColorValues = indentColors\n .map(c => {\n const indentColor = theme.getColor(c.indentColor);\n const indentColorActive = theme.getColor(c.indentColorActive);\n const effectiveIndentColor = transparentToUndefined(indentColor);\n const effectiveIndentColorActive = transparentToUndefined(indentColorActive);\n if (!effectiveIndentColor || !effectiveIndentColorActive) {\n return undefined;\n }\n return {\n indentColor: effectiveIndentColor,\n indentColorActive: effectiveIndentColorActive,\n };\n })\n .filter(isDefined);\n if (colorValues.length > 0) {\n for (let level = 0; level < 30; level++) {\n const colors = colorValues[level % colorValues.length];\n collector.addRule(`.monaco-editor .${colorProvider.getInlineClassNameOfLevel(level).replace(/ /g, '.')} { --guide-color: ${colors.guideColor}; --guide-color-active: ${colors.guideColorActive}; }`);\n }\n collector.addRule(`.monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }`);\n collector.addRule(`.monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }`);\n collector.addRule(`.monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }`);\n collector.addRule(`.monaco-editor .vertical.${colorProvider.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`);\n collector.addRule(`.monaco-editor .horizontal-top.${colorProvider.activeClassName} { border-top: 1px solid var(--guide-color-active); }`);\n collector.addRule(`.monaco-editor .horizontal-bottom.${colorProvider.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`);\n }\n if (indentColorValues.length > 0) {\n for (let level = 0; level < 30; level++) {\n const colors = indentColorValues[level % indentColorValues.length];\n collector.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${level} { --indent-color: ${colors.indentColor}; --indent-color-active: ${colors.indentColorActive}; }`);\n }\n collector.addRule(`.monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }`);\n collector.addRule(`.monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }`);\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 './lineNumbers.css';\nimport * as platform from '../../../../base/common/platform.js';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { editorDimmedLineNumber, editorLineNumbers } from '../../../common/core/editorColorRegistry.js';\nexport class LineNumbersOverlay extends DynamicViewOverlay {\n constructor(context) {\n super();\n this._context = context;\n this._readConfig();\n this._lastCursorModelPosition = new Position(1, 1);\n this._renderResult = null;\n this._activeLineNumber = 1;\n this._context.addEventHandler(this);\n }\n _readConfig() {\n const options = this._context.configuration.options;\n this._lineHeight = options.get(67 /* EditorOption.lineHeight */);\n const lineNumbers = options.get(68 /* EditorOption.lineNumbers */);\n this._renderLineNumbers = lineNumbers.renderType;\n this._renderCustomLineNumbers = lineNumbers.renderFn;\n this._renderFinalNewline = options.get(95 /* EditorOption.renderFinalNewline */);\n const layoutInfo = options.get(145 /* EditorOption.layoutInfo */);\n this._lineNumbersLeft = layoutInfo.lineNumbersLeft;\n this._lineNumbersWidth = layoutInfo.lineNumbersWidth;\n }\n dispose() {\n this._context.removeEventHandler(this);\n this._renderResult = null;\n super.dispose();\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n this._readConfig();\n return true;\n }\n onCursorStateChanged(e) {\n const primaryViewPosition = e.selections[0].getPosition();\n this._lastCursorModelPosition = this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(primaryViewPosition);\n let shouldRender = false;\n if (this._activeLineNumber !== primaryViewPosition.lineNumber) {\n this._activeLineNumber = primaryViewPosition.lineNumber;\n shouldRender = true;\n }\n if (this._renderLineNumbers === 2 /* RenderLineNumbersType.Relative */ || this._renderLineNumbers === 3 /* RenderLineNumbersType.Interval */) {\n shouldRender = true;\n }\n return shouldRender;\n }\n onFlushed(e) {\n return true;\n }\n onLinesChanged(e) {\n return true;\n }\n onLinesDeleted(e) {\n return true;\n }\n onLinesInserted(e) {\n return true;\n }\n onScrollChanged(e) {\n return e.scrollTopChanged;\n }\n onZonesChanged(e) {\n return true;\n }\n onDecorationsChanged(e) {\n return e.affectsLineNumber;\n }\n // --- end event handlers\n _getLineRenderLineNumber(viewLineNumber) {\n const modelPosition = this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(viewLineNumber, 1));\n if (modelPosition.column !== 1) {\n return '';\n }\n const modelLineNumber = modelPosition.lineNumber;\n if (this._renderCustomLineNumbers) {\n return this._renderCustomLineNumbers(modelLineNumber);\n }\n if (this._renderLineNumbers === 2 /* RenderLineNumbersType.Relative */) {\n const diff = Math.abs(this._lastCursorModelPosition.lineNumber - modelLineNumber);\n if (diff === 0) {\n return '' + modelLineNumber + '';\n }\n return String(diff);\n }\n if (this._renderLineNumbers === 3 /* RenderLineNumbersType.Interval */) {\n if (this._lastCursorModelPosition.lineNumber === modelLineNumber) {\n return String(modelLineNumber);\n }\n if (modelLineNumber % 10 === 0) {\n return String(modelLineNumber);\n }\n const finalLineNumber = this._context.viewModel.getLineCount();\n if (modelLineNumber === finalLineNumber) {\n return String(modelLineNumber);\n }\n return '';\n }\n return String(modelLineNumber);\n }\n prepareRender(ctx) {\n if (this._renderLineNumbers === 0 /* RenderLineNumbersType.Off */) {\n this._renderResult = null;\n return;\n }\n const lineHeightClassName = (platform.isLinux ? (this._lineHeight % 2 === 0 ? ' lh-even' : ' lh-odd') : '');\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\n const lineNoDecorations = this._context.viewModel.getDecorationsInViewport(ctx.visibleRange).filter(d => !!d.options.lineNumberClassName);\n lineNoDecorations.sort((a, b) => Range.compareRangesUsingEnds(a.range, b.range));\n let decorationStartIndex = 0;\n const lineCount = this._context.viewModel.getLineCount();\n const output = [];\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - visibleStartLineNumber;\n let renderLineNumber = this._getLineRenderLineNumber(lineNumber);\n let extraClassNames = '';\n // skip decorations whose end positions we've already passed\n while (decorationStartIndex < lineNoDecorations.length && lineNoDecorations[decorationStartIndex].range.endLineNumber < lineNumber) {\n decorationStartIndex++;\n }\n for (let i = decorationStartIndex; i < lineNoDecorations.length; i++) {\n const { range, options } = lineNoDecorations[i];\n if (range.startLineNumber <= lineNumber) {\n extraClassNames += ' ' + options.lineNumberClassName;\n }\n }\n if (!renderLineNumber && !extraClassNames) {\n output[lineIndex] = '';\n continue;\n }\n if (lineNumber === lineCount && this._context.viewModel.getLineLength(lineNumber) === 0) {\n // this is the last line\n if (this._renderFinalNewline === 'off') {\n renderLineNumber = '';\n }\n if (this._renderFinalNewline === 'dimmed') {\n extraClassNames += ' dimmed-line-number';\n }\n }\n if (lineNumber === this._activeLineNumber) {\n extraClassNames += ' active-line-number';\n }\n output[lineIndex] = (`