insert-css.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. // https://github.com/substack/insert-css
  7. var containers = []; // will store container HTMLElement references
  8. var styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}
  9. var usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';
  10. function createStyleElement() {
  11. var styleElement = document.createElement('style');
  12. styleElement.setAttribute('type', 'text/css');
  13. return styleElement;
  14. } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
  15. function insertCss(css, options) {
  16. options = options || {};
  17. if (css === undefined) {
  18. throw new Error(usage);
  19. }
  20. var position = options.prepend === true ? 'prepend' : 'append';
  21. var container = options.container !== undefined ? options.container : document.querySelector('head');
  22. var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries
  23. if (containerId === -1) {
  24. containerId = containers.push(container) - 1;
  25. styleElements[containerId] = {};
  26. } // try to get the correponding container + position styleElement, create it otherwise
  27. var styleElement;
  28. if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {
  29. styleElement = styleElements[containerId][position];
  30. } else {
  31. styleElement = styleElements[containerId][position] = createStyleElement();
  32. if (position === 'prepend') {
  33. // toggled by jack, violate csp
  34. //container.insertBefore(styleElement, container.childNodes[0]);
  35. } else {
  36. container.appendChild(styleElement);
  37. }
  38. } // strip potential UTF-8 BOM if css was read from a file
  39. if (css.charCodeAt(0) === 0xfeff) {
  40. css = css.substr(1, css.length);
  41. } // actually add the stylesheet
  42. if (styleElement.styleSheet) {
  43. // toggled by jack, violate csp
  44. //styleElement.styleSheet.cssText += css;
  45. } else {
  46. styleElement.textContent += css;
  47. }
  48. return styleElement;
  49. }
  50. var _default = insertCss;
  51. exports["default"] = _default;