UNPKG

@ozen-ui/kit

Version:

React component library

28 lines (27 loc) 1.6 kB
import { __assign, __rest } from "tslib"; import React from 'react'; import { createPortal } from 'react-dom'; import { useTheme } from '../../hooks/useTheme'; import { useThemeSettings } from '../../hooks/useThemeSettings'; import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef'; import { OzenProvider, useOzenSSR } from '../OzenProvider'; import { ThemeProvider, useTheme as useOldTheme } from '../ThemeProvider'; import { PORTAL_BASE_DEFAULT_TAG, PORTAL_BASE_DEFAULT_DISABLE_PORTAL, } from './constants'; export var PortalBase = polymorphicComponentWithRef(function (_a, ref) { var _b = _a.disablePortal, disablePortal = _b === void 0 ? PORTAL_BASE_DEFAULT_DISABLE_PORTAL : _b, _c = _a.as, Tag = _c === void 0 ? PORTAL_BASE_DEFAULT_TAG : _c, container = _a.container, children = _a.children, other = __rest(_a, ["disablePortal", "as", "container", "children"]); var oldTheme = useOldTheme(); var theme = useTheme(); var isUseNewProvider = useThemeSettings().isUseNewProvider; var ssr = useOzenSSR(); if (disablePortal) { return (React.createElement(Tag, __assign({}, other, { ref: ref }), children)); } if (!container) { return null; } if (!isUseNewProvider) { return createPortal(React.createElement(ThemeProvider, __assign({ theme: oldTheme, as: Tag }, other, { ref: ref }), children), container); } return createPortal(React.createElement(OzenProvider, __assign({ theme: theme, as: Tag, ssr: ssr.config }, other, { ref: ref }), children), container); }); PortalBase.displayName = 'PortalBase';