Repository URL to install this package:
|
Version:
1.2.19 ▾
|
"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;