mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 17:50:56 +00:00
34 lines
795 B
JavaScript
34 lines
795 B
JavaScript
'use client';
|
|
import { useRef, useCallback, useEffect } from 'react';
|
|
|
|
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 };
|
|
}
|
|
|
|
export { useTimeout };
|
|
//# sourceMappingURL=use-timeout.mjs.map
|