1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| import { useDebounce } from '/@/hooks/core/useDebounce';
| import { addResizeListener, removeResizeListener } from '/@/utils/event';
|
| interface WindowSizeOptions {
| once?: boolean;
| immediate?: boolean;
| }
|
| export function useElResize<T>(
| el: Element | typeof window,
| fn: Fn<T>,
| wait = 100,
| options?: WindowSizeOptions
| ) {
| let handler = () => {
| fn();
| };
| const [handleSize, cancel] = useDebounce(handler, wait, options);
| handler = wait ? handleSize : handler;
|
| function start() {
| addResizeListener(el, handler);
| }
| function stop() {
| removeResizeListener(el, handler);
| cancel();
| }
|
| return [start, stop];
| }
|
|