@mic-rexjs/usecases-react 2.10.2 → 2.11.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.
Files changed (98) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.LICENSE.txt +4 -2
  3. package/es/components/SafeUseCaseFragment/index.js +1 -1
  4. package/es/components/UseCaseFragment/index.js +2 -2
  5. package/es/components/UseCaseFragment/types.d.ts +1 -1
  6. package/es/entities/matchPropertyFailedResult/types.d.ts +7 -0
  7. package/es/hooks/useArgumentTypes/index.d.ts +1 -1
  8. package/es/hooks/useArgumentTypes/index.js +3 -4
  9. package/es/hooks/useConstantEntityReducers/index.d.ts +3 -0
  10. package/es/hooks/useConstantEntityReducers/index.js +7 -0
  11. package/es/hooks/useConstantReducers/index.d.ts +3 -0
  12. package/es/hooks/useConstantReducers/index.js +6 -0
  13. package/es/hooks/useContext/index.d.ts +2 -2
  14. package/es/hooks/useContext/index.test.js +2 -2
  15. package/es/hooks/useContextualItem/index.d.ts +3 -2
  16. package/es/hooks/useContextualItem/index.js +18 -8
  17. package/es/hooks/useDepsKey/index.d.ts +2 -0
  18. package/es/hooks/useDepsKey/index.js +7 -0
  19. package/es/hooks/useEntity/index.d.ts +3 -2
  20. package/es/hooks/useEntity/index.js +17 -9
  21. package/es/hooks/useFullArguments/index.d.ts +3 -3
  22. package/es/hooks/useFullArguments/types.d.ts +5 -4
  23. package/es/hooks/useIsRenderingRef/index.js +3 -3
  24. package/es/hooks/useProvider/index.d.ts +3 -3
  25. package/es/hooks/useProvider/index.js +3 -3
  26. package/es/hooks/useProvider/types.d.ts +0 -1
  27. package/es/hooks/useRuntimeEntity/index.d.ts +3 -2
  28. package/es/hooks/useRuntimeEntity/index.js +8 -6
  29. package/es/hooks/useStatuses/index.d.ts +2 -2
  30. package/es/hooks/useStatuses/index.js +1 -1
  31. package/es/hooks/useUseCase/index.js +22 -16
  32. package/es/hooks/useUseCase/index.test.js +70 -6
  33. package/es/hooks/useUseCase/types.d.ts +13 -16
  34. package/es/methods/triggerWatchers/index.js +4 -9
  35. package/es/types.d.ts +3 -0
  36. package/es/usecases/contextUseCase/index.js +1 -1
  37. package/es/usecases/contextUseCase/types.d.ts +2 -3
  38. package/es/usecases/methodUseCase/index.d.ts +2 -0
  39. package/es/usecases/methodUseCase/index.js +55 -0
  40. package/es/usecases/methodUseCase/types.d.ts +21 -0
  41. package/es/usecases/valueUseCase/index.d.ts +2 -0
  42. package/es/usecases/valueUseCase/index.js +172 -0
  43. package/es/usecases/valueUseCase/types.d.ts +20 -0
  44. package/es/usecases/valueUseCase/types.js +1 -0
  45. package/lib/components/SafeUseCaseFragment/index.js +1 -1
  46. package/lib/components/UseCaseFragment/index.js +2 -2
  47. package/lib/hooks/useArgumentTypes/index.js +3 -4
  48. package/lib/hooks/useConstantEntityReducers/index.js +13 -0
  49. package/lib/hooks/useConstantReducers/index.js +12 -0
  50. package/lib/hooks/useContext/index.test.js +2 -2
  51. package/lib/hooks/useContextualItem/index.js +18 -7
  52. package/lib/hooks/useDepsKey/index.js +18 -0
  53. package/lib/hooks/useEntity/index.js +21 -10
  54. package/lib/hooks/useIsRenderingRef/index.js +2 -2
  55. package/lib/hooks/useProvider/index.js +4 -6
  56. package/lib/hooks/useRuntimeEntity/index.js +10 -6
  57. package/lib/hooks/useStatuses/index.js +1 -1
  58. package/lib/hooks/useUseCase/index.js +30 -19
  59. package/lib/hooks/useUseCase/index.test.js +242 -158
  60. package/lib/methods/triggerWatchers/index.js +5 -9
  61. package/lib/usecases/contextUseCase/index.js +1 -1
  62. package/lib/usecases/methodUseCase/index.js +79 -0
  63. package/lib/usecases/valueUseCase/index.js +246 -0
  64. package/lib/usecases/valueUseCase/types.js +5 -0
  65. package/package.json +45 -40
  66. package/es/hooks/useCompareDeps/index.d.ts +0 -1
  67. package/es/hooks/useCompareDeps/index.js +0 -11
  68. package/es/methods/cacheCall/index.d.ts +0 -2
  69. package/es/methods/cacheCall/index.js +0 -26
  70. package/es/methods/cacheCall/types.d.ts +0 -13
  71. package/es/methods/cacheCalls/index.d.ts +0 -2
  72. package/es/methods/cacheCalls/index.js +0 -8
  73. package/es/methods/captureCalls/index.d.ts +0 -2
  74. package/es/methods/captureCalls/index.js +0 -14
  75. package/es/methods/captureCalls/types.d.ts +0 -4
  76. package/es/methods/compareProperty/index.d.ts +0 -2
  77. package/es/methods/compareProperty/index.js +0 -34
  78. package/es/methods/compareProperty/types.d.ts +0 -3
  79. package/es/methods/hasField/index.d.ts +0 -1
  80. package/es/methods/hasField/index.js +0 -6
  81. package/es/methods/initEntityReducers/index.d.ts +0 -5
  82. package/es/methods/initEntityReducers/index.js +0 -11
  83. package/es/methods/isSameArray/index.d.ts +0 -1
  84. package/es/methods/isSameArray/index.js +0 -14
  85. package/lib/hooks/useCompareDeps/index.js +0 -17
  86. package/lib/methods/cacheCall/index.js +0 -41
  87. package/lib/methods/cacheCalls/index.js +0 -19
  88. package/lib/methods/captureCalls/index.js +0 -23
  89. package/lib/methods/compareProperty/index.js +0 -49
  90. package/lib/methods/hasField/index.js +0 -14
  91. package/lib/methods/initEntityReducers/index.js +0 -24
  92. package/lib/methods/isSameArray/index.js +0 -20
  93. /package/es/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
  94. /package/es/{methods/captureCalls/types.js → types.js} +0 -0
  95. /package/es/{methods/compareProperty → usecases/methodUseCase}/types.js +0 -0
  96. /package/lib/{methods/cacheCall → entities/matchPropertyFailedResult}/types.js +0 -0
  97. /package/lib/{methods/captureCalls/types.js → types.js} +0 -0
  98. /package/lib/{methods/compareProperty → usecases/methodUseCase}/types.js +0 -0
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- (()=>{var e={20:(e,t,r)=>{"use strict";var n=r(594),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};t.jsx=function(e,t,r){var n,c={},l=null,f=null;for(n in void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(f=t.ref),t)u.call(t,n)&&!a.hasOwnProperty(n)&&(c[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===c[n]&&(c[n]=t[n]);return{$$typeof:o,type:e,key:l,ref:f,props:c,_owner:i.current}}},848:(e,t,r)=>{"use strict";e.exports=r(20)},594:e=>{"use strict";e.exports=React}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";function e(t){return e="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},e(t)}function t(t,r,n){return(r=function(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,"string");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:String(r)}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function o(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)r=u[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>k,useUseCase:()=>_});var u=r(848),i=r(594),a=r.n(i);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function l(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function f(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(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.")}()}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,u,i,a=[],c=!0,l=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(a.push(n.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return a}}(e,t)||l(e,t)||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.")}()}const y=ahooks;var b=function(e){return s((0,i.useState)((function(){return e})),1)[0]};const v=usecases;var p,d;!function(e){e[e.None=0]="None",e[e.Entity=2]="Entity"}(p||(p={})),function(e){e[e.None=0]="None",e[e.RootEnabled=2]="RootEnabled",e[e.ContextEnabled=4]="ContextEnabled",e[e.EntityEnabled=8]="EntityEnabled",e[e.ContextRootEnabled=6]="ContextRootEnabled",e[e.EntityRootEnabled=14]="EntityRootEnabled"}(d||(d={}));var E=(0,v.createUseCase)((function(){var e=new Map,t=(0,i.createContext)(null);return function(){return{createContextValue:function(e,t,r){return(r&d.EntityEnabled)===d.EntityEnabled?{store:e,reducers:t,statuses:r}:{reducers:t,statuses:r}},getUseCaseContext:function(r){return e.has(r)?e.get(r).value:t},registerUseCase:function(r,n){if(e.has(r)){var o=e.get(r),u=o.value,a=o.times;return e.set(r,{value:u,times:a+1}),u}if((n&p.Entity)!==p.Entity)return t;var c=(0,i.createContext)(null);return e.set(r,{value:c,times:1}),c},unregisterUseCase:function(t,r){if((r&p.Entity)!==p.Entity)return!1;if(!e.has(t))return!1;var n=e.get(t),o=n.value,u=n.times;return 1===u?e.delete(t):e.set(t,{value:o,times:u-1}),!0}}}})),O=["watch","onChange","options"];function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?h(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m=function(e){return s((0,i.useState)(e),1)[0]},j=function(e,t){var r=e.length;if(r!==t.length)return!1;for(var n=0;n<r;n++)if(e[n]!==t[n])return!1;return!0},w=function(e,t){var r,n=t||{},o=n.onShouldCache,u=void 0===o?function(){return!0}:o,i=n.onCompare,a=void 0===i?function(e,t){return j(e,t)}:i;return function(){for(var t=u(),n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];if(r&&t){var c=r,l=c.parameters,f=c.returnValue;if(a(l,o))return f}var s=e.apply(void 0,o);return t&&(r={parameters:o,returnValue:s}),s}},C=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,y.useLatest)(r),u=(0,y.useCreation)((function(){return w(o.current,{onCompare:function(){return!0}})}),[n,o]);return(0,y.useCreation)((function(){return(t&d.RootEnabled)!==d.RootEnabled&&e?e:u()}),[t,e,u])},P=function(t,r){return"object"===e(t)&&null!==t&&Object.hasOwn(t,r)},S=function e(t,r,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=s(n.match(/^([^.]+)\.(.+)$/)||[],3),c=a[1],l=void 0===c?n:c,y=a[2],b=void 0===y?"":y,v=P(t,l),p=P(r,l),d=[].concat(f(u),[l]);if(v||p){var E=v?t[l]:i,O=p?r[l]:i;if(b)return void e(E,O,b,o,d);if(E===O)return;o(E,O,d)}else if(!/^\d+^/.test(l))for(var h=Array.isArray(t)?t:[],g=Array.isArray(r)?r:[],m=h.length,j=g.length,w=Math.max(m,j),C=0;C<w;C++)e(h[C],g[C],n,o,[].concat(f(u),["".concat(C)]))},R=function(e,t,r){for(var n=function(){var e=s(u[o],2),n=e[0],i=e[1];S(r,t,n,(function(e,n,o){i({fieldPaths:o,newEntity:t,oldEntity:r,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()};function x(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var _=function(){for(var r,n=((r=(0,i.useRef)(!0)).current=!0,(0,i.useEffect)((function(){r.current=!1})),r),u=arguments.length,c=new Array(u),l=0;l<u;l++)c[l]=arguments[l];var h=function(t){return m((function(){var r=p.None;return"function"===e(s(t,2)[1])&&(r|=p.Entity),r}))}(c),P=function(e,t){var r=s(e,4),n=r[0],o=r[1],u=r[2],i=r[3];return(t&p.Entity)!==p.Entity?[null,n,o||{},u||[]]:[n,o,u||{},i||[]]}(c,h),S=s(P,4),_=S[0],A=S[1],D=S[2],U=S[3],M=b(A),k=M,N=M,I=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p.None,r=m((function(){return(0,E().registerUseCase)(e,t)}));return(0,y.useUnmount)((function(){(0,E().unregisterUseCase)(e,t)})),r}(M,h),T=(0,i.useContext)(I),L=T,V=function(e,t){return(0,y.useCreation)((function(){var r=d.None,n=(t||{}).store;return(e&p.Entity)===p.Entity&&(r|=d.EntityRootEnabled),r|=t?d.ContextEnabled:d.RootEnabled,n&&(r|=d.EntityEnabled),r}),[e,t])}(h,T),F=(0,y.useLatest)(D),$=function(e){var t=(0,i.useRef)(0),r=(0,i.useRef)([]),n=r.current,o=j(e,n);return r.current=e,t.current+=o?0:1,t.current}(U),z=(T||{}).reducers,B=void 0===z?null:z,G=(L||{}).store,W=s(function(e,t,r,n,o){var u=(0,y.useUpdate)(),a=(0,i.useRef)(),c=(0,y.useLatest)(n),l=r?r.value:null,f=(e&d.EntityEnabled)===d.EntityEnabled,s=(e&d.EntityRootEnabled)===d.EntityRootEnabled,b=C(r,e,(function(){var e;if(s){var r,n="function"==typeof t?t(null===(r=a.current)||void 0===r?void 0:r.value):t;e=new v.EntityStore(n)}else e=new v.EntityStore(null);return a.current=e,e}),o),p=function(e,t,r,n){var o=(0,i.useRef)(t);if((n&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var u="function"==typeof t,a=o.current;switch(!0){case u:case a===t:return e.value}return o.current=t,t}(b,t,l,e),E=(0,y.useMemoizedFn)((function(e,t){var r=c.current,n=r.onChange,o=r.watch;o&&R(o,e,t),null==n||n(e,t),s&&u()}));return s&&(b.value=p),(0,y.useCreation)((function(){f&&b.watch(E)}),[f,b,E]),(0,i.useEffect)((function(){return function(){b.unwatch(E)}}),[f,b,E]),(0,y.useCreation)((function(){return[p,b]}),[p,b])}(V,_,void 0===G?null:G,D,$),2),Y=W[0],q=W[1],H=C(B,V,(function(){var e,t,r,n=(e=D,t=function(e,t){var r,n;return null===(r=(n=F.current)[e])||void 0===r?void 0:r.call.apply(r,[n].concat(f(t)))},r={},Object.keys(e).forEach((function(n){var o=e[n];r[n]="function"!=typeof o?o:function(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];return t(n,r)}})),r);return(V&d.EntityEnabled)!==d.EntityEnabled?k(n):function(e,t,r){r.watch,r.onChange;var n=r.options,u=o(r,O);return(0,v.createEntityReducers)(t,e,g(g(g({},u),n),{},{onGenerate:function(e,t){return t}}))}(N,q,n)}),$),J=function(e,t,r,n){var o=r.value,u=(0,i.useMemo)((function(){return(0,E().createContextValue)(r,n,e)}),[e,o,r,n]),c=(0,y.useLatest)(u);return b((function(e){var r=e.children,n=e.with,o=void 0===n?[]:n,u=t.Provider,i=c.current;return a().createElement(u,{value:i},o.reduceRight((function(e,t){return a().createElement(t,{},e)}),r))}))}(V,I,q,H);return(0,y.useCreation)((function(){if((V&d.EntityEnabled)!==d.EntityEnabled)return H;var r=(V&d.RootEnabled)===d.RootEnabled,o=function(e,t){var r={};return Object.entries(e).forEach((function(e){var n=s(e,2),o=n[0],u=n[1];r[o]=w(u,t)})),r}(H,{onShouldCache:function(){return n.current}}),u=null===Y,i=Array.isArray(Y),a="object"!==e(Y)||u||i?Y:function(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?x(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Y);return r?[a,o,J]:[a,o]}),[V,Y,H,J,n])},A=function(e){var t=e.usecase,r=e.watch,n=e.onMount,o=e.onChange,a=s(_(t,{watch:r,onChange:o}),1)[0];return(0,y.useMount)((function(){null==n||n(a)})),(0,u.jsx)(i.Fragment,{})},D=["usecase"];function U(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function M(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?U(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var k=function(e){var t=e.usecase,r=o(e,D),n=(0,_(E).getUseCaseContext)(t),a=(0,i.useContext)(n);return(0,u.jsx)(i.Fragment,{children:null===a?null:(0,u.jsx)(A,M({usecase:t},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
2
+ (()=>{var t={698(t,e){"use strict";var r=Symbol.for("react.transitional.element");Symbol.for("react.fragment"),e.jsx=function(t,e,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==e.key&&(o=""+e.key),"key"in e)for(var u in n={},e)"key"!==u&&(n[u]=e[u]);else n=e;return e=n.ref,{$$typeof:r,type:t,key:o,ref:void 0!==e?e:null,props:n}}},848(t,e,r){"use strict";t.exports=r(698)},172(t){t.exports=function(t,e){this.v=t,this.k=e},t.exports.__esModule=!0,t.exports.default=t.exports},993(t,e,r){var n=r(546);function o(){var e,r,u="function"==typeof Symbol?Symbol:{},a=u.iterator||"@@iterator",i=u.toStringTag||"@@toStringTag";function c(t,o,u,a){var i=o&&o.prototype instanceof f?o:f,c=Object.create(i.prototype);return n(c,"_invoke",function(t,n,o){var u,a,i,c=0,f=o||[],l=!1,p={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,r){return u=t,a=0,i=e,p.n=r,s}};function y(t,n){for(a=t,i=n,r=0;!l&&c&&!o&&r<f.length;r++){var o,u=f[r],y=p.p,v=u[2];t>3?(o=v===n)&&(i=u[(a=u[4])?5:(a=3,3)],u[4]=u[5]=e):u[0]<=y&&((o=t<2&&y<u[1])?(a=0,p.v=n,p.n=u[1]):y<v&&(o=t<3||u[0]>n||n>v)&&(u[4]=t,u[5]=n,p.n=v,a=0))}if(o||t>1)return s;throw l=!0,n}return function(o,f,v){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&y(f,v),a=f,i=v;(r=a<2?e:i)||!l;){u||(a?a<3?(a>1&&(p.n=-1),y(a,i)):p.n=i:p.v=i);try{if(c=2,u){if(a||(o="next"),r=u[o]){if(!(r=r.call(u,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=u.return)&&r.call(u),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);u=e}else if((r=(l=p.n<0)?i:t.call(n,p))!==s)break}catch(t){u=e,a=1,i=t}finally{c=1}}return{value:r,done:l}}}(t,u,a),!0),c}var s={};function f(){}function l(){}function p(){}r=Object.getPrototypeOf;var y=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),v=p.prototype=f.prototype=Object.create(y);function d(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(v),t}return l.prototype=p,n(v,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(v),n(v,i,"Generator"),n(v,a,function(){return this}),n(v,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:d}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},869(t,e,r){var n=r(887);t.exports=function(t,e,r,o,u){var a=n(t,e,r,o,u);return a.next().then(function(t){return t.done?t.value:a.next()})},t.exports.__esModule=!0,t.exports.default=t.exports},887(t,e,r){var n=r(993),o=r(791);t.exports=function(t,e,r,u,a){return new o(n().w(t,e,r,u),a||Promise)},t.exports.__esModule=!0,t.exports.default=t.exports},791(t,e,r){var n=r(172),o=r(546);t.exports=function t(e,r){function u(t,o,a,i){try{var c=e[t](o),s=c.value;return s instanceof n?r.resolve(s.v).then(function(t){u("next",t,a,i)},function(t){u("throw",t,a,i)}):r.resolve(s).then(function(t){c.value=t,a(c)},function(t){return u("throw",t,a,i)})}catch(t){i(t)}}var a;this.next||(o(t.prototype),o(t.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),o(this,"_invoke",function(t,e,n){function o(){return new r(function(e,r){u(t,n,e,r)})}return a=a?a.then(o,o):o()},!0)},t.exports.__esModule=!0,t.exports.default=t.exports},546(t){function e(r,n,o,u){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}t.exports=e=function(t,r,n,o){function u(r,n){e(t,r,function(t){return this._invoke(r,n,t)})}r?a?a(t,r,{value:n,enumerable:!o,configurable:!o,writable:!o}):t[r]=n:(u("next",0),u("throw",1),u("return",2))},t.exports.__esModule=!0,t.exports.default=t.exports,e(r,n,o,u)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},373(t){t.exports=function(t){var e=Object(t),r=[];for(var n in e)r.unshift(n);return function t(){for(;r.length;)if((n=r.pop())in e)return t.value=n,t.done=!1,t;return t.done=!0,t}},t.exports.__esModule=!0,t.exports.default=t.exports},633(t,e,r){var n=r(172),o=r(993),u=r(869),a=r(887),i=r(791),c=r(373),s=r(579);function f(){"use strict";var e=o(),r=e.m(f),l=(Object.getPrototypeOf?Object.getPrototypeOf(r):r.__proto__).constructor;function p(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===l||"GeneratorFunction"===(e.displayName||e.name))}var y={throw:1,return:2,break:3,continue:3};function v(t){var e,r;return function(n){e||(e={stop:function(){return r(n.a,2)},catch:function(){return n.v},abrupt:function(t,e){return r(n.a,y[t],e)},delegateYield:function(t,o,u){return e.resultName=o,r(n.d,s(t),u)},finish:function(t){return r(n.f,t)}},r=function(t,r,o){n.p=e.prev,n.n=e.next;try{return t(r,o)}finally{e.next=n.n}}),e.resultName&&(e[e.resultName]=n.v,e.resultName=void 0),e.sent=n.v,e.next=n.n;try{return t.call(this,e)}finally{n.p=e.prev,n.n=e.next}}}return(t.exports=f=function(){return{wrap:function(t,r,n,o){return e.w(v(t),r,n,o&&o.reverse())},isGeneratorFunction:p,mark:e.m,awrap:function(t,e){return new n(t,e)},AsyncIterator:i,async:function(t,e,r,n,o){return(p(e)?a:u)(v(t),e,r,n,o)},keys:c,values:s}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=f,t.exports.__esModule=!0,t.exports.default=t.exports},579(t,e,r){var n=r(738).default;t.exports=function(t){if(null!=t){var e=t["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}throw new TypeError(n(t)+" is not iterable")},t.exports.__esModule=!0,t.exports.default=t.exports},738(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},756(t,e,r){var n=r(633)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var u=e[n]={exports:{}};return t[n](u,u.exports,r),u.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(e,r,n){return(r=function(e){var r=function(e){if("object"!=t(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=t(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)r=u[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}r.r(n),r.d(n,{UseCaseFragment:()=>T,useUseCase:()=>R});var u=r(848);function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}function c(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||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.")}()}function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,u,a,i=[],c=!0,s=!1;try{if(u=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=u.call(r)).done)&&(i.push(n.value),i.length!==e);c=!0);}catch(t){s=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return i}}(t,e)||i(t,e)||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.")}()}const f=React;var l,p=r.n(f),y=function(t){return s((0,f.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(l||(l={}));var v=function(t){return s((0,f.useState)(function(){return t}),1)[0]},d=function(t,e){return y(function(){return t(e)})};const b=ahooks,h=usecases;var m;!function(t){t[t.None=0]="None",t[t.RootEnabled=2]="RootEnabled",t[t.ContextEnabled=4]="ContextEnabled",t[t.EntityEnabled=8]="EntityEnabled",t[t.ContextRootEnabled=6]="ContextRootEnabled",t[t.EntityRootEnabled=14]="EntityRootEnabled"}(m||(m={}));var x=(0,h.createUseCase)(function(){var t=new Map,e=(0,f.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&m.EntityEnabled)===m.EntityEnabled?{store:t,reducers:e,statuses:r}:{reducers:e,statuses:r}},getUseCaseContext:function(r){return t.has(r)?t.get(r).value:e},registerUseCase:function(r,n){if(t.has(r)){var o=t.get(r),u=o.value,a=o.times;return t.set(r,{value:u,times:a+1}),u}if((n&l.Entity)!==l.Entity)return e;var i=(0,f.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&l.Entity)!==l.Entity)return!1;if(!t.has(e))return!1;var n=t.get(e),o=n.value,u=n.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}}),g=function(t,e,r){return y(function(){return(0,h.createEntityReducers)(t,e,r)})},O=r(756),E=r.n(O);function w(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function j(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?w(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var S=(0,h.createUseCase)(function(){var e=0;return function(){var r=e++,n=(0,h.entityUseCase)(),o=function(e,r){return"object"===t(e)&&null!==e&&Object.hasOwn(e,r)},u=function(t,e){return t!==e},a=function(e,r,n){if(e===r)return!0;var o="object"===t(e)&&null!==e,u="object"===t(r)&&null!==r;if(!o||!u)return!1;for(var a=!0,i=Object.keys(e),c=Object.keys(r),s=i.length,f=[].concat(i,c),l="function"==typeof n,p=0,y=f.length;p<y;p++){var v=f[p],d=p>=s,b=i.includes(v);if(!d||!b){var h=Object.hasOwn(e,v),m=Object.hasOwn(r,v),x=h&&!m||!h&&m,g=e[v],O=r[v];if(x||g!==O){if(a=!1,!l)break;n(v,O,g)}}}return a},i=E().mark(function t(e,r){return E().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(u(e,r)){t.next=1;break}return t.abrupt("return",!1);case 1:return t.next=2,r;case 2:return t.abrupt("return",!0);case 3:case"end":return t.stop()}},t)}),f=E().mark(function t(e,r){var n,o,u,i,c,s;return E().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=Array.isArray(e),o=Array.isArray(r),i=(u=n&&o)?[]:{},u&&(c=e.length,s=r.length,i.length=Math.max(c,s)),a(e,r,function(t,e){i[t]=e})){t.next=1;break}return t.next=1,r;case 1:return t.abrupt("return",i);case 2:case"end":return t.stop()}},t)}),l=E().mark(function t(e,r){return E().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!a(e,r)){t.next=1;break}return t.abrupt("return",!0);case 1:return t.next=2,r;case 2:return t.abrupt("return",!1);case 3:case"end":return t.stop()}},t)});return j(j({},n),{},{isValueChanged:u,isValueMatched:a,matchProperty:function(t,e,r,n){var u=!0,a=r,i=[{fieldPaths:[],newEntity:e,newValue:e,oldEntity:t,oldValue:t}];do{var f=i.shift(),l=f.oldValue,p=f.newValue,y=f.fieldPaths,v=s(a.match(/^([^.]+)\.(.+)$/)||[],3),d=v[1],b=void 0===d?a:d,h=v[2],m=void 0===h?"":h,x=o(l,b),g=o(p,b);if(x||g){var O=x?l[b]:void 0,E=g?p[b]:void 0,w={fieldPaths:[].concat(c(y),[b]),newEntity:e,newValue:E,oldEntity:t,oldValue:O};if(m){a=m,i.push(w);continue}if(O===E)continue;u=!1,null==n||n(w)}else if(!/^\d+^/.test(b))for(var j=Array.isArray(l)?l:[],S=Array.isArray(p)?p:[],C=j.length,P=S.length,_=Math.max(C,P),M=0;M<_;M++)i.push({fieldPaths:[].concat(c(y),["".concat(M)]),newEntity:e,newValue:S[M],oldEntity:t,oldValue:j[M]})}while(i.length>0);return u},recordValue:i,recordValueDiff:f,recordValueMatch:l,recordValueMatchWith:function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e+1;return E().mark(function u(){return E().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return u.delegateYield(l(t,n),"t0",1);case 1:return u.t0||(e++,r=o),u.abrupt("return",r);case 2:case"end":return u.stop()}},u)})()}})}}),C=function(){var t=S().isValueMatched,e=function(e,r){var n,o=r||{},u=o.onShouldCache,a=void 0===u?function(){return!0}:u,i=o.onCompare,c=void 0===i?function(e,r){return t(e,r)}:i;return function(){for(var t=a(),r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];if(n&&t){var i=n,s=i.parameters,f=i.returnValue;if(c(s,o))return f}var l=e.apply(void 0,o);return t&&(n={parameters:o,returnValue:l}),l}};return{cacheCall:e,cacheCalls:function(t,r){var n={};return Object.entries(t).forEach(function(t){var o=s(t,2),u=o[0],a=o[1];n[u]=e(a,r)}),n},captureCalls:function(t,e){var r={};return Object.keys(t).forEach(function(n){var o=t[n];r[n]="function"!=typeof o?o:function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return e(n,r)}}),r}}},P=function(t,e,r){var n,o=s((0,g(n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],S).recordValueMatchWith)(n),2)[1],u=(0,b.useLatest)(r),a=d(C).cacheCall,i=(0,b.useMemoizedFn)(function(){var t=u.current;return a(t,{onCompare:function(){return!0}})}),c=(0,b.useCreation)(function(){return i()},[o,i]);return(0,b.useCreation)(function(){return(e&m.RootEnabled)!==m.RootEnabled&&t?t:c()},[e,t,c])},_=["watch","onChange","options"];function M(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function k(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?M(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var R=function(){for(var e,r=(e=(0,b.useLatest)(!0),(0,f.useEffect)(function(){e.current=!1}),e),n=arguments.length,u=new Array(n),a=0;a<n;a++)u[a]=arguments[a];var i=function(e){return y(function(){return"function"===t(s(e,2)[1])?l.Entity:l.None})}(u),O=function(t,e){var r=s(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&l.Entity)!==l.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(u,i),E=s(O,4),w=E[0],j=E[1],M=E[2],R=E[3],V=v(j),A=V,N=V,D=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.None,r=y(function(){return(0,x().registerUseCase)(t,e)});return(0,b.useUnmount)(function(){(0,x().unregisterUseCase)(t,e)}),r}(V,i),T=(0,f.useContext)(D),U=T,F=function(t,e){return(0,b.useCreation)(function(){var r=m.None,n=(e||{}).store;return(t&l.Entity)===l.Entity&&(r|=m.EntityRootEnabled),r|=e?m.ContextEnabled:m.RootEnabled,n&&(r|=m.EntityEnabled),r},[t,e])}(i,T),G=(0,b.useLatest)(M),I=(T||{}).reducers,L=void 0===I?null:I,$=(U||{}).store,z=s(function(t,e,r,n,o){var u=(0,b.useUpdate)(),a=(0,f.useRef)(null),i=(0,b.useLatest)(n),c=r?r.value:null,l=(t&m.EntityEnabled)===m.EntityEnabled,p=(t&m.EntityRootEnabled)===m.EntityRootEnabled,y=g(o,S).recordValueDiff,v=P(r,t,function(){var t;if(p){var r="function"==typeof e,n=(a.current||{}).value,u=s(y(o),2)[1],i=r?e(n,u):e;t=new h.EntityStore(i)}else t=new h.EntityStore(null);return a.current=t,t},o),d=function(t,e,r,n){var o=g(e,S),u=o.isValueChanged,a=o.recordValue,i=u(e);if((n&m.EntityRootEnabled)!==m.EntityRootEnabled)return r;var c="function"==typeof e,s=t.value;switch(!0){case c:case!i:return s}return a(e),e}(v,e,c,t),x=(0,b.useMemoizedFn)(function(t,e){var r=i.current,n=r.onChange,o=r.watch;o&&function(t,e,r){for(var n=S().matchProperty,o=function(){var t=s(a[u],2),o=t[0],i=t[1];n(r,e,o,function(t){i(t)})},u=0,a=Object.entries(t);u<a.length;u++)o()}(o,t,e),null==n||n(t,e),p&&u()});return p&&v.setValue(d,!0),(0,b.useCreation)(function(){l&&v.watch(x)},[l,v,x]),(0,f.useEffect)(function(){return function(){v.unwatch(x)}},[l,v,x]),(0,b.useCreation)(function(){return[d,v]},[d,v])}(F,w,void 0===$?null:$,M,R),2),W=z[0],Y=z[1],q=d(C),B=q.cacheCalls,H=q.captureCalls,J=P(L,F,function(){var t=H(M,function(t,e){var r,n;return null===(r=(n=G.current)[t])||void 0===r?void 0:r.call.apply(r,[n].concat(c(e)))});if((F&m.EntityEnabled)!==m.EntityEnabled)return A(t);var e=t,r=(e.watch,e.onChange,e.options),n=o(e,_);return(0,h.createEntityReducers)(Y,N,k(k(k({},n),r),{},{onGenerate:function(t,e){return e}}))},R),K=function(t,e,r,n){var o=r.value,u=(0,b.useCreation)(function(){return(0,x().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,b.useLatest)(u);return v(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return p().createElement(u,{value:i},o.reduceRight(function(t,e){return p().createElement(e,{},t)},r))})}(F,D,Y,J);return(0,b.useCreation)(function(){if((F&m.EntityEnabled)!==m.EntityEnabled)return J;var e=(F&m.RootEnabled)===m.RootEnabled,n=B(J,{onShouldCache:function(){return r.current}}),o=null===W,u=Array.isArray(W),a="object"!==t(W)||o||u?W:k({},W);return e?[a,n,K]:[a,n]},[F,W,J,K,r,B])},V=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onChange,a=s(R(e,{watch:r,onChange:o}),1)[0];return(0,b.useMount)(function(){null==n||n(a)}),(0,u.jsx)(f.Fragment,{})},A=["usecase"];function N(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function D(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?N(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var T=function(t){var e=t.usecase,r=o(t,A),n=(0,R(x).getUseCaseContext)(e),a=(0,f.useContext)(n);return(0,u.jsx)(f.Fragment,{children:null===a?null:(0,u.jsx)(V,D({usecase:e},r))})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in n)o[u]=n[u];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
@@ -1,8 +1,10 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
2
+
1
3
  /**
2
4
  * @license React
3
- * react-jsx-runtime.production.min.js
5
+ * react-jsx-runtime.production.js
4
6
  *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
7
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
8
  *
7
9
  * This source code is licensed under the MIT license found in the
8
10
  * LICENSE file in the root directory of this source tree.
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Fragment } from 'react';
3
2
  import { useUseCase } from '../../hooks/useUseCase';
4
3
  import { useMount } from 'ahooks';
4
+ import { Fragment } from 'react';
5
5
  export const SafeUseCaseFragment = ({ usecase, watch, onMount, onChange, }) => {
6
6
  const [entity] = useUseCase(usecase, { watch, onChange });
7
7
  useMount(() => {
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Fragment, useContext } from 'react';
3
2
  import { useUseCase } from '../../hooks/useUseCase';
4
- import { contextUseCase } from '../../usecases/contextUseCase';
5
3
  import { SafeUseCaseFragment } from '../SafeUseCaseFragment';
4
+ import { Fragment, useContext } from 'react';
5
+ import { contextUseCase } from '../../usecases/contextUseCase';
6
6
  export const UseCaseFragment = ({ usecase, ...props }) => {
7
7
  const { getUseCaseContext } = useUseCase(contextUseCase);
8
8
  const context = getUseCaseContext(usecase);
@@ -1,4 +1,4 @@
1
- import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
2
1
  import { SafeUseCaseFragmentProps } from '../SafeUseCaseFragment/types';
2
+ import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
3
3
  export interface UseCaseFragmentProps<T, TEntityReducers extends EntityReducerMap<T>> extends SafeUseCaseFragmentProps<T, TEntityReducers> {
4
4
  }
@@ -0,0 +1,7 @@
1
+ export interface MatchPropertyFailedResult<T, TValue = unknown> {
2
+ fieldPaths: string[];
3
+ newEntity: T;
4
+ newValue: TValue;
5
+ oldEntity: T;
6
+ oldValue: TValue;
7
+ }
@@ -1,3 +1,3 @@
1
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
1
  import { UseCaseHookParameters } from '../useUseCase/types';
2
+ import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
3
  export declare const useArgumentTypes: (args: UseCaseHookParameters) => ArgumentTypes;
@@ -1,13 +1,12 @@
1
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
1
  import { useConstant } from '../useConstant';
2
+ import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
3
  export const useArgumentTypes = (args) => {
4
4
  return useConstant(() => {
5
- let types = ArgumentTypes.None;
6
5
  const [, arg2] = args;
7
6
  const type2 = typeof arg2;
8
7
  if (type2 === 'function') {
9
- types |= ArgumentTypes.Entity;
8
+ return ArgumentTypes.Entity;
10
9
  }
11
- return types;
10
+ return ArgumentTypes.None;
12
11
  });
13
12
  };
@@ -0,0 +1,3 @@
1
+ import { CreateEntityReducersOptions, ScopedEntityReducers } from '@mic-rexjs/usecases/es/methods/createEntityReducers/types';
2
+ import { EntityReducerMap, EntityReducers, InferableEntityUseCase } from '@mic-rexjs/usecases/es/types';
3
+ export declare const useConstantEntityReducers: <T, TEntityReducers extends EntityReducerMap<T>, TUseCaseOptions extends object = object>(initailEntity: T, usecase: InferableEntityUseCase<T, TEntityReducers & EntityReducers<T>, TUseCaseOptions>, options?: CreateEntityReducersOptions<T, TUseCaseOptions>) => ScopedEntityReducers<T, EntityReducers<T, TEntityReducers>>;
@@ -0,0 +1,7 @@
1
+ import { useConstant } from '../useConstant';
2
+ import { createEntityReducers } from '@mic-rexjs/usecases';
3
+ export const useConstantEntityReducers = (initailEntity, usecase, options) => {
4
+ return useConstant(() => {
5
+ return createEntityReducers(initailEntity, usecase, options);
6
+ });
7
+ };
@@ -0,0 +1,3 @@
1
+ import { NonEntitySymbolSet } from '../useUseCase/types';
2
+ import { ReducerMap, SymbolSetTarget, UseCase } from '@mic-rexjs/usecases/es/types';
3
+ export declare const useConstantReducers: <T extends ReducerMap, TUseCaseOptions extends object = object>(usecase: UseCase<T & SymbolSetTarget<NonEntitySymbolSet>, TUseCaseOptions>, options?: TUseCaseOptions) => T;
@@ -0,0 +1,6 @@
1
+ import { useConstant } from '../useConstant';
2
+ export const useConstantReducers = (usecase, options) => {
3
+ return useConstant(() => {
4
+ return usecase(options);
5
+ });
6
+ };
@@ -1,5 +1,5 @@
1
1
  import { UseCase } from '@mic-rexjs/usecases';
2
+ import { ReducerMap } from '@mic-rexjs/usecases/es/types';
2
3
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
3
4
  import { Context, ContextValue } from '../../usecases/contextUseCase/types';
4
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
5
- export declare const useContext: <T extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>, TUseCaseOptions extends object>(usecase: UseCase<T, TUseCaseOptions>, argumentTypes?: ArgumentTypes) => Context<ContextValue<T>>;
5
+ export declare const useContext: <T extends ReducerMap, TUseCaseOptions extends object>(usecase: UseCase<T, TUseCaseOptions>, argumentTypes?: ArgumentTypes) => Context<ContextValue<T>>;
@@ -1,8 +1,8 @@
1
+ import { useContext } from '.';
1
2
  import { describe, expect, test } from '@jest/globals';
2
3
  import { renderHook } from '@testing-library/react';
3
- import { useContext } from '.';
4
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
5
4
  import { useContext as useReactContext } from 'react';
5
+ import { ArgumentTypes } from '../../enums/ArgumentTypes';
6
6
  const testUseCase = () => {
7
7
  return {};
8
8
  };
@@ -1,3 +1,4 @@
1
- import { Statuses } from '../../enums/Statuses';
2
1
  import { CreateContextualItemFactory } from './types';
3
- export declare const useContextualItem: <T>(contextItem: T | null, statuses: Statuses, createFactory: CreateContextualItemFactory<T>, depsKey?: number) => T;
2
+ import { Statuses } from '../../enums/Statuses';
3
+ import { Dependencies } from '../../types';
4
+ export declare const useContextualItem: <T>(contextItem: T | null, statuses: Statuses, createFactory: CreateContextualItemFactory<T>, deps?: Dependencies) => T;
@@ -1,21 +1,31 @@
1
- import { useCreation, useLatest } from 'ahooks';
1
+ import { useConstantReducers } from '../useConstantReducers';
2
+ import { useDepsKey } from '../useDepsKey';
3
+ import { useCreation, useLatest, useMemoizedFn } from 'ahooks';
2
4
  import { Statuses } from '../../enums/Statuses';
3
- import { cacheCall } from '../../methods/cacheCall';
4
- export const useContextualItem = (contextItem, statuses, createFactory, depsKey = 0) => {
5
+ import { methodUseCase } from '../../usecases/methodUseCase';
6
+ export const useContextualItem = (contextItem, statuses, createFactory, deps = []) => {
7
+ const depsKey = useDepsKey(deps);
5
8
  const factoryRef = useLatest(createFactory);
6
- const create = useCreation(() => {
9
+ const { cacheCall } = useConstantReducers(methodUseCase);
10
+ const onCache = useMemoizedFn(() => {
11
+ const { current: currentFactory } = factoryRef;
7
12
  void depsKey;
8
- return cacheCall(factoryRef.current, {
13
+ // 防止在以下 `onCreate()` 多次调用实际 `factory`
14
+ return cacheCall(currentFactory, {
9
15
  onCompare() {
10
16
  return true;
11
17
  },
12
18
  });
13
- }, [depsKey, factoryRef]);
19
+ });
20
+ const onCreate = useCreation(() => {
21
+ void depsKey;
22
+ return onCache();
23
+ }, [depsKey, onCache]);
14
24
  return useCreation(() => {
15
25
  const rootEnabled = (statuses & Statuses.RootEnabled) === Statuses.RootEnabled;
16
26
  if (!rootEnabled && contextItem) {
17
27
  return contextItem;
18
28
  }
19
- return create();
20
- }, [statuses, contextItem, create]);
29
+ return onCreate();
30
+ }, [statuses, contextItem, onCreate]);
21
31
  };
@@ -0,0 +1,2 @@
1
+ import { Dependencies } from '../../types';
2
+ export declare const useDepsKey: (deps: Dependencies) => number;
@@ -0,0 +1,7 @@
1
+ import { useConstantEntityReducers } from '../useConstantEntityReducers';
2
+ import { valueUseCase } from '../../usecases/valueUseCase';
3
+ export const useDepsKey = (deps) => {
4
+ const { recordValueMatchWith } = useConstantEntityReducers(deps, (valueUseCase));
5
+ const [, depsKey] = recordValueMatchWith(deps);
6
+ return depsKey;
7
+ };
@@ -1,4 +1,5 @@
1
+ import { EntityGetter, UseCaseHookOptions } from '../useUseCase/types';
1
2
  import { EntityStore } from '@mic-rexjs/usecases';
2
3
  import { Statuses } from '../../enums/Statuses';
3
- import { EntityGetter, UseCaseHookOptions } from '../useUseCase/types';
4
- export declare const useEntity: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>>(statuses: Statuses, entityArg: T | EntityGetter<T>, contextStore: EntityStore<T> | null, options: TOptions, depsKey: number) => [entity: T, store: EntityStore<T>];
4
+ import { Dependencies } from '../../types';
5
+ export declare const useEntity: <T, TUseCaseOptions extends object, TOptions extends UseCaseHookOptions<T, TUseCaseOptions> = UseCaseHookOptions<T, TUseCaseOptions>, TDependencies extends Dependencies = Dependencies>(statuses: Statuses, entityArg: T | EntityGetter<T, TDependencies>, contextStore: EntityStore<T> | null, options: TOptions, deps: TDependencies) => [entity: T, store: EntityStore<T>];
@@ -1,22 +1,30 @@
1
- import { useEffect, useRef } from 'react';
2
- import { EntityStore } from '@mic-rexjs/usecases';
3
- import { Statuses } from '../../enums/Statuses';
1
+ import { useConstantEntityReducers } from '../useConstantEntityReducers';
4
2
  import { useContextualItem } from '../useContextualItem';
3
+ import { useRuntimeEntity } from '../useRuntimeEntity';
4
+ import { EntityStore } from '@mic-rexjs/usecases';
5
5
  import { useCreation, useLatest, useMemoizedFn, useUpdate } from 'ahooks';
6
+ import { useEffect, useRef } from 'react';
7
+ import { Statuses } from '../../enums/Statuses';
6
8
  import { triggerWatchers } from '../../methods/triggerWatchers';
7
- import { useRuntimeEntity } from '../useRuntimeEntity';
8
- export const useEntity = (statuses, entityArg, contextStore, options, depsKey) => {
9
+ import { valueUseCase } from '../../usecases/valueUseCase';
10
+ export const useEntity = (statuses, entityArg, contextStore, options, deps) => {
9
11
  const update = useUpdate();
10
- const storeRef = useRef();
12
+ const storeRef = useRef(null);
11
13
  const optionsRef = useLatest(options);
12
14
  const contextEntity = (contextStore ? contextStore.value : null);
13
15
  const entityEnabled = (statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled;
14
16
  const entityRootEnabled = (statuses & Statuses.EntityRootEnabled) === Statuses.EntityRootEnabled;
17
+ const { recordValueDiff } = useConstantEntityReducers(deps, (valueUseCase));
15
18
  const store = useContextualItem(contextStore, statuses, () => {
16
19
  let newStore;
17
20
  if (entityRootEnabled) {
18
21
  const isFunction = typeof entityArg === 'function';
19
- const initailEntity = isFunction ? entityArg(storeRef.current?.value) : entityArg;
22
+ const { current } = storeRef;
23
+ const { value } = current || {};
24
+ const [, depsDiff] = recordValueDiff(deps);
25
+ const initailEntity = isFunction
26
+ ? entityArg(value, depsDiff)
27
+ : entityArg;
20
28
  newStore = new EntityStore(initailEntity);
21
29
  }
22
30
  else {
@@ -24,7 +32,7 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
24
32
  }
25
33
  storeRef.current = newStore;
26
34
  return newStore;
27
- }, depsKey);
35
+ }, deps);
28
36
  const runtimeEntity = useRuntimeEntity(store, entityArg, contextEntity, statuses);
29
37
  const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
30
38
  const { onChange, watch } = optionsRef.current;
@@ -39,7 +47,7 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
39
47
  });
40
48
  if (entityRootEnabled) {
41
49
  // 执行同步操作
42
- store.value = runtimeEntity;
50
+ store.setValue(runtimeEntity, true);
43
51
  }
44
52
  /**
45
53
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
@@ -1,5 +1,5 @@
1
- import { UseCaseHookParameters } from '../../hooks/useUseCase/types';
2
1
  import { FullParameters } from './types';
3
- import { ArgumentTypes } from '../../enums/ArgumentTypes';
4
2
  import { ReducerMap } from '@mic-rexjs/usecases/es/types';
5
- export declare const useFullArguments: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: ArgumentTypes) => FullParameters<T, TReducers, TUseCaseOptions>;
3
+ import { ArgumentTypes } from '../../enums/ArgumentTypes';
4
+ import { UseCaseHookParameters } from '../../hooks/useUseCase/types';
5
+ export declare const useFullArguments: <T, TReducers extends ReducerMap, TUseCaseOptions extends object>(args: UseCaseHookParameters, argumentTypes: ArgumentTypes) => FullParameters<T, TReducers, TUseCaseOptions>;
@@ -1,9 +1,10 @@
1
- import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
2
1
  import { EntityReducers, EntityUseCase, UseCase } from '@mic-rexjs/usecases';
3
2
  import { ReducerMap } from '@mic-rexjs/usecases/es/types';
4
- export type FullParameters<T, TReducers extends ReducerMap, TUseCaseOptions extends object> = [
5
- entity: T | EntityGetter<T>,
3
+ import { EntityGetter, UseCaseHookContextualOptions, UseCaseHookOptions } from '../../hooks/useUseCase/types';
4
+ import { Dependencies } from '../../types';
5
+ export type FullParameters<T, TReducers extends ReducerMap, TUseCaseOptions extends object, TDependencies extends Dependencies = Dependencies> = [
6
+ entity: T | EntityGetter<T, TDependencies>,
6
7
  usecase: UseCase<TReducers, TUseCaseOptions> | EntityUseCase<T, TReducers & EntityReducers<T>, TUseCaseOptions>,
7
8
  options: TUseCaseOptions | UseCaseHookOptions<T, TUseCaseOptions> | UseCaseHookContextualOptions<T>,
8
- deps: unknown[]
9
+ deps: TDependencies
9
10
  ];
@@ -1,7 +1,7 @@
1
- import { useEffect, useRef } from 'react';
1
+ import { useLatest } from 'ahooks';
2
+ import { useEffect } from 'react';
2
3
  export const useIsRenderingRef = () => {
3
- const ref = useRef(true);
4
- ref.current = true;
4
+ const ref = useLatest(true);
5
5
  useEffect(() => {
6
6
  ref.current = false;
7
7
  });
@@ -1,6 +1,6 @@
1
- import { EntityStore } from '@mic-rexjs/usecases';
2
1
  import { UseCaseProvider } from './types';
2
+ import { EntityStore } from '@mic-rexjs/usecases';
3
+ import { ReducerMap } from '@mic-rexjs/usecases/es/types';
3
4
  import { Statuses } from '../../enums/Statuses';
4
5
  import { Context, ContextValue } from '../../usecases/contextUseCase/types';
5
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
6
- export declare const useProvider: <T, TReducers extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>>(statuses: Statuses, context: Context<ContextValue<TReducers>>, store: EntityStore<T>, reducers: TReducers) => UseCaseProvider;
6
+ export declare const useProvider: <T, TReducers extends ReducerMap>(statuses: Statuses, context: Context<ContextValue<TReducers>>, store: EntityStore<T>, reducers: TReducers) => UseCaseProvider;
@@ -1,10 +1,10 @@
1
- import React, { useMemo } from 'react';
2
- import { useLatest } from 'ahooks';
3
1
  import { useConstantFn } from '../useConstantFn';
2
+ import { useCreation, useLatest } from 'ahooks';
3
+ import React from 'react';
4
4
  import { contextUseCase } from '../../usecases/contextUseCase';
5
5
  export const useProvider = (statuses, context, store, reducers) => {
6
6
  const { value: entity } = store;
7
- const contextValue = useMemo(() => {
7
+ const contextValue = useCreation(() => {
8
8
  const { createContextValue } = contextUseCase();
9
9
  void entity;
10
10
  return createContextValue(store, reducers, statuses);
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export interface UseCaseProviderProps {
3
2
  children?: React.ReactNode;
4
3
  with?: UseCaseProvider[];
@@ -1,4 +1,5 @@
1
+ import { EntityStore } from '@mic-rexjs/usecases';
1
2
  import { Statuses } from '../../enums/Statuses';
2
3
  import { EntityGetter } from '../../hooks/useUseCase/types';
3
- import { EntityStore } from '@mic-rexjs/usecases';
4
- export declare const useRuntimeEntity: <T>(store: EntityStore<T>, entityArg: T | EntityGetter<T>, contextEntity: T, statuses: Statuses) => T;
4
+ import { Dependencies } from '../../types';
5
+ export declare const useRuntimeEntity: <T, TDependencies extends Dependencies = Dependencies>(store: EntityStore<T>, entityArg: T | EntityGetter<T, TDependencies>, contextEntity: T, statuses: Statuses) => T;
@@ -1,18 +1,20 @@
1
+ import { useConstantEntityReducers } from '../useConstantEntityReducers';
1
2
  import { Statuses } from '../../enums/Statuses';
2
- import { useRef } from 'react';
3
+ import { valueUseCase } from '../../usecases/valueUseCase';
3
4
  export const useRuntimeEntity = (store, entityArg, contextEntity, statuses) => {
4
- const prevEntityArgRef = useRef(entityArg);
5
+ const { isValueChanged, recordValue } = useConstantEntityReducers(entityArg, (valueUseCase));
6
+ const changed = isValueChanged(entityArg);
5
7
  const entityRootDisabled = (statuses & Statuses.EntityRootEnabled) !== Statuses.EntityRootEnabled;
6
8
  if (entityRootDisabled) {
7
9
  return contextEntity;
8
10
  }
9
11
  const isFunction = typeof entityArg === 'function';
10
- const { current: prevEntityArg } = prevEntityArgRef;
12
+ const { value } = store;
11
13
  switch (true) {
12
14
  case isFunction:
13
- case prevEntityArg === entityArg:
14
- return store.value;
15
+ case !changed:
16
+ return value;
15
17
  }
16
- prevEntityArgRef.current = entityArg;
18
+ recordValue(entityArg);
17
19
  return entityArg;
18
20
  };
@@ -1,5 +1,5 @@
1
+ import { ReducerMap } from '@mic-rexjs/usecases/es/types';
1
2
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
3
  import { Statuses } from '../../enums/Statuses';
3
4
  import { ContextValue } from '../../usecases/contextUseCase/types';
4
- import { ReducerMap } from '@mic-rexjs/usecases/es/types';
5
- export declare const useStatuses: <T extends ReducerMap<import("@mic-rexjs/usecases").Reducer<unknown>>>(argumentTypes: ArgumentTypes, contextValue: ContextValue<T> | null) => Statuses;
5
+ export declare const useStatuses: <T extends ReducerMap>(argumentTypes: ArgumentTypes, contextValue: ContextValue<T> | null) => Statuses;
@@ -1,6 +1,6 @@
1
+ import { useCreation } from 'ahooks';
1
2
  import { ArgumentTypes } from '../../enums/ArgumentTypes';
2
3
  import { Statuses } from '../../enums/Statuses';
3
- import { useCreation } from 'ahooks';
4
4
  export const useStatuses = (argumentTypes, contextValue) => {
5
5
  return useCreation(() => {
6
6
  let statuses = Statuses.None;
@@ -1,19 +1,18 @@
1
- import { useCreation, useLatest } from 'ahooks';
2
- import { useContext as useContextValue } from 'react';
1
+ import { useArgumentTypes } from '../useArgumentTypes';
3
2
  import { useConstantFn } from '../useConstantFn';
4
- import { useProvider } from '../useProvider';
5
- import { initEntityReducers } from '../../methods/initEntityReducers';
3
+ import { useConstantReducers } from '../useConstantReducers';
6
4
  import { useContext } from '../useContext';
5
+ import { useContextualItem } from '../useContextualItem';
6
+ import { useEntity } from '../useEntity';
7
+ import { useFullArguments } from '../useFullArguments';
7
8
  import { useIsRenderingRef } from '../useIsRenderingRef';
8
- import { useArgumentTypes } from '../useArgumentTypes';
9
+ import { useProvider } from '../useProvider';
9
10
  import { useStatuses } from '../useStatuses';
11
+ import { createEntityReducers } from '@mic-rexjs/usecases';
12
+ import { useCreation, useLatest } from 'ahooks';
13
+ import { useContext as useContextValue } from 'react';
10
14
  import { Statuses } from '../../enums/Statuses';
11
- import { useEntity } from '../useEntity';
12
- import { useContextualItem } from '../useContextualItem';
13
- import { cacheCalls } from '../../methods/cacheCalls';
14
- import { useCompareDeps } from '../useCompareDeps';
15
- import { captureCalls } from '../../methods/captureCalls';
16
- import { useFullArguments } from '../useFullArguments';
15
+ import { methodUseCase } from '../../usecases/methodUseCase';
17
16
  export const useUseCase = ((...args) => {
18
17
  const isRenderingRef = useIsRenderingRef();
19
18
  const argumentTypes = useArgumentTypes(args);
@@ -27,10 +26,10 @@ export const useUseCase = ((...args) => {
27
26
  const entityContextValue = contextValue;
28
27
  const statuses = useStatuses(argumentTypes, contextValue);
29
28
  const optionsRef = useLatest(options);
30
- const depsKey = useCompareDeps(deps);
31
29
  const { reducers: contextReducers = null } = contextValue || {};
32
30
  const { store: contextStore = null } = entityContextValue || {};
33
- const [entity, store] = useEntity(statuses, unsafeEntity, contextStore, options, depsKey);
31
+ const [entity, store] = useEntity(statuses, unsafeEntity, contextStore, options, deps);
32
+ const { cacheCalls, captureCalls } = useConstantReducers(methodUseCase);
34
33
  const reducers = useContextualItem(contextReducers, statuses, () => {
35
34
  const opts = captureCalls(options, (key, callArgs) => {
36
35
  return optionsRef.current[key]?.(...callArgs);
@@ -39,8 +38,15 @@ export const useUseCase = ((...args) => {
39
38
  return usecase(opts);
40
39
  }
41
40
  const hookOptions = opts;
42
- return initEntityReducers(entityUseCase, store, hookOptions);
43
- }, depsKey);
41
+ const { watch, onChange, options: usecaseOptions, ...restUseCaseOptions } = hookOptions;
42
+ return createEntityReducers(store, entityUseCase, {
43
+ ...restUseCaseOptions,
44
+ ...usecaseOptions,
45
+ onGenerate(newEntity, result) {
46
+ return result;
47
+ },
48
+ });
49
+ }, deps);
44
50
  const Provider = useProvider(statuses, context, store, reducers);
45
51
  return useCreation(() => {
46
52
  if ((statuses & Statuses.EntityEnabled) !== Statuses.EntityEnabled) {
@@ -62,5 +68,5 @@ export const useUseCase = ((...args) => {
62
68
  return [newEntity, cachedReducers, Provider];
63
69
  }
64
70
  return [newEntity, cachedReducers];
65
- }, [statuses, entity, reducers, Provider, isRenderingRef]);
71
+ }, [statuses, entity, reducers, Provider, isRenderingRef, cacheCalls]);
66
72
  });