"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) { // 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;