| 20 | * }; |
| 21 | */ |
| 22 | export function useFocusReturn() { |
| 23 | const savedRef = useRef<HTMLElement | null>(null); |
| 24 | |
| 25 | const save = useCallback(() => { |
| 26 | savedRef.current = document.activeElement as HTMLElement | null; |
| 27 | }, []); |
| 28 | |
| 29 | const restore = useCallback(() => { |
| 30 | if (savedRef.current && typeof savedRef.current.focus === "function") { |
| 31 | savedRef.current.focus(); |
| 32 | savedRef.current = null; |
| 33 | } |
| 34 | }, []); |
| 35 | |
| 36 | // Safety cleanup on unmount |
| 37 | useEffect(() => () => { savedRef.current = null; }, []); |
| 38 | |
| 39 | return { save, restore }; |
| 40 | } |