UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

39 lines (35 loc) 1.08 kB
'use client'; 'use strict'; var React = require('react'); const DEFAULT_OPTIONS = { events: ["keydown", "mousemove", "touchmove", "click", "scroll", "wheel"], initialState: true }; function useIdle(timeout, options) { const { events, initialState } = { ...DEFAULT_OPTIONS, ...options }; const [idle, setIdle] = React.useState(initialState); const timer = React.useRef(-1); React.useEffect(() => { const handleEvents = () => { setIdle(false); if (timer.current) { window.clearTimeout(timer.current); } timer.current = window.setTimeout(() => { setIdle(true); }, timeout); }; events.forEach((event) => document.addEventListener(event, handleEvents)); timer.current = window.setTimeout(() => { setIdle(true); }, timeout); return () => { events.forEach((event) => document.removeEventListener(event, handleEvents)); window.clearTimeout(timer.current); timer.current = -1; }; }, [timeout]); return idle; } exports.useIdle = useIdle; //# sourceMappingURL=use-idle.cjs.map