"use strict";
exports.__esModule = true;
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _componentOrElement = _interopRequireDefault(require("prop-types-extra/lib/componentOrElement"));
var _react = _interopRequireDefault(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _WaitForContainer = _interopRequireDefault(require("./WaitForContainer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
/**
* The `` component renders its children into a new "subtree" outside of current component hierarchy.
* You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.
* The children of `` component will be appended to the `container` specified.
*/
var Portal =
/*#__PURE__*/
function (_React$Component) {
_inheritsLoose(Portal, _React$Component);
function Portal() {
return _React$Component.apply(this, arguments) || this;
}
var _proto = Portal.prototype;
_proto.render = function render() {
var _this = this;
return this.props.children ? _react.default.createElement(_WaitForContainer.default, {
container: this.props.container,
onContainerResolved: this.props.onRendered
}, function (container) {
return _reactDom.default.createPortal(_this.props.children, container);
}) : null;
};
return Portal;
}(_react.default.Component);
Portal.displayName = 'Portal';
Portal.propTypes = {
/**
* A Node, Component instance, or function that returns either. The `container` will have the Portal children
* appended to it.
*/
container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),
onRendered: _propTypes.default.func
};
var _default = Portal;
exports.default = _default;
module.exports = exports.default;