@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
30 lines (29 loc) • 812 B
JavaScript
"use client";
let react = require("react");
//#region packages/@mantine/hooks/src/use-timeout/use-timeout.ts
function useTimeout(callback, delay, options = { autoInvoke: false }) {
const timeoutRef = (0, react.useRef)(null);
const start = (0, react.useCallback)((...args) => {
if (!timeoutRef.current) timeoutRef.current = window.setTimeout(() => {
callback(args);
timeoutRef.current = null;
}, delay);
}, [delay]);
const clear = (0, react.useCallback)(() => {
if (timeoutRef.current) {
window.clearTimeout(timeoutRef.current);
timeoutRef.current = null;
}
}, []);
(0, react.useEffect)(() => {
if (options.autoInvoke) start();
return clear;
}, [clear, start]);
return {
start,
clear
};
}
//#endregion
exports.useTimeout = useTimeout;
//# sourceMappingURL=use-timeout.cjs.map