UNPKG

@suid/css

Version:

CSS render in JS.

37 lines (36 loc) 1.43 kB
import createStyleElement from "./createStyleElement"; import registerStyleElementUsage from "./registerStyleElementUsage"; import setStyleElementText from "./setStyleElementText"; const placeholderId = "suid-injectFirst"; function appendStyleElement(css, attributes, injectFirst) { if (Array.isArray(css)) css = css.join("\n"); const id = attributes?.["id"]; const head = document.head || document.getElementsByTagName("head")[0]; const prevElement = id && document.getElementById(id); if (prevElement && prevElement instanceof HTMLStyleElement) { setStyleElementText(prevElement, css); registerStyleElementUsage(prevElement); return prevElement; } else { if (prevElement) prevElement.remove(); const element = createStyleElement(css, attributes); registerStyleElementUsage(element); if (injectFirst) { let placeholderElement = head.querySelector(`#${placeholderId}`); if (!placeholderElement) { placeholderElement = document.createElement("style"); placeholderElement.setAttribute("id", placeholderId); head.prepend(placeholderElement); } head.insertBefore(element, placeholderElement); } else { head.appendChild(element); } return element; } } export default appendStyleElement;