@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
62 lines (46 loc) • 1.64 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var Portal = function Portal(_ref) {
var renderInto = _ref.renderInto,
children = _ref.children;
var _React$useState = React.useState(function () {
if (typeof window !== "undefined") {
return document.createElement("div");
}
return null;
}),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
el = _React$useState2[0];
var _React$useState3 = React.useState(function () {
if (typeof window !== "undefined") {
return renderInto && document.getElementById(renderInto) ? document.getElementById(renderInto) : document.body;
}
return null;
}),
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 1),
node = _React$useState4[0];
React.useLayoutEffect(function () {
if (node && el) {
node.appendChild(el);
}
return function () {
if (node && el) {
node.removeChild(el);
}
};
}, [el, node]);
if (typeof window !== "undefined" && el !== null) {
return /*#__PURE__*/_reactDom.default.createPortal(children, el);
}
return null;
};
var _default = Portal;
exports.default = _default;