2024-01-29 09:26:07 +08:00

24 lines
810 B
JavaScript

export function flatten(treeNodes, expandedKeys) {
const expandedKeySet = expandedKeys ? new Set(expandedKeys) : undefined;
const flattenedNodes = [];
function traverse(treeNodes) {
treeNodes.forEach((treeNode) => {
flattenedNodes.push(treeNode);
if (treeNode.isLeaf || !treeNode.children || treeNode.ignored)
return;
if (treeNode.isGroup) {
// group node shouldn't be expanded
traverse(treeNode.children);
}
else if (
// normal non-leaf node
expandedKeySet === undefined ||
expandedKeySet.has(treeNode.key)) {
traverse(treeNode.children);
}
});
}
traverse(treeNodes);
return flattenedNodes;
}