@nex-ui/styled
Version:
Styled API for creating atomic, theme-aware component styling.
30 lines (27 loc) • 1.19 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { registerStyles, insertStyles } from '@emotion/utils';
import { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';
/* istanbul ignore file */ // fork from http://github.com/emotion-js/emotion/blob/main/packages/react/src/emotion-element.tsx
const isBrowser = typeof document !== 'undefined';
const Insertion = ({ cache, serialized, isStringTag })=>{
registerStyles(cache, serialized, isStringTag);
const rules = useInsertionEffectAlwaysWithSyncFallback(()=>insertStyles(cache, serialized, isStringTag));
if (!isBrowser && rules !== undefined) {
let serializedNames = serialized.name;
let { next } = serialized;
while(next !== undefined){
serializedNames += ` ${next.name}`;
next = next.next;
}
return /*#__PURE__*/ jsx("style", {
[`data-emotion`]: `${cache.key} ${serializedNames}`,
dangerouslySetInnerHTML: {
__html: rules
},
nonce: cache.sheet.nonce
});
}
return null;
};
Insertion.displayName = 'Insertion';
export { Insertion };