|
|
@@ -87,21 +87,23 @@ this.matchedRules = this.matchedRules || (() => {
|
|
|
log(" -- STARTED getMatchedElementsRules", " index =", sheetIndex, "rules.length =", cssRules.length);
|
|
|
}
|
|
|
cssRules.forEach(cssRule => {
|
|
|
- if (cssRule.type == "Atrule" && cssRule.name == "media" && cssRule.prelude && cssRule.block) {
|
|
|
- const mediaText = cssTree.generate(cssRule.prelude);
|
|
|
- const ruleMediaInfo = createMediaInfo(mediaText);
|
|
|
- mediaInfo.medias.set("rule-" + sheetIndex + "-" + mediaIndex + "-" + mediaText, ruleMediaInfo);
|
|
|
- mediaIndex++;
|
|
|
- getMatchedElementsRules(doc, cssRule.block.children, ruleMediaInfo, sheetIndex, docStyle, matchedElementsCache);
|
|
|
- } else if (cssRule.type == "Rule" && cssRule.prelude.children) {
|
|
|
- const selectors = cssRule.prelude.children.toArray();
|
|
|
- const selectorsText = cssRule.prelude.children.toArray().map(selector => cssTree.generate(selector));
|
|
|
- const ruleInfo = { cssRule, mediaInfo, ruleIndex, sheetIndex, matchedSelectors: new Set(), style: new Map(), selectors, selectorsText };
|
|
|
- ruleIndex++;
|
|
|
- for (let selector = cssRule.prelude.children.head, selectorIndex = 0; selector; selector = selector.next, selectorIndex++) {
|
|
|
- const selectorText = selectorsText[selectorIndex];
|
|
|
- const selectorInfo = { selector, selectorText, ruleInfo };
|
|
|
- getMatchedElementsSelector(doc, selectorInfo, docStyle, matchedElementsCache);
|
|
|
+ if (cssRule.block && cssRule.block.children && cssRule.prelude && cssRule.prelude.children) {
|
|
|
+ if (cssRule.type == "Atrule" && cssRule.name == "media") {
|
|
|
+ const mediaText = cssTree.generate(cssRule.prelude);
|
|
|
+ const ruleMediaInfo = createMediaInfo(mediaText);
|
|
|
+ mediaInfo.medias.set("rule-" + sheetIndex + "-" + mediaIndex + "-" + mediaText, ruleMediaInfo);
|
|
|
+ mediaIndex++;
|
|
|
+ getMatchedElementsRules(doc, cssRule.block.children, ruleMediaInfo, sheetIndex, docStyle, matchedElementsCache);
|
|
|
+ } else if (cssRule.type == "Rule" && cssRule.prelude.children) {
|
|
|
+ const selectors = cssRule.prelude.children.toArray();
|
|
|
+ const selectorsText = cssRule.prelude.children.toArray().map(selector => cssTree.generate(selector));
|
|
|
+ const ruleInfo = { cssRule, mediaInfo, ruleIndex, sheetIndex, matchedSelectors: new Set(), style: new Map(), selectors, selectorsText };
|
|
|
+ ruleIndex++;
|
|
|
+ for (let selector = cssRule.prelude.children.head, selectorIndex = 0; selector; selector = selector.next, selectorIndex++) {
|
|
|
+ const selectorText = selectorsText[selectorIndex];
|
|
|
+ const selectorInfo = { selector, selectorText, ruleInfo };
|
|
|
+ getMatchedElementsSelector(doc, selectorInfo, docStyle, matchedElementsCache);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|