@filbert-js/core
Version:
A light weight(~1KB) css-in-js solution(framework)🎨
2 lines (1 loc) • 2.6 kB
JavaScript
import{ThemeContext as e}from"@filbert-js/theming";import{TYPES_CSS as r,TYPES_GLOBAL as t,IS_STYLED_COMPONENT as n,TYPE as a,TYPES_KEYFRAMES as o,RAW as c,LABEL_PREFIX as u,SOURCE_ORDER as f}from"@filbert-js/types";import i from"react";import{__sheet as l}from"@filbert-js/style-sheet-context";var s=0,v=i.memo(function(e){var r=e.styles;return function(e,r){l.createGlobalStyles(e,r),i.useEffect(function(){l.createGlobalStyles(e,r)},[r,e]),i.useEffect(function(){return function(){return l.removeStyles(e,t)}},[e])}(i.useState(function(){return t+"-"+ ++s})[0],r),null}),m={};function p(e,t){return void 0===e&&(e=r),function(){var r,u=function(e){for(var r=this,t=[],c=arguments.length-1;c-- >0;)t[c]=arguments[c+1];var u=[];return[e.reduce(function(e,c,f){return""+e+function(e,r,t){var c=t;return t[a]===o?(e.push(t),c=t):t[n]?c="."+t.label:"function"==typeof t&&(c=t(r)),c}(u,r,t[f-1])+c}),u]}.apply(t,arguments),f=u[0],i=u[1],l=e+"-"+function(e){var r=m[e]||0;if(!r){for(var t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;m[e]=r}return r}(f);return(r={})[a]=e,r[c]=[f,i],r.toString=function(){return l},r}}var y=1;function b(t,a){return void 0===a&&(a={}),function(){var o=arguments,s=i.forwardRef(function(u,v){var m,y=i.useContext(e),b=p(a.label,Object.assign({},u,{theme:y})).apply(null,o),h=b[c],d=h[0],S=h[1],g=b.toString();!function(e,t,n,a,o){var c=i.useRef();e.forEach(function(e){return l.createKeyframes(e)}),l.createStyles(t,n,a,o),c.current=t,i.useEffect(function(){var e=t;return function(){e!==c.current&&l.removeStyles(e,r)}},[t]),i.useEffect(function(){return function(){return l.removeStyles(c.current,r)}},[])}(S,g,d,u[f],s.label);var j=u.className;void 0===j&&(j="");var E=u.as,O=u.children,N=function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&-1===r.indexOf(n)&&(t[n]=e[n]);return t}(u,["className",String(f),"as","children"]),x=Object.assign(((m={className:[s.label,g,j].join(" ").trim()})[f]=t[n]?g:void 0,m.ref=v,m),N);return i.createElement(E||t,x,O)});return s[n]=!0,s.label=a.label?a.label:""+u+y,y++,s}}var h=p(r),d=p(o);function S(){var e=arguments[1]||{},r=e.css,t=e.className;void 0===t&&(t="");var n=function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&-1===r.indexOf(n)&&(t[n]=e[n]);return t}(e,["css","className"]),o=l;if(r){var u=r[c],f=u[0];u[1].forEach(function(e){return o.createKeyframes(e)}),o.createStyles(r.toString(),f,void 0,r[a]),n.className=(r+" "+t).trim(),arguments[1]=n}return i.createElement.apply(null,arguments)}export{v as Global,b as styled,d as keyframes,h as css,S as jsx};