-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
34 lines (27 loc) · 1.2 KB
/
index.js
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
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.createDeepTreeWalkerIterator = {}));
}(this, (function (exports) { 'use strict';
const {document, NodeFilter} = self;
function* createDeepTreeWalkerIterator(root, whatToShow = NodeFilter.SHOW_ELEMENT, acceptNodeFilter = () => NodeFilter.FILTER_ACCEPT ) {
const acc = [];
const nodeFilter = {
acceptNode(node) {
if(node.shadowRoot) acc.push(node.shadowRoot);
return acceptNodeFilter(node);
}
};
const treeWalker = document.createTreeWalker(root, whatToShow, nodeFilter);
let currentNode = treeWalker.nextNode();
while(currentNode) {
yield currentNode;
currentNode = treeWalker.nextNode();
}
for (let i = 0; i < acc.length; i++) {
yield* createDeepTreeWalkerIterator(acc[i], whatToShow, acceptNodeFilter);
}
}
exports.createDeepTreeWalkerIterator = createDeepTreeWalkerIterator;
Object.defineProperty(exports, '__esModule', { value: true });
})));