UNPKG

scroll-seamless

Version:

A seamless scroll library for JS, Vue, and React.

225 lines (221 loc) 5.72 kB
import * as vue from 'vue'; import { VNode } from 'vue'; type ScrollDirection = 'up' | 'down' | 'left' | 'right'; type ScrollSeamlessEvent = | 'start' | 'stop' | 'destroy' | 'update' | 'reach-end' | 'reach-start'; interface PerformancePluginOptions { enabled?: boolean; fps?: boolean; memory?: boolean; timing?: boolean; onUpdate?: (metrics: any) => void; } interface AccessibilityPluginOptions { enabled?: boolean; ariaLabel?: string; keyboardNavigation?: boolean; screenReader?: boolean; focusable?: boolean; } interface ScrollSeamlessPlugin { id: string; apply: (instance: ScrollSeamlessController) => void; destroy?: () => void; } interface ScrollSeamlessOptions { data: string[]; direction?: ScrollDirection; minCountToScroll?: number; step?: number; stepWait?: number; delay?: number; bezier?: [number, number, number, number]; hoverStop?: boolean; wheelEnable?: boolean; singleLine?: boolean; rows?: number; cols?: number; onEvent?: (event: ScrollSeamlessEvent, data?: any) => void; plugins?: ScrollSeamlessPlugin[]; performance?: PerformancePluginOptions; accessibility?: AccessibilityPluginOptions; } interface ScrollSeamlessController { start: () => void; stop: () => void; destroy: () => void; updateData: () => void; setOptions: (options: Partial<ScrollSeamlessOptions>) => void; isRunning: () => boolean; getPosition?: () => number; setPosition?: (position: number) => void; addPlugin?: (plugin: ScrollSeamlessPlugin) => void; removePlugin?: (pluginId: string) => void; getPerformance?: () => any; } declare const ScrollSeamlessVue: vue.DefineComponent<vue.ExtractPropTypes<{ data: { type: ArrayConstructor; default: () => never[]; }; direction: { type: StringConstructor; default: string; }; minCountToScroll: { type: NumberConstructor; default: number; }; step: { type: NumberConstructor; default: number; }; stepWait: { type: NumberConstructor; default: number; }; delay: { type: NumberConstructor; default: number; }; bezier: { type: ArrayConstructor; default: () => number[]; }; hoverStop: { type: BooleanConstructor; default: boolean; }; wheelEnable: { type: BooleanConstructor; default: boolean; }; singleLine: { type: BooleanConstructor; default: boolean; }; class: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; style: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; contentClass: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; itemClass: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; rows: { type: NumberConstructor; default: number; }; cols: { type: NumberConstructor; default: number; }; modelValue: { type: BooleanConstructor; default: undefined; }; }>, () => VNode<vue.RendererNode, vue.RendererElement, { [key: string]: any; }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, never[], never, vue.PublicProps, Readonly<vue.ExtractPropTypes<{ data: { type: ArrayConstructor; default: () => never[]; }; direction: { type: StringConstructor; default: string; }; minCountToScroll: { type: NumberConstructor; default: number; }; step: { type: NumberConstructor; default: number; }; stepWait: { type: NumberConstructor; default: number; }; delay: { type: NumberConstructor; default: number; }; bezier: { type: ArrayConstructor; default: () => number[]; }; hoverStop: { type: BooleanConstructor; default: boolean; }; wheelEnable: { type: BooleanConstructor; default: boolean; }; singleLine: { type: BooleanConstructor; default: boolean; }; class: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; style: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; contentClass: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; itemClass: { type: (ArrayConstructor | StringConstructor | ObjectConstructor)[]; default: string; }; rows: { type: NumberConstructor; default: number; }; cols: { type: NumberConstructor; default: number; }; modelValue: { type: BooleanConstructor; default: undefined; }; }>> & Readonly<{}>, { data: unknown[]; direction: string; minCountToScroll: number; step: number; stepWait: number; delay: number; bezier: unknown[]; hoverStop: boolean; wheelEnable: boolean; singleLine: boolean; class: string | Record<string, any> | unknown[]; style: string | Record<string, any> | unknown[]; contentClass: string | Record<string, any> | unknown[]; itemClass: string | Record<string, any> | unknown[]; rows: number; cols: number; modelValue: boolean; }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>; export { ScrollSeamlessVue as default }; export type { ScrollSeamlessOptions };