UNPKG

@mic-rexjs/usecases-react

Version:

React-based solution for use usecases of Clean Architecture

34 lines (33 loc) 1.51 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useProvider = void 0; var _useConstantFn = require("../useConstantFn"); var _ahooks = require("ahooks"); var _react = _interopRequireDefault(require("react")); var _contextUseCase2 = require("../../usecases/contextUseCase"); var useProvider = exports.useProvider = function useProvider(statuses, context, store, reducers) { var entity = store.value; var contextValue = (0, _ahooks.useCreation)(function () { var _contextUseCase = (0, _contextUseCase2.contextUseCase)(), createContextValue = _contextUseCase.createContextValue; void entity; return createContextValue(store, reducers, statuses); }, [statuses, entity, store, reducers]); var contextValueRef = (0, _ahooks.useLatest)(contextValue); return (0, _useConstantFn.useConstantFn)(function (_ref) { var children = _ref.children, _ref$with = _ref["with"], withProviders = _ref$with === void 0 ? [] : _ref$with; var ContextProvider = context.Provider; var value = contextValueRef.current; var providers = Array.isArray(withProviders) ? withProviders : [withProviders]; return _react["default"].createElement(ContextProvider, { value: value }, providers.reduceRight(function (currentChildren, withProvider) { return _react["default"].createElement(withProvider, {}, currentChildren); }, children)); }); };