react-box-tools
Version:
Box tools react components, utils and hooks
77 lines (52 loc) • 3.28 kB
TypeScript
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 { }