UNPKG

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