import { Fun, type Optional } from '@ephox/katamari'; import { SugarElement } from './SugarElement'; const getNodes = (texas: TreeWalker): SugarElement[] => { const ret: SugarElement[] = []; while (texas.nextNode() !== null) { ret.push(SugarElement.fromDom(texas.currentNode as T)); } return ret; }; const find = (node: SugarElement, filterOpt: Optional<(n: string | null) => boolean>): SugarElement[] => { const predicate = filterOpt.getOr(Fun.always); const texas = document.createTreeWalker(node.dom, NodeFilter.SHOW_COMMENT, { acceptNode: (comment) => predicate(comment.nodeValue) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT }); return getNodes(texas); }; export { find };