monaco-editor-core
Version:
A browser based code editor
120 lines (119 loc) • 4.55 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as arrays from '../../base/common/arrays.js';
import * as strings from '../../base/common/strings.js';
import { Range } from './core/range.js';
export class Viewport {
constructor(top, left, width, height) {
this._viewportBrand = undefined;
this.top = top | 0;
this.left = left | 0;
this.width = width | 0;
this.height = height | 0;
}
}
export class MinimapLinesRenderingData {
constructor(tabSize, data) {
this.tabSize = tabSize;
this.data = data;
}
}
export class ViewLineData {
constructor(content, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, tokens, inlineDecorations) {
this._viewLineDataBrand = undefined;
this.content = content;
this.continuesWithWrappedLine = continuesWithWrappedLine;
this.minColumn = minColumn;
this.maxColumn = maxColumn;
this.startVisibleColumn = startVisibleColumn;
this.tokens = tokens;
this.inlineDecorations = inlineDecorations;
}
}
export class ViewLineRenderingData {
constructor(minColumn, maxColumn, content, continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, tokens, inlineDecorations, tabSize, startVisibleColumn) {
this.minColumn = minColumn;
this.maxColumn = maxColumn;
this.content = content;
this.continuesWithWrappedLine = continuesWithWrappedLine;
this.isBasicASCII = ViewLineRenderingData.isBasicASCII(content, mightContainNonBasicASCII);
this.containsRTL = ViewLineRenderingData.containsRTL(content, this.isBasicASCII, mightContainRTL);
this.tokens = tokens;
this.inlineDecorations = inlineDecorations;
this.tabSize = tabSize;
this.startVisibleColumn = startVisibleColumn;
}
static isBasicASCII(lineContent, mightContainNonBasicASCII) {
if (mightContainNonBasicASCII) {
return strings.isBasicASCII(lineContent);
}
return true;
}
static containsRTL(lineContent, isBasicASCII, mightContainRTL) {
if (!isBasicASCII && mightContainRTL) {
return strings.containsRTL(lineContent);
}
return false;
}
}
export class InlineDecoration {
constructor(range, inlineClassName, type) {
this.range = range;
this.inlineClassName = inlineClassName;
this.type = type;
}
}
export class SingleLineInlineDecoration {
constructor(startOffset, endOffset, inlineClassName, inlineClassNameAffectsLetterSpacing) {
this.startOffset = startOffset;
this.endOffset = endOffset;
this.inlineClassName = inlineClassName;
this.inlineClassNameAffectsLetterSpacing = inlineClassNameAffectsLetterSpacing;
}
toInlineDecoration(lineNumber) {
return new InlineDecoration(new Range(lineNumber, this.startOffset + 1, lineNumber, this.endOffset + 1), this.inlineClassName, this.inlineClassNameAffectsLetterSpacing ? 3 /* InlineDecorationType.RegularAffectingLetterSpacing */ : 0 /* InlineDecorationType.Regular */);
}
}
export class ViewModelDecoration {
constructor(range, options) {
this._viewModelDecorationBrand = undefined;
this.range = range;
this.options = options;
}
}
export class OverviewRulerDecorationsGroup {
constructor(color, zIndex,
/**
* Decorations are encoded in a number array using the following scheme:
* - 3*i = lane
* - 3*i+1 = startLineNumber
* - 3*i+2 = endLineNumber
*/
data) {
this.color = color;
this.zIndex = zIndex;
this.data = data;
}
static compareByRenderingProps(a, b) {
if (a.zIndex === b.zIndex) {
if (a.color < b.color) {
return -1;
}
if (a.color > b.color) {
return 1;
}
return 0;
}
return a.zIndex - b.zIndex;
}
static equals(a, b) {
return (a.color === b.color
&& a.zIndex === b.zIndex
&& arrays.equals(a.data, b.data));
}
static equalsArr(a, b) {
return arrays.equals(a, b, OverviewRulerDecorationsGroup.equals);
}
}