|
|
@@ -18,7 +18,7 @@
|
|
|
* along with SingleFile. If not, see <http://www.gnu.org/licenses/>.
|
|
|
*/
|
|
|
|
|
|
-/* global cssTree */
|
|
|
+/* global cssTree, docHelper */
|
|
|
|
|
|
this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
|
|
|
@@ -66,7 +66,7 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
stats.processed += cssRules.getSize();
|
|
|
stats.discarded += cssRules.getSize();
|
|
|
getFontsInfo(cssRules, fontsInfo);
|
|
|
- pseudoElementsContent += getPseudoElementsContent(cssRules);
|
|
|
+ pseudoElementsContent += getPseudoElementsContent(doc, cssRules);
|
|
|
});
|
|
|
styles.forEach(style => {
|
|
|
const fontFamilyNames = getFontFamilyNames(style);
|
|
|
@@ -377,14 +377,22 @@ this.fontsMinifier = this.fontsMinifier || (() => {
|
|
|
return fontWeights.find(weight => weight > fontWeight);
|
|
|
}
|
|
|
|
|
|
- function getPseudoElementsContent(cssRules) {
|
|
|
+ function getPseudoElementsContent(doc, cssRules) {
|
|
|
return cssRules.toArray().map(cssRule => {
|
|
|
if (cssRule.type == "Atrule" && cssRule.name == "media" && cssRule.block) {
|
|
|
- return getPseudoElementsContent(cssRule.block.children);
|
|
|
+ return getPseudoElementsContent(doc, cssRule.block.children);
|
|
|
} else if (cssRule.type == "Rule") {
|
|
|
const selector = cssTree.generate(cssRule.prelude); // TODO use OM
|
|
|
if (testPseudoElements(selector)) {
|
|
|
- return getPropertyValue(cssRule, "content");
|
|
|
+ const value = docHelper.removeQuotes(getPropertyValue(cssRule, "content") || "");
|
|
|
+ if (value) {
|
|
|
+ const styleElement = doc.createElement("style");
|
|
|
+ styleElement.textContent = "tmp { content:\"" + value + "\"}";
|
|
|
+ doc.documentElement.appendChild(styleElement);
|
|
|
+ let content = docHelper.removeQuotes(styleElement.sheet.cssRules[0].style.getPropertyValue("content"));
|
|
|
+ styleElement.remove();
|
|
|
+ return content;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}).join("");
|