You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					2038 lines
				
				73 KiB
			
		
		
			
		
	
	
					2038 lines
				
				73 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								(function (global, factory) {
							 | 
						||
| 
								 | 
							
									typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom')) :
							 | 
						||
| 
								 | 
							
									typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom'], factory) :
							 | 
						||
| 
								 | 
							
									(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactRedux = {}, global.React, global.ReactDOM));
							 | 
						||
| 
								 | 
							
								}(this, (function (exports, React, reactDom) { 'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createCommonjsModule(fn, basedir, module) {
							 | 
						||
| 
								 | 
							
										return module = {
							 | 
						||
| 
								 | 
							
											path: basedir,
							 | 
						||
| 
								 | 
							
											exports: {},
							 | 
						||
| 
								 | 
							
											require: function (path, base) {
							 | 
						||
| 
								 | 
							
												return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}, fn(module, module.exports), module.exports;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function commonjsRequire () {
							 | 
						||
| 
								 | 
							
										throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var useSyncExternalStoreShim_development = createCommonjsModule(function (module, exports) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  (function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
							 | 
						||
| 
								 | 
							
									if (
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
							 | 
						||
| 
								 | 
							
									    'function'
							 | 
						||
| 
								 | 
							
									) {
							 | 
						||
| 
								 | 
							
									  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									          var React = React__default['default'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function error(format) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    {
							 | 
						||
| 
								 | 
							
									      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
							 | 
						||
| 
								 | 
							
									        args[_key2 - 1] = arguments[_key2];
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      printWarning('error', format, args);
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function printWarning(level, format, args) {
							 | 
						||
| 
								 | 
							
									  // When changing this logic, you might want to also
							 | 
						||
| 
								 | 
							
									  // update consoleWithStackDev.www.js as well.
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
							 | 
						||
| 
								 | 
							
									    var stack = ReactDebugCurrentFrame.getStackAddendum();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (stack !== '') {
							 | 
						||
| 
								 | 
							
									      format += '%s';
							 | 
						||
| 
								 | 
							
									      args = args.concat([stack]);
							 | 
						||
| 
								 | 
							
									    } // eslint-disable-next-line react-internal/safe-string-coercion
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var argsWithFormat = args.map(function (item) {
							 | 
						||
| 
								 | 
							
									      return String(item);
							 | 
						||
| 
								 | 
							
									    }); // Careful: RN currently depends on this prefix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
							 | 
						||
| 
								 | 
							
									    // breaks IE9: https://github.com/facebook/react/issues/13610
							 | 
						||
| 
								 | 
							
									    // eslint-disable-next-line react-internal/no-production-logging
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    Function.prototype.apply.call(console[level], console, argsWithFormat);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * inlined Object.is polyfill to avoid requiring consumers ship their own
							 | 
						||
| 
								 | 
							
									 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function is(x, y) {
							 | 
						||
| 
								 | 
							
									  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
							 | 
						||
| 
								 | 
							
									  ;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var objectIs = typeof Object.is === 'function' ? Object.is : is;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// dispatch for CommonJS interop named imports.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var useState = React.useState,
							 | 
						||
| 
								 | 
							
									    useEffect = React.useEffect,
							 | 
						||
| 
								 | 
							
									    useLayoutEffect = React.useLayoutEffect,
							 | 
						||
| 
								 | 
							
									    useDebugValue = React.useDebugValue;
							 | 
						||
| 
								 | 
							
									var didWarnOld18Alpha = false;
							 | 
						||
| 
								 | 
							
									var didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works
							 | 
						||
| 
								 | 
							
									// because of a very particular set of implementation details and assumptions
							 | 
						||
| 
								 | 
							
									// -- change any one of them and it will break. The most important assumption
							 | 
						||
| 
								 | 
							
									// is that updates are always synchronous, because concurrent rendering is
							 | 
						||
| 
								 | 
							
									// only available in versions of React that also have a built-in
							 | 
						||
| 
								 | 
							
									// useSyncExternalStore API. And we only use this shim when the built-in API
							 | 
						||
| 
								 | 
							
									// does not exist.
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									// Do not assume that the clever hacks used by this hook also work in general.
							 | 
						||
| 
								 | 
							
									// The point of this shim is to replace the need for hacks by other libraries.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of
							 | 
						||
| 
								 | 
							
									// React do not expose a way to check if we're hydrating. So users of the shim
							 | 
						||
| 
								 | 
							
									// will need to track that themselves and return the correct value
							 | 
						||
| 
								 | 
							
									// from `getSnapshot`.
							 | 
						||
| 
								 | 
							
									getServerSnapshot) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (!didWarnOld18Alpha) {
							 | 
						||
| 
								 | 
							
									      if (React.startTransition !== undefined) {
							 | 
						||
| 
								 | 
							
									        didWarnOld18Alpha = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  } // Read the current snapshot from the store on every render. Again, this
							 | 
						||
| 
								 | 
							
									  // breaks the rules of React, and only works here because of specific
							 | 
						||
| 
								 | 
							
									  // implementation details, most importantly that updates are
							 | 
						||
| 
								 | 
							
									  // always synchronous.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  var value = getSnapshot();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (!didWarnUncachedGetSnapshot) {
							 | 
						||
| 
								 | 
							
									      var cachedValue = getSnapshot();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (!objectIs(value, cachedValue)) {
							 | 
						||
| 
								 | 
							
									        error('The result of getSnapshot should be cached to avoid an infinite loop');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        didWarnUncachedGetSnapshot = true;
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  } // Because updates are synchronous, we don't queue them. Instead we force a
							 | 
						||
| 
								 | 
							
									  // re-render whenever the subscribed state changes by updating an some
							 | 
						||
| 
								 | 
							
									  // arbitrary useState hook. Then, during render, we call getSnapshot to read
							 | 
						||
| 
								 | 
							
									  // the current value.
							 | 
						||
| 
								 | 
							
									  //
							 | 
						||
| 
								 | 
							
									  // Because we don't actually use the state returned by the useState hook, we
							 | 
						||
| 
								 | 
							
									  // can save a bit of memory by storing other stuff in that slot.
							 | 
						||
| 
								 | 
							
									  //
							 | 
						||
| 
								 | 
							
									  // To implement the early bailout, we need to track some things on a mutable
							 | 
						||
| 
								 | 
							
									  // object. Usually, we would put that in a useRef hook, but we can stash it in
							 | 
						||
| 
								 | 
							
									  // our useState hook instead.
							 | 
						||
| 
								 | 
							
									  //
							 | 
						||
| 
								 | 
							
									  // To force a re-render, we call forceUpdate({inst}). That works because the
							 | 
						||
| 
								 | 
							
									  // new object always fails an equality check.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  var _useState = useState({
							 | 
						||
| 
								 | 
							
									    inst: {
							 | 
						||
| 
								 | 
							
									      value: value,
							 | 
						||
| 
								 | 
							
									      getSnapshot: getSnapshot
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }),
							 | 
						||
| 
								 | 
							
									      inst = _useState[0].inst,
							 | 
						||
| 
								 | 
							
									      forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated
							 | 
						||
| 
								 | 
							
									  // in the layout phase so we can access it during the tearing check that
							 | 
						||
| 
								 | 
							
									  // happens on subscribe.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  useLayoutEffect(function () {
							 | 
						||
| 
								 | 
							
									    inst.value = value;
							 | 
						||
| 
								 | 
							
									    inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the
							 | 
						||
| 
								 | 
							
									    // commit phase if there was an interleaved mutation. In concurrent mode
							 | 
						||
| 
								 | 
							
									    // this can happen all the time, but even in synchronous mode, an earlier
							 | 
						||
| 
								 | 
							
									    // effect may have mutated the store.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (checkIfSnapshotChanged(inst)) {
							 | 
						||
| 
								 | 
							
									      // Force a re-render.
							 | 
						||
| 
								 | 
							
									      forceUpdate({
							 | 
						||
| 
								 | 
							
									        inst: inst
							 | 
						||
| 
								 | 
							
									      });
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }, [subscribe, value, getSnapshot]);
							 | 
						||
| 
								 | 
							
									  useEffect(function () {
							 | 
						||
| 
								 | 
							
									    // Check for changes right before subscribing. Subsequent changes will be
							 | 
						||
| 
								 | 
							
									    // detected in the subscription handler.
							 | 
						||
| 
								 | 
							
									    if (checkIfSnapshotChanged(inst)) {
							 | 
						||
| 
								 | 
							
									      // Force a re-render.
							 | 
						||
| 
								 | 
							
									      forceUpdate({
							 | 
						||
| 
								 | 
							
									        inst: inst
							 | 
						||
| 
								 | 
							
									      });
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var handleStoreChange = function () {
							 | 
						||
| 
								 | 
							
									      // TODO: Because there is no cross-renderer API for batching updates, it's
							 | 
						||
| 
								 | 
							
									      // up to the consumer of this library to wrap their subscription event
							 | 
						||
| 
								 | 
							
									      // with unstable_batchedUpdates. Should we try to detect when this isn't
							 | 
						||
| 
								 | 
							
									      // the case and print a warning in development?
							 | 
						||
| 
								 | 
							
									      // The store changed. Check if the snapshot changed since the last time we
							 | 
						||
| 
								 | 
							
									      // read from the store.
							 | 
						||
| 
								 | 
							
									      if (checkIfSnapshotChanged(inst)) {
							 | 
						||
| 
								 | 
							
									        // Force a re-render.
							 | 
						||
| 
								 | 
							
									        forceUpdate({
							 | 
						||
| 
								 | 
							
									          inst: inst
							 | 
						||
| 
								 | 
							
									        });
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }; // Subscribe to the store and return a clean-up function.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return subscribe(handleStoreChange);
							 | 
						||
| 
								 | 
							
									  }, [subscribe]);
							 | 
						||
| 
								 | 
							
									  useDebugValue(value);
							 | 
						||
| 
								 | 
							
									  return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function checkIfSnapshotChanged(inst) {
							 | 
						||
| 
								 | 
							
									  var latestGetSnapshot = inst.getSnapshot;
							 | 
						||
| 
								 | 
							
									  var prevValue = inst.value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  try {
							 | 
						||
| 
								 | 
							
									    var nextValue = latestGetSnapshot();
							 | 
						||
| 
								 | 
							
									    return !objectIs(prevValue, nextValue);
							 | 
						||
| 
								 | 
							
									  } catch (error) {
							 | 
						||
| 
								 | 
							
									    return true;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {
							 | 
						||
| 
								 | 
							
									  // Note: The shim does not use getServerSnapshot, because pre-18 versions of
							 | 
						||
| 
								 | 
							
									  // React do not expose a way to check if we're hydrating. So users of the shim
							 | 
						||
| 
								 | 
							
									  // will need to track that themselves and return the correct value
							 | 
						||
| 
								 | 
							
									  // from `getSnapshot`.
							 | 
						||
| 
								 | 
							
									  return getSnapshot();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var isServerEnvironment = !canUseDOM;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;
							 | 
						||
| 
								 | 
							
									var useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									exports.useSyncExternalStore = useSyncExternalStore$2;
							 | 
						||
| 
								 | 
							
									          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
							 | 
						||
| 
								 | 
							
									if (
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
							 | 
						||
| 
								 | 
							
									    'function'
							 | 
						||
| 
								 | 
							
									) {
							 | 
						||
| 
								 | 
							
									  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									        
							 | 
						||
| 
								 | 
							
									  })();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var shim = createCommonjsModule(function (module) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  module.exports = useSyncExternalStoreShim_development;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var withSelector_development = createCommonjsModule(function (module, exports) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  (function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
							 | 
						||
| 
								 | 
							
									if (
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
							 | 
						||
| 
								 | 
							
									    'function'
							 | 
						||
| 
								 | 
							
									) {
							 | 
						||
| 
								 | 
							
									  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									          var React = React__default['default'];
							 | 
						||
| 
								 | 
							
									var shim$1 = shim;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * inlined Object.is polyfill to avoid requiring consumers ship their own
							 | 
						||
| 
								 | 
							
									 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function is(x, y) {
							 | 
						||
| 
								 | 
							
									  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
							 | 
						||
| 
								 | 
							
									  ;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var objectIs = typeof Object.is === 'function' ? Object.is : is;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var useSyncExternalStore = shim$1.useSyncExternalStore;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// for CommonJS interop.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var useRef = React.useRef,
							 | 
						||
| 
								 | 
							
									    useEffect = React.useEffect,
							 | 
						||
| 
								 | 
							
									    useMemo = React.useMemo,
							 | 
						||
| 
								 | 
							
									    useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
							 | 
						||
| 
								 | 
							
									  // Use this to track the rendered snapshot.
							 | 
						||
| 
								 | 
							
									  var instRef = useRef(null);
							 | 
						||
| 
								 | 
							
									  var inst;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (instRef.current === null) {
							 | 
						||
| 
								 | 
							
									    inst = {
							 | 
						||
| 
								 | 
							
									      hasValue: false,
							 | 
						||
| 
								 | 
							
									      value: null
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
									    instRef.current = inst;
							 | 
						||
| 
								 | 
							
									  } else {
							 | 
						||
| 
								 | 
							
									    inst = instRef.current;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  var _useMemo = useMemo(function () {
							 | 
						||
| 
								 | 
							
									    // Track the memoized state using closure variables that are local to this
							 | 
						||
| 
								 | 
							
									    // memoized instance of a getSnapshot function. Intentionally not using a
							 | 
						||
| 
								 | 
							
									    // useRef hook, because that state would be shared across all concurrent
							 | 
						||
| 
								 | 
							
									    // copies of the hook/component.
							 | 
						||
| 
								 | 
							
									    var hasMemo = false;
							 | 
						||
| 
								 | 
							
									    var memoizedSnapshot;
							 | 
						||
| 
								 | 
							
									    var memoizedSelection;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var memoizedSelector = function (nextSnapshot) {
							 | 
						||
| 
								 | 
							
									      if (!hasMemo) {
							 | 
						||
| 
								 | 
							
									        // The first time the hook is called, there is no memoized result.
							 | 
						||
| 
								 | 
							
									        hasMemo = true;
							 | 
						||
| 
								 | 
							
									        memoizedSnapshot = nextSnapshot;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        var _nextSelection = selector(nextSnapshot);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        if (isEqual !== undefined) {
							 | 
						||
| 
								 | 
							
									          // Even if the selector has changed, the currently rendered selection
							 | 
						||
| 
								 | 
							
									          // may be equal to the new selection. We should attempt to reuse the
							 | 
						||
| 
								 | 
							
									          // current value if possible, to preserve downstream memoizations.
							 | 
						||
| 
								 | 
							
									          if (inst.hasValue) {
							 | 
						||
| 
								 | 
							
									            var currentSelection = inst.value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									            if (isEqual(currentSelection, _nextSelection)) {
							 | 
						||
| 
								 | 
							
									              memoizedSelection = currentSelection;
							 | 
						||
| 
								 | 
							
									              return currentSelection;
							 | 
						||
| 
								 | 
							
									            }
							 | 
						||
| 
								 | 
							
									          }
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        memoizedSelection = _nextSelection;
							 | 
						||
| 
								 | 
							
									        return _nextSelection;
							 | 
						||
| 
								 | 
							
									      } // We may be able to reuse the previous invocation's result.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      // We may be able to reuse the previous invocation's result.
							 | 
						||
| 
								 | 
							
									      var prevSnapshot = memoizedSnapshot;
							 | 
						||
| 
								 | 
							
									      var prevSelection = memoizedSelection;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (objectIs(prevSnapshot, nextSnapshot)) {
							 | 
						||
| 
								 | 
							
									        // The snapshot is the same as last time. Reuse the previous selection.
							 | 
						||
| 
								 | 
							
									        return prevSelection;
							 | 
						||
| 
								 | 
							
									      } // The snapshot has changed, so we need to compute a new selection.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      // The snapshot has changed, so we need to compute a new selection.
							 | 
						||
| 
								 | 
							
									      var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data
							 | 
						||
| 
								 | 
							
									      // has changed. If it hasn't, return the previous selection. That signals
							 | 
						||
| 
								 | 
							
									      // to React that the selections are conceptually equal, and we can bail
							 | 
						||
| 
								 | 
							
									      // out of rendering.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      // If a custom isEqual function is provided, use that to check if the data
							 | 
						||
| 
								 | 
							
									      // has changed. If it hasn't, return the previous selection. That signals
							 | 
						||
| 
								 | 
							
									      // to React that the selections are conceptually equal, and we can bail
							 | 
						||
| 
								 | 
							
									      // out of rendering.
							 | 
						||
| 
								 | 
							
									      if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {
							 | 
						||
| 
								 | 
							
									        return prevSelection;
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      memoizedSnapshot = nextSnapshot;
							 | 
						||
| 
								 | 
							
									      memoizedSelection = nextSelection;
							 | 
						||
| 
								 | 
							
									      return nextSelection;
							 | 
						||
| 
								 | 
							
									    }; // Assigning this to a constant so that Flow knows it can't change.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    // Assigning this to a constant so that Flow knows it can't change.
							 | 
						||
| 
								 | 
							
									    var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var getSnapshotWithSelector = function () {
							 | 
						||
| 
								 | 
							
									      return memoizedSelector(getSnapshot());
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {
							 | 
						||
| 
								 | 
							
									      return memoizedSelector(maybeGetServerSnapshot());
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
									    return [getSnapshotWithSelector, getServerSnapshotWithSelector];
							 | 
						||
| 
								 | 
							
									  }, [getSnapshot, getServerSnapshot, selector, isEqual]),
							 | 
						||
| 
								 | 
							
									      getSelection = _useMemo[0],
							 | 
						||
| 
								 | 
							
									      getServerSelection = _useMemo[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);
							 | 
						||
| 
								 | 
							
									  useEffect(function () {
							 | 
						||
| 
								 | 
							
									    inst.hasValue = true;
							 | 
						||
| 
								 | 
							
									    inst.value = value;
							 | 
						||
| 
								 | 
							
									  }, [value]);
							 | 
						||
| 
								 | 
							
									  useDebugValue(value);
							 | 
						||
| 
								 | 
							
									  return value;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;
							 | 
						||
| 
								 | 
							
									          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
							 | 
						||
| 
								 | 
							
									if (
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
							 | 
						||
| 
								 | 
							
									  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
							 | 
						||
| 
								 | 
							
									    'function'
							 | 
						||
| 
								 | 
							
									) {
							 | 
						||
| 
								 | 
							
									  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									        
							 | 
						||
| 
								 | 
							
									  })();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var withSelector = createCommonjsModule(function (module) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  module.exports = withSelector_development;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Default to a dummy "batch" implementation that just runs the callback
							 | 
						||
| 
								 | 
							
									function defaultNoopBatch(callback) {
							 | 
						||
| 
								 | 
							
									  callback();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									let batch = defaultNoopBatch; // Allow injecting another batching function later
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const getBatch = () => batch;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const ReactReduxContext = /*#__PURE__*/React.createContext(null);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  ReactReduxContext.displayName = 'ReactRedux';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * A hook to access the value of the `ReactReduxContext`. This is a low-level
							 | 
						||
| 
								 | 
							
									 * hook that you should usually not need to call directly.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {any} the value of the `ReactReduxContext`
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @example
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * import React from 'react'
							 | 
						||
| 
								 | 
							
									 * import { useReduxContext } from 'react-redux'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * export const CounterComponent = () => {
							 | 
						||
| 
								 | 
							
									 *   const { store } = useReduxContext()
							 | 
						||
| 
								 | 
							
									 *   return <div>{store.getState()}</div>
							 | 
						||
| 
								 | 
							
									 * }
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function useReduxContext() {
							 | 
						||
| 
								 | 
							
									  const contextValue = React.useContext(ReactReduxContext);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (!contextValue) {
							 | 
						||
| 
								 | 
							
									    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return contextValue;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const notInitialized = () => {
							 | 
						||
| 
								 | 
							
									  throw new Error('uSES not initialized!');
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									let useSyncExternalStoreWithSelector = notInitialized;
							 | 
						||
| 
								 | 
							
									const initializeUseSelector = fn => {
							 | 
						||
| 
								 | 
							
									  useSyncExternalStoreWithSelector = fn;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const refEquality = (a, b) => a === b;
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Hook factory, which creates a `useSelector` hook bound to a given context.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
							 | 
						||
| 
								 | 
							
									 * @returns {Function} A `useSelector` hook bound to the specified context.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createSelectorHook(context = ReactReduxContext) {
							 | 
						||
| 
								 | 
							
									  const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : () => React.useContext(context);
							 | 
						||
| 
								 | 
							
									  return function useSelector(selector, equalityFn = refEquality) {
							 | 
						||
| 
								 | 
							
									    {
							 | 
						||
| 
								 | 
							
									      if (!selector) {
							 | 
						||
| 
								 | 
							
									        throw new Error(`You must pass a selector to useSelector`);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (typeof selector !== 'function') {
							 | 
						||
| 
								 | 
							
									        throw new Error(`You must pass a function as a selector to useSelector`);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (typeof equalityFn !== 'function') {
							 | 
						||
| 
								 | 
							
									        throw new Error(`You must pass a function as an equality function to useSelector`);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    const {
							 | 
						||
| 
								 | 
							
									      store,
							 | 
						||
| 
								 | 
							
									      subscription,
							 | 
						||
| 
								 | 
							
									      getServerState
							 | 
						||
| 
								 | 
							
									    } = useReduxContext$1();
							 | 
						||
| 
								 | 
							
									    const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);
							 | 
						||
| 
								 | 
							
									    React.useDebugValue(selectedState);
							 | 
						||
| 
								 | 
							
									    return selectedState;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * A hook to access the redux store's state. This hook takes a selector function
							 | 
						||
| 
								 | 
							
									 * as an argument. The selector is called with the store state.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * This hook takes an optional equality comparison function as the second parameter
							 | 
						||
| 
								 | 
							
									 * that allows you to customize the way the selected state is compared to determine
							 | 
						||
| 
								 | 
							
									 * whether the component needs to be re-rendered.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {Function} selector the selector function
							 | 
						||
| 
								 | 
							
									 * @param {Function=} equalityFn the function that will be used to determine equality
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {any} the selected state
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @example
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * import React from 'react'
							 | 
						||
| 
								 | 
							
									 * import { useSelector } from 'react-redux'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * export const CounterComponent = () => {
							 | 
						||
| 
								 | 
							
									 *   const counter = useSelector(state => state.counter)
							 | 
						||
| 
								 | 
							
									 *   return <div>{counter}</div>
							 | 
						||
| 
								 | 
							
									 * }
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const useSelector = /*#__PURE__*/createSelectorHook();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function _extends() {
							 | 
						||
| 
								 | 
							
									  _extends = Object.assign || function (target) {
							 | 
						||
| 
								 | 
							
									    for (var i = 1; i < arguments.length; i++) {
							 | 
						||
| 
								 | 
							
									      var source = arguments[i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      for (var key in source) {
							 | 
						||
| 
								 | 
							
									        if (Object.prototype.hasOwnProperty.call(source, key)) {
							 | 
						||
| 
								 | 
							
									          target[key] = source[key];
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return target;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return _extends.apply(this, arguments);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function _objectWithoutPropertiesLoose(source, excluded) {
							 | 
						||
| 
								 | 
							
									  if (source == null) return {};
							 | 
						||
| 
								 | 
							
									  var target = {};
							 | 
						||
| 
								 | 
							
									  var sourceKeys = Object.keys(source);
							 | 
						||
| 
								 | 
							
									  var key, i;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  for (i = 0; i < sourceKeys.length; i++) {
							 | 
						||
| 
								 | 
							
									    key = sourceKeys[i];
							 | 
						||
| 
								 | 
							
									    if (excluded.indexOf(key) >= 0) continue;
							 | 
						||
| 
								 | 
							
									    target[key] = source[key];
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return target;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var reactIs_development$1 = createCommonjsModule(function (module, exports) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  (function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
							 | 
						||
| 
								 | 
							
									// nor polyfill, then a plain number is used for performance.
							 | 
						||
| 
								 | 
							
									var hasSymbol = typeof Symbol === 'function' && Symbol.for;
							 | 
						||
| 
								 | 
							
									var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
							 | 
						||
| 
								 | 
							
									var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
							 | 
						||
| 
								 | 
							
									var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
							 | 
						||
| 
								 | 
							
									var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
							 | 
						||
| 
								 | 
							
									var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
							 | 
						||
| 
								 | 
							
									var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
							 | 
						||
| 
								 | 
							
									var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
							 | 
						||
| 
								 | 
							
									// (unstable) APIs that have been removed. Can we remove the symbols?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
							 | 
						||
| 
								 | 
							
									var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
							 | 
						||
| 
								 | 
							
									var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
							 | 
						||
| 
								 | 
							
									var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
							 | 
						||
| 
								 | 
							
									var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
							 | 
						||
| 
								 | 
							
									var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
							 | 
						||
| 
								 | 
							
									var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
							 | 
						||
| 
								 | 
							
									var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
							 | 
						||
| 
								 | 
							
									var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
							 | 
						||
| 
								 | 
							
									var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
							 | 
						||
| 
								 | 
							
									var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function isValidElementType(type) {
							 | 
						||
| 
								 | 
							
									  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
							 | 
						||
| 
								 | 
							
									  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function typeOf(object) {
							 | 
						||
| 
								 | 
							
									  if (typeof object === 'object' && object !== null) {
							 | 
						||
| 
								 | 
							
									    var $$typeof = object.$$typeof;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    switch ($$typeof) {
							 | 
						||
| 
								 | 
							
									      case REACT_ELEMENT_TYPE:
							 | 
						||
| 
								 | 
							
									        var type = object.type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        switch (type) {
							 | 
						||
| 
								 | 
							
									          case REACT_ASYNC_MODE_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_CONCURRENT_MODE_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_FRAGMENT_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_PROFILER_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_STRICT_MODE_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_SUSPENSE_TYPE:
							 | 
						||
| 
								 | 
							
									            return type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									          default:
							 | 
						||
| 
								 | 
							
									            var $$typeofType = type && type.$$typeof;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									            switch ($$typeofType) {
							 | 
						||
| 
								 | 
							
									              case REACT_CONTEXT_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_FORWARD_REF_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_LAZY_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_MEMO_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_PROVIDER_TYPE:
							 | 
						||
| 
								 | 
							
									                return $$typeofType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									              default:
							 | 
						||
| 
								 | 
							
									                return $$typeof;
							 | 
						||
| 
								 | 
							
									            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      case REACT_PORTAL_TYPE:
							 | 
						||
| 
								 | 
							
									        return $$typeof;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return undefined;
							 | 
						||
| 
								 | 
							
									} // AsyncMode is deprecated along with isAsyncMode
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var AsyncMode = REACT_ASYNC_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									var ContextConsumer = REACT_CONTEXT_TYPE;
							 | 
						||
| 
								 | 
							
									var ContextProvider = REACT_PROVIDER_TYPE;
							 | 
						||
| 
								 | 
							
									var Element = REACT_ELEMENT_TYPE;
							 | 
						||
| 
								 | 
							
									var ForwardRef = REACT_FORWARD_REF_TYPE;
							 | 
						||
| 
								 | 
							
									var Fragment = REACT_FRAGMENT_TYPE;
							 | 
						||
| 
								 | 
							
									var Lazy = REACT_LAZY_TYPE;
							 | 
						||
| 
								 | 
							
									var Memo = REACT_MEMO_TYPE;
							 | 
						||
| 
								 | 
							
									var Portal = REACT_PORTAL_TYPE;
							 | 
						||
| 
								 | 
							
									var Profiler = REACT_PROFILER_TYPE;
							 | 
						||
| 
								 | 
							
									var StrictMode = REACT_STRICT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									var Suspense = REACT_SUSPENSE_TYPE;
							 | 
						||
| 
								 | 
							
									var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function isAsyncMode(object) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
							 | 
						||
| 
								 | 
							
									      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isConcurrentMode(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isContextConsumer(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_CONTEXT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isContextProvider(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PROVIDER_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isElement(object) {
							 | 
						||
| 
								 | 
							
									  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isForwardRef(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_FORWARD_REF_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isFragment(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_FRAGMENT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isLazy(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_LAZY_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isMemo(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_MEMO_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isPortal(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PORTAL_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isProfiler(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PROFILER_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isStrictMode(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_STRICT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isSuspense(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_SUSPENSE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									exports.AsyncMode = AsyncMode;
							 | 
						||
| 
								 | 
							
									exports.ConcurrentMode = ConcurrentMode;
							 | 
						||
| 
								 | 
							
									exports.ContextConsumer = ContextConsumer;
							 | 
						||
| 
								 | 
							
									exports.ContextProvider = ContextProvider;
							 | 
						||
| 
								 | 
							
									exports.Element = Element;
							 | 
						||
| 
								 | 
							
									exports.ForwardRef = ForwardRef;
							 | 
						||
| 
								 | 
							
									exports.Fragment = Fragment;
							 | 
						||
| 
								 | 
							
									exports.Lazy = Lazy;
							 | 
						||
| 
								 | 
							
									exports.Memo = Memo;
							 | 
						||
| 
								 | 
							
									exports.Portal = Portal;
							 | 
						||
| 
								 | 
							
									exports.Profiler = Profiler;
							 | 
						||
| 
								 | 
							
									exports.StrictMode = StrictMode;
							 | 
						||
| 
								 | 
							
									exports.Suspense = Suspense;
							 | 
						||
| 
								 | 
							
									exports.isAsyncMode = isAsyncMode;
							 | 
						||
| 
								 | 
							
									exports.isConcurrentMode = isConcurrentMode;
							 | 
						||
| 
								 | 
							
									exports.isContextConsumer = isContextConsumer;
							 | 
						||
| 
								 | 
							
									exports.isContextProvider = isContextProvider;
							 | 
						||
| 
								 | 
							
									exports.isElement = isElement;
							 | 
						||
| 
								 | 
							
									exports.isForwardRef = isForwardRef;
							 | 
						||
| 
								 | 
							
									exports.isFragment = isFragment;
							 | 
						||
| 
								 | 
							
									exports.isLazy = isLazy;
							 | 
						||
| 
								 | 
							
									exports.isMemo = isMemo;
							 | 
						||
| 
								 | 
							
									exports.isPortal = isPortal;
							 | 
						||
| 
								 | 
							
									exports.isProfiler = isProfiler;
							 | 
						||
| 
								 | 
							
									exports.isStrictMode = isStrictMode;
							 | 
						||
| 
								 | 
							
									exports.isSuspense = isSuspense;
							 | 
						||
| 
								 | 
							
									exports.isValidElementType = isValidElementType;
							 | 
						||
| 
								 | 
							
									exports.typeOf = typeOf;
							 | 
						||
| 
								 | 
							
									  })();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var reactIs$1 = createCommonjsModule(function (module) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  module.exports = reactIs_development$1;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Copyright 2015, Yahoo! Inc.
							 | 
						||
| 
								 | 
							
									 * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									var REACT_STATICS = {
							 | 
						||
| 
								 | 
							
									  childContextTypes: true,
							 | 
						||
| 
								 | 
							
									  contextType: true,
							 | 
						||
| 
								 | 
							
									  contextTypes: true,
							 | 
						||
| 
								 | 
							
									  defaultProps: true,
							 | 
						||
| 
								 | 
							
									  displayName: true,
							 | 
						||
| 
								 | 
							
									  getDefaultProps: true,
							 | 
						||
| 
								 | 
							
									  getDerivedStateFromError: true,
							 | 
						||
| 
								 | 
							
									  getDerivedStateFromProps: true,
							 | 
						||
| 
								 | 
							
									  mixins: true,
							 | 
						||
| 
								 | 
							
									  propTypes: true,
							 | 
						||
| 
								 | 
							
									  type: true
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
									var KNOWN_STATICS = {
							 | 
						||
| 
								 | 
							
									  name: true,
							 | 
						||
| 
								 | 
							
									  length: true,
							 | 
						||
| 
								 | 
							
									  prototype: true,
							 | 
						||
| 
								 | 
							
									  caller: true,
							 | 
						||
| 
								 | 
							
									  callee: true,
							 | 
						||
| 
								 | 
							
									  arguments: true,
							 | 
						||
| 
								 | 
							
									  arity: true
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
									var FORWARD_REF_STATICS = {
							 | 
						||
| 
								 | 
							
									  '$$typeof': true,
							 | 
						||
| 
								 | 
							
									  render: true,
							 | 
						||
| 
								 | 
							
									  defaultProps: true,
							 | 
						||
| 
								 | 
							
									  displayName: true,
							 | 
						||
| 
								 | 
							
									  propTypes: true
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
									var MEMO_STATICS = {
							 | 
						||
| 
								 | 
							
									  '$$typeof': true,
							 | 
						||
| 
								 | 
							
									  compare: true,
							 | 
						||
| 
								 | 
							
									  defaultProps: true,
							 | 
						||
| 
								 | 
							
									  displayName: true,
							 | 
						||
| 
								 | 
							
									  propTypes: true,
							 | 
						||
| 
								 | 
							
									  type: true
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
									var TYPE_STATICS = {};
							 | 
						||
| 
								 | 
							
									TYPE_STATICS[reactIs$1.ForwardRef] = FORWARD_REF_STATICS;
							 | 
						||
| 
								 | 
							
									TYPE_STATICS[reactIs$1.Memo] = MEMO_STATICS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function getStatics(component) {
							 | 
						||
| 
								 | 
							
									  // React v16.11 and below
							 | 
						||
| 
								 | 
							
									  if (reactIs$1.isMemo(component)) {
							 | 
						||
| 
								 | 
							
									    return MEMO_STATICS;
							 | 
						||
| 
								 | 
							
									  } // React v16.12 and above
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var defineProperty = Object.defineProperty;
							 | 
						||
| 
								 | 
							
									var getOwnPropertyNames = Object.getOwnPropertyNames;
							 | 
						||
| 
								 | 
							
									var getOwnPropertySymbols = Object.getOwnPropertySymbols;
							 | 
						||
| 
								 | 
							
									var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
							 | 
						||
| 
								 | 
							
									var getPrototypeOf = Object.getPrototypeOf;
							 | 
						||
| 
								 | 
							
									var objectPrototype = Object.prototype;
							 | 
						||
| 
								 | 
							
									function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
							 | 
						||
| 
								 | 
							
									  if (typeof sourceComponent !== 'string') {
							 | 
						||
| 
								 | 
							
									    // don't hoist over string (html) components
							 | 
						||
| 
								 | 
							
									    if (objectPrototype) {
							 | 
						||
| 
								 | 
							
									      var inheritedComponent = getPrototypeOf(sourceComponent);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (inheritedComponent && inheritedComponent !== objectPrototype) {
							 | 
						||
| 
								 | 
							
									        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var keys = getOwnPropertyNames(sourceComponent);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (getOwnPropertySymbols) {
							 | 
						||
| 
								 | 
							
									      keys = keys.concat(getOwnPropertySymbols(sourceComponent));
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    var targetStatics = getStatics(targetComponent);
							 | 
						||
| 
								 | 
							
									    var sourceStatics = getStatics(sourceComponent);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    for (var i = 0; i < keys.length; ++i) {
							 | 
						||
| 
								 | 
							
									      var key = keys[i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
							 | 
						||
| 
								 | 
							
									        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        try {
							 | 
						||
| 
								 | 
							
									          // Avoid failures from read-only properties
							 | 
						||
| 
								 | 
							
									          defineProperty(targetComponent, key, descriptor);
							 | 
						||
| 
								 | 
							
									        } catch (e) {}
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return targetComponent;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var hoistNonReactStatics_cjs = hoistNonReactStatics;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var reactIs_development = createCommonjsModule(function (module, exports) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  (function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// ATTENTION
							 | 
						||
| 
								 | 
							
									// When adding new symbols to this file,
							 | 
						||
| 
								 | 
							
									// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
							 | 
						||
| 
								 | 
							
									// The Symbol used to tag the ReactElement-like types.
							 | 
						||
| 
								 | 
							
									var REACT_ELEMENT_TYPE = Symbol.for('react.element');
							 | 
						||
| 
								 | 
							
									var REACT_PORTAL_TYPE = Symbol.for('react.portal');
							 | 
						||
| 
								 | 
							
									var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
							 | 
						||
| 
								 | 
							
									var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
							 | 
						||
| 
								 | 
							
									var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
							 | 
						||
| 
								 | 
							
									var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
							 | 
						||
| 
								 | 
							
									var REACT_CONTEXT_TYPE = Symbol.for('react.context');
							 | 
						||
| 
								 | 
							
									var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');
							 | 
						||
| 
								 | 
							
									var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
							 | 
						||
| 
								 | 
							
									var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
							 | 
						||
| 
								 | 
							
									var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
							 | 
						||
| 
								 | 
							
									var REACT_MEMO_TYPE = Symbol.for('react.memo');
							 | 
						||
| 
								 | 
							
									var REACT_LAZY_TYPE = Symbol.for('react.lazy');
							 | 
						||
| 
								 | 
							
									var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// -----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var enableScopeAPI = false; // Experimental Create Event Handle API.
							 | 
						||
| 
								 | 
							
									var enableCacheElement = false;
							 | 
						||
| 
								 | 
							
									var enableTransitionTracing = false; // No known bugs, but needs performance testing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
							 | 
						||
| 
								 | 
							
									// stuff. Intended to enable React core members to more easily debug scheduling
							 | 
						||
| 
								 | 
							
									// issues in DEV builds.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
							 | 
						||
| 
								 | 
							
									function isValidElementType(type) {
							 | 
						||
| 
								 | 
							
									  if (typeof type === 'string' || typeof type === 'function') {
							 | 
						||
| 
								 | 
							
									    return true;
							 | 
						||
| 
								 | 
							
									  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {
							 | 
						||
| 
								 | 
							
									    return true;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (typeof type === 'object' && type !== null) {
							 | 
						||
| 
								 | 
							
									    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
							 | 
						||
| 
								 | 
							
									    // types supported by any Flight configuration anywhere since
							 | 
						||
| 
								 | 
							
									    // we don't know which Flight build this will end up being used
							 | 
						||
| 
								 | 
							
									    // with.
							 | 
						||
| 
								 | 
							
									    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
							 | 
						||
| 
								 | 
							
									      return true;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function typeOf(object) {
							 | 
						||
| 
								 | 
							
									  if (typeof object === 'object' && object !== null) {
							 | 
						||
| 
								 | 
							
									    var $$typeof = object.$$typeof;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    switch ($$typeof) {
							 | 
						||
| 
								 | 
							
									      case REACT_ELEMENT_TYPE:
							 | 
						||
| 
								 | 
							
									        var type = object.type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        switch (type) {
							 | 
						||
| 
								 | 
							
									          case REACT_FRAGMENT_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_PROFILER_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_STRICT_MODE_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_SUSPENSE_TYPE:
							 | 
						||
| 
								 | 
							
									          case REACT_SUSPENSE_LIST_TYPE:
							 | 
						||
| 
								 | 
							
									            return type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									          default:
							 | 
						||
| 
								 | 
							
									            var $$typeofType = type && type.$$typeof;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									            switch ($$typeofType) {
							 | 
						||
| 
								 | 
							
									              case REACT_SERVER_CONTEXT_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_CONTEXT_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_FORWARD_REF_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_LAZY_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_MEMO_TYPE:
							 | 
						||
| 
								 | 
							
									              case REACT_PROVIDER_TYPE:
							 | 
						||
| 
								 | 
							
									                return $$typeofType;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									              default:
							 | 
						||
| 
								 | 
							
									                return $$typeof;
							 | 
						||
| 
								 | 
							
									            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      case REACT_PORTAL_TYPE:
							 | 
						||
| 
								 | 
							
									        return $$typeof;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return undefined;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									var ContextConsumer = REACT_CONTEXT_TYPE;
							 | 
						||
| 
								 | 
							
									var ContextProvider = REACT_PROVIDER_TYPE;
							 | 
						||
| 
								 | 
							
									var Element = REACT_ELEMENT_TYPE;
							 | 
						||
| 
								 | 
							
									var ForwardRef = REACT_FORWARD_REF_TYPE;
							 | 
						||
| 
								 | 
							
									var Fragment = REACT_FRAGMENT_TYPE;
							 | 
						||
| 
								 | 
							
									var Lazy = REACT_LAZY_TYPE;
							 | 
						||
| 
								 | 
							
									var Memo = REACT_MEMO_TYPE;
							 | 
						||
| 
								 | 
							
									var Portal = REACT_PORTAL_TYPE;
							 | 
						||
| 
								 | 
							
									var Profiler = REACT_PROFILER_TYPE;
							 | 
						||
| 
								 | 
							
									var StrictMode = REACT_STRICT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									var Suspense = REACT_SUSPENSE_TYPE;
							 | 
						||
| 
								 | 
							
									var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
							 | 
						||
| 
								 | 
							
									var hasWarnedAboutDeprecatedIsAsyncMode = false;
							 | 
						||
| 
								 | 
							
									var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function isAsyncMode(object) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
							 | 
						||
| 
								 | 
							
									      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isConcurrentMode(object) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {
							 | 
						||
| 
								 | 
							
									      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isContextConsumer(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_CONTEXT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isContextProvider(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PROVIDER_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isElement(object) {
							 | 
						||
| 
								 | 
							
									  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isForwardRef(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_FORWARD_REF_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isFragment(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_FRAGMENT_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isLazy(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_LAZY_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isMemo(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_MEMO_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isPortal(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PORTAL_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isProfiler(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_PROFILER_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isStrictMode(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_STRICT_MODE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isSuspense(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_SUSPENSE_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function isSuspenseList(object) {
							 | 
						||
| 
								 | 
							
									  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									exports.ContextConsumer = ContextConsumer;
							 | 
						||
| 
								 | 
							
									exports.ContextProvider = ContextProvider;
							 | 
						||
| 
								 | 
							
									exports.Element = Element;
							 | 
						||
| 
								 | 
							
									exports.ForwardRef = ForwardRef;
							 | 
						||
| 
								 | 
							
									exports.Fragment = Fragment;
							 | 
						||
| 
								 | 
							
									exports.Lazy = Lazy;
							 | 
						||
| 
								 | 
							
									exports.Memo = Memo;
							 | 
						||
| 
								 | 
							
									exports.Portal = Portal;
							 | 
						||
| 
								 | 
							
									exports.Profiler = Profiler;
							 | 
						||
| 
								 | 
							
									exports.StrictMode = StrictMode;
							 | 
						||
| 
								 | 
							
									exports.Suspense = Suspense;
							 | 
						||
| 
								 | 
							
									exports.SuspenseList = SuspenseList;
							 | 
						||
| 
								 | 
							
									exports.isAsyncMode = isAsyncMode;
							 | 
						||
| 
								 | 
							
									exports.isConcurrentMode = isConcurrentMode;
							 | 
						||
| 
								 | 
							
									exports.isContextConsumer = isContextConsumer;
							 | 
						||
| 
								 | 
							
									exports.isContextProvider = isContextProvider;
							 | 
						||
| 
								 | 
							
									exports.isElement = isElement;
							 | 
						||
| 
								 | 
							
									exports.isForwardRef = isForwardRef;
							 | 
						||
| 
								 | 
							
									exports.isFragment = isFragment;
							 | 
						||
| 
								 | 
							
									exports.isLazy = isLazy;
							 | 
						||
| 
								 | 
							
									exports.isMemo = isMemo;
							 | 
						||
| 
								 | 
							
									exports.isPortal = isPortal;
							 | 
						||
| 
								 | 
							
									exports.isProfiler = isProfiler;
							 | 
						||
| 
								 | 
							
									exports.isStrictMode = isStrictMode;
							 | 
						||
| 
								 | 
							
									exports.isSuspense = isSuspense;
							 | 
						||
| 
								 | 
							
									exports.isSuspenseList = isSuspenseList;
							 | 
						||
| 
								 | 
							
									exports.isValidElementType = isValidElementType;
							 | 
						||
| 
								 | 
							
									exports.typeOf = typeOf;
							 | 
						||
| 
								 | 
							
									  })();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var reactIs = createCommonjsModule(function (module) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									  module.exports = reactIs_development;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Prints a warning in the console if it exists.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {String} message The warning message.
							 | 
						||
| 
								 | 
							
									 * @returns {void}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function warning(message) {
							 | 
						||
| 
								 | 
							
									  /* eslint-disable no-console */
							 | 
						||
| 
								 | 
							
									  if (typeof console !== 'undefined' && typeof console.error === 'function') {
							 | 
						||
| 
								 | 
							
									    console.error(message);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									  /* eslint-enable no-console */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  try {
							 | 
						||
| 
								 | 
							
									    // This error was thrown as a convenience so that if you enable
							 | 
						||
| 
								 | 
							
									    // "break on all exceptions" in your console,
							 | 
						||
| 
								 | 
							
									    // it would pause the execution at this line.
							 | 
						||
| 
								 | 
							
									    throw new Error(message);
							 | 
						||
| 
								 | 
							
									    /* eslint-disable no-empty */
							 | 
						||
| 
								 | 
							
									  } catch (e) {}
							 | 
						||
| 
								 | 
							
									  /* eslint-enable no-empty */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function verify(selector, methodName) {
							 | 
						||
| 
								 | 
							
									  if (!selector) {
							 | 
						||
| 
								 | 
							
									    throw new Error(`Unexpected value for ${methodName} in connect.`);
							 | 
						||
| 
								 | 
							
									  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {
							 | 
						||
| 
								 | 
							
									    if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {
							 | 
						||
| 
								 | 
							
									      warning(`The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`);
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {
							 | 
						||
| 
								 | 
							
									  verify(mapStateToProps, 'mapStateToProps');
							 | 
						||
| 
								 | 
							
									  verify(mapDispatchToProps, 'mapDispatchToProps');
							 | 
						||
| 
								 | 
							
									  verify(mergeProps, 'mergeProps');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const _excluded$1 = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"];
							 | 
						||
| 
								 | 
							
									function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {
							 | 
						||
| 
								 | 
							
									  areStatesEqual,
							 | 
						||
| 
								 | 
							
									  areOwnPropsEqual,
							 | 
						||
| 
								 | 
							
									  areStatePropsEqual
							 | 
						||
| 
								 | 
							
									}) {
							 | 
						||
| 
								 | 
							
									  let hasRunAtLeastOnce = false;
							 | 
						||
| 
								 | 
							
									  let state;
							 | 
						||
| 
								 | 
							
									  let ownProps;
							 | 
						||
| 
								 | 
							
									  let stateProps;
							 | 
						||
| 
								 | 
							
									  let dispatchProps;
							 | 
						||
| 
								 | 
							
									  let mergedProps;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleFirstCall(firstState, firstOwnProps) {
							 | 
						||
| 
								 | 
							
									    state = firstState;
							 | 
						||
| 
								 | 
							
									    ownProps = firstOwnProps;
							 | 
						||
| 
								 | 
							
									    stateProps = mapStateToProps(state, ownProps);
							 | 
						||
| 
								 | 
							
									    dispatchProps = mapDispatchToProps(dispatch, ownProps);
							 | 
						||
| 
								 | 
							
									    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
							 | 
						||
| 
								 | 
							
									    hasRunAtLeastOnce = true;
							 | 
						||
| 
								 | 
							
									    return mergedProps;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleNewPropsAndNewState() {
							 | 
						||
| 
								 | 
							
									    stateProps = mapStateToProps(state, ownProps);
							 | 
						||
| 
								 | 
							
									    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);
							 | 
						||
| 
								 | 
							
									    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
							 | 
						||
| 
								 | 
							
									    return mergedProps;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleNewProps() {
							 | 
						||
| 
								 | 
							
									    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);
							 | 
						||
| 
								 | 
							
									    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);
							 | 
						||
| 
								 | 
							
									    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
							 | 
						||
| 
								 | 
							
									    return mergedProps;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleNewState() {
							 | 
						||
| 
								 | 
							
									    const nextStateProps = mapStateToProps(state, ownProps);
							 | 
						||
| 
								 | 
							
									    const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);
							 | 
						||
| 
								 | 
							
									    stateProps = nextStateProps;
							 | 
						||
| 
								 | 
							
									    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);
							 | 
						||
| 
								 | 
							
									    return mergedProps;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleSubsequentCalls(nextState, nextOwnProps) {
							 | 
						||
| 
								 | 
							
									    const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);
							 | 
						||
| 
								 | 
							
									    const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);
							 | 
						||
| 
								 | 
							
									    state = nextState;
							 | 
						||
| 
								 | 
							
									    ownProps = nextOwnProps;
							 | 
						||
| 
								 | 
							
									    if (propsChanged && stateChanged) return handleNewPropsAndNewState();
							 | 
						||
| 
								 | 
							
									    if (propsChanged) return handleNewProps();
							 | 
						||
| 
								 | 
							
									    if (stateChanged) return handleNewState();
							 | 
						||
| 
								 | 
							
									    return mergedProps;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return function pureFinalPropsSelector(nextState, nextOwnProps) {
							 | 
						||
| 
								 | 
							
									    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									// TODO: Add more comments
							 | 
						||
| 
								 | 
							
									// The selector returned by selectorFactory will memoize its results,
							 | 
						||
| 
								 | 
							
									// allowing connect's shouldComponentUpdate to return false if final
							 | 
						||
| 
								 | 
							
									// props have not changed.
							 | 
						||
| 
								 | 
							
									function finalPropsSelectorFactory(dispatch, _ref) {
							 | 
						||
| 
								 | 
							
									  let {
							 | 
						||
| 
								 | 
							
									    initMapStateToProps,
							 | 
						||
| 
								 | 
							
									    initMapDispatchToProps,
							 | 
						||
| 
								 | 
							
									    initMergeProps
							 | 
						||
| 
								 | 
							
									  } = _ref,
							 | 
						||
| 
								 | 
							
									      options = _objectWithoutPropertiesLoose(_ref, _excluded$1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const mapStateToProps = initMapStateToProps(dispatch, options);
							 | 
						||
| 
								 | 
							
									  const mapDispatchToProps = initMapDispatchToProps(dispatch, options);
							 | 
						||
| 
								 | 
							
									  const mergeProps = initMergeProps(dispatch, options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function bindActionCreators(actionCreators, dispatch) {
							 | 
						||
| 
								 | 
							
									  const boundActionCreators = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  for (const key in actionCreators) {
							 | 
						||
| 
								 | 
							
									    const actionCreator = actionCreators[key];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (typeof actionCreator === 'function') {
							 | 
						||
| 
								 | 
							
									      boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return boundActionCreators;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * @param {any} obj The object to inspect.
							 | 
						||
| 
								 | 
							
									 * @returns {boolean} True if the argument appears to be a plain object.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									function isPlainObject(obj) {
							 | 
						||
| 
								 | 
							
									  if (typeof obj !== 'object' || obj === null) return false;
							 | 
						||
| 
								 | 
							
									  let proto = Object.getPrototypeOf(obj);
							 | 
						||
| 
								 | 
							
									  if (proto === null) return true;
							 | 
						||
| 
								 | 
							
									  let baseProto = proto;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  while (Object.getPrototypeOf(baseProto) !== null) {
							 | 
						||
| 
								 | 
							
									    baseProto = Object.getPrototypeOf(baseProto);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return proto === baseProto;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function verifyPlainObject(value, displayName, methodName) {
							 | 
						||
| 
								 | 
							
									  if (!isPlainObject(value)) {
							 | 
						||
| 
								 | 
							
									    warning(`${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function wrapMapToPropsConstant( // * Note:
							 | 
						||
| 
								 | 
							
									//  It seems that the dispatch argument
							 | 
						||
| 
								 | 
							
									//  could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)
							 | 
						||
| 
								 | 
							
									//  and a state object in some others (ex: whenMapStateToPropsIsMissing)
							 | 
						||
| 
								 | 
							
									// eslint-disable-next-line no-unused-vars
							 | 
						||
| 
								 | 
							
									getConstant) {
							 | 
						||
| 
								 | 
							
									  return function initConstantSelector(dispatch) {
							 | 
						||
| 
								 | 
							
									    const constant = getConstant(dispatch);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    function constantSelector() {
							 | 
						||
| 
								 | 
							
									      return constant;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    constantSelector.dependsOnOwnProps = false;
							 | 
						||
| 
								 | 
							
									    return constantSelector;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args
							 | 
						||
| 
								 | 
							
									// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine
							 | 
						||
| 
								 | 
							
									// whether mapToProps needs to be invoked when props have changed.
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									// A length of one signals that mapToProps does not depend on props from the parent component.
							 | 
						||
| 
								 | 
							
									// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and
							 | 
						||
| 
								 | 
							
									// therefore not reporting its length accurately..
							 | 
						||
| 
								 | 
							
									// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function getDependsOnOwnProps(mapToProps) {
							 | 
						||
| 
								 | 
							
									  return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;
							 | 
						||
| 
								 | 
							
									} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,
							 | 
						||
| 
								 | 
							
									// this function wraps mapToProps in a proxy function which does several things:
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									//  * Detects whether the mapToProps function being called depends on props, which
							 | 
						||
| 
								 | 
							
									//    is used by selectorFactory to decide if it should reinvoke on props changes.
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									//  * On first call, handles mapToProps if returns another function, and treats that
							 | 
						||
| 
								 | 
							
									//    new function as the true mapToProps for subsequent calls.
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									//  * On first call, verifies the first result is a plain object, in order to warn
							 | 
						||
| 
								 | 
							
									//    the developer that their mapToProps function is not returning a valid result.
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function wrapMapToPropsFunc(mapToProps, methodName) {
							 | 
						||
| 
								 | 
							
									  return function initProxySelector(dispatch, {
							 | 
						||
| 
								 | 
							
									    displayName
							 | 
						||
| 
								 | 
							
									  }) {
							 | 
						||
| 
								 | 
							
									    const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {
							 | 
						||
| 
								 | 
							
									      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);
							 | 
						||
| 
								 | 
							
									    }; // allow detectFactoryAndVerify to get ownProps
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    proxy.dependsOnOwnProps = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {
							 | 
						||
| 
								 | 
							
									      proxy.mapToProps = mapToProps;
							 | 
						||
| 
								 | 
							
									      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);
							 | 
						||
| 
								 | 
							
									      let props = proxy(stateOrDispatch, ownProps);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (typeof props === 'function') {
							 | 
						||
| 
								 | 
							
									        proxy.mapToProps = props;
							 | 
						||
| 
								 | 
							
									        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);
							 | 
						||
| 
								 | 
							
									        props = proxy(stateOrDispatch, ownProps);
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      verifyPlainObject(props, displayName, methodName);
							 | 
						||
| 
								 | 
							
									      return props;
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return proxy;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createInvalidArgFactory(arg, name) {
							 | 
						||
| 
								 | 
							
									  return (dispatch, options) => {
							 | 
						||
| 
								 | 
							
									    throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function mapDispatchToPropsFactory(mapDispatchToProps) {
							 | 
						||
| 
								 | 
							
									  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(dispatch => // @ts-ignore
							 | 
						||
| 
								 | 
							
									  bindActionCreators(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? wrapMapToPropsConstant(dispatch => ({
							 | 
						||
| 
								 | 
							
									    dispatch
							 | 
						||
| 
								 | 
							
									  })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore
							 | 
						||
| 
								 | 
							
									  wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : createInvalidArgFactory(mapDispatchToProps, 'mapDispatchToProps');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function mapStateToPropsFactory(mapStateToProps) {
							 | 
						||
| 
								 | 
							
									  return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore
							 | 
						||
| 
								 | 
							
									  wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : createInvalidArgFactory(mapStateToProps, 'mapStateToProps');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function defaultMergeProps(stateProps, dispatchProps, ownProps) {
							 | 
						||
| 
								 | 
							
									  // @ts-ignore
							 | 
						||
| 
								 | 
							
									  return _extends({}, ownProps, stateProps, dispatchProps);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function wrapMergePropsFunc(mergeProps) {
							 | 
						||
| 
								 | 
							
									  return function initMergePropsProxy(dispatch, {
							 | 
						||
| 
								 | 
							
									    displayName,
							 | 
						||
| 
								 | 
							
									    areMergedPropsEqual
							 | 
						||
| 
								 | 
							
									  }) {
							 | 
						||
| 
								 | 
							
									    let hasRunOnce = false;
							 | 
						||
| 
								 | 
							
									    let mergedProps;
							 | 
						||
| 
								 | 
							
									    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {
							 | 
						||
| 
								 | 
							
									      const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (hasRunOnce) {
							 | 
						||
| 
								 | 
							
									        if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;
							 | 
						||
| 
								 | 
							
									      } else {
							 | 
						||
| 
								 | 
							
									        hasRunOnce = true;
							 | 
						||
| 
								 | 
							
									        mergedProps = nextMergedProps;
							 | 
						||
| 
								 | 
							
									        verifyPlainObject(mergedProps, displayName, 'mergeProps');
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      return mergedProps;
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									function mergePropsFactory(mergeProps) {
							 | 
						||
| 
								 | 
							
									  return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, 'mergeProps');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// well as nesting subscriptions of descendant components, so that we can ensure the
							 | 
						||
| 
								 | 
							
									// ancestor components re-render before descendants
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createListenerCollection() {
							 | 
						||
| 
								 | 
							
									  const batch = getBatch();
							 | 
						||
| 
								 | 
							
									  let first = null;
							 | 
						||
| 
								 | 
							
									  let last = null;
							 | 
						||
| 
								 | 
							
									  return {
							 | 
						||
| 
								 | 
							
									    clear() {
							 | 
						||
| 
								 | 
							
									      first = null;
							 | 
						||
| 
								 | 
							
									      last = null;
							 | 
						||
| 
								 | 
							
									    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    notify() {
							 | 
						||
| 
								 | 
							
									      batch(() => {
							 | 
						||
| 
								 | 
							
									        let listener = first;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        while (listener) {
							 | 
						||
| 
								 | 
							
									          listener.callback();
							 | 
						||
| 
								 | 
							
									          listener = listener.next;
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
									      });
							 | 
						||
| 
								 | 
							
									    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    get() {
							 | 
						||
| 
								 | 
							
									      let listeners = [];
							 | 
						||
| 
								 | 
							
									      let listener = first;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      while (listener) {
							 | 
						||
| 
								 | 
							
									        listeners.push(listener);
							 | 
						||
| 
								 | 
							
									        listener = listener.next;
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      return listeners;
							 | 
						||
| 
								 | 
							
									    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    subscribe(callback) {
							 | 
						||
| 
								 | 
							
									      let isSubscribed = true;
							 | 
						||
| 
								 | 
							
									      let listener = last = {
							 | 
						||
| 
								 | 
							
									        callback,
							 | 
						||
| 
								 | 
							
									        next: null,
							 | 
						||
| 
								 | 
							
									        prev: last
							 | 
						||
| 
								 | 
							
									      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (listener.prev) {
							 | 
						||
| 
								 | 
							
									        listener.prev.next = listener;
							 | 
						||
| 
								 | 
							
									      } else {
							 | 
						||
| 
								 | 
							
									        first = listener;
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      return function unsubscribe() {
							 | 
						||
| 
								 | 
							
									        if (!isSubscribed || first === null) return;
							 | 
						||
| 
								 | 
							
									        isSubscribed = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        if (listener.next) {
							 | 
						||
| 
								 | 
							
									          listener.next.prev = listener.prev;
							 | 
						||
| 
								 | 
							
									        } else {
							 | 
						||
| 
								 | 
							
									          last = listener.prev;
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        if (listener.prev) {
							 | 
						||
| 
								 | 
							
									          listener.prev.next = listener.next;
							 | 
						||
| 
								 | 
							
									        } else {
							 | 
						||
| 
								 | 
							
									          first = listener.next;
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
									      };
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const nullListeners = {
							 | 
						||
| 
								 | 
							
									  notify() {},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  get: () => []
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
									function createSubscription(store, parentSub) {
							 | 
						||
| 
								 | 
							
									  let unsubscribe;
							 | 
						||
| 
								 | 
							
									  let listeners = nullListeners;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function addNestedSub(listener) {
							 | 
						||
| 
								 | 
							
									    trySubscribe();
							 | 
						||
| 
								 | 
							
									    return listeners.subscribe(listener);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function notifyNestedSubs() {
							 | 
						||
| 
								 | 
							
									    listeners.notify();
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function handleChangeWrapper() {
							 | 
						||
| 
								 | 
							
									    if (subscription.onStateChange) {
							 | 
						||
| 
								 | 
							
									      subscription.onStateChange();
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function isSubscribed() {
							 | 
						||
| 
								 | 
							
									    return Boolean(unsubscribe);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function trySubscribe() {
							 | 
						||
| 
								 | 
							
									    if (!unsubscribe) {
							 | 
						||
| 
								 | 
							
									      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);
							 | 
						||
| 
								 | 
							
									      listeners = createListenerCollection();
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  function tryUnsubscribe() {
							 | 
						||
| 
								 | 
							
									    if (unsubscribe) {
							 | 
						||
| 
								 | 
							
									      unsubscribe();
							 | 
						||
| 
								 | 
							
									      unsubscribe = undefined;
							 | 
						||
| 
								 | 
							
									      listeners.clear();
							 | 
						||
| 
								 | 
							
									      listeners = nullListeners;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const subscription = {
							 | 
						||
| 
								 | 
							
									    addNestedSub,
							 | 
						||
| 
								 | 
							
									    notifyNestedSubs,
							 | 
						||
| 
								 | 
							
									    handleChangeWrapper,
							 | 
						||
| 
								 | 
							
									    isSubscribed,
							 | 
						||
| 
								 | 
							
									    trySubscribe,
							 | 
						||
| 
								 | 
							
									    tryUnsubscribe,
							 | 
						||
| 
								 | 
							
									    getListeners: () => listeners
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									  return subscription;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// To get around it, we can conditionally useEffect on the server (no-op) and
							 | 
						||
| 
								 | 
							
									// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store
							 | 
						||
| 
								 | 
							
									// subscription callback always has the selector from the latest render commit
							 | 
						||
| 
								 | 
							
									// available, otherwise a store update may happen between render and the effect,
							 | 
						||
| 
								 | 
							
									// which may cause missed updates; we also must ensure the store subscription
							 | 
						||
| 
								 | 
							
									// is created synchronously, otherwise a store update may occur before the
							 | 
						||
| 
								 | 
							
									// subscription is created and an inconsistent state may be observed
							 | 
						||
| 
								 | 
							
									// Matches logic in React's `shared/ExecutionEnvironment` file
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
							 | 
						||
| 
								 | 
							
									const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function is(x, y) {
							 | 
						||
| 
								 | 
							
									  if (x === y) {
							 | 
						||
| 
								 | 
							
									    return x !== 0 || y !== 0 || 1 / x === 1 / y;
							 | 
						||
| 
								 | 
							
									  } else {
							 | 
						||
| 
								 | 
							
									    return x !== x && y !== y;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function shallowEqual(objA, objB) {
							 | 
						||
| 
								 | 
							
									  if (is(objA, objB)) return true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
							 | 
						||
| 
								 | 
							
									    return false;
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const keysA = Object.keys(objA);
							 | 
						||
| 
								 | 
							
									  const keysB = Object.keys(objB);
							 | 
						||
| 
								 | 
							
									  if (keysA.length !== keysB.length) return false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  for (let i = 0; i < keysA.length; i++) {
							 | 
						||
| 
								 | 
							
									    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
							 | 
						||
| 
								 | 
							
									      return false;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const _excluded = ["reactReduxForwardedRef"];
							 | 
						||
| 
								 | 
							
									let useSyncExternalStore = notInitialized;
							 | 
						||
| 
								 | 
							
									const initializeConnect = fn => {
							 | 
						||
| 
								 | 
							
									  useSyncExternalStore = fn;
							 | 
						||
| 
								 | 
							
									}; // Define some constant arrays just to avoid re-creating these
							 | 
						||
| 
								 | 
							
									const NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given
							 | 
						||
| 
								 | 
							
									// for logging in an error message
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const stringifyComponent = Comp => {
							 | 
						||
| 
								 | 
							
									  try {
							 | 
						||
| 
								 | 
							
									    return JSON.stringify(Comp);
							 | 
						||
| 
								 | 
							
									  } catch (err) {
							 | 
						||
| 
								 | 
							
									    return String(Comp);
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// This is "just" a `useLayoutEffect`, but with two modifications:
							 | 
						||
| 
								 | 
							
									// - we need to fall back to `useEffect` in SSR to avoid annoying warnings
							 | 
						||
| 
								 | 
							
									// - we extract this to a separate function to avoid closing over values
							 | 
						||
| 
								 | 
							
									//   and causing memory leaks
							 | 
						||
| 
								 | 
							
									function useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {
							 | 
						||
| 
								 | 
							
									  useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);
							 | 
						||
| 
								 | 
							
									} // Effect callback, extracted: assign the latest props values to refs for later usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,
							 | 
						||
| 
								 | 
							
									childPropsFromStoreUpdate, notifyNestedSubs) {
							 | 
						||
| 
								 | 
							
									  // We want to capture the wrapper props and child props we used for later comparisons
							 | 
						||
| 
								 | 
							
									  lastWrapperProps.current = wrapperProps;
							 | 
						||
| 
								 | 
							
									  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  if (childPropsFromStoreUpdate.current) {
							 | 
						||
| 
								 | 
							
									    childPropsFromStoreUpdate.current = null;
							 | 
						||
| 
								 | 
							
									    notifyNestedSubs();
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
									} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,
							 | 
						||
| 
								 | 
							
									// check for updates after dispatched actions, and trigger re-renders.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,
							 | 
						||
| 
								 | 
							
									additionalSubscribeListener) {
							 | 
						||
| 
								 | 
							
									  // If we're not subscribed to the store, nothing to do here
							 | 
						||
| 
								 | 
							
									  if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  let didUnsubscribe = false;
							 | 
						||
| 
								 | 
							
									  let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const checkForUpdates = () => {
							 | 
						||
| 
								 | 
							
									    if (didUnsubscribe || !isMounted.current) {
							 | 
						||
| 
								 | 
							
									      // Don't run stale listeners.
							 | 
						||
| 
								 | 
							
									      // Redux doesn't guarantee unsubscriptions happen until next dispatch.
							 | 
						||
| 
								 | 
							
									      return;
							 | 
						||
| 
								 | 
							
									    } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    const latestStoreState = store.getState();
							 | 
						||
| 
								 | 
							
									    let newChildProps, error;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    try {
							 | 
						||
| 
								 | 
							
									      // Actually run the selector with the most recent store state and wrapper props
							 | 
						||
| 
								 | 
							
									      // to determine what the child props should be
							 | 
						||
| 
								 | 
							
									      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);
							 | 
						||
| 
								 | 
							
									    } catch (e) {
							 | 
						||
| 
								 | 
							
									      error = e;
							 | 
						||
| 
								 | 
							
									      lastThrownError = e;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (!error) {
							 | 
						||
| 
								 | 
							
									      lastThrownError = null;
							 | 
						||
| 
								 | 
							
									    } // If the child props haven't changed, nothing to do here - cascade the subscription update
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (newChildProps === lastChildProps.current) {
							 | 
						||
| 
								 | 
							
									      if (!renderIsScheduled.current) {
							 | 
						||
| 
								 | 
							
									        notifyNestedSubs();
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
									    } else {
							 | 
						||
| 
								 | 
							
									      // Save references to the new child props.  Note that we track the "child props from store update"
							 | 
						||
| 
								 | 
							
									      // as a ref instead of a useState/useReducer because we need a way to determine if that value has
							 | 
						||
| 
								 | 
							
									      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without
							 | 
						||
| 
								 | 
							
									      // forcing another re-render, which we don't want.
							 | 
						||
| 
								 | 
							
									      lastChildProps.current = newChildProps;
							 | 
						||
| 
								 | 
							
									      childPropsFromStoreUpdate.current = newChildProps;
							 | 
						||
| 
								 | 
							
									      renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used
							 | 
						||
| 
								 | 
							
									      // Trigger the React `useSyncExternalStore` subscriber
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      additionalSubscribeListener();
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }; // Actually subscribe to the nearest connected ancestor (or store)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  subscription.onStateChange = checkForUpdates;
							 | 
						||
| 
								 | 
							
									  subscription.trySubscribe(); // Pull data from the store after first render in case the store has
							 | 
						||
| 
								 | 
							
									  // changed since we began.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  checkForUpdates();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const unsubscribeWrapper = () => {
							 | 
						||
| 
								 | 
							
									    didUnsubscribe = true;
							 | 
						||
| 
								 | 
							
									    subscription.tryUnsubscribe();
							 | 
						||
| 
								 | 
							
									    subscription.onStateChange = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (lastThrownError) {
							 | 
						||
| 
								 | 
							
									      // It's possible that we caught an error due to a bad mapState function, but the
							 | 
						||
| 
								 | 
							
									      // parent re-rendered without this component and we're about to unmount.
							 | 
						||
| 
								 | 
							
									      // This shouldn't happen as long as we do top-down subscriptions correctly, but
							 | 
						||
| 
								 | 
							
									      // if we ever do those wrong, this throw will surface the error in our tests.
							 | 
						||
| 
								 | 
							
									      // In that case, throw the error from here so it doesn't get lost.
							 | 
						||
| 
								 | 
							
									      throw lastThrownError;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return unsubscribeWrapper;
							 | 
						||
| 
								 | 
							
									} // Reducer initial state creation for our update reducer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function strictEqual(a, b) {
							 | 
						||
| 
								 | 
							
									  return a === b;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Infers the type of props that a connector will inject into a component.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									let hasWarnedAboutDeprecatedPureOption = false;
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Connects a React component to a Redux store.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * - Without arguments, just wraps the component, without changing the behavior / props
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior
							 | 
						||
| 
								 | 
							
									 * is to override ownProps (as stated in the docs), so what remains is everything that's
							 | 
						||
| 
								 | 
							
									 * not a state or dispatch prop
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * - When 3rd param is passed, we don't know if ownProps propagate and whether they
							 | 
						||
| 
								 | 
							
									 * should be valid component props, because it depends on mergeProps implementation.
							 | 
						||
| 
								 | 
							
									 * As such, it is the user's responsibility to extend ownProps interface from state or
							 | 
						||
| 
								 | 
							
									 * dispatch props or both when applicable
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param mapStateToProps A function that extracts values from state
							 | 
						||
| 
								 | 
							
									 * @param mapDispatchToProps Setup for dispatching actions
							 | 
						||
| 
								 | 
							
									 * @param mergeProps Optional callback to merge state and dispatch props together
							 | 
						||
| 
								 | 
							
									 * @param options Options for configuring the connection
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function connect(mapStateToProps, mapDispatchToProps, mergeProps, {
							 | 
						||
| 
								 | 
							
									  // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.
							 | 
						||
| 
								 | 
							
									  // @ts-ignore
							 | 
						||
| 
								 | 
							
									  pure,
							 | 
						||
| 
								 | 
							
									  areStatesEqual = strictEqual,
							 | 
						||
| 
								 | 
							
									  areOwnPropsEqual = shallowEqual,
							 | 
						||
| 
								 | 
							
									  areStatePropsEqual = shallowEqual,
							 | 
						||
| 
								 | 
							
									  areMergedPropsEqual = shallowEqual,
							 | 
						||
| 
								 | 
							
									  // use React's forwardRef to expose a ref of the wrapped component
							 | 
						||
| 
								 | 
							
									  forwardRef = false,
							 | 
						||
| 
								 | 
							
									  // the context consumer to use
							 | 
						||
| 
								 | 
							
									  context = ReactReduxContext
							 | 
						||
| 
								 | 
							
									} = {}) {
							 | 
						||
| 
								 | 
							
									  {
							 | 
						||
| 
								 | 
							
									    if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {
							 | 
						||
| 
								 | 
							
									      hasWarnedAboutDeprecatedPureOption = true;
							 | 
						||
| 
								 | 
							
									      warning('The `pure` option has been removed. `connect` is now always a "pure/memoized" component');
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
									  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const Context = context;
							 | 
						||
| 
								 | 
							
									  const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);
							 | 
						||
| 
								 | 
							
									  const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);
							 | 
						||
| 
								 | 
							
									  const initMergeProps = mergePropsFactory(mergeProps);
							 | 
						||
| 
								 | 
							
									  const shouldHandleStateChanges = Boolean(mapStateToProps);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  const wrapWithConnect = WrappedComponent => {
							 | 
						||
| 
								 | 
							
									    if (!reactIs.isValidElementType(WrappedComponent)) {
							 | 
						||
| 
								 | 
							
									      throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
							 | 
						||
| 
								 | 
							
									    const displayName = `Connect(${wrappedComponentName})`;
							 | 
						||
| 
								 | 
							
									    const selectorFactoryOptions = {
							 | 
						||
| 
								 | 
							
									      shouldHandleStateChanges,
							 | 
						||
| 
								 | 
							
									      displayName,
							 | 
						||
| 
								 | 
							
									      wrappedComponentName,
							 | 
						||
| 
								 | 
							
									      WrappedComponent,
							 | 
						||
| 
								 | 
							
									      // @ts-ignore
							 | 
						||
| 
								 | 
							
									      initMapStateToProps,
							 | 
						||
| 
								 | 
							
									      // @ts-ignore
							 | 
						||
| 
								 | 
							
									      initMapDispatchToProps,
							 | 
						||
| 
								 | 
							
									      initMergeProps,
							 | 
						||
| 
								 | 
							
									      areStatesEqual,
							 | 
						||
| 
								 | 
							
									      areStatePropsEqual,
							 | 
						||
| 
								 | 
							
									      areOwnPropsEqual,
							 | 
						||
| 
								 | 
							
									      areMergedPropsEqual
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    function ConnectFunction(props) {
							 | 
						||
| 
								 | 
							
									      const [propsContext, reactReduxForwardedRef, wrapperProps] = React.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
							 | 
						||
| 
								 | 
							
									        } = props,
							 | 
						||
| 
								 | 
							
									              wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        return [props.context, reactReduxForwardedRef, wrapperProps];
							 | 
						||
| 
								 | 
							
									      }, [props]);
							 | 
						||
| 
								 | 
							
									      const ContextToUse = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.
							 | 
						||
| 
								 | 
							
									        // Memoize the check that determines which context instance we should use.
							 | 
						||
| 
								 | 
							
									        return propsContext && propsContext.Consumer && // @ts-ignore
							 | 
						||
| 
								 | 
							
									        reactIs.isContextConsumer( /*#__PURE__*/React__default['default'].createElement(propsContext.Consumer, null)) ? propsContext : Context;
							 | 
						||
| 
								 | 
							
									      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.
							 | 
						||
| 
								 | 
							
									      // We'll check to see if it _looks_ like a Redux store first.
							 | 
						||
| 
								 | 
							
									      // This allows us to pass through a `store` prop that is just a plain value.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);
							 | 
						||
| 
								 | 
							
									      const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      if (!didStoreComeFromProps && !didStoreComeFromContext) {
							 | 
						||
| 
								 | 
							
									        throw new Error(`Could not find "store" in the context of ` + `"${displayName}". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);
							 | 
						||
| 
								 | 
							
									      } // Based on the previous check, one of these must be true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const store = didStoreComeFromProps ? props.store : contextValue.store;
							 | 
						||
| 
								 | 
							
									      const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;
							 | 
						||
| 
								 | 
							
									      const childPropsSelector = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        // The child props selector needs the store reference as an input.
							 | 
						||
| 
								 | 
							
									        // Re-create this selector whenever the store changes.
							 | 
						||
| 
								 | 
							
									        return finalPropsSelectorFactory(store.dispatch, selectorFactoryOptions);
							 | 
						||
| 
								 | 
							
									      }, [store]);
							 | 
						||
| 
								 | 
							
									      const [subscription, notifyNestedSubs] = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // 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.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        const subscription = createSubscription(store, didStoreComeFromProps ? undefined : 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
							 | 
						||
| 
								 | 
							
									        // 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.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);
							 | 
						||
| 
								 | 
							
									        return [subscription, notifyNestedSubs];
							 | 
						||
| 
								 | 
							
									      }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,
							 | 
						||
| 
								 | 
							
									      // and memoize that value to avoid unnecessary context updates.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const overriddenContextValue = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        if (didStoreComeFromProps) {
							 | 
						||
| 
								 | 
							
									          // This component is directly subscribed to a store from props.
							 | 
						||
| 
								 | 
							
									          // We don't want descendants reading from this store - pass down whatever
							 | 
						||
| 
								 | 
							
									          // the existing context value is from the nearest connected ancestor.
							 | 
						||
| 
								 | 
							
									          return contextValue;
							 | 
						||
| 
								 | 
							
									        } // Otherwise, put this component's subscription instance into context, so that
							 | 
						||
| 
								 | 
							
									        // connected descendants won't update until after this component is done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        return _extends({}, contextValue, {
							 | 
						||
| 
								 | 
							
									          subscription
							 | 
						||
| 
								 | 
							
									        });
							 | 
						||
| 
								 | 
							
									      }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const lastChildProps = React.useRef();
							 | 
						||
| 
								 | 
							
									      const lastWrapperProps = React.useRef(wrapperProps);
							 | 
						||
| 
								 | 
							
									      const childPropsFromStoreUpdate = React.useRef();
							 | 
						||
| 
								 | 
							
									      const renderIsScheduled = React.useRef(false);
							 | 
						||
| 
								 | 
							
									      React.useRef(false);
							 | 
						||
| 
								 | 
							
									      const isMounted = React.useRef(false);
							 | 
						||
| 
								 | 
							
									      const latestSubscriptionCallbackError = React.useRef();
							 | 
						||
| 
								 | 
							
									      useIsomorphicLayoutEffect(() => {
							 | 
						||
| 
								 | 
							
									        isMounted.current = true;
							 | 
						||
| 
								 | 
							
									        return () => {
							 | 
						||
| 
								 | 
							
									          isMounted.current = false;
							 | 
						||
| 
								 | 
							
									        };
							 | 
						||
| 
								 | 
							
									      }, []);
							 | 
						||
| 
								 | 
							
									      const actualChildPropsSelector = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        const selector = () => {
							 | 
						||
| 
								 | 
							
									          // Tricky logic here:
							 | 
						||
| 
								 | 
							
									          // - This render may have been triggered by a Redux store update that produced new child props
							 | 
						||
| 
								 | 
							
									          // - However, we may have gotten new wrapper props after that
							 | 
						||
| 
								 | 
							
									          // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.
							 | 
						||
| 
								 | 
							
									          // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.
							 | 
						||
| 
								 | 
							
									          // So, we'll use the child props from store update only if the wrapper props are the same as last time.
							 | 
						||
| 
								 | 
							
									          if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {
							 | 
						||
| 
								 | 
							
									            return childPropsFromStoreUpdate.current;
							 | 
						||
| 
								 | 
							
									          } // TODO We're reading the store directly in render() here. Bad idea?
							 | 
						||
| 
								 | 
							
									          // This will likely cause Bad Things (TM) to happen in Concurrent Mode.
							 | 
						||
| 
								 | 
							
									          // Note that we do this because on renders _not_ caused by store updates, we need the latest store state
							 | 
						||
| 
								 | 
							
									          // to determine what the child props should be.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									          return childPropsSelector(store.getState(), wrapperProps);
							 | 
						||
| 
								 | 
							
									        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        return selector;
							 | 
						||
| 
								 | 
							
									      }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns
							 | 
						||
| 
								 | 
							
									      // about useLayoutEffect in SSR, so we try to detect environment and fall back to
							 | 
						||
| 
								 | 
							
									      // just useEffect instead to avoid the warning, since neither will run anyway.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const subscribeForReact = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        const subscribe = reactListener => {
							 | 
						||
| 
								 | 
							
									          if (!subscription) {
							 | 
						||
| 
								 | 
							
									            return () => {};
							 | 
						||
| 
								 | 
							
									          }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									          return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore
							 | 
						||
| 
								 | 
							
									          childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);
							 | 
						||
| 
								 | 
							
									        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        return subscribe;
							 | 
						||
| 
								 | 
							
									      }, [subscription]);
							 | 
						||
| 
								 | 
							
									      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);
							 | 
						||
| 
								 | 
							
									      let actualChildProps;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      try {
							 | 
						||
| 
								 | 
							
									        actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing
							 | 
						||
| 
								 | 
							
									        subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,
							 | 
						||
| 
								 | 
							
									        // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.
							 | 
						||
| 
								 | 
							
									        actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);
							 | 
						||
| 
								 | 
							
									      } catch (err) {
							 | 
						||
| 
								 | 
							
									        if (latestSubscriptionCallbackError.current) {
							 | 
						||
| 
								 | 
							
									          err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`;
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        throw err;
							 | 
						||
| 
								 | 
							
									      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      useIsomorphicLayoutEffect(() => {
							 | 
						||
| 
								 | 
							
									        latestSubscriptionCallbackError.current = undefined;
							 | 
						||
| 
								 | 
							
									        childPropsFromStoreUpdate.current = undefined;
							 | 
						||
| 
								 | 
							
									        lastChildProps.current = actualChildProps;
							 | 
						||
| 
								 | 
							
									      }); // Now that all that's done, we can finally try to actually render the child component.
							 | 
						||
| 
								 | 
							
									      // We memoize the elements for the rendered child component as an optimization.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const renderedWrappedComponent = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        return (
							 | 
						||
| 
								 | 
							
									          /*#__PURE__*/
							 | 
						||
| 
								 | 
							
									          // @ts-ignore
							 | 
						||
| 
								 | 
							
									          React__default['default'].createElement(WrappedComponent, _extends({}, actualChildProps, {
							 | 
						||
| 
								 | 
							
									            ref: reactReduxForwardedRef
							 | 
						||
| 
								 | 
							
									          }))
							 | 
						||
| 
								 | 
							
									        );
							 | 
						||
| 
								 | 
							
									      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering
							 | 
						||
| 
								 | 
							
									      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const renderedChild = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									        if (shouldHandleStateChanges) {
							 | 
						||
| 
								 | 
							
									          // If this component is subscribed to store updates, we need to pass its own
							 | 
						||
| 
								 | 
							
									          // subscription instance down to our descendants. That means rendering the same
							 | 
						||
| 
								 | 
							
									          // Context instance, and putting a different value into the context.
							 | 
						||
| 
								 | 
							
									          return /*#__PURE__*/React__default['default'].createElement(ContextToUse.Provider, {
							 | 
						||
| 
								 | 
							
									            value: overriddenContextValue
							 | 
						||
| 
								 | 
							
									          }, renderedWrappedComponent);
							 | 
						||
| 
								 | 
							
									        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									        return renderedWrappedComponent;
							 | 
						||
| 
								 | 
							
									      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);
							 | 
						||
| 
								 | 
							
									      return renderedChild;
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    const _Connect = React__default['default'].memo(ConnectFunction);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    // Add a hacky cast to get the right output type
							 | 
						||
| 
								 | 
							
									    const Connect = _Connect;
							 | 
						||
| 
								 | 
							
									    Connect.WrappedComponent = WrappedComponent;
							 | 
						||
| 
								 | 
							
									    Connect.displayName = ConnectFunction.displayName = displayName;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (forwardRef) {
							 | 
						||
| 
								 | 
							
									      const _forwarded = React__default['default'].forwardRef(function forwardConnectRef(props, ref) {
							 | 
						||
| 
								 | 
							
									        // @ts-ignore
							 | 
						||
| 
								 | 
							
									        return /*#__PURE__*/React__default['default'].createElement(Connect, _extends({}, props, {
							 | 
						||
| 
								 | 
							
									          reactReduxForwardedRef: ref
							 | 
						||
| 
								 | 
							
									        }));
							 | 
						||
| 
								 | 
							
									      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									      const forwarded = _forwarded;
							 | 
						||
| 
								 | 
							
									      forwarded.displayName = displayName;
							 | 
						||
| 
								 | 
							
									      forwarded.WrappedComponent = WrappedComponent;
							 | 
						||
| 
								 | 
							
									      return hoistNonReactStatics_cjs(forwarded, WrappedComponent);
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return hoistNonReactStatics_cjs(Connect, WrappedComponent);
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return wrapWithConnect;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function Provider({
							 | 
						||
| 
								 | 
							
									  store,
							 | 
						||
| 
								 | 
							
									  context,
							 | 
						||
| 
								 | 
							
									  children,
							 | 
						||
| 
								 | 
							
									  serverState
							 | 
						||
| 
								 | 
							
									}) {
							 | 
						||
| 
								 | 
							
									  const contextValue = React.useMemo(() => {
							 | 
						||
| 
								 | 
							
									    const subscription = createSubscription(store);
							 | 
						||
| 
								 | 
							
									    return {
							 | 
						||
| 
								 | 
							
									      store,
							 | 
						||
| 
								 | 
							
									      subscription,
							 | 
						||
| 
								 | 
							
									      getServerState: serverState ? () => serverState : undefined
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
									  }, [store, serverState]);
							 | 
						||
| 
								 | 
							
									  const previousState = React.useMemo(() => store.getState(), [store]);
							 | 
						||
| 
								 | 
							
									  useIsomorphicLayoutEffect(() => {
							 | 
						||
| 
								 | 
							
									    const {
							 | 
						||
| 
								 | 
							
									      subscription
							 | 
						||
| 
								 | 
							
									    } = contextValue;
							 | 
						||
| 
								 | 
							
									    subscription.onStateChange = subscription.notifyNestedSubs;
							 | 
						||
| 
								 | 
							
									    subscription.trySubscribe();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    if (previousState !== store.getState()) {
							 | 
						||
| 
								 | 
							
									      subscription.notifyNestedSubs();
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return () => {
							 | 
						||
| 
								 | 
							
									      subscription.tryUnsubscribe();
							 | 
						||
| 
								 | 
							
									      subscription.onStateChange = undefined;
							 | 
						||
| 
								 | 
							
									    };
							 | 
						||
| 
								 | 
							
									  }, [contextValue, previousState]);
							 | 
						||
| 
								 | 
							
									  const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  return /*#__PURE__*/React__default['default'].createElement(Context.Provider, {
							 | 
						||
| 
								 | 
							
									    value: contextValue
							 | 
						||
| 
								 | 
							
									  }, children);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Hook factory, which creates a `useStore` hook bound to a given context.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
							 | 
						||
| 
								 | 
							
									 * @returns {Function} A `useStore` hook bound to the specified context.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createStoreHook(context = ReactReduxContext) {
							 | 
						||
| 
								 | 
							
									  const useReduxContext$1 = // @ts-ignore
							 | 
						||
| 
								 | 
							
									  context === ReactReduxContext ? useReduxContext : () => React.useContext(context);
							 | 
						||
| 
								 | 
							
									  return function useStore() {
							 | 
						||
| 
								 | 
							
									    const {
							 | 
						||
| 
								 | 
							
									      store
							 | 
						||
| 
								 | 
							
									    } = useReduxContext$1(); // @ts-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return store;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * A hook to access the redux store.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {any} the redux store
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @example
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * import React from 'react'
							 | 
						||
| 
								 | 
							
									 * import { useStore } from 'react-redux'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * export const ExampleComponent = () => {
							 | 
						||
| 
								 | 
							
									 *   const store = useStore()
							 | 
						||
| 
								 | 
							
									 *   return <div>{store.getState()}</div>
							 | 
						||
| 
								 | 
							
									 * }
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const useStore = /*#__PURE__*/createStoreHook();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Hook factory, which creates a `useDispatch` hook bound to a given context.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
							 | 
						||
| 
								 | 
							
									 * @returns {Function} A `useDispatch` hook bound to the specified context.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function createDispatchHook(context = ReactReduxContext) {
							 | 
						||
| 
								 | 
							
									  const useStore$1 = // @ts-ignore
							 | 
						||
| 
								 | 
							
									  context === ReactReduxContext ? useStore : createStoreHook(context);
							 | 
						||
| 
								 | 
							
									  return function useDispatch() {
							 | 
						||
| 
								 | 
							
									    const store = useStore$1(); // @ts-ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									    return store.dispatch;
							 | 
						||
| 
								 | 
							
									  };
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * A hook to access the redux `dispatch` function.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {any|function} redux store's `dispatch` function
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @example
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * import React, { useCallback } from 'react'
							 | 
						||
| 
								 | 
							
									 * import { useDispatch } from 'react-redux'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * export const CounterComponent = ({ value }) => {
							 | 
						||
| 
								 | 
							
									 *   const dispatch = useDispatch()
							 | 
						||
| 
								 | 
							
									 *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])
							 | 
						||
| 
								 | 
							
									 *   return (
							 | 
						||
| 
								 | 
							
									 *     <div>
							 | 
						||
| 
								 | 
							
									 *       <span>{value}</span>
							 | 
						||
| 
								 | 
							
									 *       <button onClick={increaseCounter}>Increase counter</button>
							 | 
						||
| 
								 | 
							
									 *     </div>
							 | 
						||
| 
								 | 
							
									 *   )
							 | 
						||
| 
								 | 
							
									 * }
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									const useDispatch = /*#__PURE__*/createDispatchHook();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// The primary entry point assumes we're working with standard ReactDOM/RN, but
							 | 
						||
| 
								 | 
							
									initializeUseSelector(withSelector.useSyncExternalStoreWithSelector);
							 | 
						||
| 
								 | 
							
									initializeConnect(shim.useSyncExternalStore); // Enable batched updates in our subscriptions for use
							 | 
						||
| 
								 | 
							
									// with standard React renderers (ReactDOM, React Native)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setBatch(reactDom.unstable_batchedUpdates);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Object.defineProperty(exports, 'batch', {
							 | 
						||
| 
								 | 
							
										enumerable: true,
							 | 
						||
| 
								 | 
							
										get: function () {
							 | 
						||
| 
								 | 
							
											return reactDom.unstable_batchedUpdates;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
									exports.Provider = Provider;
							 | 
						||
| 
								 | 
							
									exports.ReactReduxContext = ReactReduxContext;
							 | 
						||
| 
								 | 
							
									exports.connect = connect;
							 | 
						||
| 
								 | 
							
									exports.createDispatchHook = createDispatchHook;
							 | 
						||
| 
								 | 
							
									exports.createSelectorHook = createSelectorHook;
							 | 
						||
| 
								 | 
							
									exports.createStoreHook = createStoreHook;
							 | 
						||
| 
								 | 
							
									exports.shallowEqual = shallowEqual;
							 | 
						||
| 
								 | 
							
									exports.useDispatch = useDispatch;
							 | 
						||
| 
								 | 
							
									exports.useSelector = useSelector;
							 | 
						||
| 
								 | 
							
									exports.useStore = useStore;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Object.defineProperty(exports, '__esModule', { value: true });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								})));
							 |