UNPKG

@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
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; }