/**
 * Собирает всех потомков узла по его id из плоского списка.
 *
 * @typeParam T - тип данных элемента дерева
 * @param flatList - плоский список элементов дерева (`FlattenTree<T>[]`)
 * @param parentId - идентификатор родительского узла
 * @returns Массив потомков в формате `FlattenTree<T>`
 */
export const getDescendants = (flatList, parentId) => {
    const result = [];
    const collectChildren = (id) => {
        const children = flatList.filter((item) => item.meta.parentId === id);
        children.forEach((child) => {
            result.push(child);
            if (child.meta.isExpanded) {
                collectChildren(child.id);
            }
        });
    };
    collectChildren(parentId);
    return result;
};
