UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

26 lines (25 loc) 943 B
"use client"; import { useCallback, useEffect, useRef } from "react"; //#region packages/@mantine/hooks/src/use-event-listener/use-event-listener.ts function useEventListener(type, listener, options) { const previousListener = useRef(null); const previousNode = useRef(null); const callbackRef = useCallback((node) => { if (!node) return; if (previousNode.current && previousListener.current) previousNode.current.removeEventListener(type, previousListener.current, options); node.addEventListener(type, listener, options); previousNode.current = node; previousListener.current = listener; }, [ type, listener, options ]); useEffect(() => () => { if (previousNode.current && previousListener.current) previousNode.current.removeEventListener(type, previousListener.current, options); }, [type, options]); return callbackRef; } //#endregion export { useEventListener }; //# sourceMappingURL=use-event-listener.mjs.map