@teaui/core
Version:
A high-level terminal UI library for Node
30 lines (29 loc) • 1.13 kB
TypeScript
import type { Viewport } from '../Viewport.js';
import { Container, type Props as ContainerProps } from '../Container.js';
import { Size } from '../geometry.js';
interface Props extends ContainerProps {
/**
* Called during render with the available content size. Use this to implement
* virtualized/windowed rendering where you need to know the viewport dimensions
* before deciding what to render.
*/
onLayout?: (size: Size) => void;
}
/**
* A container that reports its available size via onLayout callback. Defaults to
* filling all available space (width='fill', height='fill') unless explicit
* dimensions are provided.
*
* Useful for:
* - Measuring available space before deciding what to render
* - Virtualized lists that need viewport height to calculate visible items
* - Responsive layouts that change based on available space
*/
export declare class Geometry extends Container {
#private;
constructor({ onLayout, ...props }: Props);
update({ onLayout, ...props }: Props): void;
naturalSize(available: Size): Size;
render(viewport: Viewport): void;
}
export {};