UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

43 lines (42 loc) 1.37 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); function _export(target, all) { for (var name in all) Object.defineProperty(target, name, { enumerable: true, get: all[name], }); } _export(exports, { Portal: function () { return Portal; }, PortalContainerContext: function () { return PortalContainerContext; }, usePortalTo: function () { return usePortalTo; }, }); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const _reactdom = /*#__PURE__*/ _interop_require_wildcard._( require('react-dom'), ); const _useIsClient = require('../hooks/useIsClient.js'); const PortalContainerContext = _react.createContext(null); const Portal = (props) => { let { portal = true, children } = props; let isClient = (0, _useIsClient.useIsClient)(); let portalTo = usePortalTo(portal); if (!isClient) return null; return portalTo ? _reactdom.createPortal(children, portalTo) : children; }; const usePortalTo = (portal) => { let portalContainer = _react.useContext(PortalContainerContext); if ('boolean' == typeof portal) return portal ? portalContainer : null; let portalTo = 'function' == typeof portal.to ? portal.to() : portal.to; return portalTo ?? portalContainer; };