var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
import { has } from 'ramda';
function isGroupedColumns(node) {
    return has('columns', node) && Array.isArray(node.columns);
}
export function getAvailableColumns(grouped, selectedColumns) {
    return grouped
        .map(function (node) {
        if (isGroupedColumns(node)) {
            var filtered = getAvailableColumns(node.columns, selectedColumns);
            if (filtered.length === 0)
                return null;
            return __assign(__assign({}, node), { columns: filtered });
        }
        if (selectedColumns.includes(node.id))
            return null;
        return node;
    })
        .filter(Boolean);
}
