Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / SSR / async-component / AsyncComponentProvider.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _react = _interopRequireDefault(require("react"));

var _propTypes = _interopRequireDefault(require("prop-types"));

var _createAsyncContext = _interopRequireDefault(require("./createAsyncContext"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

class AsyncComponentProvider extends _react.default.Component {
  componentWillMount() {
    this.asyncContext = this.props.asyncContext || (0, _createAsyncContext.default)();
    this.rehydrateState = this.props.rehydrateState;
  }

  getChildContext() {
    return {
      asyncComponents: {
        getNextId: this.asyncContext.getNextId,
        resolved: this.asyncContext.resolved,
        shouldRehydrate: id => {
          const resolved = this.rehydrateState.resolved[id];
          delete this.rehydrateState.resolved[id];
          return resolved;
        }
      }
    };
  }

  render() {
    return _react.default.Children.only(this.props.children);
  }

}

AsyncComponentProvider.propTypes = {
  children: _propTypes.default.node.isRequired,
  asyncContext: _propTypes.default.shape({
    getNextId: _propTypes.default.func.isRequired,
    resolved: _propTypes.default.func.isRequired,
    getState: _propTypes.default.func.isRequired
  }),
  rehydrateState: _propTypes.default.shape({
    resolved: _propTypes.default.object
  })
};
AsyncComponentProvider.defaultProps = {
  asyncContext: undefined,
  rehydrateState: {
    resolved: {}
  }
};
AsyncComponentProvider.childContextTypes = {
  asyncComponents: _propTypes.default.shape({
    getNextId: _propTypes.default.func.isRequired,
    resolved: _propTypes.default.func.isRequired,
    shouldRehydrate: _propTypes.default.func.isRequired
  }).isRequired
};
var _default = AsyncComponentProvider;
exports.default = _default;