1 | declare namespace tinyapp {
|
2 | type OnShareAppMessageOptions = {
|
3 | from: 'button';
|
4 | target: Record<string, any>;
|
5 | webViewUrl?: string;
|
6 | } | {
|
7 | from: 'menu';
|
8 | webViewUrl?: string;
|
9 | };
|
10 |
|
11 | interface IOnShareAppMessageResult {
|
12 | title: string;
|
13 | desc?: string;
|
14 | path: string;
|
15 | content?: string;
|
16 | imageUrl?: string;
|
17 | bgImgUrl?: string;
|
18 | success?(): void;
|
19 | fail?(): void;
|
20 | }
|
21 |
|
22 | type IPageScrollEvent = [
|
23 | {
|
24 | readonly scrollTop: number;
|
25 | readonly scrollHeight: number;
|
26 | },
|
27 | null,
|
28 | null
|
29 | ] | {
|
30 | readonly scrollTop: number;
|
31 | readonly scrollHeight: number;
|
32 | };
|
33 |
|
34 | interface IPageEvents {
|
35 | onBack?(): void;
|
36 | onKeyboardHeight?(): void;
|
37 | onOptionMenuClick?(): void;
|
38 | onPopMenuClick?(): void;
|
39 | onPullIntercept?(): void;
|
40 |
|
41 | |
42 |
|
43 |
|
44 | onPullDownRefresh?(params: { from: 'manual' | 'code'; }): void;
|
45 | onTitleClick?(): void;
|
46 |
|
47 | |
48 |
|
49 |
|
50 |
|
51 | onTabItemTap?(item: { index: number; pagePath: string; text: string; }): void;
|
52 |
|
53 | beforeTabItemTap?(): void;
|
54 | }
|
55 |
|
56 | interface IPageOptionsMethods extends Pick<
|
57 | IPageEvents,
|
58 | 'onPullDownRefresh'
|
59 | | 'onTitleClick'
|
60 | | 'onOptionMenuClick'
|
61 | | 'onPopMenuClick'
|
62 | | 'onPullIntercept'
|
63 | | 'onTabItemTap'
|
64 | > {
|
65 | |
66 |
|
67 |
|
68 |
|
69 |
|
70 | onLoad?(query: Query): void;
|
71 |
|
72 | |
73 |
|
74 |
|
75 | onReady?(): void;
|
76 |
|
77 | |
78 |
|
79 |
|
80 | onShow?(): void;
|
81 |
|
82 | |
83 |
|
84 |
|
85 | onHide?(): void;
|
86 |
|
87 | |
88 |
|
89 |
|
90 | onUnload?(): void;
|
91 |
|
92 | |
93 |
|
94 |
|
95 | onReachBottom?(): void;
|
96 |
|
97 | |
98 |
|
99 |
|
100 | onShareAppMessage?(options: OnShareAppMessageOptions): IOnShareAppMessageResult;
|
101 |
|
102 | |
103 |
|
104 |
|
105 |
|
106 |
|
107 | onPageScroll?(event: IPageScrollEvent): void;
|
108 | }
|
109 |
|
110 | type SetDataMethod<D> = (data: Partial<D>, callback?: () => void) => void;
|
111 |
|
112 | interface IPageInstance<D> extends Record<string, any> {
|
113 | |
114 |
|
115 |
|
116 | readonly data: D;
|
117 |
|
118 | |
119 |
|
120 |
|
121 | setData: SetDataMethod<D>;
|
122 |
|
123 | |
124 |
|
125 |
|
126 | $spliceData: (operations: { [k: string]: [number, number, ...any[]] }) => void;
|
127 |
|
128 | |
129 |
|
130 |
|
131 | readonly route: string;
|
132 |
|
133 | |
134 |
|
135 |
|
136 | $batchedUpdates: (fn: () => void) => void;
|
137 | }
|
138 |
|
139 | |
140 |
|
141 |
|
142 | type PageOptions<D = Record<string, any>> = IPageOptionsMethods
|
143 | & {
|
144 | |
145 |
|
146 |
|
147 | data?: D;
|
148 |
|
149 | |
150 |
|
151 |
|
152 | events?: IPageEvents & ThisType<IPageInstance<D>>;
|
153 |
|
154 | [name: string]: any;
|
155 | }
|
156 | & ThisType<IPageInstance<D>>;
|
157 | }
|