UNPKG

scrollcat

Version:

I want to catch the best scene of my life. The browser wants to, too.

68 lines (62 loc) 2.15 kB
interface Deferred<T> extends Promise<T> { readonly state: "pending" | "fulfilled" | "rejected"; resolve(value?: T | PromiseLike<T>): void; reject(reason?: any): void; } declare class Queue<T> { #private; constructor(limit?: number); [Symbol.asyncIterator](): AsyncIterableIterator<T>; pop(): Deferred<T>; push(data: T): void; refresh(): void; destroy(): void; } declare type Percent = `${number}%`; declare type SceneState = "before" | "after" | "during"; declare type SceneEventType = "update" | "enter" | "leave"; declare type SceneEvent = { target: HTMLElement; progress: number; scrollTop: number; }; declare type SceneEmitter = Queue<[SceneEventType, SceneEvent]>; interface SceneConfig { play: number | Percent; duration: number | Percent; } declare const DefaultSceneConfig: SceneConfig; declare class Scene { #private; isActive: boolean; duration: number; get emitter(): SceneEmitter; get scrollTop(): number; get progress(): number; get state(): SceneState; constructor(scroller: Scroller, el: HTMLElement, cfg: SceneConfig); update(): void; removeSelf(): void; scrollTo(n: Percent | number, cfg?: ScrollOptions): void; on(eventType: SceneEventType, cb: (ev: SceneEvent) => void): void; off(eventType: SceneEventType, cb?: (ev: SceneEvent) => void): void; once(eventType: SceneEventType, cb: (ev: SceneEvent) => void): void; } declare type ScrollDirection = "forward" | "reverse" | "paused"; declare class Scroller { #private; scrollTop?: number; direction?: ScrollDirection; get clientHeight(): number; get locked(): boolean; get el(): HTMLElement; destroy: () => void; constructor(el?: HTMLElement); addScene(el: HTMLElement, cfg: SceneConfig): Scene; addSceneWithDefault(el: HTMLElement): Scene; removeScene(scene: Scene): void; scrollTo(n: Percent | number, cfg?: ScrollOptions): void; lock(duration?: number): Promise<void>; unlock(): void; } export { DefaultSceneConfig, Scene, SceneConfig, SceneEmitter, SceneEvent, SceneEventType, SceneState, Scroller };