UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

30 lines (29 loc) 784 B
"use client"; import { useCallback, useEffect, useRef } from "react"; //#region packages/@mantine/hooks/src/use-timeout/use-timeout.ts function useTimeout(callback, delay, options = { autoInvoke: false }) { const timeoutRef = useRef(null); const start = useCallback((...args) => { if (!timeoutRef.current) timeoutRef.current = window.setTimeout(() => { callback(args); timeoutRef.current = null; }, delay); }, [delay]); const clear = useCallback(() => { if (timeoutRef.current) { window.clearTimeout(timeoutRef.current); timeoutRef.current = null; } }, []); useEffect(() => { if (options.autoInvoke) start(); return clear; }, [clear, start]); return { start, clear }; } //#endregion export { useTimeout }; //# sourceMappingURL=use-timeout.mjs.map