@mic-rexjs/usecases-react 2.13.1 → 2.13.4

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
- (()=>{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,b=u[2];t>3?(o=b===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<b&&(o=t<3||u[0]>n||n>b)&&(u[4]=t,u[5]=n,p.n=b,a=0))}if(o||t>1)return s;throw l=!0,n}return function(o,f,b){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&y(f,b),a=f,i=b;(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),b=p.prototype=f.prototype=Object.create(y);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(b),t}return l.prototype=p,n(b,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(b),n(b,i,"Generator"),n(b,a,function(){return this}),n(b,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:v}},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 b(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(b(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)(b(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:()=>G,useUseCase:()=>U});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,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 s=React;var f,l=r.n(s),p=function(t){return c((0,s.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(f||(f={}));var y=function(t){return c((0,s.useState)(function(){return t}),1)[0]},b=function(t,e){return p(function(){return t(e)})};const v=ahooks,d=usecases;var h;!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"}(h||(h={}));var O=(0,d.createUseCase)(function(){var t=new Map,e=(0,s.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&h.EntityEnabled)===h.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&f.Entity)!==f.Entity)return e;var i=(0,s.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&f.Entity)!==f.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}}}}),m=function(t,e,r){return p(function(){return(0,d.createEntityReducers)(t,e,r)})};function g(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.")}()}var x=r(756),j=r.n(x);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 E(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 P=(0,d.createUseCase)(function(){return function(){var e=(0,d.entityUseCase)(),r=(0,d.utilsUseCase)().createKey,n=r(),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 b=f[p],v=p>=s,d=i.includes(b);if(!v||!d){var h=Object.hasOwn(e,b),O=Object.hasOwn(r,b),m=h&&!O||!h&&O,g=e[b],x=r[b];if(m||g!==x){if(a=!1,!l)break;n(b,x,g)}}}return a},i=j().mark(function t(e,r){return j().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)}),s=j().mark(function t(e,r){var n,o,u,i,c,s;return j().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)}),f=j().mark(function t(e,r){return j().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)}),l=j().mark(function t(e,o,u){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(f(e,o),"t0",1);case 1:return t.t0||(n=null!=u?u:r()),t.abrupt("return",n);case 2:case"end":return t.stop()}},t)});return E(E({},e),{},{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 s=i.shift(),f=s.oldValue,l=s.newValue,p=s.fieldPaths,y=c(a.match(/^([^.]+)\.(.+)$/)||[],3),b=y[1],v=void 0===b?a:b,d=y[2],h=void 0===d?"":d,O=o(f,v),m=o(l,v);if(O||m){var x=O?f[v]:void 0,j=m?l[v]:void 0,w={fieldPaths:[].concat(g(p),[v]),newEntity:e,newValue:j,oldEntity:t,oldValue:x};if(h){a=h,i.push(w);continue}if(x===j)continue;u=!1,null==n||n(w)}else if(!/^\d+^/.test(v))for(var E=Array.isArray(f)?f:[],P=Array.isArray(l)?l:[],S=E.length,C=P.length,_=Math.max(S,C),M=0;M<_;M++)i.push({fieldPaths:[].concat(g(p),["".concat(M)]),newEntity:e,newValue:P[M],oldEntity:t,oldValue:E[M]})}while(i.length>0);return u},recordValue:i,recordValueDiff:s,recordValueMatch:f,recordValueMatchWith:l})}}),S=function(){var t=P().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=c(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}}},C=function(t,e,r){var n,o=c((0,m(n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],P).recordValueMatchWith)(n),2)[1],u=(0,v.useLatest)(r),a=b(S).cacheCall,i=(0,v.useMemoizedFn)(function(){var t=u.current;return a(t,{onCompare:function(){return!0}})}),s=(0,v.useCreation)(function(){return i()},[o,i]);return(0,v.useCreation)(function(){return(e&h.RootEnabled)!==h.RootEnabled&&t?t:s()},[e,t,s])};function _(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 M(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?_(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var k=["watch","onChange","options"];function V(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 R(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?V(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var A=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,d.entityUseCase)(),r=t.onInit;return R(R({},e),{},{initEntity:function(t){return"function"!=typeof r?t:r(t)}})};function D(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}var U=function(){for(var r,n=(r=(0,v.useLatest)(!0),(0,s.useEffect)(function(){r.current=!1}),r),u=arguments.length,a=new Array(u),i=0;i<u;i++)a[i]=arguments[i];var x=function(e){return p(function(){return"function"===t(c(e,2)[1])?f.Entity:f.None})}(a),j=function(t,e){var r=c(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&f.Entity)!==f.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(a,x),w=c(j,4),E=w[0],_=w[1],V=w[2],R=w[3],U=b(S).cacheCalls,N=y(_),T=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f.None,r=p(function(){return(0,O().registerUseCase)(t,e)});return(0,v.useUnmount)(function(){(0,O().unregisterUseCase)(t,e)}),r}(N,x),F=T,I=function(t,e){var r=(0,s.useContext)(t);return(0,v.useCreation)(function(){var t=h.None,n=(r||{}).store;return(e&f.Entity)===f.Entity&&(t|=h.EntityRootEnabled),t|=r?h.ContextEnabled:h.RootEnabled,n&&(t|=h.EntityEnabled),t},[e,r])}(T,x),G=function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],u=(0,v.useUpdate)(),a=(0,v.useLatest)(n),i=(0,s.useRef)(null),f=(r&h.EntityEnabled)===h.EntityEnabled,l=(r&h.EntityRootEnabled)===h.EntityRootEnabled,p=((0,s.useContext)(t)||{}).store,y=void 0===p?null:p,b=m(o,P).recordValueDiff,O=C(y,r,function(){if(!l)return new d.EntityStore(null);var t=i.current,r=c(b(o),2)[1],n=function(t,e,r){if("function"!=typeof t)return new d.EntityStore(t);var n=(e||{}).value,o=new d.EntityStore(n);return(0,(0,d.createEntityReducers)(o,A,{onInit:function(e){return t(e,r)},onReturn:function(t){return o.setValue(t),t}}).initEntity)(),o}(e,t,r);return i.current=n,n},o),g=(0,v.useMemoizedFn)(function(t,e){var r=a.current,n=r.onChange,o=r.watch;o&&function(t,e,r){for(var n,o=P().matchProperty,u=function(){var t=i[a],u=(n=c(t,2))[0],s=n[1];o(r,e,u,function(t){s(t)})},a=0,i=Object.entries(t);a<i.length;a++)u()}(o,t,e),null==n||n(t,e),l&&u()});return(0,v.useCreation)(function(){f&&O.watch(g)},[f,O,g]),(0,s.useEffect)(function(){return function(){O.unwatch(g)}},[f,O,g]),O}(F,E,I,V,R),L=function(t,e,r){var n=m(e,P),o=n.isValueChanged,u=n.recordValue,a=o(e),i=(r&h.EntityRootEnabled)!==h.EntityRootEnabled,c="function"==typeof e,s=t.value;switch(!0){case i:case c:case!a:return s}return u(e),t.disableWatchers(),t.setValue(e),t.enableWatchers(),e}(G,E,I),W=function(t,e,r,n,u){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],i=(0,v.useLatest)(u),c=((0,s.useContext)(e)||{}).reducers,f=void 0===c?null:c,l=b(S).captureCalls;return C(f,n,function(){var e=l(u,function(t,e){var r,n,o;return null===(n=(o=i.current)[t])||void 0===n?void 0:(r=n).call.apply(r,[o].concat(g(e)))});if((n&h.EntityEnabled)!==h.EntityEnabled)return t(e);var a=e,c=(a.watch,a.onChange,a.options),s=o(a,k);return(0,d.createEntityReducers)(r,t,M(M(M({},s),c),{},{onGenerate:function(t,e){return e}}))},a)}(N,T,G,I,V,R),$=function(t,e,r,n){var o=r.value,u=(0,v.useCreation)(function(){return(0,O().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,v.useLatest)(u);return y(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return l().createElement(u,{value:i},o.reduceRight(function(t,e){return l().createElement(e,{},t)},r))})}(I,T,G,W);return(0,v.useCreation)(function(){if((I&h.EntityEnabled)!==h.EntityEnabled)return W;var r=U(W,{onShouldCache:function(){return n.current}}),o=null===L,u=Array.isArray(L),a="object"!==t(L)||o||u?L:function(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?D(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},L);return[a,r,$]},[I,L,W,$,n,U])},N=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onChange,a=c(U(e,{watch:r,onChange:o}),1)[0];return(0,v.useMount)(function(){null==n||n(a)}),(0,u.jsx)(s.Fragment,{})};function T(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 F(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?T(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):T(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var I=["usecase"],G=function(t){var e=t.usecase,r=o(t,I),n=(0,U(O).getUseCaseContext)(e),a=(0,s.useContext)(n);return(0,u.jsx)(s.Fragment,{children:null===a?null:(0,u.jsx)(N,F({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})})();
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 s?o:s,c=Object.create(i.prototype);return n(c,"_invoke",function(t,n,o){var u,a,i,c=0,s=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,f}};function y(t,n){for(a=t,i=n,r=0;!l&&c&&!o&&r<s.length;r++){var o,u=s[r],y=p.p,b=u[2];t>3?(o=b===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<b&&(o=t<3||u[0]>n||n>b)&&(u[4]=t,u[5]=n,p.n=b,a=0))}if(o||t>1)return f;throw l=!0,n}return function(o,s,b){if(c>1)throw TypeError("Generator is already running");for(l&&1===s&&y(s,b),a=s,i=b;(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))!==f)break}catch(t){u=e,a=1,i=t}finally{c=1}}return{value:r,done:l}}}(t,u,a),!0),c}var f={};function s(){}function l(){}function p(){}r=Object.getPrototypeOf;var y=[][a]?r(r([][a]())):(n(r={},a,function(){return this}),r),b=p.prototype=s.prototype=Object.create(y);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,n(t,i,"GeneratorFunction")),t.prototype=Object.create(b),t}return l.prototype=p,n(b,"constructor",p),n(p,"constructor",l),l.displayName="GeneratorFunction",n(p,i,"GeneratorFunction"),n(b),n(b,i,"Generator"),n(b,a,function(){return this}),n(b,"toString",function(){return"[object Generator]"}),(t.exports=o=function(){return{w:c,m:v}},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),f=c.value;return f instanceof n?r.resolve(f.v).then(function(t){u("next",t,a,i)},function(t){u("throw",t,a,i)}):r.resolve(f).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),f=r(579);function s(){"use strict";var e=o(),r=e.m(s),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 b(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,f(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=s=function(){return{wrap:function(t,r,n,o){return e.w(b(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)(b(t),e,r,n,o)},keys:c,values:f}},t.exports.__esModule=!0,t.exports.default=t.exports)()}t.exports=s,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:()=>G,useUseCase:()=>U});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,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,f=!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){f=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(f)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 s,l=r.n(f),p=function(t){return c((0,f.useState)(t),1)[0]};!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(s||(s={}));var y=function(t){return c((0,f.useState)(function(){return t}),1)[0]},b=function(t,e){return p(function(){return t(e)})};const v=ahooks,d=usecases;var h;!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"}(h||(h={}));var O=(0,d.createUseCase)(function(){var t=new Map,e=(0,f.createContext)(null);return function(){return{createContextValue:function(t,e,r){return(r&h.EntityEnabled)===h.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&s.Entity)!==s.Entity)return e;var i=(0,f.createContext)(null);return t.set(r,{value:i,times:1}),i},unregisterUseCase:function(e,r){if((r&s.Entity)!==s.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}}}}),m=function(t,e,r){return p(function(){return(0,d.createEntityReducers)(t,e,r)})};function g(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.")}()}var x=r(756),j=r.n(x);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 E(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 P=(0,d.createUseCase)(function(){return function(){var e=(0,d.entityUseCase)(),r=(0,d.utilsUseCase)().createKey,n=r(),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),f=i.length,s=[].concat(i,c),l="function"==typeof n,p=0,y=s.length;p<y;p++){var b=s[p],v=p>=f,d=i.includes(b);if(!v||!d){var h=Object.hasOwn(e,b),O=Object.hasOwn(r,b),m=h&&!O||!h&&O,g=e[b],x=r[b];if(m||g!==x){if(a=!1,!l)break;n(b,x,g)}}}return a},i=j().mark(function t(e,r){return j().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=j().mark(function t(e,r){var n,o,u,i,c,f;return j().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,f=r.length,i.length=Math.max(c,f)),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)}),s=j().mark(function t(e,r){return j().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)}),l=j().mark(function t(e,o,u){return j().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(s(e,o),"t0",1);case 1:return t.t0||(n=null!=u?u:r()),t.abrupt("return",n);case 2:case"end":return t.stop()}},t)});return E(E({},e),{},{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(),s=f.oldValue,l=f.newValue,p=f.fieldPaths,y=c(a.match(/^([^.]+)\.(.+)$/)||[],3),b=y[1],v=void 0===b?a:b,d=y[2],h=void 0===d?"":d,O=o(s,v),m=o(l,v);if(O||m){var x=Object.getOwnPropertyDescriptor(O?s:{},v)||{},j=Object.getOwnPropertyDescriptor(m?l:{},v)||{},w=x.value,E=x.get,P=x.set,S=j.value,C=j.get,_=j.set,M={fieldPaths:[].concat(g(p),[v]),newEntity:e,newValue:S,oldEntity:t,oldValue:w};if(h){a=h,i.push(M);continue}if(!("function"!=typeof E&&"function"!=typeof P||"function"!=typeof C&&"function"!=typeof _))continue;if(S===w)continue;u=!1,null==n||n(M)}else if(!/^\d+^/.test(v))for(var k=Array.isArray(s)?s:[],R=Array.isArray(l)?l:[],V=k.length,D=R.length,A=Math.max(V,D),U=0;U<A;U++)i.push({fieldPaths:[].concat(g(p),["".concat(U)]),newEntity:e,newValue:R[U],oldEntity:t,oldValue:k[U]})}while(i.length>0);return u},recordValue:i,recordValueDiff:f,recordValueMatch:s,recordValueMatchWith:l})}}),S=function(){var t=P().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,f=i.parameters,s=i.returnValue;if(c(f,o))return s}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=c(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}}},C=function(t,e,r){var n,o=c((0,m(n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],P).recordValueMatchWith)(n),2)[1],u=(0,v.useLatest)(r),a=b(S).cacheCall,i=(0,v.useMemoizedFn)(function(){var t=u.current;return a(t,{onCompare:function(){return!0}})}),f=(0,v.useCreation)(function(){return i()},[o,i]);return(0,v.useCreation)(function(){return(e&h.RootEnabled)!==h.RootEnabled&&t?t:f()},[e,t,f])};function _(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 M(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?_(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var k=["watch","onChange","options"];function R(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 V(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?R(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var D=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(0,d.entityUseCase)(),r=t.onInit;return V(V({},e),{},{initEntity:function(t){return"function"!=typeof r?t:r(t)}})};function A(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}var U=function(){for(var r,n=(r=(0,v.useLatest)(!0),(0,f.useEffect)(function(){r.current=!1}),r),u=arguments.length,a=new Array(u),i=0;i<u;i++)a[i]=arguments[i];var x=function(e){return p(function(){return"function"===t(c(e,2)[1])?s.Entity:s.None})}(a),j=function(t,e){var r=c(t,4),n=r[0],o=r[1],u=r[2],a=r[3];return(e&s.Entity)!==s.Entity?[null,n,o||{},u||[]]:[n,o,u||{},a||[]]}(a,x),w=c(j,4),E=w[0],_=w[1],R=w[2],V=w[3],U=b(S).cacheCalls,N=y(_),F=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.None,r=p(function(){return(0,O().registerUseCase)(t,e)});return(0,v.useUnmount)(function(){(0,O().unregisterUseCase)(t,e)}),r}(N,x),T=F,I=function(t,e){var r=(0,f.useContext)(t);return(0,v.useCreation)(function(){var t=h.None,n=(r||{}).store;return(e&s.Entity)===s.Entity&&(t|=h.EntityRootEnabled),t|=r?h.ContextEnabled:h.RootEnabled,n&&(t|=h.EntityEnabled),t},[e,r])}(F,x),G=function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],u=(0,v.useUpdate)(),a=(0,v.useLatest)(n),i=(0,f.useRef)(null),s=(r&h.EntityEnabled)===h.EntityEnabled,l=(r&h.EntityRootEnabled)===h.EntityRootEnabled,p=((0,f.useContext)(t)||{}).store,y=void 0===p?null:p,b=m([],P).recordValueDiff,O=C(y,r,function(){if(!l)return new d.EntityStore(null);var t=i.current,r=c(b(o),2)[1],n=function(t,e,r){if("function"!=typeof t)return new d.EntityStore(t);var n=(e||{}).value,o=new d.EntityStore(n);return(0,(0,d.createEntityReducers)(o,D,{onInit:function(e){return t(e,r)},onReturn:function(t){return o.setValue(t),t}}).initEntity)(),o}(e,t,r);return i.current=n,n},o),g=O.value,x=(0,f.useRef)(g),j=(0,v.useMemoizedFn)(function(t,e){var r=a.current.watch;r&&function(t,e,r){for(var n,o=P().matchProperty,u=function(){var t=i[a],u=(n=c(t,2))[0],f=n[1];o(r,e,u,function(t){f(t)})},a=0,i=Object.entries(t);a<i.length;a++)u()}(r,t,e)}),w=(0,v.useMemoizedFn)(function(t,e){var r=a.current.onChange;x.current=t,j(t,e),null==r||r(t,e),l&&u()}),E=(0,v.useMemoizedFn)(function(){if(l){var t=x.current;g!==t&&(x.current=g,j(g,t))}});return(0,v.useUpdateEffect)(function(){E()},[g,E]),(0,v.useCreation)(function(){s&&O.watch(w)},[s,O,w]),(0,f.useEffect)(function(){return function(){O.unwatch(w)}},[s,O,w]),O}(T,E,I,R,V),z=function(t,e,r){var n=m(e,P),o=n.isValueChanged,u=n.recordValue,a=o(e),i=(r&h.EntityRootEnabled)!==h.EntityRootEnabled,c="function"==typeof e,f=t.value;switch(!0){case i:case c:case!a:return f}return u(e),t.disableWatchers(),t.setValue(e),t.enableWatchers(),e}(G,E,I),L=function(t,e,r,n,u){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],i=(0,v.useLatest)(u),c=((0,f.useContext)(e)||{}).reducers,s=void 0===c?null:c,l=b(S).captureCalls;return C(s,n,function(){var e=l(u,function(t,e){var r,n,o;return null===(n=(o=i.current)[t])||void 0===n?void 0:(r=n).call.apply(r,[o].concat(g(e)))});if((n&h.EntityEnabled)!==h.EntityEnabled)return t(e);var a=e,c=(a.watch,a.onChange,a.options),f=o(a,k);return(0,d.createEntityReducers)(r,t,M(M(M({},f),c),{},{onGenerate:function(t,e){return e}}))},a)}(N,F,G,I,R,V),W=function(t,e,r,n){var o=r.value,u=(0,v.useCreation)(function(){return(0,O().createContextValue)(r,n,t)},[t,o,r,n]),a=(0,v.useLatest)(u);return y(function(t){var r=t.children,n=t.with,o=void 0===n?[]:n,u=e.Provider,i=a.current;return l().createElement(u,{value:i},o.reduceRight(function(t,e){return l().createElement(e,{},t)},r))})}(I,F,G,L);return(0,v.useCreation)(function(){if((I&h.EntityEnabled)!==h.EntityEnabled)return L;var r=U(L,{onShouldCache:function(){return n.current}}),o=null===z,u=Array.isArray(z),a="object"!==t(z)||o||u?z:function(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?A(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},z);return[a,r,W]},[I,z,L,W,n,U])},N=function(t){var e=t.usecase,r=t.watch,n=t.onMount,o=t.onUpdate,a=t.onChange,i=c(U(e,{watch:r,onChange:a}),1)[0],s=(0,v.useMemoizedFn)(function(){null==o||o(i)});return(0,v.useMount)(function(){null==n||n(i)}),(0,v.useUpdateEffect)(function(){s()},[i,s]),(0,u.jsx)(f.Fragment,{})};function F(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 T(t){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?F(Object(n),!0).forEach(function(r){e(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}var I=["usecase"],G=function(t){var e=t.usecase,r=o(t,I),n=(0,U(O).getUseCaseContext)(e),a=(0,f.useContext)(n);return(0,u.jsx)(f.Fragment,{children:null===a?null:(0,u.jsx)(N,T({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,3 +1,3 @@
1
1
  import { SafeUseCaseFragmentProps } from './types';
2
2
  import { EntityReducerMap } from '@mic-rexjs/usecases/es/types';
3
- export declare const SafeUseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onMount, onChange, }: SafeUseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
3
+ export declare const SafeUseCaseFragment: <T, TEntityReducers extends EntityReducerMap<T>>({ usecase, watch, onMount, onUpdate, onChange, }: SafeUseCaseFragmentProps<T, TEntityReducers>) => React.ReactElement;
@@ -1,12 +1,13 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useUseCase } from '../../hooks/useUseCase';
4
- import { useMount } from 'ahooks';
4
+ import { useMemoizedFn, useMount, useUpdateEffect } from 'ahooks';
5
5
  import { Fragment } from 'react';
6
6
  export const SafeUseCaseFragment = _ref => {
7
7
  let usecase = _ref.usecase,
8
8
  watch = _ref.watch,
9
9
  onMount = _ref.onMount,
10
+ onUpdate = _ref.onUpdate,
10
11
  onChange = _ref.onChange;
11
12
  const _useUseCase = useUseCase(usecase, {
12
13
  watch,
@@ -14,8 +15,14 @@ export const SafeUseCaseFragment = _ref => {
14
15
  }),
15
16
  _useUseCase2 = _slicedToArray(_useUseCase, 1),
16
17
  entity = _useUseCase2[0];
18
+ const onEntityUpdate = useMemoizedFn(() => {
19
+ onUpdate === null || onUpdate === void 0 || onUpdate(entity);
20
+ });
17
21
  useMount(() => {
18
22
  onMount === null || onMount === void 0 || onMount(entity);
19
23
  });
24
+ useUpdateEffect(() => {
25
+ onEntityUpdate();
26
+ }, [entity, onEntityUpdate]);
20
27
  return _jsx(Fragment, {});
21
28
  };
@@ -4,5 +4,6 @@ export interface SafeUseCaseFragmentProps<T, TEntityReducers extends EntityReduc
4
4
  usecase: InferableEntityUseCase<T, TEntityReducers>;
5
5
  watch?: EntityWatchMap<T>;
6
6
  onMount?(entity: T): void;
7
+ onUpdate?(entity: T): void;
7
8
  onChange?(newEntity: T, oldEntity: T): void;
8
9
  }
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { useConstantEntityReducers } from '../useConstantEntityReducers';
3
3
  import { useContextualItem } from '../useContextualItem';
4
4
  import { EntityStore } from '@mic-rexjs/usecases';
5
- import { useCreation, useLatest, useMemoizedFn, useUpdate } from 'ahooks';
5
+ import { useCreation, useLatest, useMemoizedFn, useUpdate, useUpdateEffect } from 'ahooks';
6
6
  import { useContext, useEffect, useRef } from 'react';
7
7
  import { Statuses } from '../../enums/Statuses';
8
8
  import { initStore } from '../../methods/initStore';
@@ -19,7 +19,7 @@ export const useStore = function (context, entity, statuses, options) {
19
19
  const _ref = contextValue || {},
20
20
  _ref$store = _ref.store,
21
21
  contextStore = _ref$store === void 0 ? null : _ref$store;
22
- const _useConstantEntityRed = useConstantEntityReducers(deps, valueUseCase),
22
+ const _useConstantEntityRed = useConstantEntityReducers([], valueUseCase),
23
23
  recordValueDiff = _useConstantEntityRed.recordValueDiff;
24
24
  const store = useContextualItem(contextStore, statuses, () => {
25
25
  if (!entityRootEnabled) {
@@ -33,19 +33,39 @@ export const useStore = function (context, entity, statuses, options) {
33
33
  storeRef.current = newStore;
34
34
  return newStore;
35
35
  }, deps);
36
- const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
37
- const _optionsRef$current = optionsRef.current,
38
- onChange = _optionsRef$current.onChange,
39
- watch = _optionsRef$current.watch;
40
- if (watch) {
41
- triggerWatchers(watch, newEntity, oldEntity);
36
+ const value = store.value;
37
+ const prevValueRef = useRef(value);
38
+ const onTriggerWatchers = useMemoizedFn((newEntity, oldEntity) => {
39
+ const watch = optionsRef.current.watch;
40
+ if (!watch) {
41
+ return;
42
42
  }
43
+ triggerWatchers(watch, newEntity, oldEntity);
44
+ });
45
+ const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
46
+ const onChange = optionsRef.current.onChange;
47
+ prevValueRef.current = newEntity;
48
+ onTriggerWatchers(newEntity, oldEntity);
43
49
  onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
44
50
  if (!entityRootEnabled) {
45
51
  return;
46
52
  }
47
53
  update();
48
54
  });
55
+ const onValueChange = useMemoizedFn(() => {
56
+ if (!entityRootEnabled) {
57
+ return;
58
+ }
59
+ const prevValue = prevValueRef.current;
60
+ if (value === prevValue) {
61
+ return;
62
+ }
63
+ prevValueRef.current = value;
64
+ onTriggerWatchers(value, prevValue);
65
+ });
66
+ useUpdateEffect(() => {
67
+ onValueChange();
68
+ }, [value, onValueChange]);
49
69
  /**
50
70
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
51
71
  * 如果使用了 `setEntity` 则无法监控到变化
@@ -460,7 +460,7 @@ describe('useUseCase', () => {
460
460
  const _result$current6 = _slicedToArray(result.current, 2),
461
461
  setPath = _result$current6[1].setPath;
462
462
  expect(onChangedDeps).toHaveBeenCalledTimes(1);
463
- expect(onChangedDeps).toHaveBeenCalledWith([symbol, symbol, symbol, symbol, symbol, symbol]);
463
+ expect(onChangedDeps).toHaveBeenCalledWith([0, 0, 1, 'xyz', 2, false]);
464
464
  act(() => {
465
465
  setPath(PATH_1);
466
466
  });
@@ -1134,18 +1134,67 @@ describe('useUseCase', () => {
1134
1134
  oldValue: ''
1135
1135
  });
1136
1136
  });
1137
+ test('`options.watch` should be trigger after update entity by entity initializer', () => {
1138
+ const onPathChange = jest.fn();
1139
+ const _renderHook29 = renderHook(function () {
1140
+ let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1141
+ return useUseCase(function () {
1142
+ let currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
1143
+ return {
1144
+ ...currentFile,
1145
+ path
1146
+ };
1147
+ }, fileUseCase, {
1148
+ watch: {
1149
+ path: onPathChange
1150
+ }
1151
+ }, [path]);
1152
+ }),
1153
+ rerender = _renderHook29.rerender;
1154
+ expect(onPathChange).toHaveBeenCalledTimes(0);
1155
+ act(() => {
1156
+ rerender(PATH_1);
1157
+ });
1158
+ expect(onPathChange).toHaveBeenCalledTimes(1);
1159
+ expect(onPathChange).toHaveBeenLastCalledWith({
1160
+ fieldPaths: ['path'],
1161
+ newEntity: {
1162
+ ...defaultFile,
1163
+ path: PATH_1
1164
+ },
1165
+ oldEntity: defaultFile,
1166
+ newValue: PATH_1,
1167
+ oldValue: ''
1168
+ });
1169
+ act(() => {
1170
+ rerender(PATH_2);
1171
+ });
1172
+ expect(onPathChange).toHaveBeenLastCalledWith({
1173
+ fieldPaths: ['path'],
1174
+ newEntity: {
1175
+ ...defaultFile,
1176
+ path: PATH_2
1177
+ },
1178
+ oldEntity: {
1179
+ ...defaultFile,
1180
+ path: PATH_1
1181
+ },
1182
+ newValue: PATH_2,
1183
+ oldValue: PATH_1
1184
+ });
1185
+ });
1137
1186
  test('`options.watch` should trigger the latest one', () => {
1138
1187
  const onPathChange1 = jest.fn();
1139
1188
  const onPathChange2 = jest.fn();
1140
1189
  let onPathChange = onPathChange1;
1141
- const _renderHook29 = renderHook(() => {
1190
+ const _renderHook30 = renderHook(() => {
1142
1191
  return useUseCase(defaultFile, fileUseCase, {
1143
1192
  watch: {
1144
1193
  path: onPathChange
1145
1194
  }
1146
1195
  });
1147
1196
  }),
1148
- result = _renderHook29.result;
1197
+ result = _renderHook30.result;
1149
1198
  const cores = result.current;
1150
1199
  const _cores12 = _slicedToArray(cores, 2),
1151
1200
  _cores12$ = _cores12[1],
@@ -1196,7 +1245,7 @@ describe('useUseCase', () => {
1196
1245
  const initialData = {};
1197
1246
  const onExtChange = jest.fn();
1198
1247
  const onSizeChange = jest.fn();
1199
- const _renderHook30 = renderHook(() => {
1248
+ const _renderHook31 = renderHook(() => {
1200
1249
  return useUseCase(initialData, fieldPathUseCase, {
1201
1250
  watch: {
1202
1251
  'list.ext': onExtChange,
@@ -1204,7 +1253,7 @@ describe('useUseCase', () => {
1204
1253
  }
1205
1254
  });
1206
1255
  }),
1207
- result = _renderHook30.result;
1256
+ result = _renderHook31.result;
1208
1257
  const cores = result.current;
1209
1258
  const _cores13 = _slicedToArray(cores, 2),
1210
1259
  setEntity = _cores13[1].setEntity;
@@ -1548,7 +1597,7 @@ describe('useUseCase', () => {
1548
1597
  const lengthUseCase = () => {
1549
1598
  return entityUseCase();
1550
1599
  };
1551
- const _renderHook31 = renderHook(() => {
1600
+ const _renderHook32 = renderHook(() => {
1552
1601
  return useUseCase([], lengthUseCase, {
1553
1602
  watch: {
1554
1603
  length: onEntityLengthChange,
@@ -1556,7 +1605,7 @@ describe('useUseCase', () => {
1556
1605
  }
1557
1606
  });
1558
1607
  }),
1559
- result = _renderHook31.result;
1608
+ result = _renderHook32.result;
1560
1609
  const cores = result.current;
1561
1610
  const _cores14 = _slicedToArray(cores, 2),
1562
1611
  setEntity = _cores14[1].setEntity;
@@ -1591,14 +1640,14 @@ describe('useUseCase', () => {
1591
1640
  test('`options.watch` should work with field path of nested array', () => {
1592
1641
  const initialData = {};
1593
1642
  const onChange = jest.fn();
1594
- const _renderHook32 = renderHook(() => {
1643
+ const _renderHook33 = renderHook(() => {
1595
1644
  return useUseCase(initialData, fieldPathUseCase, {
1596
1645
  watch: {
1597
1646
  'nestedList.size': onChange
1598
1647
  }
1599
1648
  });
1600
1649
  }),
1601
- result = _renderHook32.result;
1650
+ result = _renderHook33.result;
1602
1651
  const cores = result.current;
1603
1652
  const _cores15 = _slicedToArray(cores, 2),
1604
1653
  setEntity = _cores15[1].setEntity;
@@ -1698,7 +1747,7 @@ describe('useUseCase', () => {
1698
1747
  const initialData = {};
1699
1748
  const onExtChange = jest.fn();
1700
1749
  const onSizeChange = jest.fn();
1701
- const _renderHook33 = renderHook(() => {
1750
+ const _renderHook34 = renderHook(() => {
1702
1751
  return useUseCase(initialData, fieldPathUseCase, {
1703
1752
  watch: {
1704
1753
  'obj.file.ext': onExtChange,
@@ -1706,7 +1755,7 @@ describe('useUseCase', () => {
1706
1755
  }
1707
1756
  });
1708
1757
  }),
1709
- result = _renderHook33.result;
1758
+ result = _renderHook34.result;
1710
1759
  const cores = result.current;
1711
1760
  const _cores16 = _slicedToArray(cores, 2),
1712
1761
  setEntity = _cores16[1].setEntity;
@@ -2375,38 +2424,38 @@ describe('useUseCase', () => {
2375
2424
  });
2376
2425
  describe('`useUseCase` should work the same as `useReducers`', () => {
2377
2426
  test('`entity` should equal `defaultFile`', () => {
2378
- const _renderHook34 = renderHook(() => {
2427
+ const _renderHook35 = renderHook(() => {
2379
2428
  return useUseCase(mathUseCase);
2380
2429
  }),
2381
- result = _renderHook34.result;
2430
+ result = _renderHook35.result;
2382
2431
  const reducers = result.current;
2383
2432
  expect(Array.isArray(reducers)).toBe(false);
2384
2433
  });
2385
2434
  test('returned reducer should work', () => {
2386
- const _renderHook35 = renderHook(() => {
2435
+ const _renderHook36 = renderHook(() => {
2387
2436
  return useUseCase(mathUseCase);
2388
2437
  }),
2389
- result = _renderHook35.result;
2438
+ result = _renderHook36.result;
2390
2439
  const reducers = result.current;
2391
2440
  const add = reducers.add;
2392
2441
  expect(add(1, 2)).toBe(3);
2393
2442
  });
2394
2443
  test('`usecase` should be called only once if deps has not provided', () => {
2395
2444
  const mockUseCase = jest.fn(mathUseCase);
2396
- const _renderHook36 = renderHook(() => {
2445
+ const _renderHook37 = renderHook(() => {
2397
2446
  return useUseCase(mockUseCase);
2398
2447
  }),
2399
- rerender = _renderHook36.rerender;
2448
+ rerender = _renderHook37.rerender;
2400
2449
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2401
2450
  rerender();
2402
2451
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2403
2452
  });
2404
2453
  test('`usecase` should be called only once if deps has not changed', () => {
2405
2454
  const mockUseCase = jest.fn(mathUseCase);
2406
- const _renderHook37 = renderHook(() => {
2455
+ const _renderHook38 = renderHook(() => {
2407
2456
  return useUseCase(mockUseCase, {}, [1, 'x']);
2408
2457
  }),
2409
- rerender = _renderHook37.rerender;
2458
+ rerender = _renderHook38.rerender;
2410
2459
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2411
2460
  rerender();
2412
2461
  expect(mockUseCase).toHaveBeenCalledTimes(1);
@@ -2414,10 +2463,10 @@ describe('useUseCase', () => {
2414
2463
  test('`usecase` should be called if deps has changed', () => {
2415
2464
  let i = 0;
2416
2465
  const mockUseCase = jest.fn(mathUseCase);
2417
- const _renderHook38 = renderHook(() => {
2466
+ const _renderHook39 = renderHook(() => {
2418
2467
  return useUseCase(mockUseCase, {}, [i++, 'x']);
2419
2468
  }),
2420
- rerender = _renderHook38.rerender;
2469
+ rerender = _renderHook39.rerender;
2421
2470
  expect(mockUseCase).toHaveBeenCalledTimes(1);
2422
2471
  rerender();
2423
2472
  expect(mockUseCase).toHaveBeenCalledTimes(2);
@@ -2501,12 +2550,12 @@ describe('useUseCase', () => {
2501
2550
  expect(subtractionReducer).toHaveReturnedWith(4);
2502
2551
  });
2503
2552
  test('`options.extraValue` should be added after call `add` method', () => {
2504
- const _renderHook39 = renderHook(() => {
2553
+ const _renderHook40 = renderHook(() => {
2505
2554
  return useUseCase(mathUseCase, {
2506
2555
  extraValue: 5
2507
2556
  });
2508
2557
  }),
2509
- result = _renderHook39.result;
2558
+ result = _renderHook40.result;
2510
2559
  const reducers = result.current;
2511
2560
  const add = reducers.add;
2512
2561
  expect(add(1, 2)).toBe(8);
@@ -2514,7 +2563,7 @@ describe('useUseCase', () => {
2514
2563
  test('when `options` has changed, it should not trigger update', () => {
2515
2564
  const onUpdate = jest.fn();
2516
2565
  const onDeepUpdate = jest.fn();
2517
- const _renderHook40 = renderHook(() => {
2566
+ const _renderHook41 = renderHook(() => {
2518
2567
  const _useState7 = useState(0),
2519
2568
  _useState8 = _slicedToArray(_useState7, 2),
2520
2569
  extraValue = _useState8[0],
@@ -2530,7 +2579,7 @@ describe('useUseCase', () => {
2530
2579
  }, [reducers]);
2531
2580
  return setExtraValue;
2532
2581
  }),
2533
- result = _renderHook40.result;
2582
+ result = _renderHook41.result;
2534
2583
  expect(onUpdate).toHaveBeenCalledTimes(0);
2535
2584
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2536
2585
  act(() => {
@@ -2542,7 +2591,7 @@ describe('useUseCase', () => {
2542
2591
  test('when `deps` change, it should update reducers', () => {
2543
2592
  const onUpdate = jest.fn();
2544
2593
  const onDeepUpdate = jest.fn();
2545
- const _renderHook41 = renderHook(() => {
2594
+ const _renderHook42 = renderHook(() => {
2546
2595
  const _useState9 = useState(0),
2547
2596
  _useState0 = _slicedToArray(_useState9, 2),
2548
2597
  extraValue = _useState0[0],
@@ -2558,7 +2607,7 @@ describe('useUseCase', () => {
2558
2607
  }, [reducers]);
2559
2608
  return setExtraValue;
2560
2609
  }),
2561
- result = _renderHook41.result;
2610
+ result = _renderHook42.result;
2562
2611
  expect(onUpdate).toHaveBeenCalledTimes(0);
2563
2612
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2564
2613
  act(() => {
@@ -2570,7 +2619,7 @@ describe('useUseCase', () => {
2570
2619
  test('empty `deps` should not update reducers', () => {
2571
2620
  const onUpdate = jest.fn();
2572
2621
  const onDeepUpdate = jest.fn();
2573
- const _renderHook42 = renderHook(() => {
2622
+ const _renderHook43 = renderHook(() => {
2574
2623
  const _useState1 = useState(0),
2575
2624
  _useState10 = _slicedToArray(_useState1, 2),
2576
2625
  extraValue = _useState10[0],
@@ -2586,7 +2635,7 @@ describe('useUseCase', () => {
2586
2635
  }, [reducers]);
2587
2636
  return setExtraValue;
2588
2637
  }),
2589
- result = _renderHook42.result;
2638
+ result = _renderHook43.result;
2590
2639
  expect(onUpdate).toHaveBeenCalledTimes(0);
2591
2640
  expect(onDeepUpdate).toHaveBeenCalledTimes(0);
2592
2641
  act(() => {
@@ -82,21 +82,37 @@ export const valueUseCase = createUseCase(() => {
82
82
  const hasOldField = hasField(oldValue, key);
83
83
  const hasNewField = hasField(newValue, key);
84
84
  if (hasOldField || hasNewField) {
85
- const subOldValue = hasOldField ? oldValue[key] : void 0;
86
- const subNewValue = hasNewField ? newValue[key] : void 0;
85
+ const oldFieldDescriptor = Object.getOwnPropertyDescriptor(hasOldField ? oldValue : {}, key) || {};
86
+ const newFieldDescriptor = Object.getOwnPropertyDescriptor(hasNewField ? newValue : {}, key) || {};
87
+ const oldSubValue = oldFieldDescriptor.value,
88
+ oldFieldGet = oldFieldDescriptor.get,
89
+ oldFieldSet = oldFieldDescriptor.set;
90
+ const newSubValue = newFieldDescriptor.value,
91
+ newFieldGet = newFieldDescriptor.get,
92
+ newFieldSet = newFieldDescriptor.set;
87
93
  const result = {
88
94
  fieldPaths: [...fieldPaths, key],
89
95
  newEntity: value,
90
- newValue: subNewValue,
96
+ newValue: newSubValue,
91
97
  oldEntity: entity,
92
- oldValue: subOldValue
98
+ oldValue: oldSubValue
93
99
  };
94
100
  if (subFieldPath) {
95
101
  currentFieldPath = subFieldPath;
96
102
  list.push(result);
97
103
  continue;
98
104
  }
99
- if (subOldValue === subNewValue) {
105
+ const hasOldFieldGet = typeof oldFieldGet === 'function';
106
+ const hasOldFieldSet = typeof oldFieldSet === 'function';
107
+ const hasNewFieldGet = typeof newFieldGet === 'function';
108
+ const hasNewFieldSet = typeof newFieldSet === 'function';
109
+ const hasOldFieldAccessor = hasOldFieldGet || hasOldFieldSet;
110
+ const hasNewFieldAccessor = hasNewFieldGet || hasNewFieldSet;
111
+ // 如果都是访问器
112
+ if (hasOldFieldAccessor && hasNewFieldAccessor) {
113
+ continue;
114
+ }
115
+ if (newSubValue === oldSubValue) {
100
116
  continue;
101
117
  }
102
118
  allMatched = false;
@@ -14,6 +14,7 @@ var SafeUseCaseFragment = exports.SafeUseCaseFragment = function SafeUseCaseFrag
14
14
  var usecase = _ref.usecase,
15
15
  watch = _ref.watch,
16
16
  onMount = _ref.onMount,
17
+ onUpdate = _ref.onUpdate,
17
18
  onChange = _ref.onChange;
18
19
  var _useUseCase = (0, _useUseCase3.useUseCase)(usecase, {
19
20
  watch: watch,
@@ -21,8 +22,14 @@ var SafeUseCaseFragment = exports.SafeUseCaseFragment = function SafeUseCaseFrag
21
22
  }),
22
23
  _useUseCase2 = (0, _slicedToArray2["default"])(_useUseCase, 1),
23
24
  entity = _useUseCase2[0];
25
+ var onEntityUpdate = (0, _ahooks.useMemoizedFn)(function () {
26
+ onUpdate === null || onUpdate === void 0 || onUpdate(entity);
27
+ });
24
28
  (0, _ahooks.useMount)(function () {
25
29
  onMount === null || onMount === void 0 || onMount(entity);
26
30
  });
31
+ (0, _ahooks.useUpdateEffect)(function () {
32
+ onEntityUpdate();
33
+ }, [entity, onEntityUpdate]);
27
34
  return (0, _jsxRuntime.jsx)(_react.Fragment, {});
28
35
  };
@@ -26,7 +26,7 @@ var useStore = exports.useStore = function useStore(context, entity, statuses, o
26
26
  var _ref = contextValue || {},
27
27
  _ref$store = _ref.store,
28
28
  contextStore = _ref$store === void 0 ? null : _ref$store;
29
- var _useConstantEntityRed = (0, _useConstantEntityReducers.useConstantEntityReducers)(deps, _valueUseCase.valueUseCase),
29
+ var _useConstantEntityRed = (0, _useConstantEntityReducers.useConstantEntityReducers)([], _valueUseCase.valueUseCase),
30
30
  recordValueDiff = _useConstantEntityRed.recordValueDiff;
31
31
  var store = (0, _useContextualItem.useContextualItem)(contextStore, statuses, function () {
32
32
  if (!entityRootEnabled) {
@@ -40,19 +40,39 @@ var useStore = exports.useStore = function useStore(context, entity, statuses, o
40
40
  storeRef.current = newStore;
41
41
  return newStore;
42
42
  }, deps);
43
- var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
44
- var _optionsRef$current = optionsRef.current,
45
- onChange = _optionsRef$current.onChange,
46
- watch = _optionsRef$current.watch;
47
- if (watch) {
48
- (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
43
+ var value = store.value;
44
+ var prevValueRef = (0, _react.useRef)(value);
45
+ var onTriggerWatchers = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
46
+ var watch = optionsRef.current.watch;
47
+ if (!watch) {
48
+ return;
49
49
  }
50
+ (0, _triggerWatchers.triggerWatchers)(watch, newEntity, oldEntity);
51
+ });
52
+ var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
53
+ var onChange = optionsRef.current.onChange;
54
+ prevValueRef.current = newEntity;
55
+ onTriggerWatchers(newEntity, oldEntity);
50
56
  onChange === null || onChange === void 0 || onChange(newEntity, oldEntity);
51
57
  if (!entityRootEnabled) {
52
58
  return;
53
59
  }
54
60
  update();
55
61
  });
62
+ var onValueChange = (0, _ahooks.useMemoizedFn)(function () {
63
+ if (!entityRootEnabled) {
64
+ return;
65
+ }
66
+ var prevValue = prevValueRef.current;
67
+ if (value === prevValue) {
68
+ return;
69
+ }
70
+ prevValueRef.current = value;
71
+ onTriggerWatchers(value, prevValue);
72
+ });
73
+ (0, _ahooks.useUpdateEffect)(function () {
74
+ onValueChange();
75
+ }, [value, onValueChange]);
56
76
  /**
57
77
  * 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
58
78
  * 如果使用了 `setEntity` 则无法监控到变化
@@ -550,7 +550,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
550
550
  var _result$current6 = (0, _slicedToArray2["default"])(result.current, 2),
551
551
  setPath = _result$current6[1].setPath;
552
552
  (0, _globals.expect)(onChangedDeps).toHaveBeenCalledTimes(1);
553
- (0, _globals.expect)(onChangedDeps).toHaveBeenCalledWith([symbol, symbol, symbol, symbol, symbol, symbol]);
553
+ (0, _globals.expect)(onChangedDeps).toHaveBeenCalledWith([0, 0, 1, 'xyz', 2, false]);
554
554
  (0, _react.act)(function () {
555
555
  setPath(PATH_1);
556
556
  });
@@ -1210,18 +1210,63 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1210
1210
  oldValue: ''
1211
1211
  });
1212
1212
  });
1213
+ (0, _globals.test)('`options.watch` should be trigger after update entity by entity initializer', function () {
1214
+ var onPathChange = _globals.jest.fn();
1215
+ var _renderHook29 = (0, _react.renderHook)(function () {
1216
+ var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1217
+ return (0, _.useUseCase)(function () {
1218
+ var currentFile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFile;
1219
+ return _objectSpread(_objectSpread({}, currentFile), {}, {
1220
+ path: path
1221
+ });
1222
+ }, fileUseCase, {
1223
+ watch: {
1224
+ path: onPathChange
1225
+ }
1226
+ }, [path]);
1227
+ }),
1228
+ rerender = _renderHook29.rerender;
1229
+ (0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(0);
1230
+ (0, _react.act)(function () {
1231
+ rerender(PATH_1);
1232
+ });
1233
+ (0, _globals.expect)(onPathChange).toHaveBeenCalledTimes(1);
1234
+ (0, _globals.expect)(onPathChange).toHaveBeenLastCalledWith({
1235
+ fieldPaths: ['path'],
1236
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1237
+ path: PATH_1
1238
+ }),
1239
+ oldEntity: defaultFile,
1240
+ newValue: PATH_1,
1241
+ oldValue: ''
1242
+ });
1243
+ (0, _react.act)(function () {
1244
+ rerender(PATH_2);
1245
+ });
1246
+ (0, _globals.expect)(onPathChange).toHaveBeenLastCalledWith({
1247
+ fieldPaths: ['path'],
1248
+ newEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1249
+ path: PATH_2
1250
+ }),
1251
+ oldEntity: _objectSpread(_objectSpread({}, defaultFile), {}, {
1252
+ path: PATH_1
1253
+ }),
1254
+ newValue: PATH_2,
1255
+ oldValue: PATH_1
1256
+ });
1257
+ });
1213
1258
  (0, _globals.test)('`options.watch` should trigger the latest one', function () {
1214
1259
  var onPathChange1 = _globals.jest.fn();
1215
1260
  var onPathChange2 = _globals.jest.fn();
1216
1261
  var onPathChange = onPathChange1;
1217
- var _renderHook29 = (0, _react.renderHook)(function () {
1262
+ var _renderHook30 = (0, _react.renderHook)(function () {
1218
1263
  return (0, _.useUseCase)(defaultFile, fileUseCase, {
1219
1264
  watch: {
1220
1265
  path: onPathChange
1221
1266
  }
1222
1267
  });
1223
1268
  }),
1224
- result = _renderHook29.result;
1269
+ result = _renderHook30.result;
1225
1270
  var cores = result.current;
1226
1271
  var _cores12 = (0, _slicedToArray2["default"])(cores, 2),
1227
1272
  _cores12$ = _cores12[1],
@@ -1269,7 +1314,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1269
1314
  var initialData = {};
1270
1315
  var onExtChange = _globals.jest.fn();
1271
1316
  var onSizeChange = _globals.jest.fn();
1272
- var _renderHook30 = (0, _react.renderHook)(function () {
1317
+ var _renderHook31 = (0, _react.renderHook)(function () {
1273
1318
  return (0, _.useUseCase)(initialData, fieldPathUseCase, {
1274
1319
  watch: {
1275
1320
  'list.ext': onExtChange,
@@ -1277,7 +1322,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1277
1322
  }
1278
1323
  });
1279
1324
  }),
1280
- result = _renderHook30.result;
1325
+ result = _renderHook31.result;
1281
1326
  var cores = result.current;
1282
1327
  var _cores13 = (0, _slicedToArray2["default"])(cores, 2),
1283
1328
  setEntity = _cores13[1].setEntity;
@@ -1575,7 +1620,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1575
1620
  var lengthUseCase = function lengthUseCase() {
1576
1621
  return (0, _usecases.entityUseCase)();
1577
1622
  };
1578
- var _renderHook31 = (0, _react.renderHook)(function () {
1623
+ var _renderHook32 = (0, _react.renderHook)(function () {
1579
1624
  return (0, _.useUseCase)([], lengthUseCase, {
1580
1625
  watch: {
1581
1626
  length: onEntityLengthChange,
@@ -1583,7 +1628,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1583
1628
  }
1584
1629
  });
1585
1630
  }),
1586
- result = _renderHook31.result;
1631
+ result = _renderHook32.result;
1587
1632
  var cores = result.current;
1588
1633
  var _cores14 = (0, _slicedToArray2["default"])(cores, 2),
1589
1634
  setEntity = _cores14[1].setEntity;
@@ -1618,14 +1663,14 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1618
1663
  (0, _globals.test)('`options.watch` should work with field path of nested array', function () {
1619
1664
  var initialData = {};
1620
1665
  var onChange = _globals.jest.fn();
1621
- var _renderHook32 = (0, _react.renderHook)(function () {
1666
+ var _renderHook33 = (0, _react.renderHook)(function () {
1622
1667
  return (0, _.useUseCase)(initialData, fieldPathUseCase, {
1623
1668
  watch: {
1624
1669
  'nestedList.size': onChange
1625
1670
  }
1626
1671
  });
1627
1672
  }),
1628
- result = _renderHook32.result;
1673
+ result = _renderHook33.result;
1629
1674
  var cores = result.current;
1630
1675
  var _cores15 = (0, _slicedToArray2["default"])(cores, 2),
1631
1676
  setEntity = _cores15[1].setEntity;
@@ -1713,7 +1758,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1713
1758
  var initialData = {};
1714
1759
  var onExtChange = _globals.jest.fn();
1715
1760
  var onSizeChange = _globals.jest.fn();
1716
- var _renderHook33 = (0, _react.renderHook)(function () {
1761
+ var _renderHook34 = (0, _react.renderHook)(function () {
1717
1762
  return (0, _.useUseCase)(initialData, fieldPathUseCase, {
1718
1763
  watch: {
1719
1764
  'obj.file.ext': onExtChange,
@@ -1721,7 +1766,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
1721
1766
  }
1722
1767
  });
1723
1768
  }),
1724
- result = _renderHook33.result;
1769
+ result = _renderHook34.result;
1725
1770
  var cores = result.current;
1726
1771
  var _cores16 = (0, _slicedToArray2["default"])(cores, 2),
1727
1772
  setEntity = _cores16[1].setEntity;
@@ -2377,38 +2422,38 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2377
2422
  });
2378
2423
  (0, _globals.describe)('`useUseCase` should work the same as `useReducers`', function () {
2379
2424
  (0, _globals.test)('`entity` should equal `defaultFile`', function () {
2380
- var _renderHook34 = (0, _react.renderHook)(function () {
2425
+ var _renderHook35 = (0, _react.renderHook)(function () {
2381
2426
  return (0, _.useUseCase)(mathUseCase);
2382
2427
  }),
2383
- result = _renderHook34.result;
2428
+ result = _renderHook35.result;
2384
2429
  var reducers = result.current;
2385
2430
  (0, _globals.expect)(Array.isArray(reducers)).toBe(false);
2386
2431
  });
2387
2432
  (0, _globals.test)('returned reducer should work', function () {
2388
- var _renderHook35 = (0, _react.renderHook)(function () {
2433
+ var _renderHook36 = (0, _react.renderHook)(function () {
2389
2434
  return (0, _.useUseCase)(mathUseCase);
2390
2435
  }),
2391
- result = _renderHook35.result;
2436
+ result = _renderHook36.result;
2392
2437
  var reducers = result.current;
2393
2438
  var add = reducers.add;
2394
2439
  (0, _globals.expect)(add(1, 2)).toBe(3);
2395
2440
  });
2396
2441
  (0, _globals.test)('`usecase` should be called only once if deps has not provided', function () {
2397
2442
  var mockUseCase = _globals.jest.fn(mathUseCase);
2398
- var _renderHook36 = (0, _react.renderHook)(function () {
2443
+ var _renderHook37 = (0, _react.renderHook)(function () {
2399
2444
  return (0, _.useUseCase)(mockUseCase);
2400
2445
  }),
2401
- rerender = _renderHook36.rerender;
2446
+ rerender = _renderHook37.rerender;
2402
2447
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2403
2448
  rerender();
2404
2449
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2405
2450
  });
2406
2451
  (0, _globals.test)('`usecase` should be called only once if deps has not changed', function () {
2407
2452
  var mockUseCase = _globals.jest.fn(mathUseCase);
2408
- var _renderHook37 = (0, _react.renderHook)(function () {
2453
+ var _renderHook38 = (0, _react.renderHook)(function () {
2409
2454
  return (0, _.useUseCase)(mockUseCase, {}, [1, 'x']);
2410
2455
  }),
2411
- rerender = _renderHook37.rerender;
2456
+ rerender = _renderHook38.rerender;
2412
2457
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2413
2458
  rerender();
2414
2459
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
@@ -2416,10 +2461,10 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2416
2461
  (0, _globals.test)('`usecase` should be called if deps has changed', function () {
2417
2462
  var i = 0;
2418
2463
  var mockUseCase = _globals.jest.fn(mathUseCase);
2419
- var _renderHook38 = (0, _react.renderHook)(function () {
2464
+ var _renderHook39 = (0, _react.renderHook)(function () {
2420
2465
  return (0, _.useUseCase)(mockUseCase, {}, [i++, 'x']);
2421
2466
  }),
2422
- rerender = _renderHook38.rerender;
2467
+ rerender = _renderHook39.rerender;
2423
2468
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
2424
2469
  rerender();
2425
2470
  (0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
@@ -2503,12 +2548,12 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2503
2548
  (0, _globals.expect)(subtractionReducer).toHaveReturnedWith(4);
2504
2549
  });
2505
2550
  (0, _globals.test)('`options.extraValue` should be added after call `add` method', function () {
2506
- var _renderHook39 = (0, _react.renderHook)(function () {
2551
+ var _renderHook40 = (0, _react.renderHook)(function () {
2507
2552
  return (0, _.useUseCase)(mathUseCase, {
2508
2553
  extraValue: 5
2509
2554
  });
2510
2555
  }),
2511
- result = _renderHook39.result;
2556
+ result = _renderHook40.result;
2512
2557
  var reducers = result.current;
2513
2558
  var add = reducers.add;
2514
2559
  (0, _globals.expect)(add(1, 2)).toBe(8);
@@ -2516,7 +2561,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2516
2561
  (0, _globals.test)('when `options` has changed, it should not trigger update', function () {
2517
2562
  var onUpdate = _globals.jest.fn();
2518
2563
  var onDeepUpdate = _globals.jest.fn();
2519
- var _renderHook40 = (0, _react.renderHook)(function () {
2564
+ var _renderHook41 = (0, _react.renderHook)(function () {
2520
2565
  var _useState7 = (0, _react2.useState)(0),
2521
2566
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
2522
2567
  extraValue = _useState8[0],
@@ -2532,7 +2577,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2532
2577
  }, [reducers]);
2533
2578
  return setExtraValue;
2534
2579
  }),
2535
- result = _renderHook40.result;
2580
+ result = _renderHook41.result;
2536
2581
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2537
2582
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2538
2583
  (0, _react.act)(function () {
@@ -2544,7 +2589,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2544
2589
  (0, _globals.test)('when `deps` change, it should update reducers', function () {
2545
2590
  var onUpdate = _globals.jest.fn();
2546
2591
  var onDeepUpdate = _globals.jest.fn();
2547
- var _renderHook41 = (0, _react.renderHook)(function () {
2592
+ var _renderHook42 = (0, _react.renderHook)(function () {
2548
2593
  var _useState9 = (0, _react2.useState)(0),
2549
2594
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
2550
2595
  extraValue = _useState0[0],
@@ -2560,7 +2605,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2560
2605
  }, [reducers]);
2561
2606
  return setExtraValue;
2562
2607
  }),
2563
- result = _renderHook41.result;
2608
+ result = _renderHook42.result;
2564
2609
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2565
2610
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2566
2611
  (0, _react.act)(function () {
@@ -2572,7 +2617,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2572
2617
  (0, _globals.test)('empty `deps` should not update reducers', function () {
2573
2618
  var onUpdate = _globals.jest.fn();
2574
2619
  var onDeepUpdate = _globals.jest.fn();
2575
- var _renderHook42 = (0, _react.renderHook)(function () {
2620
+ var _renderHook43 = (0, _react.renderHook)(function () {
2576
2621
  var _useState1 = (0, _react2.useState)(0),
2577
2622
  _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
2578
2623
  extraValue = _useState10[0],
@@ -2588,7 +2633,7 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
2588
2633
  }, [reducers]);
2589
2634
  return setExtraValue;
2590
2635
  }),
2591
- result = _renderHook42.result;
2636
+ result = _renderHook43.result;
2592
2637
  (0, _globals.expect)(onUpdate).toHaveBeenCalledTimes(0);
2593
2638
  (0, _globals.expect)(onDeepUpdate).toHaveBeenCalledTimes(0);
2594
2639
  (0, _react.act)(function () {
@@ -95,21 +95,37 @@ var valueUseCase = exports.valueUseCase = (0, _usecases.createUseCase)(function
95
95
  var hasOldField = hasField(oldValue, key);
96
96
  var hasNewField = hasField(newValue, key);
97
97
  if (hasOldField || hasNewField) {
98
- var subOldValue = hasOldField ? oldValue[key] : void 0;
99
- var subNewValue = hasNewField ? newValue[key] : void 0;
98
+ var oldFieldDescriptor = Object.getOwnPropertyDescriptor(hasOldField ? oldValue : {}, key) || {};
99
+ var newFieldDescriptor = Object.getOwnPropertyDescriptor(hasNewField ? newValue : {}, key) || {};
100
+ var oldSubValue = oldFieldDescriptor.value,
101
+ oldFieldGet = oldFieldDescriptor.get,
102
+ oldFieldSet = oldFieldDescriptor.set;
103
+ var newSubValue = newFieldDescriptor.value,
104
+ newFieldGet = newFieldDescriptor.get,
105
+ newFieldSet = newFieldDescriptor.set;
100
106
  var result = {
101
107
  fieldPaths: [].concat((0, _toConsumableArray2["default"])(fieldPaths), [key]),
102
108
  newEntity: value,
103
- newValue: subNewValue,
109
+ newValue: newSubValue,
104
110
  oldEntity: entity,
105
- oldValue: subOldValue
111
+ oldValue: oldSubValue
106
112
  };
107
113
  if (subFieldPath) {
108
114
  currentFieldPath = subFieldPath;
109
115
  list.push(result);
110
116
  continue;
111
117
  }
112
- if (subOldValue === subNewValue) {
118
+ var hasOldFieldGet = typeof oldFieldGet === 'function';
119
+ var hasOldFieldSet = typeof oldFieldSet === 'function';
120
+ var hasNewFieldGet = typeof newFieldGet === 'function';
121
+ var hasNewFieldSet = typeof newFieldSet === 'function';
122
+ var hasOldFieldAccessor = hasOldFieldGet || hasOldFieldSet;
123
+ var hasNewFieldAccessor = hasNewFieldGet || hasNewFieldSet;
124
+ // 如果都是访问器
125
+ if (hasOldFieldAccessor && hasNewFieldAccessor) {
126
+ continue;
127
+ }
128
+ if (newSubValue === oldSubValue) {
113
129
  continue;
114
130
  }
115
131
  allMatched = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "2.13.1",
3
+ "version": "2.13.4",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "license": "MIT",
37
37
  "peerDependencies": {
38
- "@mic-rexjs/usecases": "^3.0.3",
38
+ "@mic-rexjs/usecases": "^3.0.4",
39
39
  "react": ">=16.8.0"
40
40
  },
41
41
  "dependencies": {
@@ -54,7 +54,7 @@
54
54
  "@eslint/js": "^10.0.1",
55
55
  "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
56
56
  "@jest/globals": "^30.3.0",
57
- "@mic-rexjs/usecases": "^3.0.3",
57
+ "@mic-rexjs/usecases": "^3.0.4",
58
58
  "@testing-library/dom": "^10.4.1",
59
59
  "@testing-library/react": "^16.3.2",
60
60
  "@types/node": "^25.6.0",