@mic-rexjs/usecases-react 1.7.8 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>P,useUseCase:()=>C});var e=u(893),r=u(156),t=u.n(r);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,u,i,a=[],c=!0,f=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=u.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,r)||a(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var f=u(749),s=function(e){return c((0,r.useState)(e),1)[0]},l=function(e,r){var t=e.length;if(t!==r.length)return!1;for(var n=0;n<t;n++)if(e[n]!==r[n])return!1;return!0};function y(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==n(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===n(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var p=u(112),v=["stateless","watch","onChange","options"];function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach((function(r){y(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var m=function(e,r){var t=e.indexOf(r);-1!==t&&e.splice(t,1)};function h(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var O=function(e,r){return"object"===n(e)&&null!==e&&Object.hasOwn(e,r)},g=function e(r,t,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=c(n.match(/^([^.]+)\.(.+)$/)||[],3),f=a[1],s=void 0===f?n:f,l=a[2],y=void 0===l?"":l,p=O(r,s),v=O(t,s),b=[].concat(h(u),[s]);if(p||v){var d=p?r[s]:i,m=v?t[s]:i;if(y)return void e(d,m,y,o,b);if(d===m)return;o(d,m,b)}else if(!/^\d+^/.test(s))for(var g=Array.isArray(r)?r:[],j=Array.isArray(t)?t:[],S=g.length,w=j.length,x=Math.max(S,w),C=0;C<x;C++)e(g[C],j[C],n,o,[].concat(h(u),["".concat(C)]))},j=function(e,r,t){for(var n=function(){var e=c(u[o],2),n=e[0],i=e[1];g(t,r,n,(function(e,n,o){i({fieldPaths:o,newEntity:r,oldEntity:t,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()},S=new Map,w=(0,r.createContext)({}),x=function(e,r){for(var t={},n={},o=function(){var e=c(i[u],2),o=e[0],a=e[1];n[o]=function(){for(var e=t[o],n=r(),u=arguments.length,i=new Array(u),c=0;c<u;c++)i[c]=arguments[c];if(e&&n){var f=e.parameters,s=e.returnValue;if(l(f,i))return s}var y=a.apply(void 0,i);return n&&(t[o]={parameters:i,returnValue:y}),y}},u=0,i=Object.entries(e);u<i.length;u++)o();return n},C=function(e,o,u,i){var a,y,b,h,O,g,C,P=s("function"==typeof o),_=(P?u:o)||{},E=_.stateless,A=c((0,r.useState)(P&&!E?e:null),2),R=A[0],k=A[1],M=(b=(P?i:u)||[],h=(0,r.useRef)(0),O=(0,r.useRef)([]),g=O.current,C=l(b,g),O.current=b,h.current+=C?0:1,h.current),I=((a=(0,r.useRef)(!0)).current=!0,(0,r.useEffect)((function(){a.current=!1})),a),T=(y=P?o:e,c((0,r.useState)((function(){return y})),1)[0]),F=T,U=function(e,t){return s((function(){var n=S;if(n.has(e))return n.get(e);if(t)return t;var o=(0,r.createContext)({});return n.set(e,o),o}))}(F,P?null:w),q=(0,r.useContext)(U),D=q.entity,L=q.reducers,z=void 0===L?null:L,V=q.optionsRefCollection,$="object"===n(V),N=P||$,B=function(e,r,t){var n=(0,f.useLatest)(t),o=(0,f.useCreation)((function(){return e?[]:r}),[r,e]),u=(0,f.usePrevious)(o);return(0,f.useCreation)((function(){u&&m(u,n),o.push(n)}),[n,o,u]),(0,f.useUnmount)((function(){m(o,n)})),o}(P||!$,V||null,_),G=(0,f.useCreation)((function(){return P?function(e,r,t){return t?"function"==typeof r?r():r:e}(R,e,E):D}),[P,D,E,R,e]),W=(0,f.useMemoizedFn)((function(e,r){E||k(e),function(e,r,t){for(var n=e.length;n>0;n--){var o=e[n-1].current;if(o){var u=o.onChange,i=o.watch;i&&j(i,r,t),null==u||u(r,t)}}}(B,e,r)})),Y=(0,f.useMemoizedFn)((function(){return function(e,r,t,n){var o=(0,p.entityReducerUseCase)().createEntityReducers,u=(t.stateless,t.watch,t.onChange,t.options);return o(e,r,d(d(d({},function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(t,v)),u),{},{onChange:n,onGenerate:function(e,r){return r}}))}(G,F,_,W)})),H=(0,f.useMemoizedFn)((function(){return T(_)})),J=(0,f.useCreation)((function(){return P?Y():null}),[P,M,Y]),K=(0,f.useCreation)((function(){return J||z||{}}),[J,z]),Q=(0,f.useCreation)((function(){return N?{}:H()}),[N,M,H]),X=function(e,r,n,o){var u=(0,f.useCreation)((function(){return{entity:r,reducers:n,optionsRefCollection:o}}),[r,n,o]),i=(0,f.useLatest)(u);return s((function(){return function(r){var n=r.children,o=e.Provider;return t().createElement(o,{value:i.current},n)}}))}(U,G,K,B),Z=(0,f.useMemoizedFn)((function(e,r){return[e,x(r,(function(){return I.current})),P?X:null]}));return(0,f.useCreation)((function(){return N?Z(G,K):Q}),[N,G,K,Q,Z])},P=function(t){var n=t.usecase,o=t.watch,u=t.onChange;return C(n,{watch:o,onChange:u}),(0,e.jsx)(r.Fragment,{})}})(),i})()));
2
+ !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>P,useUseCase:()=>C});var e=u(893),r=u(156),t=u.n(r);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,u,i,a=[],c=!0,f=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=u.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,r)||a(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var f=u(749),s=function(e){return c((0,r.useState)(e),1)[0]},l=function(e,r){var t=e.length;if(t!==r.length)return!1;for(var n=0;n<t;n++)if(e[n]!==r[n])return!1;return!0};function y(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==n(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===n(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var p=u(112),v=["stateless","watch","onChange","options"];function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach((function(r){y(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var m=function(e,r){var t=e.indexOf(r);-1!==t&&e.splice(t,1)};function h(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var O=function(e,r){return"object"===n(e)&&null!==e&&Object.hasOwn(e,r)},g=function e(r,t,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=c(n.match(/^([^.]+)\.(.+)$/)||[],3),f=a[1],s=void 0===f?n:f,l=a[2],y=void 0===l?"":l,p=O(r,s),v=O(t,s),b=[].concat(h(u),[s]);if(p||v){var d=p?r[s]:i,m=v?t[s]:i;if(y)return void e(d,m,y,o,b);if(d===m)return;o(d,m,b)}else if(!/^\d+^/.test(s))for(var g=Array.isArray(r)?r:[],j=Array.isArray(t)?t:[],w=g.length,S=j.length,x=Math.max(w,S),C=0;C<x;C++)e(g[C],j[C],n,o,[].concat(h(u),["".concat(C)]))},j=function(e,r,t){for(var n=function(){var e=c(u[o],2),n=e[0],i=e[1];g(t,r,n,(function(e,n,o){i({fieldPaths:o,newEntity:r,oldEntity:t,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()},w=new Map,S=(0,r.createContext)({}),x=function(e,r){for(var t={},n={},o=function(){var e=c(i[u],2),o=e[0],a=e[1];n[o]=function(){for(var e=t[o],n=r(),u=arguments.length,i=new Array(u),c=0;c<u;c++)i[c]=arguments[c];if(e&&n){var f=e.parameters,s=e.returnValue;if(l(f,i))return s}var y=a.apply(void 0,i);return n&&(t[o]={parameters:i,returnValue:y}),y}},u=0,i=Object.entries(e);u<i.length;u++)o();return n},C=function(e,o,u,i){var a,y,b,h,O,g,C,P=s("function"==typeof o),_=(P?u:o)||{},E=_.stateless,A=c((0,r.useState)(P&&!E?e:null),2),R=A[0],k=A[1],M=(b=(P?i:u)||[],h=(0,r.useRef)(0),O=(0,r.useRef)([]),g=O.current,C=l(b,g),O.current=b,h.current+=C?0:1,h.current),I=((a=(0,r.useRef)(!0)).current=!0,(0,r.useEffect)((function(){a.current=!1})),a),T=(y=P?o:e,c((0,r.useState)((function(){return y})),1)[0]),F=T,U=function(e,t){return s((function(){var n=w;if(n.has(e))return n.get(e);if(t)return t;var o=(0,r.createContext)({});return n.set(e,o),o}))}(F,P?null:S),q=(0,r.useContext)(U),D=q.entity,L=q.reducers,z=void 0===L?null:L,V=q.optionsRefCollection,$="object"===n(V),N=P||$,B=function(e,r,t){var n=(0,f.useLatest)(t),o=(0,f.useCreation)((function(){return e?[]:r}),[r,e]),u=(0,f.usePrevious)(o);return(0,f.useCreation)((function(){u&&m(u,n),o.push(n)}),[n,o,u]),(0,f.useUnmount)((function(){m(o,n)})),o}(P||!$,V||null,_),G=(0,f.useCreation)((function(){return P?function(e,r,t){return t?"function"==typeof r?r():r:e}(R,e,E):D}),[P,D,E,R,e]),W=(0,f.useMemoizedFn)((function(e,r){E||k(e),function(e,r,t){for(var n=e.length;n>0;n--){var o=e[n-1].current;if(o){var u=o.onChange,i=o.watch;i&&j(i,r,t),null==u||u(r,t)}}}(B,e,r)})),Y=(0,f.useMemoizedFn)((function(){return function(e,r,t,n){var o=(0,p.entityReducerUseCase)().createEntityReducers,u=(t.stateless,t.watch,t.onChange,t.options);return o(e,r,d(d(d({},function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(t,v)),u),{},{onChange:n,onGenerate:function(e,r){return r}}))}(G,F,_,W)})),H=(0,f.useMemoizedFn)((function(){return T(_)})),J=(0,f.useCreation)((function(){return P?Y():null}),[P,M,Y]),K=(0,f.useCreation)((function(){return J||z||{}}),[J,z]),Q=(0,f.useCreation)((function(){return N?{}:H()}),[N,M,H]),X=function(e,r,n,o){var u=(0,f.useCreation)((function(){return{entity:r,reducers:n,optionsRefCollection:o}}),[r,n,o]),i=(0,f.useLatest)(u);return s((function(){return function(r){var n=r.children,o=r.with,u=void 0===o?[]:o,a=e.Provider;return t().createElement(a,{value:i.current},u.reduceRight((function(e,r){return t().createElement(r,{},e)}),n))}}))}(U,G,K,B),Z=(0,f.useMemoizedFn)((function(e,r){return[e,x(r,(function(){return I.current})),P?X:null]}));return(0,f.useCreation)((function(){return N?Z(G,K):Q}),[N,G,K,Q,Z])},P=function(t){var n=t.usecase,o=t.watch,u=t.onChange;return C(n,{watch:o,onChange:u}),(0,e.jsx)(r.Fragment,{})}})(),i})()));
@@ -7,11 +7,13 @@ export const useProvider = (context, entity, reducers, optionsRefCollection) =>
7
7
  }, [entity, reducers, optionsRefCollection]);
8
8
  const contextValueRef = useLatest(contextValue);
9
9
  return useConstant(() => {
10
- return ({ children }) => {
10
+ return ({ children, with: withProviders = [] }) => {
11
11
  const { Provider: ContextProvider } = context;
12
12
  return React.createElement(ContextProvider, {
13
13
  value: contextValueRef.current,
14
- }, children);
14
+ }, withProviders.reduceRight((currentChildren, withProvider) => {
15
+ return React.createElement(withProvider, {}, currentChildren);
16
+ }, children));
15
17
  };
16
18
  });
17
19
  };
@@ -1,3 +1,7 @@
1
1
  /// <reference types="react" />
2
- export interface UseCaseProvider extends React.FC<React.PropsWithChildren> {
2
+ export interface UseCaseProviderProps {
3
+ children?: React.ReactNode;
4
+ with?: UseCaseProvider[];
5
+ }
6
+ export interface UseCaseProvider extends React.FC<UseCaseProviderProps> {
3
7
  }
@@ -1110,6 +1110,41 @@ describe('useUseCase', () => {
1110
1110
  oldValue: EXT_1,
1111
1111
  });
1112
1112
  });
1113
+ test('multiple `Provider` should work', () => {
1114
+ const onNumberMount = jest.fn();
1115
+ const onStringMount = jest.fn();
1116
+ const onBooleanMount = jest.fn();
1117
+ const numberUseCase = () => {
1118
+ return objectUseCase();
1119
+ };
1120
+ const stringUseCase = () => {
1121
+ return objectUseCase();
1122
+ };
1123
+ const booleanUseCase = () => {
1124
+ return objectUseCase();
1125
+ };
1126
+ const TestChildComponent = () => {
1127
+ const [numberValue] = useUseCase(numberUseCase);
1128
+ const [stringValue] = useUseCase(stringUseCase);
1129
+ const [booleanValue] = useUseCase(booleanUseCase);
1130
+ useMount(() => {
1131
+ onNumberMount(numberValue);
1132
+ onStringMount(stringValue);
1133
+ onBooleanMount(booleanValue);
1134
+ });
1135
+ return null;
1136
+ };
1137
+ const TestParentComponent = () => {
1138
+ const [, , NumberProvider] = useUseCase(11, numberUseCase);
1139
+ const [, , StringProvider] = useUseCase('hello', stringUseCase);
1140
+ const [, , BooleanProvider] = useUseCase(true, booleanUseCase);
1141
+ return (_jsx(NumberProvider, { with: [StringProvider, BooleanProvider], children: _jsx(TestChildComponent, {}) }));
1142
+ };
1143
+ render(_jsx(TestParentComponent, {}));
1144
+ expect(onNumberMount).toHaveBeenCalledWith(11);
1145
+ expect(onStringMount).toHaveBeenCalledWith('hello');
1146
+ expect(onBooleanMount).toHaveBeenCalledWith(true);
1147
+ });
1113
1148
  });
1114
1149
  describe('`useUseCase` should work with 1+ arguments on non-entity mode', () => {
1115
1150
  test('`entity` should equal `defaultFile`', () => {
@@ -19,11 +19,15 @@ var useProvider = function useProvider(context, entity, reducers, optionsRefColl
19
19
  var contextValueRef = (0, _ahooks.useLatest)(contextValue);
20
20
  return (0, _useConstant.useConstant)(function () {
21
21
  return function (_ref) {
22
- var children = _ref.children;
22
+ var children = _ref.children,
23
+ _ref$with = _ref["with"],
24
+ withProviders = _ref$with === void 0 ? [] : _ref$with;
23
25
  var ContextProvider = context.Provider;
24
26
  return _react["default"].createElement(ContextProvider, {
25
27
  value: contextValueRef.current
26
- }, children);
28
+ }, withProviders.reduceRight(function (currentChildren, withProvider) {
29
+ return _react["default"].createElement(withProvider, {}, currentChildren);
30
+ }, children));
27
31
  };
28
32
  });
29
33
  };
@@ -1465,6 +1465,56 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1465
1465
  oldValue: EXT_1
1466
1466
  });
1467
1467
  });
1468
+ (0, _globals.test)('multiple `Provider` should work', function () {
1469
+ var onNumberMount = _globals.jest.fn();
1470
+ var onStringMount = _globals.jest.fn();
1471
+ var onBooleanMount = _globals.jest.fn();
1472
+ var numberUseCase = function numberUseCase() {
1473
+ return (0, _usecases.objectUseCase)();
1474
+ };
1475
+ var stringUseCase = function stringUseCase() {
1476
+ return (0, _usecases.objectUseCase)();
1477
+ };
1478
+ var booleanUseCase = function booleanUseCase() {
1479
+ return (0, _usecases.objectUseCase)();
1480
+ };
1481
+ var TestChildComponent = function TestChildComponent() {
1482
+ var _useUseCase16 = (0, _.useUseCase)(numberUseCase),
1483
+ _useUseCase17 = (0, _slicedToArray2["default"])(_useUseCase16, 1),
1484
+ numberValue = _useUseCase17[0];
1485
+ var _useUseCase18 = (0, _.useUseCase)(stringUseCase),
1486
+ _useUseCase19 = (0, _slicedToArray2["default"])(_useUseCase18, 1),
1487
+ stringValue = _useUseCase19[0];
1488
+ var _useUseCase20 = (0, _.useUseCase)(booleanUseCase),
1489
+ _useUseCase21 = (0, _slicedToArray2["default"])(_useUseCase20, 1),
1490
+ booleanValue = _useUseCase21[0];
1491
+ (0, _ahooks.useMount)(function () {
1492
+ onNumberMount(numberValue);
1493
+ onStringMount(stringValue);
1494
+ onBooleanMount(booleanValue);
1495
+ });
1496
+ return null;
1497
+ };
1498
+ var TestParentComponent = function TestParentComponent() {
1499
+ var _useUseCase22 = (0, _.useUseCase)(11, numberUseCase),
1500
+ _useUseCase23 = (0, _slicedToArray2["default"])(_useUseCase22, 3),
1501
+ NumberProvider = _useUseCase23[2];
1502
+ var _useUseCase24 = (0, _.useUseCase)('hello', stringUseCase),
1503
+ _useUseCase25 = (0, _slicedToArray2["default"])(_useUseCase24, 3),
1504
+ StringProvider = _useUseCase25[2];
1505
+ var _useUseCase26 = (0, _.useUseCase)(true, booleanUseCase),
1506
+ _useUseCase27 = (0, _slicedToArray2["default"])(_useUseCase26, 3),
1507
+ BooleanProvider = _useUseCase27[2];
1508
+ return (0, _jsxRuntime.jsx)(NumberProvider, {
1509
+ "with": [StringProvider, BooleanProvider],
1510
+ children: (0, _jsxRuntime.jsx)(TestChildComponent, {})
1511
+ });
1512
+ };
1513
+ (0, _react.render)((0, _jsxRuntime.jsx)(TestParentComponent, {}));
1514
+ (0, _globals.expect)(onNumberMount).toHaveBeenCalledWith(11);
1515
+ (0, _globals.expect)(onStringMount).toHaveBeenCalledWith('hello');
1516
+ (0, _globals.expect)(onBooleanMount).toHaveBeenCalledWith(true);
1517
+ });
1468
1518
  });
1469
1519
  (0, _globals.describe)('`useUseCase` should work with 1+ arguments on non-entity mode', function () {
1470
1520
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
@@ -1518,8 +1568,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1518
1568
  (0, _globals.test)('reducer call should not be cached if component is at rendering phase', function () {
1519
1569
  var buttonText = 'button';
1520
1570
  var CacheTestComponent = function CacheTestComponent() {
1521
- var _useUseCase16 = (0, _.useUseCase)(mathUseCase),
1522
- subtraction = _useUseCase16.subtraction;
1571
+ var _useUseCase28 = (0, _.useUseCase)(mathUseCase),
1572
+ subtraction = _useUseCase28.subtraction;
1523
1573
  var update = (0, _ahooks.useUpdate)();
1524
1574
  var onClick = function onClick() {
1525
1575
  update();
@@ -1542,8 +1592,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1542
1592
  (0, _globals.test)('reducer call should not be cached if component is not at rendering phase', function () {
1543
1593
  var buttonText = 'button';
1544
1594
  var CacheTestComponent = function CacheTestComponent() {
1545
- var _useUseCase17 = (0, _.useUseCase)(mathUseCase),
1546
- subtraction = _useUseCase17.subtraction;
1595
+ var _useUseCase29 = (0, _.useUseCase)(mathUseCase),
1596
+ subtraction = _useUseCase29.subtraction;
1547
1597
  var onClick = function onClick() {
1548
1598
  subtraction(5, 3);
1549
1599
  };
@@ -1571,8 +1621,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1571
1621
  var count = 0;
1572
1622
  var buttonText = 'button';
1573
1623
  var StringUseCaseTestComponent = function StringUseCaseTestComponent() {
1574
- var _useUseCase18 = (0, _.useUseCase)(mathUseCase),
1575
- subtraction = _useUseCase18.subtraction;
1624
+ var _useUseCase30 = (0, _.useUseCase)(mathUseCase),
1625
+ subtraction = _useUseCase30.subtraction;
1576
1626
  var update = (0, _ahooks.useUpdate)();
1577
1627
  subtraction(5, count++);
1578
1628
  var onUpdate = function onUpdate() {
@@ -1734,9 +1784,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1734
1784
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1735
1785
  };
1736
1786
  var B = function B() {
1737
- var _useUseCase19 = (0, _.useUseCase)(defaultFile, mockUseCase),
1738
- _useUseCase20 = (0, _slicedToArray2["default"])(_useUseCase19, 3),
1739
- Provider = _useUseCase20[2];
1787
+ var _useUseCase31 = (0, _.useUseCase)(defaultFile, mockUseCase),
1788
+ _useUseCase32 = (0, _slicedToArray2["default"])(_useUseCase31, 3),
1789
+ Provider = _useUseCase32[2];
1740
1790
  return (0, _jsxRuntime.jsx)(Provider, {
1741
1791
  children: (0, _jsxRuntime.jsx)(A, {})
1742
1792
  });
@@ -1756,9 +1806,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1756
1806
  });
1757
1807
  };
1758
1808
  var A = function A() {
1759
- var _useUseCase21 = (0, _.useUseCase)(stringUseCase),
1760
- _useUseCase22 = (0, _slicedToArray2["default"])(_useUseCase21, 2),
1761
- add = _useUseCase22[1].add;
1809
+ var _useUseCase33 = (0, _.useUseCase)(stringUseCase),
1810
+ _useUseCase34 = (0, _slicedToArray2["default"])(_useUseCase33, 2),
1811
+ add = _useUseCase34[1].add;
1762
1812
  var update = (0, _ahooks.useUpdate)();
1763
1813
  var onClick = function onClick() {
1764
1814
  update();
@@ -1770,9 +1820,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1770
1820
  });
1771
1821
  };
1772
1822
  var B = function B() {
1773
- var _useUseCase23 = (0, _.useUseCase)('', stringUseCase),
1774
- _useUseCase24 = (0, _slicedToArray2["default"])(_useUseCase23, 3),
1775
- Provider = _useUseCase24[2];
1823
+ var _useUseCase35 = (0, _.useUseCase)('', stringUseCase),
1824
+ _useUseCase36 = (0, _slicedToArray2["default"])(_useUseCase35, 3),
1825
+ Provider = _useUseCase36[2];
1776
1826
  return (0, _jsxRuntime.jsx)(Provider, {
1777
1827
  children: (0, _jsxRuntime.jsx)(A, {})
1778
1828
  });
@@ -1796,9 +1846,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1796
1846
  });
1797
1847
  };
1798
1848
  var A = function A() {
1799
- var _useUseCase25 = (0, _.useUseCase)(stringUseCase),
1800
- _useUseCase26 = (0, _slicedToArray2["default"])(_useUseCase25, 2),
1801
- add = _useUseCase26[1].add;
1849
+ var _useUseCase37 = (0, _.useUseCase)(stringUseCase),
1850
+ _useUseCase38 = (0, _slicedToArray2["default"])(_useUseCase37, 2),
1851
+ add = _useUseCase38[1].add;
1802
1852
  var onClick = function onClick() {
1803
1853
  add('x');
1804
1854
  };
@@ -1812,9 +1862,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1812
1862
  });
1813
1863
  };
1814
1864
  var B = function B() {
1815
- var _useUseCase27 = (0, _.useUseCase)('', stringUseCase),
1816
- _useUseCase28 = (0, _slicedToArray2["default"])(_useUseCase27, 3),
1817
- Provider = _useUseCase28[2];
1865
+ var _useUseCase39 = (0, _.useUseCase)('', stringUseCase),
1866
+ _useUseCase40 = (0, _slicedToArray2["default"])(_useUseCase39, 3),
1867
+ Provider = _useUseCase40[2];
1818
1868
  return (0, _jsxRuntime.jsx)(Provider, {
1819
1869
  children: (0, _jsxRuntime.jsx)(A, {})
1820
1870
  });
@@ -1842,11 +1892,11 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1842
1892
  });
1843
1893
  };
1844
1894
  var A = function A() {
1845
- var _useUseCase29 = (0, _.useUseCase)(stringUseCase),
1846
- _useUseCase30 = (0, _slicedToArray2["default"])(_useUseCase29, 2),
1847
- _useUseCase30$ = _useUseCase30[1],
1848
- add = _useUseCase30$.add,
1849
- setEntity = _useUseCase30$.setEntity;
1895
+ var _useUseCase41 = (0, _.useUseCase)(stringUseCase),
1896
+ _useUseCase42 = (0, _slicedToArray2["default"])(_useUseCase41, 2),
1897
+ _useUseCase42$ = _useUseCase42[1],
1898
+ add = _useUseCase42$.add,
1899
+ setEntity = _useUseCase42$.setEntity;
1850
1900
  var update = (0, _ahooks.useUpdate)();
1851
1901
  add(addedText);
1852
1902
  var onSet = function onSet() {
@@ -1866,9 +1916,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1866
1916
  });
1867
1917
  };
1868
1918
  var B = function B() {
1869
- var _useUseCase31 = (0, _.useUseCase)('', stringUseCase),
1870
- _useUseCase32 = (0, _slicedToArray2["default"])(_useUseCase31, 3),
1871
- Provider = _useUseCase32[2];
1919
+ var _useUseCase43 = (0, _.useUseCase)('', stringUseCase),
1920
+ _useUseCase44 = (0, _slicedToArray2["default"])(_useUseCase43, 3),
1921
+ Provider = _useUseCase44[2];
1872
1922
  return (0, _jsxRuntime.jsx)(Provider, {
1873
1923
  children: (0, _jsxRuntime.jsx)(A, {})
1874
1924
  });
@@ -1902,12 +1952,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1902
1952
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1903
1953
  };
1904
1954
  var B = function B() {
1905
- var _useUseCase33 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1955
+ var _useUseCase45 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1906
1956
  onChange: onParentPathChange
1907
1957
  }),
1908
- _useUseCase34 = (0, _slicedToArray2["default"])(_useUseCase33, 3),
1909
- setPath = _useUseCase34[1].setPath,
1910
- Provider = _useUseCase34[2];
1958
+ _useUseCase46 = (0, _slicedToArray2["default"])(_useUseCase45, 3),
1959
+ setPath = _useUseCase46[1].setPath,
1960
+ Provider = _useUseCase46[2];
1911
1961
  var onFirstClick = function onFirstClick() {
1912
1962
  setPath(PATH_1);
1913
1963
  onChange = onSecondChange;
@@ -1969,12 +2019,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1969
2019
  return (0, _jsxRuntime.jsx)(_react2.Fragment, {});
1970
2020
  };
1971
2021
  var C = function C() {
1972
- var _useUseCase35 = (0, _.useUseCase)(defaultFile, fileUseCase, {
2022
+ var _useUseCase47 = (0, _.useUseCase)(defaultFile, fileUseCase, {
1973
2023
  onChange: onChangeC
1974
2024
  }),
1975
- _useUseCase36 = (0, _slicedToArray2["default"])(_useUseCase35, 3),
1976
- setPath = _useUseCase36[1].setPath,
1977
- Provider = _useUseCase36[2];
2025
+ _useUseCase48 = (0, _slicedToArray2["default"])(_useUseCase47, 3),
2026
+ setPath = _useUseCase48[1].setPath,
2027
+ Provider = _useUseCase48[2];
1978
2028
  var onFirstClick = function onFirstClick() {
1979
2029
  setPath(PATH_1);
1980
2030
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "1.7.8",
3
+ "version": "1.8.0",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "keywords": [