1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- "use strict";
- /* istanbul ignore next */
- var replaceText = function replaceText() {
- var textStore = [];
- return function replace(index, replacement) {
- textStore[index] = replacement;
- return textStore.filter(Boolean).join("\n");
- };
- }();
- /* istanbul ignore next */
- function apply(styleElement, index, remove, obj) {
- var css;
- if (remove) {
- css = "";
- } else {
- css = "";
- if (obj.supports) {
- css += "@supports (".concat(obj.supports, ") {");
- }
- if (obj.media) {
- css += "@media ".concat(obj.media, " {");
- }
- var needLayer = typeof obj.layer !== "undefined";
- if (needLayer) {
- css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
- }
- css += obj.css;
- if (needLayer) {
- css += "}";
- }
- if (obj.media) {
- css += "}";
- }
- if (obj.supports) {
- css += "}";
- }
- }
- // For old IE
- /* istanbul ignore if */
- if (styleElement.styleSheet) {
- styleElement.styleSheet.cssText = replaceText(index, css);
- } else {
- var cssNode = document.createTextNode(css);
- var childNodes = styleElement.childNodes;
- if (childNodes[index]) {
- styleElement.removeChild(childNodes[index]);
- }
- if (childNodes.length) {
- styleElement.insertBefore(cssNode, childNodes[index]);
- } else {
- styleElement.appendChild(cssNode);
- }
- }
- }
- var singletonData = {
- singleton: null,
- singletonCounter: 0
- };
- /* istanbul ignore next */
- function domAPI(options) {
- if (typeof document === "undefined") return {
- update: function update() {},
- remove: function remove() {}
- };
- // eslint-disable-next-line no-undef,no-use-before-define
- var styleIndex = singletonData.singletonCounter++;
- var styleElement =
- // eslint-disable-next-line no-undef,no-use-before-define
- singletonData.singleton || (
- // eslint-disable-next-line no-undef,no-use-before-define
- singletonData.singleton = options.insertStyleElement(options));
- return {
- update: function update(obj) {
- apply(styleElement, styleIndex, false, obj);
- },
- remove: function remove(obj) {
- apply(styleElement, styleIndex, true, obj);
- }
- };
- }
- module.exports = domAPI;
|