|
|
@@ -69,23 +69,33 @@ this.cssMinifier = this.stylesMinifier || (() => {
|
|
|
getMatchedElements(doc, cssRule.cssRules, ruleMediaInfo, sheetIndex);
|
|
|
} else if (cssRule.type == CSSRule.STYLE_RULE) {
|
|
|
if (cssRule.selectorText) {
|
|
|
- const selectors = cssWhat.parse(cssRule.selectorText);
|
|
|
+ let selectors = cssWhat.parse(cssRule.selectorText);
|
|
|
+ let removedSelectors;
|
|
|
selectors.forEach((selector, selectorIndex) => {
|
|
|
- doc.querySelectorAll(cssWhat.stringify([selector])).forEach(element => {
|
|
|
- let elementInfo;
|
|
|
- if (mediaInfo.elements.has(element)) {
|
|
|
- elementInfo = mediaInfo.elements.get(element);
|
|
|
- } else {
|
|
|
- elementInfo = [];
|
|
|
- const elementStyle = element.getAttribute("style");
|
|
|
- if (elementStyle) {
|
|
|
- elementInfo.push({ cssStyle: element.style });
|
|
|
+ const matchedElements = doc.querySelectorAll(cssWhat.stringify([selector]));
|
|
|
+ if (matchedElements.length) {
|
|
|
+ matchedElements.forEach(element => {
|
|
|
+ let elementInfo;
|
|
|
+ if (mediaInfo.elements.has(element)) {
|
|
|
+ elementInfo = mediaInfo.elements.get(element);
|
|
|
+ } else {
|
|
|
+ elementInfo = [];
|
|
|
+ const elementStyle = element.getAttribute("style");
|
|
|
+ if (elementStyle) {
|
|
|
+ elementInfo.push({ cssStyle: element.style });
|
|
|
+ }
|
|
|
+ mediaInfo.elements.set(element, elementInfo);
|
|
|
}
|
|
|
- mediaInfo.elements.set(element, elementInfo);
|
|
|
- }
|
|
|
- elementInfo.push({ cssRule, specificity: computeSpecificity(selector), selectorIndex, ruleIndex, sheetIndex });
|
|
|
- });
|
|
|
+ elementInfo.push({ cssRule, specificity: computeSpecificity(selector), selectorIndex, ruleIndex, sheetIndex });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ selectors = selectors.filter(s => s != selector);
|
|
|
+ removedSelectors = true;
|
|
|
+ }
|
|
|
});
|
|
|
+ if (selectors.length && removedSelectors) {
|
|
|
+ cssRule.selectorText = cssWhat.stringify(selectors);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|