single-file-core 1.0.37 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/single-file-core.js +12 -12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "single-file-core",
3
- "version": "1.0.37",
3
+ "version": "1.0.38",
4
4
  "description": "SingleFile Core",
5
5
  "author": "Gildas Lormeau",
6
6
  "license": "AGPL-3.0-or-later",
@@ -887,10 +887,10 @@ class Processor {
887
887
 
888
888
  insertFonts() {
889
889
  if (this.options.fonts && this.options.fonts.length) {
890
- let stylesheetContent = "";
890
+ let firstStylesheet = this.doc.querySelector("style, link[rel=stylesheet]"), previousStyleElement;
891
891
  this.options.fonts.forEach(fontData => {
892
892
  if (fontData["font-family"] && fontData.src) {
893
- stylesheetContent += "@font-face{";
893
+ let stylesheetContent = "@font-face{";
894
894
  let stylesContent = "";
895
895
  Object.keys(fontData).forEach(fontStyle => {
896
896
  if (stylesContent) {
@@ -899,18 +899,18 @@ class Processor {
899
899
  stylesContent += fontStyle + ":" + fontData[fontStyle];
900
900
  });
901
901
  stylesheetContent += stylesContent + "}";
902
+ const styleElement = this.doc.createElement("style");
903
+ styleElement.textContent = stylesheetContent;
904
+ if (previousStyleElement) {
905
+ previousStyleElement.insertAdjacentElement("afterend", styleElement);
906
+ } else if (firstStylesheet) {
907
+ firstStylesheet.parentElement.insertBefore(styleElement, firstStylesheet);
908
+ } else {
909
+ this.doc.head.appendChild(styleElement);
910
+ }
911
+ previousStyleElement = styleElement;
902
912
  }
903
913
  });
904
- if (stylesheetContent) {
905
- const styleElement = this.doc.createElement("style");
906
- styleElement.textContent = stylesheetContent;
907
- const existingStyleElement = this.doc.querySelector("style");
908
- if (existingStyleElement) {
909
- existingStyleElement.parentElement.insertBefore(styleElement, existingStyleElement);
910
- } else {
911
- this.doc.head.insertBefore(styleElement, this.doc.head.firstChild);
912
- }
913
- }
914
914
  }
915
915
  }
916
916