UNPKG

@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
/// <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 {};