UNPKG

2.71 kBTypeScriptView Raw
1import { BScrollInstance } from './Instance';
2import { Options, DefOptions, OptionsConstructor } from './Options';
3import Scroller from './scroller/Scroller';
4import { ApplyOrder, EventEmitter } from '@better-scroll/shared-utils';
5import { UnionToIntersection } from './utils/typesHelper';
6interface PluginCtor {
7 pluginName: string;
8 applyOrder?: ApplyOrder;
9 new (scroll: BScroll): any;
10}
11interface PluginItem {
12 name: string;
13 applyOrder?: ApplyOrder.Pre | ApplyOrder.Post;
14 ctor: PluginCtor;
15}
16interface PluginsMap {
17 [key: string]: boolean;
18}
19interface PropertyConfig {
20 key: string;
21 sourceKey: string;
22}
23declare type ElementParam = HTMLElement | string;
24export interface MountedBScrollHTMLElement extends HTMLElement {
25 isBScrollContainer?: boolean;
26}
27export declare class BScrollConstructor<O = {}> extends EventEmitter {
28 static plugins: PluginItem[];
29 static pluginsMap: PluginsMap;
30 scroller: Scroller;
31 options: OptionsConstructor;
32 hooks: EventEmitter;
33 plugins: {
34 [name: string]: any;
35 };
36 wrapper: HTMLElement;
37 content: HTMLElement;
38 [key: string]: any;
39 static use(ctor: PluginCtor): typeof BScrollConstructor;
40 constructor(el: ElementParam, options?: Options & O);
41 setContent(wrapper: MountedBScrollHTMLElement): {
42 valid: boolean;
43 contentChanged: boolean;
44 };
45 private init;
46 private applyPlugins;
47 private handleAutoBlur;
48 private eventBubbling;
49 private refreshWithoutReset;
50 proxy(propertiesConfig: PropertyConfig[]): void;
51 refresh(): void;
52 enable(): void;
53 disable(): void;
54 destroy(): void;
55 eventRegister(names: string[]): void;
56}
57export interface BScrollConstructor extends BScrollInstance {
58}
59export interface CustomAPI {
60 [key: string]: {};
61}
62declare type ExtractAPI<O> = {
63 [K in keyof O]: K extends string ? DefOptions[K] extends undefined ? CustomAPI[K] : never : never;
64}[keyof O];
65export declare function createBScroll<O = {}>(el: ElementParam, options?: Options & O): BScrollConstructor & UnionToIntersection<ExtractAPI<O>>;
66export declare namespace createBScroll {
67 var use: typeof BScrollConstructor.use;
68 var plugins: PluginItem[];
69 var pluginsMap: PluginsMap;
70}
71declare type createBScroll = typeof createBScroll;
72export interface BScrollFactory extends createBScroll {
73 new <O = {}>(el: ElementParam, options?: Options & O): BScrollConstructor & UnionToIntersection<ExtractAPI<O>>;
74}
75export declare type BScroll<O = Options> = BScrollConstructor<O> & UnionToIntersection<ExtractAPI<O>>;
76export declare const BScroll: BScrollFactory;
77export {};