@centarius/state-hoc
Version:
Centarius State HOC
34 lines (29 loc) • 1.48 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import React from 'react';
import hoistStatics from 'hoist-non-react-statics';
import { CentariusConsumer } from '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.createElement(CentariusConsumer, null, function (state) {
if (state.loading && !!LoadingComponent) {
return React.createElement(LoadingComponent, _extends({}, props, state));
}
if (state.error && !!ErrorComponent) {
return React.createElement(ErrorComponent, _extends({}, props, state));
}
return React.createElement(WrappedComponent, _extends({}, props, state));
});
};
var componentName = WrappedComponent.displayName || WrappedComponent.name;
CentariusStateWrapper.ErrorComponent = ErrorComponent;
CentariusStateWrapper.LoadingComponent = LoadingComponent;
CentariusStateWrapper.displayName = "withCentariusStateHoc(" + componentName + ")";
return hoistStatics(CentariusStateWrapper, WrappedComponent);
};
};
export default centariusHoc;