UNPKG

@jlalmes/goober

Version:

A less than 1KB css-in-js solution

2 lines (1 loc) 2.22 kB
let e={data:""},t=t=>"undefined"!=typeof window?((t?t.querySelector("#_goober"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:t||e,r=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(})/g,s=/\/\*[^]*?\*\/|\s\s+|\n/g,o=(e,t)=>{let r,s="",l="",a="";for(let n in e){let c=e[n];"object"==typeof c?(r=t?t.replace(/([^,])+/g,e=>n.replace(/([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+" "+t:t)):n,l+="@"==n[0]?"f"==n[1]?o(c,n):n+"{"+o(c,"k"==n[1]?"":t)+"}":o(c,r)):"@"==n[0]&&"i"==n[1]?s=n+" "+c+";":(n=n.replace(/[A-Z]/g,"-$&").toLowerCase(),a+=o.p?o.p(n,c):n+":"+c+";")}return a[0]?(r=t?t+"{"+a+"}":a,s+r+l):s+l},l={},a=e=>{let t="";for(let r in e)t+=r+("object"==typeof e[r]?a(e[r]):e[r]);return t},n=(e,t,n,c,p)=>{let i="object"==typeof e?a(e):e,u=l[i]||(l[i]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return"go"+r})(i));if(!l[u]){let t="object"==typeof e?e:(e=>{let t,o=[{}];for(;t=r.exec(e.replace(s,""));)t[4]&&o.shift(),t[3]?o.unshift(o[0][t[3]]=o[0][t[3]]||{}):t[4]||(o[0][t[1]]=t[2]);return o[0]})(e);l[u]=o(p?{["@keyframes "+u]:t}:t,n?"":"."+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(l[u],t,c),u},c=(e,t,r)=>e.reduce((e,s,l)=>{let a=t[l];if(a&&a.call){let e=a(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;a=t?"."+t:e&&"object"==typeof e?e.props?"":o(e,""):e}return e+s+(null==a?"":a)},"");function p(e){let r=this||{},s=e.call?e(r.p):e;return n(s.unshift?s.raw?c(s,[].slice.call(arguments,1),r.p):s.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):s,t(r.target),r.g,r.o,r.k)}let i,u,f=p.bind({g:1}),d=p.bind({k:1});exports.css=p,exports.extractCss=e=>{let r=t(e),s=r.data;return r.data="",s},exports.glob=f,exports.keyframes=d,exports.setup=function(e,t,r,s){o.p=t,i=e,exports.useTheme=r,u=s},exports.styled=function(e,t){let r=this||{};return function(){let s=arguments;function o(l,a){let n=Object.assign({},l),c=n.className||o.className;r.p=Object.assign({theme:exports.useTheme&&exports.useTheme()},n),r.o=/ *go\d+/.test(c),n.className=p.apply(r,s)+(c?" "+c:""),t&&(n.ref=a);let f=n.as||e;return u&&f[0]&&u(n),i(f,n)}return t?t(o):o}};