react-intersection-observer-hook
Version:
React hook to use IntersectionObserver declaratively.
29 lines (25 loc) • 1.54 kB
TypeScript
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
type IntersectionObserverHookArgs = Omit<IntersectionObserverInit, 'root'>;
type IntersectionObserverHookRefCallbackNode = Element | null;
type IntersectionObserverHookRefCallback = (node: IntersectionObserverHookRefCallbackNode) => VoidFunction;
type IntersectionObserverHookRootRefCallbackNode = IntersectionObserverInit['root'];
type IntersectionObserverHookRootRefCallback = (node: IntersectionObserverHookRootRefCallbackNode) => VoidFunction;
type IntersectionObserverHookResult = [
IntersectionObserverHookRefCallback,
{
entry: IntersectionObserverEntry | undefined;
rootRef: IntersectionObserverHookRootRefCallback;
}
];
declare function useIntersectionObserver(args?: IntersectionObserverHookArgs): IntersectionObserverHookResult;
type TrackVisibilityHookArgs = IntersectionObserverHookArgs & {
once?: boolean;
};
type TrackVisibilityHookResult = [
IntersectionObserverHookResult[0],
IntersectionObserverHookResult[1] & {
isVisible: boolean;
}
];
declare function useTrackVisibility(args?: TrackVisibilityHookArgs): TrackVisibilityHookResult;
export { type IntersectionObserverHookArgs, type IntersectionObserverHookRefCallback, type IntersectionObserverHookRefCallbackNode, type IntersectionObserverHookResult, type IntersectionObserverHookRootRefCallback, type IntersectionObserverHookRootRefCallbackNode, type TrackVisibilityHookArgs, type TrackVisibilityHookResult, useIntersectionObserver, useTrackVisibility };