UNPKG

monaco-editor-core

Version:

A browser based code editor

52 lines (51 loc) 1.94 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { asArray } from '../../../../base/common/arrays.js'; import { isEmptyMarkdownString } from '../../../../base/common/htmlContent.js'; import { GlyphMarginLane } from '../../../common/model.js'; export class MarginHoverComputer { get lineNumber() { return this._lineNumber; } set lineNumber(value) { this._lineNumber = value; } get lane() { return this._laneOrLine; } set lane(value) { this._laneOrLine = value; } constructor(_editor) { this._editor = _editor; this._lineNumber = -1; this._laneOrLine = GlyphMarginLane.Center; } computeSync() { const toHoverMessage = (contents) => { return { value: contents }; }; const lineDecorations = this._editor.getLineDecorations(this._lineNumber); const result = []; const isLineHover = this._laneOrLine === 'lineNo'; if (!lineDecorations) { return result; } for (const d of lineDecorations) { const lane = d.options.glyphMargin?.position ?? GlyphMarginLane.Center; if (!isLineHover && lane !== this._laneOrLine) { continue; } const hoverMessage = isLineHover ? d.options.lineNumberHoverMessage : d.options.glyphMarginHoverMessage; if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) { continue; } result.push(...asArray(hoverMessage).map(toHoverMessage)); } return result; } }