[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/ -> data.js (source)

   1  /******/ (() => { // webpackBootstrap
   2  /******/     "use strict";
   3  /******/     var __webpack_modules__ = ({
   4  
   5  /***/ 66:
   6  /***/ ((module) => {
   7  
   8  
   9  
  10  var isMergeableObject = function isMergeableObject(value) {
  11      return isNonNullObject(value)
  12          && !isSpecial(value)
  13  };
  14  
  15  function isNonNullObject(value) {
  16      return !!value && typeof value === 'object'
  17  }
  18  
  19  function isSpecial(value) {
  20      var stringValue = Object.prototype.toString.call(value);
  21  
  22      return stringValue === '[object RegExp]'
  23          || stringValue === '[object Date]'
  24          || isReactElement(value)
  25  }
  26  
  27  // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
  28  var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
  29  var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
  30  
  31  function isReactElement(value) {
  32      return value.$$typeof === REACT_ELEMENT_TYPE
  33  }
  34  
  35  function emptyTarget(val) {
  36      return Array.isArray(val) ? [] : {}
  37  }
  38  
  39  function cloneUnlessOtherwiseSpecified(value, options) {
  40      return (options.clone !== false && options.isMergeableObject(value))
  41          ? deepmerge(emptyTarget(value), value, options)
  42          : value
  43  }
  44  
  45  function defaultArrayMerge(target, source, options) {
  46      return target.concat(source).map(function(element) {
  47          return cloneUnlessOtherwiseSpecified(element, options)
  48      })
  49  }
  50  
  51  function getMergeFunction(key, options) {
  52      if (!options.customMerge) {
  53          return deepmerge
  54      }
  55      var customMerge = options.customMerge(key);
  56      return typeof customMerge === 'function' ? customMerge : deepmerge
  57  }
  58  
  59  function getEnumerableOwnPropertySymbols(target) {
  60      return Object.getOwnPropertySymbols
  61          ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
  62              return Object.propertyIsEnumerable.call(target, symbol)
  63          })
  64          : []
  65  }
  66  
  67  function getKeys(target) {
  68      return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
  69  }
  70  
  71  function propertyIsOnObject(object, property) {
  72      try {
  73          return property in object
  74      } catch(_) {
  75          return false
  76      }
  77  }
  78  
  79  // Protects from prototype poisoning and unexpected merging up the prototype chain.
  80  function propertyIsUnsafe(target, key) {
  81      return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,
  82          && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,
  83              && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.
  84  }
  85  
  86  function mergeObject(target, source, options) {
  87      var destination = {};
  88      if (options.isMergeableObject(target)) {
  89          getKeys(target).forEach(function(key) {
  90              destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
  91          });
  92      }
  93      getKeys(source).forEach(function(key) {
  94          if (propertyIsUnsafe(target, key)) {
  95              return
  96          }
  97  
  98          if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
  99              destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
 100          } else {
 101              destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
 102          }
 103      });
 104      return destination
 105  }
 106  
 107  function deepmerge(target, source, options) {
 108      options = options || {};
 109      options.arrayMerge = options.arrayMerge || defaultArrayMerge;
 110      options.isMergeableObject = options.isMergeableObject || isMergeableObject;
 111      // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
 112      // implementations can use it. The caller may not replace it.
 113      options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
 114  
 115      var sourceIsArray = Array.isArray(source);
 116      var targetIsArray = Array.isArray(target);
 117      var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
 118  
 119      if (!sourceAndTargetTypesMatch) {
 120          return cloneUnlessOtherwiseSpecified(source, options)
 121      } else if (sourceIsArray) {
 122          return options.arrayMerge(target, source, options)
 123      } else {
 124          return mergeObject(target, source, options)
 125      }
 126  }
 127  
 128  deepmerge.all = function deepmergeAll(array, options) {
 129      if (!Array.isArray(array)) {
 130          throw new Error('first argument should be an array')
 131      }
 132  
 133      return array.reduce(function(prev, next) {
 134          return deepmerge(prev, next, options)
 135      }, {})
 136  };
 137  
 138  var deepmerge_1 = deepmerge;
 139  
 140  module.exports = deepmerge_1;
 141  
 142  
 143  /***/ }),
 144  
 145  /***/ 3249:
 146  /***/ ((module) => {
 147  
 148  
 149  
 150  function _typeof(obj) {
 151    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
 152      _typeof = function (obj) {
 153        return typeof obj;
 154      };
 155    } else {
 156      _typeof = function (obj) {
 157        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
 158      };
 159    }
 160  
 161    return _typeof(obj);
 162  }
 163  
 164  function _classCallCheck(instance, Constructor) {
 165    if (!(instance instanceof Constructor)) {
 166      throw new TypeError("Cannot call a class as a function");
 167    }
 168  }
 169  
 170  function _defineProperties(target, props) {
 171    for (var i = 0; i < props.length; i++) {
 172      var descriptor = props[i];
 173      descriptor.enumerable = descriptor.enumerable || false;
 174      descriptor.configurable = true;
 175      if ("value" in descriptor) descriptor.writable = true;
 176      Object.defineProperty(target, descriptor.key, descriptor);
 177    }
 178  }
 179  
 180  function _createClass(Constructor, protoProps, staticProps) {
 181    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
 182    if (staticProps) _defineProperties(Constructor, staticProps);
 183    return Constructor;
 184  }
 185  
 186  /**
 187   * Given an instance of EquivalentKeyMap, returns its internal value pair tuple
 188   * for a key, if one exists. The tuple members consist of the last reference
 189   * value for the key (used in efficient subsequent lookups) and the value
 190   * assigned for the key at the leaf node.
 191   *
 192   * @param {EquivalentKeyMap} instance EquivalentKeyMap instance.
 193   * @param {*} key                     The key for which to return value pair.
 194   *
 195   * @return {?Array} Value pair, if exists.
 196   */
 197  function getValuePair(instance, key) {
 198    var _map = instance._map,
 199        _arrayTreeMap = instance._arrayTreeMap,
 200        _objectTreeMap = instance._objectTreeMap; // Map keeps a reference to the last object-like key used to set the
 201    // value, which can be used to shortcut immediately to the value.
 202  
 203    if (_map.has(key)) {
 204      return _map.get(key);
 205    } // Sort keys to ensure stable retrieval from tree.
 206  
 207  
 208    var properties = Object.keys(key).sort(); // Tree by type to avoid conflicts on numeric object keys, empty value.
 209  
 210    var map = Array.isArray(key) ? _arrayTreeMap : _objectTreeMap;
 211  
 212    for (var i = 0; i < properties.length; i++) {
 213      var property = properties[i];
 214      map = map.get(property);
 215  
 216      if (map === undefined) {
 217        return;
 218      }
 219  
 220      var propertyValue = key[property];
 221      map = map.get(propertyValue);
 222  
 223      if (map === undefined) {
 224        return;
 225      }
 226    }
 227  
 228    var valuePair = map.get('_ekm_value');
 229  
 230    if (!valuePair) {
 231      return;
 232    } // If reached, it implies that an object-like key was set with another
 233    // reference, so delete the reference and replace with the current.
 234  
 235  
 236    _map.delete(valuePair[0]);
 237  
 238    valuePair[0] = key;
 239    map.set('_ekm_value', valuePair);
 240  
 241    _map.set(key, valuePair);
 242  
 243    return valuePair;
 244  }
 245  /**
 246   * Variant of a Map object which enables lookup by equivalent (deeply equal)
 247   * object and array keys.
 248   */
 249  
 250  
 251  var EquivalentKeyMap =
 252  /*#__PURE__*/
 253  function () {
 254    /**
 255     * Constructs a new instance of EquivalentKeyMap.
 256     *
 257     * @param {Iterable.<*>} iterable Initial pair of key, value for map.
 258     */
 259    function EquivalentKeyMap(iterable) {
 260      _classCallCheck(this, EquivalentKeyMap);
 261  
 262      this.clear();
 263  
 264      if (iterable instanceof EquivalentKeyMap) {
 265        // Map#forEach is only means of iterating with support for IE11.
 266        var iterablePairs = [];
 267        iterable.forEach(function (value, key) {
 268          iterablePairs.push([key, value]);
 269        });
 270        iterable = iterablePairs;
 271      }
 272  
 273      if (iterable != null) {
 274        for (var i = 0; i < iterable.length; i++) {
 275          this.set(iterable[i][0], iterable[i][1]);
 276        }
 277      }
 278    }
 279    /**
 280     * Accessor property returning the number of elements.
 281     *
 282     * @return {number} Number of elements.
 283     */
 284  
 285  
 286    _createClass(EquivalentKeyMap, [{
 287      key: "set",
 288  
 289      /**
 290       * Add or update an element with a specified key and value.
 291       *
 292       * @param {*} key   The key of the element to add.
 293       * @param {*} value The value of the element to add.
 294       *
 295       * @return {EquivalentKeyMap} Map instance.
 296       */
 297      value: function set(key, value) {
 298        // Shortcut non-object-like to set on internal Map.
 299        if (key === null || _typeof(key) !== 'object') {
 300          this._map.set(key, value);
 301  
 302          return this;
 303        } // Sort keys to ensure stable assignment into tree.
 304  
 305  
 306        var properties = Object.keys(key).sort();
 307        var valuePair = [key, value]; // Tree by type to avoid conflicts on numeric object keys, empty value.
 308  
 309        var map = Array.isArray(key) ? this._arrayTreeMap : this._objectTreeMap;
 310  
 311        for (var i = 0; i < properties.length; i++) {
 312          var property = properties[i];
 313  
 314          if (!map.has(property)) {
 315            map.set(property, new EquivalentKeyMap());
 316          }
 317  
 318          map = map.get(property);
 319          var propertyValue = key[property];
 320  
 321          if (!map.has(propertyValue)) {
 322            map.set(propertyValue, new EquivalentKeyMap());
 323          }
 324  
 325          map = map.get(propertyValue);
 326        } // If an _ekm_value exists, there was already an equivalent key. Before
 327        // overriding, ensure that the old key reference is removed from map to
 328        // avoid memory leak of accumulating equivalent keys. This is, in a
 329        // sense, a poor man's WeakMap, while still enabling iterability.
 330  
 331  
 332        var previousValuePair = map.get('_ekm_value');
 333  
 334        if (previousValuePair) {
 335          this._map.delete(previousValuePair[0]);
 336        }
 337  
 338        map.set('_ekm_value', valuePair);
 339  
 340        this._map.set(key, valuePair);
 341  
 342        return this;
 343      }
 344      /**
 345       * Returns a specified element.
 346       *
 347       * @param {*} key The key of the element to return.
 348       *
 349       * @return {?*} The element associated with the specified key or undefined
 350       *              if the key can't be found.
 351       */
 352  
 353    }, {
 354      key: "get",
 355      value: function get(key) {
 356        // Shortcut non-object-like to get from internal Map.
 357        if (key === null || _typeof(key) !== 'object') {
 358          return this._map.get(key);
 359        }
 360  
 361        var valuePair = getValuePair(this, key);
 362  
 363        if (valuePair) {
 364          return valuePair[1];
 365        }
 366      }
 367      /**
 368       * Returns a boolean indicating whether an element with the specified key
 369       * exists or not.
 370       *
 371       * @param {*} key The key of the element to test for presence.
 372       *
 373       * @return {boolean} Whether an element with the specified key exists.
 374       */
 375  
 376    }, {
 377      key: "has",
 378      value: function has(key) {
 379        if (key === null || _typeof(key) !== 'object') {
 380          return this._map.has(key);
 381        } // Test on the _presence_ of the pair, not its value, as even undefined
 382        // can be a valid member value for a key.
 383  
 384  
 385        return getValuePair(this, key) !== undefined;
 386      }
 387      /**
 388       * Removes the specified element.
 389       *
 390       * @param {*} key The key of the element to remove.
 391       *
 392       * @return {boolean} Returns true if an element existed and has been
 393       *                   removed, or false if the element does not exist.
 394       */
 395  
 396    }, {
 397      key: "delete",
 398      value: function _delete(key) {
 399        if (!this.has(key)) {
 400          return false;
 401        } // This naive implementation will leave orphaned child trees. A better
 402        // implementation should traverse and remove orphans.
 403  
 404  
 405        this.set(key, undefined);
 406        return true;
 407      }
 408      /**
 409       * Executes a provided function once per each key/value pair, in insertion
 410       * order.
 411       *
 412       * @param {Function} callback Function to execute for each element.
 413       * @param {*}        thisArg  Value to use as `this` when executing
 414       *                            `callback`.
 415       */
 416  
 417    }, {
 418      key: "forEach",
 419      value: function forEach(callback) {
 420        var _this = this;
 421  
 422        var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this;
 423  
 424        this._map.forEach(function (value, key) {
 425          // Unwrap value from object-like value pair.
 426          if (key !== null && _typeof(key) === 'object') {
 427            value = value[1];
 428          }
 429  
 430          callback.call(thisArg, value, key, _this);
 431        });
 432      }
 433      /**
 434       * Removes all elements.
 435       */
 436  
 437    }, {
 438      key: "clear",
 439      value: function clear() {
 440        this._map = new Map();
 441        this._arrayTreeMap = new Map();
 442        this._objectTreeMap = new Map();
 443      }
 444    }, {
 445      key: "size",
 446      get: function get() {
 447        return this._map.size;
 448      }
 449    }]);
 450  
 451    return EquivalentKeyMap;
 452  }();
 453  
 454  module.exports = EquivalentKeyMap;
 455  
 456  
 457  /***/ })
 458  
 459  /******/     });
 460  /************************************************************************/
 461  /******/     // The module cache
 462  /******/     var __webpack_module_cache__ = {};
 463  /******/     
 464  /******/     // The require function
 465  /******/ 	function __webpack_require__(moduleId) {
 466  /******/         // Check if module is in cache
 467  /******/         var cachedModule = __webpack_module_cache__[moduleId];
 468  /******/         if (cachedModule !== undefined) {
 469  /******/             return cachedModule.exports;
 470  /******/         }
 471  /******/         // Create a new module (and put it into the cache)
 472  /******/         var module = __webpack_module_cache__[moduleId] = {
 473  /******/             // no module.id needed
 474  /******/             // no module.loaded needed
 475  /******/             exports: {}
 476  /******/         };
 477  /******/     
 478  /******/         // Execute the module function
 479  /******/         __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
 480  /******/     
 481  /******/         // Return the exports of the module
 482  /******/         return module.exports;
 483  /******/     }
 484  /******/     
 485  /************************************************************************/
 486  /******/     /* webpack/runtime/compat get default export */
 487  /******/     (() => {
 488  /******/         // getDefaultExport function for compatibility with non-harmony modules
 489  /******/         __webpack_require__.n = (module) => {
 490  /******/             var getter = module && module.__esModule ?
 491  /******/                 () => (module['default']) :
 492  /******/                 () => (module);
 493  /******/             __webpack_require__.d(getter, { a: getter });
 494  /******/             return getter;
 495  /******/         };
 496  /******/     })();
 497  /******/     
 498  /******/     /* webpack/runtime/define property getters */
 499  /******/     (() => {
 500  /******/         // define getter functions for harmony exports
 501  /******/         __webpack_require__.d = (exports, definition) => {
 502  /******/             for(var key in definition) {
 503  /******/                 if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
 504  /******/                     Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
 505  /******/                 }
 506  /******/             }
 507  /******/         };
 508  /******/     })();
 509  /******/     
 510  /******/     /* webpack/runtime/hasOwnProperty shorthand */
 511  /******/     (() => {
 512  /******/         __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
 513  /******/     })();
 514  /******/     
 515  /******/     /* webpack/runtime/make namespace object */
 516  /******/     (() => {
 517  /******/         // define __esModule on exports
 518  /******/         __webpack_require__.r = (exports) => {
 519  /******/             if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
 520  /******/                 Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
 521  /******/             }
 522  /******/             Object.defineProperty(exports, '__esModule', { value: true });
 523  /******/         };
 524  /******/     })();
 525  /******/     
 526  /************************************************************************/
 527  var __webpack_exports__ = {};
 528  // ESM COMPAT FLAG
 529  __webpack_require__.r(__webpack_exports__);
 530  
 531  // EXPORTS
 532  __webpack_require__.d(__webpack_exports__, {
 533    AsyncModeProvider: () => (/* reexport */ async_mode_provider_context),
 534    RegistryConsumer: () => (/* reexport */ RegistryConsumer),
 535    RegistryProvider: () => (/* reexport */ context),
 536    combineReducers: () => (/* binding */ build_module_combineReducers),
 537    controls: () => (/* reexport */ controls),
 538    createReduxStore: () => (/* reexport */ createReduxStore),
 539    createRegistry: () => (/* reexport */ createRegistry),
 540    createRegistryControl: () => (/* reexport */ createRegistryControl),
 541    createRegistrySelector: () => (/* reexport */ createRegistrySelector),
 542    createSelector: () => (/* reexport */ rememo),
 543    dispatch: () => (/* reexport */ dispatch_dispatch),
 544    plugins: () => (/* reexport */ plugins_namespaceObject),
 545    register: () => (/* binding */ register),
 546    registerGenericStore: () => (/* binding */ registerGenericStore),
 547    registerStore: () => (/* binding */ registerStore),
 548    resolveSelect: () => (/* binding */ build_module_resolveSelect),
 549    select: () => (/* reexport */ select_select),
 550    subscribe: () => (/* binding */ subscribe),
 551    suspendSelect: () => (/* binding */ suspendSelect),
 552    use: () => (/* binding */ use),
 553    useDispatch: () => (/* reexport */ use_dispatch),
 554    useRegistry: () => (/* reexport */ useRegistry),
 555    useSelect: () => (/* reexport */ useSelect),
 556    useSuspenseSelect: () => (/* reexport */ useSuspenseSelect),
 557    withDispatch: () => (/* reexport */ with_dispatch),
 558    withRegistry: () => (/* reexport */ with_registry),
 559    withSelect: () => (/* reexport */ with_select)
 560  });
 561  
 562  // NAMESPACE OBJECT: ./node_modules/@wordpress/data/build-module/redux-store/metadata/selectors.js
 563  var selectors_namespaceObject = {};
 564  __webpack_require__.r(selectors_namespaceObject);
 565  __webpack_require__.d(selectors_namespaceObject, {
 566    countSelectorsByStatus: () => (countSelectorsByStatus),
 567    getCachedResolvers: () => (getCachedResolvers),
 568    getIsResolving: () => (getIsResolving),
 569    getResolutionError: () => (getResolutionError),
 570    getResolutionState: () => (getResolutionState),
 571    hasFinishedResolution: () => (hasFinishedResolution),
 572    hasResolutionFailed: () => (hasResolutionFailed),
 573    hasResolvingSelectors: () => (hasResolvingSelectors),
 574    hasStartedResolution: () => (hasStartedResolution),
 575    isResolving: () => (isResolving)
 576  });
 577  
 578  // NAMESPACE OBJECT: ./node_modules/@wordpress/data/build-module/redux-store/metadata/actions.js
 579  var actions_namespaceObject = {};
 580  __webpack_require__.r(actions_namespaceObject);
 581  __webpack_require__.d(actions_namespaceObject, {
 582    failResolution: () => (failResolution),
 583    failResolutions: () => (failResolutions),
 584    finishResolution: () => (finishResolution),
 585    finishResolutions: () => (finishResolutions),
 586    invalidateResolution: () => (invalidateResolution),
 587    invalidateResolutionForStore: () => (invalidateResolutionForStore),
 588    invalidateResolutionForStoreSelector: () => (invalidateResolutionForStoreSelector),
 589    startResolution: () => (startResolution),
 590    startResolutions: () => (startResolutions)
 591  });
 592  
 593  // NAMESPACE OBJECT: ./node_modules/@wordpress/data/build-module/plugins/index.js
 594  var plugins_namespaceObject = {};
 595  __webpack_require__.r(plugins_namespaceObject);
 596  __webpack_require__.d(plugins_namespaceObject, {
 597    persistence: () => (persistence)
 598  });
 599  
 600  ;// external ["wp","deprecated"]
 601  const external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
 602  var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
 603  ;// ./node_modules/redux/dist/redux.mjs
 604  // src/utils/formatProdErrorMessage.ts
 605  function formatProdErrorMessage(code) {
 606    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. `;
 607  }
 608  
 609  // src/utils/symbol-observable.ts
 610  var $$observable = /* @__PURE__ */ (() => typeof Symbol === "function" && Symbol.observable || "@@observable")();
 611  var symbol_observable_default = $$observable;
 612  
 613  // src/utils/actionTypes.ts
 614  var randomString = () => Math.random().toString(36).substring(7).split("").join(".");
 615  var ActionTypes = {
 616    INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,
 617    REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,
 618    PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION$randomString()}`
 619  };
 620  var actionTypes_default = ActionTypes;
 621  
 622  // src/utils/isPlainObject.ts
 623  function isPlainObject(obj) {
 624    if (typeof obj !== "object" || obj === null)
 625      return false;
 626    let proto = obj;
 627    while (Object.getPrototypeOf(proto) !== null) {
 628      proto = Object.getPrototypeOf(proto);
 629    }
 630    return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;
 631  }
 632  
 633  // src/utils/kindOf.ts
 634  function miniKindOf(val) {
 635    if (val === void 0)
 636      return "undefined";
 637    if (val === null)
 638      return "null";
 639    const type = typeof val;
 640    switch (type) {
 641      case "boolean":
 642      case "string":
 643      case "number":
 644      case "symbol":
 645      case "function": {
 646        return type;
 647      }
 648    }
 649    if (Array.isArray(val))
 650      return "array";
 651    if (isDate(val))
 652      return "date";
 653    if (isError(val))
 654      return "error";
 655    const constructorName = ctorName(val);
 656    switch (constructorName) {
 657      case "Symbol":
 658      case "Promise":
 659      case "WeakMap":
 660      case "WeakSet":
 661      case "Map":
 662      case "Set":
 663        return constructorName;
 664    }
 665    return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\s/g, "");
 666  }
 667  function ctorName(val) {
 668    return typeof val.constructor === "function" ? val.constructor.name : null;
 669  }
 670  function isError(val) {
 671    return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number";
 672  }
 673  function isDate(val) {
 674    if (val instanceof Date)
 675      return true;
 676    return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function";
 677  }
 678  function kindOf(val) {
 679    let typeOfVal = typeof val;
 680    if (false) {}
 681    return typeOfVal;
 682  }
 683  
 684  // src/createStore.ts
 685  function createStore(reducer, preloadedState, enhancer) {
 686    if (typeof reducer !== "function") {
 687      throw new Error( true ? formatProdErrorMessage(2) : 0);
 688    }
 689    if (typeof preloadedState === "function" && typeof enhancer === "function" || typeof enhancer === "function" && typeof arguments[3] === "function") {
 690      throw new Error( true ? formatProdErrorMessage(0) : 0);
 691    }
 692    if (typeof preloadedState === "function" && typeof enhancer === "undefined") {
 693      enhancer = preloadedState;
 694      preloadedState = void 0;
 695    }
 696    if (typeof enhancer !== "undefined") {
 697      if (typeof enhancer !== "function") {
 698        throw new Error( true ? formatProdErrorMessage(1) : 0);
 699      }
 700      return enhancer(createStore)(reducer, preloadedState);
 701    }
 702    let currentReducer = reducer;
 703    let currentState = preloadedState;
 704    let currentListeners = /* @__PURE__ */ new Map();
 705    let nextListeners = currentListeners;
 706    let listenerIdCounter = 0;
 707    let isDispatching = false;
 708    function ensureCanMutateNextListeners() {
 709      if (nextListeners === currentListeners) {
 710        nextListeners = /* @__PURE__ */ new Map();
 711        currentListeners.forEach((listener, key) => {
 712          nextListeners.set(key, listener);
 713        });
 714      }
 715    }
 716    function getState() {
 717      if (isDispatching) {
 718        throw new Error( true ? formatProdErrorMessage(3) : 0);
 719      }
 720      return currentState;
 721    }
 722    function subscribe(listener) {
 723      if (typeof listener !== "function") {
 724        throw new Error( true ? formatProdErrorMessage(4) : 0);
 725      }
 726      if (isDispatching) {
 727        throw new Error( true ? formatProdErrorMessage(5) : 0);
 728      }
 729      let isSubscribed = true;
 730      ensureCanMutateNextListeners();
 731      const listenerId = listenerIdCounter++;
 732      nextListeners.set(listenerId, listener);
 733      return function unsubscribe() {
 734        if (!isSubscribed) {
 735          return;
 736        }
 737        if (isDispatching) {
 738          throw new Error( true ? formatProdErrorMessage(6) : 0);
 739        }
 740        isSubscribed = false;
 741        ensureCanMutateNextListeners();
 742        nextListeners.delete(listenerId);
 743        currentListeners = null;
 744      };
 745    }
 746    function dispatch(action) {
 747      if (!isPlainObject(action)) {
 748        throw new Error( true ? formatProdErrorMessage(7) : 0);
 749      }
 750      if (typeof action.type === "undefined") {
 751        throw new Error( true ? formatProdErrorMessage(8) : 0);
 752      }
 753      if (typeof action.type !== "string") {
 754        throw new Error( true ? formatProdErrorMessage(17) : 0);
 755      }
 756      if (isDispatching) {
 757        throw new Error( true ? formatProdErrorMessage(9) : 0);
 758      }
 759      try {
 760        isDispatching = true;
 761        currentState = currentReducer(currentState, action);
 762      } finally {
 763        isDispatching = false;
 764      }
 765      const listeners = currentListeners = nextListeners;
 766      listeners.forEach((listener) => {
 767        listener();
 768      });
 769      return action;
 770    }
 771    function replaceReducer(nextReducer) {
 772      if (typeof nextReducer !== "function") {
 773        throw new Error( true ? formatProdErrorMessage(10) : 0);
 774      }
 775      currentReducer = nextReducer;
 776      dispatch({
 777        type: actionTypes_default.REPLACE
 778      });
 779    }
 780    function observable() {
 781      const outerSubscribe = subscribe;
 782      return {
 783        /**
 784         * The minimal observable subscription method.
 785         * @param observer Any object that can be used as an observer.
 786         * The observer object should have a `next` method.
 787         * @returns An object with an `unsubscribe` method that can
 788         * be used to unsubscribe the observable from the store, and prevent further
 789         * emission of values from the observable.
 790         */
 791        subscribe(observer) {
 792          if (typeof observer !== "object" || observer === null) {
 793            throw new Error( true ? formatProdErrorMessage(11) : 0);
 794          }
 795          function observeState() {
 796            const observerAsObserver = observer;
 797            if (observerAsObserver.next) {
 798              observerAsObserver.next(getState());
 799            }
 800          }
 801          observeState();
 802          const unsubscribe = outerSubscribe(observeState);
 803          return {
 804            unsubscribe
 805          };
 806        },
 807        [symbol_observable_default]() {
 808          return this;
 809        }
 810      };
 811    }
 812    dispatch({
 813      type: actionTypes_default.INIT
 814    });
 815    const store = {
 816      dispatch,
 817      subscribe,
 818      getState,
 819      replaceReducer,
 820      [symbol_observable_default]: observable
 821    };
 822    return store;
 823  }
 824  function legacy_createStore(reducer, preloadedState, enhancer) {
 825    return createStore(reducer, preloadedState, enhancer);
 826  }
 827  
 828  // src/utils/warning.ts
 829  function warning(message) {
 830    if (typeof console !== "undefined" && typeof console.error === "function") {
 831      console.error(message);
 832    }
 833    try {
 834      throw new Error(message);
 835    } catch (e) {
 836    }
 837  }
 838  
 839  // src/combineReducers.ts
 840  function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
 841    const reducerKeys = Object.keys(reducers);
 842    const argumentName = action && action.type === actionTypes_default.INIT ? "preloadedState argument passed to createStore" : "previous state received by the reducer";
 843    if (reducerKeys.length === 0) {
 844      return "Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";
 845    }
 846    if (!isPlainObject(inputState)) {
 847      return `The $argumentName} has unexpected type of "$kindOf(inputState)}". Expected argument to be an object with the following keys: "$reducerKeys.join('", "')}"`;
 848    }
 849    const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);
 850    unexpectedKeys.forEach((key) => {
 851      unexpectedKeyCache[key] = true;
 852    });
 853    if (action && action.type === actionTypes_default.REPLACE)
 854      return;
 855    if (unexpectedKeys.length > 0) {
 856      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.`;
 857    }
 858  }
 859  function assertReducerShape(reducers) {
 860    Object.keys(reducers).forEach((key) => {
 861      const reducer = reducers[key];
 862      const initialState = reducer(void 0, {
 863        type: actionTypes_default.INIT
 864      });
 865      if (typeof initialState === "undefined") {
 866        throw new Error( true ? formatProdErrorMessage(12) : 0);
 867      }
 868      if (typeof reducer(void 0, {
 869        type: actionTypes_default.PROBE_UNKNOWN_ACTION()
 870      }) === "undefined") {
 871        throw new Error( true ? formatProdErrorMessage(13) : 0);
 872      }
 873    });
 874  }
 875  function combineReducers(reducers) {
 876    const reducerKeys = Object.keys(reducers);
 877    const finalReducers = {};
 878    for (let i = 0; i < reducerKeys.length; i++) {
 879      const key = reducerKeys[i];
 880      if (false) {}
 881      if (typeof reducers[key] === "function") {
 882        finalReducers[key] = reducers[key];
 883      }
 884    }
 885    const finalReducerKeys = Object.keys(finalReducers);
 886    let unexpectedKeyCache;
 887    if (false) {}
 888    let shapeAssertionError;
 889    try {
 890      assertReducerShape(finalReducers);
 891    } catch (e) {
 892      shapeAssertionError = e;
 893    }
 894    return function combination(state = {}, action) {
 895      if (shapeAssertionError) {
 896        throw shapeAssertionError;
 897      }
 898      if (false) {}
 899      let hasChanged = false;
 900      const nextState = {};
 901      for (let i = 0; i < finalReducerKeys.length; i++) {
 902        const key = finalReducerKeys[i];
 903        const reducer = finalReducers[key];
 904        const previousStateForKey = state[key];
 905        const nextStateForKey = reducer(previousStateForKey, action);
 906        if (typeof nextStateForKey === "undefined") {
 907          const actionType = action && action.type;
 908          throw new Error( true ? formatProdErrorMessage(14) : 0);
 909        }
 910        nextState[key] = nextStateForKey;
 911        hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
 912      }
 913      hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
 914      return hasChanged ? nextState : state;
 915    };
 916  }
 917  
 918  // src/bindActionCreators.ts
 919  function bindActionCreator(actionCreator, dispatch) {
 920    return function(...args) {
 921      return dispatch(actionCreator.apply(this, args));
 922    };
 923  }
 924  function bindActionCreators(actionCreators, dispatch) {
 925    if (typeof actionCreators === "function") {
 926      return bindActionCreator(actionCreators, dispatch);
 927    }
 928    if (typeof actionCreators !== "object" || actionCreators === null) {
 929      throw new Error( true ? formatProdErrorMessage(16) : 0);
 930    }
 931    const boundActionCreators = {};
 932    for (const key in actionCreators) {
 933      const actionCreator = actionCreators[key];
 934      if (typeof actionCreator === "function") {
 935        boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
 936      }
 937    }
 938    return boundActionCreators;
 939  }
 940  
 941  // src/compose.ts
 942  function compose(...funcs) {
 943    if (funcs.length === 0) {
 944      return (arg) => arg;
 945    }
 946    if (funcs.length === 1) {
 947      return funcs[0];
 948    }
 949    return funcs.reduce((a, b) => (...args) => a(b(...args)));
 950  }
 951  
 952  // src/applyMiddleware.ts
 953  function applyMiddleware(...middlewares) {
 954    return (createStore2) => (reducer, preloadedState) => {
 955      const store = createStore2(reducer, preloadedState);
 956      let dispatch = () => {
 957        throw new Error( true ? formatProdErrorMessage(15) : 0);
 958      };
 959      const middlewareAPI = {
 960        getState: store.getState,
 961        dispatch: (action, ...args) => dispatch(action, ...args)
 962      };
 963      const chain = middlewares.map((middleware) => middleware(middlewareAPI));
 964      dispatch = compose(...chain)(store.dispatch);
 965      return {
 966        ...store,
 967        dispatch
 968      };
 969    };
 970  }
 971  
 972  // src/utils/isAction.ts
 973  function isAction(action) {
 974    return isPlainObject(action) && "type" in action && typeof action.type === "string";
 975  }
 976  
 977  //# sourceMappingURL=redux.mjs.map
 978  // EXTERNAL MODULE: ./node_modules/equivalent-key-map/equivalent-key-map.js
 979  var equivalent_key_map = __webpack_require__(3249);
 980  var equivalent_key_map_default = /*#__PURE__*/__webpack_require__.n(equivalent_key_map);
 981  ;// external ["wp","reduxRoutine"]
 982  const external_wp_reduxRoutine_namespaceObject = window["wp"]["reduxRoutine"];
 983  var external_wp_reduxRoutine_default = /*#__PURE__*/__webpack_require__.n(external_wp_reduxRoutine_namespaceObject);
 984  ;// external ["wp","compose"]
 985  const external_wp_compose_namespaceObject = window["wp"]["compose"];
 986  ;// ./node_modules/@wordpress/data/build-module/redux-store/combine-reducers.js
 987  function combine_reducers_combineReducers(reducers) {
 988    const keys = Object.keys(reducers);
 989    return function combinedReducer(state = {}, action) {
 990      const nextState = {};
 991      let hasChanged = false;
 992      for (const key of keys) {
 993        const reducer = reducers[key];
 994        const prevStateForKey = state[key];
 995        const nextStateForKey = reducer(prevStateForKey, action);
 996        nextState[key] = nextStateForKey;
 997        hasChanged = hasChanged || nextStateForKey !== prevStateForKey;
 998      }
 999      return hasChanged ? nextState : state;
1000    };
1001  }
1002  
1003  ;// ./node_modules/@wordpress/data/build-module/factory.js
1004  /**
1005   * Internal dependencies
1006   */
1007  
1008  /**
1009   * Creates a selector function that takes additional curried argument with the
1010   * registry `select` function. While a regular selector has signature
1011   * ```js
1012   * ( state, ...selectorArgs ) => ( result )
1013   * ```
1014   * that allows to select data from the store's `state`, a registry selector
1015   * has signature:
1016   * ```js
1017   * ( select ) => ( state, ...selectorArgs ) => ( result )
1018   * ```
1019   * that supports also selecting from other registered stores.
1020   *
1021   * @example
1022   * ```js
1023   * import { store as coreStore } from '@wordpress/core-data';
1024   * import { store as editorStore } from '@wordpress/editor';
1025   *
1026   * const getCurrentPostId = createRegistrySelector( ( select ) => ( state ) => {
1027   *   return select( editorStore ).getCurrentPostId();
1028   * } );
1029   *
1030   * const getPostEdits = createRegistrySelector( ( select ) => ( state ) => {
1031   *   // calling another registry selector just like any other function
1032   *   const postType = getCurrentPostType( state );
1033   *   const postId = getCurrentPostId( state );
1034   *     return select( coreStore ).getEntityRecordEdits( 'postType', postType, postId );
1035   * } );
1036   * ```
1037   *
1038   * Note how the `getCurrentPostId` selector can be called just like any other function,
1039   * (it works even inside a regular non-registry selector) and we don't need to pass the
1040   * registry as argument. The registry binding happens automatically when registering the selector
1041   * with a store.
1042   *
1043   * @param registrySelector Function receiving a registry `select`
1044   *                         function and returning a state selector.
1045   *
1046   * @return Registry selector that can be registered with a store.
1047   */
1048  function createRegistrySelector(registrySelector) {
1049    const selectorsByRegistry = new WeakMap();
1050    // Create a selector function that is bound to the registry referenced by `selector.registry`
1051    // and that has the same API as a regular selector. Binding it in such a way makes it
1052    // possible to call the selector directly from another selector.
1053    const wrappedSelector = (...args) => {
1054      let selector = selectorsByRegistry.get(wrappedSelector.registry);
1055      // We want to make sure the cache persists even when new registry
1056      // instances are created. For example patterns create their own editors
1057      // with their own core/block-editor stores, so we should keep track of
1058      // the cache for each registry instance.
1059      if (!selector) {
1060        selector = registrySelector(wrappedSelector.registry.select);
1061        selectorsByRegistry.set(wrappedSelector.registry, selector);
1062      }
1063      return selector(...args);
1064    };
1065  
1066    /**
1067     * Flag indicating that the selector is a registry selector that needs the correct registry
1068     * reference to be assigned to `selector.registry` to make it work correctly.
1069     * be mapped as a registry selector.
1070     */
1071    wrappedSelector.isRegistrySelector = true;
1072    return wrappedSelector;
1073  }
1074  
1075  /**
1076   * Creates a control function that takes additional curried argument with the `registry` object.
1077   * While a regular control has signature
1078   * ```js
1079   * ( action ) => ( iteratorOrPromise )
1080   * ```
1081   * where the control works with the `action` that it's bound to, a registry control has signature:
1082   * ```js
1083   * ( registry ) => ( action ) => ( iteratorOrPromise )
1084   * ```
1085   * A registry control is typically used to select data or dispatch an action to a registered
1086   * store.
1087   *
1088   * When registering a control created with `createRegistryControl` with a store, the store
1089   * knows which calling convention to use when executing the control.
1090   *
1091   * @param registryControl Function receiving a registry object and returning a control.
1092   *
1093   * @return Registry control that can be registered with a store.
1094   */
1095  function createRegistryControl(registryControl) {
1096    registryControl.isRegistryControl = true;
1097    return registryControl;
1098  }
1099  
1100  ;// ./node_modules/@wordpress/data/build-module/controls.js
1101  /**
1102   * Internal dependencies
1103   */
1104  
1105  
1106  /** @typedef {import('./types').StoreDescriptor} StoreDescriptor */
1107  
1108  const SELECT = '@@data/SELECT';
1109  const RESOLVE_SELECT = '@@data/RESOLVE_SELECT';
1110  const DISPATCH = '@@data/DISPATCH';
1111  function isObject(object) {
1112    return object !== null && typeof object === 'object';
1113  }
1114  
1115  /**
1116   * Dispatches a control action for triggering a synchronous registry select.
1117   *
1118   * Note: This control synchronously returns the current selector value, triggering the
1119   * resolution, but not waiting for it.
1120   *
1121   * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
1122   * @param {string}                 selectorName          The name of the selector.
1123   * @param {Array}                  args                  Arguments for the selector.
1124   *
1125   * @example
1126   * ```js
1127   * import { controls } from '@wordpress/data';
1128   *
1129   * // Action generator using `select`.
1130   * export function* myAction() {
1131   *   const isEditorSideBarOpened = yield controls.select( 'core/edit-post', 'isEditorSideBarOpened' );
1132   *   // Do stuff with the result from the `select`.
1133   * }
1134   * ```
1135   *
1136   * @return {Object} The control descriptor.
1137   */
1138  function controls_select(storeNameOrDescriptor, selectorName, ...args) {
1139    return {
1140      type: SELECT,
1141      storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor,
1142      selectorName,
1143      args
1144    };
1145  }
1146  
1147  /**
1148   * Dispatches a control action for triggering and resolving a registry select.
1149   *
1150   * Note: when this control action is handled, it automatically considers
1151   * selectors that may have a resolver. In such case, it will return a `Promise` that resolves
1152   * after the selector finishes resolving, with the final result value.
1153   *
1154   * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
1155   * @param {string}                 selectorName          The name of the selector
1156   * @param {Array}                  args                  Arguments for the selector.
1157   *
1158   * @example
1159   * ```js
1160   * import { controls } from '@wordpress/data';
1161   *
1162   * // Action generator using resolveSelect
1163   * export function* myAction() {
1164   *     const isSidebarOpened = yield controls.resolveSelect( 'core/edit-post', 'isEditorSideBarOpened' );
1165   *     // do stuff with the result from the select.
1166   * }
1167   * ```
1168   *
1169   * @return {Object} The control descriptor.
1170   */
1171  function resolveSelect(storeNameOrDescriptor, selectorName, ...args) {
1172    return {
1173      type: RESOLVE_SELECT,
1174      storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor,
1175      selectorName,
1176      args
1177    };
1178  }
1179  
1180  /**
1181   * Dispatches a control action for triggering a registry dispatch.
1182   *
1183   * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
1184   * @param {string}                 actionName            The name of the action to dispatch
1185   * @param {Array}                  args                  Arguments for the dispatch action.
1186   *
1187   * @example
1188   * ```js
1189   * import { controls } from '@wordpress/data-controls';
1190   *
1191   * // Action generator using dispatch
1192   * export function* myAction() {
1193   *   yield controls.dispatch( 'core/editor', 'togglePublishSidebar' );
1194   *   // do some other things.
1195   * }
1196   * ```
1197   *
1198   * @return {Object}  The control descriptor.
1199   */
1200  function dispatch(storeNameOrDescriptor, actionName, ...args) {
1201    return {
1202      type: DISPATCH,
1203      storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor,
1204      actionName,
1205      args
1206    };
1207  }
1208  const controls = {
1209    select: controls_select,
1210    resolveSelect,
1211    dispatch
1212  };
1213  const builtinControls = {
1214    [SELECT]: createRegistryControl(registry => ({
1215      storeKey,
1216      selectorName,
1217      args
1218    }) => registry.select(storeKey)[selectorName](...args)),
1219    [RESOLVE_SELECT]: createRegistryControl(registry => ({
1220      storeKey,
1221      selectorName,
1222      args
1223    }) => {
1224      const method = registry.select(storeKey)[selectorName].hasResolver ? 'resolveSelect' : 'select';
1225      return registry[method](storeKey)[selectorName](...args);
1226    }),
1227    [DISPATCH]: createRegistryControl(registry => ({
1228      storeKey,
1229      actionName,
1230      args
1231    }) => registry.dispatch(storeKey)[actionName](...args))
1232  };
1233  
1234  ;// external ["wp","privateApis"]
1235  const external_wp_privateApis_namespaceObject = window["wp"]["privateApis"];
1236  ;// ./node_modules/@wordpress/data/build-module/lock-unlock.js
1237  /**
1238   * WordPress dependencies
1239   */
1240  
1241  const {
1242    lock,
1243    unlock
1244  } = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/data');
1245  
1246  ;// ./node_modules/is-promise/index.mjs
1247  function isPromise(obj) {
1248    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
1249  }
1250  
1251  ;// ./node_modules/@wordpress/data/build-module/promise-middleware.js
1252  /**
1253   * External dependencies
1254   */
1255  
1256  
1257  /**
1258   * Simplest possible promise redux middleware.
1259   *
1260   * @type {import('redux').Middleware}
1261   */
1262  const promiseMiddleware = () => next => action => {
1263    if (isPromise(action)) {
1264      return action.then(resolvedAction => {
1265        if (resolvedAction) {
1266          return next(resolvedAction);
1267        }
1268      });
1269    }
1270    return next(action);
1271  };
1272  /* harmony default export */ const promise_middleware = (promiseMiddleware);
1273  
1274  ;// ./node_modules/@wordpress/data/build-module/resolvers-cache-middleware.js
1275  /* wp:polyfill */
1276  /** @typedef {import('./registry').WPDataRegistry} WPDataRegistry */
1277  
1278  /**
1279   * Creates a middleware handling resolvers cache invalidation.
1280   *
1281   * @param {WPDataRegistry} registry  Registry for which to create the middleware.
1282   * @param {string}         storeName Name of the store for which to create the middleware.
1283   *
1284   * @return {Function} Middleware function.
1285   */
1286  const createResolversCacheMiddleware = (registry, storeName) => () => next => action => {
1287    const resolvers = registry.select(storeName).getCachedResolvers();
1288    const resolverEntries = Object.entries(resolvers);
1289    resolverEntries.forEach(([selectorName, resolversByArgs]) => {
1290      const resolver = registry.stores[storeName]?.resolvers?.[selectorName];
1291      if (!resolver || !resolver.shouldInvalidate) {
1292        return;
1293      }
1294      resolversByArgs.forEach((value, args) => {
1295        // Works around a bug in `EquivalentKeyMap` where `map.delete` merely sets an entry value
1296        // to `undefined` and `map.forEach` then iterates also over these orphaned entries.
1297        if (value === undefined) {
1298          return;
1299        }
1300  
1301        // resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.
1302        // If the value is "finished" or "error" it means this resolver has finished its resolution which means we need
1303        // to invalidate it, if it's true it means it's inflight and the invalidation is not necessary.
1304        if (value.status !== 'finished' && value.status !== 'error') {
1305          return;
1306        }
1307        if (!resolver.shouldInvalidate(action, ...args)) {
1308          return;
1309        }
1310  
1311        // Trigger cache invalidation
1312        registry.dispatch(storeName).invalidateResolution(selectorName, args);
1313      });
1314    });
1315    return next(action);
1316  };
1317  /* harmony default export */ const resolvers_cache_middleware = (createResolversCacheMiddleware);
1318  
1319  ;// ./node_modules/@wordpress/data/build-module/redux-store/thunk-middleware.js
1320  function createThunkMiddleware(args) {
1321    return () => next => action => {
1322      if (typeof action === 'function') {
1323        return action(args);
1324      }
1325      return next(action);
1326    };
1327  }
1328  
1329  ;// ./node_modules/@wordpress/data/build-module/redux-store/metadata/utils.js
1330  /**
1331   * External dependencies
1332   */
1333  
1334  /**
1335   * Higher-order reducer creator which creates a combined reducer object, keyed
1336   * by a property on the action object.
1337   *
1338   * @param actionProperty Action property by which to key object.
1339   * @return Higher-order reducer.
1340   */
1341  const onSubKey = actionProperty => reducer => (state = {}, action) => {
1342    // Retrieve subkey from action. Do not track if undefined; useful for cases
1343    // where reducer is scoped by action shape.
1344    const key = action[actionProperty];
1345    if (key === undefined) {
1346      return state;
1347    }
1348  
1349    // Avoid updating state if unchanged. Note that this also accounts for a
1350    // reducer which returns undefined on a key which is not yet tracked.
1351    const nextKeyState = reducer(state[key], action);
1352    if (nextKeyState === state[key]) {
1353      return state;
1354    }
1355    return {
1356      ...state,
1357      [key]: nextKeyState
1358    };
1359  };
1360  
1361  /**
1362   * Normalize selector argument array by defaulting `undefined` value to an empty array
1363   * and removing trailing `undefined` values.
1364   *
1365   * @param args Selector argument array
1366   * @return Normalized state key array
1367   */
1368  function selectorArgsToStateKey(args) {
1369    if (args === undefined || args === null) {
1370      return [];
1371    }
1372    const len = args.length;
1373    let idx = len;
1374    while (idx > 0 && args[idx - 1] === undefined) {
1375      idx--;
1376    }
1377    return idx === len ? args : args.slice(0, idx);
1378  }
1379  
1380  ;// ./node_modules/@wordpress/data/build-module/redux-store/metadata/reducer.js
1381  /* wp:polyfill */
1382  /**
1383   * External dependencies
1384   */
1385  
1386  /**
1387   * Internal dependencies
1388   */
1389  
1390  /**
1391   * Reducer function returning next state for selector resolution of
1392   * subkeys, object form:
1393   *
1394   *  selectorName -> EquivalentKeyMap<Array,boolean>
1395   */
1396  const subKeysIsResolved = onSubKey('selectorName')((state = new (equivalent_key_map_default())(), action) => {
1397    switch (action.type) {
1398      case 'START_RESOLUTION':
1399        {
1400          const nextState = new (equivalent_key_map_default())(state);
1401          nextState.set(selectorArgsToStateKey(action.args), {
1402            status: 'resolving'
1403          });
1404          return nextState;
1405        }
1406      case 'FINISH_RESOLUTION':
1407        {
1408          const nextState = new (equivalent_key_map_default())(state);
1409          nextState.set(selectorArgsToStateKey(action.args), {
1410            status: 'finished'
1411          });
1412          return nextState;
1413        }
1414      case 'FAIL_RESOLUTION':
1415        {
1416          const nextState = new (equivalent_key_map_default())(state);
1417          nextState.set(selectorArgsToStateKey(action.args), {
1418            status: 'error',
1419            error: action.error
1420          });
1421          return nextState;
1422        }
1423      case 'START_RESOLUTIONS':
1424        {
1425          const nextState = new (equivalent_key_map_default())(state);
1426          for (const resolutionArgs of action.args) {
1427            nextState.set(selectorArgsToStateKey(resolutionArgs), {
1428              status: 'resolving'
1429            });
1430          }
1431          return nextState;
1432        }
1433      case 'FINISH_RESOLUTIONS':
1434        {
1435          const nextState = new (equivalent_key_map_default())(state);
1436          for (const resolutionArgs of action.args) {
1437            nextState.set(selectorArgsToStateKey(resolutionArgs), {
1438              status: 'finished'
1439            });
1440          }
1441          return nextState;
1442        }
1443      case 'FAIL_RESOLUTIONS':
1444        {
1445          const nextState = new (equivalent_key_map_default())(state);
1446          action.args.forEach((resolutionArgs, idx) => {
1447            const resolutionState = {
1448              status: 'error',
1449              error: undefined
1450            };
1451            const error = action.errors[idx];
1452            if (error) {
1453              resolutionState.error = error;
1454            }
1455            nextState.set(selectorArgsToStateKey(resolutionArgs), resolutionState);
1456          });
1457          return nextState;
1458        }
1459      case 'INVALIDATE_RESOLUTION':
1460        {
1461          const nextState = new (equivalent_key_map_default())(state);
1462          nextState.delete(selectorArgsToStateKey(action.args));
1463          return nextState;
1464        }
1465    }
1466    return state;
1467  });
1468  
1469  /**
1470   * Reducer function returning next state for selector resolution, object form:
1471   *
1472   *   selectorName -> EquivalentKeyMap<Array, boolean>
1473   *
1474   * @param state  Current state.
1475   * @param action Dispatched action.
1476   *
1477   * @return Next state.
1478   */
1479  const isResolved = (state = {}, action) => {
1480    switch (action.type) {
1481      case 'INVALIDATE_RESOLUTION_FOR_STORE':
1482        return {};
1483      case 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR':
1484        {
1485          if (action.selectorName in state) {
1486            const {
1487              [action.selectorName]: removedSelector,
1488              ...restState
1489            } = state;
1490            return restState;
1491          }
1492          return state;
1493        }
1494      case 'START_RESOLUTION':
1495      case 'FINISH_RESOLUTION':
1496      case 'FAIL_RESOLUTION':
1497      case 'START_RESOLUTIONS':
1498      case 'FINISH_RESOLUTIONS':
1499      case 'FAIL_RESOLUTIONS':
1500      case 'INVALIDATE_RESOLUTION':
1501        return subKeysIsResolved(state, action);
1502    }
1503    return state;
1504  };
1505  /* harmony default export */ const metadata_reducer = (isResolved);
1506  
1507  ;// ./node_modules/rememo/rememo.js
1508  
1509  
1510  /** @typedef {(...args: any[]) => *[]} GetDependants */
1511  
1512  /** @typedef {() => void} Clear */
1513  
1514  /**
1515   * @typedef {{
1516   *   getDependants: GetDependants,
1517   *   clear: Clear
1518   * }} EnhancedSelector
1519   */
1520  
1521  /**
1522   * Internal cache entry.
1523   *
1524   * @typedef CacheNode
1525   *
1526   * @property {?CacheNode|undefined} [prev] Previous node.
1527   * @property {?CacheNode|undefined} [next] Next node.
1528   * @property {*[]} args Function arguments for cache entry.
1529   * @property {*} val Function result.
1530   */
1531  
1532  /**
1533   * @typedef Cache
1534   *
1535   * @property {Clear} clear Function to clear cache.
1536   * @property {boolean} [isUniqueByDependants] Whether dependants are valid in
1537   * considering cache uniqueness. A cache is unique if dependents are all arrays
1538   * or objects.
1539   * @property {CacheNode?} [head] Cache head.
1540   * @property {*[]} [lastDependants] Dependants from previous invocation.
1541   */
1542  
1543  /**
1544   * Arbitrary value used as key for referencing cache object in WeakMap tree.
1545   *
1546   * @type {{}}
1547   */
1548  var LEAF_KEY = {};
1549  
1550  /**
1551   * Returns the first argument as the sole entry in an array.
1552   *
1553   * @template T
1554   *
1555   * @param {T} value Value to return.
1556   *
1557   * @return {[T]} Value returned as entry in array.
1558   */
1559  function arrayOf(value) {
1560      return [value];
1561  }
1562  
1563  /**
1564   * Returns true if the value passed is object-like, or false otherwise. A value
1565   * is object-like if it can support property assignment, e.g. object or array.
1566   *
1567   * @param {*} value Value to test.
1568   *
1569   * @return {boolean} Whether value is object-like.
1570   */
1571  function isObjectLike(value) {
1572      return !!value && 'object' === typeof value;
1573  }
1574  
1575  /**
1576   * Creates and returns a new cache object.
1577   *
1578   * @return {Cache} Cache object.
1579   */
1580  function createCache() {
1581      /** @type {Cache} */
1582      var cache = {
1583          clear: function () {
1584              cache.head = null;
1585          },
1586      };
1587  
1588      return cache;
1589  }
1590  
1591  /**
1592   * Returns true if entries within the two arrays are strictly equal by
1593   * reference from a starting index.
1594   *
1595   * @param {*[]} a First array.
1596   * @param {*[]} b Second array.
1597   * @param {number} fromIndex Index from which to start comparison.
1598   *
1599   * @return {boolean} Whether arrays are shallowly equal.
1600   */
1601  function isShallowEqual(a, b, fromIndex) {
1602      var i;
1603  
1604      if (a.length !== b.length) {
1605          return false;
1606      }
1607  
1608      for (i = fromIndex; i < a.length; i++) {
1609          if (a[i] !== b[i]) {
1610              return false;
1611          }
1612      }
1613  
1614      return true;
1615  }
1616  
1617  /**
1618   * Returns a memoized selector function. The getDependants function argument is
1619   * called before the memoized selector and is expected to return an immutable
1620   * reference or array of references on which the selector depends for computing
1621   * its own return value. The memoize cache is preserved only as long as those
1622   * dependant references remain the same. If getDependants returns a different
1623   * reference(s), the cache is cleared and the selector value regenerated.
1624   *
1625   * @template {(...args: *[]) => *} S
1626   *
1627   * @param {S} selector Selector function.
1628   * @param {GetDependants=} getDependants Dependant getter returning an array of
1629   * references used in cache bust consideration.
1630   */
1631  /* harmony default export */ function rememo(selector, getDependants) {
1632      /** @type {WeakMap<*,*>} */
1633      var rootCache;
1634  
1635      /** @type {GetDependants} */
1636      var normalizedGetDependants = getDependants ? getDependants : arrayOf;
1637  
1638      /**
1639       * Returns the cache for a given dependants array. When possible, a WeakMap
1640       * will be used to create a unique cache for each set of dependants. This
1641       * is feasible due to the nature of WeakMap in allowing garbage collection
1642       * to occur on entries where the key object is no longer referenced. Since
1643       * WeakMap requires the key to be an object, this is only possible when the
1644       * dependant is object-like. The root cache is created as a hierarchy where
1645       * each top-level key is the first entry in a dependants set, the value a
1646       * WeakMap where each key is the next dependant, and so on. This continues
1647       * so long as the dependants are object-like. If no dependants are object-
1648       * like, then the cache is shared across all invocations.
1649       *
1650       * @see isObjectLike
1651       *
1652       * @param {*[]} dependants Selector dependants.
1653       *
1654       * @return {Cache} Cache object.
1655       */
1656  	function getCache(dependants) {
1657          var caches = rootCache,
1658              isUniqueByDependants = true,
1659              i,
1660              dependant,
1661              map,
1662              cache;
1663  
1664          for (i = 0; i < dependants.length; i++) {
1665              dependant = dependants[i];
1666  
1667              // Can only compose WeakMap from object-like key.
1668              if (!isObjectLike(dependant)) {
1669                  isUniqueByDependants = false;
1670                  break;
1671              }
1672  
1673              // Does current segment of cache already have a WeakMap?
1674              if (caches.has(dependant)) {
1675                  // Traverse into nested WeakMap.
1676                  caches = caches.get(dependant);
1677              } else {
1678                  // Create, set, and traverse into a new one.
1679                  map = new WeakMap();
1680                  caches.set(dependant, map);
1681                  caches = map;
1682              }
1683          }
1684  
1685          // We use an arbitrary (but consistent) object as key for the last item
1686          // in the WeakMap to serve as our running cache.
1687          if (!caches.has(LEAF_KEY)) {
1688              cache = createCache();
1689              cache.isUniqueByDependants = isUniqueByDependants;
1690              caches.set(LEAF_KEY, cache);
1691          }
1692  
1693          return caches.get(LEAF_KEY);
1694      }
1695  
1696      /**
1697       * Resets root memoization cache.
1698       */
1699  	function clear() {
1700          rootCache = new WeakMap();
1701      }
1702  
1703      /* eslint-disable jsdoc/check-param-names */
1704      /**
1705       * The augmented selector call, considering first whether dependants have
1706       * changed before passing it to underlying memoize function.
1707       *
1708       * @param {*}    source    Source object for derivation.
1709       * @param {...*} extraArgs Additional arguments to pass to selector.
1710       *
1711       * @return {*} Selector result.
1712       */
1713      /* eslint-enable jsdoc/check-param-names */
1714  	function callSelector(/* source, ...extraArgs */) {
1715          var len = arguments.length,
1716              cache,
1717              node,
1718              i,
1719              args,
1720              dependants;
1721  
1722          // Create copy of arguments (avoid leaking deoptimization).
1723          args = new Array(len);
1724          for (i = 0; i < len; i++) {
1725              args[i] = arguments[i];
1726          }
1727  
1728          dependants = normalizedGetDependants.apply(null, args);
1729          cache = getCache(dependants);
1730  
1731          // If not guaranteed uniqueness by dependants (primitive type), shallow
1732          // compare against last dependants and, if references have changed,
1733          // destroy cache to recalculate result.
1734          if (!cache.isUniqueByDependants) {
1735              if (
1736                  cache.lastDependants &&
1737                  !isShallowEqual(dependants, cache.lastDependants, 0)
1738              ) {
1739                  cache.clear();
1740              }
1741  
1742              cache.lastDependants = dependants;
1743          }
1744  
1745          node = cache.head;
1746          while (node) {
1747              // Check whether node arguments match arguments
1748              if (!isShallowEqual(node.args, args, 1)) {
1749                  node = node.next;
1750                  continue;
1751              }
1752  
1753              // At this point we can assume we've found a match
1754  
1755              // Surface matched node to head if not already
1756              if (node !== cache.head) {
1757                  // Adjust siblings to point to each other.
1758                  /** @type {CacheNode} */ (node.prev).next = node.next;
1759                  if (node.next) {
1760                      node.next.prev = node.prev;
1761                  }
1762  
1763                  node.next = cache.head;
1764                  node.prev = null;
1765                  /** @type {CacheNode} */ (cache.head).prev = node;
1766                  cache.head = node;
1767              }
1768  
1769              // Return immediately
1770              return node.val;
1771          }
1772  
1773          // No cached value found. Continue to insertion phase:
1774  
1775          node = /** @type {CacheNode} */ ({
1776              // Generate the result from original function
1777              val: selector.apply(null, args),
1778          });
1779  
1780          // Avoid including the source object in the cache.
1781          args[0] = null;
1782          node.args = args;
1783  
1784          // Don't need to check whether node is already head, since it would
1785          // have been returned above already if it was
1786  
1787          // Shift existing head down list
1788          if (cache.head) {
1789              cache.head.prev = node;
1790              node.next = cache.head;
1791          }
1792  
1793          cache.head = node;
1794  
1795          return node.val;
1796      }
1797  
1798      callSelector.getDependants = normalizedGetDependants;
1799      callSelector.clear = clear;
1800      clear();
1801  
1802      return /** @type {S & EnhancedSelector} */ (callSelector);
1803  }
1804  
1805  ;// ./node_modules/@wordpress/data/build-module/redux-store/metadata/selectors.js
1806  /* wp:polyfill */
1807  /**
1808   * WordPress dependencies
1809   */
1810  
1811  
1812  /**
1813   * Internal dependencies
1814   */
1815  
1816  
1817  
1818  /** @typedef {Record<string, import('./reducer').State>} State */
1819  /** @typedef {import('./reducer').StateValue} StateValue */
1820  /** @typedef {import('./reducer').Status} Status */
1821  
1822  /**
1823   * Returns the raw resolution state value for a given selector name,
1824   * and arguments set. May be undefined if the selector has never been resolved
1825   * or not resolved for the given set of arguments, otherwise true or false for
1826   * resolution started and completed respectively.
1827   *
1828   * @param {State}      state        Data state.
1829   * @param {string}     selectorName Selector name.
1830   * @param {unknown[]?} args         Arguments passed to selector.
1831   *
1832   * @return {StateValue|undefined} isResolving value.
1833   */
1834  function getResolutionState(state, selectorName, args) {
1835    const map = state[selectorName];
1836    if (!map) {
1837      return;
1838    }
1839    return map.get(selectorArgsToStateKey(args));
1840  }
1841  
1842  /**
1843   * Returns an `isResolving`-like value for a given selector name and arguments set.
1844   * Its value is either `undefined` if the selector has never been resolved or has been
1845   * invalidated, or a `true`/`false` boolean value if the resolution is in progress or
1846   * has finished, respectively.
1847   *
1848   * This is a legacy selector that was implemented when the "raw" internal data had
1849   * this `undefined | boolean` format. Nowadays the internal value is an object that
1850   * can be retrieved with `getResolutionState`.
1851   *
1852   * @deprecated
1853   *
1854   * @param {State}      state        Data state.
1855   * @param {string}     selectorName Selector name.
1856   * @param {unknown[]?} args         Arguments passed to selector.
1857   *
1858   * @return {boolean | undefined} isResolving value.
1859   */
1860  function getIsResolving(state, selectorName, args) {
1861    external_wp_deprecated_default()('wp.data.select( store ).getIsResolving', {
1862      since: '6.6',
1863      version: '6.8',
1864      alternative: 'wp.data.select( store ).getResolutionState'
1865    });
1866    const resolutionState = getResolutionState(state, selectorName, args);
1867    return resolutionState && resolutionState.status === 'resolving';
1868  }
1869  
1870  /**
1871   * Returns true if resolution has already been triggered for a given
1872   * selector name, and arguments set.
1873   *
1874   * @param {State}      state        Data state.
1875   * @param {string}     selectorName Selector name.
1876   * @param {unknown[]?} args         Arguments passed to selector.
1877   *
1878   * @return {boolean} Whether resolution has been triggered.
1879   */
1880  function hasStartedResolution(state, selectorName, args) {
1881    return getResolutionState(state, selectorName, args) !== undefined;
1882  }
1883  
1884  /**
1885   * Returns true if resolution has completed for a given selector
1886   * name, and arguments set.
1887   *
1888   * @param {State}      state        Data state.
1889   * @param {string}     selectorName Selector name.
1890   * @param {unknown[]?} args         Arguments passed to selector.
1891   *
1892   * @return {boolean} Whether resolution has completed.
1893   */
1894  function hasFinishedResolution(state, selectorName, args) {
1895    const status = getResolutionState(state, selectorName, args)?.status;
1896    return status === 'finished' || status === 'error';
1897  }
1898  
1899  /**
1900   * Returns true if resolution has failed for a given selector
1901   * name, and arguments set.
1902   *
1903   * @param {State}      state        Data state.
1904   * @param {string}     selectorName Selector name.
1905   * @param {unknown[]?} args         Arguments passed to selector.
1906   *
1907   * @return {boolean} Has resolution failed
1908   */
1909  function hasResolutionFailed(state, selectorName, args) {
1910    return getResolutionState(state, selectorName, args)?.status === 'error';
1911  }
1912  
1913  /**
1914   * Returns the resolution error for a given selector name, and arguments set.
1915   * Note it may be of an Error type, but may also be null, undefined, or anything else
1916   * that can be `throw`-n.
1917   *
1918   * @param {State}      state        Data state.
1919   * @param {string}     selectorName Selector name.
1920   * @param {unknown[]?} args         Arguments passed to selector.
1921   *
1922   * @return {Error|unknown} Last resolution error
1923   */
1924  function getResolutionError(state, selectorName, args) {
1925    const resolutionState = getResolutionState(state, selectorName, args);
1926    return resolutionState?.status === 'error' ? resolutionState.error : null;
1927  }
1928  
1929  /**
1930   * Returns true if resolution has been triggered but has not yet completed for
1931   * a given selector name, and arguments set.
1932   *
1933   * @param {State}      state        Data state.
1934   * @param {string}     selectorName Selector name.
1935   * @param {unknown[]?} args         Arguments passed to selector.
1936   *
1937   * @return {boolean} Whether resolution is in progress.
1938   */
1939  function isResolving(state, selectorName, args) {
1940    return getResolutionState(state, selectorName, args)?.status === 'resolving';
1941  }
1942  
1943  /**
1944   * Returns the list of the cached resolvers.
1945   *
1946   * @param {State} state Data state.
1947   *
1948   * @return {State} Resolvers mapped by args and selectorName.
1949   */
1950  function getCachedResolvers(state) {
1951    return state;
1952  }
1953  
1954  /**
1955   * Whether the store has any currently resolving selectors.
1956   *
1957   * @param {State} state Data state.
1958   *
1959   * @return {boolean} True if one or more selectors are resolving, false otherwise.
1960   */
1961  function hasResolvingSelectors(state) {
1962    return Object.values(state).some(selectorState =>
1963    /**
1964     * This uses the internal `_map` property of `EquivalentKeyMap` for
1965     * optimization purposes, since the `EquivalentKeyMap` implementation
1966     * does not support a `.values()` implementation.
1967     *
1968     * @see https://github.com/aduth/equivalent-key-map
1969     */
1970    Array.from(selectorState._map.values()).some(resolution => resolution[1]?.status === 'resolving'));
1971  }
1972  
1973  /**
1974   * Retrieves the total number of selectors, grouped per status.
1975   *
1976   * @param {State} state Data state.
1977   *
1978   * @return {Object} Object, containing selector totals by status.
1979   */
1980  const countSelectorsByStatus = rememo(state => {
1981    const selectorsByStatus = {};
1982    Object.values(state).forEach(selectorState =>
1983    /**
1984     * This uses the internal `_map` property of `EquivalentKeyMap` for
1985     * optimization purposes, since the `EquivalentKeyMap` implementation
1986     * does not support a `.values()` implementation.
1987     *
1988     * @see https://github.com/aduth/equivalent-key-map
1989     */
1990    Array.from(selectorState._map.values()).forEach(resolution => {
1991      var _resolution$1$status;
1992      const currentStatus = (_resolution$1$status = resolution[1]?.status) !== null && _resolution$1$status !== void 0 ? _resolution$1$status : 'error';
1993      if (!selectorsByStatus[currentStatus]) {
1994        selectorsByStatus[currentStatus] = 0;
1995      }
1996      selectorsByStatus[currentStatus]++;
1997    }));
1998    return selectorsByStatus;
1999  }, state => [state]);
2000  
2001  ;// ./node_modules/@wordpress/data/build-module/redux-store/metadata/actions.js
2002  /**
2003   * Returns an action object used in signalling that selector resolution has
2004   * started.
2005   *
2006   * @param {string}    selectorName Name of selector for which resolver triggered.
2007   * @param {unknown[]} args         Arguments to associate for uniqueness.
2008   *
2009   * @return {{ type: 'START_RESOLUTION', selectorName: string, args: unknown[] }} Action object.
2010   */
2011  function startResolution(selectorName, args) {
2012    return {
2013      type: 'START_RESOLUTION',
2014      selectorName,
2015      args
2016    };
2017  }
2018  
2019  /**
2020   * Returns an action object used in signalling that selector resolution has
2021   * completed.
2022   *
2023   * @param {string}    selectorName Name of selector for which resolver triggered.
2024   * @param {unknown[]} args         Arguments to associate for uniqueness.
2025   *
2026   * @return {{ type: 'FINISH_RESOLUTION', selectorName: string, args: unknown[] }} Action object.
2027   */
2028  function finishResolution(selectorName, args) {
2029    return {
2030      type: 'FINISH_RESOLUTION',
2031      selectorName,
2032      args
2033    };
2034  }
2035  
2036  /**
2037   * Returns an action object used in signalling that selector resolution has
2038   * failed.
2039   *
2040   * @param {string}        selectorName Name of selector for which resolver triggered.
2041   * @param {unknown[]}     args         Arguments to associate for uniqueness.
2042   * @param {Error|unknown} error        The error that caused the failure.
2043   *
2044   * @return {{ type: 'FAIL_RESOLUTION', selectorName: string, args: unknown[], error: Error|unknown }} Action object.
2045   */
2046  function failResolution(selectorName, args, error) {
2047    return {
2048      type: 'FAIL_RESOLUTION',
2049      selectorName,
2050      args,
2051      error
2052    };
2053  }
2054  
2055  /**
2056   * Returns an action object used in signalling that a batch of selector resolutions has
2057   * started.
2058   *
2059   * @param {string}      selectorName Name of selector for which resolver triggered.
2060   * @param {unknown[][]} args         Array of arguments to associate for uniqueness, each item
2061   *                                   is associated to a resolution.
2062   *
2063   * @return {{ type: 'START_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.
2064   */
2065  function startResolutions(selectorName, args) {
2066    return {
2067      type: 'START_RESOLUTIONS',
2068      selectorName,
2069      args
2070    };
2071  }
2072  
2073  /**
2074   * Returns an action object used in signalling that a batch of selector resolutions has
2075   * completed.
2076   *
2077   * @param {string}      selectorName Name of selector for which resolver triggered.
2078   * @param {unknown[][]} args         Array of arguments to associate for uniqueness, each item
2079   *                                   is associated to a resolution.
2080   *
2081   * @return {{ type: 'FINISH_RESOLUTIONS', selectorName: string, args: unknown[][] }} Action object.
2082   */
2083  function finishResolutions(selectorName, args) {
2084    return {
2085      type: 'FINISH_RESOLUTIONS',
2086      selectorName,
2087      args
2088    };
2089  }
2090  
2091  /**
2092   * Returns an action object used in signalling that a batch of selector resolutions has
2093   * completed and at least one of them has failed.
2094   *
2095   * @param {string}            selectorName Name of selector for which resolver triggered.
2096   * @param {unknown[]}         args         Array of arguments to associate for uniqueness, each item
2097   *                                         is associated to a resolution.
2098   * @param {(Error|unknown)[]} errors       Array of errors to associate for uniqueness, each item
2099   *                                         is associated to a resolution.
2100   * @return {{ type: 'FAIL_RESOLUTIONS', selectorName: string, args: unknown[], errors: Array<Error|unknown> }} Action object.
2101   */
2102  function failResolutions(selectorName, args, errors) {
2103    return {
2104      type: 'FAIL_RESOLUTIONS',
2105      selectorName,
2106      args,
2107      errors
2108    };
2109  }
2110  
2111  /**
2112   * Returns an action object used in signalling that we should invalidate the resolution cache.
2113   *
2114   * @param {string}    selectorName Name of selector for which resolver should be invalidated.
2115   * @param {unknown[]} args         Arguments to associate for uniqueness.
2116   *
2117   * @return {{ type: 'INVALIDATE_RESOLUTION', selectorName: string, args: any[] }} Action object.
2118   */
2119  function invalidateResolution(selectorName, args) {
2120    return {
2121      type: 'INVALIDATE_RESOLUTION',
2122      selectorName,
2123      args
2124    };
2125  }
2126  
2127  /**
2128   * Returns an action object used in signalling that the resolution
2129   * should be invalidated.
2130   *
2131   * @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.
2132   */
2133  function invalidateResolutionForStore() {
2134    return {
2135      type: 'INVALIDATE_RESOLUTION_FOR_STORE'
2136    };
2137  }
2138  
2139  /**
2140   * Returns an action object used in signalling that the resolution cache for a
2141   * given selectorName should be invalidated.
2142   *
2143   * @param {string} selectorName Name of selector for which all resolvers should
2144   *                              be invalidated.
2145   *
2146   * @return  {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.
2147   */
2148  function invalidateResolutionForStoreSelector(selectorName) {
2149    return {
2150      type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',
2151      selectorName
2152    };
2153  }
2154  
2155  ;// ./node_modules/@wordpress/data/build-module/redux-store/index.js
2156  /* wp:polyfill */
2157  /**
2158   * External dependencies
2159   */
2160  
2161  
2162  
2163  /**
2164   * WordPress dependencies
2165   */
2166  
2167  
2168  
2169  /**
2170   * Internal dependencies
2171   */
2172  
2173  
2174  
2175  
2176  
2177  
2178  
2179  
2180  
2181  
2182  
2183  /** @typedef {import('../types').DataRegistry} DataRegistry */
2184  /** @typedef {import('../types').ListenerFunction} ListenerFunction */
2185  /**
2186   * @typedef {import('../types').StoreDescriptor<C>} StoreDescriptor
2187   * @template {import('../types').AnyConfig} C
2188   */
2189  /**
2190   * @typedef {import('../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig
2191   * @template State
2192   * @template {Record<string,import('../types').ActionCreator>} Actions
2193   * @template Selectors
2194   */
2195  
2196  const trimUndefinedValues = array => {
2197    const result = [...array];
2198    for (let i = result.length - 1; i >= 0; i--) {
2199      if (result[i] === undefined) {
2200        result.splice(i, 1);
2201      }
2202    }
2203    return result;
2204  };
2205  
2206  /**
2207   * Creates a new object with the same keys, but with `callback()` called as
2208   * a transformer function on each of the values.
2209   *
2210   * @param {Object}   obj      The object to transform.
2211   * @param {Function} callback The function to transform each object value.
2212   * @return {Array} Transformed object.
2213   */
2214  const mapValues = (obj, callback) => Object.fromEntries(Object.entries(obj !== null && obj !== void 0 ? obj : {}).map(([key, value]) => [key, callback(value, key)]));
2215  
2216  // Convert  non serializable types to plain objects
2217  const devToolsReplacer = (key, state) => {
2218    if (state instanceof Map) {
2219      return Object.fromEntries(state);
2220    }
2221    if (state instanceof window.HTMLElement) {
2222      return null;
2223    }
2224    return state;
2225  };
2226  
2227  /**
2228   * Create a cache to track whether resolvers started running or not.
2229   *
2230   * @return {Object} Resolvers Cache.
2231   */
2232  function createResolversCache() {
2233    const cache = {};
2234    return {
2235      isRunning(selectorName, args) {
2236        return cache[selectorName] && cache[selectorName].get(trimUndefinedValues(args));
2237      },
2238      clear(selectorName, args) {
2239        if (cache[selectorName]) {
2240          cache[selectorName].delete(trimUndefinedValues(args));
2241        }
2242      },
2243      markAsRunning(selectorName, args) {
2244        if (!cache[selectorName]) {
2245          cache[selectorName] = new (equivalent_key_map_default())();
2246        }
2247        cache[selectorName].set(trimUndefinedValues(args), true);
2248      }
2249    };
2250  }
2251  function createBindingCache(bind) {
2252    const cache = new WeakMap();
2253    return {
2254      get(item, itemName) {
2255        let boundItem = cache.get(item);
2256        if (!boundItem) {
2257          boundItem = bind(item, itemName);
2258          cache.set(item, boundItem);
2259        }
2260        return boundItem;
2261      }
2262    };
2263  }
2264  
2265  /**
2266   * Creates a data store descriptor for the provided Redux store configuration containing
2267   * properties describing reducer, actions, selectors, controls and resolvers.
2268   *
2269   * @example
2270   * ```js
2271   * import { createReduxStore } from '@wordpress/data';
2272   *
2273   * const store = createReduxStore( 'demo', {
2274   *     reducer: ( state = 'OK' ) => state,
2275   *     selectors: {
2276   *         getValue: ( state ) => state,
2277   *     },
2278   * } );
2279   * ```
2280   *
2281   * @template State
2282   * @template {Record<string,import('../types').ActionCreator>} Actions
2283   * @template Selectors
2284   * @param {string}                                    key     Unique namespace identifier.
2285   * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties
2286   *                                                            describing reducer, actions, selectors,
2287   *                                                            and resolvers.
2288   *
2289   * @return   {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.
2290   */
2291  function createReduxStore(key, options) {
2292    const privateActions = {};
2293    const privateSelectors = {};
2294    const privateRegistrationFunctions = {
2295      privateActions,
2296      registerPrivateActions: actions => {
2297        Object.assign(privateActions, actions);
2298      },
2299      privateSelectors,
2300      registerPrivateSelectors: selectors => {
2301        Object.assign(privateSelectors, selectors);
2302      }
2303    };
2304    const storeDescriptor = {
2305      name: key,
2306      instantiate: registry => {
2307        /**
2308         * Stores listener functions registered with `subscribe()`.
2309         *
2310         * When functions register to listen to store changes with
2311         * `subscribe()` they get added here. Although Redux offers
2312         * its own `subscribe()` function directly, by wrapping the
2313         * subscription in this store instance it's possible to
2314         * optimize checking if the state has changed before calling
2315         * each listener.
2316         *
2317         * @type {Set<ListenerFunction>}
2318         */
2319        const listeners = new Set();
2320        const reducer = options.reducer;
2321        const thunkArgs = {
2322          registry,
2323          get dispatch() {
2324            return thunkActions;
2325          },
2326          get select() {
2327            return thunkSelectors;
2328          },
2329          get resolveSelect() {
2330            return getResolveSelectors();
2331          }
2332        };
2333        const store = instantiateReduxStore(key, options, registry, thunkArgs);
2334        // Expose the private registration functions on the store
2335        // so they can be copied to a sub registry in registry.js.
2336        lock(store, privateRegistrationFunctions);
2337        const resolversCache = createResolversCache();
2338        function bindAction(action) {
2339          return (...args) => Promise.resolve(store.dispatch(action(...args)));
2340        }
2341        const actions = {
2342          ...mapValues(actions_namespaceObject, bindAction),
2343          ...mapValues(options.actions, bindAction)
2344        };
2345        const boundPrivateActions = createBindingCache(bindAction);
2346        const allActions = new Proxy(() => {}, {
2347          get: (target, prop) => {
2348            const privateAction = privateActions[prop];
2349            return privateAction ? boundPrivateActions.get(privateAction, prop) : actions[prop];
2350          }
2351        });
2352        const thunkActions = new Proxy(allActions, {
2353          apply: (target, thisArg, [action]) => store.dispatch(action)
2354        });
2355        lock(actions, allActions);
2356        const resolvers = options.resolvers ? mapResolvers(options.resolvers) : {};
2357        function bindSelector(selector, selectorName) {
2358          if (selector.isRegistrySelector) {
2359            selector.registry = registry;
2360          }
2361          const boundSelector = (...args) => {
2362            args = normalize(selector, args);
2363            const state = store.__unstableOriginalGetState();
2364            // Before calling the selector, switch to the correct
2365            // registry.
2366            if (selector.isRegistrySelector) {
2367              selector.registry = registry;
2368            }
2369            return selector(state.root, ...args);
2370          };
2371  
2372          // Expose normalization method on the bound selector
2373          // in order that it can be called when fulfilling
2374          // the resolver.
2375          boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs;
2376          const resolver = resolvers[selectorName];
2377          if (!resolver) {
2378            boundSelector.hasResolver = false;
2379            return boundSelector;
2380          }
2381          return mapSelectorWithResolver(boundSelector, selectorName, resolver, store, resolversCache);
2382        }
2383        function bindMetadataSelector(metaDataSelector) {
2384          const boundSelector = (...args) => {
2385            const state = store.__unstableOriginalGetState();
2386            const originalSelectorName = args && args[0];
2387            const originalSelectorArgs = args && args[1];
2388            const targetSelector = options?.selectors?.[originalSelectorName];
2389  
2390            // Normalize the arguments passed to the target selector.
2391            if (originalSelectorName && targetSelector) {
2392              args[1] = normalize(targetSelector, originalSelectorArgs);
2393            }
2394            return metaDataSelector(state.metadata, ...args);
2395          };
2396          boundSelector.hasResolver = false;
2397          return boundSelector;
2398        }
2399        const selectors = {
2400          ...mapValues(selectors_namespaceObject, bindMetadataSelector),
2401          ...mapValues(options.selectors, bindSelector)
2402        };
2403        const boundPrivateSelectors = createBindingCache(bindSelector);
2404  
2405        // Pre-bind the private selectors that have been registered by the time of
2406        // instantiation, so that registry selectors are bound to the registry.
2407        for (const [selectorName, selector] of Object.entries(privateSelectors)) {
2408          boundPrivateSelectors.get(selector, selectorName);
2409        }
2410        const allSelectors = new Proxy(() => {}, {
2411          get: (target, prop) => {
2412            const privateSelector = privateSelectors[prop];
2413            return privateSelector ? boundPrivateSelectors.get(privateSelector, prop) : selectors[prop];
2414          }
2415        });
2416        const thunkSelectors = new Proxy(allSelectors, {
2417          apply: (target, thisArg, [selector]) => selector(store.__unstableOriginalGetState())
2418        });
2419        lock(selectors, allSelectors);
2420        const resolveSelectors = mapResolveSelectors(selectors, store);
2421        const suspendSelectors = mapSuspendSelectors(selectors, store);
2422        const getSelectors = () => selectors;
2423        const getActions = () => actions;
2424        const getResolveSelectors = () => resolveSelectors;
2425        const getSuspendSelectors = () => suspendSelectors;
2426  
2427        // We have some modules monkey-patching the store object
2428        // It's wrong to do so but until we refactor all of our effects to controls
2429        // We need to keep the same "store" instance here.
2430        store.__unstableOriginalGetState = store.getState;
2431        store.getState = () => store.__unstableOriginalGetState().root;
2432  
2433        // Customize subscribe behavior to call listeners only on effective change,
2434        // not on every dispatch.
2435        const subscribe = store && (listener => {
2436          listeners.add(listener);
2437          return () => listeners.delete(listener);
2438        });
2439        let lastState = store.__unstableOriginalGetState();
2440        store.subscribe(() => {
2441          const state = store.__unstableOriginalGetState();
2442          const hasChanged = state !== lastState;
2443          lastState = state;
2444          if (hasChanged) {
2445            for (const listener of listeners) {
2446              listener();
2447            }
2448          }
2449        });
2450  
2451        // This can be simplified to just { subscribe, getSelectors, getActions }
2452        // Once we remove the use function.
2453        return {
2454          reducer,
2455          store,
2456          actions,
2457          selectors,
2458          resolvers,
2459          getSelectors,
2460          getResolveSelectors,
2461          getSuspendSelectors,
2462          getActions,
2463          subscribe
2464        };
2465      }
2466    };
2467  
2468    // Expose the private registration functions on the store
2469    // descriptor. That's a natural choice since that's where the
2470    // public actions and selectors are stored .
2471    lock(storeDescriptor, privateRegistrationFunctions);
2472    return storeDescriptor;
2473  }
2474  
2475  /**
2476   * Creates a redux store for a namespace.
2477   *
2478   * @param {string}       key       Unique namespace identifier.
2479   * @param {Object}       options   Registered store options, with properties
2480   *                                 describing reducer, actions, selectors,
2481   *                                 and resolvers.
2482   * @param {DataRegistry} registry  Registry reference.
2483   * @param {Object}       thunkArgs Argument object for the thunk middleware.
2484   * @return {Object} Newly created redux store.
2485   */
2486  function instantiateReduxStore(key, options, registry, thunkArgs) {
2487    const controls = {
2488      ...options.controls,
2489      ...builtinControls
2490    };
2491    const normalizedControls = mapValues(controls, control => control.isRegistryControl ? control(registry) : control);
2492    const middlewares = [resolvers_cache_middleware(registry, key), promise_middleware, external_wp_reduxRoutine_default()(normalizedControls), createThunkMiddleware(thunkArgs)];
2493    const enhancers = [applyMiddleware(...middlewares)];
2494    if (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__) {
2495      enhancers.push(window.__REDUX_DEVTOOLS_EXTENSION__({
2496        name: key,
2497        instanceId: key,
2498        serialize: {
2499          replacer: devToolsReplacer
2500        }
2501      }));
2502    }
2503    const {
2504      reducer,
2505      initialState
2506    } = options;
2507    const enhancedReducer = combine_reducers_combineReducers({
2508      metadata: metadata_reducer,
2509      root: reducer
2510    });
2511    return createStore(enhancedReducer, {
2512      root: initialState
2513    }, (0,external_wp_compose_namespaceObject.compose)(enhancers));
2514  }
2515  
2516  /**
2517   * Maps selectors to functions that return a resolution promise for them
2518   *
2519   * @param {Object} selectors Selectors to map.
2520   * @param {Object} store     The redux store the selectors select from.
2521   *
2522   * @return {Object} Selectors mapped to their resolution functions.
2523   */
2524  function mapResolveSelectors(selectors, store) {
2525    const {
2526      getIsResolving,
2527      hasStartedResolution,
2528      hasFinishedResolution,
2529      hasResolutionFailed,
2530      isResolving,
2531      getCachedResolvers,
2532      getResolutionState,
2533      getResolutionError,
2534      hasResolvingSelectors,
2535      countSelectorsByStatus,
2536      ...storeSelectors
2537    } = selectors;
2538    return mapValues(storeSelectors, (selector, selectorName) => {
2539      // If the selector doesn't have a resolver, just convert the return value
2540      // (including exceptions) to a Promise, no additional extra behavior is needed.
2541      if (!selector.hasResolver) {
2542        return async (...args) => selector.apply(null, args);
2543      }
2544      return (...args) => {
2545        return new Promise((resolve, reject) => {
2546          const hasFinished = () => selectors.hasFinishedResolution(selectorName, args);
2547          const finalize = result => {
2548            const hasFailed = selectors.hasResolutionFailed(selectorName, args);
2549            if (hasFailed) {
2550              const error = selectors.getResolutionError(selectorName, args);
2551              reject(error);
2552            } else {
2553              resolve(result);
2554            }
2555          };
2556          const getResult = () => selector.apply(null, args);
2557          // Trigger the selector (to trigger the resolver)
2558          const result = getResult();
2559          if (hasFinished()) {
2560            return finalize(result);
2561          }
2562          const unsubscribe = store.subscribe(() => {
2563            if (hasFinished()) {
2564              unsubscribe();
2565              finalize(getResult());
2566            }
2567          });
2568        });
2569      };
2570    });
2571  }
2572  
2573  /**
2574   * Maps selectors to functions that throw a suspense promise if not yet resolved.
2575   *
2576   * @param {Object} selectors Selectors to map.
2577   * @param {Object} store     The redux store the selectors select from.
2578   *
2579   * @return {Object} Selectors mapped to their suspense functions.
2580   */
2581  function mapSuspendSelectors(selectors, store) {
2582    return mapValues(selectors, (selector, selectorName) => {
2583      // Selector without a resolver doesn't have any extra suspense behavior.
2584      if (!selector.hasResolver) {
2585        return selector;
2586      }
2587      return (...args) => {
2588        const result = selector.apply(null, args);
2589        if (selectors.hasFinishedResolution(selectorName, args)) {
2590          if (selectors.hasResolutionFailed(selectorName, args)) {
2591            throw selectors.getResolutionError(selectorName, args);
2592          }
2593          return result;
2594        }
2595        throw new Promise(resolve => {
2596          const unsubscribe = store.subscribe(() => {
2597            if (selectors.hasFinishedResolution(selectorName, args)) {
2598              resolve();
2599              unsubscribe();
2600            }
2601          });
2602        });
2603      };
2604    });
2605  }
2606  
2607  /**
2608   * Convert resolvers to a normalized form, an object with `fulfill` method and
2609   * optional methods like `isFulfilled`.
2610   *
2611   * @param {Object} resolvers Resolver to convert
2612   */
2613  function mapResolvers(resolvers) {
2614    return mapValues(resolvers, resolver => {
2615      if (resolver.fulfill) {
2616        return resolver;
2617      }
2618      return {
2619        ...resolver,
2620        // Copy the enumerable properties of the resolver function.
2621        fulfill: resolver // Add the fulfill method.
2622      };
2623    });
2624  }
2625  
2626  /**
2627   * Returns a selector with a matched resolver.
2628   * Resolvers are side effects invoked once per argument set of a given selector call,
2629   * used in ensuring that the data needs for the selector are satisfied.
2630   *
2631   * @param {Object} selector       The selector function to be bound.
2632   * @param {string} selectorName   The selector name.
2633   * @param {Object} resolver       Resolver to call.
2634   * @param {Object} store          The redux store to which the resolvers should be mapped.
2635   * @param {Object} resolversCache Resolvers Cache.
2636   */
2637  function mapSelectorWithResolver(selector, selectorName, resolver, store, resolversCache) {
2638    function fulfillSelector(args) {
2639      const state = store.getState();
2640      if (resolversCache.isRunning(selectorName, args) || typeof resolver.isFulfilled === 'function' && resolver.isFulfilled(state, ...args)) {
2641        return;
2642      }
2643      const {
2644        metadata
2645      } = store.__unstableOriginalGetState();
2646      if (hasStartedResolution(metadata, selectorName, args)) {
2647        return;
2648      }
2649      resolversCache.markAsRunning(selectorName, args);
2650      setTimeout(async () => {
2651        resolversCache.clear(selectorName, args);
2652        store.dispatch(startResolution(selectorName, args));
2653        try {
2654          const action = resolver.fulfill(...args);
2655          if (action) {
2656            await store.dispatch(action);
2657          }
2658          store.dispatch(finishResolution(selectorName, args));
2659        } catch (error) {
2660          store.dispatch(failResolution(selectorName, args, error));
2661        }
2662      }, 0);
2663    }
2664    const selectorResolver = (...args) => {
2665      args = normalize(selector, args);
2666      fulfillSelector(args);
2667      return selector(...args);
2668    };
2669    selectorResolver.hasResolver = true;
2670    return selectorResolver;
2671  }
2672  
2673  /**
2674   * Applies selector's normalization function to the given arguments
2675   * if it exists.
2676   *
2677   * @param {Object} selector The selector potentially with a normalization method property.
2678   * @param {Array}  args     selector arguments to normalize.
2679   * @return {Array} Potentially normalized arguments.
2680   */
2681  function normalize(selector, args) {
2682    if (selector.__unstableNormalizeArgs && typeof selector.__unstableNormalizeArgs === 'function' && args?.length) {
2683      return selector.__unstableNormalizeArgs(args);
2684    }
2685    return args;
2686  }
2687  
2688  ;// ./node_modules/@wordpress/data/build-module/store/index.js
2689  const coreDataStore = {
2690    name: 'core/data',
2691    instantiate(registry) {
2692      const getCoreDataSelector = selectorName => (key, ...args) => {
2693        return registry.select(key)[selectorName](...args);
2694      };
2695      const getCoreDataAction = actionName => (key, ...args) => {
2696        return registry.dispatch(key)[actionName](...args);
2697      };
2698      return {
2699        getSelectors() {
2700          return Object.fromEntries(['getIsResolving', 'hasStartedResolution', 'hasFinishedResolution', 'isResolving', 'getCachedResolvers'].map(selectorName => [selectorName, getCoreDataSelector(selectorName)]));
2701        },
2702        getActions() {
2703          return Object.fromEntries(['startResolution', 'finishResolution', 'invalidateResolution', 'invalidateResolutionForStore', 'invalidateResolutionForStoreSelector'].map(actionName => [actionName, getCoreDataAction(actionName)]));
2704        },
2705        subscribe() {
2706          // There's no reasons to trigger any listener when we subscribe to this store
2707          // because there's no state stored in this store that need to retrigger selectors
2708          // if a change happens, the corresponding store where the tracking stated live
2709          // would have already triggered a "subscribe" call.
2710          return () => () => {};
2711        }
2712      };
2713    }
2714  };
2715  /* harmony default export */ const store = (coreDataStore);
2716  
2717  ;// ./node_modules/@wordpress/data/build-module/utils/emitter.js
2718  /* wp:polyfill */
2719  /**
2720   * Create an event emitter.
2721   *
2722   * @return The event emitter.
2723   */
2724  function createEmitter() {
2725    let isPaused = false;
2726    let isPending = false;
2727    const listeners = new Set();
2728    const notifyListeners = () =>
2729    // We use Array.from to clone the listeners Set
2730    // This ensures that we don't run a listener
2731    // that was added as a response to another listener.
2732    Array.from(listeners).forEach(listener => listener());
2733    return {
2734      get isPaused() {
2735        return isPaused;
2736      },
2737      subscribe(listener) {
2738        listeners.add(listener);
2739        return () => listeners.delete(listener);
2740      },
2741      pause() {
2742        isPaused = true;
2743      },
2744      resume() {
2745        isPaused = false;
2746        if (isPending) {
2747          isPending = false;
2748          notifyListeners();
2749        }
2750      },
2751      emit() {
2752        if (isPaused) {
2753          isPending = true;
2754          return;
2755        }
2756        notifyListeners();
2757      }
2758    };
2759  }
2760  
2761  ;// ./node_modules/@wordpress/data/build-module/registry.js
2762  /* wp:polyfill */
2763  /**
2764   * WordPress dependencies
2765   */
2766  
2767  
2768  /**
2769   * Internal dependencies
2770   */
2771  
2772  
2773  
2774  
2775  
2776  /** @typedef {import('./types').StoreDescriptor} StoreDescriptor */
2777  
2778  /**
2779   * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.
2780   *
2781   * @property {Function} registerGenericStore Given a namespace key and settings
2782   *                                           object, registers a new generic
2783   *                                           store.
2784   * @property {Function} registerStore        Given a namespace key and settings
2785   *                                           object, registers a new namespace
2786   *                                           store.
2787   * @property {Function} subscribe            Given a function callback, invokes
2788   *                                           the callback on any change to state
2789   *                                           within any registered store.
2790   * @property {Function} select               Given a namespace key, returns an
2791   *                                           object of the  store's registered
2792   *                                           selectors.
2793   * @property {Function} dispatch             Given a namespace key, returns an
2794   *                                           object of the store's registered
2795   *                                           action dispatchers.
2796   */
2797  
2798  /**
2799   * @typedef {Object} WPDataPlugin An object of registry function overrides.
2800   *
2801   * @property {Function} registerStore registers store.
2802   */
2803  
2804  function getStoreName(storeNameOrDescriptor) {
2805    return typeof storeNameOrDescriptor === 'string' ? storeNameOrDescriptor : storeNameOrDescriptor.name;
2806  }
2807  /**
2808   * Creates a new store registry, given an optional object of initial store
2809   * configurations.
2810   *
2811   * @param {Object}  storeConfigs Initial store configurations.
2812   * @param {?Object} parent       Parent registry.
2813   *
2814   * @return {WPDataRegistry} Data registry.
2815   */
2816  function createRegistry(storeConfigs = {}, parent = null) {
2817    const stores = {};
2818    const emitter = createEmitter();
2819    let listeningStores = null;
2820  
2821    /**
2822     * Global listener called for each store's update.
2823     */
2824    function globalListener() {
2825      emitter.emit();
2826    }
2827  
2828    /**
2829     * Subscribe to changes to any data, either in all stores in registry, or
2830     * in one specific store.
2831     *
2832     * @param {Function}                listener              Listener function.
2833     * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.
2834     *
2835     * @return {Function} Unsubscribe function.
2836     */
2837    const subscribe = (listener, storeNameOrDescriptor) => {
2838      // subscribe to all stores
2839      if (!storeNameOrDescriptor) {
2840        return emitter.subscribe(listener);
2841      }
2842  
2843      // subscribe to one store
2844      const storeName = getStoreName(storeNameOrDescriptor);
2845      const store = stores[storeName];
2846      if (store) {
2847        return store.subscribe(listener);
2848      }
2849  
2850      // Trying to access a store that hasn't been registered,
2851      // this is a pattern rarely used but seen in some places.
2852      // We fallback to global `subscribe` here for backward-compatibility for now.
2853      // See https://github.com/WordPress/gutenberg/pull/27466 for more info.
2854      if (!parent) {
2855        return emitter.subscribe(listener);
2856      }
2857      return parent.subscribe(listener, storeNameOrDescriptor);
2858    };
2859  
2860    /**
2861     * Calls a selector given the current state and extra arguments.
2862     *
2863     * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
2864     *                                                       or the store descriptor.
2865     *
2866     * @return {*} The selector's returned value.
2867     */
2868    function select(storeNameOrDescriptor) {
2869      const storeName = getStoreName(storeNameOrDescriptor);
2870      listeningStores?.add(storeName);
2871      const store = stores[storeName];
2872      if (store) {
2873        return store.getSelectors();
2874      }
2875      return parent?.select(storeName);
2876    }
2877    function __unstableMarkListeningStores(callback, ref) {
2878      listeningStores = new Set();
2879      try {
2880        return callback.call(this);
2881      } finally {
2882        ref.current = Array.from(listeningStores);
2883        listeningStores = null;
2884      }
2885    }
2886  
2887    /**
2888     * Given a store descriptor, returns an object containing the store's selectors pre-bound to
2889     * state so that you only need to supply additional arguments, and modified so that they return
2890     * promises that resolve to their eventual values, after any resolvers have ran.
2891     *
2892     * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
2893     *                                                       convention of passing the store name is
2894     *                                                       also supported.
2895     *
2896     * @return {Object} Each key of the object matches the name of a selector.
2897     */
2898    function resolveSelect(storeNameOrDescriptor) {
2899      const storeName = getStoreName(storeNameOrDescriptor);
2900      listeningStores?.add(storeName);
2901      const store = stores[storeName];
2902      if (store) {
2903        return store.getResolveSelectors();
2904      }
2905      return parent && parent.resolveSelect(storeName);
2906    }
2907  
2908    /**
2909     * Given a store descriptor, returns an object containing the store's selectors pre-bound to
2910     * state so that you only need to supply additional arguments, and modified so that they throw
2911     * promises in case the selector is not resolved yet.
2912     *
2913     * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
2914     *                                                       convention of passing the store name is
2915     *                                                       also supported.
2916     *
2917     * @return {Object} Object containing the store's suspense-wrapped selectors.
2918     */
2919    function suspendSelect(storeNameOrDescriptor) {
2920      const storeName = getStoreName(storeNameOrDescriptor);
2921      listeningStores?.add(storeName);
2922      const store = stores[storeName];
2923      if (store) {
2924        return store.getSuspendSelectors();
2925      }
2926      return parent && parent.suspendSelect(storeName);
2927    }
2928  
2929    /**
2930     * Returns the available actions for a part of the state.
2931     *
2932     * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
2933     *                                                       or the store descriptor.
2934     *
2935     * @return {*} The action's returned value.
2936     */
2937    function dispatch(storeNameOrDescriptor) {
2938      const storeName = getStoreName(storeNameOrDescriptor);
2939      const store = stores[storeName];
2940      if (store) {
2941        return store.getActions();
2942      }
2943      return parent && parent.dispatch(storeName);
2944    }
2945  
2946    //
2947    // Deprecated
2948    // TODO: Remove this after `use()` is removed.
2949    function withPlugins(attributes) {
2950      return Object.fromEntries(Object.entries(attributes).map(([key, attribute]) => {
2951        if (typeof attribute !== 'function') {
2952          return [key, attribute];
2953        }
2954        return [key, function () {
2955          return registry[key].apply(null, arguments);
2956        }];
2957      }));
2958    }
2959  
2960    /**
2961     * Registers a store instance.
2962     *
2963     * @param {string}   name        Store registry name.
2964     * @param {Function} createStore Function that creates a store object (getSelectors, getActions, subscribe).
2965     */
2966    function registerStoreInstance(name, createStore) {
2967      if (stores[name]) {
2968        // eslint-disable-next-line no-console
2969        console.error('Store "' + name + '" is already registered.');
2970        return stores[name];
2971      }
2972      const store = createStore();
2973      if (typeof store.getSelectors !== 'function') {
2974        throw new TypeError('store.getSelectors must be a function');
2975      }
2976      if (typeof store.getActions !== 'function') {
2977        throw new TypeError('store.getActions must be a function');
2978      }
2979      if (typeof store.subscribe !== 'function') {
2980        throw new TypeError('store.subscribe must be a function');
2981      }
2982      // The emitter is used to keep track of active listeners when the registry
2983      // get paused, that way, when resumed we should be able to call all these
2984      // pending listeners.
2985      store.emitter = createEmitter();
2986      const currentSubscribe = store.subscribe;
2987      store.subscribe = listener => {
2988        const unsubscribeFromEmitter = store.emitter.subscribe(listener);
2989        const unsubscribeFromStore = currentSubscribe(() => {
2990          if (store.emitter.isPaused) {
2991            store.emitter.emit();
2992            return;
2993          }
2994          listener();
2995        });
2996        return () => {
2997          unsubscribeFromStore?.();
2998          unsubscribeFromEmitter?.();
2999        };
3000      };
3001      stores[name] = store;
3002      store.subscribe(globalListener);
3003  
3004      // Copy private actions and selectors from the parent store.
3005      if (parent) {
3006        try {
3007          unlock(store.store).registerPrivateActions(unlock(parent).privateActionsOf(name));
3008          unlock(store.store).registerPrivateSelectors(unlock(parent).privateSelectorsOf(name));
3009        } catch (e) {
3010          // unlock() throws if store.store was not locked.
3011          // The error indicates there's nothing to do here so let's
3012          // ignore it.
3013        }
3014      }
3015      return store;
3016    }
3017  
3018    /**
3019     * Registers a new store given a store descriptor.
3020     *
3021     * @param {StoreDescriptor} store Store descriptor.
3022     */
3023    function register(store) {
3024      registerStoreInstance(store.name, () => store.instantiate(registry));
3025    }
3026    function registerGenericStore(name, store) {
3027      external_wp_deprecated_default()('wp.data.registerGenericStore', {
3028        since: '5.9',
3029        alternative: 'wp.data.register( storeDescriptor )'
3030      });
3031      registerStoreInstance(name, () => store);
3032    }
3033  
3034    /**
3035     * Registers a standard `@wordpress/data` store.
3036     *
3037     * @param {string} storeName Unique namespace identifier.
3038     * @param {Object} options   Store description (reducer, actions, selectors, resolvers).
3039     *
3040     * @return {Object} Registered store object.
3041     */
3042    function registerStore(storeName, options) {
3043      if (!options.reducer) {
3044        throw new TypeError('Must specify store reducer');
3045      }
3046      const store = registerStoreInstance(storeName, () => createReduxStore(storeName, options).instantiate(registry));
3047      return store.store;
3048    }
3049    function batch(callback) {
3050      // If we're already batching, just call the callback.
3051      if (emitter.isPaused) {
3052        callback();
3053        return;
3054      }
3055      emitter.pause();
3056      Object.values(stores).forEach(store => store.emitter.pause());
3057      try {
3058        callback();
3059      } finally {
3060        emitter.resume();
3061        Object.values(stores).forEach(store => store.emitter.resume());
3062      }
3063    }
3064    let registry = {
3065      batch,
3066      stores,
3067      namespaces: stores,
3068      // TODO: Deprecate/remove this.
3069      subscribe,
3070      select,
3071      resolveSelect,
3072      suspendSelect,
3073      dispatch,
3074      use,
3075      register,
3076      registerGenericStore,
3077      registerStore,
3078      __unstableMarkListeningStores
3079    };
3080  
3081    //
3082    // TODO:
3083    // This function will be deprecated as soon as it is no longer internally referenced.
3084    function use(plugin, options) {
3085      if (!plugin) {
3086        return;
3087      }
3088      registry = {
3089        ...registry,
3090        ...plugin(registry, options)
3091      };
3092      return registry;
3093    }
3094    registry.register(store);
3095    for (const [name, config] of Object.entries(storeConfigs)) {
3096      registry.register(createReduxStore(name, config));
3097    }
3098    if (parent) {
3099      parent.subscribe(globalListener);
3100    }
3101    const registryWithPlugins = withPlugins(registry);
3102    lock(registryWithPlugins, {
3103      privateActionsOf: name => {
3104        try {
3105          return unlock(stores[name].store).privateActions;
3106        } catch (e) {
3107          // unlock() throws an error the store was not locked – this means
3108          // there no private actions are available
3109          return {};
3110        }
3111      },
3112      privateSelectorsOf: name => {
3113        try {
3114          return unlock(stores[name].store).privateSelectors;
3115        } catch (e) {
3116          return {};
3117        }
3118      }
3119    });
3120    return registryWithPlugins;
3121  }
3122  
3123  ;// ./node_modules/@wordpress/data/build-module/default-registry.js
3124  /**
3125   * Internal dependencies
3126   */
3127  
3128  /* harmony default export */ const default_registry = (createRegistry());
3129  
3130  ;// ./node_modules/is-plain-object/dist/is-plain-object.mjs
3131  /*!
3132   * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
3133   *
3134   * Copyright (c) 2014-2017, Jon Schlinkert.
3135   * Released under the MIT License.
3136   */
3137  
3138  function is_plain_object_isObject(o) {
3139    return Object.prototype.toString.call(o) === '[object Object]';
3140  }
3141  
3142  function is_plain_object_isPlainObject(o) {
3143    var ctor,prot;
3144  
3145    if (is_plain_object_isObject(o) === false) return false;
3146  
3147    // If has modified constructor
3148    ctor = o.constructor;
3149    if (ctor === undefined) return true;
3150  
3151    // If has modified prototype
3152    prot = ctor.prototype;
3153    if (is_plain_object_isObject(prot) === false) return false;
3154  
3155    // If constructor does not have an Object-specific method
3156    if (prot.hasOwnProperty('isPrototypeOf') === false) {
3157      return false;
3158    }
3159  
3160    // Most likely a plain Object
3161    return true;
3162  }
3163  
3164  
3165  
3166  // EXTERNAL MODULE: ./node_modules/deepmerge/dist/cjs.js
3167  var cjs = __webpack_require__(66);
3168  var cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);
3169  ;// ./node_modules/@wordpress/data/build-module/plugins/persistence/storage/object.js
3170  let objectStorage;
3171  const storage = {
3172    getItem(key) {
3173      if (!objectStorage || !objectStorage[key]) {
3174        return null;
3175      }
3176      return objectStorage[key];
3177    },
3178    setItem(key, value) {
3179      if (!objectStorage) {
3180        storage.clear();
3181      }
3182      objectStorage[key] = String(value);
3183    },
3184    clear() {
3185      objectStorage = Object.create(null);
3186    }
3187  };
3188  /* harmony default export */ const object = (storage);
3189  
3190  ;// ./node_modules/@wordpress/data/build-module/plugins/persistence/storage/default.js
3191  /**
3192   * Internal dependencies
3193   */
3194  
3195  let default_storage;
3196  try {
3197    // Private Browsing in Safari 10 and earlier will throw an error when
3198    // attempting to set into localStorage. The test here is intentional in
3199    // causing a thrown error as condition for using fallback object storage.
3200    default_storage = window.localStorage;
3201    default_storage.setItem('__wpDataTestLocalStorage', '');
3202    default_storage.removeItem('__wpDataTestLocalStorage');
3203  } catch (error) {
3204    default_storage = object;
3205  }
3206  /* harmony default export */ const storage_default = (default_storage);
3207  
3208  ;// ./node_modules/@wordpress/data/build-module/plugins/persistence/index.js
3209  /* wp:polyfill */
3210  /**
3211   * External dependencies
3212   */
3213  
3214  
3215  
3216  /**
3217   * Internal dependencies
3218   */
3219  
3220  
3221  
3222  /** @typedef {import('../../registry').WPDataRegistry} WPDataRegistry */
3223  
3224  /** @typedef {import('../../registry').WPDataPlugin} WPDataPlugin */
3225  
3226  /**
3227   * @typedef {Object} WPDataPersistencePluginOptions Persistence plugin options.
3228   *
3229   * @property {Storage} storage    Persistent storage implementation. This must
3230   *                                at least implement `getItem` and `setItem` of
3231   *                                the Web Storage API.
3232   * @property {string}  storageKey Key on which to set in persistent storage.
3233   */
3234  
3235  /**
3236   * Default plugin storage.
3237   *
3238   * @type {Storage}
3239   */
3240  const DEFAULT_STORAGE = storage_default;
3241  
3242  /**
3243   * Default plugin storage key.
3244   *
3245   * @type {string}
3246   */
3247  const DEFAULT_STORAGE_KEY = 'WP_DATA';
3248  
3249  /**
3250   * Higher-order reducer which invokes the original reducer only if state is
3251   * inequal from that of the action's `nextState` property, otherwise returning
3252   * the original state reference.
3253   *
3254   * @param {Function} reducer Original reducer.
3255   *
3256   * @return {Function} Enhanced reducer.
3257   */
3258  const withLazySameState = reducer => (state, action) => {
3259    if (action.nextState === state) {
3260      return state;
3261    }
3262    return reducer(state, action);
3263  };
3264  
3265  /**
3266   * Creates a persistence interface, exposing getter and setter methods (`get`
3267   * and `set` respectively).
3268   *
3269   * @param {WPDataPersistencePluginOptions} options Plugin options.
3270   *
3271   * @return {Object} Persistence interface.
3272   */
3273  function createPersistenceInterface(options) {
3274    const {
3275      storage = DEFAULT_STORAGE,
3276      storageKey = DEFAULT_STORAGE_KEY
3277    } = options;
3278    let data;
3279  
3280    /**
3281     * Returns the persisted data as an object, defaulting to an empty object.
3282     *
3283     * @return {Object} Persisted data.
3284     */
3285    function getData() {
3286      if (data === undefined) {
3287        // If unset, getItem is expected to return null. Fall back to
3288        // empty object.
3289        const persisted = storage.getItem(storageKey);
3290        if (persisted === null) {
3291          data = {};
3292        } else {
3293          try {
3294            data = JSON.parse(persisted);
3295          } catch (error) {
3296            // Similarly, should any error be thrown during parse of
3297            // the string (malformed JSON), fall back to empty object.
3298            data = {};
3299          }
3300        }
3301      }
3302      return data;
3303    }
3304  
3305    /**
3306     * Merges an updated reducer state into the persisted data.
3307     *
3308     * @param {string} key   Key to update.
3309     * @param {*}      value Updated value.
3310     */
3311    function setData(key, value) {
3312      data = {
3313        ...data,
3314        [key]: value
3315      };
3316      storage.setItem(storageKey, JSON.stringify(data));
3317    }
3318    return {
3319      get: getData,
3320      set: setData
3321    };
3322  }
3323  
3324  /**
3325   * Data plugin to persist store state into a single storage key.
3326   *
3327   * @param {WPDataRegistry}                  registry      Data registry.
3328   * @param {?WPDataPersistencePluginOptions} pluginOptions Plugin options.
3329   *
3330   * @return {WPDataPlugin} Data plugin.
3331   */
3332  function persistencePlugin(registry, pluginOptions) {
3333    const persistence = createPersistenceInterface(pluginOptions);
3334  
3335    /**
3336     * Creates an enhanced store dispatch function, triggering the state of the
3337     * given store name to be persisted when changed.
3338     *
3339     * @param {Function}       getState  Function which returns current state.
3340     * @param {string}         storeName Store name.
3341     * @param {?Array<string>} keys      Optional subset of keys to save.
3342     *
3343     * @return {Function} Enhanced dispatch function.
3344     */
3345    function createPersistOnChange(getState, storeName, keys) {
3346      let getPersistedState;
3347      if (Array.isArray(keys)) {
3348        // Given keys, the persisted state should by produced as an object
3349        // of the subset of keys. This implementation uses combineReducers
3350        // to leverage its behavior of returning the same object when none
3351        // of the property values changes. This allows a strict reference
3352        // equality to bypass a persistence set on an unchanging state.
3353        const reducers = keys.reduce((accumulator, key) => Object.assign(accumulator, {
3354          [key]: (state, action) => action.nextState[key]
3355        }), {});
3356        getPersistedState = withLazySameState(build_module_combineReducers(reducers));
3357      } else {
3358        getPersistedState = (state, action) => action.nextState;
3359      }
3360      let lastState = getPersistedState(undefined, {
3361        nextState: getState()
3362      });
3363      return () => {
3364        const state = getPersistedState(lastState, {
3365          nextState: getState()
3366        });
3367        if (state !== lastState) {
3368          persistence.set(storeName, state);
3369          lastState = state;
3370        }
3371      };
3372    }
3373    return {
3374      registerStore(storeName, options) {
3375        if (!options.persist) {
3376          return registry.registerStore(storeName, options);
3377        }
3378  
3379        // Load from persistence to use as initial state.
3380        const persistedState = persistence.get()[storeName];
3381        if (persistedState !== undefined) {
3382          let initialState = options.reducer(options.initialState, {
3383            type: '@@WP/PERSISTENCE_RESTORE'
3384          });
3385          if (is_plain_object_isPlainObject(initialState) && is_plain_object_isPlainObject(persistedState)) {
3386            // If state is an object, ensure that:
3387            // - Other keys are left intact when persisting only a
3388            //   subset of keys.
3389            // - New keys in what would otherwise be used as initial
3390            //   state are deeply merged as base for persisted value.
3391            initialState = cjs_default()(initialState, persistedState, {
3392              isMergeableObject: is_plain_object_isPlainObject
3393            });
3394          } else {
3395            // If there is a mismatch in object-likeness of default
3396            // initial or persisted state, defer to persisted value.
3397            initialState = persistedState;
3398          }
3399          options = {
3400            ...options,
3401            initialState
3402          };
3403        }
3404        const store = registry.registerStore(storeName, options);
3405        store.subscribe(createPersistOnChange(store.getState, storeName, options.persist));
3406        return store;
3407      }
3408    };
3409  }
3410  persistencePlugin.__unstableMigrate = () => {};
3411  /* harmony default export */ const persistence = (persistencePlugin);
3412  
3413  ;// ./node_modules/@wordpress/data/build-module/plugins/index.js
3414  
3415  
3416  ;// external ["wp","priorityQueue"]
3417  const external_wp_priorityQueue_namespaceObject = window["wp"]["priorityQueue"];
3418  ;// external ["wp","element"]
3419  const external_wp_element_namespaceObject = window["wp"]["element"];
3420  ;// external ["wp","isShallowEqual"]
3421  const external_wp_isShallowEqual_namespaceObject = window["wp"]["isShallowEqual"];
3422  var external_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_wp_isShallowEqual_namespaceObject);
3423  ;// ./node_modules/@wordpress/data/build-module/components/registry-provider/context.js
3424  /**
3425   * WordPress dependencies
3426   */
3427  
3428  
3429  /**
3430   * Internal dependencies
3431   */
3432  
3433  const Context = (0,external_wp_element_namespaceObject.createContext)(default_registry);
3434  const {
3435    Consumer,
3436    Provider
3437  } = Context;
3438  
3439  /**
3440   * A custom react Context consumer exposing the provided `registry` to
3441   * children components. Used along with the RegistryProvider.
3442   *
3443   * You can read more about the react context api here:
3444   * https://react.dev/learn/passing-data-deeply-with-context#step-3-provide-the-context
3445   *
3446   * @example
3447   * ```js
3448   * import {
3449   *   RegistryProvider,
3450   *   RegistryConsumer,
3451   *   createRegistry
3452   * } from '@wordpress/data';
3453   *
3454   * const registry = createRegistry( {} );
3455   *
3456   * const App = ( { props } ) => {
3457   *   return <RegistryProvider value={ registry }>
3458   *     <div>Hello There</div>
3459   *     <RegistryConsumer>
3460   *       { ( registry ) => (
3461   *         <ComponentUsingRegistry
3462   *                 { ...props }
3463   *               registry={ registry }
3464   *       ) }
3465   *     </RegistryConsumer>
3466   *   </RegistryProvider>
3467   * }
3468   * ```
3469   */
3470  const RegistryConsumer = Consumer;
3471  
3472  /**
3473   * A custom Context provider for exposing the provided `registry` to children
3474   * components via a consumer.
3475   *
3476   * See <a name="#RegistryConsumer">RegistryConsumer</a> documentation for
3477   * example.
3478   */
3479  /* harmony default export */ const context = (Provider);
3480  
3481  ;// ./node_modules/@wordpress/data/build-module/components/registry-provider/use-registry.js
3482  /**
3483   * WordPress dependencies
3484   */
3485  
3486  
3487  /**
3488   * Internal dependencies
3489   */
3490  
3491  
3492  /**
3493   * A custom react hook exposing the registry context for use.
3494   *
3495   * This exposes the `registry` value provided via the
3496   * <a href="#RegistryProvider">Registry Provider</a> to a component implementing
3497   * this hook.
3498   *
3499   * It acts similarly to the `useContext` react hook.
3500   *
3501   * Note: Generally speaking, `useRegistry` is a low level hook that in most cases
3502   * won't be needed for implementation. Most interactions with the `@wordpress/data`
3503   * API can be performed via the `useSelect` hook,  or the `withSelect` and
3504   * `withDispatch` higher order components.
3505   *
3506   * @example
3507   * ```js
3508   * import {
3509   *   RegistryProvider,
3510   *   createRegistry,
3511   *   useRegistry,
3512   * } from '@wordpress/data';
3513   *
3514   * const registry = createRegistry( {} );
3515   *
3516   * const SomeChildUsingRegistry = ( props ) => {
3517   *   const registry = useRegistry();
3518   *   // ...logic implementing the registry in other react hooks.
3519   * };
3520   *
3521   *
3522   * const ParentProvidingRegistry = ( props ) => {
3523   *   return <RegistryProvider value={ registry }>
3524   *     <SomeChildUsingRegistry { ...props } />
3525   *   </RegistryProvider>
3526   * };
3527   * ```
3528   *
3529   * @return {Function}  A custom react hook exposing the registry context value.
3530   */
3531  function useRegistry() {
3532    return (0,external_wp_element_namespaceObject.useContext)(Context);
3533  }
3534  
3535  ;// ./node_modules/@wordpress/data/build-module/components/async-mode-provider/context.js
3536  /**
3537   * WordPress dependencies
3538   */
3539  
3540  const context_Context = (0,external_wp_element_namespaceObject.createContext)(false);
3541  const {
3542    Consumer: context_Consumer,
3543    Provider: context_Provider
3544  } = context_Context;
3545  const AsyncModeConsumer = (/* unused pure expression or super */ null && (context_Consumer));
3546  
3547  /**
3548   * Context Provider Component used to switch the data module component rerendering
3549   * between Sync and Async modes.
3550   *
3551   * @example
3552   *
3553   * ```js
3554   * import { useSelect, AsyncModeProvider } from '@wordpress/data';
3555   * import { store as blockEditorStore } from '@wordpress/block-editor';
3556   *
3557   * function BlockCount() {
3558   *   const count = useSelect( ( select ) => {
3559   *     return select( blockEditorStore ).getBlockCount()
3560   *   }, [] );
3561   *
3562   *   return count;
3563   * }
3564   *
3565   * function App() {
3566   *   return (
3567   *     <AsyncModeProvider value={ true }>
3568   *       <BlockCount />
3569   *     </AsyncModeProvider>
3570   *   );
3571   * }
3572   * ```
3573   *
3574   * In this example, the BlockCount component is rerendered asynchronously.
3575   * It means if a more critical task is being performed (like typing in an input),
3576   * the rerendering is delayed until the browser becomes IDLE.
3577   * It is possible to nest multiple levels of AsyncModeProvider to fine-tune the rendering behavior.
3578   *
3579   * @param {boolean} props.value Enable Async Mode.
3580   * @return {Component} The component to be rendered.
3581   */
3582  /* harmony default export */ const async_mode_provider_context = (context_Provider);
3583  
3584  ;// ./node_modules/@wordpress/data/build-module/components/async-mode-provider/use-async-mode.js
3585  /**
3586   * WordPress dependencies
3587   */
3588  
3589  
3590  /**
3591   * Internal dependencies
3592   */
3593  
3594  function useAsyncMode() {
3595    return (0,external_wp_element_namespaceObject.useContext)(context_Context);
3596  }
3597  
3598  ;// ./node_modules/@wordpress/data/build-module/components/use-select/index.js
3599  /* wp:polyfill */
3600  /**
3601   * WordPress dependencies
3602   */
3603  
3604  
3605  
3606  
3607  /**
3608   * Internal dependencies
3609   */
3610  
3611  
3612  const renderQueue = (0,external_wp_priorityQueue_namespaceObject.createQueue)();
3613  function warnOnUnstableReference(a, b) {
3614    if (!a || !b) {
3615      return;
3616    }
3617    const keys = typeof a === 'object' && typeof b === 'object' ? Object.keys(a).filter(k => a[k] !== b[k]) : [];
3618  
3619    // eslint-disable-next-line no-console
3620    console.warn('The `useSelect` hook returns different values when called with the same state and parameters.\n' + 'This can lead to unnecessary re-renders and performance issues if not fixed.\n\n' + 'Non-equal value keys: %s\n\n', keys.join(', '));
3621  }
3622  
3623  /**
3624   * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor
3625   * @template {import('../../types').AnyConfig} C
3626   */
3627  /**
3628   * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig
3629   * @template State
3630   * @template {Record<string,import('../../types').ActionCreator>} Actions
3631   * @template Selectors
3632   */
3633  /** @typedef {import('../../types').MapSelect} MapSelect */
3634  /**
3635   * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn
3636   * @template {MapSelect|StoreDescriptor<any>} T
3637   */
3638  
3639  function Store(registry, suspense) {
3640    const select = suspense ? registry.suspendSelect : registry.select;
3641    const queueContext = {};
3642    let lastMapSelect;
3643    let lastMapResult;
3644    let lastMapResultValid = false;
3645    let lastIsAsync;
3646    let subscriber;
3647    let didWarnUnstableReference;
3648    const storeStatesOnMount = new Map();
3649    function getStoreState(name) {
3650      var _registry$stores$name;
3651      // If there's no store property (custom generic store), return an empty
3652      // object. When comparing the state, the empty objects will cause the
3653      // equality check to fail, setting `lastMapResultValid` to false.
3654      return (_registry$stores$name = registry.stores[name]?.store?.getState?.()) !== null && _registry$stores$name !== void 0 ? _registry$stores$name : {};
3655    }
3656    const createSubscriber = stores => {
3657      // The set of stores the `subscribe` function is supposed to subscribe to. Here it is
3658      // initialized, and then the `updateStores` function can add new stores to it.
3659      const activeStores = [...stores];
3660  
3661      // The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could
3662      // be called multiple times to establish multiple subscriptions. That's why we need to
3663      // keep a set of active subscriptions;
3664      const activeSubscriptions = new Set();
3665      function subscribe(listener) {
3666        // Maybe invalidate the value right after subscription was created.
3667        // React will call `getValue` after subscribing, to detect store
3668        // updates that happened in the interval between the `getValue` call
3669        // during render and creating the subscription, which is slightly
3670        // delayed. We need to ensure that this second `getValue` call will
3671        // compute a fresh value only if any of the store states have
3672        // changed in the meantime.
3673        if (lastMapResultValid) {
3674          for (const name of activeStores) {
3675            if (storeStatesOnMount.get(name) !== getStoreState(name)) {
3676              lastMapResultValid = false;
3677            }
3678          }
3679        }
3680        storeStatesOnMount.clear();
3681        const onStoreChange = () => {
3682          // Invalidate the value on store update, so that a fresh value is computed.
3683          lastMapResultValid = false;
3684          listener();
3685        };
3686        const onChange = () => {
3687          if (lastIsAsync) {
3688            renderQueue.add(queueContext, onStoreChange);
3689          } else {
3690            onStoreChange();
3691          }
3692        };
3693        const unsubs = [];
3694        function subscribeStore(storeName) {
3695          unsubs.push(registry.subscribe(onChange, storeName));
3696        }
3697        for (const storeName of activeStores) {
3698          subscribeStore(storeName);
3699        }
3700        activeSubscriptions.add(subscribeStore);
3701        return () => {
3702          activeSubscriptions.delete(subscribeStore);
3703          for (const unsub of unsubs.values()) {
3704            // The return value of the subscribe function could be undefined if the store is a custom generic store.
3705            unsub?.();
3706          }
3707          // Cancel existing store updates that were already scheduled.
3708          renderQueue.cancel(queueContext);
3709        };
3710      }
3711  
3712      // Check if `newStores` contains some stores we're not subscribed to yet, and add them.
3713      function updateStores(newStores) {
3714        for (const newStore of newStores) {
3715          if (activeStores.includes(newStore)) {
3716            continue;
3717          }
3718  
3719          // New `subscribe` calls will subscribe to `newStore`, too.
3720          activeStores.push(newStore);
3721  
3722          // Add `newStore` to existing subscriptions.
3723          for (const subscription of activeSubscriptions) {
3724            subscription(newStore);
3725          }
3726        }
3727      }
3728      return {
3729        subscribe,
3730        updateStores
3731      };
3732    };
3733    return (mapSelect, isAsync) => {
3734      function updateValue() {
3735        // If the last value is valid, and the `mapSelect` callback hasn't changed,
3736        // then we can safely return the cached value. The value can change only on
3737        // store update, and in that case value will be invalidated by the listener.
3738        if (lastMapResultValid && mapSelect === lastMapSelect) {
3739          return lastMapResult;
3740        }
3741        const listeningStores = {
3742          current: null
3743        };
3744        const mapResult = registry.__unstableMarkListeningStores(() => mapSelect(select, registry), listeningStores);
3745        if (true) {
3746          if (!didWarnUnstableReference) {
3747            const secondMapResult = mapSelect(select, registry);
3748            if (!external_wp_isShallowEqual_default()(mapResult, secondMapResult)) {
3749              warnOnUnstableReference(mapResult, secondMapResult);
3750              didWarnUnstableReference = true;
3751            }
3752          }
3753        }
3754        if (!subscriber) {
3755          for (const name of listeningStores.current) {
3756            storeStatesOnMount.set(name, getStoreState(name));
3757          }
3758          subscriber = createSubscriber(listeningStores.current);
3759        } else {
3760          subscriber.updateStores(listeningStores.current);
3761        }
3762  
3763        // If the new value is shallow-equal to the old one, keep the old one so
3764        // that we don't trigger unwanted updates that do a `===` check.
3765        if (!external_wp_isShallowEqual_default()(lastMapResult, mapResult)) {
3766          lastMapResult = mapResult;
3767        }
3768        lastMapSelect = mapSelect;
3769        lastMapResultValid = true;
3770      }
3771      function getValue() {
3772        // Update the value in case it's been invalidated or `mapSelect` has changed.
3773        updateValue();
3774        return lastMapResult;
3775      }
3776  
3777      // When transitioning from async to sync mode, cancel existing store updates
3778      // that have been scheduled, and invalidate the value so that it's freshly
3779      // computed. It might have been changed by the update we just cancelled.
3780      if (lastIsAsync && !isAsync) {
3781        lastMapResultValid = false;
3782        renderQueue.cancel(queueContext);
3783      }
3784      updateValue();
3785      lastIsAsync = isAsync;
3786  
3787      // Return a pair of functions that can be passed to `useSyncExternalStore`.
3788      return {
3789        subscribe: subscriber.subscribe,
3790        getValue
3791      };
3792    };
3793  }
3794  function _useStaticSelect(storeName) {
3795    return useRegistry().select(storeName);
3796  }
3797  function _useMappingSelect(suspense, mapSelect, deps) {
3798    const registry = useRegistry();
3799    const isAsync = useAsyncMode();
3800    const store = (0,external_wp_element_namespaceObject.useMemo)(() => Store(registry, suspense), [registry, suspense]);
3801  
3802    // These are "pass-through" dependencies from the parent hook,
3803    // and the parent should catch any hook rule violations.
3804    const selector = (0,external_wp_element_namespaceObject.useCallback)(mapSelect, deps);
3805    const {
3806      subscribe,
3807      getValue
3808    } = store(selector, isAsync);
3809    const result = (0,external_wp_element_namespaceObject.useSyncExternalStore)(subscribe, getValue, getValue);
3810    (0,external_wp_element_namespaceObject.useDebugValue)(result);
3811    return result;
3812  }
3813  
3814  /**
3815   * Custom react hook for retrieving props from registered selectors.
3816   *
3817   * In general, this custom React hook follows the
3818   * [rules of hooks](https://react.dev/reference/rules/rules-of-hooks).
3819   *
3820   * @template {MapSelect | StoreDescriptor<any>} T
3821   * @param {T}         mapSelect Function called on every state change. The returned value is
3822   *                              exposed to the component implementing this hook. The function
3823   *                              receives the `registry.select` method on the first argument
3824   *                              and the `registry` on the second argument.
3825   *                              When a store key is passed, all selectors for the store will be
3826   *                              returned. This is only meant for usage of these selectors in event
3827   *                              callbacks, not for data needed to create the element tree.
3828   * @param {unknown[]} deps      If provided, this memoizes the mapSelect so the same `mapSelect` is
3829   *                              invoked on every state change unless the dependencies change.
3830   *
3831   * @example
3832   * ```js
3833   * import { useSelect } from '@wordpress/data';
3834   * import { store as myCustomStore } from 'my-custom-store';
3835   *
3836   * function HammerPriceDisplay( { currency } ) {
3837   *   const price = useSelect( ( select ) => {
3838   *     return select( myCustomStore ).getPrice( 'hammer', currency );
3839   *   }, [ currency ] );
3840   *   return new Intl.NumberFormat( 'en-US', {
3841   *     style: 'currency',
3842   *     currency,
3843   *   } ).format( price );
3844   * }
3845   *
3846   * // Rendered in the application:
3847   * // <HammerPriceDisplay currency="USD" />
3848   * ```
3849   *
3850   * In the above example, when `HammerPriceDisplay` is rendered into an
3851   * application, the price will be retrieved from the store state using the
3852   * `mapSelect` callback on `useSelect`. If the currency prop changes then
3853   * any price in the state for that currency is retrieved. If the currency prop
3854   * doesn't change and other props are passed in that do change, the price will
3855   * not change because the dependency is just the currency.
3856   *
3857   * When data is only used in an event callback, the data should not be retrieved
3858   * on render, so it may be useful to get the selectors function instead.
3859   *
3860   * **Don't use `useSelect` this way when calling the selectors in the render
3861   * function because your component won't re-render on a data change.**
3862   *
3863   * ```js
3864   * import { useSelect } from '@wordpress/data';
3865   * import { store as myCustomStore } from 'my-custom-store';
3866   *
3867   * function Paste( { children } ) {
3868   *   const { getSettings } = useSelect( myCustomStore );
3869   *   function onPaste() {
3870   *     // Do something with the settings.
3871   *     const settings = getSettings();
3872   *   }
3873   *   return <div onPaste={ onPaste }>{ children }</div>;
3874   * }
3875   * ```
3876   * @return {UseSelectReturn<T>} A custom react hook.
3877   */
3878  function useSelect(mapSelect, deps) {
3879    // On initial call, on mount, determine the mode of this `useSelect` call
3880    // and then never allow it to change on subsequent updates.
3881    const staticSelectMode = typeof mapSelect !== 'function';
3882    const staticSelectModeRef = (0,external_wp_element_namespaceObject.useRef)(staticSelectMode);
3883    if (staticSelectMode !== staticSelectModeRef.current) {
3884      const prevMode = staticSelectModeRef.current ? 'static' : 'mapping';
3885      const nextMode = staticSelectMode ? 'static' : 'mapping';
3886      throw new Error(`Switching useSelect from $prevMode} to $nextMode} is not allowed`);
3887    }
3888  
3889    // `staticSelectMode` is not allowed to change during the hook instance's,
3890    // lifetime, so the rules of hooks are not really violated.
3891    return staticSelectMode ? _useStaticSelect(mapSelect) : _useMappingSelect(false, mapSelect, deps);
3892  }
3893  
3894  /**
3895   * A variant of the `useSelect` hook that has the same API, but is a compatible
3896   * Suspense-enabled data source.
3897   *
3898   * @template {MapSelect} T
3899   * @param {T}     mapSelect Function called on every state change. The
3900   *                          returned value is exposed to the component
3901   *                          using this hook. The function receives the
3902   *                          `registry.suspendSelect` method as the first
3903   *                          argument and the `registry` as the second one.
3904   * @param {Array} deps      A dependency array used to memoize the `mapSelect`
3905   *                          so that the same `mapSelect` is invoked on every
3906   *                          state change unless the dependencies change.
3907   *
3908   * @throws {Promise} A suspense Promise that is thrown if any of the called
3909   * selectors is in an unresolved state.
3910   *
3911   * @return {ReturnType<T>} Data object returned by the `mapSelect` function.
3912   */
3913  function useSuspenseSelect(mapSelect, deps) {
3914    return _useMappingSelect(true, mapSelect, deps);
3915  }
3916  
3917  ;// external "ReactJSXRuntime"
3918  const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
3919  ;// ./node_modules/@wordpress/data/build-module/components/with-select/index.js
3920  /**
3921   * WordPress dependencies
3922   */
3923  
3924  
3925  /**
3926   * Internal dependencies
3927   */
3928  
3929  
3930  /** @typedef {import('react').ComponentType} ComponentType */
3931  
3932  /**
3933   * Higher-order component used to inject state-derived props using registered
3934   * selectors.
3935   *
3936   * @param {Function} mapSelectToProps Function called on every state change,
3937   *                                    expected to return object of props to
3938   *                                    merge with the component's own props.
3939   *
3940   * @example
3941   * ```js
3942   * import { withSelect } from '@wordpress/data';
3943   * import { store as myCustomStore } from 'my-custom-store';
3944   *
3945   * function PriceDisplay( { price, currency } ) {
3946   *     return new Intl.NumberFormat( 'en-US', {
3947   *         style: 'currency',
3948   *         currency,
3949   *     } ).format( price );
3950   * }
3951   *
3952   * const HammerPriceDisplay = withSelect( ( select, ownProps ) => {
3953   *     const { getPrice } = select( myCustomStore );
3954   *     const { currency } = ownProps;
3955   *
3956   *     return {
3957   *         price: getPrice( 'hammer', currency ),
3958   *     };
3959   * } )( PriceDisplay );
3960   *
3961   * // Rendered in the application:
3962   * //
3963   * //  <HammerPriceDisplay currency="USD" />
3964   * ```
3965   * In the above example, when `HammerPriceDisplay` is rendered into an
3966   * application, it will pass the price into the underlying `PriceDisplay`
3967   * component and update automatically if the price of a hammer ever changes in
3968   * the store.
3969   *
3970   * @return {ComponentType} Enhanced component with merged state data props.
3971   */
3972  
3973  const withSelect = mapSelectToProps => (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(WrappedComponent => (0,external_wp_compose_namespaceObject.pure)(ownProps => {
3974    const mapSelect = (select, registry) => mapSelectToProps(select, ownProps, registry);
3975    const mergeProps = useSelect(mapSelect);
3976    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WrappedComponent, {
3977      ...ownProps,
3978      ...mergeProps
3979    });
3980  }), 'withSelect');
3981  /* harmony default export */ const with_select = (withSelect);
3982  
3983  ;// ./node_modules/@wordpress/data/build-module/components/use-dispatch/use-dispatch-with-map.js
3984  /* wp:polyfill */
3985  /**
3986   * WordPress dependencies
3987   */
3988  
3989  
3990  
3991  /**
3992   * Internal dependencies
3993   */
3994  
3995  
3996  /**
3997   * Custom react hook for returning aggregate dispatch actions using the provided
3998   * dispatchMap.
3999   *
4000   * Currently this is an internal api only and is implemented by `withDispatch`
4001   *
4002   * @param {Function} dispatchMap Receives the `registry.dispatch` function as
4003   *                               the first argument and the `registry` object
4004   *                               as the second argument.  Should return an
4005   *                               object mapping props to functions.
4006   * @param {Array}    deps        An array of dependencies for the hook.
4007   * @return {Object}  An object mapping props to functions created by the passed
4008   *                   in dispatchMap.
4009   */
4010  const useDispatchWithMap = (dispatchMap, deps) => {
4011    const registry = useRegistry();
4012    const currentDispatchMapRef = (0,external_wp_element_namespaceObject.useRef)(dispatchMap);
4013    (0,external_wp_compose_namespaceObject.useIsomorphicLayoutEffect)(() => {
4014      currentDispatchMapRef.current = dispatchMap;
4015    });
4016    return (0,external_wp_element_namespaceObject.useMemo)(() => {
4017      const currentDispatchProps = currentDispatchMapRef.current(registry.dispatch, registry);
4018      return Object.fromEntries(Object.entries(currentDispatchProps).map(([propName, dispatcher]) => {
4019        if (typeof dispatcher !== 'function') {
4020          // eslint-disable-next-line no-console
4021          console.warn(`Property $propName} returned from dispatchMap in useDispatchWithMap must be a function.`);
4022        }
4023        return [propName, (...args) => currentDispatchMapRef.current(registry.dispatch, registry)[propName](...args)];
4024      }));
4025    }, [registry, ...deps]);
4026  };
4027  /* harmony default export */ const use_dispatch_with_map = (useDispatchWithMap);
4028  
4029  ;// ./node_modules/@wordpress/data/build-module/components/with-dispatch/index.js
4030  /**
4031   * WordPress dependencies
4032   */
4033  
4034  
4035  /**
4036   * Internal dependencies
4037   */
4038  
4039  
4040  /** @typedef {import('react').ComponentType} ComponentType */
4041  
4042  /**
4043   * Higher-order component used to add dispatch props using registered action
4044   * creators.
4045   *
4046   * @param {Function} mapDispatchToProps A function of returning an object of
4047   *                                      prop names where value is a
4048   *                                      dispatch-bound action creator, or a
4049   *                                      function to be called with the
4050   *                                      component's props and returning an
4051   *                                      action creator.
4052   *
4053   * @example
4054   * ```jsx
4055   * function Button( { onClick, children } ) {
4056   *     return <button type="button" onClick={ onClick }>{ children }</button>;
4057   * }
4058   *
4059   * import { withDispatch } from '@wordpress/data';
4060   * import { store as myCustomStore } from 'my-custom-store';
4061   *
4062   * const SaleButton = withDispatch( ( dispatch, ownProps ) => {
4063   *     const { startSale } = dispatch( myCustomStore );
4064   *     const { discountPercent } = ownProps;
4065   *
4066   *     return {
4067   *         onClick() {
4068   *             startSale( discountPercent );
4069   *         },
4070   *     };
4071   * } )( Button );
4072   *
4073   * // Rendered in the application:
4074   * //
4075   * // <SaleButton discountPercent="20">Start Sale!</SaleButton>
4076   * ```
4077   *
4078   * @example
4079   * In the majority of cases, it will be sufficient to use only two first params
4080   * passed to `mapDispatchToProps` as illustrated in the previous example.
4081   * However, there might be some very advanced use cases where using the
4082   * `registry` object might be used as a tool to optimize the performance of
4083   * your component. Using `select` function from the registry might be useful
4084   * when you need to fetch some dynamic data from the store at the time when the
4085   * event is fired, but at the same time, you never use it to render your
4086   * component. In such scenario, you can avoid using the `withSelect` higher
4087   * order component to compute such prop, which might lead to unnecessary
4088   * re-renders of your component caused by its frequent value change.
4089   * Keep in mind, that `mapDispatchToProps` must return an object with functions
4090   * only.
4091   *
4092   * ```jsx
4093   * function Button( { onClick, children } ) {
4094   *     return <button type="button" onClick={ onClick }>{ children }</button>;
4095   * }
4096   *
4097   * import { withDispatch } from '@wordpress/data';
4098   * import { store as myCustomStore } from 'my-custom-store';
4099   *
4100   * const SaleButton = withDispatch( ( dispatch, ownProps, { select } ) => {
4101   *    // Stock number changes frequently.
4102   *    const { getStockNumber } = select( myCustomStore );
4103   *    const { startSale } = dispatch( myCustomStore );
4104   *    return {
4105   *        onClick() {
4106   *            const discountPercent = getStockNumber() > 50 ? 10 : 20;
4107   *            startSale( discountPercent );
4108   *        },
4109   *    };
4110   * } )( Button );
4111   *
4112   * // Rendered in the application:
4113   * //
4114   * //  <SaleButton>Start Sale!</SaleButton>
4115   * ```
4116   *
4117   * _Note:_ It is important that the `mapDispatchToProps` function always
4118   * returns an object with the same keys. For example, it should not contain
4119   * conditions under which a different value would be returned.
4120   *
4121   * @return {ComponentType} Enhanced component with merged dispatcher props.
4122   */
4123  
4124  const withDispatch = mapDispatchToProps => (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(WrappedComponent => ownProps => {
4125    const mapDispatch = (dispatch, registry) => mapDispatchToProps(dispatch, ownProps, registry);
4126    const dispatchProps = use_dispatch_with_map(mapDispatch, []);
4127    return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WrappedComponent, {
4128      ...ownProps,
4129      ...dispatchProps
4130    });
4131  }, 'withDispatch');
4132  /* harmony default export */ const with_dispatch = (withDispatch);
4133  
4134  ;// ./node_modules/@wordpress/data/build-module/components/with-registry/index.js
4135  /**
4136   * WordPress dependencies
4137   */
4138  
4139  
4140  /**
4141   * Internal dependencies
4142   */
4143  
4144  
4145  /**
4146   * Higher-order component which renders the original component with the current
4147   * registry context passed as its `registry` prop.
4148   *
4149   * @param {Component} OriginalComponent Original component.
4150   *
4151   * @return {Component} Enhanced component.
4152   */
4153  
4154  const withRegistry = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(OriginalComponent => props => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RegistryConsumer, {
4155    children: registry => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OriginalComponent, {
4156      ...props,
4157      registry: registry
4158    })
4159  }), 'withRegistry');
4160  /* harmony default export */ const with_registry = (withRegistry);
4161  
4162  ;// ./node_modules/@wordpress/data/build-module/components/use-dispatch/use-dispatch.js
4163  /**
4164   * Internal dependencies
4165   */
4166  
4167  
4168  /**
4169   * @typedef {import('../../types').StoreDescriptor<StoreConfig>} StoreDescriptor
4170   * @template {import('../../types').AnyConfig} StoreConfig
4171   */
4172  /**
4173   * @typedef {import('../../types').UseDispatchReturn<StoreNameOrDescriptor>} UseDispatchReturn
4174   * @template StoreNameOrDescriptor
4175   */
4176  
4177  /**
4178   * A custom react hook returning the current registry dispatch actions creators.
4179   *
4180   * Note: The component using this hook must be within the context of a
4181   * RegistryProvider.
4182   *
4183   * @template {undefined | string | StoreDescriptor<any>} StoreNameOrDescriptor
4184   * @param {StoreNameOrDescriptor} [storeNameOrDescriptor] Optionally provide the name of the
4185   *                                                        store or its descriptor from which to
4186   *                                                        retrieve action creators. If not
4187   *                                                        provided, the registry.dispatch
4188   *                                                        function is returned instead.
4189   *
4190   * @example
4191   * This illustrates a pattern where you may need to retrieve dynamic data from
4192   * the server via the `useSelect` hook to use in combination with the dispatch
4193   * action.
4194   *
4195   * ```jsx
4196   * import { useCallback } from 'react';
4197   * import { useDispatch, useSelect } from '@wordpress/data';
4198   * import { store as myCustomStore } from 'my-custom-store';
4199   *
4200   * function Button( { onClick, children } ) {
4201   *   return <button type="button" onClick={ onClick }>{ children }</button>
4202   * }
4203   *
4204   * const SaleButton = ( { children } ) => {
4205   *   const { stockNumber } = useSelect(
4206   *     ( select ) => select( myCustomStore ).getStockNumber(),
4207   *     []
4208   *   );
4209   *   const { startSale } = useDispatch( myCustomStore );
4210   *   const onClick = useCallback( () => {
4211   *     const discountPercent = stockNumber > 50 ? 10: 20;
4212   *     startSale( discountPercent );
4213   *   }, [ stockNumber ] );
4214   *   return <Button onClick={ onClick }>{ children }</Button>
4215   * }
4216   *
4217   * // Rendered somewhere in the application:
4218   * //
4219   * // <SaleButton>Start Sale!</SaleButton>
4220   * ```
4221   * @return {UseDispatchReturn<StoreNameOrDescriptor>} A custom react hook.
4222   */
4223  const useDispatch = storeNameOrDescriptor => {
4224    const {
4225      dispatch
4226    } = useRegistry();
4227    return storeNameOrDescriptor === void 0 ? dispatch : dispatch(storeNameOrDescriptor);
4228  };
4229  /* harmony default export */ const use_dispatch = (useDispatch);
4230  
4231  ;// ./node_modules/@wordpress/data/build-module/dispatch.js
4232  /**
4233   * Internal dependencies
4234   */
4235  
4236  
4237  
4238  /**
4239   * Given a store descriptor, returns an object of the store's action creators.
4240   * Calling an action creator will cause it to be dispatched, updating the state value accordingly.
4241   *
4242   * Note: Action creators returned by the dispatch will return a promise when
4243   * they are called.
4244   *
4245   * @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing
4246   *                              the store name is also supported.
4247   *
4248   * @example
4249   * ```js
4250   * import { dispatch } from '@wordpress/data';
4251   * import { store as myCustomStore } from 'my-custom-store';
4252   *
4253   * dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
4254   * ```
4255   * @return Object containing the action creators.
4256   */
4257  function dispatch_dispatch(storeNameOrDescriptor) {
4258    return default_registry.dispatch(storeNameOrDescriptor);
4259  }
4260  
4261  ;// ./node_modules/@wordpress/data/build-module/select.js
4262  /**
4263   * Internal dependencies
4264   */
4265  
4266  
4267  
4268  /**
4269   * Given a store descriptor, returns an object of the store's selectors.
4270   * The selector functions are been pre-bound to pass the current state automatically.
4271   * As a consumer, you need only pass arguments of the selector, if applicable.
4272   *
4273   *
4274   * @param storeNameOrDescriptor The store descriptor. The legacy calling convention
4275   *                              of passing the store name is also supported.
4276   *
4277   * @example
4278   * ```js
4279   * import { select } from '@wordpress/data';
4280   * import { store as myCustomStore } from 'my-custom-store';
4281   *
4282   * select( myCustomStore ).getPrice( 'hammer' );
4283   * ```
4284   *
4285   * @return Object containing the store's selectors.
4286   */
4287  function select_select(storeNameOrDescriptor) {
4288    return default_registry.select(storeNameOrDescriptor);
4289  }
4290  
4291  ;// ./node_modules/@wordpress/data/build-module/index.js
4292  /**
4293   * Internal dependencies
4294   */
4295  
4296  
4297  
4298  
4299  /** @typedef {import('./types').StoreDescriptor} StoreDescriptor */
4300  
4301  
4302  
4303  
4304  
4305  
4306  
4307  
4308  
4309  
4310  
4311  
4312  
4313  
4314  
4315  
4316  /**
4317   * Object of available plugins to use with a registry.
4318   *
4319   * @see [use](#use)
4320   *
4321   * @type {Object}
4322   */
4323  
4324  
4325  /**
4326   * The combineReducers helper function turns an object whose values are different
4327   * reducing functions into a single reducing function you can pass to registerReducer.
4328   *
4329   * @type  {import('./types').combineReducers}
4330   * @param {Object} reducers An object whose values correspond to different reducing
4331   *                          functions that need to be combined into one.
4332   *
4333   * @example
4334   * ```js
4335   * import { combineReducers, createReduxStore, register } from '@wordpress/data';
4336   *
4337   * const prices = ( state = {}, action ) => {
4338   *     return action.type === 'SET_PRICE' ?
4339   *         {
4340   *             ...state,
4341   *             [ action.item ]: action.price,
4342   *         } :
4343   *         state;
4344   * };
4345   *
4346   * const discountPercent = ( state = 0, action ) => {
4347   *     return action.type === 'START_SALE' ?
4348   *         action.discountPercent :
4349   *         state;
4350   * };
4351   *
4352   * const store = createReduxStore( 'my-shop', {
4353   *     reducer: combineReducers( {
4354   *         prices,
4355   *         discountPercent,
4356   *     } ),
4357   * } );
4358   * register( store );
4359   * ```
4360   *
4361   * @return {Function} A reducer that invokes every reducer inside the reducers
4362   *                    object, and constructs a state object with the same shape.
4363   */
4364  const build_module_combineReducers = combine_reducers_combineReducers;
4365  
4366  /**
4367   * Given a store descriptor, returns an object containing the store's selectors pre-bound to state
4368   * so that you only need to supply additional arguments, and modified so that they return promises
4369   * that resolve to their eventual values, after any resolvers have ran.
4370   *
4371   * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
4372   *                                                       convention of passing the store name is
4373   *                                                       also supported.
4374   *
4375   * @example
4376   * ```js
4377   * import { resolveSelect } from '@wordpress/data';
4378   * import { store as myCustomStore } from 'my-custom-store';
4379   *
4380   * resolveSelect( myCustomStore ).getPrice( 'hammer' ).then(console.log)
4381   * ```
4382   *
4383   * @return {Object} Object containing the store's promise-wrapped selectors.
4384   */
4385  const build_module_resolveSelect = default_registry.resolveSelect;
4386  
4387  /**
4388   * Given a store descriptor, returns an object containing the store's selectors pre-bound to state
4389   * so that you only need to supply additional arguments, and modified so that they throw promises
4390   * in case the selector is not resolved yet.
4391   *
4392   * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
4393   *                                                       convention of passing the store name is
4394   *                                                       also supported.
4395   *
4396   * @return {Object} Object containing the store's suspense-wrapped selectors.
4397   */
4398  const suspendSelect = default_registry.suspendSelect;
4399  
4400  /**
4401   * Given a listener function, the function will be called any time the state value
4402   * of one of the registered stores has changed. If you specify the optional
4403   * `storeNameOrDescriptor` parameter, the listener function will be called only
4404   * on updates on that one specific registered store.
4405   *
4406   * This function returns an `unsubscribe` function used to stop the subscription.
4407   *
4408   * @param {Function}                listener              Callback function.
4409   * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.
4410   *
4411   * @example
4412   * ```js
4413   * import { subscribe } from '@wordpress/data';
4414   *
4415   * const unsubscribe = subscribe( () => {
4416   *     // You could use this opportunity to test whether the derived result of a
4417   *     // selector has subsequently changed as the result of a state update.
4418   * } );
4419   *
4420   * // Later, if necessary...
4421   * unsubscribe();
4422   * ```
4423   */
4424  const subscribe = default_registry.subscribe;
4425  
4426  /**
4427   * Registers a generic store instance.
4428   *
4429   * @deprecated Use `register( storeDescriptor )` instead.
4430   *
4431   * @param {string} name  Store registry name.
4432   * @param {Object} store Store instance (`{ getSelectors, getActions, subscribe }`).
4433   */
4434  const registerGenericStore = default_registry.registerGenericStore;
4435  
4436  /**
4437   * Registers a standard `@wordpress/data` store.
4438   *
4439   * @deprecated Use `register` instead.
4440   *
4441   * @param {string} storeName Unique namespace identifier for the store.
4442   * @param {Object} options   Store description (reducer, actions, selectors, resolvers).
4443   *
4444   * @return {Object} Registered store object.
4445   */
4446  const registerStore = default_registry.registerStore;
4447  
4448  /**
4449   * Extends a registry to inherit functionality provided by a given plugin. A
4450   * plugin is an object with properties aligning to that of a registry, merged
4451   * to extend the default registry behavior.
4452   *
4453   * @param {Object} plugin Plugin object.
4454   */
4455  const use = default_registry.use;
4456  
4457  /**
4458   * Registers a standard `@wordpress/data` store descriptor.
4459   *
4460   * @example
4461   * ```js
4462   * import { createReduxStore, register } from '@wordpress/data';
4463   *
4464   * const store = createReduxStore( 'demo', {
4465   *     reducer: ( state = 'OK' ) => state,
4466   *     selectors: {
4467   *         getValue: ( state ) => state,
4468   *     },
4469   * } );
4470   * register( store );
4471   * ```
4472   *
4473   * @param {StoreDescriptor} store Store descriptor.
4474   */
4475  const register = default_registry.register;
4476  
4477  (window.wp = window.wp || {}).data = __webpack_exports__;
4478  /******/ })()
4479  ;


Generated : Fri Feb 21 08:20:01 2025 Cross-referenced by PHPXref