UNPKG

@vnmfify/core

Version:

```shell npm i @vnmfify/core -S ```

51 lines (43 loc) 1.35 kB
import { useCallback, useMemo, useRef } from "react"; function useTimeout() { var timerRef = useRef(); var cbRef = useRef(); var msRef = useRef(); var argsRef = useRef(); var stop = useCallback(() => { if (timerRef.current) { clearTimeout(timerRef.current); timerRef.current = undefined; } }, []); var start = useCallback(function (callback, ms) { if (timerRef.current) { return; } cbRef.current = callback; msRef.current = ms; for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } argsRef.current = args; timerRef.current = setTimeout(callback, ms, args); }, []); var restart = useCallback(function (callback, ms) { stop(); if (callback) { for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { args[_key2 - 2] = arguments[_key2]; } start(callback, ms, args); } else if (cbRef.current) { start(cbRef.current, msRef.current, argsRef.current); } }, []); return useMemo(() => ({ restart, start, stop }), [restart, start, stop]); } export default useTimeout; //# sourceMappingURL=use-timeout.js.map