UNPKG

inspire-tree

Version:

Inspired JavaScript Tree UI Component

36 lines (30 loc) 856 B
import { each } from 'lodash'; import TreeNode from '../treenode'; import TreeNodes from '../treenodes'; /** * Base recursion function for a collection or node. * * Returns false if execution should cease. * * @private * @param {TreeNode|TreeNodes} obj Node or collection. * @param {function} iteratee Iteratee function * @return {boolean} Cease iteration. */ export function recurseDown(obj, iteratee) { let res; if (obj instanceof TreeNodes) { each(obj, node => { res = recurseDown(node, iteratee); return res; }); } else if (obj instanceof TreeNode) { res = iteratee(obj); // Recurse children if (res !== false && obj.hasChildren()) { res = recurseDown(obj.children, iteratee); } } return res; }