"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getChainsId = void 0;
/*
 * Возвращает цепочки идентификаторов до целевых элементов
 */
const getChainsId = (tree, targetId) => {
    const chainIds = [];
    if (!targetId || targetId.length === 0) {
        return [];
    }
    // Создаем набор идентификаторов для быстрого поиска
    const targetIdsSet = new Set(targetId.map((item) => (typeof item === 'string' ? item : item.id)));
    const findChain = (node, chainId) => {
        const currentChain = [...chainId, node.id];
        // Проверяем по набору идентификаторов
        if (targetIdsSet.has(node.id)) {
            chainIds.push(currentChain);
            // Не делаем return, так как элемент может иметь дочерние элементы с целевыми id
        }
        node.children?.forEach((child) => findChain(child, currentChain));
    };
    for (const node of tree) {
        findChain(node, []);
    }
    return chainIds;
};
exports.getChainsId = getChainsId;
