UNPKG

6.01 kBTypeScriptView Raw
1import {MutableRefObject, EffectCallback, DependencyList, Dispatch, SetStateAction} from 'react';
2
3type ThrottleOrDebounceOpts = {
4 leading: boolean,
5 trailing: boolean,
6}
7
8type TimeoutOrIntervalOpts = {
9 cancelOnUnmount: boolean,
10}
11
12type EventListenerOptions = {
13 capture: boolean,
14 once: boolean,
15 passive: boolean,
16}
17
18type HandlerSetter = (...parameters: Array<any>) => unknown;
19
20type Cancelable = {
21 cancel(): void;
22 flush(): void;
23}
24
25/**
26 * useDebouncedFn
27 */
28export declare const useDebouncedFn: (fn: Function, wait?: number, options?: ThrottleOrDebounceOpts, dependencies?: DependencyList) => Cancelable;
29
30/**
31 * useDidMount
32 */
33export declare const useDidMount: (handler: Function) => HandlerSetter;
34
35/**
36 * useGeolocation
37 */
38export declare const useGeolocation: (options?: PositionOptions) => [GeolocationState, GeolocationCallbackSetters];
39
40/**
41 * useGeolocationEvents
42 */
43type GeolocationCallbackSetters = {
44 isSupported: boolean,
45 onChange: HandlerSetter,
46 onError: HandlerSetter,
47}
48export declare const useGeolocationEvents: (options?: PositionOptions) => GeolocationCallbackSetters;
49
50/**
51 * useGeolocationState
52 */
53type GeolocationState = {
54 isSupported: boolean,
55 isRetrieving: boolean,
56 position: {
57 timestamp: number,
58 coords: {
59 latitude: number,
60 longitude: number,
61 altitude: number,
62 accuracy: number,
63 altitudeAccuracy: number,
64 heading: number,
65 speed: number,
66 },
67 }
68}
69export declare const useGeolocationState: (options?: PositionOptions) => GeolocationState;
70
71/**
72 * useGlobalEvent
73 */
74export declare const useGlobalEvent: (eventName: string, options?: EventListenerOptions, handler?: Function) => HandlerSetter;
75
76/**
77 * useInterval
78 */
79export declare const useInterval: (fn: Function, milliseconds: number, options?: TimeoutOrIntervalOpts) => [boolean, EffectCallback];
80
81/**
82 * useLifecycle
83 */
84export declare const useLifecycle: (mount: Function, unmount: Function) => { onDidMount: HandlerSetter, onWillUnmount: HandlerSetter };
85
86/**
87 * useMediaQuery
88 */
89export declare const useMediaQuery: (mediaQuery: string) => boolean;
90
91/**
92 * useOnlineState
93 */
94export declare const useOnlineState: () => boolean;
95
96/**
97 * useViewportSpy
98 */
99export declare const useViewportSpy: (elementRef: MutableRefObject<HTMLElement>, options?: IntersectionObserverInit) => boolean;
100
101/**
102 * useValidatedState
103 */
104export declare const useValidatedState: (validator: Function, initialState?: any) => [
105 any,
106 Dispatch<SetStateAction<any>>,
107 { changed: boolean, valid: boolean }
108];
109
110
111/**
112 * useDrag
113 */
114type DragOptions = {
115 dragImage?: string,
116 dragImageXOffset?: number,
117 dragImageYOffset?: number,
118 transfer?: object | string | number,
119 transferFormat: 'text' | 'text/plain',
120};
121
122export declare const useDrag: (ref: MutableRefObject<MouseTarget>, options: DragOptions) => boolean;
123
124/**
125 * useDragEvents
126 */
127export declare const useDragEvents: (ref: MutableRefObject<MouseTarget>, setDraggable?: boolean) => ({
128 onDrag: HandlerSetter,
129 onDrop: HandlerSetter,
130 onDragEnter: HandlerSetter,
131 onDragEnd: HandlerSetter,
132 onDragExit: HandlerSetter,
133 onDragLeave: HandlerSetter,
134 onDragOver: HandlerSetter,
135 onDragStart: HandlerSetter,
136});
137
138/**
139 * useMouse
140 */
141export declare const useMouse: (ref?: MutableRefObject<MouseTarget>) => [MouseState, MouseCallbackSetters];
142
143/**
144 * useMouseEvents
145 */
146type MouseTarget = HTMLElement | Document | Window;
147
148type MouseCallbackSetters = {
149 onMouseDown: HandlerSetter,
150 onMouseEnter: HandlerSetter,
151 onMouseLeave: HandlerSetter,
152 onMouseMove: HandlerSetter,
153 onMouseOut: HandlerSetter,
154 onMouseOver: HandlerSetter,
155 onMouseUp: HandlerSetter,
156}
157export declare const useMouseEvents: (ref?: MutableRefObject<MouseTarget>) => MouseCallbackSetters;
158
159/**
160 * useMouseState
161 */
162type MouseState = {
163 clientX: number,
164 clientY: number,
165 screenX: number,
166 screenY: number,
167}
168export declare const useMouseState: (ref?: MutableRefObject<MouseTarget>) => MouseState;
169
170/**
171 * usePreviousValue
172 */
173export declare const usePreviousValue: (value: any) => any;
174
175/**
176 * useThrottledFn
177 */
178export declare const useThrottledFn: (fn: Function, wait?: number, options?: ThrottleOrDebounceOpts, dependencies?: DependencyList) => Cancelable;
179
180/**
181 * useTimeout
182 */
183export declare const useTimeout: (fn: Function, milliseconds: number, options?: TimeoutOrIntervalOpts) => [boolean, EffectCallback];
184
185/**
186 * useConditionalTimeout
187 */
188export declare const useConditionalTimeout: (fn: Function, milliseconds: number, condition: boolean, options?: TimeoutOrIntervalOpts) => [boolean, EffectCallback];
189
190/**
191 * useValueHistory
192 */
193export declare const useValueHistory: (value: any) => Array<any>;
194
195
196/**
197 * useWillUnmount
198 */
199export declare const useWillUnmount: (handler?: Function) => HandlerSetter;
200
201/**
202 * useWindowResize
203 */
204export declare const useWindowResize: (handler: Function) => HandlerSetter;
205
206/**
207 * useWindowScroll
208 */
209export declare const useWindowScroll: (handler: Function) => HandlerSetter;
210
211/**
212 * useRequestAnimationFrame
213 */
214
215type UseRequestAnimationFrameOptions = { increment: number, startAt: number, finishAt: number };
216
217export declare const useRequestAnimationFrame: (func: Function, options?: UseRequestAnimationFrameOptions) => HandlerSetter;
218
219/**
220 * useLocalStorage
221 */
222export declare const useLocalStorage: (localStorageKey:any, defaultValue: any) => [any, HandlerSetter];
223
224/**
225 * useStorage
226 */
227type StorageType = 'local' | 'session';
228type SetValueFn<T> = ((item: T) => T) | T;
229interface StorageModifiers<T extends {}> {
230 set: <K extends keyof T = keyof T>(key: K, value: SetValueFn<T[K]>) => void;
231 get: <K extends keyof T = keyof T>(key?: K) => T[K];
232}
233
234type Storage<T> = T & StorageModifiers<T>;
235export declare const useStorage: <T extends {} = any>(storageType: StorageType) => (initialValue?: T) => Storage<T>
236
237/**
238 * useStorageKey
239 */
240export declare const useStorageKey: <T extends {} = any>(storageType: StorageType) => (key: keyof T, initialValue?: T) => [T, Dispatch<SetStateAction<T>>]