UNPKG

@master/css-server

Version:

Generate Master CSS text from markup on the server

2 lines (1 loc) 1.04 kB
import d from"@master/css";import{HTMLElement as u}from"node-html-parser";import{HTMLElement as c}from"node-html-parser";function a(t,n){let e=n.getElementsByTagName("head")[0];if(e)e.appendChild(t);else{let r=n.getElementsByTagName("html")[0];r?(e=new c("head",{}),e.appendChild(t),r.childNodes.unshift(e)):n.appendChild(t)}}import{parse as p}from"node-html-parser";function o(t){if(!t)return;let n=[],e=p(t);return e.querySelectorAll("[class]").forEach(r=>{let s=r.getAttribute("class");s&&n.push(...s.split(" "))}),{classes:n,root:e}}function i(t,n){if(!t)return;let{classes:e,root:r}=o(t);if(!e.length)return{html:t,root:r,classes:e};let s=new d(n);e.forEach(m=>s.insert(m));let l=r.getElementById("master");return l?l.textContent=s.text:(l=new u("style",{id:"master"}),l.textContent=s.text,a(l,r)),{html:r.innerHTML,css:s,root:r,classes:e}}import g from"@master/css";function f(t,n){if(!t)return;let{classes:e}=o(t);if(!e.length)return;let r=new g(n);return e.forEach(s=>r.insert(s)),r}export{o as parseHTML,i as render,f as renderAsCSS};