@loke/ui
Version:
2 lines (1 loc) • 636 B
JavaScript
import{Primitive}from"@loke/ui/primitive";import{useLayoutEffect}from"@loke/ui/use-layout-effect";import{forwardRef,useState}from"react";import ReactDOM from"react-dom";import{jsx}from"react/jsx-runtime";var PORTAL_NAME="Portal",Portal=forwardRef((props,forwardedRef)=>{let{container:containerProp,...portalProps}=props,[mounted,setMounted]=useState(!1);useLayoutEffect(()=>setMounted(!0),[]);let container=containerProp||mounted&&globalThis?.document?.body;return container?ReactDOM.createPortal(jsx(Primitive.div,{...portalProps,ref:forwardedRef}),container):null});Portal.displayName=PORTAL_NAME;var Root=Portal;export{Root,Portal};