@meonode/ui
Version:
A structured approach to component composition, direct CSS-first prop styling, built-in theming, smart prop handling (including raw property pass-through), and dynamic children.
3 lines (2 loc) • 1.35 kB
JavaScript
"use client";
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@emotion/react"),t=require("@emotion/cache"),n=require("../core.node.cjs"),o=require("next/navigation.js"),i=require("../util/server-emotion.util.cjs"),s=require("../util/server-theme.util.cjs");function a({children:a}){const[c]=e.useState(()=>{const e="undefined"==typeof window?i.getServerEmotionCache():t({key:"meonode-css"});return e.compat=!0,e}),[d]=e.useState(()=>new Set);return o.useServerInsertedHTML(()=>{const r=Object.keys(c.inserted).filter(e=>!d.has(e)&&"string"==typeof c.inserted[e]),t=i.consumeServerEmotionRules().filter(e=>!d.has(e.id)),n=s.consumeServerThemeVariablesCss(),o=n&&!d.has(n.id)?[n]:[];if(0===r.length&&0===t.length&&0===o.length)return null;r.forEach(e=>d.add(e)),t.forEach(e=>d.add(e.id)),o.forEach(e=>d.add(e.id));const a=Array.from(new Set([...r,...t.map(e=>e.id),...o.map(e=>e.id)])).sort(),u=new Map([...t,...o].map(e=>[e.id,e.cssText])),l=a.map(e=>{const r=u.get(e);if("string"==typeof r)return r;const t=c.inserted[e];return"string"==typeof t?t:""}).filter(Boolean).join(""),m=a.join(" ");return e.createElement("style",{"data-emotion":`${c.key} ${m}`,dangerouslySetInnerHTML:{__html:l}})}),n.Node(r.CacheProvider,{value:c,children:a}).render()}a.__meonodeAcceptsServerCss=!0,exports.default=a;