@mic-rexjs/usecases-react 2.9.0 → 2.9.2
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={20:(t,e,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,n){var r,c={},l=null,f=null;for(r in void 0!==n&&(l=""+n),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(c[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===c[r]&&(c[r]=e[r]);return{$$typeof:o,type:t,key:l,ref:f,props:c,_owner:a.current}}},848:(t,e,n)=>{"use strict";t.exports=n(20)},594:t=>{"use strict";t.exports=React}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var u=e[r]={exports:{}};return t[r](u,u.exports,n),u.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>x,useUseCase:()=>_});var t=n(848),e=n(594),o=n.n(e);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function i(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(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 c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,u,a,i=[],c=!0,l=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return i}}(t,e)||a(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 l=ahooks;var f=function(t){return c((0,e.useState)((function(){return t})),1)[0]},s=function(t){return c((0,e.useState)(t),1)[0]};const y=usecases;var v,d;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(v||(v={})),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"}(d||(d={}));var b=(0,y.createUseCase)((function(){var t=new Map,n=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,n){return(n&d.EntityEnabled)===d.EntityEnabled?{store:t,reducers:e,statuses:n}:{reducers:e,statuses:n}},registerUseCase:function(r,o){if(t.has(r)){var u=t.get(r),a=u.value,i=u.times;return t.set(r,{value:a,times:i+1}),a}if((o&v.Entity)!==v.Entity)return n;var c=(0,e.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,n){if((n&v.Entity)!==v.Entity)return!1;if(!t.has(e))return!1;var r=t.get(e),o=r.value,u=r.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),p=function(){return s((function(){return b()}))};function E(t){return 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},E(t)}function m(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:String(e)}var h=["watch","onChange","options"];function g(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?g(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=m(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var w=function(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0},j=function(t,e){var n,r=e||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(t,e){return w(t,e)}:a;return function(){for(var e=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&e){var c=n,l=c.parameters,f=c.returnValue;if(i(l,o))return f}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},S=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,l.useLatest)(n),u=(0,l.useCreation)((function(){return j(o.current,{onCompare:function(){return!0}})}),[r,o]);return(0,l.useCreation)((function(){return(e&d.RootEnabled)!==d.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===E(t)&&null!==t&&Object.hasOwn(t,e)},R=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,l=c(r.match(/^([^.]+)\.(.+)$/)||[],3),f=l[1],s=void 0===f?r:f,y=l[2],v=void 0===y?"":y,d=C(e,s),b=C(n,s),p=[].concat(i(u),[s]);if(d||b){var E=d?e[s]:a,m=b?n[s]:a;if(v)return void t(E,m,v,o,p);if(E===m)return;o(E,m,p)}else if(!/^\d+^/.test(s))for(var h=Array.isArray(e)?e:[],g=Array.isArray(n)?n:[],O=h.length,w=g.length,j=Math.max(O,w),S=0;S<j;S++)t(h[S],g[S],r,o,[].concat(i(u),["".concat(S)]))},P=function(t,e,n){for(var r=function(){var t=c(u[o],2),r=t[0],a=t[1];R(n,e,r,(function(t,r,o){a({fieldPaths:o,newEntity:e,oldEntity:n,newValue:r,oldValue:t})}))},o=0,u=Object.entries(t);o<u.length;o++)r()},_=function(){for(var t,n=((t=(0,e.useRef)(!0)).current=!0,(0,e.useEffect)((function(){t.current=!1})),t),r=arguments.length,u=new Array(r),a=0;a<r;a++)u[a]=arguments[a];var b=function(t){return s((function(){var e=v.None;return"function"===E(c(t,2)[1])&&(e|=v.Entity),e}))}(u),m=function(t,e){var n=c(t,4),r=n[0],o=n[1],u=n[2],a=n[3];return(e&v.Entity)!==v.Entity?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,b),g=c(m,4),C=g[0],R=g[1],_=g[2],x=g[3],A=f(R),U=A,M=A,N=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v.None,n=p(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(t,e)}));return(0,l.useUnmount)((function(){o(t,e)})),u}(A,b),I=(0,e.useContext)(N),k=I,T=function(t,e){return(0,l.useCreation)((function(){var n=d.None,r=(e||{}).store;return(t&v.Entity)===v.Entity&&(n|=d.EntityRootEnabled),n|=e?d.ContextEnabled:d.RootEnabled,r&&(n|=d.EntityEnabled),n}),[t,e])}(b,I),L=(0,l.useLatest)(_),D=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=w(t,o);return r.current=t,n.current+=u?0:1,n.current}(x),V=(I||{}).reducers,F=void 0===V?null:V,$=(k||{}).store,z=c(function(t,n,r,o,u){var a=(0,l.useUpdate)(),i=(0,e.useRef)(),c=(0,l.useLatest)(o),f=r?r.value:null,s=(t&d.EntityEnabled)===d.EntityEnabled,v=(t&d.EntityRootEnabled)===d.EntityRootEnabled,b=S(r,t,(function(){var t;if(!v)return new y.EntityStore(null);var e="function"==typeof n?n(null===(t=i.current)||void 0===t?void 0:t.value):n;return new y.EntityStore(e)}),u),p=function(t,n,r,o){var u=(0,e.useRef)(n);if((o&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return t.value}return u.current=n,n}(b,n,f,t),E=(0,l.useMemoizedFn)((function(t,e){var n=c.current,r=n.onChange,o=n.watch;o&&P(o,t,e),null==r||r(t,e),v&&a()}));return i.current=b,v&&(b.value=p),(0,e.useEffect)((function(){if(s)return b.watch(E),function(){b.unwatch(E)}}),[s,b,E]),(0,l.useCreation)((function(){return[p,b]}),[p,b])}(T,C,void 0===$?null:$,_,D),2),B=z[0],G=z[1],W=S(F,T,(function(){var t,e,n,r=(t=_,e=function(t,e){var n,r;return null===(n=(r=L.current)[t])||void 0===n?void 0:n.call.apply(n,[r].concat(i(e)))},n={},Object.keys(t).forEach((function(r){var o=t[r];n[r]="function"!=typeof o?o:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(r,n)}})),n);return(T&d.EntityEnabled)!==d.EntityEnabled?U(r):function(t,e,n){n.watch,n.onChange;var r=n.options,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},u=Object.keys(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,h);return(0,y.createEntityReducers)(e,t,O(O(O({},o),r),{},{onGenerate:function(t,e){return e}}))}(M,G,r)}),D),Y=function(t,n,r,u){var a=r.value,i=p().createContextValue,c=(0,e.useMemo)((function(){return i(r,u,t)}),[t,a,r,u,i]),s=(0,l.useLatest)(c);return f((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(T,N,G,W);return(0,l.useCreation)((function(){if((T&d.EntityEnabled)!==d.EntityEnabled)return W;var t=(T&d.RootEnabled)===d.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=c(t,2),o=r[0],u=r[1];n[o]=j(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[T,B,W,Y,n])},x=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return _(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
2
|
+
(()=>{var t={20:(t,e,n)=>{"use strict";var r=n(594),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};e.jsx=function(t,e,n){var r,c={},l=null,f=null;for(r in void 0!==n&&(l=""+n),void 0!==e.key&&(l=""+e.key),void 0!==e.ref&&(f=e.ref),e)u.call(e,r)&&!i.hasOwnProperty(r)&&(c[r]=e[r]);if(t&&t.defaultProps)for(r in e=t.defaultProps)void 0===c[r]&&(c[r]=e[r]);return{$$typeof:o,type:t,key:l,ref:f,props:c,_owner:a.current}}},848:(t,e,n)=>{"use strict";t.exports=n(20)},594:t=>{"use strict";t.exports=React}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var u=e[r]={exports:{}};return t[r](u,u.exports,n),u.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{UseCaseFragment:()=>x,useUseCase:()=>_});var t=n(848),e=n(594),o=n.n(e);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function a(t,e){if(t){if("string"==typeof t)return u(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(t,e):void 0}}function i(t){return function(t){if(Array.isArray(t))return u(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||a(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 c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,u,a,i=[],c=!0,l=!1;try{if(u=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=u.call(n)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return i}}(t,e)||a(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 l=ahooks;var f=function(t){return c((0,e.useState)((function(){return t})),1)[0]},s=function(t){return c((0,e.useState)(t),1)[0]};const y=usecases;var v,d;!function(t){t[t.None=0]="None",t[t.Entity=2]="Entity"}(v||(v={})),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"}(d||(d={}));var b=(0,y.createUseCase)((function(){var t=new Map,n=(0,e.createContext)(null);return function(){return{createContextValue:function(t,e,n){return(n&d.EntityEnabled)===d.EntityEnabled?{store:t,reducers:e,statuses:n}:{reducers:e,statuses:n}},registerUseCase:function(r,o){if(t.has(r)){var u=t.get(r),a=u.value,i=u.times;return t.set(r,{value:a,times:i+1}),a}if((o&v.Entity)!==v.Entity)return n;var c=(0,e.createContext)(null);return t.set(r,{value:c,times:1}),c},unregisterUseCase:function(e,n){if((n&v.Entity)!==v.Entity)return!1;if(!t.has(e))return!1;var r=t.get(e),o=r.value,u=r.times;return 1===u?t.delete(e):t.set(e,{value:o,times:u-1}),!0}}}})),p=function(){return s((function(){return b()}))};function E(t){return 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},E(t)}function m(t){var e=function(t,e){if("object"!=E(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=E(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==E(e)?e:String(e)}var h=["watch","onChange","options"];function g(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function O(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?g(Object(n),!0).forEach((function(e){var r,o,u;r=t,o=e,u=n[e],(o=m(o))in r?Object.defineProperty(r,o,{value:u,enumerable:!0,configurable:!0,writable:!0}):r[o]=u})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var w=function(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0},j=function(t,e){var n,r=e||{},o=r.onShouldCache,u=void 0===o?function(){return!0}:o,a=r.onCompare,i=void 0===a?function(t,e){return w(t,e)}:a;return function(){for(var e=u(),r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(n&&e){var c=n,l=c.parameters,f=c.returnValue;if(i(l,o))return f}var s=t.apply(void 0,o);return e&&(n={parameters:o,returnValue:s}),s}},S=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=(0,l.useLatest)(n),u=(0,l.useCreation)((function(){return j(o.current,{onCompare:function(){return!0}})}),[r,o]);return(0,l.useCreation)((function(){return(e&d.RootEnabled)!==d.RootEnabled&&t?t:u()}),[e,t,u])},C=function(t,e){return"object"===E(t)&&null!==t&&Object.hasOwn(t,e)},R=function t(e,n,r,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=void 0,l=c(r.match(/^([^.]+)\.(.+)$/)||[],3),f=l[1],s=void 0===f?r:f,y=l[2],v=void 0===y?"":y,d=C(e,s),b=C(n,s),p=[].concat(i(u),[s]);if(d||b){var E=d?e[s]:a,m=b?n[s]:a;if(v)return void t(E,m,v,o,p);if(E===m)return;o(E,m,p)}else if(!/^\d+^/.test(s))for(var h=Array.isArray(e)?e:[],g=Array.isArray(n)?n:[],O=h.length,w=g.length,j=Math.max(O,w),S=0;S<j;S++)t(h[S],g[S],r,o,[].concat(i(u),["".concat(S)]))},P=function(t,e,n){for(var r=function(){var t=c(u[o],2),r=t[0],a=t[1];R(n,e,r,(function(t,r,o){a({fieldPaths:o,newEntity:e,oldEntity:n,newValue:r,oldValue:t})}))},o=0,u=Object.entries(t);o<u.length;o++)r()},_=function(){for(var t,n=((t=(0,e.useRef)(!0)).current=!0,(0,e.useEffect)((function(){t.current=!1})),t),r=arguments.length,u=new Array(r),a=0;a<r;a++)u[a]=arguments[a];var b=function(t){return s((function(){var e=v.None;return"function"===E(c(t,2)[1])&&(e|=v.Entity),e}))}(u),m=function(t,e){var n=c(t,4),r=n[0],o=n[1],u=n[2],a=n[3];return(e&v.Entity)!==v.Entity?[null,r,o||{},u||[]]:[r,o,u||{},a||[]]}(u,b),g=c(m,4),C=g[0],R=g[1],_=g[2],x=g[3],A=f(R),U=A,M=A,N=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v.None,n=p(),r=n.registerUseCase,o=n.unregisterUseCase,u=s((function(){return r(t,e)}));return(0,l.useUnmount)((function(){o(t,e)})),u}(A,b),I=(0,e.useContext)(N),k=I,T=function(t,e){return(0,l.useCreation)((function(){var n=d.None,r=(e||{}).store;return(t&v.Entity)===v.Entity&&(n|=d.EntityRootEnabled),n|=e?d.ContextEnabled:d.RootEnabled,r&&(n|=d.EntityEnabled),n}),[t,e])}(b,I),L=(0,l.useLatest)(_),D=function(t){var n=(0,e.useRef)(0),r=(0,e.useRef)([]),o=r.current,u=w(t,o);return r.current=t,n.current+=u?0:1,n.current}(x),V=(I||{}).reducers,F=void 0===V?null:V,$=(k||{}).store,z=c(function(t,n,r,o,u){var a=(0,l.useUpdate)(),i=(0,e.useRef)(),c=(0,l.useLatest)(o),f=r?r.value:null,s=(t&d.EntityEnabled)===d.EntityEnabled,v=(t&d.EntityRootEnabled)===d.EntityRootEnabled,b=S(r,t,(function(){var t;if(v){var e,r="function"==typeof n?n(null===(e=i.current)||void 0===e?void 0:e.value):n;t=new y.EntityStore(r)}else t=new y.EntityStore(null);return i.current=t,t}),u),p=function(t,n,r,o){var u=(0,e.useRef)(n);if((o&d.EntityRootEnabled)!==d.EntityRootEnabled)return r;var a="function"==typeof n,i=u.current;switch(!0){case a:case i===n:return t.value}return u.current=n,n}(b,n,f,t),E=(0,l.useMemoizedFn)((function(t,e){var n=c.current,r=n.onChange,o=n.watch;o&&P(o,t,e),null==r||r(t,e),v&&a()}));return v&&(b.value=p),(0,l.useCreation)((function(){s&&b.watch(E)}),[s,b,E]),(0,e.useEffect)((function(){return function(){b.unwatch(E)}}),[s,b,E]),(0,l.useCreation)((function(){return[p,b]}),[p,b])}(T,C,void 0===$?null:$,_,D),2),B=z[0],G=z[1],W=S(F,T,(function(){var t,e,n,r=(t=_,e=function(t,e){var n,r;return null===(n=(r=L.current)[t])||void 0===n?void 0:n.call.apply(n,[r].concat(i(e)))},n={},Object.keys(t).forEach((function(r){var o=t[r];n[r]="function"!=typeof o?o:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(r,n)}})),n);return(T&d.EntityEnabled)!==d.EntityEnabled?U(r):function(t,e,n){n.watch,n.onChange;var r=n.options,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},u=Object.keys(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,h);return(0,y.createEntityReducers)(e,t,O(O(O({},o),r),{},{onGenerate:function(t,e){return e}}))}(M,G,r)}),D),Y=function(t,n,r,u){var a=r.value,i=p().createContextValue,c=(0,e.useMemo)((function(){return i(r,u,t)}),[t,a,r,u,i]),s=(0,l.useLatest)(c);return f((function(t){var e=t.children,r=t.with,u=void 0===r?[]:r,a=n.Provider,i=s.current;return o().createElement(a,{value:i},u.reduceRight((function(t,e){return o().createElement(e,{},t)}),e))}))}(T,N,G,W);return(0,l.useCreation)((function(){if((T&d.EntityEnabled)!==d.EntityEnabled)return W;var t=(T&d.RootEnabled)===d.RootEnabled,e=function(t,e){var n={};return Object.entries(t).forEach((function(t){var r=c(t,2),o=r[0],u=r[1];n[o]=j(u,e)})),n}(W,{onShouldCache:function(){return n.current}});return t?[B,e,Y]:[B,e]}),[T,B,W,Y,n])},x=function(n){var r=n.usecase,o=n.watch,u=n.onChange;return _(r,{watch:o,onChange:u}),(0,t.jsx)(e.Fragment,{})}})();var o=usecases="undefined"==typeof usecases?{}:usecases;for(var u in r)o[u]=r[u];r.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|
|
@@ -13,12 +13,17 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
|
|
|
13
13
|
const entityEnabled = (statuses & Statuses.EntityEnabled) === Statuses.EntityEnabled;
|
|
14
14
|
const entityRootEnabled = (statuses & Statuses.EntityRootEnabled) === Statuses.EntityRootEnabled;
|
|
15
15
|
const store = useContextualItem(contextStore, statuses, () => {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
let newStore;
|
|
17
|
+
if (entityRootEnabled) {
|
|
18
|
+
const isFunction = typeof entityArg === 'function';
|
|
19
|
+
const initailEntity = isFunction ? entityArg(storeRef.current?.value) : entityArg;
|
|
20
|
+
newStore = new EntityStore(initailEntity);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
newStore = new EntityStore(null);
|
|
18
24
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return new EntityStore(initailEntity);
|
|
25
|
+
storeRef.current = newStore;
|
|
26
|
+
return newStore;
|
|
22
27
|
}, depsKey);
|
|
23
28
|
const runtimeEntity = useRuntimeEntity(store, entityArg, contextEntity, statuses);
|
|
24
29
|
const onEntityChange = useMemoizedFn((newEntity, oldEntity) => {
|
|
@@ -32,16 +37,24 @@ export const useEntity = (statuses, entityArg, contextStore, options, depsKey) =
|
|
|
32
37
|
}
|
|
33
38
|
update();
|
|
34
39
|
});
|
|
35
|
-
storeRef.current = store;
|
|
36
40
|
if (entityRootEnabled) {
|
|
37
41
|
// 执行同步操作
|
|
38
42
|
store.value = runtimeEntity;
|
|
39
43
|
}
|
|
40
|
-
|
|
44
|
+
/**
|
|
45
|
+
* 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
|
|
46
|
+
* 如果使用了 `setEntity` 则无法监控到变化
|
|
47
|
+
*/
|
|
48
|
+
useCreation(() => {
|
|
41
49
|
if (!entityEnabled) {
|
|
42
50
|
return;
|
|
43
51
|
}
|
|
44
52
|
store.watch(onEntityChange);
|
|
53
|
+
}, [entityEnabled, store, onEntityChange]);
|
|
54
|
+
/**
|
|
55
|
+
* 在变化时候,组件更新前,使用 `unwatch`
|
|
56
|
+
*/
|
|
57
|
+
useEffect(() => {
|
|
45
58
|
return () => {
|
|
46
59
|
store.unwatch(onEntityChange);
|
|
47
60
|
};
|
|
@@ -276,9 +276,9 @@ describe('useUseCase', () => {
|
|
|
276
276
|
...defaultFile,
|
|
277
277
|
});
|
|
278
278
|
});
|
|
279
|
-
expect(mockUseCase).toHaveBeenCalledTimes(
|
|
279
|
+
expect(mockUseCase).toHaveBeenCalledTimes(1);
|
|
280
280
|
rerender();
|
|
281
|
-
expect(mockUseCase).toHaveBeenCalledTimes(
|
|
281
|
+
expect(mockUseCase).toHaveBeenCalledTimes(2);
|
|
282
282
|
});
|
|
283
283
|
test('after call non-generator reducer, it should not trigger update', () => {
|
|
284
284
|
const onUpdate = jest.fn();
|
|
@@ -1317,8 +1317,8 @@ describe('useUseCase', () => {
|
|
|
1317
1317
|
expect(changeTimes).toBe(0);
|
|
1318
1318
|
fireEvent.click(screen.getByText(buttonText));
|
|
1319
1319
|
expect(onChangeA).toHaveReturnedWith(2);
|
|
1320
|
-
expect(onChangeB).toHaveReturnedWith(
|
|
1321
|
-
expect(onChangeC).toHaveReturnedWith(
|
|
1320
|
+
expect(onChangeB).toHaveReturnedWith(3);
|
|
1321
|
+
expect(onChangeC).toHaveReturnedWith(1);
|
|
1322
1322
|
});
|
|
1323
1323
|
test('`options.onChange` should always trigger the latest one in child components', () => {
|
|
1324
1324
|
const onFirstChange = jest.fn();
|
|
@@ -1424,8 +1424,8 @@ describe('useUseCase', () => {
|
|
|
1424
1424
|
expect(changeTimes).toBe(0);
|
|
1425
1425
|
fireEvent.click(screen.getByText(buttonText));
|
|
1426
1426
|
expect(onChangeA).toHaveReturnedWith(2);
|
|
1427
|
-
expect(onChangeB).toHaveReturnedWith(
|
|
1428
|
-
expect(onChangeC).toHaveReturnedWith(
|
|
1427
|
+
expect(onChangeB).toHaveReturnedWith(3);
|
|
1428
|
+
expect(onChangeC).toHaveReturnedWith(1);
|
|
1429
1429
|
});
|
|
1430
1430
|
test('`options.watch` should trigger the latest one in child components', () => {
|
|
1431
1431
|
const onFirstExtChange = jest.fn();
|
|
@@ -19,13 +19,17 @@ var useEntity = exports.useEntity = function useEntity(statuses, entityArg, cont
|
|
|
19
19
|
var entityEnabled = (statuses & _Statuses.Statuses.EntityEnabled) === _Statuses.Statuses.EntityEnabled;
|
|
20
20
|
var entityRootEnabled = (statuses & _Statuses.Statuses.EntityRootEnabled) === _Statuses.Statuses.EntityRootEnabled;
|
|
21
21
|
var store = (0, _useContextualItem.useContextualItem)(contextStore, statuses, function () {
|
|
22
|
-
var
|
|
23
|
-
if (
|
|
24
|
-
|
|
22
|
+
var newStore;
|
|
23
|
+
if (entityRootEnabled) {
|
|
24
|
+
var _storeRef$current;
|
|
25
|
+
var isFunction = typeof entityArg === 'function';
|
|
26
|
+
var initailEntity = isFunction ? entityArg((_storeRef$current = storeRef.current) === null || _storeRef$current === void 0 ? void 0 : _storeRef$current.value) : entityArg;
|
|
27
|
+
newStore = new _usecases.EntityStore(initailEntity);
|
|
28
|
+
} else {
|
|
29
|
+
newStore = new _usecases.EntityStore(null);
|
|
25
30
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return new _usecases.EntityStore(initailEntity);
|
|
31
|
+
storeRef.current = newStore;
|
|
32
|
+
return newStore;
|
|
29
33
|
}, depsKey);
|
|
30
34
|
var runtimeEntity = (0, _useRuntimeEntity.useRuntimeEntity)(store, entityArg, contextEntity, statuses);
|
|
31
35
|
var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, oldEntity) {
|
|
@@ -41,16 +45,24 @@ var useEntity = exports.useEntity = function useEntity(statuses, entityArg, cont
|
|
|
41
45
|
}
|
|
42
46
|
update();
|
|
43
47
|
});
|
|
44
|
-
storeRef.current = store;
|
|
45
48
|
if (entityRootEnabled) {
|
|
46
49
|
// 执行同步操作
|
|
47
50
|
store.value = runtimeEntity;
|
|
48
51
|
}
|
|
49
|
-
|
|
52
|
+
/**
|
|
53
|
+
* 需要马上 `watch`,因为 `useEffect` 在子组件内优先执行,
|
|
54
|
+
* 如果使用了 `setEntity` 则无法监控到变化
|
|
55
|
+
*/
|
|
56
|
+
(0, _ahooks.useCreation)(function () {
|
|
50
57
|
if (!entityEnabled) {
|
|
51
58
|
return;
|
|
52
59
|
}
|
|
53
60
|
store.watch(onEntityChange);
|
|
61
|
+
}, [entityEnabled, store, onEntityChange]);
|
|
62
|
+
/**
|
|
63
|
+
* 在变化时候,组件更新前,使用 `unwatch`
|
|
64
|
+
*/
|
|
65
|
+
(0, _react.useEffect)(function () {
|
|
54
66
|
return function () {
|
|
55
67
|
store.unwatch(onEntityChange);
|
|
56
68
|
};
|
|
@@ -438,9 +438,9 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
438
438
|
(0, _react.act)(function () {
|
|
439
439
|
setEntity(_objectSpread({}, defaultFile));
|
|
440
440
|
});
|
|
441
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(
|
|
441
|
+
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(1);
|
|
442
442
|
rerender();
|
|
443
|
-
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(
|
|
443
|
+
(0, _globals.expect)(mockUseCase).toHaveBeenCalledTimes(2);
|
|
444
444
|
});
|
|
445
445
|
(0, _globals.test)('after call non-generator reducer, it should not trigger update', function () {
|
|
446
446
|
var onUpdate = _globals.jest.fn();
|
|
@@ -1755,8 +1755,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1755
1755
|
(0, _globals.expect)(changeTimes).toBe(0);
|
|
1756
1756
|
_react.fireEvent.click(_react.screen.getByText(buttonText));
|
|
1757
1757
|
(0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
|
|
1758
|
-
(0, _globals.expect)(onChangeB).toHaveReturnedWith(
|
|
1759
|
-
(0, _globals.expect)(onChangeC).toHaveReturnedWith(
|
|
1758
|
+
(0, _globals.expect)(onChangeB).toHaveReturnedWith(3);
|
|
1759
|
+
(0, _globals.expect)(onChangeC).toHaveReturnedWith(1);
|
|
1760
1760
|
});
|
|
1761
1761
|
(0, _globals.test)('`options.onChange` should always trigger the latest one in child components', function () {
|
|
1762
1762
|
var onFirstChange = _globals.jest.fn();
|
|
@@ -1904,8 +1904,8 @@ var useDeepCompareUpdate = function useDeepCompareUpdate(callback, deps) {
|
|
|
1904
1904
|
(0, _globals.expect)(changeTimes).toBe(0);
|
|
1905
1905
|
_react.fireEvent.click(_react.screen.getByText(buttonText));
|
|
1906
1906
|
(0, _globals.expect)(onChangeA).toHaveReturnedWith(2);
|
|
1907
|
-
(0, _globals.expect)(onChangeB).toHaveReturnedWith(
|
|
1908
|
-
(0, _globals.expect)(onChangeC).toHaveReturnedWith(
|
|
1907
|
+
(0, _globals.expect)(onChangeB).toHaveReturnedWith(3);
|
|
1908
|
+
(0, _globals.expect)(onChangeC).toHaveReturnedWith(1);
|
|
1909
1909
|
});
|
|
1910
1910
|
(0, _globals.test)('`options.watch` should trigger the latest one in child components', function () {
|
|
1911
1911
|
var onFirstExtChange = _globals.jest.fn();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mic-rexjs/usecases-react",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2",
|
|
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": "^2.12.
|
|
38
|
+
"@mic-rexjs/usecases": "^2.12.6",
|
|
39
39
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"@commitlint/cli": "^19.0.3",
|
|
52
52
|
"@commitlint/config-angular": "^19.0.3",
|
|
53
53
|
"@jest/globals": "^29.5.0",
|
|
54
|
-
"@mic-rexjs/usecases": "^2.12.
|
|
54
|
+
"@mic-rexjs/usecases": "^2.12.6",
|
|
55
55
|
"@testing-library/react": "^14.0.0",
|
|
56
56
|
"@types/node": "^20.4.2",
|
|
57
57
|
"@types/react": "^18.2.14",
|