export const NodeListWalker = { *walk(list: NodeList) { const stack = []; for (let index = 0; index < list.length; index++) { const element = list[index]; yield element; stack.push(element); } while(stack.length) { const e = stack.pop(); let start = e.firstElementChild as HTMLElement; yield e; while (start) { stack.push(start); start = start.nextElementSibling as HTMLElement; } } } };