"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
Object.defineProperty(exports, "ClientOnlyPortal", {
    enumerable: true,
    get: function() {
        return ClientOnlyPortal;
    }
});
const _react = require("react");
const _reactdom = require("react-dom");
const _hooks = require("../../hooks");
// Полиморфная версия портала для рендера как на сервере, так и на клиенте.
// Позволяет избежать ошибок, связанных с гидрацией.
const ClientOnlyPortal = ({ children, providerFrame })=>{
    const ref = (0, _react.useRef)(null);
    const [mounted, setMounted] = (0, _react.useState)(false);
    (0, _hooks.useIsomorphicLayoutEffect)(()=>{
        setMounted(true);
        if (typeof providerFrame !== 'string' && providerFrame && providerFrame.current) {
            ref.current = providerFrame.current;
            return;
        }
        if (typeof providerFrame === 'string' && providerFrame !== 'document') {
            const containerElement = document.getElementById(providerFrame);
            if (!containerElement) {
                ref.current = document.body;
            }
            ref.current = containerElement;
            return;
        }
        ref.current = document.body;
    }, []);
    return mounted && ref.current ? /*#__PURE__*/ (0, _reactdom.createPortal)(children, ref.current) : null;
};
