@centarius/state-hoc
Version:
Centarius State HOC
46 lines (35 loc) • 1.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
var _core = require("centarius/core");
var centariusHoc = function centariusHoc(_ref) {
var _ref$LoadingComponent = _ref.LoadingComponent,
LoadingComponent = _ref$LoadingComponent === void 0 ? null : _ref$LoadingComponent,
_ref$ErrorComponent = _ref.ErrorComponent,
ErrorComponent = _ref$ErrorComponent === void 0 ? null : _ref$ErrorComponent;
return function (WrappedComponent) {
var CentariusStateWrapper = function CentariusStateWrapper(props) {
return _react.default.createElement(_core.CentariusConsumer, null, function (state) {
if (state.loading && !!LoadingComponent) {
return _react.default.createElement(LoadingComponent, (0, _extends2.default)({}, props, state));
}
if (state.error && !!ErrorComponent) {
return _react.default.createElement(ErrorComponent, (0, _extends2.default)({}, props, state));
}
return _react.default.createElement(WrappedComponent, (0, _extends2.default)({}, props, state));
});
};
var componentName = WrappedComponent.displayName || WrappedComponent.name;
CentariusStateWrapper.ErrorComponent = ErrorComponent;
CentariusStateWrapper.LoadingComponent = LoadingComponent;
CentariusStateWrapper.displayName = "withCentariusStateHoc(" + componentName + ")";
return (0, _hoistNonReactStatics.default)(CentariusStateWrapper, WrappedComponent);
};
};
var _default = centariusHoc;
exports.default = _default;
module.exports = exports.default;