@rbxts/zircon
Version:
<div> <img src="https://i.imgur.com/YgpbX7G.png" align="left" width="128"/> <h1>ZIRCON</h1> <h3>A clean, sleek, runtime debugging console for Roblox</h3> <a href="https://npmjs.com/package/@rbxts/zircon"><img src="https://badge.fury.io
73 lines (72 loc) • 2.52 kB
TypeScript
/// <reference types="@rbxts/types" />
/// <reference types="roact" />
import Roact from "@rbxts/roact";
import { WidgetAxisPadding, WidgetPadding } from "./Padding";
interface ScrollViewEvents {
ContentSizeChanged?: (size: Vector2, view: ScrollView<never>) => void;
CanvasPositionChanged?: (position: Vector2, view: ScrollView<never>) => void;
}
export declare type InferEnumNames<T> = T extends {
EnumType: Enum.EnumType<infer A>;
} ? A["Name"] : never;
interface ScrollViewProps extends ScrollViewEvents {
Size?: UDim2;
Position?: UDim2;
Bordered?: boolean;
Style?: "NoButtons" | "ButtonsOnBar" | "Buttons";
Padding?: WidgetPadding;
ViewRef?: (view: ScrollView<never>) => void;
AutoScrollToEnd?: boolean;
SortOrder?: Enum.SortOrder | Enum.SortOrder["Name"];
/**
* Enables GridLayout mode
*
* Note: Will require a `ItemSize` prop.
*/
GridLayout?: boolean;
/**
* Percentage scroll for the auto scroll feature
*/
AutoScrollToEndThreshold?: number;
}
interface GridContent {
GridLayout: true;
ItemPadding?: WidgetAxisPadding;
ItemSize: UDim2;
}
interface ListContent {
ItemPadding?: number | UDim;
ItemAlignment?: Enum.VerticalAlignment | InferEnumNames<Enum.VerticalAlignment>;
}
interface ScrollViewState {
size: Vector2;
barScale: number;
barPos: number;
loaded: boolean;
barShown: boolean;
}
declare type ScrollViewInfer<T> = T extends {
GridLayout: true;
} ? ScrollViewProps & GridContent : ScrollViewProps & ListContent;
export declare type ScrollViewLike = ScrollView<ScrollViewProps>;
export declare type GridScrollViewProps = ScrollViewProps & GridContent;
export default class ScrollView<T extends ScrollViewProps> extends Roact.Component<ScrollViewInfer<T>, ScrollViewState> {
private scrollFrame;
private maid;
private scrollListLayout;
/** weird hack for AutoScrollToEnd with frames that start not scrollable */
private initScrollToBottom;
constructor(props: ScrollViewInfer<T>);
invokeUpdate: () => void;
canvasPositionUpdated: () => void;
absoluteContentSizeChanged: () => void;
didMount(): void;
willUnmount(): void;
renderBar(): Roact.Element | undefined;
scrollToPositionY(position: number): void;
scrollToEnd(): void;
getScrollFrame(): ScrollingFrame;
renderContentHandler(): Roact.Element;
render(): Roact.Element;
}
export {};