@opentui/core
Version:
OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)
117 lines (116 loc) • 5.13 kB
TypeScript
import { type KeyEvent } from "../lib";
import { type ScrollAcceleration } from "../lib/scroll-acceleration";
import type { Renderable, RenderableOptions } from "../Renderable";
import type { MouseEvent } from "../renderer";
import type { RenderContext } from "../types";
import { BoxRenderable, type BoxOptions } from "./Box";
import type { VNode } from "./composition/vnode";
import { ScrollBarRenderable, type ScrollBarOptions, type ScrollUnit } from "./ScrollBar";
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 _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 applyStickyStart;
constructor(ctx: RenderContext, { wrapperOptions, viewportOptions, contentOptions, rootOptions, scrollbarOptions, verticalScrollbarOptions, horizontalScrollbarOptions, stickyScroll, stickyStart, scrollX, scrollY, scrollAcceleration, viewportCulling, ...options }: ScrollBoxOptions);
protected onUpdate(deltaTime: number): void;
scrollBy(delta: number | {
x: number;
y: number;
}, unit?: ScrollUnit): void;
scrollTo(position: number | {
x: number;
y: number;
}): void;
private isAtStickyPosition;
add(obj: Renderable | VNode<any, any[]>, index?: number): number;
insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
remove(id: string): void;
getChildren(): Renderable[];
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 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 {};