UNPKG

1.5 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
9
10var _react = _interopRequireDefault(require("react"));
11
12var _reactDom = _interopRequireDefault(require("react-dom"));
13
14var _propTypes = _interopRequireDefault(require("prop-types"));
15
16var _utils = require("./utils");
17
18var propTypes = {
19 children: _propTypes.default.node.isRequired,
20 node: _propTypes.default.any
21};
22
23var Portal = /*#__PURE__*/function (_React$Component) {
24 (0, _inheritsLoose2.default)(Portal, _React$Component);
25
26 function Portal() {
27 return _React$Component.apply(this, arguments) || this;
28 }
29
30 var _proto = Portal.prototype;
31
32 _proto.componentWillUnmount = function componentWillUnmount() {
33 if (this.defaultNode) {
34 document.body.removeChild(this.defaultNode);
35 }
36
37 this.defaultNode = null;
38 };
39
40 _proto.render = function render() {
41 if (!_utils.canUseDOM) {
42 return null;
43 }
44
45 if (!this.props.node && !this.defaultNode) {
46 this.defaultNode = document.createElement('div');
47 document.body.appendChild(this.defaultNode);
48 }
49
50 return /*#__PURE__*/_reactDom.default.createPortal(this.props.children, this.props.node || this.defaultNode);
51 };
52
53 return Portal;
54}(_react.default.Component);
55
56Portal.propTypes = propTypes;
57var _default = Portal;
58exports.default = _default;
\No newline at end of file