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