|
|
@@ -899,43 +899,40 @@ this.singlefile.lib.core = this.singlefile.lib.core || (() => {
|
|
|
}
|
|
|
|
|
|
async resolveStylesheetURLs() {
|
|
|
- const options = {
|
|
|
- maxResourceSize: this.options.maxResourceSize,
|
|
|
- maxResourceSizeEnabled: this.options.maxResourceSizeEnabled,
|
|
|
- url: this.options.url,
|
|
|
- charset: this.charset,
|
|
|
- compressCSS: this.options.compressCSS,
|
|
|
- updatedResources: this.options.updatedResources,
|
|
|
- rootDocument: this.options.rootDocument,
|
|
|
- frameId: this.options.windowId,
|
|
|
- resourceReferrer: this.options.resourceReferrer
|
|
|
- };
|
|
|
- await Promise.all(Array.from(this.doc.querySelectorAll("style, link[rel*=stylesheet]"))
|
|
|
- .map(async element => {
|
|
|
- let mediaText;
|
|
|
- if (element.media) {
|
|
|
- mediaText = element.media.toLowerCase();
|
|
|
- }
|
|
|
- const stylesheetInfo = { mediaText };
|
|
|
- if (element.closest("[" + SHADOW_MODE_ATTRIBUTE_NAME + "]")) {
|
|
|
- stylesheetInfo.scoped = true;
|
|
|
- }
|
|
|
- if (element.tagName.toLowerCase() == "link") {
|
|
|
- if (element.charset) {
|
|
|
- options.charset = element.charset;
|
|
|
- }
|
|
|
- }
|
|
|
- await processElement(element, stylesheetInfo, this.stylesheets, this.baseURI, options, this.workStyleElement);
|
|
|
- }));
|
|
|
- if (options.rootDocument) {
|
|
|
- const newResources = Object.keys(options.updatedResources).filter(url => options.updatedResources[url].type == "stylesheet" && !options.updatedResources[url].retrieved).map(url => options.updatedResources[url]);
|
|
|
+ await Promise.all(Array.from(this.doc.querySelectorAll("style, link[rel*=stylesheet]")).map(async element => {
|
|
|
+ const options = {
|
|
|
+ maxResourceSize: this.options.maxResourceSize,
|
|
|
+ maxResourceSizeEnabled: this.options.maxResourceSizeEnabled,
|
|
|
+ url: this.options.url,
|
|
|
+ charset: this.charset,
|
|
|
+ compressCSS: this.options.compressCSS,
|
|
|
+ updatedResources: this.options.updatedResources,
|
|
|
+ rootDocument: this.options.rootDocument,
|
|
|
+ frameId: this.options.windowId,
|
|
|
+ resourceReferrer: this.options.resourceReferrer
|
|
|
+ };
|
|
|
+ let mediaText;
|
|
|
+ if (element.media) {
|
|
|
+ mediaText = element.media.toLowerCase();
|
|
|
+ }
|
|
|
+ const stylesheetInfo = { mediaText };
|
|
|
+ if (element.closest("[" + SHADOW_MODE_ATTRIBUTE_NAME + "]")) {
|
|
|
+ stylesheetInfo.scoped = true;
|
|
|
+ }
|
|
|
+ if (element.tagName == "LINK" && element.charset) {
|
|
|
+ options.charset = element.charset;
|
|
|
+ }
|
|
|
+ await processElement(element, stylesheetInfo, this.stylesheets, this.baseURI, options, this.workStyleElement);
|
|
|
+ }));
|
|
|
+ if (this.options.rootDocument) {
|
|
|
+ const newResources = Object.keys(this.options.updatedResources).filter(url => this.options.updatedResources[url].type == "stylesheet" && !this.options.updatedResources[url].retrieved).map(url => this.options.updatedResources[url]);
|
|
|
await Promise.all(newResources.map(async resource => {
|
|
|
resource.retrieved = true;
|
|
|
const stylesheetInfo = {};
|
|
|
const element = this.doc.createElement("style");
|
|
|
this.doc.body.appendChild(element);
|
|
|
element.textContent = resource.content;
|
|
|
- await processElement(element, stylesheetInfo, this.stylesheets, this.baseURI, options, this.workStyleElement);
|
|
|
+ await processElement(element, stylesheetInfo, this.stylesheets, this.baseURI, this.options, this.workStyleElement);
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
@@ -964,7 +961,7 @@ this.singlefile.lib.core = this.singlefile.lib.core || (() => {
|
|
|
|
|
|
async function getStylesheetContent(element, baseURI, options, workStyleElement) {
|
|
|
let content;
|
|
|
- if (element.tagName.toLowerCase() == "link") {
|
|
|
+ if (element.tagName == "LINK") {
|
|
|
content = await ProcessorHelper.resolveLinkStylesheetURLs(element.href, baseURI, options, workStyleElement);
|
|
|
} else {
|
|
|
content = await ProcessorHelper.resolveImportURLs(element.textContent, baseURI, options, workStyleElement);
|