import { type RenderableOptions, Renderable } from "../Renderable"; import type { OptimizedBuffer } from "../buffer"; import { type BorderStyle } from "../lib/border"; import { type Selection } from "../lib/selection"; import { RGBA, type ColorInput } from "../lib/RGBA"; import { type TextChunk } from "../text-buffer"; import type { RenderContext } from "../types"; export type TextTableCellContent = TextChunk[] | null | undefined; export type TextTableContent = TextTableCellContent[][]; export type TextTableColumnWidthMode = "content" | "fill"; export interface TextTableOptions extends RenderableOptions { content?: TextTableContent; wrapMode?: "none" | "char" | "word"; columnWidthMode?: TextTableColumnWidthMode; cellPadding?: 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 _cellPadding; 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 _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 cellPadding(): number; set cellPadding(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 computeColumnWidths; private expandColumnWidths; private fitColumnWidths; private computeRowHeights; private computeOffsets; 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 findRowForLocalY; private getSelectionRowRange; private getDirtySelectionRowRange; private resetRowSelection; private resetCellSelections; private createEmptyLayout; private resolveLayoutWidthConstraint; private getHorizontalCellPadding; private getVerticalCellPadding; private resolveCellPadding; private invalidateLayoutAndRaster; private invalidateRasterOnly; }