UNPKG

react-box-tools

Version:

Box tools react components, utils and hooks

77 lines (52 loc) 3.28 kB
import { Dispatch } from 'react'; import { RefObject } from 'react'; import { SetStateAction } from 'react'; import { useEffect } from 'react'; import { useLayoutEffect } from 'react'; declare interface Args extends IntersectionObserverInit { freezeOnceVisible?: boolean; } declare type Handler = (event: MouseEvent) => void; declare type SetValue<T> = Dispatch<SetStateAction<T>>; declare type SetValue_2<T> = Dispatch<SetStateAction<T>>; export declare const useDebounce: <T extends (...args: any[]) => any>(fn: T, delay?: number) => T; export declare function useEventCallback<Args extends unknown[], R>(fn: (...args: Args) => R): (...args: Args) => R; export declare function useEventListener<K extends keyof WindowEventMap>(eventName: K, handler: (event: WindowEventMap[K]) => void, element?: undefined, options?: boolean | AddEventListenerOptions): void; export declare function useEventListener<K extends keyof HTMLElementEventMap, T extends HTMLElement = HTMLDivElement>(eventName: K, handler: (event: HTMLElementEventMap[K]) => void, element: RefObject<T>, options?: boolean | AddEventListenerOptions): void; export declare function useEventListener<K extends keyof DocumentEventMap>(eventName: K, handler: (event: DocumentEventMap[K]) => void, element: RefObject<Document>, options?: boolean | AddEventListenerOptions): void; export declare function useFirstRender(): boolean; export declare function useIntersectionObserver(elementRef: RefObject<Element>, { threshold, root, rootMargin, freezeOnceVisible, }: Args): IntersectionObserverEntry | undefined; export declare function useInterval(callback: () => void, delay: number | null): void; export declare const useIsomorphicLayoutEffect: typeof useLayoutEffect; export declare const useLocalStorage: <T>(key: string, initialValue: T) => [T, SetValue<T>]; export declare function useOutClick<T extends HTMLElement = HTMLElement>(ref: RefObject<T>, handler: Handler, mouseEvent?: 'mousedown' | 'mouseup'): void; export declare function useResizeObserver(callback: (rect: DOMRectReadOnly) => void): RefObject<HTMLDivElement | null>; export declare const useScroll: (ref: RefObject<HTMLDivElement>, eventDelay?: number) => { fn: { (x: number, y: number): void; (options?: ScrollToOptions | undefined): void; }; to: { (x: number, y: number): void; (options?: ScrollToOptions | undefined): void; }; by: { (x: number, y: number): void; (options?: ScrollToOptions | undefined): void; }; intoView: (options?: boolean | ScrollIntoViewOptions | undefined) => void; top: number; height: number; width: number; left: number; }; export declare function useSessionStorage<T>(key: string, initialValue: T): [T, SetValue_2<T>]; export declare const useThrottle: <T>(func: (value: T) => void, delay?: number, initValue?: T) => React.Dispatch<T>; export declare function useTimeout(callback: () => void, delay: number | null): void; export declare const useUpdateEffect: typeof useEffect; export declare function useWindowResize(): WindowProperties; declare interface WindowProperties { width: number; height: number; } export { }