import { useMemo } from "react";
import { isEmpty } from "../../../utils";
const createPathMaps = (items = [])=>{
    const pathMap = new Map();
    const focusedToValueMap = new Map();
    const valueToCheckedMap = new Map();
    const valueToItemMap = new Map();
    const valueToPathMap = new Map();
    pathMap.set('root', items.length);
    const rec = (itemsToMap, prevIndex = '', path = [])=>{
        itemsToMap.forEach((item, index)=>{
            const { value, items: innerItems } = item;
            const currIndex = `${prevIndex}/${index}`.replace(/^(\/)/, '');
            focusedToValueMap.set(currIndex, item);
            valueToCheckedMap.set(value, false);
            valueToPathMap.set(value.toString(), [
                ...path,
                value.toString()
            ]);
            if (!innerItems || isEmpty(innerItems)) {
                valueToItemMap.set(value, item);
            } else {
                pathMap.set(value, innerItems.length);
                rec(innerItems, currIndex, [
                    ...path,
                    value.toString()
                ]);
            }
        });
    };
    rec(items);
    return [
        pathMap,
        focusedToValueMap,
        valueToCheckedMap,
        valueToItemMap,
        valueToPathMap
    ];
};
// Рекурсивно проходим по дереву items и создаем мапы для быстрой работы с деревом.
export const usePathMaps = (items = [])=>{
    return useMemo(()=>createPathMaps(items), [
        items
    ]);
};
