UNPKG

@workday/canvas-kit-docs

Version:

Documentation components of Canvas Kit components

30 lines (29 loc) 663 B
import { guards, getKindNameFromNode } from './traversals'; export function find(node, predicate) { const nodes = []; if (!node) { return nodes; } if (predicate(node)) { nodes.push(node); } node.forEachChild(n => { nodes.push(...find(n, predicate)); }); return nodes; } let t; // @ts-ignore t = node => { return { find(kind, predicate = n => true) { return find(node, n => guards[`is${kind}`](n) && predicate(n)); }, }; }; t.getKindNameFromNode = getKindNameFromNode; Object.keys(guards).forEach(key => { // @ts-ignore t[key] = guards[key]; }); export default t;