@opentui/core
Version:
OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)
91 lines (90 loc) • 2.82 kB
TypeScript
import type { EditBuffer } from "../edit-buffer.js";
import type { EditorView } from "../editor-view.js";
export interface Extmark {
id: number;
start: number;
end: number;
virtual: boolean;
styleId?: number;
priority?: number;
data?: any;
typeId: number;
}
export interface ExtmarkOptions {
start: number;
end: number;
virtual?: boolean;
styleId?: number;
priority?: number;
data?: any;
typeId?: number;
metadata?: any;
}
/**
* WARNING: This is simulating extmarks in the edit buffer
* and will move to a real native implementation in the future.
* Use with caution.
*/
export declare class ExtmarksController {
private editBuffer;
private editorView;
private extmarks;
private extmarksByTypeId;
private metadata;
private nextId;
private destroyed;
private history;
private typeNameToId;
private typeIdToName;
private nextTypeId;
private originalMoveCursorLeft;
private originalMoveCursorRight;
private originalSetCursorByOffset;
private originalMoveUpVisual;
private originalMoveDownVisual;
private originalDeleteCharBackward;
private originalDeleteChar;
private originalInsertText;
private originalInsertChar;
private originalDeleteRange;
private originalSetText;
private originalReplaceText;
private originalClear;
private originalNewLine;
private originalDeleteLine;
private originalEditorViewDeleteSelectedText;
private originalUndo;
private originalRedo;
constructor(editBuffer: EditBuffer, editorView: EditorView);
private wrapCursorMovement;
private wrapDeletion;
private wrapInsertion;
private wrapEditorViewDeleteSelectedText;
private setupContentChangeListener;
private deleteExtmarkById;
private findVirtualExtmarkContaining;
private adjustExtmarksAfterInsertion;
adjustExtmarksAfterDeletion(deleteOffset: number, length: number): void;
private offsetToPosition;
private positionToOffset;
private getNextCursorOffset;
private updateHighlights;
private offsetExcludingNewlines;
create(options: ExtmarkOptions): number;
delete(id: number): boolean;
get(id: number): Extmark | null;
getAll(): Extmark[];
getVirtual(): Extmark[];
getAtOffset(offset: number): Extmark[];
getAllForTypeId(typeId: number): Extmark[];
clear(): void;
private saveSnapshot;
private restoreSnapshot;
private wrapUndoRedo;
registerType(typeName: string): number;
getTypeId(typeName: string): number | null;
getTypeName(typeId: number): string | null;
getMetadataFor(extmarkId: number): any;
destroy(): void;
}
export declare function createExtmarksController(editBuffer: EditBuffer, editorView: EditorView): ExtmarksController;