import { useMemo } from "react";
/**
 * Данный хук рекурсивно проходится по дереву items и создает 2 мапы: мапу путей и мапу фокусов.
 * Нужно для получения всей информации об item, зная только путь до него.
 */ export const usePathMaps = (items)=>{
    return useMemo(()=>{
        const pathMap = new Map();
        const focusedToValueMap = new Map();
        pathMap.set('root', items.length);
        const rec = (items, prevIndex = '')=>{
            items.forEach((item, index)=>{
                const { value, items: innerItems } = item;
                const currIndex = `${prevIndex}/${index}`.replace(/^(\/)/, '');
                focusedToValueMap.set(currIndex, item);
                if (innerItems) {
                    pathMap.set(value, innerItems.length);
                    rec(innerItems, currIndex);
                }
            });
        };
        rec(items);
        return [
            pathMap,
            focusedToValueMap
        ];
    }, [
        items
    ]);
};
