UNPKG

es-grid-template

Version:

es-grid-template

40 lines (39 loc) 1.1 kB
"use strict"; 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); } } } } }