import { useEffect, useRef } from 'react'; /** * Execute `effect` apres `delay` ms d'inactivite sur `deps`. * Utilise pour l'autosave : on n'ecrit pas en base a chaque micro-mouvement. */ export function useDebouncedEffect(effect: () => void, deps: unknown[], delay: number): void { const callbackRef = useRef(effect); callbackRef.current = effect; useEffect(() => { const timer = window.setTimeout(() => callbackRef.current(), delay); return () => window.clearTimeout(timer); // eslint-disable-next-line react-hooks/exhaustive-deps }, [...deps, delay]); }