import { useCallback, useState } from 'react'; type UseExpandedDirectoriesResult = { expandedDirs: Set; toggleDirectory: (path: string) => void; expandDirectories: (paths: string[]) => void; }; export function useExpandedDirectories(): UseExpandedDirectoriesResult { const [expandedDirs, setExpandedDirs] = useState>(() => new Set()); const toggleDirectory = useCallback((path: string) => { setExpandedDirs((previous) => { const next = new Set(previous); if (next.has(path)) { next.delete(path); } else { next.add(path); } return next; }); }, []); const expandDirectories = useCallback((paths: string[]) => { if (paths.length === 0) { return; } setExpandedDirs((previous) => { const next = new Set(previous); paths.forEach((path) => next.add(path)); return next; }); }, []); return { expandedDirs, toggleDirectory, expandDirectories, }; }