39 lines
839 B
JavaScript
Raw Permalink Normal View History

2023-05-21 12:11:59 +02:00
export function walk(el, callback) {
if (typeof ShadowRoot === 'function' && el instanceof ShadowRoot) {
Array.from(el.children).forEach(el => walk(el, callback))
return
}
let skip = false
callback(el, () => skip = true)
if (skip) return
let node = el.firstElementChild
while (node) {
walk(node, callback, false)
node = node.nextElementSibling
}
}
// export function walk(el, callback) {
// if (el instanceof ShadowRoot || el instanceof DocumentFragment) {
// Array.from(el.children).forEach(el => walk(el, callback))
// return
// }
// callback(el, () => {
// let node = el.firstElementChild
// while (node) {
// walk(node, callback)
// node = node.nextElementSibling
// }
// })
// }