Skip to content

Commit 3c3f31b

Browse files
committed
removed excess keyframes that are chained and @Atrule:8 data
1 parent 5ff70e2 commit 3c3f31b

File tree

3 files changed

+81
-15
lines changed

3 files changed

+81
-15
lines changed

Recipe.min.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -935,12 +935,18 @@ void function() { try {
935935
let keyframe = rule.cssRules[index];
936936
var atrulesUsageForKeyframeOfSelector = atrulesUsageForSelector.keyframes;
937937

938-
if(keyframe.keyText) {
939-
if(!atrulesUsageForKeyframeOfSelector[keyframe.keyText]) {
940-
atrulesUsageForKeyframeOfSelector[keyframe.keyText] = {"count": 1};
938+
if(!keyframe.keyText) {
939+
continue;
940+
}
941+
942+
var frames = keyframe.keyText.split(', ');
943+
944+
for (let frame of frames) {
945+
if(!atrulesUsageForKeyframeOfSelector[frame]) {
946+
atrulesUsageForKeyframeOfSelector[frame] = { "count" : 1 };
941947
} else {
942-
var keyframeCount = atrulesUsageForKeyframeOfSelector[keyframe.keyText].count;
943-
atrulesUsageForKeyframeOfSelector[keyframe.keyText].count = keyframeCount + 1;
948+
var keyframeCount = atrulesUsageForKeyframeOfSelector[frame].count;
949+
atrulesUsageForKeyframeOfSelector[frame].count = keyframeCount + 1;
944950
}
945951
}
946952
}
@@ -1455,6 +1461,20 @@ void function() { try {
14551461
continue;
14561462
}
14571463

1464+
if(ruleBody.selector) {
1465+
try {
1466+
var selectorText = CssPropertyValuesAnalyzer.cleanSelectorText(ruleBody.selectorText);
1467+
var matchedElements = [].slice.call(document.querySelectorAll(selectorText));
1468+
1469+
if (matchedElements.length == 0) {
1470+
continue;
1471+
}
1472+
} catch (ex) {
1473+
console.warn(ex.stack||("Invalid selector: "+selectorText+" -- via "+ruleBody.selectorText));
1474+
continue;
1475+
}
1476+
}
1477+
14581478
let cssText = ' ' + style.cssText.toLowerCase();
14591479

14601480
for (var i = style.length; i--;) {
@@ -1781,6 +1801,8 @@ void function() { try {
17811801
delete cssUsageRules[key];
17821802
}
17831803
}
1804+
1805+
delete CSSUsageResults.atrules["@atrule:8"]; // delete duplicated data from atrule:7, keyframe
17841806
}
17851807
}();
17861808

cssUsage.src.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -935,12 +935,18 @@ void function() { try {
935935
let keyframe = rule.cssRules[index];
936936
var atrulesUsageForKeyframeOfSelector = atrulesUsageForSelector.keyframes;
937937

938-
if(keyframe.keyText) {
939-
if(!atrulesUsageForKeyframeOfSelector[keyframe.keyText]) {
940-
atrulesUsageForKeyframeOfSelector[keyframe.keyText] = {"count": 1};
938+
if(!keyframe.keyText) {
939+
continue;
940+
}
941+
942+
var frames = keyframe.keyText.split(', ');
943+
944+
for (let frame of frames) {
945+
if(!atrulesUsageForKeyframeOfSelector[frame]) {
946+
atrulesUsageForKeyframeOfSelector[frame] = { "count" : 1 };
941947
} else {
942-
var keyframeCount = atrulesUsageForKeyframeOfSelector[keyframe.keyText].count;
943-
atrulesUsageForKeyframeOfSelector[keyframe.keyText].count = keyframeCount + 1;
948+
var keyframeCount = atrulesUsageForKeyframeOfSelector[frame].count;
949+
atrulesUsageForKeyframeOfSelector[frame].count = keyframeCount + 1;
944950
}
945951
}
946952
}
@@ -1455,6 +1461,20 @@ void function() { try {
14551461
continue;
14561462
}
14571463

1464+
if(ruleBody.selector) {
1465+
try {
1466+
var selectorText = CssPropertyValuesAnalyzer.cleanSelectorText(ruleBody.selectorText);
1467+
var matchedElements = [].slice.call(document.querySelectorAll(selectorText));
1468+
1469+
if (matchedElements.length == 0) {
1470+
continue;
1471+
}
1472+
} catch (ex) {
1473+
console.warn(ex.stack||("Invalid selector: "+selectorText+" -- via "+ruleBody.selectorText));
1474+
continue;
1475+
}
1476+
}
1477+
14581478
let cssText = ' ' + style.cssText.toLowerCase();
14591479

14601480
for (var i = style.length; i--;) {
@@ -1781,6 +1801,8 @@ void function() { try {
17811801
delete cssUsageRules[key];
17821802
}
17831803
}
1804+
1805+
delete CSSUsageResults.atrules["@atrule:8"]; // delete duplicated data from atrule:7, keyframe
17841806
}
17851807
}();
17861808

src/cssUsage.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -438,12 +438,18 @@ void function() { try {
438438
let keyframe = rule.cssRules[index];
439439
var atrulesUsageForKeyframeOfSelector = atrulesUsageForSelector.keyframes;
440440

441-
if(keyframe.keyText) {
442-
if(!atrulesUsageForKeyframeOfSelector[keyframe.keyText]) {
443-
atrulesUsageForKeyframeOfSelector[keyframe.keyText] = {"count": 1};
441+
if(!keyframe.keyText) {
442+
continue;
443+
}
444+
445+
var frames = keyframe.keyText.split(', ');
446+
447+
for (let frame of frames) {
448+
if(!atrulesUsageForKeyframeOfSelector[frame]) {
449+
atrulesUsageForKeyframeOfSelector[frame] = { "count" : 1 };
444450
} else {
445-
var keyframeCount = atrulesUsageForKeyframeOfSelector[keyframe.keyText].count;
446-
atrulesUsageForKeyframeOfSelector[keyframe.keyText].count = keyframeCount + 1;
451+
var keyframeCount = atrulesUsageForKeyframeOfSelector[frame].count;
452+
atrulesUsageForKeyframeOfSelector[frame].count = keyframeCount + 1;
447453
}
448454
}
449455
}
@@ -958,6 +964,20 @@ void function() { try {
958964
continue;
959965
}
960966

967+
if(ruleBody.selector) {
968+
try {
969+
var selectorText = CssPropertyValuesAnalyzer.cleanSelectorText(ruleBody.selectorText);
970+
var matchedElements = [].slice.call(document.querySelectorAll(selectorText));
971+
972+
if (matchedElements.length == 0) {
973+
continue;
974+
}
975+
} catch (ex) {
976+
console.warn(ex.stack||("Invalid selector: "+selectorText+" -- via "+ruleBody.selectorText));
977+
continue;
978+
}
979+
}
980+
961981
let cssText = ' ' + style.cssText.toLowerCase();
962982

963983
for (var i = style.length; i--;) {
@@ -1284,6 +1304,8 @@ void function() { try {
12841304
delete cssUsageRules[key];
12851305
}
12861306
}
1307+
1308+
delete CSSUsageResults.atrules["@atrule:8"]; // delete duplicated data from atrule:7, keyframe
12871309
}
12881310
}();
12891311

0 commit comments

Comments
 (0)