|
|
@@ -151,7 +151,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
|
|
|
function getFontsInfo(cssRules, fontsInfo) {
|
|
|
cssRules.forEach(cssRule => {
|
|
|
- if (cssRule.type == "Atrule" && cssRule.name == "media") {
|
|
|
+ if (cssRule.type == "Atrule" && cssRule.name == "media" && cssRule.block) {
|
|
|
getFontsInfo(cssRule.block.children, fontsInfo);
|
|
|
} else if (cssRule.type == "Rule") {
|
|
|
const fontFamilyNames = getFontFamilyNames(cssRule.block);
|
|
|
@@ -176,7 +176,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
const removedRules = [];
|
|
|
for (let cssRule = cssRules.head; cssRule; cssRule = cssRule.next) {
|
|
|
const ruleData = cssRule.data;
|
|
|
- if (ruleData.type == "Atrule" && ruleData.name == "media") {
|
|
|
+ if (ruleData.type == "Atrule" && ruleData.name == "media" && ruleData.block) {
|
|
|
filterUnusedFonts(ruleData.block.children, declaredFonts, unusedFonts, filteredUsedFonts, docContent);
|
|
|
} else if (ruleData.type == "Atrule" && ruleData.name == "font-face") {
|
|
|
const fontFamily = getFontFamily(getPropertyValue(ruleData, "font-family"));
|
|
|
@@ -214,7 +214,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
const removedRules = [];
|
|
|
for (let cssRule = cssRules.head; cssRule; cssRule = cssRule.next) {
|
|
|
const ruleData = cssRule.data;
|
|
|
- if (ruleData.type == "Atrule" && ruleData.name == "media") {
|
|
|
+ if (ruleData.type == "Atrule" && ruleData.name == "media" && ruleData.block && ruleData.prelude) {
|
|
|
const mediaText = cssTree.generate(ruleData.prelude);
|
|
|
processFontFaceRules(ruleData.block.children, fontsDetails, mediaText, stats);
|
|
|
} else if (ruleData.type == "Atrule" && ruleData.name == "font-face" && (media.includes("all") || media.includes("screen"))) {
|
|
|
@@ -295,7 +295,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
const findPreviousComma = node => {
|
|
|
for (; node && !(node.data.type == "Operator" && node.data.value == ","); node = node.prev);
|
|
|
return node;
|
|
|
- }
|
|
|
+ };
|
|
|
for (let node = font.data.value.children.tail; node && (node.data.type != "WhiteSpace" || findPreviousComma(node)); node = node.prev) {
|
|
|
if (node.data.type == "Operator" && node.data.value == "," && familyName) {
|
|
|
fontFamilyNames.push(getFontFamily(familyName));
|
|
|
@@ -313,7 +313,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
|
|
|
function getFontsDetails(doc, cssRules, fontsDetails) {
|
|
|
cssRules.forEach(cssRule => {
|
|
|
- if (cssRule.type == "Atrule" && cssRule.name == "media") {
|
|
|
+ if (cssRule.type == "Atrule" && cssRule.name == "media" && cssRule.block) {
|
|
|
getFontsDetails(doc, cssRule.block.children, fontsDetails);
|
|
|
} else {
|
|
|
if (cssRule.type == "Atrule" && cssRule.name == "font-face") {
|
|
|
@@ -371,7 +371,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
|
|
|
function getPseudoElementsContent(cssRules) {
|
|
|
return cssRules.toArray().map(cssRule => {
|
|
|
- if (cssRule.type == "Atrule" && cssRule.name == "media") {
|
|
|
+ if (cssRule.type == "Atrule" && cssRule.name == "media" && cssRule.block) {
|
|
|
return getPseudoElementsContent(cssRule.block.children);
|
|
|
} else if (cssRule.type == "Rule") {
|
|
|
const selector = cssTree.generate(cssRule.prelude); // TODO use OM
|