UNPKG

@centarius/state-hoc

Version:

Centarius State HOC

34 lines (29 loc) 1.48 kB
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;