Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 1x | function getChildren(node: Node): Node[] { const children: Node[] = []; if (node instanceof HTMLSlotElement) { const childNodes = node.assignedNodes({ flatten: true }); children.push(...childNodes); } else if (node instanceof HTMLElement) { // Add the nodes of the slots if any let slots = (node as any).querySelectorAll('slot'); slots.forEach(slot => { const childNodes = slot.assignedNodes({ flatten: true }); children.push(...childNodes); }); // Add the child nodes that are not in a slot let childNodes = Array.from(node.childNodes); children.push(...childNodes); if (node.shadowRoot === null) { return children; } // Do the same for the shadow root node = node.shadowRoot; // It seems that the slots from the shadowRoot and host are the same so we don't need to repeat the operation for the shadowRoot // Add the child nodes that are not in a slot childNodes = Array.from(node.childNodes); children.push(...childNodes); } return children; } export default function getAllChildren(node: Node): Node[] { const children: Node[] = [node]; getChildren(node).forEach((child: Node) => { children.push(...getAllChildren(child)); }); return children; } |