export function useMouseMove()

in src/hooks/useMouseMove/index.tsx [6:34]


export function useMouseMove(el: RefObject<any>, delay = 3000) {
  const timeoutRef: any = useRef(null);
  const [isMouseMoving, setIsMouseActive] = useState<boolean>(false);

  useEffect(() => {
    if (!el.current) {
      return;
    }

    const onMouseMove = () => {
      clearTimeout(timeoutRef.current);
      setIsMouseActive(true);
      timeoutRef.current = setTimeout(() => {
        setIsMouseActive(false);
      }, delay);
    };

    el.current.addEventListener('mousemove', onMouseMove);

    return (): void => {
      if (timeoutRef.current) {
        clearTimeout(timeoutRef.current);
      }
      el.current?.removeEventListener('mousemove', onMouseMove);
    };
  }, [el]);

  return { isMouseMoving };
}