"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flatten = void 0; 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; } exports.flatten = flatten;