@reactuses/core 4.0.13 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,886 +1,2902 @@
1
1
  import * as react from 'react';
2
- import react__default, { MutableRefObject, useEffect, useLayoutEffect, Dispatch, SetStateAction, DependencyList, EffectCallback, RefObject, CSSProperties } from 'react';
3
- import * as lodash from 'lodash';
2
+ import react__default, { DependencyList, RefObject, MutableRefObject, EffectCallback, useEffect, Dispatch, SetStateAction, useLayoutEffect } from 'react';
4
3
  import Cookies from 'js-cookie';
4
+ import { DebounceSettings, ThrottleSettings, DebouncedFunc as DebouncedFunc$1 } from 'lodash-es';
5
+ import * as lodash from 'lodash';
6
+ import { DebounceSettings as DebounceSettings$1, DebouncedFunc, ThrottleSettings as ThrottleSettings$1 } from 'lodash';
5
7
 
6
- declare function usePrevious<T>(state: T): T | undefined;
8
+ /**
9
+ * @title useActiveElement
10
+ * @returns_en Returns an instance of the type parameter `T` or `null`.
11
+ * @returns 返回类型参数 `T` 或 `null` 的实例
12
+ */
13
+ type UseActiveElement = <T extends Element>() => T | null;
7
14
 
8
- declare function useLatest<T>(value: T): MutableRefObject<T>;
15
+ declare const useActiveElement: UseActiveElement;
9
16
 
10
- declare function useFirstMountState(): boolean;
17
+ /**
18
+ *
19
+ * @title useAsyncEffect
20
+ */
21
+ type UseAsyncEffect = <T>(
22
+ /**
23
+ * @zh 支持promise的副作用函数
24
+ * @en effect that support promise
25
+ */
26
+ effect: () => Promise<T> | T,
27
+ /**
28
+ * @zh 清理函数
29
+ * @en cleanup function
30
+ * @defaultValue () => {}
31
+ */
32
+ cleanup?: typeof effect,
33
+ /**
34
+ * @zh 依赖列表
35
+ * @en dependency list
36
+ */
37
+ deps?: DependencyList) => void;
11
38
 
12
- declare const _default$4: typeof useEffect | typeof react.useLayoutEffect;
39
+ declare const useAsyncEffect: UseAsyncEffect;
13
40
 
14
- declare const _default$3: typeof react.useEffect | typeof useLayoutEffect;
41
+ /**
42
+ * @title useClickOutside
43
+ */
44
+ type UseClickOutside = (
45
+ /**
46
+ * @zh dom对象
47
+ * @en dom element
48
+ */
49
+ target: RefObject<Element>,
50
+ /**
51
+ * @zh 监听函数
52
+ * @en listener fucntion
53
+ */
54
+ handler: (evt: EventType) => void) => void;
55
+ type EventType = MouseEvent | TouchEvent;
15
56
 
16
- interface Serializer<T> {
17
- read(raw: string): T;
18
- write(value: T): string;
19
- }
20
- interface UseStorageOptions<T> {
21
- /**
22
- * Custom data serialization
23
- */
24
- serializer?: Serializer<T>;
25
- /**
26
- * On error callback
27
- *
28
- * Default log error to `console.error`
29
- */
30
- onError?: (error: unknown) => void;
57
+ declare const useClickOutside: UseClickOutside;
58
+
59
+ /**
60
+ * @title useCookie
61
+ * @returns 包含以下元素的元组:
62
+ * - cookie 的当前值。
63
+ * - 更新 cookie 值的函数。
64
+ * - 刷新 cookie 值的函数,以防其他事件更改它。
65
+ * @returns_en A tuple with the following elements:
66
+ * - The current value of the cookie.
67
+ * - A function to update the value of the cookie.
68
+ * - A function to refresh the value of the cookie, incase other events change it.
69
+ */
70
+ type UseCookie = (
71
+ /**
72
+ * @zh 键值
73
+ * @en key
74
+ */
75
+ key: string,
76
+ /**
77
+ * @zh 透传给 `js-cookie` 的参数
78
+ * @en option pass to `js-cookie`
79
+ */
80
+ options?: Cookies.CookieAttributes,
81
+ /**
82
+ * @zh 默认值,ssr必须传递
83
+ * @en defaultValue, must be required in ssr
84
+ */
85
+ defaultValue?: string) => readonly [
86
+ UseCookieState,
87
+ (newValue: UseCookieState | ((prevState: UseCookieState) => UseCookieState)) => void,
88
+ () => void
89
+ ];
90
+ /**
91
+ * @title useCookieState
92
+ */
93
+ type UseCookieState = string | undefined;
94
+
95
+ declare const useCookie: UseCookie;
96
+
97
+ /**
98
+ * @title useCountdown
99
+ * @returns_en A tuple with the following elements:
100
+ * - hour
101
+ * - minute.
102
+ * - second.
103
+ * @returns 包含以下元素的元组:
104
+ * - 小时。
105
+ * - 分钟。
106
+ * - 秒数。
107
+ */
108
+ type UseCountDown = (
109
+ /**
110
+ * @zh 时间差
111
+ * @en time differ
112
+ */
113
+ time: number,
114
+ /**
115
+ * @zh 时间格式化函数
116
+ * @en time format function
117
+ * @defaultValue HH MM SS
118
+ */
119
+ format?: (num: number) => [string, string, string],
120
+ /**
121
+ * @zh 倒计时结束的回调函数
122
+ * @en callback function for end of countdown
123
+ */
124
+ callback?: () => void) => readonly [string, string, string];
125
+
126
+ declare const useCountDown: UseCountDown;
127
+
128
+ /**
129
+ * @title useCounter
130
+ * @returns_en A tuple with the following elements:
131
+ * - The current value of the counter.
132
+ * - A function to set the state of the counter. It can accept a number or a function that returns a number.
133
+ * - A function to increment the counter. It optionally accepts a number to increment the counter by, defaulting to 1.
134
+ * - A function to decrement the counter. It optionally accepts a number to decrement the counter by, defaulting to 1.
135
+ * - A function to reset the counter to its initial value.
136
+ * @returns 包含以下元素的元组:
137
+ * - 计数器的当前值。
138
+ * - 设置计数器状态的函数。 它可以接受数字或返回数字的函数。
139
+ * - 递增计数器的函数。 它可以选择接受一个数字来增加计数器,默认为 1。
140
+ * - 递减计数器的函数。 它可以选择接受一个数字来减少计数器,默认为 1。
141
+ * - 将计数器重置为其初始值的函数。
142
+ */
143
+ type UseCounter = (
144
+ /**
145
+ * @zh 初始值,可以为数字或者一个初始化的函数
146
+ * @en The initial value of the counter. It can be a number or a function that returns a number. If not provided, the counter will start from 0.
147
+ * @defaultValue 0
148
+ */
149
+ initialValue?: number | (() => number),
150
+ /**
151
+ * @zh 最大值。不提供则无上限
152
+ * @en The maximum value that the counter can reach. If not provided or null, there is no upper limit.
153
+ */
154
+ max?: number | null,
155
+ /**
156
+ * @zh 最小值。不提供则无下限
157
+ * @en The minimum value that the counter can reach. If not provided or null, there is no lower limit.
158
+ */
159
+ min?: number | null) => readonly [
160
+ number,
161
+ (newState: number | ((prev: number) => number) | (() => number)) => void,
162
+ (delta?: number) => void,
163
+ (delta?: number) => void,
164
+ () => void
165
+ ];
166
+
167
+ declare const useCounter: UseCounter;
168
+
169
+ type TargetValue<T> = T | undefined | null;
170
+ type TargetType = HTMLElement | Element | Window | Document | EventTarget;
171
+ type BasicTarget<T extends TargetType = Element> = (() => TargetValue<T>) | TargetValue<T> | MutableRefObject<TargetValue<T>>;
172
+
173
+ declare const defaultOptions: UseCssVarOptions;
174
+ /**
175
+ * @title useCssVar
176
+ * @returns_en A tuple with the following elements:
177
+ * - The current value of the css var.
178
+ * - A function to update the value of the css var.
179
+ * @returns 包含以下元素的元组:
180
+ * - css 变量值
181
+ * - 更新 css 变量值的函数
182
+ */
183
+ type UseCssVar = <T extends HTMLElement = HTMLElement>(
184
+ /**
185
+ * @zh 属性值,比如 --color
186
+ * @en prop, eg: --color
187
+ */
188
+ prop: string,
189
+ /**
190
+ * @zh dom元素
191
+ * @en dom element
192
+ */
193
+ target: BasicTarget<T>,
194
+ /**
195
+ * @zh 默认值
196
+ * @en default value
197
+ */
198
+ defaultValue?: string,
199
+ /**
200
+ * @zh 可选项
201
+ * @en options
202
+ */
203
+ options?: UseCssVarOptions) => readonly [string, (v: string) => void];
204
+ /**
205
+ * @title UseCssVarOptions
206
+ */
207
+ interface UseCssVarOptions {
31
208
  /**
32
- * set to storage when nodata in effect, fallback to defaults
209
+ * @en Use MutationObserver to monitor variable changes
210
+ * @zh 使用 MutationObserver 来监听变量变更
211
+ * @defaultValue false
33
212
  */
34
- csrData?: T | (() => T);
213
+ observe?: boolean;
35
214
  }
36
215
 
37
- declare function useLocalStorage(key: string, defaults: string, options?: UseStorageOptions<string>): readonly [string | null, Dispatch<SetStateAction<string | null>>];
38
- declare function useLocalStorage(key: string, defaults: number, options?: UseStorageOptions<number>): readonly [number | null, Dispatch<SetStateAction<number | null>>];
39
- declare function useLocalStorage(key: string, defaults: boolean, options?: UseStorageOptions<boolean>): readonly [boolean | null, Dispatch<SetStateAction<boolean | null>>];
40
- declare function useLocalStorage<T>(key: string, defaults: T, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
41
- declare function useLocalStorage<T = unknown>(key: string, defaults: null, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
216
+ declare const useCssVar: UseCssVar;
42
217
 
43
- declare function useSessionStorage(key: string, defaults: string, options?: UseStorageOptions<string>): readonly [string | null, Dispatch<SetStateAction<string | null>>];
44
- declare function useSessionStorage(key: string, defaults: number, options?: UseStorageOptions<number>): readonly [number | null, Dispatch<SetStateAction<number | null>>];
45
- declare function useSessionStorage(key: string, defaults: boolean, options?: UseStorageOptions<boolean>): readonly [boolean | null, Dispatch<SetStateAction<boolean | null>>];
46
- declare function useSessionStorage<T>(key: string, defaults: T, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
47
- declare function useSessionStorage<T = unknown>(key: string, defaults: null, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
218
+ type DepsEqualFnType<TDeps extends DependencyList> = (prevDeps: TDeps, nextDeps: TDeps) => boolean;
219
+ /**
220
+ * @title useCustomCompareEffect
221
+ */
222
+ type UseCustomCompareEffect = <TDeps extends DependencyList>(
223
+ /**
224
+ * @zh 副作用函数
225
+ * @en effect callback
226
+ */
227
+ effect: EffectCallback,
228
+ /**
229
+ * @zh 依赖列表
230
+ * @en deps
231
+ */
232
+ deps: TDeps,
233
+ /**
234
+ * @zh 依赖比较函数
235
+ * @en deps compare function
236
+ */
237
+ depsEqual: DepsEqualFnType<TDeps>) => void;
48
238
 
49
- type Fn = (this: any, ...args: any[]) => any;
50
- type Stoppable = [boolean, Fn, Fn];
51
- type PointerType = "mouse" | "touch" | "pen";
52
- interface Position {
53
- x: number;
54
- y: number;
55
- }
239
+ declare const useCustomCompareEffect: UseCustomCompareEffect;
56
240
 
57
241
  /**
58
- * keep function reference immutable
242
+ * @title useCycleList
243
+ * @returns_en A tuple with the following elements:
244
+ * - The current index value of the list.
245
+ * - A function to set index to prev.
246
+ * - A function to set index to next.
247
+ * @returns 包含以下元素的元组:
248
+ * - 数组中当前的索引对象值
249
+ * - 设置索引为前一个的函数
250
+ * - 设置索引为后一个的函数
59
251
  */
60
- declare function useEvent<T extends Fn>(fn: T): T;
61
-
62
- declare function useToggle(initialValue: boolean): [boolean, (nextValue?: any) => void];
252
+ type UseCycleList = <T>(
253
+ /**
254
+ * @zh 循环数组
255
+ * @en cycle array
256
+ */
257
+ list: T[],
258
+ /**
259
+ * @zh 数组索引
260
+ * @en array index
261
+ */
262
+ i?: number) => readonly [T, (i?: number) => void, (i?: number) => void];
63
263
 
64
- declare function useInterval(callback: () => void, delay?: number | null, options?: {
65
- immediate?: boolean;
66
- }): void;
264
+ declare const useCycleList: UseCycleList;
67
265
 
266
+ /**
267
+ * @title UseDarkOptions
268
+ */
68
269
  interface UseDarkOptions {
69
270
  /**
70
- * CSS Selector for the target element applying to
71
- *
72
- * @default 'html'
271
+ * @en CSS Selector for the target element applying to
272
+ * @zh 适用于目标元素的 CSS 选择器
273
+ * @defaultValue 'html'
73
274
  */
74
275
  selector?: string;
75
276
  /**
76
- * HTML attribute applying the target element
77
- *
78
- * @default 'class'
277
+ * @en HTML attribute applying the target element
278
+ * @zh 应用到目标元素的 html 属性
279
+ * @defaultValue 'class'
79
280
  */
80
281
  attribute?: string;
81
282
  /**
82
- * isomorphic default value
83
- * @default false
283
+ * @en default value
284
+ * @zh 默认值
285
+ * @defaultValue false
84
286
  */
85
287
  defaultValue?: boolean;
86
288
  /**
87
- * Key to persist the data into localStorage/sessionStorage.
88
- *
89
- * @default 'reactuses-color-scheme'
289
+ * @en Key to persist the data into localStorage/sessionStorage.
290
+ * @zh 将数据持久保存到 localStorage/sessionStorage 的键值
291
+ * @defaultValue 'reactuses-color-scheme'
90
292
  */
91
293
  storageKey?: string;
92
294
  /**
93
- * Storage object, can be localStorage or sessionStorage
94
- *
95
- * @default localStorage
295
+ * @en Storage object, can be localStorage or sessionStorage
296
+ * @zh 存储对象,可以是localStorage或sessionStorage
297
+ * @defaultValue `localStorage`
96
298
  */
97
299
  storage?: () => Storage;
98
300
  /**
99
- * name dark apply to element
301
+ * @en name dark apply to element
302
+ * @zh 应用到目标元素上黑色类名称
100
303
  */
101
304
  classNameDark: string;
102
305
  /**
103
- * name light apply to element
306
+ * @en name light apply to element
307
+ * @zh 应用到目标元素上的亮色类名称
104
308
  */
105
309
  classNameLight: string;
106
310
  }
107
- declare function useDarkMode(options: UseDarkOptions): readonly [boolean | null, () => void, react.Dispatch<react.SetStateAction<boolean | null>>];
108
-
109
- declare function useMediaQuery(query: string, defaultState?: boolean): boolean;
110
-
111
- declare function usePreferredDark(defaultState?: boolean): boolean;
112
-
113
- declare const useIsomorphicLayoutEffect: typeof useEffect;
114
-
115
- declare function useMount(fn: () => void): void;
116
-
117
- declare function useUnmount(fn: () => void): void;
118
-
119
- interface ThrottleSettings {
120
- leading?: boolean | undefined;
121
- trailing?: boolean | undefined;
122
- }
123
- interface DebounceSettings {
124
- leading?: boolean;
125
- trailing?: boolean;
126
- maxWait?: number;
127
- }
311
+ /**
312
+ * @title useDarkMode
313
+ * @returns_en A tuple with the following elements:
314
+ * - The current value of the dark state.
315
+ * - A function to toggle the dark state.
316
+ * - A function to update the dark state.
317
+ * @returns 包含以下元素的元组:
318
+ * - 黑暗状态的当前值。
319
+ * - 切换黑暗状态的功能。
320
+ * - 更新黑暗状态的功能。
321
+ */
322
+ type UseDarkMode = (options: UseDarkOptions) => readonly [
323
+ boolean | null,
324
+ () => void,
325
+ React.Dispatch<React.SetStateAction<boolean | null>>
326
+ ];
128
327
 
129
- declare function useThrottle<T>(value: T, wait?: number, options?: ThrottleSettings): T;
328
+ declare const useDarkMode: UseDarkMode;
130
329
 
131
- declare function useThrottleFn<T extends (...args: any) => any>(fn: T, wait?: number, options?: ThrottleSettings): {
132
- run: lodash.DebouncedFunc<(...args_0: Parameters<T>) => ReturnType<T>>;
133
- cancel: () => void;
134
- flush: () => ReturnType<T> | undefined;
135
- };
330
+ /**
331
+ * @title useDebounce
332
+ */
333
+ type UseDebounce = <T>(
334
+ /**
335
+ * @zh 要防抖的值
336
+ * @en the value need to debounce
337
+ */
338
+ value: T,
339
+ /**
340
+ * @zh 间隔时间
341
+ * @en wait time
342
+ */
343
+ wait?: number,
344
+ /**
345
+ * @zh 传递给 `lodash.debounce` 的选项
346
+ * @en options passed to `lodash.debounce`
347
+ */
348
+ options?: DebounceSettings) => T;
136
349
 
137
- declare function useDebounce<T>(value: T, wait?: number, options?: DebounceSettings): T;
350
+ declare const useDebounce: UseDebounce;
138
351
 
139
- declare function useDebounceFn<T extends (...args: any) => any>(fn: T, wait?: number, options?: DebounceSettings): {
140
- run: lodash.DebouncedFunc<(...args_0: Parameters<T>) => ReturnType<T>>;
352
+ /**
353
+ * @title useDebounceFn
354
+ * @returns_en A object with the following elements:
355
+ * - run: exec function.
356
+ * - cancel: cancel exec function.
357
+ * - flush: immediately exec function
358
+ * @returns 具有以下元素的对象:
359
+ * - run:执行函数。
360
+ * - cancel:取消执行函数。
361
+ * - flush: 立即执行函数
362
+ */
363
+ type UseDebounceFn = <T extends (...args: any) => any>(
364
+ /**
365
+ * @zh 要防抖的函数
366
+ * @en debounce function
367
+ */
368
+ fn: T,
369
+ /**
370
+ * @zh 间隔时间
371
+ * @en wait time
372
+ */
373
+ wait?: number,
374
+ /**
375
+ * @zh 传递给 `lodash.debounce` 的属性
376
+ * @en options passed to `lodash.debounce`
377
+ */
378
+ options?: DebounceSettings$1) => {
379
+ run: DebouncedFunc<(...args_0: Parameters<T>) => ReturnType<T>>;
141
380
  cancel: () => void;
142
- flush: () => ReturnType<T> | undefined;
381
+ flush: any;
143
382
  };
144
383
 
145
- declare function useRafState<S>(initialState: S | (() => S)): readonly [S, Dispatch<SetStateAction<S>>];
146
-
147
- declare function useUpdate(): () => void;
384
+ declare const useDebounceFn: UseDebounceFn;
148
385
 
149
- interface UseTimeoutFnOptions {
150
- /**
151
- * Start the timer immediate after calling this function
152
- *
153
- * @default false
154
- */
155
- immediate?: boolean;
156
- }
157
386
  /**
158
- * Wrapper for `setTimeout` with controls.
159
- *
160
- * @param cb
161
- * @param interval
162
- * @param options
387
+ * @title useDeepCompareEffect
163
388
  */
164
- declare function useTimeoutFn(cb: (...args: unknown[]) => any, interval: number, options?: UseTimeoutFnOptions): Stoppable;
165
-
166
- declare function useTimeout(ms?: number, options?: UseTimeoutFnOptions): Stoppable;
167
-
168
- declare function useMountedState(): () => boolean;
169
-
170
- type TargetValue<T> = T | undefined | null;
171
- type TargetType = HTMLElement | Element | Window | Document | EventTarget;
172
- type BasicTarget<T extends TargetType = Element> = (() => TargetValue<T>) | TargetValue<T> | MutableRefObject<TargetValue<T>>;
173
-
174
- type Target = BasicTarget<HTMLElement | Element | Window | Document | EventTarget>;
175
- declare function useEventListener<K extends keyof WindowEventMap>(eventName: K, handler: (event: WindowEventMap[K]) => void, element?: Window, options?: boolean | AddEventListenerOptions): void;
176
- declare function useEventListener<K extends keyof DocumentEventMap>(eventName: K, handler: (event: DocumentEventMap[K]) => void, element: Document, options?: boolean | AddEventListenerOptions): void;
177
- declare function useEventListener<K extends keyof HTMLElementEventMap, T extends HTMLElement = HTMLDivElement>(eventName: K, handler: (event: HTMLElementEventMap[K]) => void, element: T, options?: boolean | AddEventListenerOptions): void;
178
- declare function useEventListener<K extends keyof ElementEventMap>(eventName: K, handler: (event: ElementEventMap[K]) => void, element: Element, options?: boolean | AddEventListenerOptions): void;
179
- declare function useEventListener<K = Event>(eventName: string, handler: (event: K) => void, element: EventTarget | null | undefined, options?: boolean | AddEventListenerOptions): void;
180
- declare function useEventListener(eventName: string, handler: (...p: any) => void, element?: Target, options?: boolean | AddEventListenerOptions): void;
389
+ type UseDeepCompareEffect = (
390
+ /**
391
+ * @zh 副作用函数
392
+ * @en effect function
393
+ */
394
+ effect: EffectCallback,
395
+ /**
396
+ * @zh 依赖列表
397
+ * @en dep list
398
+ */
399
+ deps: DependencyList) => void;
181
400
 
182
- declare function useCounter(initialValue?: number | (() => number), max?: number | null, min?: number | null): readonly [number, (newState: number | ((prev: number) => number) | (() => number)) => void, (delta?: number) => void, (delta?: number) => void, () => void];
401
+ declare const useDeepCompareEffect: UseDeepCompareEffect;
183
402
 
184
- type RafLoopReturns = readonly [() => void, () => void, () => boolean];
185
- declare function useRafFn(callback: FrameRequestCallback, initiallyActive?: boolean): RafLoopReturns;
403
+ declare const useDocumentVisibility: (defaultValue?: DocumentVisibilityState) => DocumentVisibilityState;
186
404
 
187
- interface IListener<T, U = void> {
188
- (arg1: T, arg2: U): void;
189
- }
190
- interface IDisposable {
191
- dispose(): void;
192
- }
193
- interface IEvent<T, U = void> {
194
- (listener: (arg1: T, arg2: U) => any): IDisposable;
195
- }
196
- interface IEventOnce<T, U = void> {
197
- (listener: (arg1: T, arg2: U) => any): void;
198
- }
199
- interface UseEventEmitterReturn<T, U = void> {
405
+ /**
406
+ * @title useDoubleClick
407
+ */
408
+ type UseDoubleClick = (props: UseDoubleClickProps) => void;
409
+ /**
410
+ * @title UseDoubleClickProps
411
+ */
412
+ interface UseDoubleClickProps {
200
413
  /**
201
- * Subscribe to an event. When calling emit, the listeners will execute.
202
- * @param listener watch listener.
203
- * @returns a stop function to remove the current callback.
414
+ * @zh dom对象
415
+ * @en dom element
204
416
  */
205
- event: IEvent<T, U>;
417
+ target: RefObject<Element>;
206
418
  /**
207
- * fire an event, the corresponding event listeners will execute.
208
- * @param event data sent.
419
+ * @zh 延迟时间(毫秒)
420
+ * @en latency time (milliseconds)
209
421
  */
210
- fire: (arg1: T, arg2: U) => void;
422
+ latency?: number | undefined;
211
423
  /**
212
- * Remove all corresponding listener.
424
+ * @zh 单击事件处理函数
425
+ * @en single click event handler
213
426
  */
214
- dispose: () => void;
427
+ onSingleClick?: ((e?: MouseEvent | TouchEvent) => void) | undefined;
428
+ /**
429
+ * @zh 双击事件处理函数
430
+ * @en double click event handler
431
+ */
432
+ onDoubleClick?: ((e?: MouseEvent | TouchEvent) => void) | undefined;
215
433
  }
216
- declare function useEventEmitter<T, U = void>(): readonly [IEvent<T, U>, (arg1: T, arg2: U) => void, () => void];
217
-
218
- declare function useFavicon(href: string, baseUrl?: string, rel?: string): void;
219
434
 
220
- declare function useMutationObserver(callback: MutationCallback, target: BasicTarget, options?: MutationObserverInit): () => void;
435
+ declare const useDoubleClick: UseDoubleClick;
221
436
 
222
- type DepsEqualFnType<TDeps extends DependencyList> = (prevDeps: TDeps, nextDeps: TDeps) => boolean;
223
- declare function useCustomCompareEffect<TDeps extends DependencyList>(effect: EffectCallback, deps: TDeps, depsEqual: DepsEqualFnType<TDeps>): void;
224
-
225
- declare function useDeepCompareEffect(effect: EffectCallback, deps: DependencyList): void;
226
-
227
- declare function useTitle(title: string): void;
437
+ type Fn = (this: any, ...args: any[]) => any;
438
+ type Stoppable = [boolean, Fn, Fn];
439
+ type PointerType = "mouse" | "touch" | "pen";
440
+ interface Position {
441
+ x: number;
442
+ y: number;
443
+ }
228
444
 
229
- interface UseScriptTagOptions {
445
+ /**
446
+ * @title useDraggable
447
+ * @returns 包含以下元素的元组:
448
+ * - x
449
+ * - y
450
+ * - 元素是否在拖动中
451
+ * @returns_en A tuple with the following elements:
452
+ * - x
453
+ * - y
454
+ * - Whether the element is being dragged
455
+ */
456
+ type UseDraggable = (
457
+ /**
458
+ * @zh dom对象
459
+ * @en dom element
460
+ */
461
+ target: RefObject<HTMLElement | SVGElement>,
462
+ /**
463
+ * @zh 可选参数
464
+ * @en optional params
465
+ */
466
+ options?: UseDraggableOptions) => readonly [number, number, boolean];
467
+ /**
468
+ * @title UseDraggableOptions
469
+ */
470
+ interface UseDraggableOptions {
230
471
  /**
231
- * Load the script immediately
232
- *
233
- * @default true
472
+ * @en Only start the dragging when click on the element directly
473
+ * @zh 仅当直接单击元素时才开始拖动
474
+ * @defaultValue false
234
475
  */
235
- immediate?: boolean;
476
+ exact?: boolean;
236
477
  /**
237
- * Add `async` attribute to the script tag
238
- *
239
- * @default true
478
+ * @en Prevent events defaults
479
+ * @zh 阻止默认事件
480
+ * @defaultValue false
240
481
  */
241
- async?: boolean;
482
+ preventDefault?: boolean;
242
483
  /**
243
- * Script type
244
- *
245
- * @default 'text/javascript'
484
+ * @en Prevent events propagation
485
+ * @zh 阻止事件冒泡
486
+ * @defaultValue false
246
487
  */
247
- type?: string;
488
+ stopPropagation?: boolean;
248
489
  /**
249
- * Manual controls the timing of loading and unloading
250
- *
251
- * @default false
490
+ * @en Element to attach `pointermove` and `pointerup` events to.
491
+ * @zh 将“pointermove”和“pointerup”事件附加到的dom元素
492
+ * @defaultValue window
252
493
  */
253
- manual?: boolean;
254
- crossOrigin?: "anonymous" | "use-credentials";
255
- referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
256
- noModule?: boolean;
257
- defer?: boolean;
494
+ draggingElement?: RefObject<HTMLElement | SVGElement | Window | Document>;
258
495
  /**
259
- * Add custom attribute to the script tag
260
- *
496
+ * @en Handle that triggers the drag event
497
+ * @zh 触发拖动事件的dom元素
498
+ * @defaultValue target
261
499
  */
262
- attrs?: Record<string, string>;
263
- }
264
- type Status = "idle" | "loading" | "ready" | "error";
265
- declare function useScriptTag(src: string, onLoaded?: (el: HTMLScriptElement) => void, options?: UseScriptTagOptions): readonly [HTMLScriptElement | null, Status, (waitForScriptLoad?: boolean) => Promise<HTMLScriptElement | boolean>, () => void];
266
-
267
- type IState = PermissionState | "";
268
- type DescriptorNamePolyfill = "accelerometer" | "accessibility-events" | "ambient-light-sensor" | "background-sync" | "camera" | "clipboard-read" | "clipboard-write" | "gyroscope" | "magnetometer" | "microphone" | "notifications" | "payment-handler" | "persistent-storage" | "push" | "speaker";
269
- type GeneralPermissionDescriptor = PermissionDescriptor | {
270
- name: DescriptorNamePolyfill;
271
- };
272
- declare function usePermission(permissionDesc: GeneralPermissionDescriptor | GeneralPermissionDescriptor["name"]): IState;
273
-
274
- interface UseLongPressOptions {
275
- isPreventDefault?: boolean;
276
- delay?: number;
277
- }
278
- declare function useLongPress(callback: (e: TouchEvent | MouseEvent) => void, { isPreventDefault, delay }?: UseLongPressOptions): {
279
- readonly onMouseDown: (e: any) => void;
280
- readonly onTouchStart: (e: any) => void;
281
- readonly onMouseUp: () => void;
282
- readonly onMouseLeave: () => void;
283
- readonly onTouchEnd: () => void;
284
- };
285
-
286
- declare function useObjectUrl(object: Blob | MediaSource | undefined): string | undefined;
287
-
288
- declare function useIdle(ms?: number, initialState?: boolean, events?: (keyof WindowEventMap)[]): boolean;
289
-
290
- interface UseMediaDeviceOptions {
500
+ handle?: RefObject<HTMLElement | SVGElement>;
291
501
  /**
292
- * Request for permissions immediately if it's not granted,
293
- * otherwise label and deviceIds could be empty
294
- *
295
- * @default false
502
+ * @en Pointer types that listen to.
503
+ * @zh 监听的事件类型
504
+ * @defaultValue ['mouse', 'touch', 'pen']
296
505
  */
297
- requestPermissions?: boolean;
506
+ pointerTypes?: PointerType[];
298
507
  /**
299
- * Request for types of media permissions
300
- *
301
- * @default { audio: true, video: true }
508
+ * @en Initial position of the element.
509
+ * @zh 初始的元素位置
510
+ * @defaultValue { x: 0, y: 0 }
302
511
  */
303
- constraints?: MediaStreamConstraints;
304
- }
305
- declare function useMediaDevices(options?: UseMediaDeviceOptions): readonly [{
306
- devices: {
307
- deviceId: string;
308
- groupId: string;
309
- kind: MediaDeviceKind;
310
- label: string;
311
- }[];
312
- }, () => Promise<boolean>];
313
-
314
- type UseTextDirectionValue = "ltr" | "rtl" | "auto";
315
- interface UseTextDirectionOptions {
512
+ initialValue?: Position;
316
513
  /**
317
- * CSS Selector for the target element applying to
318
- *
319
- * @default 'html'
514
+ * @en Callback when the dragging starts. Return `false` to prevent dragging.
515
+ * @zh 拖动开始时的回调。 返回“false”以防止拖动
320
516
  */
321
- selector?: string;
517
+ onStart?: (position: Position, event: PointerEvent) => void | false;
322
518
  /**
323
- * Initial value
324
- *
325
- * @default 'ltr'
519
+ * @en Callback during dragging.
520
+ * @zh 拖动时候的回调
326
521
  */
327
- initialValue?: UseTextDirectionValue;
328
- }
329
- declare function useTextDirection(options?: UseTextDirectionOptions): readonly [UseTextDirectionValue, (value: UseTextDirectionValue) => void];
330
-
331
- interface CursorState {
332
- screenX: number;
333
- screenY: number;
334
- clientX: number;
335
- clientY: number;
336
- pageX: number;
337
- pageY: number;
338
- elementX: number;
339
- elementY: number;
340
- elementH: number;
341
- elementW: number;
342
- elementPosX: number;
343
- elementPosY: number;
344
- }
345
- declare function useMouse(target?: BasicTarget): CursorState;
346
-
347
- interface UseFpsOptions {
522
+ onMove?: (position: Position, event: PointerEvent) => void;
348
523
  /**
349
- * Calculate the FPS on every x frames.
350
- * @default 10
524
+ * @en Callback when dragging end.
525
+ * @zh 拖动结束的回调
351
526
  */
352
- every?: number;
527
+ onEnd?: (position: Position, event: PointerEvent) => void;
353
528
  }
354
- declare const _default$2: (options?: UseFpsOptions | undefined) => number;
355
529
 
356
- declare function useGeolocation(options?: Partial<PositionOptions>): {
357
- readonly coordinates: GeolocationCoordinates;
358
- readonly locatedAt: number | null;
359
- readonly error: GeolocationPositionError | null;
360
- };
530
+ declare const useDraggable: UseDraggable;
361
531
 
362
- interface UseFullScreenOptions {
363
- onExit?: () => void;
364
- onEnter?: () => void;
365
- }
366
- declare function useFullscreen(target: BasicTarget, options?: UseFullScreenOptions): readonly [boolean, {
367
- readonly enterFullscreen: () => void;
368
- readonly exitFullscreen: () => void;
369
- readonly toggleFullscreen: () => void;
370
- readonly isEnabled: boolean;
371
- }];
532
+ /**
533
+ * @title useDropZone
534
+ * @returns 文件是否在区域上
535
+ * @returns_en Whether the file is on the zone
536
+ */
537
+ type UseDropZone = (
538
+ /**
539
+ * @zh 目标元素
540
+ * @en target element
541
+ */
542
+ target: RefObject<EventTarget>,
543
+ /**
544
+ * @zh 拖拽释放时候的回调
545
+ * @en drop callback
546
+ */
547
+ onDrop?: ((files: File[] | null) => void) | undefined) => boolean;
372
548
 
373
- interface INetworkInformation extends EventTarget {
374
- readonly downlink: number;
375
- readonly downlinkMax: number;
376
- readonly effectiveType: "slow-2g" | "2g" | "3g" | "4g";
377
- readonly rtt: number;
378
- readonly saveData: boolean;
379
- readonly type: "bluetooth" | "cellular" | "ethernet" | "none" | "wifi" | "wimax" | "other" | "unknown";
380
- onChange: (event: Event) => void;
549
+ declare const useDropZone: UseDropZone;
550
+
551
+ /**
552
+ * @title useElementBounding
553
+ */
554
+ type UseElementBounding = (
555
+ /**
556
+ * @zh 目标元素
557
+ * @en target element
558
+ */
559
+ target: RefObject<Element>,
560
+ /**
561
+ * @zh 可选参数
562
+ * @en optional params
563
+ */
564
+ options?: UseElementBoundingOptions) => UseElementBoundingReturn;
565
+ /**
566
+ * @title UseElementBoundingOptions
567
+ */
568
+ interface UseElementBoundingOptions {
569
+ /**
570
+ * @en Reset values to 0 on component unmounted
571
+ * @zh 将数值重置为0
572
+ * @defaultValue true
573
+ */
574
+ reset?: boolean;
575
+ /**
576
+ * @en Listen to window resize event
577
+ * @zh 是否监听 resize 事件
578
+ * @defaultValue true
579
+ */
580
+ windowResize?: boolean;
581
+ /**
582
+ * @en Listen to window scroll event
583
+ * @zh 是否监听 scroll 事件
584
+ * @defaultValue true
585
+ */
586
+ windowScroll?: boolean;
587
+ /**
588
+ * @en Immediately call update on component mounted
589
+ * @zh 立即更新
590
+ * @default true
591
+ */
592
+ immediate?: boolean;
381
593
  }
382
- interface IUseNetworkState {
594
+ /**
595
+ * @title UseElementBoundingReturn
596
+ */
597
+ interface UseElementBoundingReturn {
383
598
  /**
384
- * @desc Whether browser connected to the network or not.
599
+ * @en Height of the element
600
+ * @zh 元素的高度
385
601
  */
386
- online: boolean | undefined;
602
+ readonly height: number;
387
603
  /**
388
- * @desc Previous value of `online` property. Helps to identify if browser
389
- * just connected or lost connection.
604
+ * @en Bottom position of the element
605
+ * @zh 元素的底部位置
390
606
  */
391
- previous: boolean | undefined;
607
+ readonly bottom: number;
392
608
  /**
393
- * @desc The {Date} object pointing to the moment when state change occurred.
609
+ * @en Left position of the element
610
+ * @zh 元素的左侧位置
394
611
  */
395
- since: Date | undefined;
612
+ readonly left: number;
396
613
  /**
397
- * @desc Effective bandwidth estimate in megabits per second, rounded to the
398
- * nearest multiple of 25 kilobits per seconds.
614
+ * @en Right position of the element
615
+ * @zh 元素的右侧位置
399
616
  */
400
- downlink: INetworkInformation["downlink"] | undefined;
617
+ readonly right: number;
401
618
  /**
402
- * @desc Maximum downlink speed, in megabits per second (Mbps), for the
403
- * underlying connection technology
619
+ * @en Top position of the element
620
+ * @zh 元素的顶部位置
404
621
  */
405
- downlinkMax: INetworkInformation["downlinkMax"] | undefined;
622
+ readonly top: number;
406
623
  /**
407
- * @desc Effective type of the connection meaning one of 'slow-2g', '2g', '3g', or '4g'.
408
- * This value is determined using a combination of recently observed round-trip time
409
- * and downlink values.
624
+ * @en Width of the element
625
+ * @zh 元素的宽度
410
626
  */
411
- effectiveType: INetworkInformation["effectiveType"] | undefined;
627
+ readonly width: number;
412
628
  /**
413
- * @desc Estimated effective round-trip time of the current connection, rounded
414
- * to the nearest multiple of 25 milliseconds
629
+ * @en X position of the element
630
+ * @zh 元素的 X 位置
415
631
  */
416
- rtt: INetworkInformation["rtt"] | undefined;
632
+ readonly x: number;
417
633
  /**
418
- * @desc {true} if the user has set a reduced data usage option on the user agent.
634
+ * @en Y position of the element
635
+ * @zh 元素的 Y 位置
419
636
  */
420
- saveData: INetworkInformation["saveData"] | undefined;
637
+ readonly y: number;
421
638
  /**
422
- * @desc The type of connection a device is using to communicate with the network.
423
- * It will be one of the following values:
424
- * - bluetooth
425
- * - cellular
426
- * - ethernet
427
- * - none
428
- * - wifi
429
- * - wimax
430
- * - other
431
- * - unknown
639
+ * @en Manual update
640
+ * @zh 手动更新
432
641
  */
433
- type: INetworkInformation["type"] | undefined;
642
+ readonly update: () => void;
434
643
  }
435
- declare function useNetwork(): IUseNetworkState;
436
644
 
437
- declare function useOnline(): boolean | undefined;
645
+ declare const useElementBounding: UseElementBounding;
438
646
 
439
- interface OrientationState {
440
- angle: number;
441
- type: string;
442
- }
443
- declare function useOrientation(initialState?: OrientationState): readonly [OrientationState, (type: OrientationLockType) => Promise<void> | undefined, () => void];
647
+ /**
648
+ * @title useElementSize
649
+ * @returns_en A tuple with the following elements:
650
+ * - width
651
+ * - height
652
+ * @returns 包含以下元素的元组:
653
+ * - 元素宽度。
654
+ * - 元素高度。
655
+ */
656
+ type UseElementSize = (
657
+ /**
658
+ * @zh dom对象
659
+ * @en dom element
660
+ */
661
+ target: RefObject<Element>,
662
+ /**
663
+ * @zh `resizeObserver` 参数
664
+ * @en options passed to `resizeObserver`
665
+ */
666
+ options?: ResizeObserverOptions) => readonly [number, number];
444
667
 
445
- declare function useIntersectionObserver(target: BasicTarget, callback: IntersectionObserverCallback, options?: IntersectionObserverInit): () => void;
668
+ declare const useElementSize: UseElementSize;
446
669
 
447
- declare function usePageLeave(): boolean;
670
+ /**
671
+ * @title useElementVisibility
672
+ * @returns 包含以下元素的元组:
673
+ * - 当前元素是否可见。
674
+ * - 停止监听函数。
675
+ * @returns_en A tuple with the following elements:
676
+ * - is the current element visible.
677
+ * - stop observer listening function.
678
+ */
679
+ type UseElementVisibility = (
680
+ /**
681
+ * @zh dom对象
682
+ * @en dom element
683
+ */
684
+ target: RefObject<HTMLElement | SVGElement>,
685
+ /**
686
+ * @zh 传递给 `intersectionObserver` 的选项
687
+ * @en options passed to `intersectionObserver`
688
+ */
689
+ options?: IntersectionObserverInit) => readonly [boolean, () => void];
448
690
 
449
- declare function useDocumentVisibility(defaultValue?: DocumentVisibilityState): DocumentVisibilityState;
691
+ declare const useElementVisibility: UseElementVisibility;
450
692
 
451
- declare function useResizeObserver(target: BasicTarget, callback: ResizeObserverCallback, options?: ResizeObserverOptions): () => void;
693
+ /**
694
+ * @title useEvent
695
+ */
696
+ type UseEvent = <T extends Fn>(
697
+ /**
698
+ * @zh 函数
699
+ * @en function
700
+ */
701
+ fn: T) => T;
452
702
 
453
- declare function useDropZone(target: BasicTarget<EventTarget>, onDrop?: (files: File[] | null) => void): boolean;
703
+ /**
704
+ * keep function reference immutable
705
+ */
706
+ declare const useEvent: UseEvent;
454
707
 
455
- interface UseFileDialogOptions {
456
- /**
457
- * @default true
458
- */
459
- multiple?: boolean;
460
- /**
461
- * @default '*'
462
- */
463
- accept?: string;
464
- /**
465
- * Select the input source for the capture file.
466
- * @see [HTMLInputElement Capture](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
467
- */
468
- capture?: string;
469
- }
470
- declare function useFileDialog(options?: UseFileDialogOptions): readonly [
471
- FileList | null,
472
- (localOptions?: Partial<UseFileDialogOptions>) => void,
708
+ /**
709
+ * @title useEventEmitter
710
+ * @returns 包含以下元素的元组:
711
+ * - 添加监听器的函数。
712
+ * - 触发函数。
713
+ * - 停止函数。
714
+ * @returns_en A tuple with the following elements:
715
+ * - a function to add lisenter.
716
+ * - fire functiion.
717
+ * stop functiion
718
+ */
719
+ type UseEventEmitter = <T, U = void>() => readonly [
720
+ UseEventEmitterEvent<T, U>,
721
+ (arg1: T, arg2: U) => void,
473
722
  () => void
474
723
  ];
475
-
476
- interface UseScrollOptions {
477
- /**
478
- * Throttle time for scroll event, it’s disabled by default.
479
- *
480
- * @default 0
481
- */
482
- throttle?: number;
724
+ interface UseEventEmitterListener<T, U = void> {
725
+ (arg1: T, arg2: U): void;
726
+ }
727
+ interface UseEventEmitterDisposable {
728
+ dispose(): void;
729
+ }
730
+ interface UseEventEmitterEvent<T, U = void> {
731
+ (listener: (arg1: T, arg2: U) => any): UseEventEmitterDisposable;
732
+ }
733
+ interface UseEventEmitterEventOnce<T, U = void> {
734
+ (listener: (arg1: T, arg2: U) => any): void;
735
+ }
736
+ interface UseEventEmitterReturn<T, U = void> {
483
737
  /**
484
- * The check time when scrolling ends.
485
- * This configuration will be setting to (throttle + idle) when the `throttle` is configured.
486
- *
487
- * @default 200
738
+ * Subscribe to an event. When calling emit, the listeners will execute.
739
+ * @param listener watch listener.
740
+ * @returns a stop function to remove the current callback.
488
741
  */
489
- idle?: number;
742
+ event: UseEventEmitterEvent<T, U>;
490
743
  /**
491
- * Offset arrived states by x pixels
492
- *
744
+ * fire an event, the corresponding event listeners will execute.
745
+ * @param event data sent.
493
746
  */
494
- offset?: {
495
- left?: number;
496
- right?: number;
497
- top?: number;
498
- bottom?: number;
499
- };
747
+ fire: (arg1: T, arg2: U) => void;
500
748
  /**
501
- * Trigger it when scrolling.
502
- *
749
+ * Remove all corresponding listener.
503
750
  */
504
- onScroll?: (e: Event) => void;
751
+ dispose: () => void;
752
+ }
753
+
754
+ declare const useEventEmitter: <T, U = void>() => readonly [UseEventEmitterEvent<T, U>, (arg1: T, arg2: U) => void, () => void];
755
+
756
+ type Target = BasicTarget<HTMLElement | Element | Window | Document | EventTarget>;
757
+ declare function useEventListener<K extends keyof WindowEventMap>(eventName: K, handler: (event: WindowEventMap[K]) => void, element?: Window, options?: boolean | AddEventListenerOptions): void;
758
+ declare function useEventListener<K extends keyof DocumentEventMap>(eventName: K, handler: (event: DocumentEventMap[K]) => void, element: Document, options?: boolean | AddEventListenerOptions): void;
759
+ declare function useEventListener<K extends keyof HTMLElementEventMap, T extends HTMLElement = HTMLDivElement>(eventName: K, handler: (event: HTMLElementEventMap[K]) => void, element: T, options?: boolean | AddEventListenerOptions): void;
760
+ declare function useEventListener<K extends keyof ElementEventMap>(eventName: K, handler: (event: ElementEventMap[K]) => void, element: Element, options?: boolean | AddEventListenerOptions): void;
761
+ declare function useEventListener<K = Event>(eventName: string, handler: (event: K) => void, element: EventTarget | null | undefined, options?: boolean | AddEventListenerOptions): void;
762
+ declare function useEventListener(eventName: string, handler: (...p: any) => void, element?: Target, options?: boolean | AddEventListenerOptions): void;
763
+
764
+ /**
765
+ * @title useEyeDropper
766
+ * @returns 包含以下元素的元组:
767
+ * - 浏览器是否支持该特性。
768
+ * - 打开颜色选择器的函数。
769
+ * @returns_en A tuple with the following elements:
770
+ * - Whether the browser supports this feature.
771
+ * - A function to open eye dropper.
772
+ */
773
+ type UseEyeDropper = () => readonly [
774
+ boolean,
775
+ (options?: UseEyeDropperOpenOptions) => Promise<UseEyeDropperOpenReturnType>
776
+ ];
777
+ /**
778
+ * @title UseEyeDropperOpenOptions
779
+ */
780
+ interface UseEyeDropperOpenOptions {
505
781
  /**
506
- * Trigger it when scrolling ends.
507
- *
782
+ * @zh 终止信号
783
+ * @en abort signal
508
784
  */
509
- onStop?: (e: Event) => void;
785
+ signal?: AbortSignal;
786
+ }
787
+ /**
788
+ * @title UseEyeDropperOpenReturnType
789
+ */
790
+ interface UseEyeDropperOpenReturnType {
510
791
  /**
511
- * Listener options for scroll event.
512
- *
513
- * @default {capture: false, passive: true}
792
+ * @zh rgb 颜色值
793
+ * @en rgb color value
514
794
  */
515
- eventListenerOptions?: boolean | AddEventListenerOptions;
795
+ sRGBHex: string;
516
796
  }
517
- declare function useScroll(target: BasicTarget<HTMLElement | SVGElement | Window | Document>, options?: UseScrollOptions): readonly [
518
- number,
519
- number,
520
- boolean,
521
- {
522
- left: boolean;
523
- right: boolean;
524
- top: boolean;
525
- bottom: boolean;
526
- },
527
- {
528
- left: boolean;
529
- right: boolean;
530
- top: boolean;
531
- bottom: boolean;
532
- }
533
- ];
534
797
 
535
- interface UseInfiniteScrollOptions extends UseScrollOptions {
798
+ declare const useEyeDropper: UseEyeDropper;
799
+
800
+ declare const useFavicon: (href: string, baseUrl?: string, rel?: string) => void;
801
+
802
+ /**
803
+ * @title useFileDialog
804
+ * @returns 包含以下元素的元组:
805
+ * - 文件数组。
806
+ * - 打开文件选择器函数。
807
+ * - 重置函数。
808
+ * @returns_en A tuple with the following elements:
809
+ * - file array.
810
+ * - A function to open file dialog.
811
+ * - A function to reset files
812
+ */
813
+ type UseFileDialog = (options?: UseFileDialogOptions) => readonly [
814
+ FileList | null,
815
+ (localOptions?: Partial<UseFileDialogOptions>) => void,
816
+ () => void
817
+ ];
818
+ /**
819
+ * @title UseFileDialogOptions
820
+ */
821
+ interface UseFileDialogOptions {
536
822
  /**
537
- * The minimum distance between the bottom of the element and the bottom of the viewport
538
- *
539
- * @default 0
823
+ * @zh 选择多个文件
824
+ * @en choose multiple file
825
+ * @defaultValue true
540
826
  */
541
- distance?: number;
827
+ multiple?: boolean;
542
828
  /**
543
- * The direction in which to listen the scroll.
544
- *
545
- * @default 'bottom'
829
+ * @zh 可以接受的文件类型
830
+ * @en accept file type
831
+ * @defaultValue '*'
546
832
  */
547
- direction?: "top" | "bottom" | "left" | "right";
833
+ accept?: string;
548
834
  /**
549
- * Whether to preserve the current scroll position when loading more items.
550
- *
551
- * @default false
835
+ * @zh [指定设备,可以从麦克风或者摄像头中获取文件](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
836
+ * @en [Specify the device to obtain files from the microphone or camera](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
837
+ * @see [HTMLInputElement Capture](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
552
838
  */
553
- preserveScrollPosition?: boolean;
839
+ capture?: string;
554
840
  }
555
- declare function useInfiniteScroll(target: BasicTarget<HTMLElement | SVGElement>, onLoadMore: (state: ReturnType<typeof useScroll>) => void | Promise<void>, options?: UseInfiniteScrollOptions): void;
556
841
 
557
- type KeyModifier = "Alt" | "AltGraph" | "CapsLock" | "Control" | "Fn" | "FnLock" | "Meta" | "NumLock" | "ScrollLock" | "Shift" | "Symbol" | "SymbolLock";
558
- interface UseModifierOptions {
559
- /**
560
- * Event names that will prompt update to modifier states
561
- *
562
- * @default ['mousedown', 'mouseup', 'keydown', 'keyup']
563
- */
564
- events?: (keyof WindowEventMap)[];
842
+ declare const useFileDialog: UseFileDialog;
843
+
844
+ /**
845
+ * @title useFirstMountState
846
+ */
847
+ type UseFirstMountState = () => boolean;
848
+
849
+ declare const useFirstMountState: UseFirstMountState;
850
+
851
+ /**
852
+ * @title useFocus
853
+ * @returns 包含以下元素的元组:
854
+ * - 元素是否聚焦。
855
+ * - 更新聚焦状态。
856
+ * @returns_en A tuple with the following elements:
857
+ * - whether the element focus.
858
+ * - A function to update focus state.
859
+ */
860
+ type UseFocus = (
861
+ /**
862
+ * @zh dom对象
863
+ * @en dom element
864
+ */
865
+ target: RefObject<HTMLElement | SVGElement>,
866
+ /**
867
+ * @zh 默认值
868
+ * @en defaultValue
869
+ * @defaultValue false
870
+ */
871
+ initialValue?: boolean) => readonly [boolean, (value: boolean) => void];
872
+
873
+ declare const useFocus: UseFocus;
874
+
875
+ /**
876
+ * @title useFps
877
+ * @returns 每秒帧数
878
+ * @returns_en frames per second
879
+ */
880
+ type UseFps = (options?: UseFpsOptions) => number;
881
+ /**
882
+ * @title UseFpsOptions
883
+ */
884
+ interface UseFpsOptions {
565
885
  /**
566
- * Initial value of the returned ref
567
- *
568
- * @default false
886
+ * @en Calculate the FPS on every x frames.
887
+ * @zh 每过 x 帧计算一次
888
+ * @defaultValue 10
569
889
  */
570
- initial?: boolean;
890
+ every?: number;
571
891
  }
572
- declare function useKeyModifier(modifier: KeyModifier, options?: UseModifierOptions): boolean;
573
892
 
574
- type IHookStateInitialSetter<S> = () => S;
575
- type IHookStateInitAction<S> = S | IHookStateInitialSetter<S>;
893
+ declare const useFps: (options?: UseFpsOptions) => number;
576
894
 
577
- interface MousePressedOptions {
895
+ /**
896
+ * @title useFullScreen
897
+ * @returns 包含以下元素的元组:
898
+ * - 当前是否处于全屏。
899
+ * - 一个操作对象:
900
+ * - enterFullscreen: 进入全屏。
901
+ * - exitFullscreen: 退出全屏。
902
+ * - toggleFullscreen: 切换全屏。
903
+ * - isEnabled: 当前浏览器是否支持全屏。
904
+ * @returns_en A tuple with the following elements:
905
+ * - whether the browser is in fullscreen.
906
+ * - a object:
907
+ * - enterFullscreen
908
+ * - exitFullscreen
909
+ * - toggleFullscreen
910
+ * - isEnabled: whether the browser support fullscreen
911
+ */
912
+ type UseFullscreen = (
913
+ /**
914
+ * @zh dom元素
915
+ * @en dom element
916
+ */
917
+ target: RefObject<Element>,
918
+ /**
919
+ * @zh 可选参数
920
+ * @en optional params
921
+ */
922
+ options?: UseFullScreenOptions) => readonly [
578
923
  /**
579
- * Listen to `touchstart` `touchend` events
580
- *
581
- * @default true
924
+ * @zh 当前是否处于全屏
925
+ * @en whether is in fullscreen
582
926
  */
583
- touch?: boolean;
927
+ boolean,
928
+ {
929
+ /**
930
+ * @zh 进入全屏
931
+ * @en enter fullscreen
932
+ */
933
+ readonly enterFullscreen: () => void;
934
+ /**
935
+ * @zh 退出全屏
936
+ * @en exit fullscreen
937
+ */
938
+ readonly exitFullscreen: () => void;
939
+ /**
940
+ * @zh 切换全屏
941
+ * @en toggle fullscreen
942
+ */
943
+ readonly toggleFullscreen: () => void;
944
+ /**
945
+ * @zh 浏览器是否支持
946
+ * @en whether the browser support fullscreen
947
+ */
948
+ readonly isEnabled: boolean;
949
+ }
950
+ ];
951
+ /**
952
+ * @title UseFullScreenOptions
953
+ */
954
+ interface UseFullScreenOptions {
584
955
  /**
585
- * Listen to `dragstart` `drop` and `dragend` events
586
- *
587
- * @default true
956
+ * @zh 退出时候的回调
957
+ * @en exit callback
588
958
  */
589
- drag?: boolean;
959
+ onExit?: () => void;
590
960
  /**
591
- * Initial values
592
- *
593
- * @default false
961
+ * @zh 进入时候的回调
962
+ * @en enter callback
594
963
  */
595
- initialValue?: IHookStateInitAction<boolean>;
964
+ onEnter?: () => void;
596
965
  }
597
- type MouseSourceType = "mouse" | "touch" | null;
598
- declare function useMousePressed(target?: BasicTarget, options?: MousePressedOptions): readonly [boolean, MouseSourceType];
599
966
 
600
- declare function useScrollLock(target: BasicTarget<HTMLElement>, initialState?: boolean): readonly [boolean, (flag: boolean) => void];
967
+ declare const useFullscreen: UseFullscreen;
601
968
 
602
- declare function useElementSize(target: BasicTarget, options?: ResizeObserverOptions): readonly [number, number];
969
+ /**
970
+ * @title useGeoLocation
971
+ * @returns 包含以下元素的元组:
972
+ * - 坐标。
973
+ * - 获取坐标的时间戳。
974
+ * - 错误。
975
+ * @returns_en A tuple with the following elements:
976
+ * - coordinates.
977
+ * - timestamp when get coordinates.
978
+ * - errors.
979
+ */
980
+ type UseGeolocation = (
981
+ /**
982
+ * @zh 可选 `PositionOptions` 参数
983
+ * @en optional `PositionOptions` params
984
+ */
985
+ options?: Partial<PositionOptions>) => {
986
+ readonly coordinates: GeolocationCoordinates;
987
+ readonly locatedAt: number | null;
988
+ readonly error: GeolocationPositionError | null;
989
+ };
603
990
 
604
- interface UseVirtualListOptions {
605
- /**
606
- * container default height
607
- *
608
- * @default 300
609
- */
610
- containerHeight?: number;
611
- /**
612
- * item height, accept a pixel value or a function that returns the height
613
- */
614
- itemHeight: number | ((index: number) => number);
615
- /**
616
- * the extra buffer items outside of the view area
617
- *
618
- * @default 5
619
- */
620
- overscan?: number;
621
- }
622
- interface UseVirtualListItem<T> {
623
- data: T;
624
- index: number;
625
- }
626
- interface UseVirtualListReturn<T> {
627
- list: UseVirtualListItem<T>[];
628
- scrollTo: (index: number) => void;
629
- containerProps: {
630
- ref: RefObject<any>;
631
- onScroll: () => void;
632
- style: Partial<CSSProperties>;
633
- };
634
- wrapperProps: {
635
- style: {
636
- width: string;
637
- height: string;
638
- marginTop: string;
639
- };
640
- };
641
- }
642
- declare function useVirtualList<T = any>(list: T[] | undefined, options: UseVirtualListOptions): UseVirtualListReturn<T>;
991
+ declare const useGeolocation: UseGeolocation;
643
992
 
644
- type ColorScheme = "dark" | "light" | "no-preference";
645
- declare function usePreferredColorScheme(defaultState?: ColorScheme): ColorScheme;
993
+ declare const useHover: <T extends Element = HTMLDivElement>(target: RefObject<T>) => boolean;
646
994
 
647
- type Contrast = "more" | "less" | "custom" | "no-preference";
648
- declare function usePreferredContrast(defaultState?: Contrast): Contrast;
995
+ /**
996
+ * @title UseIdle
997
+ * @returns 是否处于空闲
998
+ * @returns_en whether user is idle
999
+ */
1000
+ type UseIdle = (
1001
+ /**
1002
+ * @zh 检测时间
1003
+ * @en detection time
1004
+ * @defaultValue 60e3
1005
+ */
1006
+ ms?: number,
1007
+ /**
1008
+ * @zh 初始值
1009
+ * @en initial value
1010
+ * @defaultValue false
1011
+ */
1012
+ initialState?: boolean,
1013
+ /**
1014
+ * @zh 监听的事件
1015
+ * @en listener events
1016
+ * @defaultValue ["mousemove","mousedown","resize","keydown","touchstart","wheel"]
1017
+ */
1018
+ events?: (keyof WindowEventMap)[]) => boolean;
649
1019
 
650
- declare function useActiveElement<T extends Element>(): T | null;
1020
+ declare const useIdle: UseIdle;
651
1021
 
652
- interface UseDraggableOptions {
1022
+ /**
1023
+ * @title useScroll
1024
+ * @returns 包含以下元素的元组:
1025
+ * - x 值。
1026
+ * - y 值。
1027
+ * - 是否在滚动。
1028
+ * - 到达边界状态。
1029
+ * - 滚动方向
1030
+ * @returns_en A tuple with the following elements:
1031
+ * - The x value.
1032
+ * - The y value.
1033
+ * - Whether it is scrolling.
1034
+ * - Boundary arrival status.
1035
+ * - Scroll direction.
1036
+ */
1037
+ type UseScroll = (
1038
+ /**
1039
+ * @zh dom元素
1040
+ * @en dom elment
1041
+ */
1042
+ target: RefObject<Element> | Window | Document,
1043
+ /**
1044
+ * @zh 可选参数
1045
+ * @en optional params
1046
+ */
1047
+ options?: UseScrollOptions) => readonly [
1048
+ number,
1049
+ number,
1050
+ boolean,
1051
+ UseScrollArrivedState,
1052
+ UseScrollDirection
1053
+ ];
1054
+ /**
1055
+ * @title UseScrollOptions
1056
+ */
1057
+ interface UseScrollOptions {
653
1058
  /**
654
- * Only start the dragging when click on the element directly
655
- *
656
- * @default false
1059
+ * @en Throttle time for scroll event, it’s disabled by default.
1060
+ * @zh 滚动事件的节流时间,默认关闭。
1061
+ * @defaultValue 0
657
1062
  */
658
- exact?: boolean;
1063
+ throttle?: number;
659
1064
  /**
660
- * Prevent events defaults
661
- *
662
- * @default false
1065
+ * @en The check time when scrolling ends.
1066
+ * This configuration will be setting to (throttle + idle) when the `throttle` is configured.
1067
+ * @zh 滚动结束时的检查时间。
1068
+ * 当配置 `throttle` 时,此配置将设置为 (throttle +idle)。
1069
+ * @default 200
663
1070
  */
664
- preventDefault?: boolean;
1071
+ idle?: number;
665
1072
  /**
666
- * Prevent events propagation
667
- *
668
- * @default false
1073
+ * @en Offset arrived states by x pixels
1074
+ * @zh 将到达状态偏移 x 像素
669
1075
  */
670
- stopPropagation?: boolean;
1076
+ offset?: UseScrollOffset;
671
1077
  /**
672
- * Element to attach `pointermove` and `pointerup` events to.
673
- *
674
- * @default window
1078
+ * @en Trigger it when scrolling.
1079
+ * @zh 滚动的回调
675
1080
  */
676
- draggingElement?: BasicTarget<HTMLElement | SVGElement | Window | Document>;
1081
+ onScroll?: (e: Event) => void;
677
1082
  /**
678
- * Handle that triggers the drag event
679
- *
680
- * @default target
1083
+ * @en Trigger it when scrolling ends.
1084
+ * @zh 滚动结束的回调
681
1085
  */
682
- handle?: BasicTarget<HTMLElement | SVGElement>;
1086
+ onStop?: (e: Event) => void;
683
1087
  /**
684
- * Pointer types that listen to.
685
- *
686
- * @default ['mouse', 'touch', 'pen']
1088
+ * @en Listener options for scroll event.
1089
+ * @zh 滚动事件参数
1090
+ * @defaultValue {capture: false, passive: true}
687
1091
  */
688
- pointerTypes?: PointerType[];
1092
+ eventListenerOptions?: boolean | AddEventListenerOptions;
1093
+ }
1094
+ interface UseScrollOffset {
1095
+ left?: number;
1096
+ right?: number;
1097
+ top?: number;
1098
+ bottom?: number;
1099
+ }
1100
+ /**
1101
+ * @title UseScrollArrivedState
1102
+ */
1103
+ interface UseScrollArrivedState {
689
1104
  /**
690
- * Initial position of the element.
691
- *
692
- * @default { x: 0, y: 0 }
1105
+ * @en arrived left
1106
+ * @zh 到达左边
693
1107
  */
694
- initialValue?: Position;
1108
+ left: boolean;
695
1109
  /**
696
- * Callback when the dragging starts. Return `false` to prevent dragging.
1110
+ * @en arrived right
1111
+ * @zh 到达右边
697
1112
  */
698
- onStart?: (position: Position, event: PointerEvent) => void | false;
1113
+ right: boolean;
699
1114
  /**
700
- * Callback during dragging.
1115
+ * @en arrived top
1116
+ * @zh 到达顶部
701
1117
  */
702
- onMove?: (position: Position, event: PointerEvent) => void;
1118
+ top: boolean;
703
1119
  /**
704
- * Callback when dragging end.
1120
+ * @en arrived bottom
1121
+ * @zh 到达底部
705
1122
  */
706
- onEnd?: (position: Position, event: PointerEvent) => void;
1123
+ bottom: boolean;
707
1124
  }
708
- declare function useDraggable(target: BasicTarget<HTMLElement | SVGElement>, options?: UseDraggableOptions): readonly [number, number, boolean];
709
-
710
- interface UseElementBoundingOptions {
1125
+ /**
1126
+ * @title UseScrollDirection
1127
+ */
1128
+ interface UseScrollDirection {
711
1129
  /**
712
- * Reset values to 0 on component unmounted
713
- *
714
- * @default true
1130
+ * @en scroll left
1131
+ * @zh 向左滚动
715
1132
  */
716
- reset?: boolean;
1133
+ left: boolean;
717
1134
  /**
718
- * Listen to window resize event
719
- *
720
- * @default true
1135
+ * @en scroll right
1136
+ * @zh 向右滚动
721
1137
  */
722
- windowResize?: boolean;
1138
+ right: boolean;
723
1139
  /**
724
- * Listen to window scroll event
725
- *
726
- * @default true
1140
+ * @en scroll top
1141
+ * @zh 向上滚动
727
1142
  */
728
- windowScroll?: boolean;
1143
+ top: boolean;
729
1144
  /**
730
- * Immediately call update on component mounted
731
- *
732
- * @default true
1145
+ * @en scroll bottom
1146
+ * @zh 向下滚动
733
1147
  */
734
- immediate?: boolean;
1148
+ bottom: boolean;
735
1149
  }
736
- declare function useElementBounding(target: BasicTarget, options?: UseElementBoundingOptions): {
737
- readonly height: number;
738
- readonly bottom: number;
739
- readonly left: number;
740
- readonly right: number;
741
- readonly top: number;
742
- readonly width: number;
743
- readonly x: number;
744
- readonly y: number;
745
- readonly update: () => void;
746
- };
747
-
748
- declare function useElementVisibility(target: BasicTarget<HTMLElement | SVGElement>, options?: IntersectionObserverInit): readonly [boolean, () => void];
749
-
750
- declare function useWindowsFocus(defauleValue?: boolean): boolean;
751
1150
 
752
- interface WindowSize {
753
- width: number;
754
- height: number;
1151
+ /**
1152
+ * @title useInfiniteScroll
1153
+ */
1154
+ type UseInfiniteScroll = (
1155
+ /**
1156
+ * @zh dom元素
1157
+ * @en dom element
1158
+ */
1159
+ target: RefObject<Element>,
1160
+ /**
1161
+ * @zh 加载更多函数
1162
+ * @en load more function
1163
+ */
1164
+ onLoadMore: UseInfiniteScrollLoadMore,
1165
+ /**
1166
+ * @zh 可选参数
1167
+ * @en optional params
1168
+ */
1169
+ options?: UseInfiniteScrollOptions) => void;
1170
+ /**
1171
+ * @title UseInfiniteScrollLoadMore
1172
+ */
1173
+ type UseInfiniteScrollLoadMore = (
1174
+ /**
1175
+ * @zh `useScroll` 返回的状态
1176
+ * @en the return state of `useScroll`
1177
+ */
1178
+ state: readonly [
1179
+ number,
1180
+ number,
1181
+ boolean,
1182
+ UseInfiniteScrollArrivedState,
1183
+ UseInfiniteScrollDirection
1184
+ ]) => void | Promise<void>;
1185
+ /**
1186
+ * @title UseInfiniteScrollOptions
1187
+ */
1188
+ interface UseInfiniteScrollOptions extends UseScrollOptions {
1189
+ /**
1190
+ * @en The minimum distance between the bottom of the element and the bottom of the viewport
1191
+ * @zh 元素底部与视口底部之间的最小距离
1192
+ * @defaultValue 0
1193
+ */
1194
+ distance?: number;
1195
+ /**
1196
+ * @en The direction in which to listen the scroll.
1197
+ * @zh 滚动方向
1198
+ * @defaultValue 'bottom'
1199
+ */
1200
+ direction?: "top" | "bottom" | "left" | "right";
1201
+ /**
1202
+ * @en Whether to preserve the current scroll position when loading more items.
1203
+ * @zh 加载更多项目时是否保留当前滚动位置
1204
+ * @defaultValueValue false
1205
+ */
1206
+ preserveScrollPosition?: boolean;
755
1207
  }
756
- declare function useWindowSize(): {
757
- readonly width: number;
758
- readonly height: number;
759
- };
760
-
761
- interface UseWindowScrollState {
762
- x: number;
763
- y: number;
1208
+ /**
1209
+ * @title UseInfiniteScrollArrivedState
1210
+ */
1211
+ interface UseInfiniteScrollArrivedState {
1212
+ /**
1213
+ * @en arrived left
1214
+ * @zh 到达左边
1215
+ */
1216
+ left: boolean;
1217
+ /**
1218
+ * @en arrived right
1219
+ * @zh 到达右边
1220
+ */
1221
+ right: boolean;
1222
+ /**
1223
+ * @en arrived top
1224
+ * @zh 到达顶部
1225
+ */
1226
+ top: boolean;
1227
+ /**
1228
+ * @en arrived bottom
1229
+ * @zh 到达底部
1230
+ */
1231
+ bottom: boolean;
1232
+ }
1233
+ /**
1234
+ * @title UseInfiniteScrollDirection
1235
+ */
1236
+ interface UseInfiniteScrollDirection {
1237
+ /**
1238
+ * @en scroll left
1239
+ * @zh 向左滚动
1240
+ */
1241
+ left: boolean;
1242
+ /**
1243
+ * @en scroll right
1244
+ * @zh 向右滚动
1245
+ */
1246
+ right: boolean;
1247
+ /**
1248
+ * @en scroll top
1249
+ * @zh 向上滚动
1250
+ */
1251
+ top: boolean;
1252
+ /**
1253
+ * @en scroll bottom
1254
+ * @zh 向下滚动
1255
+ */
1256
+ bottom: boolean;
764
1257
  }
765
- declare function useWindowScroll(): UseWindowScrollState;
766
-
767
- declare function useClipBorad(): readonly [
768
- string,
769
- (txt: string) => Promise<void>
770
- ];
771
-
772
- type EventType = MouseEvent | TouchEvent;
773
- declare function useClickOutside(target: BasicTarget, handler: (evt: EventType) => void): void;
774
1258
 
775
- declare function useCycleList<T>(list: T[], i?: number): readonly [T, (i?: number) => void, (i?: number) => void];
1259
+ declare const useInfiniteScroll: UseInfiniteScroll;
776
1260
 
777
- declare function useFocus(target: BasicTarget<HTMLElement | SVGElement>, initialValue?: boolean): readonly [boolean, (value: boolean) => void];
1261
+ declare const useIntersectionObserver: (target: RefObject<Element>, callback: IntersectionObserverCallback, options?: IntersectionObserverInit) => () => void;
778
1262
 
779
- interface IProps<T> {
780
- controlled?: T;
781
- defaultValue?: T;
782
- state?: T;
1263
+ /**
1264
+ * @title useInterval
1265
+ */
1266
+ type UseInterval = (
1267
+ /**
1268
+ * @zh 回调
1269
+ * @en callback
1270
+ */
1271
+ callback: () => void,
1272
+ /**
1273
+ * @zh 时间,如果为 `null` 的话则停止计时器
1274
+ * @en Time, if `null` then stop the timer
1275
+ */
1276
+ delay?: number | null,
1277
+ /**
1278
+ * @zh 可选参数
1279
+ * @en optional params
1280
+ */
1281
+ options?: UseIntervalOptions) => void;
1282
+ /**
1283
+ * @title UseIntervalOptions
1284
+ */
1285
+ interface UseIntervalOptions {
1286
+ /**
1287
+ * @zh 是否立即执行。
1288
+ * @en Whether to execute immediately.
1289
+ */
1290
+ immediate?: boolean;
783
1291
  }
784
- declare function useControlled<T = string>(props?: IProps<T>): readonly [T, (newValue: T) => void];
785
1292
 
786
- declare const _default$1: typeof useEffect | typeof react.useLayoutEffect;
1293
+ declare const useInterval: UseInterval;
787
1294
 
788
- declare const _default: typeof react.useEffect | typeof useLayoutEffect;
789
-
790
- declare function useReducedMotion(defaultState?: boolean): boolean;
791
-
792
- interface ScrollIntoViewAnimation {
793
- /** target element alignment relatively to parent based on current axis */
794
- alignment?: "start" | "end" | "center";
795
- }
796
- interface ScrollIntoViewParams {
797
- /** callback fired after scroll */
798
- onScrollFinish?: () => void;
799
- /** duration of scroll in milliseconds */
800
- duration?: number;
801
- /** axis of scroll */
802
- axis?: "x" | "y";
803
- /** custom mathematical easing function */
804
- easing?: (t: number) => number;
805
- /** additional distance between nearest edge and element */
806
- offset?: number;
807
- /** indicator if animation may be interrupted by user scrolling */
808
- cancelable?: boolean;
809
- /** prevents content jumping in scrolling lists with multiple targets */
810
- isList?: boolean;
811
- }
812
- declare function useScrollIntoView(targetElement: BasicTarget<HTMLElement>, { duration, axis, onScrollFinish, easing, offset, cancelable, isList, }?: ScrollIntoViewParams, scrollElement?: BasicTarget<HTMLElement>): {
813
- scrollIntoView: ({ alignment, }?: ScrollIntoViewAnimation) => void;
814
- cancel: () => void;
815
- };
1295
+ declare const useIsomorphicLayoutEffect: typeof useEffect;
816
1296
 
817
- interface UseStickyParams {
818
- /** axis of scroll */
819
- axis?: "x" | "y";
820
- /** cover height or width */
821
- nav: number;
1297
+ /**
1298
+ * @title useKeyModifier
1299
+ * @returns 按键是否被按下
1300
+ * @returns_en Whether the key is pressed
1301
+ */
1302
+ type UseKeyModifier = (
1303
+ /**
1304
+ * @zh 键位
1305
+ * @en key modifier
1306
+ */
1307
+ modifier: KeyModifier,
1308
+ /**
1309
+ * @zh 可选参数
1310
+ * @en optional params
1311
+ */
1312
+ options?: UseModifierOptions) => boolean;
1313
+ type KeyModifier = "Alt" | "AltGraph" | "CapsLock" | "Control" | "Fn" | "FnLock" | "Meta" | "NumLock" | "ScrollLock" | "Shift" | "Symbol" | "SymbolLock";
1314
+ /**
1315
+ * @title UseModifierOptions
1316
+ */
1317
+ interface UseModifierOptions {
1318
+ /**
1319
+ * @en Event names that will prompt update to modifier states
1320
+ * @zh 更新按键状态的事件
1321
+ * @defaultValue ['mousedown', 'mouseup', 'keydown', 'keyup']
1322
+ */
1323
+ events?: (keyof WindowEventMap)[];
1324
+ /**
1325
+ * @en Initial value of the returned ref
1326
+ * @zh 初始值
1327
+ * @defaultValue false
1328
+ */
1329
+ initial?: boolean;
822
1330
  }
823
- declare const useSticky: (targetElement: BasicTarget<HTMLElement>, { axis, nav }: UseStickyParams, scrollElement?: BasicTarget<HTMLElement>) => [boolean, react__default.Dispatch<react__default.SetStateAction<boolean>>];
824
-
825
- declare function useAsyncEffect<T extends void>(effect: () => Promise<T> | T, cleanup?: typeof effect, deps?: DependencyList): void;
826
1331
 
827
- declare const getHMSTime: (timeDiff: number) => [string, string, string];
828
- declare const useCountDown: (time: number, format?: (num: number) => [string, string, string], callback?: () => void) => readonly [string, string, string];
1332
+ declare const useKeyModifier: UseKeyModifier;
829
1333
 
830
- declare function useSupported(callback: () => unknown, sync?: boolean): boolean;
1334
+ /**
1335
+ * @title useLatest
1336
+ * @returns ref 对象
1337
+ * @returns_en ref object
1338
+ */
1339
+ type UseLatest = <T>(
1340
+ /**
1341
+ * @zh 追踪值
1342
+ * @en tracked value
1343
+ */
1344
+ value: T) => MutableRefObject<T>;
831
1345
 
832
- declare function useTextSelection(): Selection | null;
1346
+ declare const useLatest: UseLatest;
833
1347
 
834
- interface EyeDropperOpenOptions {
835
- signal?: AbortSignal;
1348
+ interface Serializer<T> {
1349
+ read(raw: string): T;
1350
+ write(value: T): string;
836
1351
  }
837
- interface EyeDropperOpenReturnType {
838
- sRGBHex: string;
1352
+ interface UseStorageOptions<T> {
1353
+ /**
1354
+ * Custom data serialization
1355
+ */
1356
+ serializer?: Serializer<T>;
1357
+ /**
1358
+ * On error callback
1359
+ *
1360
+ * Default log error to `console.error`
1361
+ */
1362
+ onError?: (error: unknown) => void;
1363
+ /**
1364
+ * set to storage when nodata in effect, fallback to defaults
1365
+ */
1366
+ effectStorageValue?: T | (() => T);
1367
+ }
1368
+
1369
+ declare function useLocalStorage(key: string, defaults: string, options?: UseStorageOptions<string>): readonly [string | null, Dispatch<SetStateAction<string | null>>];
1370
+ declare function useLocalStorage(key: string, defaults: number, options?: UseStorageOptions<number>): readonly [number | null, Dispatch<SetStateAction<number | null>>];
1371
+ declare function useLocalStorage(key: string, defaults: boolean, options?: UseStorageOptions<boolean>): readonly [boolean | null, Dispatch<SetStateAction<boolean | null>>];
1372
+ declare function useLocalStorage<T>(key: string, defaults: T, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
1373
+ declare function useLocalStorage<T = unknown>(key: string, defaults: null, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
1374
+
1375
+ /**
1376
+ * @title useLocationSelector
1377
+ */
1378
+ type UseLocationSelector = <R>(
1379
+ /**
1380
+ * @zh 选择器
1381
+ * @en selector function
1382
+ */
1383
+ selector: (location: Location) => R,
1384
+ /**
1385
+ * @zh 默认值
1386
+ * @en default value
1387
+ */
1388
+ fallback?: R | undefined) => R | undefined;
1389
+
1390
+ declare const useLocationSelector: UseLocationSelector;
1391
+
1392
+ /**
1393
+ * @title useLongPress
1394
+ * @returns 包含以下元素的对象:
1395
+ * - onMouseDown 鼠标按下事件。
1396
+ * - onTouchStart 手指按下事件。
1397
+ * - onMouseUp 鼠标松开事件。
1398
+ * - onMouseLeave 鼠标离开事件
1399
+ * - onTouchEnd 手指松开事件
1400
+ * @returns_en A object with the following elements:
1401
+ * - onMouseDown: Mouse down event.
1402
+ * - onTouchStart: Finger touch start event.
1403
+ * - onMouseUp: Mouse up event.
1404
+ * - onMouseLeave: Mouse leave event.
1405
+ * - onTouchEnd: Finger touch end event.
1406
+ */
1407
+ type UseLongPress = (
1408
+ /**
1409
+ * @zh 回调
1410
+ * @en callback
1411
+ */
1412
+ callback: (e: TouchEvent | MouseEvent) => void,
1413
+ /**
1414
+ * @zh 可选参数
1415
+ * @en optional params
1416
+ */
1417
+ options?: UseLongPressOptions) => {
1418
+ readonly onMouseDown: (e: any) => void;
1419
+ readonly onTouchStart: (e: any) => void;
1420
+ readonly onMouseUp: () => void;
1421
+ readonly onMouseLeave: () => void;
1422
+ readonly onTouchEnd: () => void;
1423
+ };
1424
+ /**
1425
+ * @title UseLongPressOptions
1426
+ */
1427
+ interface UseLongPressOptions {
1428
+ /**
1429
+ * @zh 阻止默认事件
1430
+ * @en whether prevent default event
1431
+ * @defaultValue true
1432
+ */
1433
+ isPreventDefault?: boolean;
1434
+ /**
1435
+ * @zh 延迟
1436
+ * @en delay time
1437
+ * @defaultValue 300
1438
+ */
1439
+ delay?: number;
1440
+ }
1441
+
1442
+ declare const useLongPress: UseLongPress;
1443
+
1444
+ /**
1445
+ * @title useMeasure
1446
+ * @returns [DOMRect值,停止监听函数]
1447
+ * @returns_en [DOMRect, stop listening function]
1448
+ */
1449
+ type UseMeasure = (
1450
+ /**
1451
+ * @zh dom对象
1452
+ * @en dom element
1453
+ */
1454
+ target: RefObject<Element>,
1455
+ /**
1456
+ * @zh 可选参数
1457
+ * @en optional params
1458
+ */
1459
+ options?: ResizeObserverOptions) => readonly [UseMeasureRect, () => void];
1460
+ /**
1461
+ * @title UseMeasureRect
1462
+ */
1463
+ type UseMeasureRect = Omit<DOMRectReadOnly, "toJSON">;
1464
+
1465
+ declare const useMeasure: UseMeasure;
1466
+
1467
+ /**
1468
+ * @title useMediaDevices
1469
+ * @returns 包含以下元素的元组:
1470
+ * - 媒体设备信息。
1471
+ * - 请求媒体设备权限。
1472
+ * @returns_en A tuple with the following elements:
1473
+ * - The media devices info.
1474
+ * - A function to request media devices permission.
1475
+ */
1476
+ type UseMediaDevices = (
1477
+ /**
1478
+ * @zh 可选参数
1479
+ * @en optional params
1480
+ */
1481
+ options?: UseMediaDeviceOptions) => readonly [
1482
+ {
1483
+ devices: {
1484
+ deviceId: string;
1485
+ groupId: string;
1486
+ kind: MediaDeviceKind;
1487
+ label: string;
1488
+ }[];
1489
+ },
1490
+ () => Promise<boolean>
1491
+ ];
1492
+ /**
1493
+ * @title UseMediaDeviceOptions
1494
+ */
1495
+ interface UseMediaDeviceOptions {
1496
+ /**
1497
+ * @en Request for permissions immediately if it's not granted,
1498
+ * otherwise label and deviceIds could be empty
1499
+ * @zh 自动请求权限
1500
+ * @defaultValue false
1501
+ */
1502
+ requestPermissions?: boolean;
1503
+ /**
1504
+ * @en Request for types of media permissions
1505
+ * @zh 请求媒体权限类型
1506
+ * @defaultValue { audio: true, video: true }
1507
+ */
1508
+ constraints?: MediaStreamConstraints;
1509
+ }
1510
+
1511
+ declare const useMediaDevices: UseMediaDevices;
1512
+
1513
+ /**
1514
+ * @title useMediaQuery
1515
+ * @returns 是否符合媒体查询
1516
+ * @returns_en whether comply with media inquiries
1517
+ */
1518
+ type UseMediaQuery = (
1519
+ /**
1520
+ * @zh 媒体查询字符串
1521
+ * @en media query string
1522
+ */
1523
+ query: string,
1524
+ /**
1525
+ * @zh 默认值
1526
+ * @en default value
1527
+ */
1528
+ defaultState?: boolean) => boolean;
1529
+
1530
+ declare const useMediaQuery: UseMediaQuery;
1531
+
1532
+ /**
1533
+ * @title useMount
1534
+ */
1535
+ type UseMount = (
1536
+ /**
1537
+ * @zh 副作用函数
1538
+ * @en effect function
1539
+ */
1540
+ effect: () => void) => void;
1541
+
1542
+ declare const useMount: UseMount;
1543
+
1544
+ declare const useMountedState: () => () => boolean;
1545
+
1546
+ /**
1547
+ * @title useMouse
1548
+ * @returns 鼠标位置
1549
+ * @returns_en Mouse Position
1550
+ */
1551
+ type UseMouse = (
1552
+ /**
1553
+ * @zh dom元素
1554
+ * @en dom element
1555
+ */
1556
+ target?: BasicTarget) => UseMouseCursorState;
1557
+ /**
1558
+ * @title UseMouseCursorState
1559
+ */
1560
+ interface UseMouseCursorState {
1561
+ screenX: number;
1562
+ screenY: number;
1563
+ clientX: number;
1564
+ clientY: number;
1565
+ pageX: number;
1566
+ pageY: number;
1567
+ elementX: number;
1568
+ elementY: number;
1569
+ elementH: number;
1570
+ elementW: number;
1571
+ elementPosX: number;
1572
+ elementPosY: number;
1573
+ }
1574
+
1575
+ declare const useMouse: UseMouse;
1576
+
1577
+ /**
1578
+ * @title useMousePressed
1579
+ * @returns 包含以下元素的元组:
1580
+ * - 鼠标是否按下。
1581
+ * - 按下的事件来源。
1582
+ * @returns_en A tuple with the following elements:
1583
+ * - whether the mouse is pressed.
1584
+ * - the pressed source type
1585
+ */
1586
+ type UseMousePressed = (
1587
+ /**
1588
+ * @zh dom对象
1589
+ * @en dom element
1590
+ */
1591
+ target?: RefObject<Element>,
1592
+ /**
1593
+ * @zh 可选参数
1594
+ * @en optional params
1595
+ */
1596
+ options?: UseMousePressedOptions) => readonly [boolean, UseMousePressedSourceType];
1597
+ /**
1598
+ * @title UseMousePressedOptions
1599
+ */
1600
+ interface UseMousePressedOptions {
1601
+ /**
1602
+ * @en Listen to `touchstart` `touchend` events
1603
+ * @zh 监听 `touchstart` 事件
1604
+ * @defaultValue true
1605
+ */
1606
+ touch?: boolean;
1607
+ /**
1608
+ * @en Listen to `dragstart` `drop` and `dragend` events
1609
+ * @zh 监听 `dragStart` 事件
1610
+ * @defaultValue true
1611
+ */
1612
+ drag?: boolean;
1613
+ /**
1614
+ * @en Initial values
1615
+ * @zh 初始值
1616
+ * @defaultValue false
1617
+ */
1618
+ initialValue?: boolean | (() => boolean);
1619
+ }
1620
+ /**
1621
+ * @title UseMousePressedSourceType
1622
+ */
1623
+ type UseMousePressedSourceType = "mouse" | "touch" | null;
1624
+
1625
+ declare const useMousePressed: (target?: RefObject<Element>, options?: UseMousePressedOptions) => readonly [boolean, UseMousePressedSourceType];
1626
+
1627
+ /**
1628
+ * @title UseMutationObserver
1629
+ * @returns 停止函数
1630
+ * @returns_en stop listenering function
1631
+ */
1632
+ type UseMutationObserver = (
1633
+ /**
1634
+ * @zh 回调
1635
+ * @en callback
1636
+ */
1637
+ callback: MutationCallback,
1638
+ /**
1639
+ * @zh dom元素
1640
+ * @en dom对象
1641
+ */
1642
+ target: BasicTarget,
1643
+ /**
1644
+ * @zh 传递给 `MutationObserver` 的参数
1645
+ * @en options passed to `MutationObserver`
1646
+ */
1647
+ options?: MutationObserverInit) => () => void;
1648
+
1649
+ declare const useMutationObserver: UseMutationObserver;
1650
+
1651
+ /**
1652
+ * @title useNetwork
1653
+ */
1654
+ type UseNetwork = () => IUseNetworkState;
1655
+ /**
1656
+ * @title IUseNetworkState
1657
+ */
1658
+ interface IUseNetworkState {
1659
+ /**
1660
+ * @en Whether browser connected to the network or not.
1661
+ * @zh 浏览器是否连接网络
1662
+ */
1663
+ online: boolean | undefined;
1664
+ /**
1665
+ * @en Previous value of `online` property. Helps to identify if browser
1666
+ * just connected or lost connection.
1667
+ * @zh `online` 属性的先前值。 帮助识别浏览器是否
1668
+ * 刚刚连接或失去连接。
1669
+ */
1670
+ previous: boolean | undefined;
1671
+ /**
1672
+ * @en The {Date} object pointing to the moment when state change occurred.
1673
+ * @zh {Date} 对象指向状态更改发生的时刻。
1674
+ */
1675
+ since: Date | undefined;
1676
+ /**
1677
+ * @en Effective bandwidth estimate in megabits per second, rounded to the
1678
+ * nearest multiple of 25 kilobits per seconds.
1679
+ * @zh 有效带宽估计(以兆位每秒为单位),四舍五入到
1680
+ * 25 kbps 的最接近倍数。
1681
+ */
1682
+ downlink: INetworkInformation["downlink"] | undefined;
1683
+ /**
1684
+ * @en Maximum downlink speed, in megabits per second (Mbps), for the
1685
+ * underlying connection technology
1686
+ * @zh 最大下行链路速度,以兆比特每秒 (Mbps) 为单位
1687
+ */
1688
+ downlinkMax: INetworkInformation["downlinkMax"] | undefined;
1689
+ /**
1690
+ * @en Effective type of the connection meaning one of 'slow-2g', '2g', '3g', or '4g'.
1691
+ * This value is determined using a combination of recently observed round-trip time
1692
+ * and downlink values.
1693
+ * @zh 连接的有效类型,表示“slow-2g”、“2g”、“3g”或“4g”之一。
1694
+ * 该值是根据最近观察到的往返时间和和下行链路值的组合确定的
1695
+ */
1696
+ effectiveType: INetworkInformation["effectiveType"] | undefined;
1697
+ /**
1698
+ * @en Estimated effective round-trip time of the current connection, rounded
1699
+ * to the nearest multiple of 25 milliseconds
1700
+ * @zh 当前连接的估计有效往返时间,四舍五入
1701
+ * 精确到 25 毫秒的最接近倍数
1702
+ */
1703
+ rtt: INetworkInformation["rtt"] | undefined;
1704
+ /**
1705
+ * @en {true} if the user has set a reduced data usage option on the user agent.
1706
+ * @zh 如果用户在用户代理上设置了减少数据使用选项,则为 {true}。
1707
+ */
1708
+ saveData: INetworkInformation["saveData"] | undefined;
1709
+ /**
1710
+ * @en The type of connection a device is using to communicate with the network.
1711
+ * It will be one of the following values:
1712
+ * - bluetooth
1713
+ * - cellular
1714
+ * - ethernet
1715
+ * - none
1716
+ * - wifi
1717
+ * - wimax
1718
+ * - other
1719
+ * - unknown
1720
+ * @zh 设备用于与网络通信的连接类型。
1721
+ * 它将是以下值之一:
1722
+ * - 蓝牙
1723
+ * - 蜂窝网络
1724
+ * - 以太网
1725
+ * - 没有任何
1726
+ * - 无线上网
1727
+ * - 无线麦克斯
1728
+ * - 其他
1729
+ * - 未知
1730
+ */
1731
+ type: INetworkInformation["type"] | undefined;
1732
+ }
1733
+ interface INetworkInformation extends EventTarget {
1734
+ readonly downlink: number;
1735
+ readonly downlinkMax: number;
1736
+ readonly effectiveType: "slow-2g" | "2g" | "3g" | "4g";
1737
+ readonly rtt: number;
1738
+ readonly saveData: boolean;
1739
+ readonly type: "bluetooth" | "cellular" | "ethernet" | "none" | "wifi" | "wimax" | "other" | "unknown";
1740
+ onChange: (event: Event) => void;
1741
+ }
1742
+
1743
+ declare const useNetwork: UseNetwork;
1744
+
1745
+ /**
1746
+ * @title useObjectUrl
1747
+ * @returns 返回一个由 Blob 或 MediaSource 对象生成的 URL(如果存在),否则返回 undefined
1748
+ * @returns_en Returns a URL created from the Blob or MediaSource object, or undefined if none exists
1749
+ */
1750
+ type UseObjectUrl = (
1751
+ /**
1752
+ * @zh 文件或者媒体对象
1753
+ * @en file or media source
1754
+ */
1755
+ object: Blob | MediaSource) => string | undefined;
1756
+
1757
+ declare const useObjectUrl: UseObjectUrl;
1758
+
1759
+ declare const useOnceEffect: typeof useEffect | typeof react.useLayoutEffect;
1760
+
1761
+ declare const useOnceLayoutEffect: typeof react.useEffect | typeof useLayoutEffect;
1762
+
1763
+ /**
1764
+ * @title useOnline
1765
+ * @returns 网络是否在线
1766
+ * @returns_en whether netwotk is online
1767
+ */
1768
+ type UseOnline = () => boolean | undefined;
1769
+
1770
+ declare const useOnline: UseOnline;
1771
+
1772
+ /**
1773
+ * @title useOrientation
1774
+ * @returns 包含以下元素的元组:
1775
+ * - 方向状态。
1776
+ * - 锁定方向。
1777
+ * - 解锁方向。
1778
+ * @returns_en A tuple with the following elements:
1779
+ * - orientation type.
1780
+ * - lock orientation.
1781
+ * - unlock orientation.
1782
+ */
1783
+ type UseOrientation = (
1784
+ /**
1785
+ * @zh 初始值
1786
+ * @en initial value
1787
+ */
1788
+ initialState?: UseOrientationState) => readonly [
1789
+ UseOrientationState,
1790
+ (type: UseOrientationLockType) => any,
1791
+ () => void
1792
+ ];
1793
+ /**
1794
+ * @title UseOrientationState
1795
+ */
1796
+ interface UseOrientationState {
1797
+ /**
1798
+ * @zh 角度
1799
+ * @en document angle
1800
+ */
1801
+ angle: number;
1802
+ /**
1803
+ * @zh 方向类型
1804
+ * @en orientation type
1805
+ */
1806
+ type: UseOrientationType | undefined;
1807
+ }
1808
+ /**
1809
+ * @title UseOrientationType
1810
+ */
1811
+ type UseOrientationType = "portrait-primary" | "portrait-secondary" | "landscape-primary" | "landscape-secondary";
1812
+ /**
1813
+ * @title UseOrientationLockType
1814
+ */
1815
+ type UseOrientationLockType = "any" | "natural" | "landscape" | "portrait" | "portrait-primary" | "portrait-secondary" | "landscape-primary" | "landscape-secondary";
1816
+
1817
+ declare const useOrientation: UseOrientation;
1818
+
1819
+ declare const usePageLeave: () => boolean;
1820
+
1821
+ /**
1822
+ * @title usePermission
1823
+ * @returns 权限状态
1824
+ * @returns_en permission state
1825
+ */
1826
+ type UsePermission = (
1827
+ /**
1828
+ * @zh 权限描述符
1829
+ * @en permission desc
1830
+ */
1831
+ permissionDesc: UsePermissionGeneralPermissionDescriptor | UsePermissionGeneralPermissionDescriptor["name"]) => UsePermissionState;
1832
+ /**
1833
+ * @title UsePermissionState
1834
+ */
1835
+ type UsePermissionState = PermissionState | "";
1836
+ /**
1837
+ * @title UsePermissionGeneralPermissionDescriptor
1838
+ */
1839
+ type UsePermissionGeneralPermissionDescriptor = PermissionDescriptor | {
1840
+ name: UsePermissionDescriptorNamePolyfill;
1841
+ };
1842
+ /**
1843
+ * @title UsePermissionDescriptorNamePolyfill
1844
+ */
1845
+ type UsePermissionDescriptorNamePolyfill = "accelerometer" | "accessibility-events" | "ambient-light-sensor" | "background-sync" | "camera" | "clipboard-read" | "clipboard-write" | "gyroscope" | "magnetometer" | "microphone" | "notifications" | "payment-handler" | "persistent-storage" | "push" | "speaker";
1846
+
1847
+ declare const usePermission: UsePermission;
1848
+
1849
+ /**
1850
+ * @title usePreferredColorScheme
1851
+ * @returns prefers-color-scheme的媒体查询值
1852
+ * @returns_en value of prefers-color-scheme media query
1853
+ */
1854
+ type UsePreferredColorScheme = (
1855
+ /**
1856
+ * @zh 默认值
1857
+ * @en default value
1858
+ * @defaultValue no-preference
1859
+ */
1860
+ defaultState?: ColorScheme) => ColorScheme;
1861
+ /**
1862
+ * @title ColorScheme
1863
+ */
1864
+ type ColorScheme = "dark" | "light" | "no-preference";
1865
+
1866
+ declare const usePreferredColorScheme: UsePreferredColorScheme;
1867
+
1868
+ /**
1869
+ * @title usePreferredContrast
1870
+ */
1871
+ type UsePreferredContrast = (
1872
+ /**
1873
+ * @zh 默认值
1874
+ * @en default value
1875
+ * @defaultValue no-preference
1876
+ */
1877
+ defaultState?: Contrast) => Contrast;
1878
+ /**
1879
+ * @title Contrast
1880
+ */
1881
+ type Contrast = "more" | "less" | "custom" | "no-preference";
1882
+
1883
+ declare const usePreferredContrast: UsePreferredContrast;
1884
+
1885
+ declare const usePreferredDark: (defaultState?: boolean) => boolean;
1886
+
1887
+ declare const usePrevious: <T>(state: T) => T | undefined;
1888
+
1889
+ /**
1890
+ * @title useRafFn
1891
+ * @returns 包含以下元素的元组:
1892
+ * - 停止函数。
1893
+ * - 开始函数。
1894
+ * - 函数是否在执行中。
1895
+ * @returns_en A tuple with the following elements:
1896
+ * - stop function
1897
+ * - start function
1898
+ * whether function is running
1899
+ */
1900
+ type UseRafFn = (
1901
+ /**
1902
+ * @zh 回调
1903
+ * @en callback
1904
+ */
1905
+ callback: FrameRequestCallback,
1906
+ /**
1907
+ * @zh 立即执行
1908
+ * @en immediatly start
1909
+ */
1910
+ initiallyActive?: boolean) => readonly [() => void, () => void, () => boolean];
1911
+
1912
+ declare const useRafFn: UseRafFn;
1913
+
1914
+ declare const useRafState: <S>(initialState: S | (() => S)) => readonly [S, Dispatch<SetStateAction<S>>];
1915
+
1916
+ declare const useReducedMotion: (defaultState?: boolean) => boolean;
1917
+
1918
+ declare const useResizeObserver: (target: RefObject<Element>, callback: ResizeObserverCallback, options?: ResizeObserverOptions) => () => void;
1919
+
1920
+ declare const useScreenSafeArea: () => readonly [string, string, string, string, lodash.DebouncedFunc<() => void>];
1921
+
1922
+ /**
1923
+ * @title useScriptTag
1924
+ * @returns 包含以下元素的元组:
1925
+ * - 用来加载资源的 html 元素。
1926
+ * - 资源加载状态。
1927
+ * - 资源加载函数。
1928
+ * - 资源卸载函数
1929
+ * @returns_en A tuple with the following elements:
1930
+ * - html element used to load resources.
1931
+ * - Resource loading status.
1932
+ * - Resource loading function.
1933
+ * - Resource unloading function
1934
+ */
1935
+ type UseScriptTag = (
1936
+ /**
1937
+ * @zh 资源地址
1938
+ * @en source
1939
+ */
1940
+ src: string,
1941
+ /**
1942
+ * @zh 资源加载完成的回调
1943
+ * @en source loaded callback
1944
+ */
1945
+ onLoaded?: (el: HTMLScriptElement) => void,
1946
+ /**
1947
+ * @zh 可选参数
1948
+ * @en optional params
1949
+ */
1950
+ options?: UseScriptTagOptions) => readonly [
1951
+ HTMLScriptElement | null,
1952
+ UseScriptTagStatus,
1953
+ (waitForScriptLoad?: boolean) => Promise<HTMLScriptElement | boolean>,
1954
+ () => void
1955
+ ];
1956
+ /**
1957
+ * @title UseScriptTagOptions
1958
+ */
1959
+ interface UseScriptTagOptions {
1960
+ /**
1961
+ * @en Load the script immediately
1962
+ * @zh 立即加载资源
1963
+ * @defaultValue true
1964
+ */
1965
+ immediate?: boolean;
1966
+ /**
1967
+ * @en Add `async` attribute to the script tag
1968
+ * @zh 在 `script` 标签上加上 `async`
1969
+ * @defaultValue true
1970
+ */
1971
+ async?: boolean;
1972
+ /**
1973
+ * @en Script type
1974
+ * @zh 脚本类型
1975
+ * @defaultValue 'text/javascript'
1976
+ */
1977
+ type?: string;
1978
+ /**
1979
+ * @en Manual controls the timing of loading and unloading
1980
+ * @zh 手动控制加载和卸载时机
1981
+ * @defaultValue false
1982
+ */
1983
+ manual?: boolean;
1984
+ /**
1985
+ * @zh 跨域属性
1986
+ * @en cross origin
1987
+ */
1988
+ crossOrigin?: "anonymous" | "use-credentials";
1989
+ /**
1990
+ * @en referrer policy
1991
+ * @zh 来源属性
1992
+ */
1993
+ referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
1994
+ /**
1995
+ * @en Add `noModule` attribute to the script tag
1996
+ * @zh 在 `script` 标签上加上 `noModule`
1997
+ */
1998
+ noModule?: boolean;
1999
+ /**
2000
+ * @en Add `defer` attribute to the script tag
2001
+ * @zh 在 `script` 标签上加上 `defer`
2002
+ */
2003
+ defer?: boolean;
2004
+ /**
2005
+ * @en Add custom attribute to the script tag
2006
+ * @zh 在 script 标签上添加自定义属性
2007
+ */
2008
+ attrs?: Record<string, string>;
2009
+ }
2010
+ /**
2011
+ * @title UseScriptTagStatus
2012
+ */
2013
+ type UseScriptTagStatus = "idle" | "loading" | "ready" | "error";
2014
+
2015
+ declare const useScriptTag: UseScriptTag;
2016
+
2017
+ declare const useScroll: UseScroll;
2018
+
2019
+ /**
2020
+ * @title useScrollIntoView
2021
+ * @returns 包含以下元素的对象:
2022
+ * - scrollIntoView:滚动进入视口函数。
2023
+ * - cancel: 取消滚动函数。
2024
+ * @returns_en A object with the following elements:
2025
+ * - scrollIntoView: scroll target element into viewport
2026
+ * - cancel: cancel scroll function
2027
+ */
2028
+ type UseScrollIntoView = (
2029
+ /**
2030
+ * @zh dom对象
2031
+ * @en dom element
2032
+ */
2033
+ targetElement: BasicTarget<HTMLElement>,
2034
+ /**
2035
+ * @zh 可选参数
2036
+ * @en optional params
2037
+ */ params?: UseScrollIntoViewParams,
2038
+ /**
2039
+ * @zh 滚动容器
2040
+ * @en scroll container
2041
+ */
2042
+ scrollElement?: BasicTarget<HTMLElement>) => {
2043
+ scrollIntoView: (animation?: UseScrollIntoViewAnimation) => void;
2044
+ cancel: () => void;
2045
+ };
2046
+ /**
2047
+ * @title UseScrollIntoViewAnimation
2048
+ */
2049
+ interface UseScrollIntoViewAnimation {
2050
+ /**
2051
+ * @en target element alignment relatively to parent based on current axis
2052
+ * @zh 基于当前轴的目标元素相对于父元素的对齐方式
2053
+ */
2054
+ alignment?: "start" | "end" | "center";
2055
+ }
2056
+ /**
2057
+ * @title UseScrollIntoViewParams
2058
+ */
2059
+ interface UseScrollIntoViewParams {
2060
+ /**
2061
+ * @en callback fired after scroll
2062
+ * @zh 滚动完成回调
2063
+ */
2064
+ onScrollFinish?: () => void;
2065
+ /**
2066
+ * @en duration of scroll in milliseconds
2067
+ * @zh 滚动时间
2068
+ * @defaultValue 1250
2069
+ */
2070
+ duration?: number;
2071
+ /**
2072
+ * @en axis of scroll
2073
+ * @zh 滚动方向
2074
+ * @defaultValue y
2075
+ */
2076
+ axis?: "x" | "y";
2077
+ /**
2078
+ * @en custom mathematical easing function
2079
+ * @zh 自定义缓和数学函数
2080
+ * @defaultValue (t: number) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t
2081
+ */
2082
+ easing?: (t: number) => number;
2083
+ /**
2084
+ * @en additional distance between nearest edge and element
2085
+ * @zh 最近的边缘和元素之间的附加距离
2086
+ * @defaultValue 0
2087
+ */
2088
+ offset?: number;
2089
+ /**
2090
+ * @en indicator if animation may be interrupted by user scrolling
2091
+ * @zh 指示动画是否可能因用户滚动而中断
2092
+ * @defaultValue true
2093
+ */
2094
+ cancelable?: boolean;
2095
+ /**
2096
+ * @en prevents content jumping in scrolling lists with multiple targets
2097
+ * @zh 防止内容在具有多个目标的滚动列表中跳跃
2098
+ */
2099
+ isList?: boolean;
2100
+ }
2101
+
2102
+ declare const useScrollIntoView: UseScrollIntoView;
2103
+
2104
+ /**
2105
+ * @title useScrollLock
2106
+ * @returns 包含以下元素的元组:
2107
+ * - 是否锁定。
2108
+ * - 更新锁定值的函数。
2109
+ * @returns_en A tuple with the following elements:
2110
+ * - whether scroll is locked.
2111
+ * - A function to update the value of lock state.
2112
+ */
2113
+ type UseScrollLock = (
2114
+ /**
2115
+ * @zh dom元素
2116
+ * @en dom element
2117
+ */
2118
+ target: BasicTarget<HTMLElement>,
2119
+ /**
2120
+ * @zh 默认值
2121
+ * @en default value
2122
+ * @defaultValue false
2123
+ */
2124
+ initialState?: boolean) => readonly [boolean, (flag: boolean) => void];
2125
+
2126
+ declare const useScrollLock: UseScrollLock;
2127
+
2128
+ declare function useSessionStorage(key: string, defaults: string, options?: UseStorageOptions<string>): readonly [string | null, Dispatch<SetStateAction<string | null>>];
2129
+ declare function useSessionStorage(key: string, defaults: number, options?: UseStorageOptions<number>): readonly [number | null, Dispatch<SetStateAction<number | null>>];
2130
+ declare function useSessionStorage(key: string, defaults: boolean, options?: UseStorageOptions<boolean>): readonly [boolean | null, Dispatch<SetStateAction<boolean | null>>];
2131
+ declare function useSessionStorage<T>(key: string, defaults: T, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
2132
+ declare function useSessionStorage<T = unknown>(key: string, defaults: null, options?: UseStorageOptions<T>): readonly [T | null, Dispatch<SetStateAction<T | null>>];
2133
+
2134
+ /**
2135
+ * @title useSetState
2136
+ * @returns 包含以下元素的元组:
2137
+ * - state 的当前值。
2138
+ * - 更新 state 值的函数。
2139
+ * @returns_en A tuple with the following elements:
2140
+ * - The current value of the state.
2141
+ * - A function to update the value of the state.
2142
+ */
2143
+ type UseSetState = <T extends Record<string, any>>(
2144
+ /**
2145
+ * @zh 初始值
2146
+ * @en initial value
2147
+ */
2148
+ initialState: T) => readonly [
2149
+ T,
2150
+ (statePartial: Partial<T> | ((currentState: T) => Partial<T>)) => void
2151
+ ];
2152
+
2153
+ declare const useSetState: UseSetState;
2154
+
2155
+ /**
2156
+ * @title useSticky
2157
+ * @returns 包含以下元素的元组:
2158
+ * - 当前是否粘滞。
2159
+ * - 更新粘滞值的函数。
2160
+ * @returns_en A tuple with the following elements:
2161
+ * - The current state of sticky.
2162
+ * - A function to update the value of sticky.
2163
+ */
2164
+ type UseSticky = (
2165
+ /**
2166
+ * @zh dom元素
2167
+ * @en dom element
2168
+ */
2169
+ targetElement: BasicTarget<HTMLElement>,
2170
+ /**
2171
+ * @zh 可选参数
2172
+ * @en optional params
2173
+ */
2174
+ params: UseStickyParams,
2175
+ /**
2176
+ * @zh 滚动容器
2177
+ * @en scroll container
2178
+ */
2179
+ scrollElement?: BasicTarget<HTMLElement>) => [boolean, React.Dispatch<React.SetStateAction<boolean>>];
2180
+ /**
2181
+ * @title UseStickyParams
2182
+ */
2183
+ interface UseStickyParams {
2184
+ /**
2185
+ * @en axis of scroll
2186
+ * @zh 滚动方向
2187
+ * @defaultValue y
2188
+ */
2189
+ axis?: "x" | "y";
2190
+ /**
2191
+ * @en cover height or width
2192
+ * @zh 沉浸式高度/宽度
2193
+ * @defaultValue 0
2194
+ */
2195
+ nav: number;
2196
+ }
2197
+
2198
+ declare const useSticky: (targetElement: BasicTarget<HTMLElement>, { axis, nav }: UseStickyParams, scrollElement?: BasicTarget<HTMLElement>) => [boolean, react__default.Dispatch<react__default.SetStateAction<boolean>>];
2199
+
2200
+ declare const useSupported: (callback: () => unknown, sync?: boolean) => boolean;
2201
+
2202
+ /**
2203
+ * @title useTextDirection
2204
+ * @returns 包含以下元素的元组:
2205
+ * - 文字方向。
2206
+ * - 更新文字方向值的函数。
2207
+ * @returns_en A tuple with the following elements:
2208
+ * - The current value of the text direction.
2209
+ * - A function to update the value of the text direction.
2210
+ */
2211
+ type UseTextDirection = (
2212
+ /**
2213
+ * @zh 可选参数
2214
+ * @en optional params
2215
+ */
2216
+ options?: UseTextDirectionOptions) => readonly [UseTextDirectionValue, (value: UseTextDirectionValue) => void];
2217
+ /**
2218
+ * @title UseTextDirectionOptions
2219
+ */
2220
+ interface UseTextDirectionOptions {
2221
+ /**
2222
+ * @en CSS Selector for the target element applying to
2223
+ * @zh 适用于目标元素的 CSS 选择器
2224
+ * @defaultValue 'html'
2225
+ */
2226
+ selector?: string;
2227
+ /**
2228
+ * @en Initial value
2229
+ * @zh 初始值
2230
+ * @defaultValue 'ltr'
2231
+ */
2232
+ initialValue?: UseTextDirectionValue;
2233
+ }
2234
+ /**
2235
+ * @title UseTextDirectionValue
2236
+ */
2237
+ type UseTextDirectionValue = "ltr" | "rtl" | "auto";
2238
+
2239
+ declare const useTextDirection: UseTextDirection;
2240
+
2241
+ /**
2242
+ * @title useTextSelection
2243
+ * @returns 选择的文本对象
2244
+ * @returns_en selected text object
2245
+ */
2246
+ type UseTextSelection = () => Selection | null;
2247
+
2248
+ declare const useTextSelection: UseTextSelection;
2249
+
2250
+ /**
2251
+ * @title useThrottle
2252
+ */
2253
+ type UseThrottle = <T>(
2254
+ /**
2255
+ * @zh 要节流的值
2256
+ * @en the value need to throttle
2257
+ */
2258
+ value: T,
2259
+ /**
2260
+ * @zh 间隔时间
2261
+ * @en wait time
2262
+ */
2263
+ wait?: number,
2264
+ /**
2265
+ * @zh 传递给 `lodash.throttle` 的选项
2266
+ * @en options passed to `lodash.throttle`
2267
+ */
2268
+ options?: ThrottleSettings) => T;
2269
+
2270
+ declare const useThrottle: UseThrottle;
2271
+
2272
+ declare const useThrottleFn: <T extends (...args: any) => any>(fn: T, wait?: number, options?: ThrottleSettings) => {
2273
+ run: lodash.DebouncedFunc<(...args_0: Parameters<T>) => ReturnType<T>>;
2274
+ cancel: () => void;
2275
+ flush: () => ReturnType<T> | undefined;
2276
+ };
2277
+
2278
+ /**
2279
+ * @title useTimeout
2280
+ * @returns 包含以下元素的元组:
2281
+ * - 是否等待定时器执行。
2282
+ * - 设置定时器。
2283
+ * - 取消定时器。
2284
+ * @returns_en A tuple with the following elements:
2285
+ * - Whether to wait for the timer to execute.
2286
+ * - Set timer.
2287
+ * - Cancel timer.
2288
+ */
2289
+ type UseTimeout = (
2290
+ /**
2291
+ * @zh 间隔时间
2292
+ * @en wait time
2293
+ */
2294
+ ms?: number
2295
+ /**
2296
+ * @zh 可选参数
2297
+ * @en optional param
2298
+ */ , options?: UseTimeoutOptions) => Stoppable;
2299
+ /**
2300
+ * @title UseTimeoutOptions
2301
+ */
2302
+ interface UseTimeoutOptions {
2303
+ /**
2304
+ * @en Start the timer immediate after calling this function
2305
+ * @zh 立即设置定时器
2306
+ * @defaultValue false
2307
+ */
2308
+ immediate?: boolean;
839
2309
  }
840
- declare function useEyeDropper(): readonly [boolean, (options?: EyeDropperOpenOptions) => Promise<EyeDropperOpenReturnType>];
841
- type UseEyeDropperReturn = ReturnType<typeof useEyeDropper>;
842
2310
 
843
- type UseCookieState = string | undefined;
844
- declare function useCookie(key: string, options?: Cookies.CookieAttributes, defaultValue?: string): readonly [UseCookieState, (newValue: UseCookieState | ((prevState: UseCookieState) => UseCookieState)) => void, () => void];
2311
+ declare const useTimeout: UseTimeout;
2312
+
2313
+ /**
2314
+ * @title useTimeoutFn
2315
+ * @returns 包含以下元素的元组:
2316
+ * - 是否等待定时器执行。
2317
+ * - 设置定时器。
2318
+ * - 取消定时器。
2319
+ * @returns_en A tuple with the following elements:
2320
+ * - Whether to wait for the timer to execute.
2321
+ * - Set timer.
2322
+ * - Cancel timer.
2323
+ */
2324
+ type UseTimeoutFn = (
2325
+ /**
2326
+ * @zh 回调
2327
+ * @en callback
2328
+ */
2329
+ cb: (...args: unknown[]) => any,
2330
+ /**
2331
+ * @zh 间隔时间
2332
+ * @en wait time
2333
+ */
2334
+ interval: number,
2335
+ /**
2336
+ * @zh 可选参数
2337
+ * @en optional param
2338
+ */
2339
+ options?: UseTimeoutFnOptions) => Stoppable;
2340
+ /**
2341
+ * @title UseTimeoutFnOptions
2342
+ */
2343
+ interface UseTimeoutFnOptions {
2344
+ /**
2345
+ * @en Start the timer immediate after calling this function
2346
+ * @zh 立即设置定时器
2347
+ * @defaultValue false
2348
+ */
2349
+ immediate?: boolean;
2350
+ }
2351
+
2352
+ /**
2353
+ * Wrapper for `setTimeout` with controls.
2354
+ *
2355
+ * @param cb
2356
+ * @param interval
2357
+ * @param options
2358
+ */
2359
+ declare const useTimeoutFn: UseTimeoutFn;
2360
+
2361
+ /**
2362
+ * @title useTitle
2363
+ */
2364
+ type UseTitle = (
2365
+ /**
2366
+ * @zh 标题
2367
+ * @en title
2368
+ */
2369
+ title: string) => void;
845
2370
 
846
- declare function useDoubleClick({ target, latency, onSingleClick, onDoubleClick, }: {
847
- target: BasicTarget;
848
- latency?: number;
849
- onSingleClick?: (e?: MouseEvent | TouchEvent) => void;
850
- onDoubleClick?: (e?: MouseEvent | TouchEvent) => void;
851
- }): void;
2371
+ declare const useTitle: UseTitle;
852
2372
 
853
- declare function useSetState<T extends Record<string, any>>(initialState: T): readonly [T, (statePartial: Partial<T> | ((currentState: T) => Partial<T>)) => void];
2373
+ /**
2374
+ * @title useToggle
2375
+ * @returns 包含以下元素的元组:
2376
+ * - 布尔状态的当前值。
2377
+ * - 切换布尔状态值的函数。
2378
+ * @returns_en A tuple with the following elements:
2379
+ * - The current value of the bool state.
2380
+ * - A function to update the value of the bool state.
2381
+ */
2382
+ type UseToggle = (
2383
+ /**
2384
+ * @zh 初始值
2385
+ * @en initialValue
2386
+ */
2387
+ initialValue: boolean) => [boolean, (nextValue?: any) => void];
854
2388
 
855
- type UseMeasureRect = Omit<DOMRectReadOnly, "toJSON">;
856
- declare function useMeasure(target: BasicTarget, options?: ResizeObserverOptions): readonly [UseMeasureRect, () => void];
2389
+ declare const useToggle: UseToggle;
857
2390
 
858
- declare function useHover<T extends HTMLElement = HTMLDivElement>(target: BasicTarget<T>): boolean;
2391
+ declare const useUnmount: (fn: () => void) => void;
859
2392
 
860
- declare function useScreenSafeArea(): readonly [string, string, string, string, lodash.DebouncedFunc<() => void>];
2393
+ declare const useUpdate: () => () => void;
861
2394
 
862
- interface UseCssVarOptions {
2395
+ declare const useUpdateEffect: typeof useEffect | typeof react.useLayoutEffect;
2396
+
2397
+ declare const useUpdateLayoutEffect: typeof react.useEffect | typeof useLayoutEffect;
2398
+
2399
+ /**
2400
+ * @title useWebNotification
2401
+ */
2402
+ type UseWebNotification = (
2403
+ /**
2404
+ * @zh 自动请求权限
2405
+ * @en auto request permission
2406
+ */
2407
+ requestPermissions?: boolean) => UseWebNotificationReturn;
2408
+ /**
2409
+ * @title UseWebNotificationReturn
2410
+ */
2411
+ interface UseWebNotificationReturn {
863
2412
  /**
864
- * Use MutationObserver to monitor variable changes
865
- * @default false
2413
+ * @zh 浏览器是否支持
2414
+ * @en whether browser support
866
2415
  */
867
- observe?: boolean;
868
- }
869
- declare function useCssVar<T extends HTMLElement = HTMLElement>(prop: string, target: BasicTarget<T>, defaultValue?: string, options?: UseCssVarOptions): readonly [string, (v: string) => void];
870
-
871
- declare function useWebNotification(requestPermissions?: boolean): {
872
2416
  readonly isSupported: boolean;
873
- readonly show: (title: string, options?: NotificationOptions) => Notification | undefined;
2417
+ /**
2418
+ * @zh 展示函数
2419
+ * @en show function
2420
+ */
2421
+ readonly show: UseWebNotificationShow;
2422
+ /**
2423
+ * @zh 关闭函数
2424
+ * @en close function
2425
+ */
874
2426
  readonly close: () => void;
2427
+ /**
2428
+ * @zh 请求权限函数
2429
+ * @en request permissions function
2430
+ */
875
2431
  readonly ensurePermissions: () => Promise<boolean | undefined>;
876
- readonly permissionGranted: react.MutableRefObject<boolean>;
2432
+ /**
2433
+ * @zh 权限状态
2434
+ * @en permission status
2435
+ */
2436
+ readonly permissionGranted: React.MutableRefObject<boolean>;
2437
+ }
2438
+ /**
2439
+ * @title UseWebNotificationShow
2440
+ */
2441
+ type UseWebNotificationShow = (
2442
+ /**
2443
+ * @zh 通知标题
2444
+ * @en notification title
2445
+ */
2446
+ title: string,
2447
+ /**
2448
+ * @zh 通知选项
2449
+ * @en options passed to `NotificationOptions`
2450
+ */
2451
+ options?: NotificationOptions) => Notification | undefined;
2452
+
2453
+ declare const useWebNotification: UseWebNotification;
2454
+
2455
+ declare const useWindowsFocus: (defauleValue?: boolean) => boolean;
2456
+
2457
+ /**
2458
+ * @title useWindowScroll
2459
+ * @returns {UseWindowScrollState}
2460
+ */
2461
+ type UseWindowScroll = () => UseWindowScrollState;
2462
+ /**
2463
+ * @title useWindowScrollState
2464
+ */
2465
+ interface UseWindowScrollState {
2466
+ /**
2467
+ * @zh 水平滚动的像素值
2468
+ * @en pixel value of horizontal scrolling
2469
+ */
2470
+ x: number;
2471
+ /**
2472
+ * @zh 垂直滚动的像素值
2473
+ * @en pixel value of vertical scrolling
2474
+ */
2475
+ y: number;
2476
+ }
2477
+
2478
+ declare const useWindowScroll: () => UseWindowScrollState;
2479
+
2480
+ /**
2481
+ * @title useWindowSize
2482
+ * @returns_en A object with the following elements:
2483
+ * - width: The current window width.
2484
+ * - height: The current window height.
2485
+ * @returns 包含以下元素的对象:
2486
+ * - width:当前视窗宽度。
2487
+ * - height: 当前视窗高度。
2488
+ */
2489
+ type UseWindowSize = () => {
2490
+ readonly width: number;
2491
+ readonly height: number;
2492
+ };
2493
+
2494
+ declare const useWindowSize: UseWindowSize;
2495
+
2496
+ /**
2497
+ * @title useClipBoard
2498
+ * @returns_en Returns a readonly tuple.
2499
+ * @returns 返回只读元组.
2500
+ */
2501
+ type UseClipboard = () => readonly [string, (txt: string) => Promise<void>];
2502
+
2503
+ declare const useClipboard: UseClipboard;
2504
+
2505
+ /**
2506
+ * @title useDocumentVisiblity
2507
+ * @returns_en document visibility
2508
+ * @returns 文档可见性
2509
+ */
2510
+ type UseDocumentVisibility = (
2511
+ /**
2512
+ * @zh 默认值
2513
+ * @en default value
2514
+ */
2515
+ defaultValue?: DocumentVisibilityState) => DocumentVisibilityState;
2516
+
2517
+ /**
2518
+ * @title useEventListener
2519
+ */
2520
+ type UseEventListener = (
2521
+ /**
2522
+ * @zh 事件名称
2523
+ * @en event name
2524
+ */
2525
+ eventName: string,
2526
+ /**
2527
+ * @zh 事件处理器
2528
+ * @en event handler
2529
+ */
2530
+ handler: (event: any) => void,
2531
+ /**
2532
+ * @zh dom元素
2533
+ * @en dom element
2534
+ * @defaultValue `window`
2535
+ */
2536
+ element?: HTMLElement | Element | Window | Document | EventTarget | null | undefined,
2537
+ /**
2538
+ * @zh 监听选项
2539
+ * @en listener options
2540
+ */
2541
+ options?: boolean | AddEventListenerOptions | undefined) => void;
2542
+
2543
+ /**
2544
+ * @title useFavicon
2545
+ */
2546
+ type UseFavicon = (
2547
+ /**
2548
+ * @zh 图标路径
2549
+ * @en icon href
2550
+ */
2551
+ href: string,
2552
+ /**
2553
+ * @zh 基础 url
2554
+ * @en base url
2555
+ */
2556
+ baseUrl?: string,
2557
+ /**
2558
+ * @zh 设置 link 标签的 rel 属性
2559
+ * @en set rel attribute to link element
2560
+ * @defaultValue icon
2561
+ */
2562
+ rel?: string) => void;
2563
+
2564
+ /**
2565
+ * @title useHover
2566
+ */
2567
+ type UseHover = <T extends Element = HTMLDivElement>(
2568
+ /**
2569
+ * @zh dom对象
2570
+ * @en dom element
2571
+ */
2572
+ target: RefObject<T>) => boolean;
2573
+
2574
+ /**
2575
+ * @title useIntersectionObserver
2576
+ * @returns 停止监听函数
2577
+ * @returns_en stop listening function
2578
+ */
2579
+ type UseIntersectionObserver = (
2580
+ /**
2581
+ * @zh dom元素
2582
+ * @en dom element
2583
+ */
2584
+ target: RefObject<Element>,
2585
+ /**
2586
+ * @zh 回调
2587
+ * @en callback
2588
+ */
2589
+ callback: IntersectionObserverCallback,
2590
+ /**
2591
+ * @zh 传递给 `IntersectionObserver` 的参数
2592
+ * @en options passed to `IntersectionObserver`
2593
+ */
2594
+ options?: IntersectionObserverInit) => () => void;
2595
+
2596
+ /**
2597
+ * @title useLocalStorage
2598
+ * @returns 包含以下元素的元组:
2599
+ * - localStorage 的当前值。
2600
+ * - 更新 localStorage 值的函数。
2601
+ * @returns_en A tuple with the following elements:
2602
+ * - The current value of the localStorage.
2603
+ * - A function to update the value of the localStorage.
2604
+ */
2605
+ type UseLocalStorage = <T extends string | number | boolean | object | null>(
2606
+ /**
2607
+ * @zh 键值
2608
+ * @en key
2609
+ */
2610
+ key: string,
2611
+ /**
2612
+ * @zh 默认值
2613
+ * @en default value
2614
+ */
2615
+ defaultValue?: T,
2616
+ /**
2617
+ * @zh 可选参数
2618
+ * @en optional params
2619
+ */
2620
+ options?: UseLocalStorageOptions<T>) => readonly [T | null, Dispatch<SetStateAction<T | null>>];
2621
+ /**
2622
+ * @title UseLocalStorageOptions
2623
+ */
2624
+ interface UseLocalStorageOptions<T> {
2625
+ /**
2626
+ * @en Custom data serialization
2627
+ * @zh 自定义数据序列化
2628
+ */
2629
+ serializer?: UseLocalStorageSerializer<T>;
2630
+ /**
2631
+ * @en On error callback
2632
+ * @zh 错误回调
2633
+ * @defaultValue `console.error`
2634
+ */
2635
+ onError?: (error: unknown) => void;
2636
+ /**
2637
+ * @en set to storage when storage doesn't has data in effect, fallback to `defaultValue`
2638
+ * @zh 当副作用执行的时候没有在 storage 中获取到数据时设置,默认会设置 `defaultValue`
2639
+ */
2640
+ effectStorageValue?: T | (() => T);
2641
+ }
2642
+ /**
2643
+ * @title UseLocalStorageSerializer
2644
+ */
2645
+ interface UseLocalStorageSerializer<T> {
2646
+ /**
2647
+ * @en Custom data read
2648
+ * @zh 自定义数据读取
2649
+ */
2650
+ read: (raw: string) => T;
2651
+ /**
2652
+ * @en Custom data write
2653
+ * @zh 自定义数据写入
2654
+ */
2655
+ write: (value: T) => string;
2656
+ }
2657
+
2658
+ /**
2659
+ * @title useMountedState
2660
+ * @returns 组件的挂载状态
2661
+ * @returns_en component mounted state
2662
+ */
2663
+ type UseMountedState = () => () => boolean;
2664
+
2665
+ /**
2666
+ * @title usePageLeave
2667
+ * @returns 鼠标是否离开页面
2668
+ * @returns_en whether the mouse leave page
2669
+ */
2670
+ type UsePageLeave = () => boolean;
2671
+
2672
+ /**
2673
+ * @title usePreferredDark
2674
+ * @returns 是否偏好黑色
2675
+ * @returns_en whether prefer dark
2676
+ */
2677
+ type UsePreferredDark = (
2678
+ /**
2679
+ * @zh 默认值
2680
+ * @en defaule value
2681
+ */
2682
+ defaultState?: boolean) => boolean;
2683
+
2684
+ /**
2685
+ * @title usePrevious
2686
+ * @returns 更新前的值
2687
+ * @returns_en previous value
2688
+ */
2689
+ type UsePrevious = <T>(
2690
+ /**
2691
+ * @zh 状态值
2692
+ * @en state value
2693
+ */
2694
+ state: T) => T | undefined;
2695
+
2696
+ /**
2697
+ * @title useRafState
2698
+ * @returns 包含以下元素的元组:
2699
+ * - state 的当前值。
2700
+ * - 在 `requestAnimationFrame` 中更新 state 值的函数。
2701
+ * @returns_en A tuple with the following elements:
2702
+ * - the state value
2703
+ * - a function to update state in `requestAnimationFrame`
2704
+ */
2705
+ type UseRafState = <S>(
2706
+ /**
2707
+ * @zh 状态值
2708
+ * @en state value
2709
+ */
2710
+ initialState: S | (() => S)) => readonly [S, Dispatch<SetStateAction<S>>];
2711
+
2712
+ /**
2713
+ * @title useReducedMotion
2714
+ * @returns 是否偏好减少动画
2715
+ * @returns_en whether prefer reduced motion
2716
+ */
2717
+ type UseReducedMotion = (
2718
+ /**
2719
+ * @zh 默认值
2720
+ * @en default value
2721
+ */
2722
+ defaultState?: boolean) => boolean;
2723
+
2724
+ /**
2725
+ * @title useResizeObserver
2726
+ */
2727
+ type UseResizeObserver = (
2728
+ /**
2729
+ * @zh dom元素
2730
+ * @en dom element
2731
+ */
2732
+ target: RefObject<Element>,
2733
+ /**
2734
+ * @zh 回调
2735
+ * @en callback
2736
+ */
2737
+ callback: ResizeObserverCallback,
2738
+ /**
2739
+ * @zh `resizeObserver` 参数
2740
+ * @en options passed to `resizeObserver`
2741
+ */
2742
+ options?: ResizeObserverOptions) => () => void;
2743
+
2744
+ /**
2745
+ * @title useScreenSafeArea
2746
+ * @returns 包含以下元素的元组:
2747
+ * - 顶部安全距离。
2748
+ * - 右边安全距离。
2749
+ * - 底部安全距离。
2750
+ * - 左边安全距离,
2751
+ * - 手动更新函数
2752
+ * @returns_en A tuple with the following elements:
2753
+ * - top safe distance
2754
+ * - right safe distance
2755
+ * - bottom safe distance
2756
+ * - left safe distance
2757
+ * - munual update function
2758
+ */
2759
+ type UseScreenSafeArea = () => readonly [string, string, string, string, DebouncedFunc$1<() => void>];
2760
+
2761
+ /**
2762
+ * @title useSessionStorage
2763
+ * @returns 包含以下元素的元组:
2764
+ * - sessionStorage 的当前值。
2765
+ * - 更新 sessionStorage 值的函数。
2766
+ * @returns_en A tuple with the following elements:
2767
+ * - The current value of the sessionStorage.
2768
+ * - A function to update the value of the sessionStorage.
2769
+ */
2770
+ type UseSessionStorage = <T extends string | number | boolean | object | null>(
2771
+ /**
2772
+ * @zh 键值
2773
+ * @en key
2774
+ */
2775
+ key: string,
2776
+ /**
2777
+ * @zh 默认值
2778
+ * @en default value
2779
+ */
2780
+ defaultValue?: T,
2781
+ /**
2782
+ * @zh 可选参数
2783
+ * @en optional params
2784
+ */
2785
+ options?: UseSessionStorageOptions<T>) => readonly [T | null, Dispatch<SetStateAction<T | null>>];
2786
+ /**
2787
+ * @title UseSessionStorageOptions
2788
+ */
2789
+ interface UseSessionStorageOptions<T> {
2790
+ /**
2791
+ * @en Custom data serialization
2792
+ * @zh 自定义数据序列化
2793
+ */
2794
+ serializer?: UseSessionStorageSerializer<T>;
2795
+ /**
2796
+ * @en On error callback
2797
+ * @zh 错误回调
2798
+ * @defaultValue `console.error`
2799
+ */
2800
+ onError?: (error: unknown) => void;
2801
+ /**
2802
+ * @en set to storage when storage doesn't has data in effect, fallback to `defaultValue`
2803
+ * @zh 当副作用执行的时候没有在 storage 中获取到数据时设置,默认会设置 `defaultValue`
2804
+ */
2805
+ effectStorageValue?: T | (() => T);
2806
+ }
2807
+ /**
2808
+ * @title UseSessionStorageSerializer
2809
+ */
2810
+ interface UseSessionStorageSerializer<T> {
2811
+ /**
2812
+ * @en Custom data read
2813
+ * @zh 自定义数据读取
2814
+ */
2815
+ read: (raw: string) => T;
2816
+ /**
2817
+ * @en Custom data write
2818
+ * @zh 自定义数据写入
2819
+ */
2820
+ write: (value: T) => string;
2821
+ }
2822
+
2823
+ /**
2824
+ * @title useSupported
2825
+ * @returns 浏览器是否支持
2826
+ * @returns_en whether the browser support
2827
+ */
2828
+ type UseSupported = (
2829
+ /**
2830
+ * @zh 测试回调
2831
+ * @en test callback
2832
+ */
2833
+ callback: () => unknown,
2834
+ /**
2835
+ * @zh 使用 useLayoutEffect来进行测试
2836
+ * @en use useLayoutEffect to test
2837
+ * @defaultValue false
2838
+ */
2839
+ sync?: boolean) => boolean;
2840
+
2841
+ /**
2842
+ * @title useThrottleFn
2843
+ * @returns_en A object with the following elements:
2844
+ * - run: exec function.
2845
+ * - cancel: cancel exec function.
2846
+ * - flush: immediately exec function
2847
+ * @returns 具有以下元素的对象:
2848
+ * - run:执行函数。
2849
+ * - cancel:取消执行函数。
2850
+ * - flush: 立即执行函数
2851
+ */
2852
+ type UseThrottleFn = <T extends (...args: any) => any>(
2853
+ /**
2854
+ * @zh 要节流的函数
2855
+ * @en Throttle function
2856
+ */
2857
+ fn: T,
2858
+ /**
2859
+ * @zh 间隔时间
2860
+ * @en wait time
2861
+ */
2862
+ wait?: number,
2863
+ /**
2864
+ * @zh 传递给 `lodash.throttle` 的属性
2865
+ * @en options passed to `lodash.throttle`
2866
+ */
2867
+ options?: ThrottleSettings$1) => {
2868
+ run: DebouncedFunc<(...args_0: Parameters<T>) => ReturnType<T>>;
2869
+ cancel: () => void;
2870
+ flush: any;
877
2871
  };
878
2872
 
879
- declare function useLocationSelector<R>(selector: (location: Location) => R,
880
2873
  /**
881
- * @description server fallback
882
- * @default undefined
2874
+ * @title useUnmount
2875
+ */
2876
+ type UseUnmount = (
2877
+ /**
2878
+ * @zh 清理函数
2879
+ * @en clear function
2880
+ */
2881
+ fn: () => void) => void;
2882
+
2883
+ /**
2884
+ * @title useUpdate
2885
+ * @returns 强制更新函数
2886
+ * @returns_en rerender trigger function
2887
+ */
2888
+ type UseUpdate = () => () => void;
2889
+
2890
+ /**
2891
+ * @title useWindowsFocus
2892
+ * @returns 窗口是否聚焦
2893
+ * @returns_en whether window focus
2894
+ */
2895
+ type UseWindowsFocus = (
2896
+ /**
2897
+ * @zh 默认值
2898
+ * @en defauleValue
883
2899
  */
884
- fallback?: R): R | undefined;
2900
+ defauleValue?: boolean) => boolean;
885
2901
 
886
- export { type ColorScheme, type Contrast, type CursorState, type EyeDropperOpenReturnType, type GeneralPermissionDescriptor, type IDisposable, type IEvent, type IEventOnce, type IListener, type INetworkInformation, type IState, type IUseNetworkState, type KeyModifier, type MousePressedOptions, type MouseSourceType, type OrientationState, type RafLoopReturns, type ScrollIntoViewAnimation, type ScrollIntoViewParams, type Status, type Target, type UseCookieState, type UseCssVarOptions, type UseDarkOptions, type UseDraggableOptions, type UseElementBoundingOptions, type UseEventEmitterReturn, type UseEyeDropperReturn, type UseFileDialogOptions, type UseFpsOptions, type UseFullScreenOptions, type UseInfiniteScrollOptions, type UseLongPressOptions, type UseMeasureRect, type UseMediaDeviceOptions, type UseModifierOptions, type UseScriptTagOptions, type UseScrollOptions, type UseStickyParams, type UseTextDirectionOptions, type UseTextDirectionValue, type UseTimeoutFnOptions, type UseVirtualListItem, type UseVirtualListOptions, type UseVirtualListReturn, type UseWindowScrollState, type WindowSize, getHMSTime, useActiveElement, useAsyncEffect, useClickOutside, useClipBorad as useClipboard, useControlled, useCookie, useCountDown, useCounter, useCssVar, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDoubleClick, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useEyeDropper, useFavicon, useFileDialog, useFirstMountState, useFocus, _default$2 as useFps, useFullscreen, useGeolocation, useHover, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLocationSelector, useLongPress, useMeasure, useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, _default$1 as useOnceEffect, _default as useOnceLayoutEffect, useOnline, useOrientation, usePageLeave, usePermission, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePrevious, useRafFn, useRafState, useReducedMotion, useResizeObserver, useScreenSafeArea, useScriptTag, useScroll, useScrollIntoView, useScrollLock, useSessionStorage, useSetState, useSticky, useSupported, useTextDirection, useTextSelection, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useTitle, useToggle, useUnmount, useUpdate, _default$4 as useUpdateEffect, _default$3 as useUpdateLayoutEffect, useVirtualList, useWebNotification, useWindowScroll, useWindowSize, useWindowsFocus };
2902
+ export { type ColorScheme, type Contrast, type DepsEqualFnType, type EventType, type INetworkInformation, type IUseNetworkState, type KeyModifier, type UseActiveElement, type UseAsyncEffect, type UseClickOutside, type UseClipboard, type UseCookie, type UseCookieState, type UseCountDown, type UseCounter, type UseCssVar, type UseCssVarOptions, type UseCustomCompareEffect, type UseCycleList, type UseDarkMode, type UseDarkOptions, type UseDebounce, type UseDebounceFn, type UseDeepCompareEffect, type UseDocumentVisibility, type UseDoubleClick, type UseDoubleClickProps, type UseDraggable, type UseDraggableOptions, type UseDropZone, type UseElementBounding, type UseElementBoundingOptions, type UseElementBoundingReturn, type UseElementSize, type UseElementVisibility, type UseEvent, type UseEventEmitter, type UseEventEmitterDisposable, type UseEventEmitterEvent, type UseEventEmitterEventOnce, type UseEventEmitterListener, type UseEventEmitterReturn, type UseEventListener, type UseEyeDropper, type UseEyeDropperOpenOptions, type UseEyeDropperOpenReturnType, type UseFavicon, type UseFileDialog, type UseFileDialogOptions, type UseFirstMountState, type UseFocus, type UseFps, type UseFpsOptions, type UseFullScreenOptions, type UseFullscreen, type UseGeolocation, type UseHover, type UseIdle, type UseInfiniteScroll, type UseInfiniteScrollArrivedState, type UseInfiniteScrollDirection, type UseInfiniteScrollLoadMore, type UseInfiniteScrollOptions, type UseIntersectionObserver, type UseInterval, type UseIntervalOptions, type UseKeyModifier, type UseLatest, type UseLocalStorage, type UseLocalStorageOptions, type UseLocalStorageSerializer, type UseLocationSelector, type UseLongPress, type UseLongPressOptions, type UseMeasure, type UseMeasureRect, type UseMediaDeviceOptions, type UseMediaDevices, type UseMediaQuery, type UseModifierOptions, type UseMount, type UseMountedState, type UseMouse, type UseMouseCursorState, type UseMousePressed, type UseMousePressedOptions, type UseMousePressedSourceType, type UseMutationObserver, type UseNetwork, type UseObjectUrl, type UseOnline, type UseOrientation, type UseOrientationLockType, type UseOrientationState, type UseOrientationType, type UsePageLeave, type UsePermission, type UsePermissionDescriptorNamePolyfill, type UsePermissionGeneralPermissionDescriptor, type UsePermissionState, type UsePreferredColorScheme, type UsePreferredContrast, type UsePreferredDark, type UsePrevious, type UseRafFn, type UseRafState, type UseReducedMotion, type UseResizeObserver, type UseScreenSafeArea, type UseScriptTag, type UseScriptTagOptions, type UseScriptTagStatus, type UseScroll, type UseScrollArrivedState, type UseScrollDirection, type UseScrollIntoView, type UseScrollIntoViewAnimation, type UseScrollIntoViewParams, type UseScrollLock, type UseScrollOffset, type UseScrollOptions, type UseSessionStorage, type UseSessionStorageOptions, type UseSessionStorageSerializer, type UseSetState, type UseSticky, type UseStickyParams, type UseSupported, type UseTextDirection, type UseTextDirectionOptions, type UseTextDirectionValue, type UseTextSelection, type UseThrottle, type UseThrottleFn, type UseTimeout, type UseTimeoutFn, type UseTimeoutFnOptions, type UseTimeoutOptions, type UseTitle, type UseToggle, type UseUnmount, type UseUpdate, type UseWebNotification, type UseWebNotificationReturn, type UseWebNotificationShow, type UseWindowScroll, type UseWindowScrollState, type UseWindowSize, type UseWindowsFocus, defaultOptions, useActiveElement, useAsyncEffect, useClickOutside, useClipboard, useCookie, useCountDown, useCounter, useCssVar, useCustomCompareEffect, useCycleList, useDarkMode, useDebounce, useDebounceFn, useDeepCompareEffect, useDocumentVisibility, useDoubleClick, useDraggable, useDropZone, useElementBounding, useElementSize, useElementVisibility, useEvent, useEventEmitter, useEventListener, useEyeDropper, useFavicon, useFileDialog, useFirstMountState, useFocus, useFps, useFullscreen, useGeolocation, useHover, useIdle, useInfiniteScroll, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyModifier, useLatest, useLocalStorage, useLocationSelector, useLongPress, useMeasure, useMediaDevices, useMediaQuery, useMount, useMountedState, useMouse, useMousePressed, useMutationObserver, useNetwork, useObjectUrl, useOnceEffect, useOnceLayoutEffect, useOnline, useOrientation, usePageLeave, usePermission, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePrevious, useRafFn, useRafState, useReducedMotion, useResizeObserver, useScreenSafeArea, useScriptTag, useScroll, useScrollIntoView, useScrollLock, useSessionStorage, useSetState, useSticky, useSupported, useTextDirection, useTextSelection, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useTitle, useToggle, useUnmount, useUpdate, useUpdateEffect, useUpdateLayoutEffect, useWebNotification, useWindowScroll, useWindowSize, useWindowsFocus };