@mic-rexjs/usecases-react 1.4.1 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.min.js.LICENSE.txt */
2
- !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>x,useUseCase:()=>w});var e=u(893),r=u(156),t=u.n(r);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,u,i,a=[],c=!0,f=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=u.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,r)||a(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var f=u(749),s=function(e){return c((0,r.useState)(e),1)[0]};function l(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==n(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===n(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var y=u(112),p=["stateless","watch","onChange","options"];function v(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function b(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?v(Object(t),!0).forEach((function(r){l(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):v(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var d=function(e,r){var t=e.indexOf(r);-1!==t&&e.splice(t,1)};function m(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var h=function(e,r){return"object"===n(e)&&null!==e&&Object.hasOwn(e,r)},O=function e(r,t,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=c(n.match(/^([^.]+)\.(.+)$/)||[],3),f=a[1],s=void 0===f?n:f,l=a[2],y=void 0===l?"":l,p=h(r,s),v=h(t,s),b=[].concat(m(u),[s]);if(p||v){var d=p?r[s]:i,O=v?t[s]:i;if(y)return void e(d,O,y,o,b);if(d===O)return;o(d,O,b)}else if(!/^\d+^/.test(s))for(var g=Array.isArray(r)?r:[],j=Array.isArray(t)?t:[],S=g.length,w=j.length,x=Math.max(S,w),C=0;C<x;C++)e(g[C],j[C],n,o,[].concat(m(u),["".concat(C)]))},g=function(e,r,t){for(var n=function(){var e=c(u[o],2),n=e[0],i=e[1];O(t,r,n,(function(e,n,o){i({fieldPaths:o,newEntity:r,oldEntity:t,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()},j=new Map,S=(0,r.createContext)({}),w=function(e,o,u,i){var a,l,v,m,h,O,w,x,C=s("function"==typeof o),P=(C?u:o)||{},_=P.stateless,E=c((0,r.useState)(C&&!_?e:null),2),A=E[0],R=E[1],k=(l=(C?i:u)||[],v=(0,r.useRef)(0),m=(0,r.useRef)([]),h=m.current,O=h.length,w=l.length,x=function(){if(w!==O)return!0;for(var e=0;e<w;e++)if(l[e]!==h[e])return!0;return!1}(),m.current=l,v.current+=x?1:0,v.current),I=(a=C?o:e,c((0,r.useState)((function(){return a})),1)[0]),M=I,T=function(e,t){return s((function(){var n=j;if(n.has(e))return n.get(e);if(t)return t;var o=(0,r.createContext)({});return n.set(e,o),o}))}(M,C?null:S),U=(0,r.useContext)(T),q=U.entity,D=U.reducers,F=U.optionsRefCollection,L="object"===n(F),$=C||L,N=function(e,r,t){var n=(0,f.useLatest)(t),o=(0,f.useCreation)((function(){return e?[]:r}),[r,e]),u=(0,f.usePrevious)(o);return(0,f.useCreation)((function(){u&&d(u,n),o.push(n)}),[n,o,u]),(0,f.useUnmount)((function(){d(o,n)})),o}(C||!L,F||null,P),z=(0,f.useCreation)((function(){return C?function(e,r,t){return t?"function"==typeof r?r():r:e}(A,e,_):q}),[C,q,_,A,e]),V=(0,f.useMemoizedFn)((function(e,r){_||R(e),function(e,r,t){for(var n=e.length;n>0;n--){var o=e[n-1].current;if(o){var u=o.onChange,i=o.watch;i&&g(i,r,t),null==u||u(r,t)}}}(N,e,r)})),B=(0,f.useMemoizedFn)((function(){var e={},r={};return C?r=function(e,r,t,n){var o=(0,y.entityReducerUseCase)().createEntityReducers,u=(t.stateless,t.watch,t.onChange,t.options);return o(e,r,b(b(b({},function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(t,p)),u),{},{onChange:n,onGenerate:function(e,r){return r}}))}(z,M,P,V):D?r=D:e=I(P),[e,r]})),G=C?z:D,W=c((0,f.useCreation)((function(){return B()}),[B,k,G]),2),Y=W[0],H=W[1],J=function(e,r,n,o){var u=(0,f.useCreation)((function(){return{entity:r,reducers:n,optionsRefCollection:o}}),[r,n,o]),i=(0,f.useLatest)(u);return s((function(){return function(r){var n=r.children,o=e.Provider;return t().createElement(o,{value:i.current},n)}}))}(T,z,H,N),K=(0,f.useCreation)((function(){return[z,H,C?J:null]}),[C,z,H,J]);return(0,f.useCreation)((function(){return $?K:Y}),[$,Y,K])},x=function(t){var n=t.usecase,o=t.watch,u=t.onChange;return w(n,{watch:o,onChange:u}),(0,e.jsx)(r.Fragment,{})}})(),i})()));
2
+ !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("react"),require("ahooks"),require("@mic-rexjs/usecases"));else if("function"==typeof define&&define.amd)define(["react","ahooks","@mic-rexjs/usecases"],r);else{var t="object"==typeof exports?r(require("react"),require("ahooks"),require("@mic-rexjs/usecases")):r(e.react,e.ahooks,e["@mic-rexjs/usecases"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,((e,r,t)=>(()=>{"use strict";var n={251:(e,r,t)=>{var n=t(156),o=Symbol.for("react.element"),u=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};r.jsx=function(e,r,t){var n,c={},f=null,s=null;for(n in void 0!==t&&(f=""+t),void 0!==r.key&&(f=""+r.key),void 0!==r.ref&&(s=r.ref),r)u.call(r,n)&&!a.hasOwnProperty(n)&&(c[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===c[n]&&(c[n]=r[n]);return{$$typeof:o,type:e,key:f,ref:s,props:c,_owner:i.current}}},893:(e,r,t)=>{e.exports=t(251)},112:e=>{e.exports=t},749:e=>{e.exports=r},156:r=>{r.exports=e}},o={};function u(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={exports:{}};return n[e](t,t.exports,u),t.exports}u.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return u.d(r,{a:r}),r},u.d=(e,r)=>{for(var t in r)u.o(r,t)&&!u.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},u.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{u.r(i),u.d(i,{UseCaseFragment:()=>C,useReducer:()=>P,useReturnable:()=>P,useUseCase:()=>x});var e=u(893),r=u(156),t=u.n(r);function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,u,i,a=[],c=!0,f=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=u.call(t)).done)&&(a.push(n.value),a.length!==r);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(f)throw o}}return a}}(e,r)||a(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var f=u(749),s=function(e){return c((0,r.useState)(e),1)[0]},l=function(e,r){var t=e.length;if(t!==r.length)return!1;for(var n=0;n<t;n++)if(e[n]!==r[n])return!1;return!0};function y(e,r,t){return(r=function(e){var r=function(e,r){if("object"!==n(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===n(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var p=u(112),v=["stateless","watch","onChange","options"];function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach((function(r){y(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var m=function(e,r){var t=e.indexOf(r);-1!==t&&e.splice(t,1)};function h(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var O=function(e,r){return"object"===n(e)&&null!==e&&Object.hasOwn(e,r)},g=function e(r,t,n,o){var u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=void 0,a=c(n.match(/^([^.]+)\.(.+)$/)||[],3),f=a[1],s=void 0===f?n:f,l=a[2],y=void 0===l?"":l,p=O(r,s),v=O(t,s),b=[].concat(h(u),[s]);if(p||v){var d=p?r[s]:i,m=v?t[s]:i;if(y)return void e(d,m,y,o,b);if(d===m)return;o(d,m,b)}else if(!/^\d+^/.test(s))for(var g=Array.isArray(r)?r:[],j=Array.isArray(t)?t:[],S=g.length,w=j.length,x=Math.max(S,w),C=0;C<x;C++)e(g[C],j[C],n,o,[].concat(h(u),["".concat(C)]))},j=function(e,r,t){for(var n=function(){var e=c(u[o],2),n=e[0],i=e[1];g(t,r,n,(function(e,n,o){i({fieldPaths:o,newEntity:r,oldEntity:t,newValue:n,oldValue:e})}))},o=0,u=Object.entries(e);o<u.length;o++)n()},S=new Map,w=(0,r.createContext)({}),x=function(e,o,u,i){var a,y,b,h,O,g,x=s("function"==typeof o),C=(x?u:o)||{},P=C.stateless,_=c((0,r.useState)(x&&!P?e:null),2),E=_[0],R=_[1],A=(y=(x?i:u)||[],b=(0,r.useRef)(0),h=(0,r.useRef)([]),O=h.current,g=l(y,O),h.current=y,b.current+=g?0:1,b.current),k=(a=x?o:e,c((0,r.useState)((function(){return a})),1)[0]),I=k,M=function(e,t){return s((function(){var n=S;if(n.has(e))return n.get(e);if(t)return t;var o=(0,r.createContext)({});return n.set(e,o),o}))}(I,x?null:w),T=(0,r.useContext)(M),U=T.entity,q=T.reducers,D=T.optionsRefCollection,F="object"===n(D),L=x||F,$=function(e,r,t){var n=(0,f.useLatest)(t),o=(0,f.useCreation)((function(){return e?[]:r}),[r,e]),u=(0,f.usePrevious)(o);return(0,f.useCreation)((function(){u&&m(u,n),o.push(n)}),[n,o,u]),(0,f.useUnmount)((function(){m(o,n)})),o}(x||!F,D||null,C),z=(0,f.useCreation)((function(){return x?function(e,r,t){return t?"function"==typeof r?r():r:e}(E,e,P):U}),[x,U,P,E,e]),N=(0,f.useMemoizedFn)((function(e,r){P||R(e),function(e,r,t){for(var n=e.length;n>0;n--){var o=e[n-1].current;if(o){var u=o.onChange,i=o.watch;i&&j(i,r,t),null==u||u(r,t)}}}($,e,r)})),V=(0,f.useMemoizedFn)((function(){var e={},r={};return x?r=function(e,r,t,n){var o=(0,p.entityReducerUseCase)().createEntityReducers,u=(t.stateless,t.watch,t.onChange,t.options);return o(e,r,d(d(d({},function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},u=Object.keys(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(n=0;n<u.length;n++)t=u[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(t,v)),u),{},{onChange:n,onGenerate:function(e,r){return r}}))}(z,I,C,N):q?r=q:e=k(C),[e,r]})),B=x?z:q,G=c((0,f.useCreation)((function(){return V()}),[V,A,B]),2),W=G[0],Y=G[1],H=function(e,r,n,o){var u=(0,f.useCreation)((function(){return{entity:r,reducers:n,optionsRefCollection:o}}),[r,n,o]),i=(0,f.useLatest)(u);return s((function(){return function(r){var n=r.children,o=e.Provider;return t().createElement(o,{value:i.current},n)}}))}(M,z,Y,$),J=(0,f.useCreation)((function(){return[z,Y,x?H:null]}),[x,z,Y,H]);return(0,f.useCreation)((function(){return L?J:W}),[L,W,J])},C=function(t){var n=t.usecase,o=t.watch,u=t.onChange;return x(n,{watch:o,onChange:u}),(0,e.jsx)(r.Fragment,{})},P=function(e){var t=(0,r.useRef)(),n=(0,r.useRef)([]),o=(0,r.useRef)();return(0,f.useMemoizedFn)((function(){for(var r=o.current,u=t.current,i=n.current,a=arguments.length,c=new Array(a),f=0;f<a;f++)c[f]=arguments[f];return e===u&&l(c,i)||(r=e.apply(void 0,c)),t.current=e,n.current=c,o.current=r,r}))}})(),i})()));
@@ -1,24 +1,11 @@
1
1
  import { useRef } from 'react';
2
- import { useScope } from '../useScope';
2
+ import { isSameArray } from '../../methods/isSameArray';
3
3
  export const useCompareDeps = (deps) => {
4
4
  const updateTimesRef = useRef(0);
5
5
  const prevDepsRef = useRef([]);
6
6
  const { current: prevDeps } = prevDepsRef;
7
- const { length: prevLength } = prevDeps;
8
- const { length } = deps;
9
- const updated = useScope(() => {
10
- if (length !== prevLength) {
11
- return true;
12
- }
13
- for (let i = 0; i < length; i++) {
14
- if (deps[i] === prevDeps[i]) {
15
- continue;
16
- }
17
- return true;
18
- }
19
- return false;
20
- });
7
+ const isSame = isSameArray(deps, prevDeps);
21
8
  prevDepsRef.current = deps;
22
- updateTimesRef.current += updated ? 1 : 0;
9
+ updateTimesRef.current += isSame ? 0 : 1;
23
10
  return updateTimesRef.current;
24
11
  };
@@ -0,0 +1,2 @@
1
+ import { Reducer } from '@mic-rexjs/usecases';
2
+ export declare const useReducer: <T extends Reducer<unknown>>(reducer: T) => T;
@@ -0,0 +1,20 @@
1
+ import { isSameArray } from '../../methods/isSameArray';
2
+ import { useMemoizedFn } from 'ahooks';
3
+ import { useRef } from 'react';
4
+ export const useReducer = (reducer) => {
5
+ const prevReducerRef = useRef();
6
+ const prevArgsRef = useRef([]);
7
+ const prevReturnValueRef = useRef();
8
+ return useMemoizedFn((...args) => {
9
+ let { current: returnValue } = prevReturnValueRef;
10
+ const { current: prevReducer } = prevReducerRef;
11
+ const { current: prevArgs } = prevArgsRef;
12
+ if (reducer !== prevReducer || !isSameArray(args, prevArgs)) {
13
+ returnValue = reducer(...args);
14
+ }
15
+ prevReducerRef.current = reducer;
16
+ prevArgsRef.current = args;
17
+ prevReturnValueRef.current = returnValue;
18
+ return returnValue;
19
+ });
20
+ };
package/es/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { UseCaseFragment } from './components/UseCaseFragment';
2
+ export { useReducer, useReducer as useReturnable } from './hooks/useReducer';
2
3
  export { useUseCase } from './hooks/useUseCase';
3
4
  export type { CoreCollection } from './hooks/useUseCase/types';
4
5
  export type { UseCaseHookOptions } from './hooks/useUseCase/types';
package/es/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { UseCaseFragment } from './components/UseCaseFragment';
2
+ export { useReducer, useReducer as useReturnable } from './hooks/useReducer';
2
3
  export { useUseCase } from './hooks/useUseCase';
@@ -0,0 +1 @@
1
+ export declare const isSameArray: (array1: unknown[], array2: unknown[]) => boolean;
@@ -0,0 +1,14 @@
1
+ export const isSameArray = (array1, array2) => {
2
+ const { length: length1 } = array1;
3
+ const { length: length2 } = array2;
4
+ if (length1 !== length2) {
5
+ return false;
6
+ }
7
+ for (let i = 0; i < length1; i++) {
8
+ if (array1[i] === array2[i]) {
9
+ continue;
10
+ }
11
+ return false;
12
+ }
13
+ return true;
14
+ };
@@ -5,27 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useCompareDeps = void 0;
7
7
  var _react = require("react");
8
- var _useScope = require("../useScope");
8
+ var _isSameArray = require("../../methods/isSameArray");
9
9
  var useCompareDeps = function useCompareDeps(deps) {
10
10
  var updateTimesRef = (0, _react.useRef)(0);
11
11
  var prevDepsRef = (0, _react.useRef)([]);
12
12
  var prevDeps = prevDepsRef.current;
13
- var prevLength = prevDeps.length;
14
- var length = deps.length;
15
- var updated = (0, _useScope.useScope)(function () {
16
- if (length !== prevLength) {
17
- return true;
18
- }
19
- for (var i = 0; i < length; i++) {
20
- if (deps[i] === prevDeps[i]) {
21
- continue;
22
- }
23
- return true;
24
- }
25
- return false;
26
- });
13
+ var isSame = (0, _isSameArray.isSameArray)(deps, prevDeps);
27
14
  prevDepsRef.current = deps;
28
- updateTimesRef.current += updated ? 1 : 0;
15
+ updateTimesRef.current += isSame ? 0 : 1;
29
16
  return updateTimesRef.current;
30
17
  };
31
18
  exports.useCompareDeps = useCompareDeps;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useReducer = void 0;
7
+ var _isSameArray = require("../../methods/isSameArray");
8
+ var _ahooks = require("ahooks");
9
+ var _react = require("react");
10
+ var useReducer = function useReducer(reducer) {
11
+ var prevReducerRef = (0, _react.useRef)();
12
+ var prevArgsRef = (0, _react.useRef)([]);
13
+ var prevReturnValueRef = (0, _react.useRef)();
14
+ return (0, _ahooks.useMemoizedFn)(function () {
15
+ var returnValue = prevReturnValueRef.current;
16
+ var prevReducer = prevReducerRef.current;
17
+ var prevArgs = prevArgsRef.current;
18
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19
+ args[_key] = arguments[_key];
20
+ }
21
+ if (reducer !== prevReducer || !(0, _isSameArray.isSameArray)(args, prevArgs)) {
22
+ returnValue = reducer.apply(void 0, args);
23
+ }
24
+ prevReducerRef.current = reducer;
25
+ prevArgsRef.current = args;
26
+ prevReturnValueRef.current = returnValue;
27
+ return returnValue;
28
+ });
29
+ };
30
+ exports.useReducer = useReducer;
package/lib/index.js CHANGED
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "UseCaseFragment", {
9
9
  return _UseCaseFragment.UseCaseFragment;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "useReducer", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useReducer.useReducer;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "useReturnable", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _useReducer.useReducer;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "useUseCase", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -16,4 +28,5 @@ Object.defineProperty(exports, "useUseCase", {
16
28
  }
17
29
  });
18
30
  var _UseCaseFragment = require("./components/UseCaseFragment");
31
+ var _useReducer = require("./hooks/useReducer");
19
32
  var _useUseCase = require("./hooks/useUseCase");
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isSameArray = void 0;
7
+ var isSameArray = function isSameArray(array1, array2) {
8
+ var length1 = array1.length;
9
+ var length2 = array2.length;
10
+ if (length1 !== length2) {
11
+ return false;
12
+ }
13
+ for (var i = 0; i < length1; i++) {
14
+ if (array1[i] === array2[i]) {
15
+ continue;
16
+ }
17
+ return false;
18
+ }
19
+ return true;
20
+ };
21
+ exports.isSameArray = isSameArray;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mic-rexjs/usecases-react",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "React-based solution for use usecases of Clean Architecture",
5
5
  "private": false,
6
6
  "keywords": [
@@ -1,2 +0,0 @@
1
- import { Scope } from './types';
2
- export declare const useScope: <T>(scope: Scope<T>) => T;
@@ -1,3 +0,0 @@
1
- export const useScope = (scope) => {
2
- return scope();
3
- };
@@ -1,3 +0,0 @@
1
- export interface Scope<T> {
2
- (): T;
3
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useScope = void 0;
7
- var useScope = function useScope(scope) {
8
- return scope();
9
- };
10
- exports.useScope = useScope;
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });