es-grid-template
Version:
es-grid-template
40 lines (39 loc) • 1.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = collectNodes;
var _isLeafNode = _interopRequireDefault(require("./isLeafNode"));
/**
* Traverses all nodes and collects them into an array.
* The `order` parameter can be used to specify the traversal strategy:
* * `pre` - Pre-order traversal (default)
* * `post` - Post-order traversal
* * `leaf-only` - Ignore internal nodes and collect only leaf nodes
*/
function collectNodes(nodes, order = 'pre') {
const result = [];
dfs(nodes);
return result;
function dfs(vals) {
if (vals == null) {
return;
}
for (const node of vals) {
if ((0, _isLeafNode.default)(node)) {
result.push(node);
} else {
if (order === 'pre') {
result.push(node);
dfs(node.children);
} else if (order === 'post') {
dfs(node.children);
result.push(node);
} else {
dfs(node.children);
}
}
}
}
}