|
|
@@ -75,20 +75,23 @@ this.imagesMinifier = this.imagesMinifier || (() => {
|
|
|
if (tagName == "img" || tagName == "svg") {
|
|
|
elementInfo.forEach(selectorInfo => {
|
|
|
if (selectorInfo.selector) {
|
|
|
- const selectors = matchedImageSelectors.get(selectorInfo.ruleInfo.cssRule.selectorText) || JSON.parse(JSON.stringify(selectorInfo.ruleInfo.selectors));
|
|
|
- const selectorIndex = selectorInfo.ruleInfo.selectors.indexOf(selectorInfo.selector);
|
|
|
- if (selectorIndex != -1 && !selectors[selectorIndex].transformed) {
|
|
|
- let selector = JSON.parse(JSON.stringify(selectorInfo.selector));
|
|
|
- selector.push({
|
|
|
- type: "pseudo",
|
|
|
- name: "not",
|
|
|
- data: [[SINGLE_FILE_SELECTOR]]
|
|
|
- });
|
|
|
- selector.transformed = true;
|
|
|
- selectors[selectorIndex] = selector;
|
|
|
- selector = JSON.parse(JSON.stringify(selectorInfo.selector));
|
|
|
- selectors.push(selector);
|
|
|
- matchedImageSelectors.set(selectorInfo.ruleInfo.cssRule.selectorText, selectors);
|
|
|
+ const firstSelector = selectorInfo.selector[0];
|
|
|
+ if (selectorInfo.selector.length > 1 || firstSelector.type != "universal") {
|
|
|
+ const selectors = matchedImageSelectors.get(selectorInfo.ruleInfo.cssRule.selectorText) || JSON.parse(JSON.stringify(selectorInfo.ruleInfo.selectors));
|
|
|
+ const selectorIndex = selectorInfo.ruleInfo.selectors.indexOf(selectorInfo.selector);
|
|
|
+ if (selectorIndex != -1 && !selectors[selectorIndex].transformed) {
|
|
|
+ let selector = JSON.parse(JSON.stringify(selectorInfo.selector));
|
|
|
+ selector.push({
|
|
|
+ type: "pseudo",
|
|
|
+ name: "not",
|
|
|
+ data: [[SINGLE_FILE_SELECTOR]]
|
|
|
+ });
|
|
|
+ selector.transformed = true;
|
|
|
+ selectors[selectorIndex] = selector;
|
|
|
+ selector = JSON.parse(JSON.stringify(selectorInfo.selector));
|
|
|
+ selectors.push(selector);
|
|
|
+ matchedImageSelectors.set(selectorInfo.ruleInfo.cssRule.selectorText, selectors);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
@@ -265,27 +268,29 @@ this.imagesMinifier = this.imagesMinifier || (() => {
|
|
|
}
|
|
|
|
|
|
function getSVGSelector(selector) {
|
|
|
- selector = JSON.parse(JSON.stringify(selector));
|
|
|
- let simpleSelector, selectorIndex = selector.length - 1, imageTagFound;
|
|
|
- while (selectorIndex >= 0 && !imageTagFound) {
|
|
|
- simpleSelector = selector[selectorIndex];
|
|
|
- if (simpleSelector.type == "pseudo" && simpleSelector.name == "not") {
|
|
|
- const negatedSelector = simpleSelector.data[0][0];
|
|
|
- if (negatedSelector.type == SINGLE_FILE_SELECTOR.type && negatedSelector.action == SINGLE_FILE_SELECTOR.action && negatedSelector.name == SINGLE_FILE_SELECTOR.name) {
|
|
|
- selector.splice(selectorIndex, 1);
|
|
|
- }
|
|
|
- selectorIndex--;
|
|
|
- } else {
|
|
|
- imageTagFound = simpleSelector.type == "tag" && simpleSelector.name == "img";
|
|
|
- if (!imageTagFound) {
|
|
|
+ if (selector.length) {
|
|
|
+ selector = JSON.parse(JSON.stringify(selector));
|
|
|
+ let simpleSelector, selectorIndex = selector.length - 1, imageTagFound;
|
|
|
+ while (selectorIndex >= 0 && !imageTagFound) {
|
|
|
+ simpleSelector = selector[selectorIndex];
|
|
|
+ if (simpleSelector.type == "pseudo" && simpleSelector.name == "not") {
|
|
|
+ const negatedSelector = simpleSelector.data[0][0];
|
|
|
+ if (negatedSelector.type == SINGLE_FILE_SELECTOR.type && negatedSelector.action == SINGLE_FILE_SELECTOR.action && negatedSelector.name == SINGLE_FILE_SELECTOR.name) {
|
|
|
+ selector.splice(selectorIndex, 1);
|
|
|
+ }
|
|
|
selectorIndex--;
|
|
|
+ } else {
|
|
|
+ imageTagFound = simpleSelector.type == "tag" && simpleSelector.name == "img";
|
|
|
+ if (!imageTagFound) {
|
|
|
+ selectorIndex--;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if (imageTagFound) {
|
|
|
- simpleSelector.name = "svg";
|
|
|
- selector.splice(selectorIndex + 1, 0, SINGLE_FILE_SELECTOR);
|
|
|
- return selector;
|
|
|
+ if (imageTagFound) {
|
|
|
+ simpleSelector.name = "svg";
|
|
|
+ selector.splice(selectorIndex + 1, 0, SINGLE_FILE_SELECTOR);
|
|
|
+ return selector;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|