UNPKG

nice-ui

Version:

React design system, components, and utilities

33 lines (32 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Portal = void 0; const React = require("react"); const react_dom_1 = require("react-dom"); const context_1 = require("./context"); const PortalState_1 = require("./PortalState"); const Portal = ({ children, parent }) => { const parentState = (0, context_1.usePortal)(); // biome-ignore lint: hook dependency list manually managed const state = React.useMemo(() => { const state = new PortalState_1.PortalState(); state.parent = parentState; return state; }, [parent]); const [el] = React.useState(() => document.createElement('div')); // biome-ignore lint: hook dependency list manually managed React.useLayoutEffect(() => { const container = parent || document.body; container.appendChild(el); state.addRoot(el); return () => { try { state.delRoot(el); container.removeChild(el); } catch { } }; }, [parent]); return React.createElement(context_1.context.Provider, { value: state }, (0, react_dom_1.createPortal)(children, el)); }; exports.Portal = Portal;