UNPKG

hybrids

Version:

The simplest way to create web components with plain objects and pure functions!

35 lines (29 loc) 771 B
function walk(node, fn) { let parentElement = node.parentElement || node.parentNode.host; while (parentElement) { const hybrids = parentElement.constructor.hybrids; if (hybrids && fn(hybrids)) { return parentElement; } parentElement = parentElement.parentElement || (parentElement.parentNode && parentElement.parentNode.host); } return parentElement || null; } export default function parent(hybridsOrFn) { const fn = typeof hybridsOrFn === "function" ? hybridsOrFn : hybrids => hybrids === hybridsOrFn; return { get: host => walk(host, fn), connect(host, key, invalidate) { const target = host[key]; if (target) { return invalidate; } return false; }, }; }