UNPKG

@nex-ui/react

Version:

🎉 A beautiful, modern, and reliable React component library.

38 lines (34 loc) • 968 B
"use client"; 'use strict'; var reactDom = require('react-dom'); var react = require('react'); var hooks = require('@nex-ui/hooks'); var utils = require('@nex-ui/utils'); const Portal = (props)=>{ const { children, container } = props; const [mountNode, setMountNode] = react.useState(null); const onMount = hooks.useEvent(()=>props.onMount?.()); const onUnmount = hooks.useEvent(()=>props.onUnmount?.()); react.useEffect(()=>{ let node = container; if (utils.isFunction(node)) { node = node(); } setMountNode(node || document.body); }, [ container ]); react.useEffect(()=>{ if (mountNode) { onMount(); return onUnmount; } }, [ mountNode, onMount, onUnmount ]); return mountNode ? /*#__PURE__*/ reactDom.createPortal(children, mountNode) : null; }; Portal.displayName = 'Portal'; exports.Portal = Portal;