@ozen-ui/kit
Version:
React component library
28 lines (27 loc) • 1.6 kB
JavaScript
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';