/**
 * Преобразует древовидную структуру в плоский список для виртуализации
 */
export const flattenTree = (items, expandedIds, parentPath = [], level = 0, parentId) => {
    const result = [];
    items.forEach((item, index) => {
        const path = [...parentPath, item.id];
        const isExpanded = expandedIds.has(item.id);
        // Создаем flattened item с правильной типизацией
        const flattenedItem = {
            ...item,
            meta: {
                hasNested: Boolean(item.children),
                level,
                path,
                isExpanded,
                parentId,
                siblingIndex: index,
                nodeId: `infinite-tree-item-${item.id}`,
            },
        };
        result.push(flattenedItem);
        // Рекурсивно обрабатываем детей с сохранением типизации
        if (isExpanded && item.children && item.children.length > 0) {
            const childItems = flattenTree(item.children, expandedIds, path, level + 1, item.id);
            result.push(...childItems);
        }
    });
    return result;
};
