The import/no-cycle refactor had moved IBuffer, IBufferSet, and related cell/line types into src/common/Types.ts, with buffer/Types.ts only re-exporting them. That inverted the natural module boundary and made buffer code depend on the top-level types hub. Define buffer-owned types in buffer/Types.ts instead: - CharData, IExtendedAttrs, IAttributeData, ICellData, IBufferLine - IMarker, IBuffer, IBufferSet, BufferIndex Restore UnderlineStyle to buffer/Constants.ts (used by IExtendedAttrs) and remove those definitions from Types.ts. buffer/Types.ts imports only what it needs from outside the buffer layer: ICircularList and ICharset from Types, IDisposable from Lifecycle, IEvent from Event, and UnderlineStyle from Constants. Types.ts does not import buffer/Types.ts, so the previous Types <-> buffer cycle stays broken. Update imports across common, browser, headless, addons, and tests to use common/buffer/Types for buffer types rather than common/Types. Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
/**
|
|
* Copyright (c) 2021 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { CellData } from '../buffer/CellData';
|
|
import { IBufferLine, ICellData } from '../buffer/Types';
|
|
import { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from '@xterm/xterm';
|
|
|
|
export class BufferLineApiView implements IBufferLineApi {
|
|
constructor(private _line: IBufferLine) { }
|
|
|
|
public get isWrapped(): boolean { return this._line.isWrapped; }
|
|
public get length(): number { return this._line.length; }
|
|
public getCell(x: number, cell?: IBufferCellApi): IBufferCellApi | undefined {
|
|
if (x < 0 || x >= this._line.length) {
|
|
return undefined;
|
|
}
|
|
|
|
if (cell) {
|
|
this._line.loadCell(x, cell as unknown as ICellData);
|
|
return cell;
|
|
}
|
|
return this._line.loadCell(x, new CellData()) as unknown as IBufferCellApi;
|
|
}
|
|
public translateToString(trimRight?: boolean, startColumn?: number, endColumn?: number): string {
|
|
return this._line.translateToString(trimRight, startColumn, endColumn);
|
|
}
|
|
}
|