{"version":3,"file":"./build/data/index.min.js","mappings":"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","sources":["webpack://wp/./node_modules/deepmerge/dist/cjs.js","webpack://wp/./node_modules/equivalent-key-map/equivalent-key-map.js","webpack://wp/./node_modules/turbo-combine-reducers/index.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://wp/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://wp/./node_modules/redux/es/redux.js","webpack://wp/external window [\"wp\",\"reduxRoutine\"]","webpack://wp/external window [\"wp\",\"compose\"]","webpack://wp/./packages/data/build-module/@wordpress/data/src/factory.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/controls.js","webpack://wp/external window [\"wp\",\"privateApis\"]","webpack://wp/./packages/data/build-module/@wordpress/data/src/lock-unlock.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/promise-middleware.js","webpack://wp/./node_modules/is-promise/index.mjs","webpack://wp/./packages/data/build-module/store/@wordpress/data/src/store/index.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/resolvers-cache-middleware.js","webpack://wp/./packages/data/build-module/redux-store/metadata/@wordpress/data/src/redux-store/metadata/utils.ts","webpack://wp/./packages/data/build-module/redux-store/metadata/@wordpress/data/src/redux-store/metadata/reducer.ts","webpack://wp/./packages/data/build-module/redux-store/metadata/@wordpress/data/src/redux-store/metadata/selectors.js","webpack://wp/./packages/data/build-module/redux-store/metadata/@wordpress/data/src/redux-store/metadata/actions.js","webpack://wp/./packages/data/build-module/redux-store/@wordpress/data/src/redux-store/index.js","webpack://wp/./packages/data/build-module/redux-store/@wordpress/data/src/redux-store/thunk-middleware.js","webpack://wp/./packages/data/build-module/utils/@wordpress/data/src/utils/emitter.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/registry.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/default-registry.js","webpack://wp/./node_modules/is-plain-object/dist/is-plain-object.mjs","webpack://wp/./packages/data/build-module/plugins/persistence/storage/@wordpress/data/src/plugins/persistence/storage/object.js","webpack://wp/./packages/data/build-module/plugins/persistence/storage/@wordpress/data/src/plugins/persistence/storage/default.js","webpack://wp/./packages/data/build-module/plugins/persistence/@wordpress/data/src/plugins/persistence/index.js","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"priorityQueue\"]","webpack://wp/external window [\"wp\",\"isShallowEqual\"]","webpack://wp/./packages/data/build-module/components/registry-provider/@wordpress/data/src/components/registry-provider/context.js","webpack://wp/./packages/data/build-module/components/registry-provider/@wordpress/data/src/components/registry-provider/use-registry.js","webpack://wp/./packages/data/build-module/components/async-mode-provider/@wordpress/data/src/components/async-mode-provider/context.js","webpack://wp/./packages/data/build-module/components/use-select/@wordpress/data/src/components/use-select/index.js","webpack://wp/./packages/data/build-module/components/async-mode-provider/@wordpress/data/src/components/async-mode-provider/use-async-mode.js","webpack://wp/./packages/data/build-module/components/with-select/@wordpress/data/src/components/with-select/index.js","webpack://wp/./packages/data/build-module/components/with-dispatch/@wordpress/data/src/components/with-dispatch/index.js","webpack://wp/./packages/data/build-module/components/use-dispatch/@wordpress/data/src/components/use-dispatch/use-dispatch-with-map.js","webpack://wp/./packages/data/build-module/components/with-registry/@wordpress/data/src/components/with-registry/index.js","webpack://wp/./packages/data/build-module/components/use-dispatch/@wordpress/data/src/components/use-dispatch/use-dispatch.js","webpack://wp/./packages/data/build-module/@wordpress/data/src/dispatch.ts","webpack://wp/./packages/data/build-module/@wordpress/data/src/select.ts","webpack://wp/./packages/data/build-module/@wordpress/data/src/index.js"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\n/**\n * Given an instance of EquivalentKeyMap, returns its internal value pair tuple\n * for a key, if one exists. The tuple members consist of the last reference\n * value for the key (used in efficient subsequent lookups) and the value\n * assigned for the key at the leaf node.\n *\n * @param {EquivalentKeyMap} instance EquivalentKeyMap instance.\n * @param {*} key The key for which to return value pair.\n *\n * @return {?Array} Value pair, if exists.\n */\nfunction getValuePair(instance, key) {\n var _map = instance._map,\n _arrayTreeMap = instance._arrayTreeMap,\n _objectTreeMap = instance._objectTreeMap; // Map keeps a reference to the last object-like key used to set the\n // value, which can be used to shortcut immediately to the value.\n\n if (_map.has(key)) {\n return _map.get(key);\n } // Sort keys to ensure stable retrieval from tree.\n\n\n var properties = Object.keys(key).sort(); // Tree by type to avoid conflicts on numeric object keys, empty value.\n\n var map = Array.isArray(key) ? _arrayTreeMap : _objectTreeMap;\n\n for (var i = 0; i < properties.length; i++) {\n var property = properties[i];\n map = map.get(property);\n\n if (map === undefined) {\n return;\n }\n\n var propertyValue = key[property];\n map = map.get(propertyValue);\n\n if (map === undefined) {\n return;\n }\n }\n\n var valuePair = map.get('_ekm_value');\n\n if (!valuePair) {\n return;\n } // If reached, it implies that an object-like key was set with another\n // reference, so delete the reference and replace with the current.\n\n\n _map.delete(valuePair[0]);\n\n valuePair[0] = key;\n map.set('_ekm_value', valuePair);\n\n _map.set(key, valuePair);\n\n return valuePair;\n}\n/**\n * Variant of a Map object which enables lookup by equivalent (deeply equal)\n * object and array keys.\n */\n\n\nvar EquivalentKeyMap =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructs a new instance of EquivalentKeyMap.\n *\n * @param {Iterable.<*>} iterable Initial pair of key, value for map.\n */\n function EquivalentKeyMap(iterable) {\n _classCallCheck(this, EquivalentKeyMap);\n\n this.clear();\n\n if (iterable instanceof EquivalentKeyMap) {\n // Map#forEach is only means of iterating with support for IE11.\n var iterablePairs = [];\n iterable.forEach(function (value, key) {\n iterablePairs.push([key, value]);\n });\n iterable = iterablePairs;\n }\n\n if (iterable != null) {\n for (var i = 0; i < iterable.length; i++) {\n this.set(iterable[i][0], iterable[i][1]);\n }\n }\n }\n /**\n * Accessor property returning the number of elements.\n *\n * @return {number} Number of elements.\n */\n\n\n _createClass(EquivalentKeyMap, [{\n key: \"set\",\n\n /**\n * Add or update an element with a specified key and value.\n *\n * @param {*} key The key of the element to add.\n * @param {*} value The value of the element to add.\n *\n * @return {EquivalentKeyMap} Map instance.\n */\n value: function set(key, value) {\n // Shortcut non-object-like to set on internal Map.\n if (key === null || _typeof(key) !== 'object') {\n this._map.set(key, value);\n\n return this;\n } // Sort keys to ensure stable assignment into tree.\n\n\n var properties = Object.keys(key).sort();\n var valuePair = [key, value]; // Tree by type to avoid conflicts on numeric object keys, empty value.\n\n var map = Array.isArray(key) ? this._arrayTreeMap : this._objectTreeMap;\n\n for (var i = 0; i < properties.length; i++) {\n var property = properties[i];\n\n if (!map.has(property)) {\n map.set(property, new EquivalentKeyMap());\n }\n\n map = map.get(property);\n var propertyValue = key[property];\n\n if (!map.has(propertyValue)) {\n map.set(propertyValue, new EquivalentKeyMap());\n }\n\n map = map.get(propertyValue);\n } // If an _ekm_value exists, there was already an equivalent key. Before\n // overriding, ensure that the old key reference is removed from map to\n // avoid memory leak of accumulating equivalent keys. This is, in a\n // sense, a poor man's WeakMap, while still enabling iterability.\n\n\n var previousValuePair = map.get('_ekm_value');\n\n if (previousValuePair) {\n this._map.delete(previousValuePair[0]);\n }\n\n map.set('_ekm_value', valuePair);\n\n this._map.set(key, valuePair);\n\n return this;\n }\n /**\n * Returns a specified element.\n *\n * @param {*} key The key of the element to return.\n *\n * @return {?*} The element associated with the specified key or undefined\n * if the key can't be found.\n */\n\n }, {\n key: \"get\",\n value: function get(key) {\n // Shortcut non-object-like to get from internal Map.\n if (key === null || _typeof(key) !== 'object') {\n return this._map.get(key);\n }\n\n var valuePair = getValuePair(this, key);\n\n if (valuePair) {\n return valuePair[1];\n }\n }\n /**\n * Returns a boolean indicating whether an element with the specified key\n * exists or not.\n *\n * @param {*} key The key of the element to test for presence.\n *\n * @return {boolean} Whether an element with the specified key exists.\n */\n\n }, {\n key: \"has\",\n value: function has(key) {\n if (key === null || _typeof(key) !== 'object') {\n return this._map.has(key);\n } // Test on the _presence_ of the pair, not its value, as even undefined\n // can be a valid member value for a key.\n\n\n return getValuePair(this, key) !== undefined;\n }\n /**\n * Removes the specified element.\n *\n * @param {*} key The key of the element to remove.\n *\n * @return {boolean} Returns true if an element existed and has been\n * removed, or false if the element does not exist.\n */\n\n }, {\n key: \"delete\",\n value: function _delete(key) {\n if (!this.has(key)) {\n return false;\n } // This naive implementation will leave orphaned child trees. A better\n // implementation should traverse and remove orphans.\n\n\n this.set(key, undefined);\n return true;\n }\n /**\n * Executes a provided function once per each key/value pair, in insertion\n * order.\n *\n * @param {Function} callback Function to execute for each element.\n * @param {*} thisArg Value to use as `this` when executing\n * `callback`.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this = this;\n\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this;\n\n this._map.forEach(function (value, key) {\n // Unwrap value from object-like value pair.\n if (key !== null && _typeof(key) === 'object') {\n value = value[1];\n }\n\n callback.call(thisArg, value, key, _this);\n });\n }\n /**\n * Removes all elements.\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this._map = new Map();\n this._arrayTreeMap = new Map();\n this._objectTreeMap = new Map();\n }\n }, {\n key: \"size\",\n get: function get() {\n return this._map.size;\n }\n }]);\n\n return EquivalentKeyMap;\n}();\n\nmodule.exports = EquivalentKeyMap;\n","function combineReducers( reducers ) {\n\tvar keys = Object.keys( reducers ),\n\t\tgetNextState;\n\n\tgetNextState = ( function() {\n\t\tvar fn, i, key;\n\n\t\tfn = 'return {';\n\t\tfor ( i = 0; i < keys.length; i++ ) {\n\t\t\t// Rely on Quoted escaping of JSON.stringify with guarantee that\n\t\t\t// each member of Object.keys is a string.\n\t\t\t//\n\t\t\t// \"If Type(value) is String, then return the result of calling the\n\t\t\t// abstract operation Quote with argument value. [...] The abstract\n\t\t\t// operation Quote(value) wraps a String value in double quotes and\n\t\t\t// escapes characters within it.\"\n\t\t\t//\n\t\t\t// https://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3\n\t\t\tkey = JSON.stringify( keys[ i ] );\n\n\t\t\tfn += key + ':r[' + key + '](s[' + key + '],a),';\n\t\t}\n\t\tfn += '}';\n\n\t\treturn new Function( 'r,s,a', fn );\n\t} )();\n\n\treturn function combinedReducer( state, action ) {\n\t\tvar nextState, i, key;\n\n\t\t// Assumed changed if initial state.\n\t\tif ( state === undefined ) {\n\t\t\treturn getNextState( reducers, {}, action );\n\t\t}\n\n\t\tnextState = getNextState( reducers, state, action );\n\n\t\t// Determine whether state has changed.\n\t\ti = keys.length;\n\t\twhile ( i-- ) {\n\t\t\tkey = keys[ i ];\n\t\t\tif ( state[ key ] !== nextState[ key ] ) {\n\t\t\t\t// Return immediately if a changed value is encountered.\n\t\t\t\treturn nextState;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t};\n}\n\nmodule.exports = combineReducers;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"deprecated\"];","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"reduxRoutine\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"compose\"];","/**\n * Creates a selector function that takes additional curried argument with the\n * registry `select` function. While a regular selector has signature\n * ```js\n * ( state, ...selectorArgs ) => ( result )\n * ```\n * that allows to select data from the store's `state`, a registry selector\n * has signature:\n * ```js\n * ( select ) => ( state, ...selectorArgs ) => ( result )\n * ```\n * that supports also selecting from other registered stores.\n *\n * @example\n * ```js\n * import { store as coreStore } from '@wordpress/core-data';\n * import { store as editorStore } from '@wordpress/editor';\n *\n * const getCurrentPostId = createRegistrySelector( ( select ) => ( state ) => {\n * return select( editorStore ).getCurrentPostId();\n * } );\n *\n * const getPostEdits = createRegistrySelector( ( select ) => ( state ) => {\n * // calling another registry selector just like any other function\n * const postType = getCurrentPostType( state );\n * const postId = getCurrentPostId( state );\n *\t return select( coreStore ).getEntityRecordEdits( 'postType', postType, postId );\n * } );\n * ```\n *\n * Note how the `getCurrentPostId` selector can be called just like any other function,\n * (it works even inside a regular non-registry selector) and we don't need to pass the\n * registry as argument. The registry binding happens automatically when registering the selector\n * with a store.\n *\n * @param {Function} registrySelector Function receiving a registry `select`\n * function and returning a state selector.\n *\n * @return {Function} Registry selector that can be registered with a store.\n */\nexport function createRegistrySelector( registrySelector ) {\n\t// Create a selector function that is bound to the registry referenced by `selector.registry`\n\t// and that has the same API as a regular selector. Binding it in such a way makes it\n\t// possible to call the selector directly from another selector.\n\tconst selector = ( ...args ) =>\n\t\tregistrySelector( selector.registry.select )( ...args );\n\n\t/**\n\t * Flag indicating that the selector is a registry selector that needs the correct registry\n\t * reference to be assigned to `selector.registry` to make it work correctly.\n\t * be mapped as a registry selector.\n\t *\n\t * @type {boolean}\n\t */\n\tselector.isRegistrySelector = true;\n\n\treturn selector;\n}\n\n/**\n * Creates a control function that takes additional curried argument with the `registry` object.\n * While a regular control has signature\n * ```js\n * ( action ) => ( iteratorOrPromise )\n * ```\n * where the control works with the `action` that it's bound to, a registry control has signature:\n * ```js\n * ( registry ) => ( action ) => ( iteratorOrPromise )\n * ```\n * A registry control is typically used to select data or dispatch an action to a registered\n * store.\n *\n * When registering a control created with `createRegistryControl` with a store, the store\n * knows which calling convention to use when executing the control.\n *\n * @param {Function} registryControl Function receiving a registry object and returning a control.\n *\n * @return {Function} Registry control that can be registered with a store.\n */\nexport function createRegistryControl( registryControl ) {\n\tregistryControl.isRegistryControl = true;\n\n\treturn registryControl;\n}\n","/**\n * Internal dependencies\n */\nimport { createRegistryControl } from './factory';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\nconst SELECT = '@@data/SELECT';\nconst RESOLVE_SELECT = '@@data/RESOLVE_SELECT';\nconst DISPATCH = '@@data/DISPATCH';\n\nfunction isObject( object ) {\n\treturn object !== null && typeof object === 'object';\n}\n\n/**\n * Dispatches a control action for triggering a synchronous registry select.\n *\n * Note: This control synchronously returns the current selector value, triggering the\n * resolution, but not waiting for it.\n *\n * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n * @param {string} selectorName The name of the selector.\n * @param {Array} args Arguments for the selector.\n *\n * @example\n * ```js\n * import { controls } from '@wordpress/data';\n *\n * // Action generator using `select`.\n * export function* myAction() {\n * const isEditorSideBarOpened = yield controls.select( 'core/edit-post', 'isEditorSideBarOpened' );\n * // Do stuff with the result from the `select`.\n * }\n * ```\n *\n * @return {Object} The control descriptor.\n */\nfunction select( storeNameOrDescriptor, selectorName, ...args ) {\n\treturn {\n\t\ttype: SELECT,\n\t\tstoreKey: isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor,\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Dispatches a control action for triggering and resolving a registry select.\n *\n * Note: when this control action is handled, it automatically considers\n * selectors that may have a resolver. In such case, it will return a `Promise` that resolves\n * after the selector finishes resolving, with the final result value.\n *\n * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n * @param {string} selectorName The name of the selector\n * @param {Array} args Arguments for the selector.\n *\n * @example\n * ```js\n * import { controls } from '@wordpress/data';\n *\n * // Action generator using resolveSelect\n * export function* myAction() {\n * \tconst isSidebarOpened = yield controls.resolveSelect( 'core/edit-post', 'isEditorSideBarOpened' );\n * \t// do stuff with the result from the select.\n * }\n * ```\n *\n * @return {Object} The control descriptor.\n */\nfunction resolveSelect( storeNameOrDescriptor, selectorName, ...args ) {\n\treturn {\n\t\ttype: RESOLVE_SELECT,\n\t\tstoreKey: isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor,\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Dispatches a control action for triggering a registry dispatch.\n *\n * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n * @param {string} actionName The name of the action to dispatch\n * @param {Array} args Arguments for the dispatch action.\n *\n * @example\n * ```js\n * import { controls } from '@wordpress/data-controls';\n *\n * // Action generator using dispatch\n * export function* myAction() {\n * yield controls.dispatch( 'core/edit-post', 'togglePublishSidebar' );\n * // do some other things.\n * }\n * ```\n *\n * @return {Object} The control descriptor.\n */\nfunction dispatch( storeNameOrDescriptor, actionName, ...args ) {\n\treturn {\n\t\ttype: DISPATCH,\n\t\tstoreKey: isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor,\n\t\tactionName,\n\t\targs,\n\t};\n}\n\nexport const controls = { select, resolveSelect, dispatch };\n\nexport const builtinControls = {\n\t[ SELECT ]: createRegistryControl(\n\t\t( registry ) =>\n\t\t\t( { storeKey, selectorName, args } ) =>\n\t\t\t\tregistry.select( storeKey )[ selectorName ]( ...args )\n\t),\n\t[ RESOLVE_SELECT ]: createRegistryControl(\n\t\t( registry ) =>\n\t\t\t( { storeKey, selectorName, args } ) => {\n\t\t\t\tconst method = registry.select( storeKey )[ selectorName ]\n\t\t\t\t\t.hasResolver\n\t\t\t\t\t? 'resolveSelect'\n\t\t\t\t\t: 'select';\n\t\t\t\treturn registry[ method ]( storeKey )[ selectorName ](\n\t\t\t\t\t...args\n\t\t\t\t);\n\t\t\t}\n\t),\n\t[ DISPATCH ]: createRegistryControl(\n\t\t( registry ) =>\n\t\t\t( { storeKey, actionName, args } ) =>\n\t\t\t\tregistry.dispatch( storeKey )[ actionName ]( ...args )\n\t),\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"privateApis\"];","/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t\t'@wordpress/data'\n\t);\n","/**\n * External dependencies\n */\nimport isPromise from 'is-promise';\n\n/**\n * Simplest possible promise redux middleware.\n *\n * @type {import('redux').Middleware}\n */\nconst promiseMiddleware = () => ( next ) => ( action ) => {\n\tif ( isPromise( action ) ) {\n\t\treturn action.then( ( resolvedAction ) => {\n\t\t\tif ( resolvedAction ) {\n\t\t\t\treturn next( resolvedAction );\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn next( action );\n};\n\nexport default promiseMiddleware;\n","export default function isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n","const coreDataStore = {\n\tname: 'core/data',\n\tinstantiate( registry ) {\n\t\tconst getCoreDataSelector =\n\t\t\t( selectorName ) =>\n\t\t\t( key, ...args ) => {\n\t\t\t\treturn registry.select( key )[ selectorName ]( ...args );\n\t\t\t};\n\n\t\tconst getCoreDataAction =\n\t\t\t( actionName ) =>\n\t\t\t( key, ...args ) => {\n\t\t\t\treturn registry.dispatch( key )[ actionName ]( ...args );\n\t\t\t};\n\n\t\treturn {\n\t\t\tgetSelectors() {\n\t\t\t\treturn Object.fromEntries(\n\t\t\t\t\t[\n\t\t\t\t\t\t'getIsResolving',\n\t\t\t\t\t\t'hasStartedResolution',\n\t\t\t\t\t\t'hasFinishedResolution',\n\t\t\t\t\t\t'isResolving',\n\t\t\t\t\t\t'getCachedResolvers',\n\t\t\t\t\t].map( ( selectorName ) => [\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\tgetCoreDataSelector( selectorName ),\n\t\t\t\t\t] )\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tgetActions() {\n\t\t\t\treturn Object.fromEntries(\n\t\t\t\t\t[\n\t\t\t\t\t\t'startResolution',\n\t\t\t\t\t\t'finishResolution',\n\t\t\t\t\t\t'invalidateResolution',\n\t\t\t\t\t\t'invalidateResolutionForStore',\n\t\t\t\t\t\t'invalidateResolutionForStoreSelector',\n\t\t\t\t\t].map( ( actionName ) => [\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\tgetCoreDataAction( actionName ),\n\t\t\t\t\t] )\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tsubscribe() {\n\t\t\t\t// There's no reasons to trigger any listener when we subscribe to this store\n\t\t\t\t// because there's no state stored in this store that need to retrigger selectors\n\t\t\t\t// if a change happens, the corresponding store where the tracking stated live\n\t\t\t\t// would have already triggered a \"subscribe\" call.\n\t\t\t\treturn () => () => {};\n\t\t\t},\n\t\t};\n\t},\n};\n\nexport default coreDataStore;\n","/**\n * Internal dependencies\n */\nimport coreDataStore from './store';\n\n/** @typedef {import('./registry').WPDataRegistry} WPDataRegistry */\n\n/**\n * Creates a middleware handling resolvers cache invalidation.\n *\n * @param {WPDataRegistry} registry The registry reference for which to create\n * the middleware.\n * @param {string} reducerKey The namespace for which to create the\n * middleware.\n *\n * @return {Function} Middleware function.\n */\nconst createResolversCacheMiddleware =\n\t( registry, reducerKey ) => () => ( next ) => ( action ) => {\n\t\tconst resolvers = registry\n\t\t\t.select( coreDataStore )\n\t\t\t.getCachedResolvers( reducerKey );\n\t\tObject.entries( resolvers ).forEach(\n\t\t\t( [ selectorName, resolversByArgs ] ) => {\n\t\t\t\tconst resolver =\n\t\t\t\t\tregistry.stores?.[ reducerKey ]?.resolvers?.[\n\t\t\t\t\t\tselectorName\n\t\t\t\t\t];\n\t\t\t\tif ( ! resolver || ! resolver.shouldInvalidate ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresolversByArgs.forEach( ( value, args ) => {\n\t\t\t\t\t// resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.\n\t\t\t\t\t// If the value is \"finished\" or \"error\" it means this resolver has finished its resolution which means we need\n\t\t\t\t\t// to invalidate it, if it's true it means it's inflight and the invalidation is not necessary.\n\t\t\t\t\tif (\n\t\t\t\t\t\t( value?.status !== 'finished' &&\n\t\t\t\t\t\t\tvalue?.status !== 'error' ) ||\n\t\t\t\t\t\t! resolver.shouldInvalidate( action, ...args )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trigger cache invalidation\n\t\t\t\t\tregistry\n\t\t\t\t\t\t.dispatch( coreDataStore )\n\t\t\t\t\t\t.invalidateResolution( reducerKey, selectorName, args );\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\t\treturn next( action );\n\t};\n\nexport default createResolversCacheMiddleware;\n","/**\n * External dependencies\n */\nimport type { AnyAction, Reducer } from 'redux';\n\n/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param actionProperty Action property by which to key object.\n * @return Higher-order reducer.\n */\nexport const onSubKey =\n\t< TState extends unknown, TAction extends AnyAction >(\n\t\tactionProperty: string\n\t) =>\n\t(\n\t\treducer: Reducer< TState, TAction >\n\t): Reducer< Record< string, TState >, TAction > =>\n\t( state: Record< string, TState > = {}, action ) => {\n\t\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t\t// where reducer is scoped by action shape.\n\t\tconst key = action[ actionProperty ];\n\t\tif ( key === undefined ) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t\t// reducer which returns undefined on a key which is not yet tracked.\n\t\tconst nextKeyState = reducer( state[ key ], action );\n\t\tif ( nextKeyState === state[ key ] ) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ key ]: nextKeyState,\n\t\t};\n\t};\n\n/**\n * Normalize selector argument array by defaulting `undefined` value to an empty array\n * and removing trailing `undefined` values.\n *\n * @param args Selector argument array\n * @return Normalized state key array\n */\nexport function selectorArgsToStateKey( args: unknown[] | null | undefined ) {\n\tif ( args === undefined || args === null ) {\n\t\treturn [];\n\t}\n\n\tconst len = args.length;\n\tlet idx = len;\n\twhile ( idx > 0 && args[ idx - 1 ] === undefined ) {\n\t\tidx--;\n\t}\n\treturn idx === len ? args : args.slice( 0, idx );\n}\n","/**\n * External dependencies\n */\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport type { Reducer } from 'redux';\n\n/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey, onSubKey } from './utils';\n\ntype Action =\n\t| ReturnType< typeof import('./actions').startResolution >\n\t| ReturnType< typeof import('./actions').finishResolution >\n\t| ReturnType< typeof import('./actions').failResolution >\n\t| ReturnType< typeof import('./actions').startResolutions >\n\t| ReturnType< typeof import('./actions').finishResolutions >\n\t| ReturnType< typeof import('./actions').failResolutions >\n\t| ReturnType< typeof import('./actions').invalidateResolution >\n\t| ReturnType< typeof import('./actions').invalidateResolutionForStore >\n\t| ReturnType<\n\t\t\ttypeof import('./actions').invalidateResolutionForStoreSelector\n\t >;\n\ntype StateKey = unknown[] | unknown;\nexport type StateValue =\n\t| { status: 'resolving' | 'finished' }\n\t| { status: 'error'; error: Error | unknown };\n\nexport type Status = StateValue[ 'status' ];\nexport type State = EquivalentKeyMap< StateKey, StateValue >;\n\n/**\n * Reducer function returning next state for selector resolution of\n * subkeys, object form:\n *\n * selectorName -> EquivalentKeyMap<Array,boolean>\n */\nconst subKeysIsResolved: Reducer< Record< string, State >, Action > = onSubKey<\n\tState,\n\tAction\n>( 'selectorName' )( ( state = new EquivalentKeyMap(), action: Action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'START_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'resolving',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'finished',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'error',\n\t\t\t\terror: action.error,\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'START_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'resolving',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'finished',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\taction.args.forEach( ( resolutionArgs, idx ) => {\n\t\t\t\tconst resolutionState: StateValue = {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\terror: undefined,\n\t\t\t\t};\n\n\t\t\t\tconst error = action.errors[ idx ];\n\t\t\t\tif ( error ) {\n\t\t\t\t\tresolutionState.error = error;\n\t\t\t\t}\n\n\t\t\t\tnextState.set(\n\t\t\t\t\tselectorArgsToStateKey( resolutionArgs as unknown[] ),\n\t\t\t\t\tresolutionState\n\t\t\t\t);\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'INVALIDATE_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.delete( selectorArgsToStateKey( action.args ) );\n\t\t\treturn nextState;\n\t\t}\n\t}\n\treturn state;\n} );\n\n/**\n * Reducer function returning next state for selector resolution, object form:\n *\n * selectorName -> EquivalentKeyMap<Array, boolean>\n *\n * @param state Current state.\n * @param action Dispatched action.\n *\n * @return Next state.\n */\nconst isResolved = ( state: Record< string, State > = {}, action: Action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE':\n\t\t\treturn {};\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR': {\n\t\t\tif ( action.selectorName in state ) {\n\t\t\t\tconst {\n\t\t\t\t\t[ action.selectorName ]: removedSelector,\n\t\t\t\t\t...restState\n\t\t\t\t} = state;\n\t\t\t\treturn restState;\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase 'START_RESOLUTION':\n\t\tcase 'FINISH_RESOLUTION':\n\t\tcase 'FAIL_RESOLUTION':\n\t\tcase 'START_RESOLUTIONS':\n\t\tcase 'FINISH_RESOLUTIONS':\n\t\tcase 'FAIL_RESOLUTIONS':\n\t\tcase 'INVALIDATE_RESOLUTION':\n\t\t\treturn subKeysIsResolved( state, action );\n\t}\n\treturn state;\n};\n\nexport default isResolved;\n","/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey } from './utils';\n\n/** @typedef {Record<string, import('./reducer').State>} State */\n/** @typedef {import('./reducer').StateValue} StateValue */\n/** @typedef {import('./reducer').Status} Status */\n\n/**\n * Returns the raw resolution state value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {StateValue|undefined} isResolving value.\n */\nexport function getResolutionState( state, selectorName, args ) {\n\tconst map = state[ selectorName ];\n\tif ( ! map ) {\n\t\treturn;\n\t}\n\n\treturn map.get( selectorArgsToStateKey( args ) );\n}\n\n/**\n * Returns the raw `isResolving` value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean | undefined} isResolving value.\n */\nexport function getIsResolving( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\n\treturn resolutionState && resolutionState.status === 'resolving';\n}\n\n/**\n * Returns true if resolution has already been triggered for a given\n * selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has been triggered.\n */\nexport function hasStartedResolution( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args ) !== undefined;\n}\n\n/**\n * Returns true if resolution has completed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has completed.\n */\nexport function hasFinishedResolution( state, selectorName, args ) {\n\tconst status = getResolutionState( state, selectorName, args )?.status;\n\treturn status === 'finished' || status === 'error';\n}\n\n/**\n * Returns true if resolution has failed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Has resolution failed\n */\nexport function hasResolutionFailed( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args )?.status === 'error';\n}\n\n/**\n * Returns the resolution error for a given selector name, and arguments set.\n * Note it may be of an Error type, but may also be null, undefined, or anything else\n * that can be `throw`-n.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {Error|unknown} Last resolution error\n */\nexport function getResolutionError( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\treturn resolutionState?.status === 'error' ? resolutionState.error : null;\n}\n\n/**\n * Returns true if resolution has been triggered but has not yet completed for\n * a given selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution is in progress.\n */\nexport function isResolving( state, selectorName, args ) {\n\treturn (\n\t\tgetResolutionState( state, selectorName, args )?.status === 'resolving'\n\t);\n}\n\n/**\n * Returns the list of the cached resolvers.\n *\n * @param {State} state Data state.\n *\n * @return {State} Resolvers mapped by args and selectorName.\n */\nexport function getCachedResolvers( state ) {\n\treturn state;\n}\n\n/**\n * Whether the store has any currently resolving selectors.\n *\n * @param {State} state Data state.\n *\n * @return {boolean} True if one or more selectors are resolving, false otherwise.\n */\nexport function hasResolvingSelectors( state ) {\n\treturn Object.values( state ).some( ( selectorState ) =>\n\t\t/**\n\t\t * This uses the internal `_map` property of `EquivalentKeyMap` for\n\t\t * optimization purposes, since the `EquivalentKeyMap` implementation\n\t\t * does not support a `.values()` implementation.\n\t\t *\n\t\t * @see https://github.com/aduth/equivalent-key-map\n\t\t */\n\t\tArray.from( selectorState._map.values() ).some(\n\t\t\t( resolution ) => resolution[ 1 ]?.status === 'resolving'\n\t\t)\n\t);\n}\n","/**\n * Returns an action object used in signalling that selector resolution has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'START_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function startResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'FINISH_RESOLUTION', selectorName: string, args: unknown[] }} Action object.\n */\nexport function finishResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that selector resolution has\n * failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n * @param {Error|unknown} error The error that caused the failure.\n *\n * @return {{ type: 'FAIL_RESOLUTION', selectorName: string, args: unknown[], error: Error|unknown }} Action object.\n */\nexport function failResolution( selectorName, args, error ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t\terror,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * started.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'START_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function startResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'START_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[][]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n *\n * @return {{ type: 'FINISH_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.\n */\nexport function finishResolutions( selectorName, args ) {\n\treturn {\n\t\ttype: 'FINISH_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that a batch of selector resolutions has\n * completed and at least one of them has failed.\n *\n * @param {string} selectorName Name of selector for which resolver triggered.\n * @param {unknown[]} args Array of arguments to associate for uniqueness, each item\n * is associated to a resolution.\n * @param {(Error|unknown)[]} errors Array of errors to associate for uniqueness, each item\n * is associated to a resolution.\n * @return {{ type: 'FAIL_RESOLUTIONS', selectorName: string, args: unknown[], errors: Array<Error|unknown> }} Action object.\n */\nexport function failResolutions( selectorName, args, errors ) {\n\treturn {\n\t\ttype: 'FAIL_RESOLUTIONS',\n\t\tselectorName,\n\t\targs,\n\t\terrors,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that we should invalidate the resolution cache.\n *\n * @param {string} selectorName Name of selector for which resolver should be invalidated.\n * @param {unknown[]} args Arguments to associate for uniqueness.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION', selectorName: string, args: any[] }} Action object.\n */\nexport function invalidateResolution( selectorName, args ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION',\n\t\tselectorName,\n\t\targs,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution\n * should be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.\n */\nexport function invalidateResolutionForStore() {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE',\n\t};\n}\n\n/**\n * Returns an action object used in signalling that the resolution cache for a\n * given selectorName should be invalidated.\n *\n * @param {string} selectorName Name of selector for which all resolvers should\n * be invalidated.\n *\n * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.\n */\nexport function invalidateResolutionForStoreSelector( selectorName ) {\n\treturn {\n\t\ttype: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',\n\t\tselectorName,\n\t};\n}\n","/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport combineReducers from 'turbo-combine-reducers';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { builtinControls } from '../controls';\nimport { lock } from '../lock-unlock';\nimport promise from '../promise-middleware';\nimport createResolversCacheMiddleware from '../resolvers-cache-middleware';\nimport createThunkMiddleware from './thunk-middleware';\nimport metadataReducer from './metadata/reducer';\nimport * as metadataSelectors from './metadata/selectors';\nimport * as metadataActions from './metadata/actions';\n\n/** @typedef {import('../types').DataRegistry} DataRegistry */\n/** @typedef {import('../types').ListenerFunction} ListenerFunction */\n/**\n * @typedef {import('../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../types').AnyConfig} C\n */\n/**\n * @typedef {import('../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n\nconst trimUndefinedValues = ( array ) => {\n\tconst result = [ ...array ];\n\tfor ( let i = result.length - 1; i >= 0; i-- ) {\n\t\tif ( result[ i ] === undefined ) {\n\t\t\tresult.splice( i, 1 );\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Creates a new object with the same keys, but with `callback()` called as\n * a transformer function on each of the values.\n *\n * @param {Object} obj The object to transform.\n * @param {Function} callback The function to transform each object value.\n * @return {Array} Transformed object.\n */\nconst mapValues = ( obj, callback ) =>\n\tObject.fromEntries(\n\t\tObject.entries( obj ?? {} ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tcallback( value, key ),\n\t\t] )\n\t);\n\n// Convert Map objects to plain objects\nconst mapToObject = ( key, state ) => {\n\tif ( state instanceof Map ) {\n\t\treturn Object.fromEntries( state );\n\t}\n\n\treturn state;\n};\n\n/**\n * Create a cache to track whether resolvers started running or not.\n *\n * @return {Object} Resolvers Cache.\n */\nfunction createResolversCache() {\n\tconst cache = {};\n\treturn {\n\t\tisRunning( selectorName, args ) {\n\t\t\treturn (\n\t\t\t\tcache[ selectorName ] &&\n\t\t\t\tcache[ selectorName ].get( trimUndefinedValues( args ) )\n\t\t\t);\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( trimUndefinedValues( args ) );\n\t\t\t}\n\t\t},\n\n\t\tmarkAsRunning( selectorName, args ) {\n\t\t\tif ( ! cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ] = new EquivalentKeyMap();\n\t\t\t}\n\n\t\t\tcache[ selectorName ].set( trimUndefinedValues( args ), true );\n\t\t},\n\t};\n}\n\nfunction createBindingCache( bind ) {\n\tconst cache = new WeakMap();\n\n\treturn {\n\t\tget( item, itemName ) {\n\t\t\tlet boundItem = cache.get( item );\n\t\t\tif ( ! boundItem ) {\n\t\t\t\tboundItem = bind( item, itemName );\n\t\t\t\tcache.set( item, boundItem );\n\t\t\t}\n\t\t\treturn boundItem;\n\t\t},\n\t};\n}\n\n/**\n * Creates a data store descriptor for the provided Redux store configuration containing\n * properties describing reducer, actions, selectors, controls and resolvers.\n *\n * @example\n * ```js\n * import { createReduxStore } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * ```\n *\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n * @param {string} key Unique namespace identifier.\n * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\tconst privateActions = {};\n\tconst privateSelectors = {};\n\tconst privateRegistrationFunctions = {\n\t\tprivateActions,\n\t\tregisterPrivateActions: ( actions ) => {\n\t\t\tObject.assign( privateActions, actions );\n\t\t},\n\t\tprivateSelectors,\n\t\tregisterPrivateSelectors: ( selectors ) => {\n\t\t\tObject.assign( privateSelectors, selectors );\n\t\t},\n\t};\n\tconst storeDescriptor = {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\t/**\n\t\t\t * Stores listener functions registered with `subscribe()`.\n\t\t\t *\n\t\t\t * When functions register to listen to store changes with\n\t\t\t * `subscribe()` they get added here. Although Redux offers\n\t\t\t * its own `subscribe()` function directly, by wrapping the\n\t\t\t * subscription in this store instance it's possible to\n\t\t\t * optimize checking if the state has changed before calling\n\t\t\t * each listener.\n\t\t\t *\n\t\t\t * @type {Set<ListenerFunction>}\n\t\t\t */\n\t\t\tconst listeners = new Set();\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn thunkActions;\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn thunkSelectors;\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst store = instantiateReduxStore(\n\t\t\t\tkey,\n\t\t\t\toptions,\n\t\t\t\tregistry,\n\t\t\t\tthunkArgs\n\t\t\t);\n\t\t\t// Expose the private registration functions on the store\n\t\t\t// so they can be copied to a sub registry in registry.js.\n\t\t\tlock( store, privateRegistrationFunctions );\n\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tfunction bindAction( action ) {\n\t\t\t\treturn ( ...args ) =>\n\t\t\t\t\tPromise.resolve( store.dispatch( action( ...args ) ) );\n\t\t\t}\n\n\t\t\tconst actions = {\n\t\t\t\t...mapValues( metadataActions, bindAction ),\n\t\t\t\t...mapValues( options.actions, bindAction ),\n\t\t\t};\n\n\t\t\tconst boundPrivateActions = createBindingCache( bindAction );\n\t\t\tconst allActions = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateAction = privateActions[ prop ];\n\t\t\t\t\treturn privateAction\n\t\t\t\t\t\t? boundPrivateActions.get( privateAction, prop )\n\t\t\t\t\t\t: actions[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkActions = new Proxy( allActions, {\n\t\t\t\tapply: ( target, thisArg, [ action ] ) =>\n\t\t\t\t\tstore.dispatch( action ),\n\t\t\t} );\n\n\t\t\tlock( actions, allActions );\n\n\t\t\tconst resolvers = options.resolvers\n\t\t\t\t? mapResolvers( options.resolvers )\n\t\t\t\t: {};\n\n\t\t\tfunction bindSelector( selector, selectorName ) {\n\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\tselector.registry = registry;\n\t\t\t\t}\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\treturn selector( state.root, ...args );\n\t\t\t\t};\n\n\t\t\t\tconst resolver = resolvers[ selectorName ];\n\t\t\t\tif ( ! resolver ) {\n\t\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\t\treturn boundSelector;\n\t\t\t\t}\n\n\t\t\t\treturn mapSelectorWithResolver(\n\t\t\t\t\tboundSelector,\n\t\t\t\t\tselectorName,\n\t\t\t\t\tresolver,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction bindMetadataSelector( selector ) {\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\treturn selector( state.metadata, ...args );\n\t\t\t\t};\n\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\treturn boundSelector;\n\t\t\t}\n\n\t\t\tconst selectors = {\n\t\t\t\t...mapValues( metadataSelectors, bindMetadataSelector ),\n\t\t\t\t...mapValues( options.selectors, bindSelector ),\n\t\t\t};\n\n\t\t\tconst boundPrivateSelectors = createBindingCache( bindSelector );\n\n\t\t\t// Pre-bind the private selectors that have been registered by the time of\n\t\t\t// instantiation, so that registry selectors are bound to the registry.\n\t\t\tfor ( const [ selectorName, selector ] of Object.entries(\n\t\t\t\tprivateSelectors\n\t\t\t) ) {\n\t\t\t\tboundPrivateSelectors.get( selector, selectorName );\n\t\t\t}\n\n\t\t\tconst allSelectors = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateSelector = privateSelectors[ prop ];\n\t\t\t\t\treturn privateSelector\n\t\t\t\t\t\t? boundPrivateSelectors.get( privateSelector, prop )\n\t\t\t\t\t\t: selectors[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkSelectors = new Proxy( allSelectors, {\n\t\t\t\tapply: ( target, thisArg, [ selector ] ) =>\n\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t} );\n\n\t\t\tlock( selectors, allSelectors );\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\t\t\tconst suspendSelectors = mapSuspendSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\n\t\t\tconst getSuspendSelectors = () => suspendSelectors;\n\n\t\t\t// We have some modules monkey-patching the store object\n\t\t\t// It's wrong to do so but until we refactor all of our effects to controls\n\t\t\t// We need to keep the same \"store\" instance here.\n\t\t\tstore.__unstableOriginalGetState = store.getState;\n\t\t\tstore.getState = () => store.__unstableOriginalGetState().root;\n\n\t\t\t// Customize subscribe behavior to call listeners only on effective change,\n\t\t\t// not on every dispatch.\n\t\t\tconst subscribe =\n\t\t\t\tstore &&\n\t\t\t\t( ( listener ) => {\n\t\t\t\t\tlisteners.add( listener );\n\n\t\t\t\t\treturn () => listeners.delete( listener );\n\t\t\t\t} );\n\n\t\t\tlet lastState = store.__unstableOriginalGetState();\n\t\t\tstore.subscribe( () => {\n\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\tlastState = state;\n\n\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\tfor ( const listener of listeners ) {\n\t\t\t\t\t\tlistener();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// This can be simplified to just { subscribe, getSelectors, getActions }\n\t\t\t// Once we remove the use function.\n\t\t\treturn {\n\t\t\t\treducer,\n\t\t\t\tstore,\n\t\t\t\tactions,\n\t\t\t\tselectors,\n\t\t\t\tresolvers,\n\t\t\t\tgetSelectors,\n\t\t\t\tgetResolveSelectors,\n\t\t\t\tgetSuspendSelectors,\n\t\t\t\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\n\n\t// Expose the private registration functions on the store\n\t// descriptor. That's a natural choice since that's where the\n\t// public actions and selectors are stored .\n\tlock( storeDescriptor, privateRegistrationFunctions );\n\n\treturn storeDescriptor;\n}\n\n/**\n * Creates a redux store for a namespace.\n *\n * @param {string} key Unique namespace identifier.\n * @param {Object} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n * @param {DataRegistry} registry Registry reference.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @return {Object} Newly created redux store.\n */\nfunction instantiateReduxStore( key, options, registry, thunkArgs ) {\n\tconst controls = {\n\t\t...options.controls,\n\t\t...builtinControls,\n\t};\n\n\tconst normalizedControls = mapValues( controls, ( control ) =>\n\t\tcontrol.isRegistryControl ? control( registry ) : control\n\t);\n\n\tconst middlewares = [\n\t\tcreateResolversCacheMiddleware( registry, key ),\n\t\tpromise,\n\t\tcreateReduxRoutineMiddleware( normalizedControls ),\n\t\tcreateThunkMiddleware( thunkArgs ),\n\t];\n\n\tconst enhancers = [ applyMiddleware( ...middlewares ) ];\n\tif (\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.__REDUX_DEVTOOLS_EXTENSION__\n\t) {\n\t\tenhancers.push(\n\t\t\twindow.__REDUX_DEVTOOLS_EXTENSION__( {\n\t\t\t\tname: key,\n\t\t\t\tinstanceId: key,\n\t\t\t\tserialize: {\n\t\t\t\t\treplacer: mapToObject,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\t}\n\n\tconst { reducer, initialState } = options;\n\tconst enhancedReducer = combineReducers( {\n\t\tmetadata: metadataReducer,\n\t\troot: reducer,\n\t} );\n\n\treturn createStore(\n\t\tenhancedReducer,\n\t\t{ root: initialState },\n\t\tcompose( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\tconst {\n\t\tgetIsResolving,\n\t\thasStartedResolution,\n\t\thasFinishedResolution,\n\t\thasResolutionFailed,\n\t\tisResolving,\n\t\tgetCachedResolvers,\n\t\tgetResolutionState,\n\t\tgetResolutionError,\n\t\thasResolvingSelectors,\n\t\t...storeSelectors\n\t} = selectors;\n\n\treturn mapValues( storeSelectors, ( selector, selectorName ) => {\n\t\t// If the selector doesn't have a resolver, just convert the return value\n\t\t// (including exceptions) to a Promise, no additional extra behavior is needed.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn async ( ...args ) => selector.apply( null, args );\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\n\t\t\t\tconst finalize = ( result ) => {\n\t\t\t\t\tconst hasFailed = selectors.hasResolutionFailed(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasFailed ) {\n\t\t\t\t\t\tconst error = selectors.getResolutionError(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject( error );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve( result );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst getResult = () => selector.apply( null, args );\n\t\t\t\t// Trigger the selector (to trigger the resolver)\n\t\t\t\tconst result = getResult();\n\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\treturn finalize( result );\n\t\t\t\t}\n\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\tfinalize( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Maps selectors to functions that throw a suspense promise if not yet resolved.\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their suspense functions.\n */\nfunction mapSuspendSelectors( selectors, store ) {\n\treturn mapValues( selectors, ( selector, selectorName ) => {\n\t\t// Selector without a resolver doesn't have any extra suspense behavior.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\tconst result = selector.apply( null, args );\n\n\t\t\tif ( selectors.hasFinishedResolution( selectorName, args ) ) {\n\t\t\t\tif ( selectors.hasResolutionFailed( selectorName, args ) ) {\n\t\t\t\t\tthrow selectors.getResolutionError( selectorName, args );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tthrow new Promise( ( resolve ) => {\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Convert resolvers to a normalized form, an object with `fulfill` method and\n * optional methods like `isFulfilled`.\n *\n * @param {Object} resolvers Resolver to convert\n */\nfunction mapResolvers( resolvers ) {\n\treturn mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // Copy the enumerable properties of the resolver function.\n\t\t\tfulfill: resolver, // Add the fulfill method.\n\t\t};\n\t} );\n}\n\n/**\n * Returns a selector with a matched resolver.\n * Resolvers are side effects invoked once per argument set of a given selector call,\n * used in ensuring that the data needs for the selector are satisfied.\n *\n * @param {Object} selector The selector function to be bound.\n * @param {string} selectorName The selector name.\n * @param {Object} resolver Resolver to call.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapSelectorWithResolver(\n\tselector,\n\tselectorName,\n\tresolver,\n\tstore,\n\tresolversCache\n) {\n\tfunction fulfillSelector( args ) {\n\t\tconst state = store.getState();\n\n\t\tif (\n\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\tif (\n\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\tmetadata,\n\t\t\t\tselectorName,\n\t\t\t\targs\n\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\tsetTimeout( async () => {\n\t\t\tresolversCache.clear( selectorName, args );\n\t\t\tstore.dispatch(\n\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst action = resolver.fulfill( ...args );\n\t\t\t\tif ( action ) {\n\t\t\t\t\tawait store.dispatch( action );\n\t\t\t\t}\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.failResolution( selectorName, args, error )\n\t\t\t\t);\n\t\t\t}\n\t\t}, 0 );\n\t}\n\n\tconst selectorResolver = ( ...args ) => {\n\t\tfulfillSelector( args );\n\t\treturn selector( ...args );\n\t};\n\tselectorResolver.hasResolver = true;\n\treturn selectorResolver;\n}\n","export default function createThunkMiddleware( args ) {\n\treturn () => ( next ) => ( action ) => {\n\t\tif ( typeof action === 'function' ) {\n\t\t\treturn action( args );\n\t\t}\n\n\t\treturn next( action );\n\t};\n}\n","/**\n * Create an event emitter.\n *\n * @return {import(\"../types\").DataEmitter} Emitter.\n */\nexport function createEmitter() {\n\tlet isPaused = false;\n\tlet isPending = false;\n\tconst listeners = new Set();\n\tconst notifyListeners = () =>\n\t\t// We use Array.from to clone the listeners Set\n\t\t// This ensures that we don't run a listener\n\t\t// that was added as a response to another listener.\n\t\tArray.from( listeners ).forEach( ( listener ) => listener() );\n\n\treturn {\n\t\tget isPaused() {\n\t\t\treturn isPaused;\n\t\t},\n\n\t\tsubscribe( listener ) {\n\t\t\tlisteners.add( listener );\n\t\t\treturn () => listeners.delete( listener );\n\t\t},\n\n\t\tpause() {\n\t\t\tisPaused = true;\n\t\t},\n\n\t\tresume() {\n\t\t\tisPaused = false;\n\t\t\tif ( isPending ) {\n\t\t\t\tisPending = false;\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t},\n\n\t\temit() {\n\t\t\tif ( isPaused ) {\n\t\t\t\tisPending = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnotifyListeners();\n\t\t},\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\nimport { lock, unlock } from './lock-unlock';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\nfunction getStoreName( storeNameOrDescriptor ) {\n\treturn typeof storeNameOrDescriptor === 'string'\n\t\t? storeNameOrDescriptor\n\t\t: storeNameOrDescriptor.name;\n}\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tlet listeningStores = null;\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data, either in all stores in registry, or\n\t * in one specific store.\n\t *\n\t * @param {Function} listener Listener function.\n\t * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener, storeNameOrDescriptor ) => {\n\t\t// subscribe to all stores\n\t\tif ( ! storeNameOrDescriptor ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\t// subscribe to one store\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.subscribe( listener );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to global `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn emitter.subscribe( listener );\n\t\t}\n\n\t\treturn parent.subscribe( listener, storeNameOrDescriptor );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent?.select( storeName );\n\t}\n\n\tfunction __unstableMarkListeningStores( callback, ref ) {\n\t\tlisteningStores = new Set();\n\t\ttry {\n\t\t\treturn callback.call( this );\n\t\t} finally {\n\t\t\tref.current = Array.from( listeningStores );\n\t\t\tlisteningStores = null;\n\t\t}\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they return\n\t * promises that resolve to their eventual values, after any resolvers have ran.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Given a store descriptor, returns an object containing the store's selectors pre-bound to\n\t * state so that you only need to supply additional arguments, and modified so that they throw\n\t * promises in case the selector is not resolved yet.\n\t *\n\t * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n\t * convention of passing the store name is\n\t * also supported.\n\t *\n\t * @return {Object} Object containing the store's suspense-wrapped selectors.\n\t */\n\tfunction suspendSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tlisteningStores?.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSuspendSelectors();\n\t\t}\n\n\t\treturn parent && parent.suspendSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = getStoreName( storeNameOrDescriptor );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\tfunction withPlugins( attributes ) {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries( attributes ).map( ( [ key, attribute ] ) => {\n\t\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\t\treturn [ key, attribute ];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tkey,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} )\n\t\t);\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Function} createStore Function that creates a store object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, createStore ) {\n\t\tif ( stores[ name ] ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Store \"' + name + '\" is already registered.' );\n\t\t\treturn stores[ name ];\n\t\t}\n\n\t\tconst store = createStore();\n\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\n\t\t// Copy private actions and selectors from the parent store.\n\t\tif ( parent ) {\n\t\t\ttry {\n\t\t\t\tunlock( store.store ).registerPrivateActions(\n\t\t\t\t\tunlock( parent ).privateActionsOf( name )\n\t\t\t\t);\n\t\t\t\tunlock( store.store ).registerPrivateSelectors(\n\t\t\t\t\tunlock( parent ).privateSelectorsOf( name )\n\t\t\t\t);\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws if store.store was not locked.\n\t\t\t\t// The error indicates there's nothing to do here so let's\n\t\t\t\t// ignore it.\n\t\t\t}\n\t\t}\n\n\t\treturn store;\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, () =>\n\t\t\tstore.instantiate( registry )\n\t\t);\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, () => store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = registerStoreInstance( storeName, () =>\n\t\t\tcreateReduxStore( storeName, options ).instantiate( registry )\n\t\t);\n\n\t\treturn store.store;\n\t}\n\n\tfunction batch( callback ) {\n\t\t// If we're already batching, just call the callback.\n\t\tif ( emitter.isPaused ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\n\t\temitter.pause();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tObject.values( stores ).forEach( ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tsuspendSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__unstableMarkListeningStores,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\tconst registryWithPlugins = withPlugins( registry );\n\tlock( registryWithPlugins, {\n\t\tprivateActionsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateActions;\n\t\t\t} catch ( e ) {\n\t\t\t\t// unlock() throws an error the store was not locked – this means\n\t\t\t\t// there no private actions are available\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t\tprivateSelectorsOf: ( name ) => {\n\t\t\ttry {\n\t\t\t\treturn unlock( stores[ name ].store ).privateSelectors;\n\t\t\t} catch ( e ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t} );\n\treturn registryWithPlugins;\n}\n","/**\n * Internal dependencies\n */\nimport { createRegistry } from './registry';\n\nexport default createRegistry();\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","let objectStorage;\n\nconst storage = {\n\tgetItem( key ) {\n\t\tif ( ! objectStorage || ! objectStorage[ key ] ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn objectStorage[ key ];\n\t},\n\tsetItem( key, value ) {\n\t\tif ( ! objectStorage ) {\n\t\t\tstorage.clear();\n\t\t}\n\n\t\tobjectStorage[ key ] = String( value );\n\t},\n\tclear() {\n\t\tobjectStorage = Object.create( null );\n\t},\n};\n\nexport default storage;\n","/**\n * Internal dependencies\n */\nimport objectStorage from './object';\n\nlet storage;\n\ntry {\n\t// Private Browsing in Safari 10 and earlier will throw an error when\n\t// attempting to set into localStorage. The test here is intentional in\n\t// causing a thrown error as condition for using fallback object storage.\n\tstorage = window.localStorage;\n\tstorage.setItem( '__wpDataTestLocalStorage', '' );\n\tstorage.removeItem( '__wpDataTestLocalStorage' );\n} catch ( error ) {\n\tstorage = objectStorage;\n}\n\nexport default storage;\n","/**\n * External dependencies\n */\nimport { isPlainObject } from 'is-plain-object';\nimport deepmerge from 'deepmerge';\n\n/**\n * Internal dependencies\n */\nimport defaultStorage from './storage/default';\nimport { combineReducers } from '../../';\n\n/** @typedef {import('../../registry').WPDataRegistry} WPDataRegistry */\n\n/** @typedef {import('../../registry').WPDataPlugin} WPDataPlugin */\n\n/**\n * @typedef {Object} WPDataPersistencePluginOptions Persistence plugin options.\n *\n * @property {Storage} storage Persistent storage implementation. This must\n * at least implement `getItem` and `setItem` of\n * the Web Storage API.\n * @property {string} storageKey Key on which to set in persistent storage.\n *\n */\n\n/**\n * Default plugin storage.\n *\n * @type {Storage}\n */\nconst DEFAULT_STORAGE = defaultStorage;\n\n/**\n * Default plugin storage key.\n *\n * @type {string}\n */\nconst DEFAULT_STORAGE_KEY = 'WP_DATA';\n\n/**\n * Higher-order reducer which invokes the original reducer only if state is\n * inequal from that of the action's `nextState` property, otherwise returning\n * the original state reference.\n *\n * @param {Function} reducer Original reducer.\n *\n * @return {Function} Enhanced reducer.\n */\nexport const withLazySameState = ( reducer ) => ( state, action ) => {\n\tif ( action.nextState === state ) {\n\t\treturn state;\n\t}\n\n\treturn reducer( state, action );\n};\n\n/**\n * Creates a persistence interface, exposing getter and setter methods (`get`\n * and `set` respectively).\n *\n * @param {WPDataPersistencePluginOptions} options Plugin options.\n *\n * @return {Object} Persistence interface.\n */\nexport function createPersistenceInterface( options ) {\n\tconst { storage = DEFAULT_STORAGE, storageKey = DEFAULT_STORAGE_KEY } =\n\t\toptions;\n\n\tlet data;\n\n\t/**\n\t * Returns the persisted data as an object, defaulting to an empty object.\n\t *\n\t * @return {Object} Persisted data.\n\t */\n\tfunction getData() {\n\t\tif ( data === undefined ) {\n\t\t\t// If unset, getItem is expected to return null. Fall back to\n\t\t\t// empty object.\n\t\t\tconst persisted = storage.getItem( storageKey );\n\t\t\tif ( persisted === null ) {\n\t\t\t\tdata = {};\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse( persisted );\n\t\t\t\t} catch ( error ) {\n\t\t\t\t\t// Similarly, should any error be thrown during parse of\n\t\t\t\t\t// the string (malformed JSON), fall back to empty object.\n\t\t\t\t\tdata = {};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Merges an updated reducer state into the persisted data.\n\t *\n\t * @param {string} key Key to update.\n\t * @param {*} value Updated value.\n\t */\n\tfunction setData( key, value ) {\n\t\tdata = { ...data, [ key ]: value };\n\t\tstorage.setItem( storageKey, JSON.stringify( data ) );\n\t}\n\n\treturn {\n\t\tget: getData,\n\t\tset: setData,\n\t};\n}\n\n/**\n * Data plugin to persist store state into a single storage key.\n *\n * @param {WPDataRegistry} registry Data registry.\n * @param {?WPDataPersistencePluginOptions} pluginOptions Plugin options.\n *\n * @return {WPDataPlugin} Data plugin.\n */\nfunction persistencePlugin( registry, pluginOptions ) {\n\tconst persistence = createPersistenceInterface( pluginOptions );\n\n\t/**\n\t * Creates an enhanced store dispatch function, triggering the state of the\n\t * given store name to be persisted when changed.\n\t *\n\t * @param {Function} getState Function which returns current state.\n\t * @param {string} storeName Store name.\n\t * @param {?Array<string>} keys Optional subset of keys to save.\n\t *\n\t * @return {Function} Enhanced dispatch function.\n\t */\n\tfunction createPersistOnChange( getState, storeName, keys ) {\n\t\tlet getPersistedState;\n\t\tif ( Array.isArray( keys ) ) {\n\t\t\t// Given keys, the persisted state should by produced as an object\n\t\t\t// of the subset of keys. This implementation uses combineReducers\n\t\t\t// to leverage its behavior of returning the same object when none\n\t\t\t// of the property values changes. This allows a strict reference\n\t\t\t// equality to bypass a persistence set on an unchanging state.\n\t\t\tconst reducers = keys.reduce(\n\t\t\t\t( accumulator, key ) =>\n\t\t\t\t\tObject.assign( accumulator, {\n\t\t\t\t\t\t[ key ]: ( state, action ) => action.nextState[ key ],\n\t\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tgetPersistedState = withLazySameState(\n\t\t\t\tcombineReducers( reducers )\n\t\t\t);\n\t\t} else {\n\t\t\tgetPersistedState = ( state, action ) => action.nextState;\n\t\t}\n\n\t\tlet lastState = getPersistedState( undefined, {\n\t\t\tnextState: getState(),\n\t\t} );\n\n\t\treturn () => {\n\t\t\tconst state = getPersistedState( lastState, {\n\t\t\t\tnextState: getState(),\n\t\t\t} );\n\t\t\tif ( state !== lastState ) {\n\t\t\t\tpersistence.set( storeName, state );\n\t\t\t\tlastState = state;\n\t\t\t}\n\t\t};\n\t}\n\n\treturn {\n\t\tregisterStore( storeName, options ) {\n\t\t\tif ( ! options.persist ) {\n\t\t\t\treturn registry.registerStore( storeName, options );\n\t\t\t}\n\n\t\t\t// Load from persistence to use as initial state.\n\t\t\tconst persistedState = persistence.get()[ storeName ];\n\t\t\tif ( persistedState !== undefined ) {\n\t\t\t\tlet initialState = options.reducer( options.initialState, {\n\t\t\t\t\ttype: '@@WP/PERSISTENCE_RESTORE',\n\t\t\t\t} );\n\n\t\t\t\tif (\n\t\t\t\t\tisPlainObject( initialState ) &&\n\t\t\t\t\tisPlainObject( persistedState )\n\t\t\t\t) {\n\t\t\t\t\t// If state is an object, ensure that:\n\t\t\t\t\t// - Other keys are left intact when persisting only a\n\t\t\t\t\t// subset of keys.\n\t\t\t\t\t// - New keys in what would otherwise be used as initial\n\t\t\t\t\t// state are deeply merged as base for persisted value.\n\t\t\t\t\tinitialState = deepmerge( initialState, persistedState, {\n\t\t\t\t\t\tisMergeableObject: isPlainObject,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\t// If there is a mismatch in object-likeness of default\n\t\t\t\t\t// initial or persisted state, defer to persisted value.\n\t\t\t\t\tinitialState = persistedState;\n\t\t\t\t}\n\n\t\t\t\toptions = {\n\t\t\t\t\t...options,\n\t\t\t\t\tinitialState,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst store = registry.registerStore( storeName, options );\n\n\t\t\tstore.subscribe(\n\t\t\t\tcreatePersistOnChange(\n\t\t\t\t\tstore.getState,\n\t\t\t\t\tstoreName,\n\t\t\t\t\toptions.persist\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn store;\n\t\t},\n\t};\n}\n\npersistencePlugin.__unstableMigrate = () => {};\n\nexport default persistencePlugin;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"priorityQueue\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"isShallowEqual\"];","/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport defaultRegistry from '../../default-registry';\n\nexport const Context = createContext( defaultRegistry );\n\nconst { Consumer, Provider } = Context;\n\n/**\n * A custom react Context consumer exposing the provided `registry` to\n * children components. Used along with the RegistryProvider.\n *\n * You can read more about the react context api here:\n * https://reactjs.org/docs/context.html#contextprovider\n *\n * @example\n * ```js\n * import {\n * RegistryProvider,\n * RegistryConsumer,\n * createRegistry\n * } from '@wordpress/data';\n *\n * const registry = createRegistry( {} );\n *\n * const App = ( { props } ) => {\n * return <RegistryProvider value={ registry }>\n * <div>Hello There</div>\n * <RegistryConsumer>\n * { ( registry ) => (\n * <ComponentUsingRegistry\n * \t\t{ ...props }\n * \t registry={ registry }\n * ) }\n * </RegistryConsumer>\n * </RegistryProvider>\n * }\n * ```\n */\nexport const RegistryConsumer = Consumer;\n\n/**\n * A custom Context provider for exposing the provided `registry` to children\n * components via a consumer.\n *\n * See <a name=\"#RegistryConsumer\">RegistryConsumer</a> documentation for\n * example.\n */\nexport default Provider;\n","/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Context } from './context';\n\n/**\n * A custom react hook exposing the registry context for use.\n *\n * This exposes the `registry` value provided via the\n * <a href=\"#RegistryProvider\">Registry Provider</a> to a component implementing\n * this hook.\n *\n * It acts similarly to the `useContext` react hook.\n *\n * Note: Generally speaking, `useRegistry` is a low level hook that in most cases\n * won't be needed for implementation. Most interactions with the `@wordpress/data`\n * API can be performed via the `useSelect` hook, or the `withSelect` and\n * `withDispatch` higher order components.\n *\n * @example\n * ```js\n * import {\n * RegistryProvider,\n * createRegistry,\n * useRegistry,\n * } from '@wordpress/data';\n *\n * const registry = createRegistry( {} );\n *\n * const SomeChildUsingRegistry = ( props ) => {\n * const registry = useRegistry();\n * // ...logic implementing the registry in other react hooks.\n * };\n *\n *\n * const ParentProvidingRegistry = ( props ) => {\n * return <RegistryProvider value={ registry }>\n * <SomeChildUsingRegistry { ...props } />\n * </RegistryProvider>\n * };\n * ```\n *\n * @return {Function} A custom react hook exposing the registry context value.\n */\nexport default function useRegistry() {\n\treturn useContext( Context );\n}\n","/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\nexport const Context = createContext( false );\n\nconst { Consumer, Provider } = Context;\n\nexport const AsyncModeConsumer = Consumer;\n\n/**\n * Context Provider Component used to switch the data module component rerendering\n * between Sync and Async modes.\n *\n * @example\n *\n * ```js\n * import { useSelect, AsyncModeProvider } from '@wordpress/data';\n * import { store as blockEditorStore } from '@wordpress/block-editor';\n *\n * function BlockCount() {\n * const count = useSelect( ( select ) => {\n * return select( blockEditorStore ).getBlockCount()\n * }, [] );\n *\n * return count;\n * }\n *\n * function App() {\n * return (\n * <AsyncModeProvider value={ true }>\n * <BlockCount />\n * </AsyncModeProvider>\n * );\n * }\n * ```\n *\n * In this example, the BlockCount component is rerendered asynchronously.\n * It means if a more critical task is being performed (like typing in an input),\n * the rerendering is delayed until the browser becomes IDLE.\n * It is possible to nest multiple levels of AsyncModeProvider to fine-tune the rendering behavior.\n *\n * @param {boolean} props.value Enable Async Mode.\n * @return {WPComponent} The component to be rendered.\n */\nexport default Provider;\n","/**\n * WordPress dependencies\n */\nimport { createQueue } from '@wordpress/priority-queue';\nimport {\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tuseSyncExternalStore,\n\tuseDebugValue,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\nimport useAsyncMode from '../async-mode-provider/use-async-mode';\n\nconst renderQueue = createQueue();\n\n/**\n * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../../types').AnyConfig} C\n */\n/**\n * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n/** @typedef {import('../../types').MapSelect} MapSelect */\n/**\n * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn\n * @template {MapSelect|StoreDescriptor<any>} T\n */\n\nfunction Store( registry, suspense ) {\n\tconst select = suspense ? registry.suspendSelect : registry.select;\n\tconst queueContext = {};\n\tlet lastMapSelect;\n\tlet lastMapResult;\n\tlet lastMapResultValid = false;\n\tlet lastIsAsync;\n\tlet subscriber;\n\n\tconst createSubscriber = ( stores ) => {\n\t\t// The set of stores the `subscribe` function is supposed to subscribe to. Here it is\n\t\t// initialized, and then the `updateStores` function can add new stores to it.\n\t\tconst activeStores = [ ...stores ];\n\n\t\t// The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could\n\t\t// be called multiple times to establish multiple subscriptions. That's why we need to\n\t\t// keep a set of active subscriptions;\n\t\tconst activeSubscriptions = new Set();\n\n\t\tfunction subscribe( listener ) {\n\t\t\t// Invalidate the value right after subscription was created. React will\n\t\t\t// call `getValue` after subscribing, to detect store updates that happened\n\t\t\t// in the interval between the `getValue` call during render and creating\n\t\t\t// the subscription, which is slightly delayed. We need to ensure that this\n\t\t\t// second `getValue` call will compute a fresh value.\n\t\t\tlastMapResultValid = false;\n\n\t\t\tconst onStoreChange = () => {\n\t\t\t\t// Invalidate the value on store update, so that a fresh value is computed.\n\t\t\t\tlastMapResultValid = false;\n\t\t\t\tlistener();\n\t\t\t};\n\n\t\t\tconst onChange = () => {\n\t\t\t\tif ( lastIsAsync ) {\n\t\t\t\t\trenderQueue.add( queueContext, onStoreChange );\n\t\t\t\t} else {\n\t\t\t\t\tonStoreChange();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst unsubs = [];\n\t\t\tfunction subscribeStore( storeName ) {\n\t\t\t\tunsubs.push( registry.subscribe( onChange, storeName ) );\n\t\t\t}\n\n\t\t\tfor ( const storeName of activeStores ) {\n\t\t\t\tsubscribeStore( storeName );\n\t\t\t}\n\n\t\t\tactiveSubscriptions.add( subscribeStore );\n\n\t\t\treturn () => {\n\t\t\t\tactiveSubscriptions.delete( subscribeStore );\n\n\t\t\t\tfor ( const unsub of unsubs.values() ) {\n\t\t\t\t\t// The return value of the subscribe function could be undefined if the store is a custom generic store.\n\t\t\t\t\tunsub?.();\n\t\t\t\t}\n\t\t\t\t// Cancel existing store updates that were already scheduled.\n\t\t\t\trenderQueue.cancel( queueContext );\n\t\t\t};\n\t\t}\n\n\t\t// Check if `newStores` contains some stores we're not subscribed to yet, and add them.\n\t\tfunction updateStores( newStores ) {\n\t\t\tfor ( const newStore of newStores ) {\n\t\t\t\tif ( activeStores.includes( newStore ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// New `subscribe` calls will subscribe to `newStore`, too.\n\t\t\t\tactiveStores.push( newStore );\n\n\t\t\t\t// Add `newStore` to existing subscriptions.\n\t\t\t\tfor ( const subscription of activeSubscriptions ) {\n\t\t\t\t\tsubscription( newStore );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { subscribe, updateStores };\n\t};\n\n\treturn ( mapSelect, isAsync ) => {\n\t\tfunction updateValue() {\n\t\t\t// If the last value is valid, and the `mapSelect` callback hasn't changed,\n\t\t\t// then we can safely return the cached value. The value can change only on\n\t\t\t// store update, and in that case value will be invalidated by the listener.\n\t\t\tif ( lastMapResultValid && mapSelect === lastMapSelect ) {\n\t\t\t\treturn lastMapResult;\n\t\t\t}\n\n\t\t\tconst listeningStores = { current: null };\n\t\t\tconst mapResult = registry.__unstableMarkListeningStores(\n\t\t\t\t() => mapSelect( select, registry ),\n\t\t\t\tlisteningStores\n\t\t\t);\n\n\t\t\tif ( ! subscriber ) {\n\t\t\t\tsubscriber = createSubscriber( listeningStores.current );\n\t\t\t} else {\n\t\t\t\tsubscriber.updateStores( listeningStores.current );\n\t\t\t}\n\n\t\t\t// If the new value is shallow-equal to the old one, keep the old one so\n\t\t\t// that we don't trigger unwanted updates that do a `===` check.\n\t\t\tif ( ! isShallowEqual( lastMapResult, mapResult ) ) {\n\t\t\t\tlastMapResult = mapResult;\n\t\t\t}\n\t\t\tlastMapSelect = mapSelect;\n\t\t\tlastMapResultValid = true;\n\t\t}\n\n\t\tfunction getValue() {\n\t\t\t// Update the value in case it's been invalidated or `mapSelect` has changed.\n\t\t\tupdateValue();\n\t\t\treturn lastMapResult;\n\t\t}\n\n\t\t// When transitioning from async to sync mode, cancel existing store updates\n\t\t// that have been scheduled, and invalidate the value so that it's freshly\n\t\t// computed. It might have been changed by the update we just cancelled.\n\t\tif ( lastIsAsync && ! isAsync ) {\n\t\t\tlastMapResultValid = false;\n\t\t\trenderQueue.cancel( queueContext );\n\t\t}\n\n\t\tupdateValue();\n\n\t\tlastIsAsync = isAsync;\n\n\t\t// Return a pair of functions that can be passed to `useSyncExternalStore`.\n\t\treturn { subscribe: subscriber.subscribe, getValue };\n\t};\n}\n\nfunction useStaticSelect( storeName ) {\n\treturn useRegistry().select( storeName );\n}\n\nfunction useMappingSelect( suspense, mapSelect, deps ) {\n\tconst registry = useRegistry();\n\tconst isAsync = useAsyncMode();\n\tconst store = useMemo( () => Store( registry, suspense ), [ registry ] );\n\tconst selector = useCallback( mapSelect, deps );\n\tconst { subscribe, getValue } = store( selector, isAsync );\n\tconst result = useSyncExternalStore( subscribe, getValue, getValue );\n\tuseDebugValue( result );\n\treturn result;\n}\n\n/**\n * Custom react hook for retrieving props from registered selectors.\n *\n * In general, this custom React hook follows the\n * [rules of hooks](https://reactjs.org/docs/hooks-rules.html).\n *\n * @template {MapSelect | StoreDescriptor<any>} T\n * @param {T} mapSelect Function called on every state change. The returned value is\n * exposed to the component implementing this hook. The function\n * receives the `registry.select` method on the first argument\n * and the `registry` on the second argument.\n * When a store key is passed, all selectors for the store will be\n * returned. This is only meant for usage of these selectors in event\n * callbacks, not for data needed to create the element tree.\n * @param {unknown[]} deps If provided, this memoizes the mapSelect so the same `mapSelect` is\n * invoked on every state change unless the dependencies change.\n *\n * @example\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function HammerPriceDisplay( { currency } ) {\n * const price = useSelect( ( select ) => {\n * return select( myCustomStore ).getPrice( 'hammer', currency );\n * }, [ currency ] );\n * return new Intl.NumberFormat( 'en-US', {\n * style: 'currency',\n * currency,\n * } ).format( price );\n * }\n *\n * // Rendered in the application:\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n *\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, the price will be retrieved from the store state using the\n * `mapSelect` callback on `useSelect`. If the currency prop changes then\n * any price in the state for that currency is retrieved. If the currency prop\n * doesn't change and other props are passed in that do change, the price will\n * not change because the dependency is just the currency.\n *\n * When data is only used in an event callback, the data should not be retrieved\n * on render, so it may be useful to get the selectors function instead.\n *\n * **Don't use `useSelect` this way when calling the selectors in the render\n * function because your component won't re-render on a data change.**\n *\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Paste( { children } ) {\n * const { getSettings } = useSelect( myCustomStore );\n * function onPaste() {\n * // Do something with the settings.\n * const settings = getSettings();\n * }\n * return <div onPaste={ onPaste }>{ children }</div>;\n * }\n * ```\n * @return {UseSelectReturn<T>} A custom react hook.\n */\nexport default function useSelect( mapSelect, deps ) {\n\t// On initial call, on mount, determine the mode of this `useSelect` call\n\t// and then never allow it to change on subsequent updates.\n\tconst staticSelectMode = typeof mapSelect !== 'function';\n\tconst staticSelectModeRef = useRef( staticSelectMode );\n\n\tif ( staticSelectMode !== staticSelectModeRef.current ) {\n\t\tconst prevMode = staticSelectModeRef.current ? 'static' : 'mapping';\n\t\tconst nextMode = staticSelectMode ? 'static' : 'mapping';\n\t\tthrow new Error(\n\t\t\t`Switching useSelect from ${ prevMode } to ${ nextMode } is not allowed`\n\t\t);\n\t}\n\n\t/* eslint-disable react-hooks/rules-of-hooks */\n\t// `staticSelectMode` is not allowed to change during the hook instance's,\n\t// lifetime, so the rules of hooks are not really violated.\n\treturn staticSelectMode\n\t\t? useStaticSelect( mapSelect )\n\t\t: useMappingSelect( false, mapSelect, deps );\n\t/* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/**\n * A variant of the `useSelect` hook that has the same API, but will throw a\n * suspense Promise if any of the called selectors is in an unresolved state.\n *\n * @param {Function} mapSelect Function called on every state change. The\n * returned value is exposed to the component\n * using this hook. The function receives the\n * `registry.suspendSelect` method as the first\n * argument and the `registry` as the second one.\n * @param {Array} deps A dependency array used to memoize the `mapSelect`\n * so that the same `mapSelect` is invoked on every\n * state change unless the dependencies change.\n *\n * @return {Object} Data object returned by the `mapSelect` function.\n */\nexport function useSuspenseSelect( mapSelect, deps ) {\n\treturn useMappingSelect( true, mapSelect, deps );\n}\n","/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Context } from './context';\n\nexport default function useAsyncMode() {\n\treturn useContext( Context );\n}\n","/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, pure } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useSelect from '../use-select';\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * Higher-order component used to inject state-derived props using registered\n * selectors.\n *\n * @param {Function} mapSelectToProps Function called on every state change,\n * expected to return object of props to\n * merge with the component's own props.\n *\n * @example\n * ```js\n * import { withSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function PriceDisplay( { price, currency } ) {\n * \treturn new Intl.NumberFormat( 'en-US', {\n * \t\tstyle: 'currency',\n * \t\tcurrency,\n * \t} ).format( price );\n * }\n *\n * const HammerPriceDisplay = withSelect( ( select, ownProps ) => {\n * \tconst { getPrice } = select( myCustomStore );\n * \tconst { currency } = ownProps;\n *\n * \treturn {\n * \t\tprice: getPrice( 'hammer', currency ),\n * \t};\n * } )( PriceDisplay );\n *\n * // Rendered in the application:\n * //\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, it will pass the price into the underlying `PriceDisplay`\n * component and update automatically if the price of a hammer ever changes in\n * the store.\n *\n * @return {WPComponent} Enhanced component with merged state data props.\n */\nconst withSelect = ( mapSelectToProps ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) =>\n\t\t\tpure( ( ownProps ) => {\n\t\t\t\tconst mapSelect = ( select, registry ) =>\n\t\t\t\t\tmapSelectToProps( select, ownProps, registry );\n\t\t\t\tconst mergeProps = useSelect( mapSelect );\n\t\t\t\treturn <WrappedComponent { ...ownProps } { ...mergeProps } />;\n\t\t\t} ),\n\t\t'withSelect'\n\t);\n\nexport default withSelect;\n","/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useDispatchWithMap } from '../use-dispatch';\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * Higher-order component used to add dispatch props using registered action\n * creators.\n *\n * @param {Function} mapDispatchToProps A function of returning an object of\n * prop names where value is a\n * dispatch-bound action creator, or a\n * function to be called with the\n * component's props and returning an\n * action creator.\n *\n * @example\n * ```jsx\n * function Button( { onClick, children } ) {\n * return <button type=\"button\" onClick={ onClick }>{ children }</button>;\n * }\n *\n * import { withDispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * const SaleButton = withDispatch( ( dispatch, ownProps ) => {\n * const { startSale } = dispatch( myCustomStore );\n * const { discountPercent } = ownProps;\n *\n * return {\n * onClick() {\n * startSale( discountPercent );\n * },\n * };\n * } )( Button );\n *\n * // Rendered in the application:\n * //\n * // <SaleButton discountPercent=\"20\">Start Sale!</SaleButton>\n * ```\n *\n * @example\n * In the majority of cases, it will be sufficient to use only two first params\n * passed to `mapDispatchToProps` as illustrated in the previous example.\n * However, there might be some very advanced use cases where using the\n * `registry` object might be used as a tool to optimize the performance of\n * your component. Using `select` function from the registry might be useful\n * when you need to fetch some dynamic data from the store at the time when the\n * event is fired, but at the same time, you never use it to render your\n * component. In such scenario, you can avoid using the `withSelect` higher\n * order component to compute such prop, which might lead to unnecessary\n * re-renders of your component caused by its frequent value change.\n * Keep in mind, that `mapDispatchToProps` must return an object with functions\n * only.\n *\n * ```jsx\n * function Button( { onClick, children } ) {\n * return <button type=\"button\" onClick={ onClick }>{ children }</button>;\n * }\n *\n * import { withDispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * const SaleButton = withDispatch( ( dispatch, ownProps, { select } ) => {\n * // Stock number changes frequently.\n * const { getStockNumber } = select( myCustomStore );\n * const { startSale } = dispatch( myCustomStore );\n * return {\n * onClick() {\n * const discountPercent = getStockNumber() > 50 ? 10 : 20;\n * startSale( discountPercent );\n * },\n * };\n * } )( Button );\n *\n * // Rendered in the application:\n * //\n * // <SaleButton>Start Sale!</SaleButton>\n * ```\n *\n * _Note:_ It is important that the `mapDispatchToProps` function always\n * returns an object with the same keys. For example, it should not contain\n * conditions under which a different value would be returned.\n *\n * @return {WPComponent} Enhanced component with merged dispatcher props.\n */\nconst withDispatch = ( mapDispatchToProps ) =>\n\tcreateHigherOrderComponent(\n\t\t( WrappedComponent ) => ( ownProps ) => {\n\t\t\tconst mapDispatch = ( dispatch, registry ) =>\n\t\t\t\tmapDispatchToProps( dispatch, ownProps, registry );\n\t\t\tconst dispatchProps = useDispatchWithMap( mapDispatch, [] );\n\t\t\treturn <WrappedComponent { ...ownProps } { ...dispatchProps } />;\n\t\t},\n\t\t'withDispatch'\n\t);\n\nexport default withDispatch;\n","/**\n * WordPress dependencies\n */\nimport { useMemo, useRef } from '@wordpress/element';\nimport { useIsomorphicLayoutEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\n\n/**\n * Custom react hook for returning aggregate dispatch actions using the provided\n * dispatchMap.\n *\n * Currently this is an internal api only and is implemented by `withDispatch`\n *\n * @param {Function} dispatchMap Receives the `registry.dispatch` function as\n * the first argument and the `registry` object\n * as the second argument. Should return an\n * object mapping props to functions.\n * @param {Array} deps An array of dependencies for the hook.\n * @return {Object} An object mapping props to functions created by the passed\n * in dispatchMap.\n */\nconst useDispatchWithMap = ( dispatchMap, deps ) => {\n\tconst registry = useRegistry();\n\tconst currentDispatchMap = useRef( dispatchMap );\n\n\tuseIsomorphicLayoutEffect( () => {\n\t\tcurrentDispatchMap.current = dispatchMap;\n\t} );\n\n\treturn useMemo( () => {\n\t\tconst currentDispatchProps = currentDispatchMap.current(\n\t\t\tregistry.dispatch,\n\t\t\tregistry\n\t\t);\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries( currentDispatchProps ).map(\n\t\t\t\t( [ propName, dispatcher ] ) => {\n\t\t\t\t\tif ( typeof dispatcher !== 'function' ) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`Property ${ propName } returned from dispatchMap in useDispatchWithMap must be a function.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tpropName,\n\t\t\t\t\t\t( ...args ) =>\n\t\t\t\t\t\t\tcurrentDispatchMap\n\t\t\t\t\t\t\t\t.current( registry.dispatch, registry )\n\t\t\t\t\t\t\t\t[ propName ]( ...args ),\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t}, [ registry, ...deps ] );\n};\n\nexport default useDispatchWithMap;\n","/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { RegistryConsumer } from '../registry-provider';\n\n/**\n * Higher-order component which renders the original component with the current\n * registry context passed as its `registry` prop.\n *\n * @param {WPComponent} OriginalComponent Original component.\n *\n * @return {WPComponent} Enhanced component.\n */\nconst withRegistry = createHigherOrderComponent(\n\t( OriginalComponent ) => ( props ) =>\n\t\t(\n\t\t\t<RegistryConsumer>\n\t\t\t\t{ ( registry ) => (\n\t\t\t\t\t<OriginalComponent { ...props } registry={ registry } />\n\t\t\t\t) }\n\t\t\t</RegistryConsumer>\n\t\t),\n\t'withRegistry'\n);\n\nexport default withRegistry;\n","/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\n\n/**\n * @typedef {import('../../types').StoreDescriptor<StoreConfig>} StoreDescriptor\n * @template {import('../../types').AnyConfig} StoreConfig\n */\n/**\n * @typedef {import('../../types').UseDispatchReturn<StoreNameOrDescriptor>} UseDispatchReturn\n * @template StoreNameOrDescriptor\n */\n\n/**\n * A custom react hook returning the current registry dispatch actions creators.\n *\n * Note: The component using this hook must be within the context of a\n * RegistryProvider.\n *\n * @template {undefined | string | StoreDescriptor<any>} StoreNameOrDescriptor\n * @param {StoreNameOrDescriptor} [storeNameOrDescriptor] Optionally provide the name of the\n * store or its descriptor from which to\n * retrieve action creators. If not\n * provided, the registry.dispatch\n * function is returned instead.\n *\n * @example\n * This illustrates a pattern where you may need to retrieve dynamic data from\n * the server via the `useSelect` hook to use in combination with the dispatch\n * action.\n *\n * ```jsx\n * import { useDispatch, useSelect } from '@wordpress/data';\n * import { useCallback } from '@wordpress/element';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Button( { onClick, children } ) {\n * return <button type=\"button\" onClick={ onClick }>{ children }</button>\n * }\n *\n * const SaleButton = ( { children } ) => {\n * const { stockNumber } = useSelect(\n * ( select ) => select( myCustomStore ).getStockNumber(),\n * []\n * );\n * const { startSale } = useDispatch( myCustomStore );\n * const onClick = useCallback( () => {\n * const discountPercent = stockNumber > 50 ? 10: 20;\n * startSale( discountPercent );\n * }, [ stockNumber ] );\n * return <Button onClick={ onClick }>{ children }</Button>\n * }\n *\n * // Rendered somewhere in the application:\n * //\n * // <SaleButton>Start Sale!</SaleButton>\n * ```\n * @return {UseDispatchReturn<StoreNameOrDescriptor>} A custom react hook.\n */\nconst useDispatch = ( storeNameOrDescriptor ) => {\n\tconst { dispatch } = useRegistry();\n\treturn storeNameOrDescriptor === void 0\n\t\t? dispatch\n\t\t: dispatch( storeNameOrDescriptor );\n};\n\nexport default useDispatch;\n","/**\n * Internal dependencies\n */\nimport type {\n\tActionCreatorsOf,\n\tAnyConfig,\n\tConfigOf,\n\tStoreDescriptor,\n} from './types';\nimport defaultRegistry from './default-registry';\n\n/**\n * Given a store descriptor, returns an object of the store's action creators.\n * Calling an action creator will cause it to be dispatched, updating the state value accordingly.\n *\n * Note: Action creators returned by the dispatch will return a promise when\n * they are called.\n *\n * @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing\n * the store name is also supported.\n *\n * @example\n * ```js\n * import { dispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );\n * ```\n * @return Object containing the action creators.\n */\nexport function dispatch< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: string | T\n): ActionCreatorsOf< ConfigOf< T > > {\n\treturn defaultRegistry.dispatch( storeNameOrDescriptor );\n}\n","/**\n * Internal dependencies\n */\nimport type { AnyConfig, CurriedSelectorsOf, StoreDescriptor } from './types';\nimport defaultRegistry from './default-registry';\n\n/**\n * Given a store descriptor, returns an object of the store's selectors.\n * The selector functions are been pre-bound to pass the current state automatically.\n * As a consumer, you need only pass arguments of the selector, if applicable.\n *\n *\n * @param storeNameOrDescriptor The store descriptor. The legacy calling convention\n * of passing the store name is also supported.\n *\n * @example\n * ```js\n * import { select } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * select( myCustomStore ).getPrice( 'hammer' );\n * ```\n *\n * @return Object containing the store's selectors.\n */\nexport function select< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: string | T\n): CurriedSelectorsOf< T > {\n\treturn defaultRegistry.select( storeNameOrDescriptor );\n}\n","/**\n * External dependencies\n */\nimport turboCombineReducers from 'turbo-combine-reducers';\n\n/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\nexport { default as withSelect } from './components/with-select';\nexport { default as withDispatch } from './components/with-dispatch';\nexport { default as withRegistry } from './components/with-registry';\nexport {\n\tRegistryProvider,\n\tRegistryConsumer,\n\tuseRegistry,\n} from './components/registry-provider';\nexport {\n\tdefault as useSelect,\n\tuseSuspenseSelect,\n} from './components/use-select';\nexport { useDispatch } from './components/use-dispatch';\nexport { AsyncModeProvider } from './components/async-mode-provider';\nexport { createRegistry } from './registry';\nexport { createRegistrySelector, createRegistryControl } from './factory';\nexport { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n *\n * @type {Object}\n */\nexport { plugins };\n\n/**\n * The combineReducers helper function turns an object whose values are different\n * reducing functions into a single reducing function you can pass to registerReducer.\n *\n * @type {import('./types').combineReducers}\n * @param {Object} reducers An object whose values correspond to different reducing\n * functions that need to be combined into one.\n *\n * @example\n * ```js\n * import { combineReducers, createReduxStore, register } from '@wordpress/data';\n *\n * const prices = ( state = {}, action ) => {\n * \treturn action.type === 'SET_PRICE' ?\n * \t\t{\n * \t\t\t...state,\n * \t\t\t[ action.item ]: action.price,\n * \t\t} :\n * \t\tstate;\n * };\n *\n * const discountPercent = ( state = 0, action ) => {\n * \treturn action.type === 'START_SALE' ?\n * \t\taction.discountPercent :\n * \t\tstate;\n * };\n *\n * const store = createReduxStore( 'my-shop', {\n * \treducer: combineReducers( {\n * \t\tprices,\n * \t\tdiscountPercent,\n * \t} ),\n * } );\n * register( store );\n * ```\n *\n * @return {Function} A reducer that invokes every reducer inside the reducers\n * object, and constructs a state object with the same shape.\n */\nexport const combineReducers = turboCombineReducers;\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors pre-bound to state\n * so that you only need to supply additional arguments, and modified so that they return promises\n * that resolve to their eventual values, after any resolvers have ran.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @example\n * ```js\n * import { resolveSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * resolveSelect( myCustomStore ).getPrice( 'hammer' ).then(console.log)\n * ```\n *\n * @return {Object} Object containing the store's promise-wrapped selectors.\n */\nexport const resolveSelect = defaultRegistry.resolveSelect;\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors pre-bound to state\n * so that you only need to supply additional arguments, and modified so that they throw promises\n * in case the selector is not resolved yet.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @return {Object} Object containing the store's suspense-wrapped selectors.\n */\nexport const suspendSelect = defaultRegistry.suspendSelect;\n\n/**\n * Given a listener function, the function will be called any time the state value\n * of one of the registered stores has changed. If you specify the optional\n * `storeNameOrDescriptor` parameter, the listener function will be called only\n * on updates on that one specific registered store.\n *\n * This function returns an `unsubscribe` function used to stop the subscription.\n *\n * @param {Function} listener Callback function.\n * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n *\n * @example\n * ```js\n * import { subscribe } from '@wordpress/data';\n *\n * const unsubscribe = subscribe( () => {\n * \t// You could use this opportunity to test whether the derived result of a\n * \t// selector has subsequently changed as the result of a state update.\n * } );\n *\n * // Later, if necessary...\n * unsubscribe();\n * ```\n */\nexport const subscribe = defaultRegistry.subscribe;\n\n/**\n * Registers a generic store instance.\n *\n * @deprecated Use `register( storeDescriptor )` instead.\n *\n * @param {string} name Store registry name.\n * @param {Object} store Store instance (`{ getSelectors, getActions, subscribe }`).\n */\nexport const registerGenericStore = defaultRegistry.registerGenericStore;\n\n/**\n * Registers a standard `@wordpress/data` store.\n *\n * @deprecated Use `register` instead.\n *\n * @param {string} storeName Unique namespace identifier for the store.\n * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n *\n * @return {Object} Registered store object.\n */\nexport const registerStore = defaultRegistry.registerStore;\n\n/**\n * Extends a registry to inherit functionality provided by a given plugin. A\n * plugin is an object with properties aligning to that of a registry, merged\n * to extend the default registry behavior.\n *\n * @param {Object} plugin Plugin object.\n */\nexport const use = defaultRegistry.use;\n\n/**\n * Registers a standard `@wordpress/data` store descriptor.\n *\n * @example\n * ```js\n * import { createReduxStore, register } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * register( store );\n * ```\n *\n * @param {StoreDescriptor} store Store descriptor.\n */\nexport const register = defaultRegistry.register;\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","deepmerge_1","module","exports","_typeof","obj","iterator","constructor","_defineProperties","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","getValuePair","instance","_map","_arrayTreeMap","_objectTreeMap","has","get","properties","sort","undefined","propertyValue","valuePair","delete","set","EquivalentKeyMap","iterable","Constructor","TypeError","_classCallCheck","this","clear","iterablePairs","push","protoProps","previousValuePair","callback","_this","thisArg","arguments","Map","size","reducers","getNextState","fn","JSON","stringify","Function","state","action","nextState","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","prop","r","toStringTag","window","_defineProperty","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","$$observable","observable","randomString","Math","random","substring","split","join","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","slice","getState","subscribe","listener","isSubscribed","index","indexOf","splice","dispatch","proto","getPrototypeOf","isPlainObject","type","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","unsubscribe","compose","_len","funcs","_key","arg","b","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","middleware","createRegistrySelector","registrySelector","selector","args","registry","select","isRegistrySelector","createRegistryControl","registryControl","isRegistryControl","SELECT","RESOLVE_SELECT","DISPATCH","isObject","controls","storeNameOrDescriptor","selectorName","storeKey","name","resolveSelect","actionName","builtinControls","method","hasResolver","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","then","resolvedAction","instantiate","getCoreDataSelector","getCoreDataAction","getSelectors","fromEntries","getActions","reducerKey","resolvers","coreDataStore","getCachedResolvers","entries","resolversByArgs","resolver","stores","shouldInvalidate","status","invalidateResolution","selectorArgsToStateKey","len","idx","subKeysIsResolved","nextKeyState","error","resolutionArgs","resolutionState","errors","removedSelector","restState","getResolutionState","getIsResolving","hasStartedResolution","hasFinishedResolution","hasResolutionFailed","getResolutionError","isResolving","hasResolvingSelectors","values","some","selectorState","from","resolution","startResolution","finishResolution","failResolution","startResolutions","finishResolutions","failResolutions","invalidateResolutionForStore","invalidateResolutionForStoreSelector","trimUndefinedValues","result","mapValues","mapToObject","createBindingCache","bind","cache","WeakMap","item","itemName","boundItem","createReduxStore","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","Set","thunkArgs","normalizedControls","control","enhancers","createResolversCacheMiddleware","promise","createReduxRoutineMiddleware","__REDUX_DEVTOOLS_EXTENSION__","instanceId","serialize","replacer","initialState","combineReducers","metadata","metadataReducer","root","instantiateReduxStore","thunkActions","thunkSelectors","getResolveSelectors","resolversCache","isRunning","markAsRunning","createResolversCache","bindAction","Promise","resolve","metadataActions","boundPrivateActions","allActions","Proxy","privateAction","fulfill","mapResolvers","bindSelector","boundSelector","__unstableOriginalGetState","selectorResolver","isFulfilled","metadataSelectors","setTimeout","async","fulfillSelector","mapSelectorWithResolver","boundPrivateSelectors","allSelectors","privateSelector","resolveSelectors","storeSelectors","reject","hasFinished","finalize","getResult","mapResolveSelectors","suspendSelectors","mapSuspendSelectors","add","lastState","hasChanged","getSuspendSelectors","createEmitter","isPaused","isPending","notifyListeners","pause","resume","emit","getStoreName","createRegistry","storeConfigs","parent","emitter","listeningStores","globalListener","registerStoreInstance","console","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","privateActionsOf","privateSelectorsOf","e","batch","namespaces","storeName","suspendSelect","use","plugin","register","registerGenericStore","deprecated","since","alternative","registerStore","__unstableMarkListeningStores","ref","current","config","registryWithPlugins","attributes","attribute","ctor","prot","objectStorage","storage","getItem","setItem","String","create","localStorage","removeItem","DEFAULT_STORAGE","DEFAULT_STORAGE_KEY","persistencePlugin","pluginOptions","persistence","storageKey","data","persisted","parse","createPersistenceInterface","persist","persistedState","getPersistedState","accumulator","createPersistOnChange","__unstableMigrate","Context","createContext","defaultRegistry","Consumer","Provider","RegistryConsumer","useRegistry","useContext","renderQueue","createQueue","useMappingSelect","suspense","mapSelect","deps","isAsync","useMemo","queueContext","lastMapSelect","lastMapResult","lastIsAsync","subscriber","lastMapResultValid","updateValue","mapResult","updateStores","activeStores","activeSubscriptions","onStoreChange","onChange","unsubs","subscribeStore","unsub","cancel","newStores","newStore","includes","subscription","createSubscriber","isShallowEqual","getValue","Store","useCallback","useSyncExternalStore","useDebugValue","useSelect","staticSelectMode","staticSelectModeRef","useRef","prevMode","useSuspenseSelect","mapSelectToProps","createHigherOrderComponent","WrappedComponent","pure","ownProps","mergeProps","mapDispatchToProps","dispatchProps","dispatchMap","currentDispatchMap","useIsomorphicLayoutEffect","currentDispatchProps","propName","dispatcher","warn","useDispatchWithMap","OriginalComponent","turboCombineReducers"],"sourceRoot":""}