react-redux
Advanced tools
Comparing version 7.2.4 to 7.2.9
@@ -1,9 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRedux={},e.React,e.ReactDOM)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(t);function u(e,t,r){return e(r={path:t,exports:{},require:function(e,t){return function(){throw Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}()}},r.exports),r.exports}function a(){}function i(){}i.resetWarningCache=a;u((function(e){e.exports=function(){function e(e,t,r,n,o,u){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==u){var a=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:a};return r.PropTypes=r,r}()}));var c=o.default.createContext(null);var s=function(e){e()},f=function(){return s},p={notify:function(){}};var l=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=p,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return!!this.unsubscribe},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=f(),t=null,r=null;return{clear:function(){t=null,r=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],r=t;r;)e.push(r),r=r.next;return e},subscribe:function(e){var n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=p)},e}(),d="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t.useLayoutEffect:t.useEffect;function y(){return(y=Object.assign||function(e){for(var t=1;arguments.length>t;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function v(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;u.length>n;n++)0>t.indexOf(r=u[n])&&(o[r]=e[r]);return o} | ||
/** @license React v16.13.1 | ||
* react-is.production.min.js | ||
* | ||
* Copyright (c) Facebook, Inc. and its affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/var m="function"==typeof Symbol&&Symbol.for,b=m?Symbol.for("react.element"):60103,h=m?Symbol.for("react.portal"):60106,S=m?Symbol.for("react.fragment"):60107,P=m?Symbol.for("react.strict_mode"):60108,g=m?Symbol.for("react.profiler"):60114,O=m?Symbol.for("react.provider"):60109,w=m?Symbol.for("react.context"):60110,C=m?Symbol.for("react.async_mode"):60111,x=m?Symbol.for("react.concurrent_mode"):60111,E=m?Symbol.for("react.forward_ref"):60112,T=m?Symbol.for("react.suspense"):60113,M=m?Symbol.for("react.suspense_list"):60120,R=m?Symbol.for("react.memo"):60115,$=m?Symbol.for("react.lazy"):60116,N=m?Symbol.for("react.block"):60121,j=m?Symbol.for("react.fundamental"):60117,q=m?Symbol.for("react.responder"):60118,D=m?Symbol.for("react.scope"):60119;function _(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case b:switch(e=e.type){case C:case x:case S:case g:case P:case T:return e;default:switch(e=e&&e.$$typeof){case w:case E:case $:case R:case O:return e;default:return t}}case h:return t}}}function F(e){return _(e)===x}var k={AsyncMode:C,ConcurrentMode:x,ContextConsumer:w,ContextProvider:O,Element:b,ForwardRef:E,Fragment:S,Lazy:$,Memo:R,Portal:h,Profiler:g,StrictMode:P,Suspense:T,isAsyncMode:function(e){return F(e)||_(e)===C},isConcurrentMode:F,isContextConsumer:function(e){return _(e)===w},isContextProvider:function(e){return _(e)===O},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===b},isForwardRef:function(e){return _(e)===E},isFragment:function(e){return _(e)===S},isLazy:function(e){return _(e)===$},isMemo:function(e){return _(e)===R},isPortal:function(e){return _(e)===h},isProfiler:function(e){return _(e)===g},isStrictMode:function(e){return _(e)===P},isSuspense:function(e){return _(e)===T},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===S||e===x||e===g||e===P||e===T||e===M||"object"==typeof e&&null!==e&&(e.$$typeof===$||e.$$typeof===R||e.$$typeof===O||e.$$typeof===w||e.$$typeof===E||e.$$typeof===j||e.$$typeof===q||e.$$typeof===D||e.$$typeof===N)},typeOf:_},W=u((function(e){e.exports=k})),H={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},U={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},A={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},I={};function L(e){return W.isMemo(e)?A:I[e.$$typeof]||H}I[W.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},I[W.Memo]=A;var z=Object.defineProperty,K=Object.getOwnPropertyNames,V=Object.getOwnPropertySymbols,B=Object.getOwnPropertyDescriptor,Y=Object.getPrototypeOf,G=Object.prototype;var J=function e(t,r,n){if("string"!=typeof r){if(G){var o=Y(r);o&&o!==G&&e(t,o,n)}var u=K(r);V&&(u=u.concat(V(r)));for(var a=L(t),i=L(r),c=0;u.length>c;++c){var s=u[c];if(!(U[s]||n&&n[s]||i&&i[s]||a&&a[s])){var f=B(r,s);try{z(t,s,f)}catch(e){}}}}return t},Q=[],X=[null,null];function Z(e,t){return[t.payload,e[1]+1]}function ee(e,t,r){d((function(){return e.apply(void 0,t)}),r)}function te(e,t,r,n,o,u,a){e.current=n,t.current=o,r.current=!1,u.current&&(u.current=null,a())}function re(e,t,r,n,o,u,a,i,c,s){if(e){var f=!1,p=null,l=function(){if(!f){var e,r,l=t.getState();try{e=n(l,o.current)}catch(e){r=e,p=e}r||(p=null),e===u.current?a.current||c():(u.current=e,i.current=e,a.current=!0,s({type:"STORE_UPDATED",payload:{error:r}}))}};r.onStateChange=l,r.trySubscribe(),l();return function(){if(f=!0,r.tryUnsubscribe(),r.onStateChange=null,p)throw p}}}var ne=function(){return[null,0]};function oe(e,r){void 0===r&&(r={});var n=r.getDisplayName,u=void 0===n?function(e){return"ConnectAdvanced("+e+")"}:n,a=r.methodName,i=void 0===a?"connectAdvanced":a,s=r.renderCountProp,f=void 0===s?void 0:s,p=r.shouldHandleStateChanges,d=void 0===p||p,m=r.storeKey,b=void 0===m?"store":m,h=r.forwardRef,S=void 0!==h&&h,P=r.context,g=void 0===P?c:P,O=v(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),w=g;return function(r){var n=r.displayName||r.name||"Component",a=u(n),c=y({},O,{getDisplayName:u,methodName:i,renderCountProp:f,shouldHandleStateChanges:d,storeKey:b,displayName:a,wrappedComponentName:n,WrappedComponent:r}),s=O.pure;var p=s?t.useMemo:function(e){return e()};function m(n){var u=t.useMemo((function(){var e=n.reactReduxForwardedRef,t=v(n,["reactReduxForwardedRef"]);return[n.context,e,t]}),[n]),a=u[0],i=u[1],s=u[2],f=t.useMemo((function(){return a&&a.Consumer&&W.isContextConsumer(o.default.createElement(a.Consumer,null))?a:w}),[a,w]),m=t.useContext(f),b=!!n.store&&!!n.store.getState&&!!n.store.dispatch,h=b?n.store:m.store,S=t.useMemo((function(){return function(t){return e(t.dispatch,c)}(h)}),[h]),P=t.useMemo((function(){if(!d)return X;var e=new l(h,b?null:m.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[h,b,m]),g=P[0],O=P[1],C=t.useMemo((function(){return b?m:y({},m,{subscription:g})}),[b,m,g]),x=t.useReducer(Z,Q,ne),E=x[0][0],T=x[1];if(E&&E.error)throw E.error;var M=t.useRef(),R=t.useRef(s),$=t.useRef(),N=t.useRef(!1),j=p((function(){return $.current&&s===R.current?$.current:S(h.getState(),s)}),[h,E,s]);ee(te,[R,M,N,s,j,$,O]),ee(re,[d,h,g,S,R,M,N,$,O,T],[h,g,S]);var q=t.useMemo((function(){return o.default.createElement(r,y({},j,{ref:i}))}),[i,r,j]);return t.useMemo((function(){return d?o.default.createElement(f.Provider,{value:C},q):q}),[f,q,C])}var h=s?o.default.memo(m):m;if(h.WrappedComponent=r,h.displayName=m.displayName=a,S){var P=o.default.forwardRef((function(e,t){return o.default.createElement(h,y({},e,{reactReduxForwardedRef:t}))}));return P.displayName=a,P.WrappedComponent=r,J(P,r)}return J(h,r)}}function ue(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function ae(e,t){if(ue(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(var n=0;r.length>n;n++)if(!Object.prototype.hasOwnProperty.call(t,r[n])||!ue(e[r[n]],t[r[n]]))return!1;return!0}function ie(e){return function(t,r){var n=e(t,r);function o(){return n}return o.dependsOnOwnProps=!1,o}}function ce(e){return null!=e.dependsOnOwnProps?!!e.dependsOnOwnProps:1!==e.length}function se(e,t){return function(t,r){var n=function(e,t){return n.dependsOnOwnProps?n.mapToProps(e,t):n.mapToProps(e)};return n.dependsOnOwnProps=!0,n.mapToProps=function(t,r){n.mapToProps=e,n.dependsOnOwnProps=ce(e);var o=n(t,r);return"function"==typeof o&&(n.mapToProps=o,n.dependsOnOwnProps=ce(o),o=n(t,r)),o},n}}var fe=[function(e){return"function"==typeof e?se(e):void 0},function(e){return e?void 0:ie((function(e){return{dispatch:e}}))},function(e){return e&&"object"==typeof e?ie((function(t){return function(e,t){var r={},n=function(n){var o=e[n];"function"==typeof o&&(r[n]=function(){return t(o.apply(void 0,arguments))})};for(var o in e)n(o);return r}(e,t)})):void 0}];var pe=[function(e){return"function"==typeof e?se(e):void 0},function(e){return e?void 0:ie((function(){return{}}))}];function le(e,t,r){return y({},r,e,t)}var de=[function(e){return"function"==typeof e?function(e){return function(t,r){var n,o=r.pure,u=r.areMergedPropsEqual,a=!1;return function(t,r,i){var c=e(t,r,i);return a?o&&u(c,n)||(n=c):(a=!0,n=c),n}}}(e):void 0},function(e){return e?void 0:function(){return le}}];function ye(e,t,r,n){return function(o,u){return r(e(o,u),t(n,u),u)}}function ve(e,t,r,n,o){var u,a,i,c,s,f=o.areStatesEqual,p=o.areOwnPropsEqual,l=o.areStatePropsEqual,d=!1;function y(o,d){var y,v,m=!p(d,a),b=!f(o,u);return u=o,a=d,m&&b?(i=e(u,a),t.dependsOnOwnProps&&(c=t(n,a)),s=r(i,c,a)):m?(e.dependsOnOwnProps&&(i=e(u,a)),t.dependsOnOwnProps&&(c=t(n,a)),s=r(i,c,a)):b?(y=e(u,a),v=!l(y,i),i=y,v&&(s=r(i,c,a)),s):s}return function(o,f){return d?y(o,f):(i=e(u=o,a=f),c=t(n,a),s=r(i,c,a),d=!0,s)}}function me(e,t){var r=t.initMapStateToProps,n=t.initMapDispatchToProps,o=t.initMergeProps,u=v(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),a=r(e,u),i=n(e,u),c=o(e,u);return(u.pure?ve:ye)(a,i,c,e,u)}function be(e,t,r){for(var n=t.length-1;n>=0;n--){var o=t[n](e);if(o)return o}return function(t,n){throw Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+n.wrappedComponentName+".")}}function he(e,t){return e===t}function Se(e){var t=void 0===e?{}:e,r=t.connectHOC,n=void 0===r?oe:r,o=t.mapStateToPropsFactories,u=void 0===o?pe:o,a=t.mapDispatchToPropsFactories,i=void 0===a?fe:a,c=t.mergePropsFactories,s=void 0===c?de:c,f=t.selectorFactory,p=void 0===f?me:f;return function(e,t,r,o){void 0===o&&(o={});var a=o.pure,c=void 0===a||a,f=o.areStatesEqual,l=void 0===f?he:f,d=o.areOwnPropsEqual,m=void 0===d?ae:d,b=o.areStatePropsEqual,h=void 0===b?ae:b,S=o.areMergedPropsEqual,P=void 0===S?ae:S,g=v(o,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),O=be(e,u,"mapStateToProps"),w=be(t,i,"mapDispatchToProps"),C=be(r,s,"mergeProps");return n(p,y({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:!!e,initMapStateToProps:O,initMapDispatchToProps:w,initMergeProps:C,pure:c,areStatesEqual:l,areOwnPropsEqual:m,areStatePropsEqual:h,areMergedPropsEqual:P},g))}}var Pe=Se();function ge(){return t.useContext(c)}function Oe(e){void 0===e&&(e=c);var r=e===c?ge:function(){return t.useContext(e)};return function(){return r().store}}var we=Oe();function Ce(e){void 0===e&&(e=c);var t=e===c?we:Oe(e);return function(){return t().dispatch}}var xe=Ce(),Ee=function(e,t){return e===t};function Te(e){void 0===e&&(e=c);var r=e===c?ge:function(){return t.useContext(e)};return function(e,n){void 0===n&&(n=Ee);var o=r(),u=function(e,r,n,o){var u,a=t.useReducer((function(e){return e+1}),0)[1],i=t.useMemo((function(){return new l(n,o)}),[n,o]),c=t.useRef(),s=t.useRef(),f=t.useRef(),p=t.useRef(),y=n.getState();try{if(e!==s.current||y!==f.current||c.current){var v=e(y);u=void 0!==p.current&&r(v,p.current)?p.current:v}else u=p.current}catch(e){throw c.current&&(e.message+="\nThe error may be correlated with this previous error:\n"+c.current.stack+"\n\n"),e}return d((function(){s.current=e,f.current=y,p.current=u,c.current=void 0})),d((function(){function e(){try{var e=n.getState(),t=s.current(e);if(r(t,p.current))return;p.current=t,f.current=e}catch(e){c.current=e}a()}return i.onStateChange=e,i.trySubscribe(),e(),function(){return i.tryUnsubscribe()}}),[n,i]),u}(e,n,o.store,o.subscription);return t.useDebugValue(u),u}}var Me=Te();s=r.unstable_batchedUpdates,Object.defineProperty(e,"batch",{enumerable:!0,get:function(){return r.unstable_batchedUpdates}}),e.Provider=function(e){var r=e.store,n=e.context,u=e.children,a=t.useMemo((function(){var e=new l(r);return e.onStateChange=e.notifyNestedSubs,{store:r,subscription:e}}),[r]),i=t.useMemo((function(){return r.getState()}),[r]);return d((function(){var e=a.subscription;return e.trySubscribe(),i!==r.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,i]),o.default.createElement((n||c).Provider,{value:a},u)},e.ReactReduxContext=c,e.connect=Pe,e.connectAdvanced=oe,e.createDispatchHook=Ce,e.createSelectorHook=Te,e.createStoreHook=Oe,e.shallowEqual=ae,e.useDispatch=xe,e.useSelector=Me,e.useStore=we,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRedux={},e.React,e.ReactDOM)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(t);function u(){}function a(){}a.resetWarningCache=u;!function(){function e(e,t,r,n,o,u){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==u){var a=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:u};r.PropTypes=r}();var c=o.default.createContext(null);var i=function(e){e()},f=function(){return i};var s={notify:function(){},get:function(){return[]}};function p(e,t){var r,n=s;function o(){a.onStateChange&&a.onStateChange()}function u(){r||(r=t?t.addNestedSub(o):e.subscribe(o),n=function(){var e=f(),t=null,r=null;return{clear:function(){t=null,r=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],r=t;r;)e.push(r),r=r.next;return e},subscribe:function(e){var n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())}var a={addNestedSub:function(e){return u(),n.subscribe(e)},notifyNestedSubs:function(){n.notify()},handleChangeWrapper:o,isSubscribed:function(){return!!r},trySubscribe:u,tryUnsubscribe:function(){r&&(r(),r=void 0,n.clear(),n=s)},getListeners:function(){return n}};return a}var l="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t.useLayoutEffect:t.useEffect;function d(){return d=Object.assign||function(e){for(var t=1;arguments.length>t;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},d.apply(this,arguments)}function y(e,t){if(null==e)return{};var r,n,o={},u=Object.keys(e);for(n=0;u.length>n;n++)0>t.indexOf(r=u[n])&&(o[r]=e[r]);return o}var v={exports:{}},m={},b="function"==typeof Symbol&&Symbol.for,S=b?Symbol.for("react.element"):60103,h=b?Symbol.for("react.portal"):60106,P=b?Symbol.for("react.fragment"):60107,g=b?Symbol.for("react.strict_mode"):60108,O=b?Symbol.for("react.profiler"):60114,w=b?Symbol.for("react.provider"):60109,C=b?Symbol.for("react.context"):60110,x=b?Symbol.for("react.async_mode"):60111,$=b?Symbol.for("react.concurrent_mode"):60111,M=b?Symbol.for("react.forward_ref"):60112,E=b?Symbol.for("react.suspense"):60113,T=b?Symbol.for("react.suspense_list"):60120,R=b?Symbol.for("react.memo"):60115,j=b?Symbol.for("react.lazy"):60116,N=b?Symbol.for("react.block"):60121,_=b?Symbol.for("react.fundamental"):60117,D=b?Symbol.for("react.responder"):60118,q=b?Symbol.for("react.scope"):60119;function F(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case S:switch(e=e.type){case x:case $:case P:case O:case g:case E:return e;default:switch(e=e&&e.$$typeof){case C:case M:case j:case R:case w:return e;default:return t}}case h:return t}}}function k(e){return F(e)===$}m.AsyncMode=x,m.ConcurrentMode=$,m.ContextConsumer=C,m.ContextProvider=w,m.Element=S,m.ForwardRef=M,m.Fragment=P,m.Lazy=j,m.Memo=R,m.Portal=h,m.Profiler=O,m.StrictMode=g,m.Suspense=E,m.isAsyncMode=function(e){return k(e)||F(e)===x},m.isConcurrentMode=k,m.isContextConsumer=function(e){return F(e)===C},m.isContextProvider=function(e){return F(e)===w},m.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===S},m.isForwardRef=function(e){return F(e)===M},m.isFragment=function(e){return F(e)===P},m.isLazy=function(e){return F(e)===j},m.isMemo=function(e){return F(e)===R},m.isPortal=function(e){return F(e)===h},m.isProfiler=function(e){return F(e)===O},m.isStrictMode=function(e){return F(e)===g},m.isSuspense=function(e){return F(e)===E},m.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===P||e===$||e===O||e===g||e===E||e===T||"object"==typeof e&&null!==e&&(e.$$typeof===j||e.$$typeof===R||e.$$typeof===w||e.$$typeof===C||e.$$typeof===M||e.$$typeof===_||e.$$typeof===D||e.$$typeof===q||e.$$typeof===N)},m.typeOf=F,v.exports=m;var H=v.exports,U={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},A={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},L={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},W={};function z(e){return H.isMemo(e)?L:W[e.$$typeof]||U}W[H.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},W[H.Memo]=L;var I=Object.defineProperty,V=Object.getOwnPropertyNames,K=Object.getOwnPropertySymbols,B=Object.getOwnPropertyDescriptor,Y=Object.getPrototypeOf,G=Object.prototype;var J=function e(t,r,n){if("string"!=typeof r){if(G){var o=Y(r);o&&o!==G&&e(t,o,n)}var u=V(r);K&&(u=u.concat(K(r)));for(var a=z(t),c=z(r),i=0;u.length>i;++i){var f=u[i];if(!(A[f]||n&&n[f]||c&&c[f]||a&&a[f])){var s=B(r,f);try{I(t,f,s)}catch(e){}}}}return t},Q={exports:{}},X={},Z=60103,ee=60106,te=60107,re=60108,ne=60114,oe=60109,ue=60110,ae=60112,ce=60113,ie=60120,fe=60115,se=60116,pe=60121,le=60122,de=60117,ye=60129,ve=60131;if("function"==typeof Symbol&&Symbol.for){var me=Symbol.for;Z=me("react.element"),ee=me("react.portal"),te=me("react.fragment"),re=me("react.strict_mode"),ne=me("react.profiler"),oe=me("react.provider"),ue=me("react.context"),ae=me("react.forward_ref"),ce=me("react.suspense"),ie=me("react.suspense_list"),fe=me("react.memo"),se=me("react.lazy"),pe=me("react.block"),le=me("react.server.block"),de=me("react.fundamental"),ye=me("react.debug_trace_mode"),ve=me("react.legacy_hidden")}function be(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case Z:switch(e=e.type){case te:case ne:case re:case ce:case ie:return e;default:switch(e=e&&e.$$typeof){case ue:case ae:case se:case fe:case oe:return e;default:return t}}case ee:return t}}}var Se=oe,he=Z,Pe=ae,ge=te,Oe=se,we=fe,Ce=ee,xe=ne,$e=re,Me=ce;X.ContextConsumer=ue,X.ContextProvider=Se,X.Element=he,X.ForwardRef=Pe,X.Fragment=ge,X.Lazy=Oe,X.Memo=we,X.Portal=Ce,X.Profiler=xe,X.StrictMode=$e,X.Suspense=Me,X.isAsyncMode=function(){return!1},X.isConcurrentMode=function(){return!1},X.isContextConsumer=function(e){return be(e)===ue},X.isContextProvider=function(e){return be(e)===oe},X.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===Z},X.isForwardRef=function(e){return be(e)===ae},X.isFragment=function(e){return be(e)===te},X.isLazy=function(e){return be(e)===se},X.isMemo=function(e){return be(e)===fe},X.isPortal=function(e){return be(e)===ee},X.isProfiler=function(e){return be(e)===ne},X.isStrictMode=function(e){return be(e)===re},X.isSuspense=function(e){return be(e)===ce},X.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===te||e===ne||e===ye||e===re||e===ce||e===ie||e===ve||"object"==typeof e&&null!==e&&(e.$$typeof===se||e.$$typeof===fe||e.$$typeof===oe||e.$$typeof===ue||e.$$typeof===ae||e.$$typeof===de||e.$$typeof===pe||e[0]===le)},X.typeOf=be,Q.exports=X;var Ee=["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"],Te=["reactReduxForwardedRef"],Re=[],je=[null,null];function Ne(e,t){return[t.payload,e[1]+1]}function _e(e,t,r){l((function(){return e.apply(void 0,t)}),r)}function De(e,t,r,n,o,u,a){e.current=n,t.current=o,r.current=!1,u.current&&(u.current=null,a())}function qe(e,t,r,n,o,u,a,c,i,f){if(e){var s=!1,p=null,l=function(){if(!s){var e,r,l=t.getState();try{e=n(l,o.current)}catch(e){r=e,p=e}r||(p=null),e===u.current?a.current||i():(u.current=e,c.current=e,a.current=!0,f({type:"STORE_UPDATED",payload:{error:r}}))}};r.onStateChange=l,r.trySubscribe(),l();return function(){if(s=!0,r.tryUnsubscribe(),r.onStateChange=null,p)throw p}}}var Fe=function(){return[null,0]};function ke(e,r){void 0===r&&(r={});var n=r,u=n.getDisplayName,a=void 0===u?function(e){return"ConnectAdvanced("+e+")"}:u,i=n.methodName,f=void 0===i?"connectAdvanced":i,s=n.renderCountProp,l=void 0===s?void 0:s,v=n.shouldHandleStateChanges,m=void 0===v||v,b=n.storeKey,S=void 0===b?"store":b,h=n.forwardRef,P=void 0!==h&&h,g=n.context,O=void 0===g?c:g,w=y(n,Ee),C=O;return function(r){var n=r.displayName||r.name||"Component",u=a(n),c=d({},w,{getDisplayName:a,methodName:f,renderCountProp:l,shouldHandleStateChanges:m,storeKey:S,displayName:u,wrappedComponentName:n,WrappedComponent:r}),i=w.pure;var s=i?t.useMemo:function(e){return e()};function v(n){var u=t.useMemo((function(){var e=n.reactReduxForwardedRef,t=y(n,Te);return[n.context,e,t]}),[n]),a=u[0],i=u[1],f=u[2],l=t.useMemo((function(){return a&&a.Consumer&&Q.exports.isContextConsumer(o.default.createElement(a.Consumer,null))?a:C}),[a,C]),v=t.useContext(l),b=!!n.store&&!!n.store.getState&&!!n.store.dispatch,S=b?n.store:v.store,h=t.useMemo((function(){return function(t){return e(t.dispatch,c)}(S)}),[S]),P=t.useMemo((function(){if(!m)return je;var e=p(S,b?null:v.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[S,b,v]),g=P[0],O=P[1],w=t.useMemo((function(){return b?v:d({},v,{subscription:g})}),[b,v,g]),x=t.useReducer(Ne,Re,Fe),$=x[0][0],M=x[1];if($&&$.error)throw $.error;var E=t.useRef(),T=t.useRef(f),R=t.useRef(),j=t.useRef(!1),N=s((function(){return R.current&&f===T.current?R.current:h(S.getState(),f)}),[S,$,f]);_e(De,[T,E,j,f,N,R,O]),_e(qe,[m,S,g,h,T,E,j,R,O,M],[S,g,h]);var _=t.useMemo((function(){return o.default.createElement(r,d({},N,{ref:i}))}),[i,r,N]);return t.useMemo((function(){return m?o.default.createElement(l.Provider,{value:w},_):_}),[l,_,w])}var b=i?o.default.memo(v):v;if(b.WrappedComponent=r,b.displayName=v.displayName=u,P){var h=o.default.forwardRef((function(e,t){return o.default.createElement(b,d({},e,{reactReduxForwardedRef:t}))}));return h.displayName=u,h.WrappedComponent=r,J(h,r)}return J(b,r)}}function He(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function Ue(e,t){if(He(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(var n=0;r.length>n;n++)if(!Object.prototype.hasOwnProperty.call(t,r[n])||!He(e[r[n]],t[r[n]]))return!1;return!0}function Ae(e){return function(t,r){var n=e(t,r);function o(){return n}return o.dependsOnOwnProps=!1,o}}function Le(e){return null!=e.dependsOnOwnProps?!!e.dependsOnOwnProps:1!==e.length}function We(e,t){return function(t,r){var n=function(e,t){return n.dependsOnOwnProps?n.mapToProps(e,t):n.mapToProps(e)};return n.dependsOnOwnProps=!0,n.mapToProps=function(t,r){n.mapToProps=e,n.dependsOnOwnProps=Le(e);var o=n(t,r);return"function"==typeof o&&(n.mapToProps=o,n.dependsOnOwnProps=Le(o),o=n(t,r)),o},n}}var ze=[function(e){return"function"==typeof e?We(e):void 0},function(e){return e?void 0:Ae((function(e){return{dispatch:e}}))},function(e){return e&&"object"==typeof e?Ae((function(t){return function(e,t){var r={},n=function(n){var o=e[n];"function"==typeof o&&(r[n]=function(){return t(o.apply(void 0,arguments))})};for(var o in e)n(o);return r}(e,t)})):void 0}];var Ie=[function(e){return"function"==typeof e?We(e):void 0},function(e){return e?void 0:Ae((function(){return{}}))}];function Ve(e,t,r){return d({},r,e,t)}var Ke=[function(e){return"function"==typeof e?function(e){return function(t,r){var n,o=r.pure,u=r.areMergedPropsEqual,a=!1;return function(t,r,c){var i=e(t,r,c);return a?o&&u(i,n)||(n=i):(a=!0,n=i),n}}}(e):void 0},function(e){return e?void 0:function(){return Ve}}],Be=["initMapStateToProps","initMapDispatchToProps","initMergeProps"];function Ye(e,t,r,n){return function(o,u){return r(e(o,u),t(n,u),u)}}function Ge(e,t,r,n,o){var u,a,c,i,f,s=o.areStatesEqual,p=o.areOwnPropsEqual,l=o.areStatePropsEqual,d=!1;function y(o,d){var y,v,m=!p(d,a),b=!s(o,u,d,a);return u=o,a=d,m&&b?(c=e(u,a),t.dependsOnOwnProps&&(i=t(n,a)),f=r(c,i,a)):m?(e.dependsOnOwnProps&&(c=e(u,a)),t.dependsOnOwnProps&&(i=t(n,a)),f=r(c,i,a)):b?(y=e(u,a),v=!l(y,c),c=y,v&&(f=r(c,i,a)),f):f}return function(o,s){return d?y(o,s):(c=e(u=o,a=s),i=t(n,a),f=r(c,i,a),d=!0,f)}}function Je(e,t){var r=t.initMapStateToProps,n=t.initMapDispatchToProps,o=t.initMergeProps,u=y(t,Be),a=r(e,u),c=n(e,u),i=o(e,u);return(u.pure?Ge:Ye)(a,c,i,e,u)}var Qe=["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"];function Xe(e,t,r){for(var n=t.length-1;n>=0;n--){var o=t[n](e);if(o)return o}return function(t,n){throw Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+n.wrappedComponentName+".")}}function Ze(e,t){return e===t}function et(e){var t=void 0===e?{}:e,r=t.connectHOC,n=void 0===r?ke:r,o=t.mapStateToPropsFactories,u=void 0===o?Ie:o,a=t.mapDispatchToPropsFactories,c=void 0===a?ze:a,i=t.mergePropsFactories,f=void 0===i?Ke:i,s=t.selectorFactory,p=void 0===s?Je:s;return function(e,t,r,o){void 0===o&&(o={});var a=o.pure,i=void 0===a||a,s=o.areStatesEqual,l=void 0===s?Ze:s,v=o.areOwnPropsEqual,m=void 0===v?Ue:v,b=o.areStatePropsEqual,S=void 0===b?Ue:b,h=o.areMergedPropsEqual,P=void 0===h?Ue:h,g=y(o,Qe),O=Xe(e,u,"mapStateToProps"),w=Xe(t,c,"mapDispatchToProps"),C=Xe(r,f,"mergeProps");return n(p,d({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:!!e,initMapStateToProps:O,initMapDispatchToProps:w,initMergeProps:C,pure:i,areStatesEqual:l,areOwnPropsEqual:m,areStatePropsEqual:S,areMergedPropsEqual:P},g))}}var tt=et();function rt(){return t.useContext(c)}function nt(e){void 0===e&&(e=c);var r=e===c?rt:function(){return t.useContext(e)};return function(){return r().store}}var ot=nt();function ut(e){void 0===e&&(e=c);var t=e===c?ot:nt(e);return function(){return t().dispatch}}var at=ut(),ct=function(e,t){return e===t};function it(e){void 0===e&&(e=c);var r=e===c?rt:function(){return t.useContext(e)};return function(e,n){void 0===n&&(n=ct);var o=r(),u=function(e,r,n,o){var u,a=t.useReducer((function(e){return e+1}),0)[1],c=t.useMemo((function(){return p(n,o)}),[n,o]),i=t.useRef(),f=t.useRef(),s=t.useRef(),d=t.useRef(),y=n.getState();try{if(e!==f.current||y!==s.current||i.current){var v=e(y);u=void 0!==d.current&&r(v,d.current)?d.current:v}else u=d.current}catch(e){throw i.current&&(e.message+="\nThe error may be correlated with this previous error:\n"+i.current.stack+"\n\n"),e}return l((function(){f.current=e,s.current=y,d.current=u,i.current=void 0})),l((function(){function e(){try{var e=n.getState();if(e===s.current)return;var t=f.current(e);if(r(t,d.current))return;d.current=t,s.current=e}catch(e){i.current=e}a()}return c.onStateChange=e,c.trySubscribe(),e(),function(){return c.tryUnsubscribe()}}),[n,c]),u}(e,n,o.store,o.subscription);return t.useDebugValue(u),u}}var ft=it();i=r.unstable_batchedUpdates,Object.defineProperty(e,"batch",{enumerable:!0,get:function(){return r.unstable_batchedUpdates}}),e.Provider=function(e){var r=e.store,n=e.context,u=e.children,a=t.useMemo((function(){var e=p(r);return{store:r,subscription:e}}),[r]),i=t.useMemo((function(){return r.getState()}),[r]);return l((function(){var e=a.subscription;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),i!==r.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,i]),o.default.createElement((n||c).Provider,{value:a},u)},e.ReactReduxContext=c,e.connect=tt,e.connectAdvanced=ke,e.createDispatchHook=ut,e.createSelectorHook=it,e.createStoreHook=nt,e.shallowEqual=Ue,e.useDispatch=at,e.useSelector=ft,e.useStore=ot,Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -1,12 +0,6 @@ | ||
import Provider from './components/Provider'; | ||
import connectAdvanced from './components/connectAdvanced'; | ||
import { ReactReduxContext } from './components/Context'; | ||
import connect from './connect/connect'; | ||
import { useDispatch } from './hooks/useDispatch'; | ||
import { useSelector } from './hooks/useSelector'; | ||
import { useStore } from './hooks/useStore'; | ||
import { getBatch } from './utils/batch'; | ||
import shallowEqual from './utils/shallowEqual'; // For other renderers besides ReactDOM and React Native, use the default noop batch function | ||
export * from './exports'; | ||
import { getBatch } from './utils/batch'; // For other renderers besides ReactDOM and React Native, | ||
// use the default noop batch function | ||
var batch = getBatch(); | ||
export { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, useSelector, useStore, shallowEqual }; | ||
export { batch }; |
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
var _excluded = ["getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context"], | ||
_excluded2 = ["reactReduxForwardedRef"]; | ||
import hoistStatics from 'hoist-non-react-statics'; | ||
import React, { useContext, useMemo, useRef, useReducer } from 'react'; | ||
import { isValidElementType, isContextConsumer } from 'react-is'; | ||
import Subscription from '../utils/Subscription'; | ||
import { createSubscription } from '../utils/Subscription'; | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'; | ||
@@ -166,3 +168,3 @@ import { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these | ||
context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context, | ||
connectOptions = _objectWithoutPropertiesLoose(_ref2, ["getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context"]); | ||
connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded); | ||
@@ -224,3 +226,3 @@ if (process.env.NODE_ENV !== 'production') { | ||
var reactReduxForwardedRef = props.reactReduxForwardedRef, | ||
wrapperProps = _objectWithoutPropertiesLoose(props, ["reactReduxForwardedRef"]); | ||
wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2); | ||
@@ -262,3 +264,5 @@ return [props.context, reactReduxForwardedRef, wrapperProps]; | ||
var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// This Subscription's source should match where store came from: props vs. context. A component | ||
// connected to the store via props shouldn't use subscription from context, or vice versa. | ||
var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// the middle of the notification loop, where `subscription` will then be null. This can | ||
@@ -268,2 +272,6 @@ // probably be avoided if Subscription's listeners logic is changed to not call listeners | ||
// `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// the middle of the notification loop, where `subscription` will then be null. This can | ||
// probably be avoided if Subscription's listeners logic is changed to not call listeners | ||
// that have been unsubscribed in the middle of the notification loop. | ||
var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription); | ||
@@ -270,0 +278,0 @@ return [subscription, notifyNestedSubs]; |
import React, { useMemo } from 'react'; | ||
import PropTypes from 'prop-types'; | ||
import { ReactReduxContext } from './Context'; | ||
import Subscription from '../utils/Subscription'; | ||
import { createSubscription } from '../utils/Subscription'; | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'; | ||
@@ -12,4 +12,3 @@ | ||
var contextValue = useMemo(function () { | ||
var subscription = new Subscription(store); | ||
subscription.onStateChange = subscription.notifyNestedSubs; | ||
var subscription = createSubscription(store); | ||
return { | ||
@@ -25,2 +24,3 @@ store: store, | ||
var subscription = contextValue.subscription; | ||
subscription.onStateChange = subscription.notifyNestedSubs; | ||
subscription.trySubscribe(); | ||
@@ -27,0 +27,0 @@ |
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
var _excluded = ["pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual"]; | ||
import connectAdvanced from '../components/connectAdvanced'; | ||
@@ -72,3 +73,3 @@ import shallowEqual from '../utils/shallowEqual'; | ||
areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE, | ||
extraOptions = _objectWithoutPropertiesLoose(_ref3, ["pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual"]); | ||
extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded); | ||
@@ -75,0 +76,0 @@ var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps'); |
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
var _excluded = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]; | ||
import verifySubselectors from './verifySubselectors'; | ||
@@ -53,3 +54,3 @@ export function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) { | ||
var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps); | ||
var stateChanged = !areStatesEqual(nextState, state); | ||
var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps); | ||
state = nextState; | ||
@@ -76,3 +77,3 @@ ownProps = nextOwnProps; | ||
initMergeProps = _ref2.initMergeProps, | ||
options = _objectWithoutPropertiesLoose(_ref2, ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]); | ||
options = _objectWithoutPropertiesLoose(_ref2, _excluded); | ||
@@ -79,0 +80,0 @@ var mapStateToProps = initMapStateToProps(dispatch, options); |
import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react'; | ||
import { useReduxContext as useDefaultReduxContext } from './useReduxContext'; | ||
import Subscription from '../utils/Subscription'; | ||
import { createSubscription } from '../utils/Subscription'; | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect'; | ||
@@ -18,3 +18,3 @@ import { ReactReduxContext } from '../components/Context'; | ||
var subscription = useMemo(function () { | ||
return new Subscription(store, contextSub); | ||
return createSubscription(store, contextSub); | ||
}, [store, contextSub]); | ||
@@ -57,4 +57,8 @@ var latestSubscriptionCallbackError = useRef(); | ||
try { | ||
var newStoreState = store.getState(); | ||
var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed | ||
if (newStoreState === latestStoreState.current) { | ||
return; | ||
} | ||
var _newSelectedState = latestSelector.current(newStoreState); | ||
@@ -61,0 +65,0 @@ |
@@ -1,12 +0,7 @@ | ||
import Provider from './components/Provider'; | ||
import connectAdvanced from './components/connectAdvanced'; | ||
import { ReactReduxContext } from './components/Context'; | ||
import connect from './connect/connect'; | ||
import { useDispatch, createDispatchHook } from './hooks/useDispatch'; | ||
import { useSelector, createSelectorHook } from './hooks/useSelector'; | ||
import { useStore, createStoreHook } from './hooks/useStore'; | ||
import { setBatch } from './utils/batch'; | ||
export * from './exports'; | ||
import { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates'; | ||
import shallowEqual from './utils/shallowEqual'; | ||
import { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use | ||
// with standard React renderers (ReactDOM, React Native) | ||
setBatch(batch); | ||
export { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual }; | ||
export { batch }; |
@@ -5,6 +5,2 @@ import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as | ||
var nullListeners = { | ||
notify: function notify() {} | ||
}; | ||
function createListenerCollection() { | ||
@@ -74,51 +70,59 @@ var batch = getBatch(); | ||
var Subscription = /*#__PURE__*/function () { | ||
function Subscription(store, parentSub) { | ||
this.store = store; | ||
this.parentSub = parentSub; | ||
this.unsubscribe = null; | ||
this.listeners = nullListeners; | ||
this.handleChangeWrapper = this.handleChangeWrapper.bind(this); | ||
var nullListeners = { | ||
notify: function notify() {}, | ||
get: function get() { | ||
return []; | ||
} | ||
}; | ||
export function createSubscription(store, parentSub) { | ||
var unsubscribe; | ||
var listeners = nullListeners; | ||
var _proto = Subscription.prototype; | ||
function addNestedSub(listener) { | ||
trySubscribe(); | ||
return listeners.subscribe(listener); | ||
} | ||
_proto.addNestedSub = function addNestedSub(listener) { | ||
this.trySubscribe(); | ||
return this.listeners.subscribe(listener); | ||
}; | ||
function notifyNestedSubs() { | ||
listeners.notify(); | ||
} | ||
_proto.notifyNestedSubs = function notifyNestedSubs() { | ||
this.listeners.notify(); | ||
}; | ||
_proto.handleChangeWrapper = function handleChangeWrapper() { | ||
if (this.onStateChange) { | ||
this.onStateChange(); | ||
function handleChangeWrapper() { | ||
if (subscription.onStateChange) { | ||
subscription.onStateChange(); | ||
} | ||
}; | ||
} | ||
_proto.isSubscribed = function isSubscribed() { | ||
return Boolean(this.unsubscribe); | ||
}; | ||
function isSubscribed() { | ||
return Boolean(unsubscribe); | ||
} | ||
_proto.trySubscribe = function trySubscribe() { | ||
if (!this.unsubscribe) { | ||
this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper); | ||
this.listeners = createListenerCollection(); | ||
function trySubscribe() { | ||
if (!unsubscribe) { | ||
unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper); | ||
listeners = createListenerCollection(); | ||
} | ||
}; | ||
} | ||
_proto.tryUnsubscribe = function tryUnsubscribe() { | ||
if (this.unsubscribe) { | ||
this.unsubscribe(); | ||
this.unsubscribe = null; | ||
this.listeners.clear(); | ||
this.listeners = nullListeners; | ||
function tryUnsubscribe() { | ||
if (unsubscribe) { | ||
unsubscribe(); | ||
unsubscribe = undefined; | ||
listeners.clear(); | ||
listeners = nullListeners; | ||
} | ||
} | ||
var subscription = { | ||
addNestedSub: addNestedSub, | ||
notifyNestedSubs: notifyNestedSubs, | ||
handleChangeWrapper: handleChangeWrapper, | ||
isSubscribed: isSubscribed, | ||
trySubscribe: trySubscribe, | ||
tryUnsubscribe: tryUnsubscribe, | ||
getListeners: function getListeners() { | ||
return listeners; | ||
} | ||
}; | ||
return Subscription; | ||
}(); | ||
export { Subscription as default }; | ||
return subscription; | ||
} |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
exports.__esModule = true; | ||
var _exportNames = { | ||
batch: true | ||
}; | ||
exports.batch = void 0; | ||
var _Provider = _interopRequireDefault(require("./components/Provider")); | ||
var _exports = require("./exports"); | ||
exports.Provider = _Provider["default"]; | ||
Object.keys(_exports).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
if (key in exports && exports[key] === _exports[key]) return; | ||
exports[key] = _exports[key]; | ||
}); | ||
var _connectAdvanced = _interopRequireDefault(require("./components/connectAdvanced")); | ||
exports.connectAdvanced = _connectAdvanced["default"]; | ||
var _Context = require("./components/Context"); | ||
exports.ReactReduxContext = _Context.ReactReduxContext; | ||
var _connect = _interopRequireDefault(require("./connect/connect")); | ||
exports.connect = _connect["default"]; | ||
var _useDispatch = require("./hooks/useDispatch"); | ||
exports.useDispatch = _useDispatch.useDispatch; | ||
var _useSelector = require("./hooks/useSelector"); | ||
exports.useSelector = _useSelector.useSelector; | ||
var _useStore = require("./hooks/useStore"); | ||
exports.useStore = _useStore.useStore; | ||
var _batch = require("./utils/batch"); | ||
var _shallowEqual = _interopRequireDefault(require("./utils/shallowEqual")); | ||
exports.shallowEqual = _shallowEqual["default"]; | ||
// For other renderers besides ReactDOM and React Native, use the default noop batch function | ||
// For other renderers besides ReactDOM and React Native, | ||
// use the default noop batch function | ||
var batch = (0, _batch.getBatch)(); | ||
exports.batch = batch; |
"use strict"; | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; | ||
@@ -20,3 +20,3 @@ exports.__esModule = true; | ||
var _Subscription = _interopRequireDefault(require("../utils/Subscription")); | ||
var _Subscription = require("../utils/Subscription"); | ||
@@ -27,2 +27,4 @@ var _useIsomorphicLayoutEffect = require("../utils/useIsomorphicLayoutEffect"); | ||
var _excluded = ["getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context"], | ||
_excluded2 = ["reactReduxForwardedRef"]; | ||
// Define some constant arrays just to avoid re-creating these | ||
@@ -185,3 +187,3 @@ var EMPTY_ARRAY = []; | ||
context = _ref2$context === void 0 ? _Context.ReactReduxContext : _ref2$context, | ||
connectOptions = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, ["getDisplayName", "methodName", "renderCountProp", "shouldHandleStateChanges", "storeKey", "withRef", "forwardRef", "context"]); | ||
connectOptions = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, _excluded); | ||
@@ -241,3 +243,3 @@ if (process.env.NODE_ENV !== 'production') { | ||
var reactReduxForwardedRef = props.reactReduxForwardedRef, | ||
wrapperProps = (0, _objectWithoutPropertiesLoose2["default"])(props, ["reactReduxForwardedRef"]); | ||
wrapperProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded2); | ||
return [props.context, reactReduxForwardedRef, wrapperProps]; | ||
@@ -278,3 +280,5 @@ }, [props]), | ||
var subscription = new _Subscription["default"](store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// This Subscription's source should match where store came from: props vs. context. A component | ||
// connected to the store via props shouldn't use subscription from context, or vice versa. | ||
var subscription = (0, _Subscription.createSubscription)(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// the middle of the notification loop, where `subscription` will then be null. This can | ||
@@ -284,2 +288,6 @@ // probably be avoided if Subscription's listeners logic is changed to not call listeners | ||
// `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in | ||
// the middle of the notification loop, where `subscription` will then be null. This can | ||
// probably be avoided if Subscription's listeners logic is changed to not call listeners | ||
// that have been unsubscribed in the middle of the notification loop. | ||
var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription); | ||
@@ -286,0 +294,0 @@ return [subscription, notifyNestedSubs]; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
@@ -5,0 +5,0 @@ exports.__esModule = true; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; | ||
@@ -16,3 +16,3 @@ exports.__esModule = true; | ||
var _Subscription = _interopRequireDefault(require("../utils/Subscription")); | ||
var _Subscription = require("../utils/Subscription"); | ||
@@ -26,4 +26,3 @@ var _useIsomorphicLayoutEffect = require("../utils/useIsomorphicLayoutEffect"); | ||
var contextValue = (0, _react.useMemo)(function () { | ||
var subscription = new _Subscription["default"](store); | ||
subscription.onStateChange = subscription.notifyNestedSubs; | ||
var subscription = (0, _Subscription.createSubscription)(store); | ||
return { | ||
@@ -39,2 +38,3 @@ store: store, | ||
var subscription = contextValue.subscription; | ||
subscription.onStateChange = subscription.notifyNestedSubs; | ||
subscription.trySubscribe(); | ||
@@ -41,0 +41,0 @@ |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
@@ -25,2 +25,4 @@ exports.__esModule = true; | ||
var _excluded = ["pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual"]; | ||
/* | ||
@@ -88,3 +90,3 @@ connect is a facade over connectAdvanced. It turns its args into a compatible | ||
areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? _shallowEqual["default"] : _ref3$areMergedPropsE, | ||
extraOptions = (0, _objectWithoutPropertiesLoose2["default"])(_ref3, ["pure", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "areMergedPropsEqual"]); | ||
extraOptions = (0, _objectWithoutPropertiesLoose2["default"])(_ref3, _excluded); | ||
var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps'); | ||
@@ -91,0 +93,0 @@ var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps'); |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
exports.__esModule = true; | ||
exports["default"] = void 0; | ||
exports.whenMapDispatchToPropsIsFunction = whenMapDispatchToPropsIsFunction; | ||
exports.whenMapDispatchToPropsIsMissing = whenMapDispatchToPropsIsMissing; | ||
exports.whenMapDispatchToPropsIsObject = whenMapDispatchToPropsIsObject; | ||
exports["default"] = void 0; | ||
@@ -11,0 +11,0 @@ var _bindActionCreators = _interopRequireDefault(require("../utils/bindActionCreators")); |
"use strict"; | ||
exports.__esModule = true; | ||
exports["default"] = void 0; | ||
exports.whenMapStateToPropsIsFunction = whenMapStateToPropsIsFunction; | ||
exports.whenMapStateToPropsIsMissing = whenMapStateToPropsIsMissing; | ||
exports["default"] = void 0; | ||
@@ -8,0 +8,0 @@ var _wrapMapToProps = require("./wrapMapToProps"); |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
exports.__esModule = true; | ||
exports["default"] = void 0; | ||
exports.defaultMergeProps = defaultMergeProps; | ||
exports.wrapMergePropsFunc = wrapMergePropsFunc; | ||
exports.whenMergePropsIsFunction = whenMergePropsIsFunction; | ||
exports.whenMergePropsIsOmitted = whenMergePropsIsOmitted; | ||
exports["default"] = void 0; | ||
exports.wrapMergePropsFunc = wrapMergePropsFunc; | ||
@@ -12,0 +12,0 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
exports.__esModule = true; | ||
exports["default"] = finalPropsSelectorFactory; | ||
exports.impureFinalPropsSelectorFactory = impureFinalPropsSelectorFactory; | ||
exports.pureFinalPropsSelectorFactory = pureFinalPropsSelectorFactory; | ||
exports["default"] = finalPropsSelectorFactory; | ||
@@ -14,2 +14,4 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); | ||
var _excluded = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]; | ||
function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) { | ||
@@ -66,3 +68,3 @@ return function impureFinalPropsSelector(state, ownProps) { | ||
var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps); | ||
var stateChanged = !areStatesEqual(nextState, state); | ||
var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps); | ||
state = nextState; | ||
@@ -90,3 +92,3 @@ ownProps = nextOwnProps; | ||
initMergeProps = _ref2.initMergeProps, | ||
options = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]); | ||
options = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, _excluded); | ||
var mapStateToProps = initMapStateToProps(dispatch, options); | ||
@@ -93,0 +95,0 @@ var mapDispatchToProps = initMapDispatchToProps(dispatch, options); |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
@@ -5,0 +5,0 @@ exports.__esModule = true; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
exports.__esModule = true; | ||
exports.getDependsOnOwnProps = getDependsOnOwnProps; | ||
exports.wrapMapToPropsConstant = wrapMapToPropsConstant; | ||
exports.getDependsOnOwnProps = getDependsOnOwnProps; | ||
exports.wrapMapToPropsFunc = wrapMapToPropsFunc; | ||
@@ -9,0 +9,0 @@ |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
exports.__esModule = true; | ||
@@ -13,3 +11,3 @@ exports.createSelectorHook = createSelectorHook; | ||
var _Subscription = _interopRequireDefault(require("../utils/Subscription")); | ||
var _Subscription = require("../utils/Subscription"); | ||
@@ -31,3 +29,3 @@ var _useIsomorphicLayoutEffect = require("../utils/useIsomorphicLayoutEffect"); | ||
var subscription = (0, _react.useMemo)(function () { | ||
return new _Subscription["default"](store, contextSub); | ||
return (0, _Subscription.createSubscription)(store, contextSub); | ||
}, [store, contextSub]); | ||
@@ -70,4 +68,8 @@ var latestSubscriptionCallbackError = (0, _react.useRef)(); | ||
try { | ||
var newStoreState = store.getState(); | ||
var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed | ||
if (newStoreState === latestStoreState.current) { | ||
return; | ||
} | ||
var _newSelectedState = latestSelector.current(newStoreState); | ||
@@ -74,0 +76,0 @@ |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
exports.__esModule = true; | ||
var _exportNames = { | ||
batch: true | ||
}; | ||
var _Provider = _interopRequireDefault(require("./components/Provider")); | ||
var _exports = require("./exports"); | ||
exports.Provider = _Provider["default"]; | ||
Object.keys(_exports).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; | ||
if (key in exports && exports[key] === _exports[key]) return; | ||
exports[key] = _exports[key]; | ||
}); | ||
var _connectAdvanced = _interopRequireDefault(require("./components/connectAdvanced")); | ||
exports.connectAdvanced = _connectAdvanced["default"]; | ||
var _Context = require("./components/Context"); | ||
exports.ReactReduxContext = _Context.ReactReduxContext; | ||
var _connect = _interopRequireDefault(require("./connect/connect")); | ||
exports.connect = _connect["default"]; | ||
var _useDispatch = require("./hooks/useDispatch"); | ||
exports.useDispatch = _useDispatch.useDispatch; | ||
exports.createDispatchHook = _useDispatch.createDispatchHook; | ||
var _useSelector = require("./hooks/useSelector"); | ||
exports.useSelector = _useSelector.useSelector; | ||
exports.createSelectorHook = _useSelector.createSelectorHook; | ||
var _useStore = require("./hooks/useStore"); | ||
exports.useStore = _useStore.useStore; | ||
exports.createStoreHook = _useStore.createStoreHook; | ||
var _batch = require("./utils/batch"); | ||
var _reactBatchedUpdates = require("./utils/reactBatchedUpdates"); | ||
@@ -44,5 +21,6 @@ | ||
var _shallowEqual = _interopRequireDefault(require("./utils/shallowEqual")); | ||
var _batch = require("./utils/batch"); | ||
exports.shallowEqual = _shallowEqual["default"]; | ||
// Enable batched updates in our subscriptions for use | ||
// with standard React renderers (ReactDOM, React Native) | ||
(0, _batch.setBatch)(_reactBatchedUpdates.unstable_batchedUpdates); |
"use strict"; | ||
exports.__esModule = true; | ||
exports.getBatch = exports.setBatch = void 0; | ||
exports.setBatch = exports.getBatch = void 0; | ||
@@ -6,0 +6,0 @@ // Default to a dummy "batch" implementation that just runs the callback |
"use strict"; | ||
exports.__esModule = true; | ||
exports["default"] = void 0; | ||
exports.createSubscription = createSubscription; | ||
@@ -11,6 +11,2 @@ var _batch = require("./batch"); | ||
// ancestor components re-render before descendants | ||
var nullListeners = { | ||
notify: function notify() {} | ||
}; | ||
function createListenerCollection() { | ||
@@ -80,51 +76,60 @@ var batch = (0, _batch.getBatch)(); | ||
var Subscription = /*#__PURE__*/function () { | ||
function Subscription(store, parentSub) { | ||
this.store = store; | ||
this.parentSub = parentSub; | ||
this.unsubscribe = null; | ||
this.listeners = nullListeners; | ||
this.handleChangeWrapper = this.handleChangeWrapper.bind(this); | ||
var nullListeners = { | ||
notify: function notify() {}, | ||
get: function get() { | ||
return []; | ||
} | ||
}; | ||
var _proto = Subscription.prototype; | ||
function createSubscription(store, parentSub) { | ||
var unsubscribe; | ||
var listeners = nullListeners; | ||
_proto.addNestedSub = function addNestedSub(listener) { | ||
this.trySubscribe(); | ||
return this.listeners.subscribe(listener); | ||
}; | ||
function addNestedSub(listener) { | ||
trySubscribe(); | ||
return listeners.subscribe(listener); | ||
} | ||
_proto.notifyNestedSubs = function notifyNestedSubs() { | ||
this.listeners.notify(); | ||
}; | ||
function notifyNestedSubs() { | ||
listeners.notify(); | ||
} | ||
_proto.handleChangeWrapper = function handleChangeWrapper() { | ||
if (this.onStateChange) { | ||
this.onStateChange(); | ||
function handleChangeWrapper() { | ||
if (subscription.onStateChange) { | ||
subscription.onStateChange(); | ||
} | ||
}; | ||
} | ||
_proto.isSubscribed = function isSubscribed() { | ||
return Boolean(this.unsubscribe); | ||
}; | ||
function isSubscribed() { | ||
return Boolean(unsubscribe); | ||
} | ||
_proto.trySubscribe = function trySubscribe() { | ||
if (!this.unsubscribe) { | ||
this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper); | ||
this.listeners = createListenerCollection(); | ||
function trySubscribe() { | ||
if (!unsubscribe) { | ||
unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper); | ||
listeners = createListenerCollection(); | ||
} | ||
}; | ||
} | ||
_proto.tryUnsubscribe = function tryUnsubscribe() { | ||
if (this.unsubscribe) { | ||
this.unsubscribe(); | ||
this.unsubscribe = null; | ||
this.listeners.clear(); | ||
this.listeners = nullListeners; | ||
function tryUnsubscribe() { | ||
if (unsubscribe) { | ||
unsubscribe(); | ||
unsubscribe = undefined; | ||
listeners.clear(); | ||
listeners = nullListeners; | ||
} | ||
} | ||
var subscription = { | ||
addNestedSub: addNestedSub, | ||
notifyNestedSubs: notifyNestedSubs, | ||
handleChangeWrapper: handleChangeWrapper, | ||
isSubscribed: isSubscribed, | ||
trySubscribe: trySubscribe, | ||
tryUnsubscribe: tryUnsubscribe, | ||
getListeners: function getListeners() { | ||
return listeners; | ||
} | ||
}; | ||
return Subscription; | ||
}(); | ||
exports["default"] = Subscription; | ||
return subscription; | ||
} |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; | ||
@@ -5,0 +5,0 @@ exports.__esModule = true; |
{ | ||
"name": "react-redux", | ||
"version": "7.2.4", | ||
"version": "7.2.9", | ||
"description": "Official React bindings for Redux", | ||
@@ -31,3 +31,3 @@ "keywords": [ | ||
"clean": "rimraf lib dist es coverage", | ||
"format": "prettier --write \"{src,test}/**/*.{js,ts}\" index.d.ts \"docs/**/*.md\"", | ||
"format": "prettier --write \"{src,test}/**/*.{js,ts}\" \"docs/**/*.md\"", | ||
"lint": "eslint src test/utils test/components test/hooks", | ||
@@ -40,3 +40,3 @@ "prepare": "npm run clean && npm run build", | ||
"peerDependencies": { | ||
"react": "^16.8.3 || ^17" | ||
"react": "^16.8.3 || ^17 || ^18" | ||
}, | ||
@@ -52,48 +52,47 @@ "peerDependenciesMeta": { | ||
"dependencies": { | ||
"@babel/runtime": "^7.12.1", | ||
"@types/react-redux": "^7.1.16", | ||
"@babel/runtime": "^7.15.4", | ||
"@types/react-redux": "^7.1.20", | ||
"hoist-non-react-statics": "^3.3.2", | ||
"loose-envify": "^1.4.0", | ||
"prop-types": "^15.7.2", | ||
"react-is": "^16.13.1" | ||
"react-is": "^17.0.2" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "^7.12.1", | ||
"@babel/core": "^7.12.3", | ||
"@babel/plugin-proposal-decorators": "^7.12.1", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.12.1", | ||
"@babel/plugin-transform-react-display-name": "^7.12.1", | ||
"@babel/plugin-transform-react-jsx": "^7.12.1", | ||
"@babel/plugin-transform-runtime": "^7.12.1", | ||
"@babel/preset-env": "^7.12.1", | ||
"@rollup/plugin-babel": "^5.2.1", | ||
"@rollup/plugin-commonjs": "^15.1.0", | ||
"@rollup/plugin-node-resolve": "^9.0.0", | ||
"@rollup/plugin-replace": "^2.3.3", | ||
"@testing-library/jest-dom": "^5.11.5", | ||
"@testing-library/jest-native": "^3.4.3", | ||
"@testing-library/react": "^11.1.0", | ||
"@testing-library/react-hooks": "^3.4.2", | ||
"@testing-library/react-native": "^7.1.0", | ||
"@babel/cli": "^7.15.7", | ||
"@babel/core": "^7.15.8", | ||
"@babel/plugin-proposal-decorators": "^7.15.8", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.15.6", | ||
"@babel/plugin-transform-react-display-name": "^7.15.1", | ||
"@babel/plugin-transform-react-jsx": "^7.14.9", | ||
"@babel/plugin-transform-runtime": "^7.15.8", | ||
"@babel/preset-env": "^7.15.8", | ||
"@rollup/plugin-babel": "^5.3.0", | ||
"@rollup/plugin-commonjs": "^21.0.1", | ||
"@rollup/plugin-node-resolve": "^13.0.6", | ||
"@rollup/plugin-replace": "^3.0.0", | ||
"@testing-library/jest-dom": "^5.14.1", | ||
"@testing-library/jest-native": "^4.0.2", | ||
"@testing-library/react": "^12.1.2", | ||
"@testing-library/react-hooks": "^7.0.2", | ||
"@testing-library/react-native": "^8.0.0", | ||
"babel-eslint": "^10.1.0", | ||
"babel-jest": "^26.6.1", | ||
"codecov": "^3.8.0", | ||
"babel-jest": "^27.3.1", | ||
"codecov": "^3.8.3", | ||
"create-react-class": "^15.7.0", | ||
"cross-env": "^7.0.2", | ||
"es3ify": "^0.2.0", | ||
"eslint": "^7.12.0", | ||
"eslint-config-prettier": "^6.14.0", | ||
"eslint-plugin-import": "^2.22.1", | ||
"eslint-plugin-prettier": "^3.1.4", | ||
"eslint-plugin-react": "^7.21.5", | ||
"glob": "^7.1.6", | ||
"jest": "^26.6.1", | ||
"prettier": "^2.1.2", | ||
"react": "^16.14.0", | ||
"react-dom": "^16.14.0", | ||
"react-native": "^0.63.3", | ||
"react-test-renderer": "^16.14.0", | ||
"redux": "^4.0.5", | ||
"cross-env": "^7.0.3", | ||
"es3ify": "^0.2.2", | ||
"eslint": "^7.32.0", | ||
"eslint-config-prettier": "^8.3.0", | ||
"eslint-plugin-import": "^2.25.2", | ||
"eslint-plugin-react": "^7.26.1", | ||
"glob": "^7.2.0", | ||
"jest": "^27.3.1", | ||
"prettier": "^2.4.1", | ||
"react": "^17.0.2", | ||
"react-dom": "^17.0.2", | ||
"react-native": "^0.66.1", | ||
"react-test-renderer": "^17.0.2", | ||
"redux": "^4.1.1", | ||
"rimraf": "^3.0.2", | ||
"rollup": "^2.32.1", | ||
"rollup": "^2.58.3", | ||
"rollup-plugin-terser": "^7.0.2" | ||
@@ -100,0 +99,0 @@ }, |
@@ -1,3 +0,2 @@ | ||
React Redux | ||
========================= | ||
# React Redux | ||
@@ -7,7 +6,6 @@ Official React bindings for [Redux](https://github.com/reduxjs/redux). | ||
[![build status](https://img.shields.io/travis/reduxjs/react-redux/master.svg?style=flat-square)](https://travis-ci.org/reduxjs/react-redux) [![npm version](https://img.shields.io/npm/v/react-redux.svg?style=flat-square)](https://www.npmjs.com/package/react-redux) | ||
![GitHub Workflow Status](https://img.shields.io/github/workflow/status/reduxjs/react-redux/CI?style=flat-square) [![npm version](https://img.shields.io/npm/v/react-redux.svg?style=flat-square)](https://www.npmjs.com/package/react-redux) | ||
[![npm downloads](https://img.shields.io/npm/dm/react-redux.svg?style=flat-square)](https://www.npmjs.com/package/react-redux) | ||
[![redux channel on discord](https://img.shields.io/badge/discord-redux@reactiflux-61DAFB.svg?style=flat-square)](http://www.reactiflux.com) | ||
## Installation | ||
@@ -39,8 +37,8 @@ | ||
This assumes that you’re using [npm](http://npmjs.com/) package manager | ||
with a module bundler like [Webpack](https://webpack.js.org/) or | ||
[Browserify](http://browserify.org/) to consume [CommonJS | ||
This assumes that you’re using [npm](http://npmjs.com/) package manager | ||
with a module bundler like [Webpack](https://webpack.js.org/) or | ||
[Browserify](http://browserify.org/) to consume [CommonJS | ||
modules](https://webpack.js.org/api/module-methods/#commonjs). | ||
If you don’t yet use [npm](http://npmjs.com/) or a modern module bundler, and would rather prefer a single-file [UMD](https://github.com/umdjs/umd) build that makes `ReactRedux` available as a global object, you can grab a pre-built version from [cdnjs](https://cdnjs.com/libraries/react-redux). We *don’t* recommend this approach for any serious application, as most of the libraries complementary to Redux are only available on [npm](http://npmjs.com/). | ||
If you don’t yet use [npm](http://npmjs.com/) or a modern module bundler, and would rather prefer a single-file [UMD](https://github.com/umdjs/umd) build that makes `ReactRedux` available as a global object, you can grab a pre-built version from [cdnjs](https://cdnjs.com/libraries/react-redux). We _don’t_ recommend this approach for any serious application, as most of the libraries complementary to Redux are only available on [npm](http://npmjs.com/). | ||
@@ -51,3 +49,2 @@ ## React Native | ||
## Documentation | ||
@@ -61,5 +58,5 @@ | ||
We do a deep dive on how React Redux works in [this readthesource episode](https://www.youtube.com/watch?v=VJ38wSFbM3A). | ||
We do a deep dive on how React Redux works in [this readthesource episode](https://www.youtube.com/watch?v=VJ38wSFbM3A). | ||
Also, the post [The History and Implementation of React-Redux](https://blog.isquaredsoftware.com/2018/11/react-redux-history-implementation/) | ||
Also, the post [The History and Implementation of React-Redux](https://blog.isquaredsoftware.com/2018/11/react-redux-history-implementation/) | ||
explains what it does, how it works, and how the API and implementation have evolved over time. | ||
@@ -66,0 +63,0 @@ |
@@ -1,26 +0,9 @@ | ||
import Provider from './components/Provider' | ||
import connectAdvanced from './components/connectAdvanced' | ||
import { ReactReduxContext } from './components/Context' | ||
import connect from './connect/connect' | ||
export * from './exports' | ||
import { useDispatch } from './hooks/useDispatch' | ||
import { useSelector } from './hooks/useSelector' | ||
import { useStore } from './hooks/useStore' | ||
import { getBatch } from './utils/batch' | ||
import shallowEqual from './utils/shallowEqual' | ||
// For other renderers besides ReactDOM and React Native, use the default noop batch function | ||
// For other renderers besides ReactDOM and React Native, | ||
// use the default noop batch function | ||
const batch = getBatch() | ||
export { | ||
Provider, | ||
connectAdvanced, | ||
ReactReduxContext, | ||
connect, | ||
batch, | ||
useDispatch, | ||
useSelector, | ||
useStore, | ||
shallowEqual, | ||
} | ||
export { batch } |
import hoistStatics from 'hoist-non-react-statics' | ||
import React, { useContext, useMemo, useRef, useReducer } from 'react' | ||
import { isValidElementType, isContextConsumer } from 'react-is' | ||
import Subscription from '../utils/Subscription' | ||
import { createSubscription } from '../utils/Subscription' | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect' | ||
@@ -275,13 +275,10 @@ | ||
function ConnectFunction(props) { | ||
const [ | ||
propsContext, | ||
reactReduxForwardedRef, | ||
wrapperProps, | ||
] = useMemo(() => { | ||
// Distinguish between actual "data" props that were passed to the wrapper component, | ||
// and values needed to control behavior (forwarded refs, alternate context instances). | ||
// To maintain the wrapperProps object reference, memoize this destructuring. | ||
const { reactReduxForwardedRef, ...wrapperProps } = props | ||
return [props.context, reactReduxForwardedRef, wrapperProps] | ||
}, [props]) | ||
const [propsContext, reactReduxForwardedRef, wrapperProps] = | ||
useMemo(() => { | ||
// Distinguish between actual "data" props that were passed to the wrapper component, | ||
// and values needed to control behavior (forwarded refs, alternate context instances). | ||
// To maintain the wrapperProps object reference, memoize this destructuring. | ||
const { reactReduxForwardedRef, ...wrapperProps } = props | ||
return [props.context, reactReduxForwardedRef, wrapperProps] | ||
}, [props]) | ||
@@ -338,3 +335,3 @@ const ContextToUse = useMemo(() => { | ||
// connected to the store via props shouldn't use subscription from context, or vice versa. | ||
const subscription = new Subscription( | ||
const subscription = createSubscription( | ||
store, | ||
@@ -348,5 +345,4 @@ didStoreComeFromProps ? null : contextValue.subscription | ||
// that have been unsubscribed in the middle of the notification loop. | ||
const notifyNestedSubs = subscription.notifyNestedSubs.bind( | ||
subscription | ||
) | ||
const notifyNestedSubs = | ||
subscription.notifyNestedSubs.bind(subscription) | ||
@@ -376,6 +372,4 @@ return [subscription, notifyNestedSubs] | ||
// causes a change to the calculated child component props (or we caught an error in mapState) | ||
const [ | ||
[previousStateUpdateResult], | ||
forceComponentUpdateDispatch, | ||
] = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates) | ||
const [[previousStateUpdateResult], forceComponentUpdateDispatch] = | ||
useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates) | ||
@@ -382,0 +376,0 @@ // Propagate any mapState/mapDispatch errors upwards |
import React, { useMemo } from 'react' | ||
import PropTypes from 'prop-types' | ||
import { ReactReduxContext } from './Context' | ||
import Subscription from '../utils/Subscription' | ||
import { createSubscription } from '../utils/Subscription' | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect' | ||
@@ -9,4 +9,3 @@ | ||
const contextValue = useMemo(() => { | ||
const subscription = new Subscription(store) | ||
subscription.onStateChange = subscription.notifyNestedSubs | ||
const subscription = createSubscription(store) | ||
return { | ||
@@ -22,2 +21,3 @@ store, | ||
const { subscription } = contextValue | ||
subscription.onStateChange = subscription.notifyNestedSubs | ||
subscription.trySubscribe() | ||
@@ -24,0 +24,0 @@ |
@@ -76,3 +76,3 @@ import verifySubselectors from './verifySubselectors' | ||
const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps) | ||
const stateChanged = !areStatesEqual(nextState, state) | ||
const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps) | ||
state = nextState | ||
@@ -79,0 +79,0 @@ ownProps = nextOwnProps |
import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react' | ||
import { useReduxContext as useDefaultReduxContext } from './useReduxContext' | ||
import Subscription from '../utils/Subscription' | ||
import { createSubscription } from '../utils/Subscription' | ||
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect' | ||
@@ -17,6 +17,6 @@ import { ReactReduxContext } from '../components/Context' | ||
const subscription = useMemo(() => new Subscription(store, contextSub), [ | ||
store, | ||
contextSub, | ||
]) | ||
const subscription = useMemo( | ||
() => createSubscription(store, contextSub), | ||
[store, contextSub] | ||
) | ||
@@ -69,2 +69,7 @@ const latestSubscriptionCallbackError = useRef() | ||
const newStoreState = store.getState() | ||
// Avoid calling selector multiple times if the store's state has not changed | ||
if (newStoreState === latestStoreState.current) { | ||
return | ||
} | ||
const newSelectedState = latestSelector.current(newStoreState) | ||
@@ -71,0 +76,0 @@ |
@@ -1,29 +0,10 @@ | ||
import Provider from './components/Provider' | ||
import connectAdvanced from './components/connectAdvanced' | ||
import { ReactReduxContext } from './components/Context' | ||
import connect from './connect/connect' | ||
export * from './exports' | ||
import { useDispatch, createDispatchHook } from './hooks/useDispatch' | ||
import { useSelector, createSelectorHook } from './hooks/useSelector' | ||
import { useStore, createStoreHook } from './hooks/useStore' | ||
import { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates' | ||
import { setBatch } from './utils/batch' | ||
import { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates' | ||
import shallowEqual from './utils/shallowEqual' | ||
// Enable batched updates in our subscriptions for use | ||
// with standard React renderers (ReactDOM, React Native) | ||
setBatch(batch) | ||
export { | ||
Provider, | ||
connectAdvanced, | ||
ReactReduxContext, | ||
connect, | ||
batch, | ||
useDispatch, | ||
createDispatchHook, | ||
useSelector, | ||
createSelectorHook, | ||
useStore, | ||
createStoreHook, | ||
shallowEqual, | ||
} | ||
export { batch } |
@@ -7,4 +7,2 @@ import { getBatch } from './batch' | ||
const nullListeners = { notify() {} } | ||
function createListenerCollection() { | ||
@@ -75,49 +73,60 @@ const batch = getBatch() | ||
export default class Subscription { | ||
constructor(store, parentSub) { | ||
this.store = store | ||
this.parentSub = parentSub | ||
this.unsubscribe = null | ||
this.listeners = nullListeners | ||
const nullListeners = { | ||
notify() {}, | ||
get: () => [], | ||
} | ||
this.handleChangeWrapper = this.handleChangeWrapper.bind(this) | ||
} | ||
export function createSubscription(store, parentSub) { | ||
let unsubscribe | ||
let listeners = nullListeners | ||
addNestedSub(listener) { | ||
this.trySubscribe() | ||
return this.listeners.subscribe(listener) | ||
function addNestedSub(listener) { | ||
trySubscribe() | ||
return listeners.subscribe(listener) | ||
} | ||
notifyNestedSubs() { | ||
this.listeners.notify() | ||
function notifyNestedSubs() { | ||
listeners.notify() | ||
} | ||
handleChangeWrapper() { | ||
if (this.onStateChange) { | ||
this.onStateChange() | ||
function handleChangeWrapper() { | ||
if (subscription.onStateChange) { | ||
subscription.onStateChange() | ||
} | ||
} | ||
isSubscribed() { | ||
return Boolean(this.unsubscribe) | ||
function isSubscribed() { | ||
return Boolean(unsubscribe) | ||
} | ||
trySubscribe() { | ||
if (!this.unsubscribe) { | ||
this.unsubscribe = this.parentSub | ||
? this.parentSub.addNestedSub(this.handleChangeWrapper) | ||
: this.store.subscribe(this.handleChangeWrapper) | ||
function trySubscribe() { | ||
if (!unsubscribe) { | ||
unsubscribe = parentSub | ||
? parentSub.addNestedSub(handleChangeWrapper) | ||
: store.subscribe(handleChangeWrapper) | ||
this.listeners = createListenerCollection() | ||
listeners = createListenerCollection() | ||
} | ||
} | ||
tryUnsubscribe() { | ||
if (this.unsubscribe) { | ||
this.unsubscribe() | ||
this.unsubscribe = null | ||
this.listeners.clear() | ||
this.listeners = nullListeners | ||
function tryUnsubscribe() { | ||
if (unsubscribe) { | ||
unsubscribe() | ||
unsubscribe = undefined | ||
listeners.clear() | ||
listeners = nullListeners | ||
} | ||
} | ||
const subscription = { | ||
addNestedSub, | ||
notifyNestedSubs, | ||
handleChangeWrapper, | ||
isSubscribed, | ||
trySubscribe, | ||
tryUnsubscribe, | ||
getListeners: () => listeners, | ||
} | ||
return subscription | ||
} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
299542
38
89
6218
65
+ Addedreact@18.3.1(transitive)
+ Addedreact-is@17.0.2(transitive)
- Removedreact@17.0.2(transitive)
Updated@babel/runtime@^7.15.4
Updated@types/react-redux@^7.1.20
Updatedreact-is@^17.0.2