UNPKG

@mic-rexjs/usecases-react

Version:

React-based solution for use usecases of Clean Architecture

51 lines (50 loc) 3.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useReducers = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _useConstantReducers2 = require("../useConstantReducers"); var _useContextualItem = require("../useContextualItem"); var _usecases = require("@mic-rexjs/usecases"); var _ahooks = require("ahooks"); var _react = require("react"); var _Statuses = require("../../enums/Statuses"); var _methodUseCase = require("../../usecases/methodUseCase"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var _excluded = ["watch", "onChange", "options"]; var useReducers = exports.useReducers = function useReducers(usecase, context, store, statuses, options) { var deps = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : []; var optionsRef = (0, _ahooks.useLatest)(options); var contextValue = (0, _react.useContext)(context); var _ref = contextValue || {}, _ref$reducers = _ref.reducers, contextReducers = _ref$reducers === void 0 ? null : _ref$reducers; var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(_methodUseCase.methodUseCase), captureCalls = _useConstantReducers.captureCalls; var reducers = (0, _useContextualItem.useContextualItem)(contextReducers, statuses, function () { var opts = captureCalls(options, function (key, callArgs) { var _optionsRef$current$k2; var _optionsRef$current$k, _optionsRef$current; return (_optionsRef$current$k = (_optionsRef$current = optionsRef.current)[key]) === null || _optionsRef$current$k === void 0 ? void 0 : (_optionsRef$current$k2 = _optionsRef$current$k).call.apply(_optionsRef$current$k2, [_optionsRef$current].concat((0, _toConsumableArray2["default"])(callArgs))); }); if ((statuses & _Statuses.Statuses.EntityEnabled) !== _Statuses.Statuses.EntityEnabled) { return usecase(opts); } var hookOptions = opts; var watch = hookOptions.watch, onChange = hookOptions.onChange, usecaseOptions = hookOptions.options, restUseCaseOptions = (0, _objectWithoutProperties2["default"])(hookOptions, _excluded); return (0, _usecases.createEntityReducers)(store, usecase, _objectSpread(_objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions), {}, { onGenerate: function onGenerate(newEntity, result) { return result; } })); }, deps); return reducers; };