|
|
@@ -32,7 +32,6 @@ this.cssMinifier = this.cssMinifier || (() => {
|
|
|
const rulesMatcher = RulesMatcher.create(doc);
|
|
|
const mediaAllInfo = rulesMatcher.getAllMatchedRules();
|
|
|
const stats = { processed: 0, discarded: 0 };
|
|
|
- const selectorsCache = new Map();
|
|
|
doc.querySelectorAll("style").forEach(styleElement => {
|
|
|
if (styleElement.sheet) {
|
|
|
let mediaInfo;
|
|
|
@@ -41,7 +40,7 @@ this.cssMinifier = this.cssMinifier || (() => {
|
|
|
} else {
|
|
|
mediaInfo = mediaAllInfo;
|
|
|
}
|
|
|
- processRules(doc, styleElement.sheet.cssRules, mediaInfo, selectorsCache, stats);
|
|
|
+ processRules(doc, styleElement.sheet.cssRules, mediaInfo, stats);
|
|
|
styleElement.textContent = serializeRules(styleElement.sheet.cssRules);
|
|
|
}
|
|
|
});
|
|
|
@@ -52,12 +51,12 @@ this.cssMinifier = this.cssMinifier || (() => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- function processRules(doc, cssRules, mediaInfo, selectorsCache, stats) {
|
|
|
+ function processRules(doc, cssRules, mediaInfo, stats) {
|
|
|
stats.processed += cssRules.length;
|
|
|
stats.discarded += cssRules.length;
|
|
|
Array.from(cssRules).forEach(cssRule => {
|
|
|
if (cssRule.type == CSSRule.MEDIA_RULE) {
|
|
|
- processRules(doc, cssRule.cssRules, mediaInfo.medias.get(cssRule.media), selectorsCache, stats);
|
|
|
+ processRules(doc, cssRule.cssRules, mediaInfo.medias.get(cssRule.media), stats);
|
|
|
} else if (cssRule.type == CSSRule.STYLE_RULE) {
|
|
|
const ruleInfo = mediaInfo.rules.get(cssRule);
|
|
|
if (ruleInfo) {
|
|
|
@@ -71,22 +70,13 @@ this.cssMinifier = this.cssMinifier || (() => {
|
|
|
}
|
|
|
} else {
|
|
|
if (!IGNORED_SELECTORS.find(selector => cssRule.selectorText.toLowerCase().includes(selector)) && !testFilterSelector(cssRule.selectorText)) {
|
|
|
- let noElementsFound;
|
|
|
- if (selectorsCache.has(cssRule.selectorText)) {
|
|
|
- noElementsFound = selectorsCache.get(cssRule.selectorText);
|
|
|
- } else {
|
|
|
- noElementsFound = !doc.querySelector(getFilteredSelector(cssRule.selectorText));
|
|
|
- selectorsCache.set(cssRule.selectorText, noElementsFound);
|
|
|
+ const parent = cssRule.parentRule || cssRule.parentStyleSheet;
|
|
|
+ let indexRule = 0;
|
|
|
+ while (cssRule != parent.cssRules[indexRule] && indexRule < parent.cssRules.length) {
|
|
|
+ indexRule++;
|
|
|
}
|
|
|
- if (noElementsFound) {
|
|
|
- const parent = cssRule.parentRule || cssRule.parentStyleSheet;
|
|
|
- let indexRule = 0;
|
|
|
- while (cssRule != parent.cssRules[indexRule] && indexRule < parent.cssRules.length) {
|
|
|
- indexRule++;
|
|
|
- }
|
|
|
- if (cssRule == parent.cssRules[indexRule]) {
|
|
|
- parent.deleteRule(indexRule);
|
|
|
- }
|
|
|
+ if (cssRule == parent.cssRules[indexRule]) {
|
|
|
+ parent.deleteRule(indexRule);
|
|
|
}
|
|
|
}
|
|
|
}
|