UNPKG

smooth-scrollbar

Version:

Customize scrollbar in modern browsers with smooth scrolling experience.

77 lines (76 loc) 2.41 kB
import { TrackController } from './track'; import { Data2d } from './data-2d'; export declare type ScrollbarOptions = { damping: number; thumbMinSize: number; renderByPixels: boolean; alwaysShowTracks: boolean; continuousScrolling: boolean; delegateTo: EventTarget | null; wheelEventTarget: EventTarget | null; plugins: any; }; export declare type Metrics = { width: number; height: number; }; export declare type ScrollbarSize = { container: Metrics; content: Metrics; }; export declare type ScrollbarBounding = { top: number; right: number; bottom: number; left: number; }; export declare type ScrollStatus = { offset: Data2d; limit: Data2d; }; export interface ScrollListener { (this: Scrollbar, status: ScrollStatus): void; } export declare type ScrollToOptions = { callback: (this: Scrollbar) => void; easing: (percent: number) => number; }; export declare type SetPositionOptions = { withoutCallbacks: boolean; }; export declare type ScrollIntoViewOptions = { alignToTop: boolean; onlyScrollIfNeeded: boolean; offsetTop: number; offsetLeft: number; offsetBottom: number; }; export interface AddTransformableMomentumCallback { (this: Scrollbar, willScroll: boolean): void; } export interface Scrollbar { readonly parent: Scrollbar | null; readonly containerEl: HTMLElement; readonly contentEl: HTMLElement; readonly track: TrackController; readonly options: ScrollbarOptions; bounding: ScrollbarBounding; size: ScrollbarSize; offset: Data2d; limit: Data2d; scrollTop: number; scrollLeft: number; destroy(): void; update(): void; getSize(): ScrollbarSize; isVisible(elem: HTMLElement): boolean; addListener(fn: ScrollListener): void; removeListener(fn: ScrollListener): void; addTransformableMomentum(x: number, y: number, fromEvent: Event, callback?: AddTransformableMomentumCallback): void; addMomentum(x: number, y: number): void; setMomentum(x: number, y: number): void; scrollTo(x?: number, y?: number, duration?: number, options?: Partial<ScrollToOptions>): void; setPosition(x?: number, y?: number, options?: Partial<SetPositionOptions>): void; scrollIntoView(elem: HTMLElement, options?: Partial<ScrollIntoViewOptions>): void; updatePluginOptions(pluginName: string, options?: any): void; }