UNPKG

js2flowchart

Version:

> Why? While I've been working on [Under-the-hood-ReactJS](https://github.com/Bogdan-Lyashenko/Under-the-hood-ReactJS) I spent enormous amount of time on creating schemes. Each change in code or flowchart affects all entire scheme instantly, forcing you t

42 lines (31 loc) 871 B
export const levelsTraversal = (tree, stepIn, onNode, stepOut, options = {}) => { const getBody = options.getBody || (node => node.body); stepIn(tree); getBody(tree).forEach(node => { onNode(node); if (getBody(node)) { levelsTraversal(node, stepIn, onNode, stepOut, options); } }); stepOut(tree); }; export const traversal = (tree, fn, getBody = node => node.body) => { let queue = [].concat(tree); while (queue.length) { let node = queue.shift(); fn(node); const nodeBody = getBody(node); if (nodeBody) { queue = [...queue, ...nodeBody]; } } }; export const traversalSearch = (tree, fn) => { const result = []; traversal(tree, node => { if (fn(node)) { result.push(node); } }); return result; };