@opentui/core
Version:
OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)
155 lines (154 loc) • 5.34 kB
TypeScript
import { type RenderableOptions, Renderable } from "../Renderable.js";
import type { OptimizedBuffer } from "../buffer.js";
import { type BorderStyle } from "../lib/border.js";
import { type Selection } from "../lib/selection.js";
import { RGBA, type ColorInput } from "../lib/RGBA.js";
import { type TextChunk } from "../text-buffer.js";
import type { RenderContext } from "../types.js";
export type TextTableCellContent = TextChunk[] | null | undefined;
export type TextTableContent = TextTableCellContent[][];
export type TextTableColumnWidthMode = "content" | "full";
export type TextTableColumnFitter = "proportional" | "balanced";
export interface TextTableOptions extends RenderableOptions<TextTableRenderable> {
content?: TextTableContent;
wrapMode?: "none" | "char" | "word";
columnWidthMode?: TextTableColumnWidthMode;
columnFitter?: TextTableColumnFitter;
cellPadding?: number;
cellPaddingX?: number;
cellPaddingY?: number;
columnGap?: number;
showBorders?: boolean;
border?: boolean;
outerBorder?: boolean;
selectable?: boolean;
selectionBg?: ColorInput;
selectionFg?: ColorInput;
borderStyle?: BorderStyle;
borderColor?: ColorInput;
borderBackgroundColor?: ColorInput;
backgroundColor?: ColorInput;
fg?: ColorInput;
bg?: ColorInput;
attributes?: number;
}
export declare class TextTableRenderable extends Renderable {
private _content;
private _wrapMode;
private _columnWidthMode;
private _columnFitter;
private _cellPaddingX;
private _cellPaddingY;
private _columnGap;
private _showBorders;
private _border;
private _outerBorder;
private _hasExplicitOuterBorder;
private _borderStyle;
private _borderColor;
private _borderBackgroundColor;
private _backgroundColor;
private _defaultFg;
private _defaultBg;
private _defaultAttributes;
private _selectionBg;
private _selectionFg;
private _lastLocalSelection;
private _lastSelectionMode;
private _cells;
private _prevCellContent;
private _rowCount;
private _columnCount;
private _layout;
private _layoutDirty;
private _rasterDirty;
private _cachedMeasureLayout;
private _cachedMeasureWidth;
private readonly _defaultOptions;
constructor(ctx: RenderContext, options?: TextTableOptions);
get content(): TextTableContent;
set content(value: TextTableContent);
get wrapMode(): "none" | "char" | "word";
set wrapMode(value: "none" | "char" | "word");
get columnWidthMode(): TextTableColumnWidthMode;
set columnWidthMode(value: TextTableColumnWidthMode);
get columnFitter(): TextTableColumnFitter;
set columnFitter(value: TextTableColumnFitter);
get cellPadding(): number;
set cellPadding(value: number);
get cellPaddingX(): number;
set cellPaddingX(value: number);
get cellPaddingY(): number;
set cellPaddingY(value: number);
get columnGap(): number;
set columnGap(value: number);
get showBorders(): boolean;
set showBorders(value: boolean);
get outerBorder(): boolean;
set outerBorder(value: boolean);
get border(): boolean;
set border(value: boolean);
get borderStyle(): BorderStyle;
set borderStyle(value: BorderStyle);
get borderColor(): RGBA;
set borderColor(value: ColorInput);
shouldStartSelection(x: number, y: number): boolean;
onSelectionChanged(selection: Selection | null): boolean;
hasSelection(): boolean;
getSelection(): {
start: number;
end: number;
} | null;
getSelectedText(): string;
protected onResize(width: number, height: number): void;
protected renderSelf(buffer: OptimizedBuffer): void;
protected destroySelf(): void;
private setupMeasureFunc;
private rebuildCells;
private updateCellsDiff;
private createCell;
private toStyledText;
private destroyCells;
private rebuildLayoutForCurrentWidth;
private computeLayout;
private isFullWidthMode;
private computeColumnWidths;
private expandColumnWidths;
private fitColumnWidths;
private fitColumnWidthsProportional;
private fitColumnWidthsBalanced;
private allocateShrinkByWeight;
private computeRowHeights;
private computeOffsets;
private getInterColumnGap;
private getTotalInterColumnGap;
private applyLayoutToViews;
private resolveBorderLayout;
private getVerticalBorderCount;
private getHorizontalBorderCount;
private drawBorders;
private drawCells;
private drawCellRange;
private redrawSelectionRows;
private clearCellRange;
private ensureLayoutReady;
private getCellAtLocalPosition;
private applySelectionToCells;
private resolveSelectionResolution;
private getColumnAtLocalX;
private getFullCellSelectionCoords;
private findRowForLocalY;
private getSelectionRowRange;
private getDirtySelectionRowRange;
private resetRowSelection;
private resetCellSelections;
private createEmptyLayout;
private resolveLayoutWidthConstraint;
private getHorizontalCellPadding;
private getVerticalCellPadding;
private resolveColumnFitter;
private resolveCellPadding;
private resolveColumnGap;
private invalidateLayoutAndRaster;
private invalidateRasterOnly;
}