reactuals
Version:
A useful package providing a collection of 50+ React hooks and utilities to simplify React development.
21 lines (20 loc) • 746 B
JavaScript
import { useState, useEffect } from "react";
export function useIdleTimeout(timeout) {
const [isIdle, setIsIdle] = useState(false);
useEffect(() => {
let timer;
const resetTimer = () => {
setIsIdle(false);
clearTimeout(timer);
timer = setTimeout(() => setIsIdle(true), timeout);
};
const events = ["mousemove", "keydown", "touchstart", "click", "scroll"];
events.forEach((event) => window.addEventListener(event, resetTimer));
resetTimer(); // Initialize timer
return () => {
events.forEach((event) => window.removeEventListener(event, resetTimer));
clearTimeout(timer);
};
}, [timeout]);
return isIdle;
}