UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

40 lines (36 loc) 1.7 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_ssr = require('../../utils/ssr.cjs'); const require_utils_index = require('../../utils/index.cjs'); const require_environment_provider = require('../../core/system/environment-provider.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); let react_jsx_runtime = require("react/jsx-runtime"); react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime); let react_dom = require("react-dom"); react_dom = require_rolldown_runtime.__toESM(react_dom); //#region src/components/portal/portal.tsx const getPortalNode = (node) => { const rootNode = node?.getRootNode(); if ((0, require_utils_index.utils_exports.isShadowRoot)(rootNode)) return rootNode; return (0, require_utils_index.utils_exports.getDocument)(node).body; }; /** * `Portal` is a component that renders elements outside of the current `DOM` hierarchy. * * @see https://yamada-ui.com/docs/components/portal */ const Portal = ({ children, containerRef: ref, disabled }) => { const [target, setTarget] = (0, react.useState)(ref?.current); const ssr = require_ssr.useSsr(); const { getRootNode } = require_environment_provider.useEnvironment(); (0, react.useEffect)(() => { setTarget(() => ref?.current); }, [ref]); if (ssr || disabled) return children; const container = target ?? getPortalNode(getRootNode()); return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: react.Children.map(children, (child) => (0, react_dom.createPortal)(child, container)) }); }; //#endregion exports.Portal = Portal; //# sourceMappingURL=portal.cjs.map