import { useState, useEffect, useRef, useCallback } from 'react'; type SetTemporaryValue = (newValue: T) => void; export function useTemporaryState(initialValue: T, durationMs: number) { const [value, setValue] = useState(initialValue); const initialRef = useRef(initialValue); const timeoutRef = useRef(null); useEffect(() => { return () => { if (timeoutRef.current !== null) { clearTimeout(timeoutRef.current); } }; }, []); const setTemporaryValue: SetTemporaryValue = useCallback((newValue) => { setValue(newValue); if (timeoutRef.current !== null) { clearTimeout(timeoutRef.current); } timeoutRef.current = window.setTimeout(() => { setValue(initialRef.current); }, durationMs); }, [durationMs]); return [value, setTemporaryValue] as const; }