@opentui/core
Version:
OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)
129 lines (128 loc) • 5.67 kB
TypeScript
import { type KeyEvent } from "../lib/index.js";
import { type ScrollAcceleration } from "../lib/scroll-acceleration.js";
import type { BaseRenderable, Renderable, RenderableOptions } from "../Renderable.js";
import type { MouseEvent } from "../renderer.js";
import type { RenderContext } from "../types.js";
import { BoxRenderable, type BoxOptions } from "./Box.js";
import type { VNode } from "./composition/vnode.js";
import { ScrollBarRenderable, type ScrollBarOptions, type ScrollUnit } from "./ScrollBar.js";
declare class ContentRenderable extends BoxRenderable {
private viewport;
private _viewportCulling;
constructor(ctx: RenderContext, viewport: BoxRenderable, viewportCulling: boolean, options: RenderableOptions<BoxRenderable>);
get viewportCulling(): boolean;
set viewportCulling(value: boolean);
protected _hasVisibleChildFilter(): boolean;
protected _getVisibleChildren(): number[];
}
export interface ScrollBoxOptions extends BoxOptions<ScrollBoxRenderable> {
rootOptions?: BoxOptions;
wrapperOptions?: BoxOptions;
viewportOptions?: BoxOptions;
contentOptions?: BoxOptions;
scrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
verticalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
horizontalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
stickyScroll?: boolean;
stickyStart?: "bottom" | "top" | "left" | "right";
scrollX?: boolean;
scrollY?: boolean;
scrollAcceleration?: ScrollAcceleration;
viewportCulling?: boolean;
}
export declare class ScrollBoxRenderable extends BoxRenderable {
static idCounter: number;
private internalId;
readonly wrapper: BoxRenderable;
readonly viewport: BoxRenderable;
readonly content: ContentRenderable;
readonly horizontalScrollBar: ScrollBarRenderable;
readonly verticalScrollBar: ScrollBarRenderable;
protected _focusable: boolean;
private selectionListener?;
private autoScrollMouseX;
private autoScrollMouseY;
private readonly autoScrollThresholdVertical;
private readonly autoScrollThresholdHorizontal;
private readonly autoScrollSpeedSlow;
private readonly autoScrollSpeedMedium;
private readonly autoScrollSpeedFast;
private isAutoScrolling;
private cachedAutoScrollSpeed;
private autoScrollAccumulatorX;
private autoScrollAccumulatorY;
private scrollAccumulatorX;
private scrollAccumulatorY;
private _stickyScroll;
private _stickyScrollTop;
private _stickyScrollBottom;
private _stickyScrollLeft;
private _stickyScrollRight;
private _stickyStart?;
private _hasManualScroll;
private _isApplyingStickyScroll;
private scrollAccel;
get stickyScroll(): boolean;
set stickyScroll(value: boolean);
get stickyStart(): "bottom" | "top" | "left" | "right" | undefined;
set stickyStart(value: "bottom" | "top" | "left" | "right" | undefined);
get scrollTop(): number;
set scrollTop(value: number);
get scrollLeft(): number;
set scrollLeft(value: number);
get scrollWidth(): number;
get scrollHeight(): number;
private updateStickyState;
private syncManualScrollState;
private applyStickyStart;
constructor(ctx: RenderContext, options: ScrollBoxOptions);
protected onUpdate(deltaTime: number): void;
scrollBy(delta: number | {
x: number;
y: number;
}, unit?: ScrollUnit): void;
scrollChildIntoView(childId: string): void;
scrollTo(position: number | {
x: number;
y: number;
}): void;
private isAtStickyPosition;
private isAtStickyReengagePoint;
add(obj: Renderable | VNode<any, any[]>, index?: number): number;
insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
remove(child: BaseRenderable): void;
getChildren(): Renderable[];
getRenderable(id: string): Renderable | undefined;
protected onMouseEvent(event: MouseEvent): void;
handleKeyPress(key: KeyEvent): boolean;
private resetScrollAccumulators;
startAutoScroll(mouseX: number, mouseY: number): void;
updateAutoScroll(mouseX: number, mouseY: number): void;
stopAutoScroll(): void;
private hasOtherLiveReasons;
private handleAutoScroll;
private getAutoScrollDirectionX;
private getAutoScrollDirectionY;
private getAutoScrollSpeed;
private recalculateBarProps;
set padding(value: number | `${number}%` | null | undefined);
set paddingX(value: number | `${number}%` | null | undefined);
set paddingY(value: number | `${number}%` | null | undefined);
set paddingTop(value: number | `${number}%` | null | undefined);
set paddingRight(value: number | `${number}%` | null | undefined);
set paddingBottom(value: number | `${number}%` | null | undefined);
set paddingLeft(value: number | `${number}%` | null | undefined);
set rootOptions(options: ScrollBoxOptions["rootOptions"]);
set wrapperOptions(options: ScrollBoxOptions["wrapperOptions"]);
set viewportOptions(options: ScrollBoxOptions["viewportOptions"]);
set contentOptions(options: ScrollBoxOptions["contentOptions"]);
set scrollbarOptions(options: ScrollBoxOptions["scrollbarOptions"]);
set verticalScrollbarOptions(options: ScrollBoxOptions["verticalScrollbarOptions"]);
set horizontalScrollbarOptions(options: ScrollBoxOptions["horizontalScrollbarOptions"]);
get scrollAcceleration(): ScrollAcceleration;
set scrollAcceleration(value: ScrollAcceleration);
get viewportCulling(): boolean;
set viewportCulling(value: boolean);
protected destroySelf(): void;
}
export {};