preact
Version:
Fast 3kb React-compatible Virtual DOM library.
34 lines (28 loc) • 816 B
JavaScript
import { Fragment } from 'preact';
import { getDisplayName } from './vnode';
/**
*
* @param {import('../../internal').VNode} vnode
* @param {import('./types').FilterState} filters
* @returns {boolean}
*/
export function shouldFilter(vnode, filters) {
// Filter text nodes by default. They are too tricky to match
// with the previous one...
if (vnode.type == null) return true;
if (typeof vnode.type === 'function') {
if (vnode.type === Fragment && filters.type.has('fragment')) {
const parent = vnode._parent;
// Only filter non-root nodes
if (parent != null) return true;
return false;
}
} else if (filters.type.has('dom')) {
return true;
}
if (filters.regex.length > 0) {
const name = getDisplayName(vnode);
return filters.regex.some(r => r.test(name));
}
return false;
}