Dashboard sipadu mbip
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

WaitForContainer.js 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.default = void 0;
  4. var _propTypes = _interopRequireDefault(require("prop-types"));
  5. var _componentOrElement = _interopRequireDefault(require("prop-types-extra/lib/componentOrElement"));
  6. var _inDOM = _interopRequireDefault(require("dom-helpers/util/inDOM"));
  7. var _ownerDocument = _interopRequireDefault(require("dom-helpers/ownerDocument"));
  8. var _react = _interopRequireDefault(require("react"));
  9. var _reactDom = _interopRequireDefault(require("react-dom"));
  10. var _getContainer = _interopRequireDefault(require("./utils/getContainer"));
  11. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  12. function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
  13. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
  14. var propTypes = {
  15. /**
  16. * A Node, Component instance, or function that returns either. The `container` will have the Portal children
  17. * appended to it.
  18. */
  19. container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),
  20. onContainerResolved: _propTypes.default.func
  21. };
  22. var WaitForContainer =
  23. /*#__PURE__*/
  24. function (_React$Component) {
  25. _inheritsLoose(WaitForContainer, _React$Component);
  26. function WaitForContainer() {
  27. var _this;
  28. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  29. args[_key] = arguments[_key];
  30. }
  31. _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
  32. if (!_inDOM.default) return _assertThisInitialized(_this);
  33. var container = _this.props.container;
  34. if (typeof container === 'function') container = container();
  35. if (container && !_reactDom.default.findDOMNode(container)) {
  36. // The container is a React component that has not yet been rendered.
  37. // Don't set the container node yet.
  38. return _assertThisInitialized(_this);
  39. }
  40. _this.setContainer(container);
  41. return _this;
  42. }
  43. var _proto = WaitForContainer.prototype;
  44. _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
  45. if (nextProps.container !== this.props.container) {
  46. this.setContainer(nextProps.container);
  47. }
  48. };
  49. _proto.componentDidMount = function componentDidMount() {
  50. if (!this._container) {
  51. this.setContainer(this.props.container);
  52. this.forceUpdate(this.props.onContainerResolved);
  53. } else if (this.props.onContainerResolved) {
  54. this.props.onContainerResolved();
  55. }
  56. };
  57. _proto.componentWillUnmount = function componentWillUnmount() {
  58. this._container = null;
  59. };
  60. _proto.setContainer = function setContainer(container) {
  61. this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);
  62. };
  63. _proto.render = function render() {
  64. return this._container ? this.props.children(this._container) : null;
  65. };
  66. return WaitForContainer;
  67. }(_react.default.Component);
  68. WaitForContainer.propTypes = propTypes;
  69. var _default = WaitForContainer;
  70. exports.default = _default;
  71. module.exports = exports.default;