UNPKG

monaco-editor-core

Version:

A browser based code editor

25 lines (24 loc) 925 B
import { OffsetRange } from './offsetRange.js'; import { TextLength } from './textLength.js'; export class PositionOffsetTransformer { constructor(text) { this.text = text; this.lineStartOffsetByLineIdx = []; this.lineStartOffsetByLineIdx.push(0); for (let i = 0; i < text.length; i++) { if (text.charAt(i) === '\n') { this.lineStartOffsetByLineIdx.push(i + 1); } } } getOffset(position) { return this.lineStartOffsetByLineIdx[position.lineNumber - 1] + position.column - 1; } getOffsetRange(range) { return new OffsetRange(this.getOffset(range.getStartPosition()), this.getOffset(range.getEndPosition())); } get textLength() { const lineIdx = this.lineStartOffsetByLineIdx.length - 1; return new TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]); } }