| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 "use strict"; 2 var wp; 3 (wp ||= {}).data = (() => { 4 var __create = Object.create; 5 var __defProp = Object.defineProperty; 6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 7 var __getOwnPropNames = Object.getOwnPropertyNames; 8 var __getProtoOf = Object.getPrototypeOf; 9 var __hasOwnProp = Object.prototype.hasOwnProperty; 10 var __commonJS = (cb, mod) => function __require() { 11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 12 }; 13 var __export = (target, all) => { 14 for (var name in all) 15 __defProp(target, name, { get: all[name], enumerable: true }); 16 }; 17 var __copyProps = (to, from, except, desc) => { 18 if (from && typeof from === "object" || typeof from === "function") { 19 for (let key of __getOwnPropNames(from)) 20 if (!__hasOwnProp.call(to, key) && key !== except) 21 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 22 } 23 return to; 24 }; 25 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 26 // If the importer is in node compatibility mode or this is not an ESM 27 // file that has been converted to a CommonJS file using a Babel- 28 // compatible transform (i.e. "__esModule" has not been set), then set 29 // "default" to the CommonJS "module.exports" for node compatibility. 30 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 31 mod 32 )); 33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); 34 35 // package-external:@wordpress/deprecated 36 var require_deprecated = __commonJS({ 37 "package-external:@wordpress/deprecated"(exports, module) { 38 module.exports = window.wp.deprecated; 39 } 40 }); 41 42 // node_modules/equivalent-key-map/equivalent-key-map.js 43 var require_equivalent_key_map = __commonJS({ 44 "node_modules/equivalent-key-map/equivalent-key-map.js"(exports, module) { 45 "use strict"; 46 function _typeof(obj) { 47 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { 48 _typeof = function(obj2) { 49 return typeof obj2; 50 }; 51 } else { 52 _typeof = function(obj2) { 53 return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; 54 }; 55 } 56 return _typeof(obj); 57 } 58 function _classCallCheck(instance, Constructor) { 59 if (!(instance instanceof Constructor)) { 60 throw new TypeError("Cannot call a class as a function"); 61 } 62 } 63 function _defineProperties(target, props) { 64 for (var i = 0; i < props.length; i++) { 65 var descriptor = props[i]; 66 descriptor.enumerable = descriptor.enumerable || false; 67 descriptor.configurable = true; 68 if ("value" in descriptor) descriptor.writable = true; 69 Object.defineProperty(target, descriptor.key, descriptor); 70 } 71 } 72 function _createClass(Constructor, protoProps, staticProps) { 73 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 74 if (staticProps) _defineProperties(Constructor, staticProps); 75 return Constructor; 76 } 77 function getValuePair(instance, key) { 78 var _map = instance._map, _arrayTreeMap = instance._arrayTreeMap, _objectTreeMap = instance._objectTreeMap; 79 if (_map.has(key)) { 80 return _map.get(key); 81 } 82 var properties = Object.keys(key).sort(); 83 var map = Array.isArray(key) ? _arrayTreeMap : _objectTreeMap; 84 for (var i = 0; i < properties.length; i++) { 85 var property = properties[i]; 86 map = map.get(property); 87 if (map === void 0) { 88 return; 89 } 90 var propertyValue = key[property]; 91 map = map.get(propertyValue); 92 if (map === void 0) { 93 return; 94 } 95 } 96 var valuePair = map.get("_ekm_value"); 97 if (!valuePair) { 98 return; 99 } 100 _map.delete(valuePair[0]); 101 valuePair[0] = key; 102 map.set("_ekm_value", valuePair); 103 _map.set(key, valuePair); 104 return valuePair; 105 } 106 var EquivalentKeyMap3 = /* @__PURE__ */ (function() { 107 function EquivalentKeyMap4(iterable) { 108 _classCallCheck(this, EquivalentKeyMap4); 109 this.clear(); 110 if (iterable instanceof EquivalentKeyMap4) { 111 var iterablePairs = []; 112 iterable.forEach(function(value, key) { 113 iterablePairs.push([key, value]); 114 }); 115 iterable = iterablePairs; 116 } 117 if (iterable != null) { 118 for (var i = 0; i < iterable.length; i++) { 119 this.set(iterable[i][0], iterable[i][1]); 120 } 121 } 122 } 123 _createClass(EquivalentKeyMap4, [{ 124 key: "set", 125 /** 126 * Add or update an element with a specified key and value. 127 * 128 * @param {*} key The key of the element to add. 129 * @param {*} value The value of the element to add. 130 * 131 * @return {EquivalentKeyMap} Map instance. 132 */ 133 value: function set(key, value) { 134 if (key === null || _typeof(key) !== "object") { 135 this._map.set(key, value); 136 return this; 137 } 138 var properties = Object.keys(key).sort(); 139 var valuePair = [key, value]; 140 var map = Array.isArray(key) ? this._arrayTreeMap : this._objectTreeMap; 141 for (var i = 0; i < properties.length; i++) { 142 var property = properties[i]; 143 if (!map.has(property)) { 144 map.set(property, new EquivalentKeyMap4()); 145 } 146 map = map.get(property); 147 var propertyValue = key[property]; 148 if (!map.has(propertyValue)) { 149 map.set(propertyValue, new EquivalentKeyMap4()); 150 } 151 map = map.get(propertyValue); 152 } 153 var previousValuePair = map.get("_ekm_value"); 154 if (previousValuePair) { 155 this._map.delete(previousValuePair[0]); 156 } 157 map.set("_ekm_value", valuePair); 158 this._map.set(key, valuePair); 159 return this; 160 } 161 /** 162 * Returns a specified element. 163 * 164 * @param {*} key The key of the element to return. 165 * 166 * @return {?*} The element associated with the specified key or undefined 167 * if the key can't be found. 168 */ 169 }, { 170 key: "get", 171 value: function get(key) { 172 if (key === null || _typeof(key) !== "object") { 173 return this._map.get(key); 174 } 175 var valuePair = getValuePair(this, key); 176 if (valuePair) { 177 return valuePair[1]; 178 } 179 } 180 /** 181 * Returns a boolean indicating whether an element with the specified key 182 * exists or not. 183 * 184 * @param {*} key The key of the element to test for presence. 185 * 186 * @return {boolean} Whether an element with the specified key exists. 187 */ 188 }, { 189 key: "has", 190 value: function has(key) { 191 if (key === null || _typeof(key) !== "object") { 192 return this._map.has(key); 193 } 194 return getValuePair(this, key) !== void 0; 195 } 196 /** 197 * Removes the specified element. 198 * 199 * @param {*} key The key of the element to remove. 200 * 201 * @return {boolean} Returns true if an element existed and has been 202 * removed, or false if the element does not exist. 203 */ 204 }, { 205 key: "delete", 206 value: function _delete(key) { 207 if (!this.has(key)) { 208 return false; 209 } 210 this.set(key, void 0); 211 return true; 212 } 213 /** 214 * Executes a provided function once per each key/value pair, in insertion 215 * order. 216 * 217 * @param {Function} callback Function to execute for each element. 218 * @param {*} thisArg Value to use as `this` when executing 219 * `callback`. 220 */ 221 }, { 222 key: "forEach", 223 value: function forEach(callback) { 224 var _this = this; 225 var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this; 226 this._map.forEach(function(value, key) { 227 if (key !== null && _typeof(key) === "object") { 228 value = value[1]; 229 } 230 callback.call(thisArg, value, key, _this); 231 }); 232 } 233 /** 234 * Removes all elements. 235 */ 236 }, { 237 key: "clear", 238 value: function clear() { 239 this._map = /* @__PURE__ */ new Map(); 240 this._arrayTreeMap = /* @__PURE__ */ new Map(); 241 this._objectTreeMap = /* @__PURE__ */ new Map(); 242 } 243 }, { 244 key: "size", 245 get: function get() { 246 return this._map.size; 247 } 248 }]); 249 return EquivalentKeyMap4; 250 })(); 251 module.exports = EquivalentKeyMap3; 252 } 253 }); 254 255 // package-external:@wordpress/redux-routine 256 var require_redux_routine = __commonJS({ 257 "package-external:@wordpress/redux-routine"(exports, module) { 258 module.exports = window.wp.reduxRoutine; 259 } 260 }); 261 262 // package-external:@wordpress/compose 263 var require_compose = __commonJS({ 264 "package-external:@wordpress/compose"(exports, module) { 265 module.exports = window.wp.compose; 266 } 267 }); 268 269 // package-external:@wordpress/private-apis 270 var require_private_apis = __commonJS({ 271 "package-external:@wordpress/private-apis"(exports, module) { 272 module.exports = window.wp.privateApis; 273 } 274 }); 275 276 // node_modules/deepmerge/dist/cjs.js 277 var require_cjs = __commonJS({ 278 "node_modules/deepmerge/dist/cjs.js"(exports, module) { 279 "use strict"; 280 var isMergeableObject = function isMergeableObject2(value) { 281 return isNonNullObject(value) && !isSpecial(value); 282 }; 283 function isNonNullObject(value) { 284 return !!value && typeof value === "object"; 285 } 286 function isSpecial(value) { 287 var stringValue = Object.prototype.toString.call(value); 288 return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); 289 } 290 var canUseSymbol = typeof Symbol === "function" && Symbol.for; 291 var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103; 292 function isReactElement(value) { 293 return value.$$typeof === REACT_ELEMENT_TYPE; 294 } 295 function emptyTarget(val) { 296 return Array.isArray(val) ? [] : {}; 297 } 298 function cloneUnlessOtherwiseSpecified(value, options) { 299 return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value; 300 } 301 function defaultArrayMerge(target, source, options) { 302 return target.concat(source).map(function(element) { 303 return cloneUnlessOtherwiseSpecified(element, options); 304 }); 305 } 306 function getMergeFunction(key, options) { 307 if (!options.customMerge) { 308 return deepmerge2; 309 } 310 var customMerge = options.customMerge(key); 311 return typeof customMerge === "function" ? customMerge : deepmerge2; 312 } 313 function getEnumerableOwnPropertySymbols(target) { 314 return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { 315 return Object.propertyIsEnumerable.call(target, symbol); 316 }) : []; 317 } 318 function getKeys(target) { 319 return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); 320 } 321 function propertyIsOnObject(object, property) { 322 try { 323 return property in object; 324 } catch (_) { 325 return false; 326 } 327 } 328 function propertyIsUnsafe(target, key) { 329 return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); 330 } 331 function mergeObject(target, source, options) { 332 var destination = {}; 333 if (options.isMergeableObject(target)) { 334 getKeys(target).forEach(function(key) { 335 destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); 336 }); 337 } 338 getKeys(source).forEach(function(key) { 339 if (propertyIsUnsafe(target, key)) { 340 return; 341 } 342 if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { 343 destination[key] = getMergeFunction(key, options)(target[key], source[key], options); 344 } else { 345 destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); 346 } 347 }); 348 return destination; 349 } 350 function deepmerge2(target, source, options) { 351 options = options || {}; 352 options.arrayMerge = options.arrayMerge || defaultArrayMerge; 353 options.isMergeableObject = options.isMergeableObject || isMergeableObject; 354 options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; 355 var sourceIsArray = Array.isArray(source); 356 var targetIsArray = Array.isArray(target); 357 var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; 358 if (!sourceAndTargetTypesMatch) { 359 return cloneUnlessOtherwiseSpecified(source, options); 360 } else if (sourceIsArray) { 361 return options.arrayMerge(target, source, options); 362 } else { 363 return mergeObject(target, source, options); 364 } 365 } 366 deepmerge2.all = function deepmergeAll(array, options) { 367 if (!Array.isArray(array)) { 368 throw new Error("first argument should be an array"); 369 } 370 return array.reduce(function(prev, next) { 371 return deepmerge2(prev, next, options); 372 }, {}); 373 }; 374 var deepmerge_1 = deepmerge2; 375 module.exports = deepmerge_1; 376 } 377 }); 378 379 // package-external:@wordpress/priority-queue 380 var require_priority_queue = __commonJS({ 381 "package-external:@wordpress/priority-queue"(exports, module) { 382 module.exports = window.wp.priorityQueue; 383 } 384 }); 385 386 // package-external:@wordpress/element 387 var require_element = __commonJS({ 388 "package-external:@wordpress/element"(exports, module) { 389 module.exports = window.wp.element; 390 } 391 }); 392 393 // package-external:@wordpress/is-shallow-equal 394 var require_is_shallow_equal = __commonJS({ 395 "package-external:@wordpress/is-shallow-equal"(exports, module) { 396 module.exports = window.wp.isShallowEqual; 397 } 398 }); 399 400 // vendor-external:react/jsx-runtime 401 var require_jsx_runtime = __commonJS({ 402 "vendor-external:react/jsx-runtime"(exports, module) { 403 module.exports = window.ReactJSXRuntime; 404 } 405 }); 406 407 // packages/data/build-module/index.js 408 var index_exports = {}; 409 __export(index_exports, { 410 AsyncModeProvider: () => context_default2, 411 RegistryConsumer: () => RegistryConsumer, 412 RegistryProvider: () => context_default, 413 combineReducers: () => combineReducers2, 414 controls: () => controls, 415 createReduxStore: () => createReduxStore, 416 createRegistry: () => createRegistry, 417 createRegistryControl: () => createRegistryControl, 418 createRegistrySelector: () => createRegistrySelector, 419 createSelector: () => rememo_default, 420 dispatch: () => dispatch2, 421 plugins: () => plugins_exports, 422 register: () => register, 423 registerGenericStore: () => registerGenericStore, 424 registerStore: () => registerStore, 425 resolveSelect: () => resolveSelect2, 426 select: () => select2, 427 subscribe: () => subscribe, 428 suspendSelect: () => suspendSelect, 429 use: () => use, 430 useDispatch: () => use_dispatch_default, 431 useRegistry: () => useRegistry, 432 useSelect: () => useSelect, 433 useSuspenseSelect: () => useSuspenseSelect, 434 withDispatch: () => with_dispatch_default, 435 withRegistry: () => with_registry_default, 436 withSelect: () => with_select_default 437 }); 438 439 // packages/data/build-module/registry.js 440 var import_deprecated2 = __toESM(require_deprecated()); 441 442 // node_modules/redux/dist/redux.mjs 443 var $$observable = /* @__PURE__ */ (() => typeof Symbol === "function" && Symbol.observable || "@@observable")(); 444 var symbol_observable_default = $$observable; 445 var randomString = () => Math.random().toString(36).substring(7).split("").join("."); 446 var ActionTypes = { 447 INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`, 448 REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`, 449 PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION$randomString()}` 450 }; 451 var actionTypes_default = ActionTypes; 452 function isPlainObject(obj) { 453 if (typeof obj !== "object" || obj === null) 454 return false; 455 let proto = obj; 456 while (Object.getPrototypeOf(proto) !== null) { 457 proto = Object.getPrototypeOf(proto); 458 } 459 return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null; 460 } 461 function miniKindOf(val) { 462 if (val === void 0) 463 return "undefined"; 464 if (val === null) 465 return "null"; 466 const type = typeof val; 467 switch (type) { 468 case "boolean": 469 case "string": 470 case "number": 471 case "symbol": 472 case "function": { 473 return type; 474 } 475 } 476 if (Array.isArray(val)) 477 return "array"; 478 if (isDate(val)) 479 return "date"; 480 if (isError(val)) 481 return "error"; 482 const constructorName = ctorName(val); 483 switch (constructorName) { 484 case "Symbol": 485 case "Promise": 486 case "WeakMap": 487 case "WeakSet": 488 case "Map": 489 case "Set": 490 return constructorName; 491 } 492 return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\s/g, ""); 493 } 494 function ctorName(val) { 495 return typeof val.constructor === "function" ? val.constructor.name : null; 496 } 497 function isError(val) { 498 return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number"; 499 } 500 function isDate(val) { 501 if (val instanceof Date) 502 return true; 503 return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function"; 504 } 505 function kindOf(val) { 506 let typeOfVal = typeof val; 507 if (true) { 508 typeOfVal = miniKindOf(val); 509 } 510 return typeOfVal; 511 } 512 function createStore(reducer, preloadedState, enhancer) { 513 if (typeof reducer !== "function") { 514 throw new Error(false ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '$kindOf(reducer)}'`); 515 } 516 if (typeof preloadedState === "function" && typeof enhancer === "function" || typeof enhancer === "function" && typeof arguments[3] === "function") { 517 throw new Error(false ? formatProdErrorMessage(0) : "It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example."); 518 } 519 if (typeof preloadedState === "function" && typeof enhancer === "undefined") { 520 enhancer = preloadedState; 521 preloadedState = void 0; 522 } 523 if (typeof enhancer !== "undefined") { 524 if (typeof enhancer !== "function") { 525 throw new Error(false ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '$kindOf(enhancer)}'`); 526 } 527 return enhancer(createStore)(reducer, preloadedState); 528 } 529 let currentReducer = reducer; 530 let currentState = preloadedState; 531 let currentListeners = /* @__PURE__ */ new Map(); 532 let nextListeners = currentListeners; 533 let listenerIdCounter = 0; 534 let isDispatching = false; 535 function ensureCanMutateNextListeners() { 536 if (nextListeners === currentListeners) { 537 nextListeners = /* @__PURE__ */ new Map(); 538 currentListeners.forEach((listener, key) => { 539 nextListeners.set(key, listener); 540 }); 541 } 542 } 543 function getState() { 544 if (isDispatching) { 545 throw new Error(false ? formatProdErrorMessage(3) : "You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store."); 546 } 547 return currentState; 548 } 549 function subscribe2(listener) { 550 if (typeof listener !== "function") { 551 throw new Error(false ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '$kindOf(listener)}'`); 552 } 553 if (isDispatching) { 554 throw new Error(false ? formatProdErrorMessage(5) : "You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details."); 555 } 556 let isSubscribed = true; 557 ensureCanMutateNextListeners(); 558 const listenerId = listenerIdCounter++; 559 nextListeners.set(listenerId, listener); 560 return function unsubscribe() { 561 if (!isSubscribed) { 562 return; 563 } 564 if (isDispatching) { 565 throw new Error(false ? formatProdErrorMessage(6) : "You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details."); 566 } 567 isSubscribed = false; 568 ensureCanMutateNextListeners(); 569 nextListeners.delete(listenerId); 570 currentListeners = null; 571 }; 572 } 573 function dispatch3(action) { 574 if (!isPlainObject(action)) { 575 throw new Error(false ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '$kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`); 576 } 577 if (typeof action.type === "undefined") { 578 throw new Error(false ? formatProdErrorMessage(8) : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.'); 579 } 580 if (typeof action.type !== "string") { 581 throw new Error(false ? formatProdErrorMessage(17) : `Action "type" property must be a string. Instead, the actual type was: '$kindOf(action.type)}'. Value was: '$action.type}' (stringified)`); 582 } 583 if (isDispatching) { 584 throw new Error(false ? formatProdErrorMessage(9) : "Reducers may not dispatch actions."); 585 } 586 try { 587 isDispatching = true; 588 currentState = currentReducer(currentState, action); 589 } finally { 590 isDispatching = false; 591 } 592 const listeners = currentListeners = nextListeners; 593 listeners.forEach((listener) => { 594 listener(); 595 }); 596 return action; 597 } 598 function replaceReducer(nextReducer) { 599 if (typeof nextReducer !== "function") { 600 throw new Error(false ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '$kindOf(nextReducer)}`); 601 } 602 currentReducer = nextReducer; 603 dispatch3({ 604 type: actionTypes_default.REPLACE 605 }); 606 } 607 function observable() { 608 const outerSubscribe = subscribe2; 609 return { 610 /** 611 * The minimal observable subscription method. 612 * @param observer Any object that can be used as an observer. 613 * The observer object should have a `next` method. 614 * @returns An object with an `unsubscribe` method that can 615 * be used to unsubscribe the observable from the store, and prevent further 616 * emission of values from the observable. 617 */ 618 subscribe(observer) { 619 if (typeof observer !== "object" || observer === null) { 620 throw new Error(false ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '$kindOf(observer)}'`); 621 } 622 function observeState() { 623 const observerAsObserver = observer; 624 if (observerAsObserver.next) { 625 observerAsObserver.next(getState()); 626 } 627 } 628 observeState(); 629 const unsubscribe = outerSubscribe(observeState); 630 return { 631 unsubscribe 632 }; 633 }, 634 [symbol_observable_default]() { 635 return this; 636 } 637 }; 638 } 639 dispatch3({ 640 type: actionTypes_default.INIT 641 }); 642 const store = { 643 dispatch: dispatch3, 644 subscribe: subscribe2, 645 getState, 646 replaceReducer, 647 [symbol_observable_default]: observable 648 }; 649 return store; 650 } 651 function compose(...funcs) { 652 if (funcs.length === 0) { 653 return (arg) => arg; 654 } 655 if (funcs.length === 1) { 656 return funcs[0]; 657 } 658 return funcs.reduce((a, b) => (...args) => a(b(...args))); 659 } 660 function applyMiddleware(...middlewares) { 661 return (createStore2) => (reducer, preloadedState) => { 662 const store = createStore2(reducer, preloadedState); 663 let dispatch3 = () => { 664 throw new Error(false ? formatProdErrorMessage(15) : "Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch."); 665 }; 666 const middlewareAPI = { 667 getState: store.getState, 668 dispatch: (action, ...args) => dispatch3(action, ...args) 669 }; 670 const chain = middlewares.map((middleware) => middleware(middlewareAPI)); 671 dispatch3 = compose(...chain)(store.dispatch); 672 return { 673 ...store, 674 dispatch: dispatch3 675 }; 676 }; 677 } 678 679 // packages/data/build-module/redux-store/index.js 680 var import_equivalent_key_map2 = __toESM(require_equivalent_key_map()); 681 var import_redux_routine = __toESM(require_redux_routine()); 682 var import_compose = __toESM(require_compose()); 683 684 // packages/data/build-module/redux-store/combine-reducers.js 685 function combineReducers(reducers) { 686 const keys = Object.keys(reducers); 687 return function combinedReducer(state = {}, action) { 688 const nextState = {}; 689 let hasChanged = false; 690 for (const key of keys) { 691 const reducer = reducers[key]; 692 const prevStateForKey = state[key]; 693 const nextStateForKey = reducer(prevStateForKey, action); 694 nextState[key] = nextStateForKey; 695 hasChanged = hasChanged || nextStateForKey !== prevStateForKey; 696 } 697 return hasChanged ? nextState : state; 698 }; 699 } 700 701 // packages/data/build-module/factory.js 702 function createRegistrySelector(registrySelector) { 703 const selectorsByRegistry = /* @__PURE__ */ new WeakMap(); 704 const wrappedSelector = (...args) => { 705 let selector = selectorsByRegistry.get(wrappedSelector.registry); 706 if (!selector) { 707 selector = registrySelector(wrappedSelector.registry.select); 708 selectorsByRegistry.set(wrappedSelector.registry, selector); 709 } 710 return selector(...args); 711 }; 712 wrappedSelector.isRegistrySelector = true; 713 return wrappedSelector; 714 } 715 function createRegistryControl(registryControl) { 716 registryControl.isRegistryControl = true; 717 return registryControl; 718 } 719 720 // packages/data/build-module/controls.js 721 var SELECT = "@@data/SELECT"; 722 var RESOLVE_SELECT = "@@data/RESOLVE_SELECT"; 723 var DISPATCH = "@@data/DISPATCH"; 724 function isObject(object) { 725 return object !== null && typeof object === "object"; 726 } 727 function select(storeNameOrDescriptor, selectorName, ...args) { 728 return { 729 type: SELECT, 730 storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor, 731 selectorName, 732 args 733 }; 734 } 735 function resolveSelect(storeNameOrDescriptor, selectorName, ...args) { 736 return { 737 type: RESOLVE_SELECT, 738 storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor, 739 selectorName, 740 args 741 }; 742 } 743 function dispatch(storeNameOrDescriptor, actionName, ...args) { 744 return { 745 type: DISPATCH, 746 storeKey: isObject(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor, 747 actionName, 748 args 749 }; 750 } 751 var controls = { select, resolveSelect, dispatch }; 752 var builtinControls = { 753 [SELECT]: createRegistryControl( 754 (registry) => ({ storeKey, selectorName, args }) => registry.select(storeKey)[selectorName](...args) 755 ), 756 [RESOLVE_SELECT]: createRegistryControl( 757 (registry) => ({ storeKey, selectorName, args }) => { 758 const method = registry.select(storeKey)[selectorName].hasResolver ? "resolveSelect" : "select"; 759 return registry[method](storeKey)[selectorName]( 760 ...args 761 ); 762 } 763 ), 764 [DISPATCH]: createRegistryControl( 765 (registry) => ({ storeKey, actionName, args }) => registry.dispatch(storeKey)[actionName](...args) 766 ) 767 }; 768 769 // packages/data/build-module/lock-unlock.js 770 var import_private_apis = __toESM(require_private_apis()); 771 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 772 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 773 "@wordpress/data" 774 ); 775 776 // node_modules/is-promise/index.mjs 777 function isPromise(obj) { 778 return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; 779 } 780 781 // packages/data/build-module/promise-middleware.js 782 var promiseMiddleware = () => (next) => (action) => { 783 if (isPromise(action)) { 784 return action.then((resolvedAction) => { 785 if (resolvedAction) { 786 return next(resolvedAction); 787 } 788 }); 789 } 790 return next(action); 791 }; 792 var promise_middleware_default = promiseMiddleware; 793 794 // packages/data/build-module/resolvers-cache-middleware.js 795 var createResolversCacheMiddleware = (registry, storeName) => () => (next) => (action) => { 796 const resolvers = registry.select(storeName).getCachedResolvers(); 797 const resolverEntries = Object.entries(resolvers); 798 resolverEntries.forEach(([selectorName, resolversByArgs]) => { 799 const resolver = registry.stores[storeName]?.resolvers?.[selectorName]; 800 if (!resolver || !resolver.shouldInvalidate) { 801 return; 802 } 803 resolversByArgs.forEach((value, args) => { 804 if (value === void 0) { 805 return; 806 } 807 if (value.status !== "finished" && value.status !== "error") { 808 return; 809 } 810 if (!resolver.shouldInvalidate(action, ...args)) { 811 return; 812 } 813 registry.dispatch(storeName).invalidateResolution(selectorName, args); 814 }); 815 }); 816 return next(action); 817 }; 818 var resolvers_cache_middleware_default = createResolversCacheMiddleware; 819 820 // packages/data/build-module/redux-store/thunk-middleware.js 821 function createThunkMiddleware(args) { 822 return () => (next) => (action) => { 823 if (typeof action === "function") { 824 return action(args); 825 } 826 return next(action); 827 }; 828 } 829 830 // packages/data/build-module/redux-store/metadata/reducer.js 831 var import_equivalent_key_map = __toESM(require_equivalent_key_map()); 832 833 // packages/data/build-module/redux-store/metadata/utils.js 834 var onSubKey = (actionProperty) => (reducer) => (state = {}, action) => { 835 const key = action[actionProperty]; 836 if (key === void 0) { 837 return state; 838 } 839 const nextKeyState = reducer(state[key], action); 840 if (nextKeyState === state[key]) { 841 return state; 842 } 843 return { 844 ...state, 845 [key]: nextKeyState 846 }; 847 }; 848 function selectorArgsToStateKey(args) { 849 if (args === void 0 || args === null) { 850 return []; 851 } 852 const len = args.length; 853 let idx = len; 854 while (idx > 0 && args[idx - 1] === void 0) { 855 idx--; 856 } 857 return idx === len ? args : args.slice(0, idx); 858 } 859 860 // packages/data/build-module/redux-store/metadata/reducer.js 861 var subKeysIsResolved = onSubKey("selectorName")((state = new import_equivalent_key_map.default(), action) => { 862 switch (action.type) { 863 case "START_RESOLUTION": { 864 const nextState = new import_equivalent_key_map.default(state); 865 nextState.set(selectorArgsToStateKey(action.args), { 866 status: "resolving" 867 }); 868 return nextState; 869 } 870 case "FINISH_RESOLUTION": { 871 const nextState = new import_equivalent_key_map.default(state); 872 nextState.set(selectorArgsToStateKey(action.args), { 873 status: "finished" 874 }); 875 return nextState; 876 } 877 case "FAIL_RESOLUTION": { 878 const nextState = new import_equivalent_key_map.default(state); 879 nextState.set(selectorArgsToStateKey(action.args), { 880 status: "error", 881 error: action.error 882 }); 883 return nextState; 884 } 885 case "START_RESOLUTIONS": { 886 const nextState = new import_equivalent_key_map.default(state); 887 for (const resolutionArgs of action.args) { 888 nextState.set(selectorArgsToStateKey(resolutionArgs), { 889 status: "resolving" 890 }); 891 } 892 return nextState; 893 } 894 case "FINISH_RESOLUTIONS": { 895 const nextState = new import_equivalent_key_map.default(state); 896 for (const resolutionArgs of action.args) { 897 nextState.set(selectorArgsToStateKey(resolutionArgs), { 898 status: "finished" 899 }); 900 } 901 return nextState; 902 } 903 case "FAIL_RESOLUTIONS": { 904 const nextState = new import_equivalent_key_map.default(state); 905 action.args.forEach((resolutionArgs, idx) => { 906 const resolutionState = { 907 status: "error", 908 error: void 0 909 }; 910 const error = action.errors[idx]; 911 if (error) { 912 resolutionState.error = error; 913 } 914 nextState.set( 915 selectorArgsToStateKey(resolutionArgs), 916 resolutionState 917 ); 918 }); 919 return nextState; 920 } 921 case "INVALIDATE_RESOLUTION": { 922 const nextState = new import_equivalent_key_map.default(state); 923 nextState.delete(selectorArgsToStateKey(action.args)); 924 return nextState; 925 } 926 } 927 return state; 928 }); 929 var isResolved = (state = {}, action) => { 930 switch (action.type) { 931 case "INVALIDATE_RESOLUTION_FOR_STORE": 932 return {}; 933 case "INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR": { 934 if (action.selectorName in state) { 935 const { 936 [action.selectorName]: removedSelector, 937 ...restState 938 } = state; 939 return restState; 940 } 941 return state; 942 } 943 case "START_RESOLUTION": 944 case "FINISH_RESOLUTION": 945 case "FAIL_RESOLUTION": 946 case "START_RESOLUTIONS": 947 case "FINISH_RESOLUTIONS": 948 case "FAIL_RESOLUTIONS": 949 case "INVALIDATE_RESOLUTION": 950 return subKeysIsResolved(state, action); 951 } 952 return state; 953 }; 954 var reducer_default = isResolved; 955 956 // packages/data/build-module/redux-store/metadata/selectors.js 957 var selectors_exports = {}; 958 __export(selectors_exports, { 959 countSelectorsByStatus: () => countSelectorsByStatus, 960 getCachedResolvers: () => getCachedResolvers, 961 getIsResolving: () => getIsResolving, 962 getResolutionError: () => getResolutionError, 963 getResolutionState: () => getResolutionState, 964 hasFinishedResolution: () => hasFinishedResolution, 965 hasResolutionFailed: () => hasResolutionFailed, 966 hasResolvingSelectors: () => hasResolvingSelectors, 967 hasStartedResolution: () => hasStartedResolution, 968 isResolving: () => isResolving 969 }); 970 var import_deprecated = __toESM(require_deprecated()); 971 972 // node_modules/rememo/rememo.js 973 var LEAF_KEY = {}; 974 function arrayOf(value) { 975 return [value]; 976 } 977 function isObjectLike(value) { 978 return !!value && "object" === typeof value; 979 } 980 function createCache() { 981 var cache = { 982 clear: function() { 983 cache.head = null; 984 } 985 }; 986 return cache; 987 } 988 function isShallowEqual(a, b, fromIndex) { 989 var i; 990 if (a.length !== b.length) { 991 return false; 992 } 993 for (i = fromIndex; i < a.length; i++) { 994 if (a[i] !== b[i]) { 995 return false; 996 } 997 } 998 return true; 999 } 1000 function rememo_default(selector, getDependants) { 1001 var rootCache; 1002 var normalizedGetDependants = getDependants ? getDependants : arrayOf; 1003 function getCache(dependants) { 1004 var caches = rootCache, isUniqueByDependants = true, i, dependant, map, cache; 1005 for (i = 0; i < dependants.length; i++) { 1006 dependant = dependants[i]; 1007 if (!isObjectLike(dependant)) { 1008 isUniqueByDependants = false; 1009 break; 1010 } 1011 if (caches.has(dependant)) { 1012 caches = caches.get(dependant); 1013 } else { 1014 map = /* @__PURE__ */ new WeakMap(); 1015 caches.set(dependant, map); 1016 caches = map; 1017 } 1018 } 1019 if (!caches.has(LEAF_KEY)) { 1020 cache = createCache(); 1021 cache.isUniqueByDependants = isUniqueByDependants; 1022 caches.set(LEAF_KEY, cache); 1023 } 1024 return caches.get(LEAF_KEY); 1025 } 1026 function clear() { 1027 rootCache = /* @__PURE__ */ new WeakMap(); 1028 } 1029 function callSelector() { 1030 var len = arguments.length, cache, node, i, args, dependants; 1031 args = new Array(len); 1032 for (i = 0; i < len; i++) { 1033 args[i] = arguments[i]; 1034 } 1035 dependants = normalizedGetDependants.apply(null, args); 1036 cache = getCache(dependants); 1037 if (!cache.isUniqueByDependants) { 1038 if (cache.lastDependants && !isShallowEqual(dependants, cache.lastDependants, 0)) { 1039 cache.clear(); 1040 } 1041 cache.lastDependants = dependants; 1042 } 1043 node = cache.head; 1044 while (node) { 1045 if (!isShallowEqual(node.args, args, 1)) { 1046 node = node.next; 1047 continue; 1048 } 1049 if (node !== cache.head) { 1050 node.prev.next = node.next; 1051 if (node.next) { 1052 node.next.prev = node.prev; 1053 } 1054 node.next = cache.head; 1055 node.prev = null; 1056 cache.head.prev = node; 1057 cache.head = node; 1058 } 1059 return node.val; 1060 } 1061 node = /** @type {CacheNode} */ 1062 { 1063 // Generate the result from original function 1064 val: selector.apply(null, args) 1065 }; 1066 args[0] = null; 1067 node.args = args; 1068 if (cache.head) { 1069 cache.head.prev = node; 1070 node.next = cache.head; 1071 } 1072 cache.head = node; 1073 return node.val; 1074 } 1075 callSelector.getDependants = normalizedGetDependants; 1076 callSelector.clear = clear; 1077 clear(); 1078 return ( 1079 /** @type {S & EnhancedSelector} */ 1080 callSelector 1081 ); 1082 } 1083 1084 // packages/data/build-module/redux-store/metadata/selectors.js 1085 function getResolutionState(state, selectorName, args) { 1086 const map = state[selectorName]; 1087 if (!map) { 1088 return; 1089 } 1090 return map.get(selectorArgsToStateKey(args)); 1091 } 1092 function getIsResolving(state, selectorName, args) { 1093 (0, import_deprecated.default)("wp.data.select( store ).getIsResolving", { 1094 since: "6.6", 1095 version: "6.8", 1096 alternative: "wp.data.select( store ).getResolutionState" 1097 }); 1098 const resolutionState = getResolutionState(state, selectorName, args); 1099 return resolutionState && resolutionState.status === "resolving"; 1100 } 1101 function hasStartedResolution(state, selectorName, args) { 1102 return getResolutionState(state, selectorName, args) !== void 0; 1103 } 1104 function hasFinishedResolution(state, selectorName, args) { 1105 const status = getResolutionState(state, selectorName, args)?.status; 1106 return status === "finished" || status === "error"; 1107 } 1108 function hasResolutionFailed(state, selectorName, args) { 1109 return getResolutionState(state, selectorName, args)?.status === "error"; 1110 } 1111 function getResolutionError(state, selectorName, args) { 1112 const resolutionState = getResolutionState(state, selectorName, args); 1113 return resolutionState?.status === "error" ? resolutionState.error : null; 1114 } 1115 function isResolving(state, selectorName, args) { 1116 return getResolutionState(state, selectorName, args)?.status === "resolving"; 1117 } 1118 function getCachedResolvers(state) { 1119 return state; 1120 } 1121 function hasResolvingSelectors(state) { 1122 return Object.values(state).some( 1123 (selectorState) => ( 1124 /** 1125 * This uses the internal `_map` property of `EquivalentKeyMap` for 1126 * optimization purposes, since the `EquivalentKeyMap` implementation 1127 * does not support a `.values()` implementation. 1128 * 1129 * @see https://github.com/aduth/equivalent-key-map 1130 */ 1131 Array.from(selectorState._map.values()).some( 1132 (resolution) => resolution[1]?.status === "resolving" 1133 ) 1134 ) 1135 ); 1136 } 1137 var countSelectorsByStatus = rememo_default( 1138 (state) => { 1139 const selectorsByStatus = {}; 1140 Object.values(state).forEach( 1141 (selectorState) => ( 1142 /** 1143 * This uses the internal `_map` property of `EquivalentKeyMap` for 1144 * optimization purposes, since the `EquivalentKeyMap` implementation 1145 * does not support a `.values()` implementation. 1146 * 1147 * @see https://github.com/aduth/equivalent-key-map 1148 */ 1149 Array.from(selectorState._map.values()).forEach( 1150 (resolution) => { 1151 const currentStatus = resolution[1]?.status ?? "error"; 1152 if (!selectorsByStatus[currentStatus]) { 1153 selectorsByStatus[currentStatus] = 0; 1154 } 1155 selectorsByStatus[currentStatus]++; 1156 } 1157 ) 1158 ) 1159 ); 1160 return selectorsByStatus; 1161 }, 1162 (state) => [state] 1163 ); 1164 1165 // packages/data/build-module/redux-store/metadata/actions.js 1166 var actions_exports = {}; 1167 __export(actions_exports, { 1168 failResolution: () => failResolution, 1169 failResolutions: () => failResolutions, 1170 finishResolution: () => finishResolution, 1171 finishResolutions: () => finishResolutions, 1172 invalidateResolution: () => invalidateResolution, 1173 invalidateResolutionForStore: () => invalidateResolutionForStore, 1174 invalidateResolutionForStoreSelector: () => invalidateResolutionForStoreSelector, 1175 startResolution: () => startResolution, 1176 startResolutions: () => startResolutions 1177 }); 1178 function startResolution(selectorName, args) { 1179 return { 1180 type: "START_RESOLUTION", 1181 selectorName, 1182 args 1183 }; 1184 } 1185 function finishResolution(selectorName, args) { 1186 return { 1187 type: "FINISH_RESOLUTION", 1188 selectorName, 1189 args 1190 }; 1191 } 1192 function failResolution(selectorName, args, error) { 1193 return { 1194 type: "FAIL_RESOLUTION", 1195 selectorName, 1196 args, 1197 error 1198 }; 1199 } 1200 function startResolutions(selectorName, args) { 1201 return { 1202 type: "START_RESOLUTIONS", 1203 selectorName, 1204 args 1205 }; 1206 } 1207 function finishResolutions(selectorName, args) { 1208 return { 1209 type: "FINISH_RESOLUTIONS", 1210 selectorName, 1211 args 1212 }; 1213 } 1214 function failResolutions(selectorName, args, errors) { 1215 return { 1216 type: "FAIL_RESOLUTIONS", 1217 selectorName, 1218 args, 1219 errors 1220 }; 1221 } 1222 function invalidateResolution(selectorName, args) { 1223 return { 1224 type: "INVALIDATE_RESOLUTION", 1225 selectorName, 1226 args 1227 }; 1228 } 1229 function invalidateResolutionForStore() { 1230 return { 1231 type: "INVALIDATE_RESOLUTION_FOR_STORE" 1232 }; 1233 } 1234 function invalidateResolutionForStoreSelector(selectorName) { 1235 return { 1236 type: "INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR", 1237 selectorName 1238 }; 1239 } 1240 1241 // packages/data/build-module/redux-store/index.js 1242 var trimUndefinedValues = (array) => { 1243 const result = [...array]; 1244 for (let i = result.length - 1; i >= 0; i--) { 1245 if (result[i] === void 0) { 1246 result.splice(i, 1); 1247 } 1248 } 1249 return result; 1250 }; 1251 var mapValues = (obj, callback) => Object.fromEntries( 1252 Object.entries(obj ?? {}).map(([key, value]) => [ 1253 key, 1254 callback(value, key) 1255 ]) 1256 ); 1257 var devToolsReplacer = (key, state) => { 1258 if (state instanceof Map) { 1259 return Object.fromEntries(state); 1260 } 1261 if (state instanceof window.HTMLElement) { 1262 return null; 1263 } 1264 return state; 1265 }; 1266 function createResolversCache() { 1267 const cache = {}; 1268 return { 1269 isRunning(selectorName, args) { 1270 return cache[selectorName] && cache[selectorName].get(trimUndefinedValues(args)); 1271 }, 1272 clear(selectorName, args) { 1273 if (cache[selectorName]) { 1274 cache[selectorName].delete(trimUndefinedValues(args)); 1275 } 1276 }, 1277 markAsRunning(selectorName, args) { 1278 if (!cache[selectorName]) { 1279 cache[selectorName] = new import_equivalent_key_map2.default(); 1280 } 1281 cache[selectorName].set(trimUndefinedValues(args), true); 1282 } 1283 }; 1284 } 1285 function createBindingCache(getItem, bindItem) { 1286 const cache = /* @__PURE__ */ new WeakMap(); 1287 return { 1288 get(itemName) { 1289 const item = getItem(itemName); 1290 if (!item) { 1291 return null; 1292 } 1293 let boundItem = cache.get(item); 1294 if (!boundItem) { 1295 boundItem = bindItem(item, itemName); 1296 cache.set(item, boundItem); 1297 } 1298 return boundItem; 1299 } 1300 }; 1301 } 1302 function createPrivateProxy(publicItems, privateItems) { 1303 return new Proxy(publicItems, { 1304 get: (target, itemName) => privateItems.get(itemName) || Reflect.get(target, itemName) 1305 }); 1306 } 1307 function createReduxStore(key, options) { 1308 const privateActions = {}; 1309 const privateSelectors = {}; 1310 const privateRegistrationFunctions = { 1311 privateActions, 1312 registerPrivateActions: (actions) => { 1313 Object.assign(privateActions, actions); 1314 }, 1315 privateSelectors, 1316 registerPrivateSelectors: (selectors) => { 1317 Object.assign(privateSelectors, selectors); 1318 } 1319 }; 1320 const storeDescriptor = { 1321 name: key, 1322 instantiate: (registry) => { 1323 const listeners = /* @__PURE__ */ new Set(); 1324 const reducer = options.reducer; 1325 const thunkArgs = { 1326 registry, 1327 get dispatch() { 1328 return thunkDispatch; 1329 }, 1330 get select() { 1331 return thunkSelect; 1332 }, 1333 get resolveSelect() { 1334 return resolveSelectors; 1335 } 1336 }; 1337 const store = instantiateReduxStore( 1338 key, 1339 options, 1340 registry, 1341 thunkArgs 1342 ); 1343 lock(store, privateRegistrationFunctions); 1344 const resolversCache = createResolversCache(); 1345 function bindAction(action) { 1346 return (...args) => Promise.resolve(store.dispatch(action(...args))); 1347 } 1348 const actions = { 1349 ...mapValues(actions_exports, bindAction), 1350 ...mapValues(options.actions, bindAction) 1351 }; 1352 const allActions = createPrivateProxy( 1353 actions, 1354 createBindingCache( 1355 (name) => privateActions[name], 1356 bindAction 1357 ) 1358 ); 1359 const thunkDispatch = new Proxy( 1360 (action) => store.dispatch(action), 1361 { get: (target, name) => allActions[name] } 1362 ); 1363 lock(actions, allActions); 1364 const resolvers = options.resolvers ? mapValues(options.resolvers, mapResolver) : {}; 1365 function bindSelector(selector, selectorName) { 1366 if (selector.isRegistrySelector) { 1367 selector.registry = registry; 1368 } 1369 const boundSelector = (...args) => { 1370 args = normalize(selector, args); 1371 const state = store.__unstableOriginalGetState(); 1372 if (selector.isRegistrySelector) { 1373 selector.registry = registry; 1374 } 1375 return selector(state.root, ...args); 1376 }; 1377 boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs; 1378 const resolver = resolvers[selectorName]; 1379 if (!resolver) { 1380 boundSelector.hasResolver = false; 1381 return boundSelector; 1382 } 1383 return mapSelectorWithResolver( 1384 boundSelector, 1385 selectorName, 1386 resolver, 1387 store, 1388 resolversCache, 1389 boundMetadataSelectors 1390 ); 1391 } 1392 function bindMetadataSelector(metaDataSelector) { 1393 const boundSelector = (selectorName, selectorArgs, ...args) => { 1394 if (selectorName) { 1395 const targetSelector = options.selectors?.[selectorName]; 1396 if (targetSelector) { 1397 selectorArgs = normalize( 1398 targetSelector, 1399 selectorArgs 1400 ); 1401 } 1402 } 1403 const state = store.__unstableOriginalGetState(); 1404 return metaDataSelector( 1405 state.metadata, 1406 selectorName, 1407 selectorArgs, 1408 ...args 1409 ); 1410 }; 1411 boundSelector.hasResolver = false; 1412 return boundSelector; 1413 } 1414 const boundMetadataSelectors = mapValues( 1415 selectors_exports, 1416 bindMetadataSelector 1417 ); 1418 const boundSelectors = mapValues(options.selectors, bindSelector); 1419 const selectors = { 1420 ...boundMetadataSelectors, 1421 ...boundSelectors 1422 }; 1423 const boundPrivateSelectors = createBindingCache( 1424 (name) => privateSelectors[name], 1425 bindSelector 1426 ); 1427 const allSelectors = createPrivateProxy( 1428 selectors, 1429 boundPrivateSelectors 1430 ); 1431 for (const selectorName of Object.keys(privateSelectors)) { 1432 boundPrivateSelectors.get(selectorName); 1433 } 1434 const thunkSelect = new Proxy( 1435 (selector) => selector(store.__unstableOriginalGetState()), 1436 { get: (target, name) => allSelectors[name] } 1437 ); 1438 lock(selectors, allSelectors); 1439 const bindResolveSelector = mapResolveSelector( 1440 store, 1441 boundMetadataSelectors 1442 ); 1443 const resolveSelectors = mapValues( 1444 boundSelectors, 1445 bindResolveSelector 1446 ); 1447 const allResolveSelectors = createPrivateProxy( 1448 resolveSelectors, 1449 createBindingCache( 1450 (name) => boundPrivateSelectors.get(name), 1451 bindResolveSelector 1452 ) 1453 ); 1454 lock(resolveSelectors, allResolveSelectors); 1455 const bindSuspendSelector = mapSuspendSelector( 1456 store, 1457 boundMetadataSelectors 1458 ); 1459 const suspendSelectors = { 1460 ...boundMetadataSelectors, 1461 // no special suspense behavior 1462 ...mapValues(boundSelectors, bindSuspendSelector) 1463 }; 1464 const allSuspendSelectors = createPrivateProxy( 1465 suspendSelectors, 1466 createBindingCache( 1467 (name) => boundPrivateSelectors.get(name), 1468 bindSuspendSelector 1469 ) 1470 ); 1471 lock(suspendSelectors, allSuspendSelectors); 1472 const getSelectors = () => selectors; 1473 const getActions = () => actions; 1474 const getResolveSelectors = () => resolveSelectors; 1475 const getSuspendSelectors = () => suspendSelectors; 1476 store.__unstableOriginalGetState = store.getState; 1477 store.getState = () => store.__unstableOriginalGetState().root; 1478 const subscribe2 = store && ((listener) => { 1479 listeners.add(listener); 1480 return () => listeners.delete(listener); 1481 }); 1482 let lastState = store.__unstableOriginalGetState(); 1483 store.subscribe(() => { 1484 const state = store.__unstableOriginalGetState(); 1485 const hasChanged = state !== lastState; 1486 lastState = state; 1487 if (hasChanged) { 1488 for (const listener of listeners) { 1489 listener(); 1490 } 1491 } 1492 }); 1493 return { 1494 reducer, 1495 store, 1496 actions, 1497 selectors, 1498 resolvers, 1499 getSelectors, 1500 getResolveSelectors, 1501 getSuspendSelectors, 1502 getActions, 1503 subscribe: subscribe2 1504 }; 1505 } 1506 }; 1507 lock(storeDescriptor, privateRegistrationFunctions); 1508 return storeDescriptor; 1509 } 1510 function instantiateReduxStore(key, options, registry, thunkArgs) { 1511 const controls2 = { 1512 ...options.controls, 1513 ...builtinControls 1514 }; 1515 const normalizedControls = mapValues( 1516 controls2, 1517 (control) => control.isRegistryControl ? control(registry) : control 1518 ); 1519 const middlewares = [ 1520 resolvers_cache_middleware_default(registry, key), 1521 promise_middleware_default, 1522 (0, import_redux_routine.default)(normalizedControls), 1523 createThunkMiddleware(thunkArgs) 1524 ]; 1525 const enhancers = [applyMiddleware(...middlewares)]; 1526 if (typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__) { 1527 enhancers.push( 1528 window.__REDUX_DEVTOOLS_EXTENSION__({ 1529 name: key, 1530 instanceId: key, 1531 serialize: { 1532 replacer: devToolsReplacer 1533 } 1534 }) 1535 ); 1536 } 1537 const { reducer, initialState } = options; 1538 const enhancedReducer = combineReducers({ 1539 metadata: reducer_default, 1540 root: reducer 1541 }); 1542 return createStore( 1543 enhancedReducer, 1544 { root: initialState }, 1545 (0, import_compose.compose)(enhancers) 1546 ); 1547 } 1548 function mapResolveSelector(store, boundMetadataSelectors) { 1549 return (selector, selectorName) => { 1550 if (!selector.hasResolver) { 1551 return async (...args) => selector.apply(null, args); 1552 } 1553 return (...args) => new Promise((resolve, reject) => { 1554 const hasFinished = () => { 1555 return boundMetadataSelectors.hasFinishedResolution( 1556 selectorName, 1557 args 1558 ); 1559 }; 1560 const finalize = (result2) => { 1561 const hasFailed = boundMetadataSelectors.hasResolutionFailed( 1562 selectorName, 1563 args 1564 ); 1565 if (hasFailed) { 1566 const error = boundMetadataSelectors.getResolutionError( 1567 selectorName, 1568 args 1569 ); 1570 reject(error); 1571 } else { 1572 resolve(result2); 1573 } 1574 }; 1575 const getResult = () => selector.apply(null, args); 1576 const result = getResult(); 1577 if (hasFinished()) { 1578 return finalize(result); 1579 } 1580 const unsubscribe = store.subscribe(() => { 1581 if (hasFinished()) { 1582 unsubscribe(); 1583 finalize(getResult()); 1584 } 1585 }); 1586 }); 1587 }; 1588 } 1589 function mapSuspendSelector(store, boundMetadataSelectors) { 1590 return (selector, selectorName) => { 1591 if (!selector.hasResolver) { 1592 return selector; 1593 } 1594 return (...args) => { 1595 const result = selector.apply(null, args); 1596 if (boundMetadataSelectors.hasFinishedResolution( 1597 selectorName, 1598 args 1599 )) { 1600 if (boundMetadataSelectors.hasResolutionFailed( 1601 selectorName, 1602 args 1603 )) { 1604 throw boundMetadataSelectors.getResolutionError( 1605 selectorName, 1606 args 1607 ); 1608 } 1609 return result; 1610 } 1611 throw new Promise((resolve) => { 1612 const unsubscribe = store.subscribe(() => { 1613 if (boundMetadataSelectors.hasFinishedResolution( 1614 selectorName, 1615 args 1616 )) { 1617 resolve(); 1618 unsubscribe(); 1619 } 1620 }); 1621 }); 1622 }; 1623 }; 1624 } 1625 function mapResolver(resolver) { 1626 if (resolver.fulfill) { 1627 return resolver; 1628 } 1629 return { 1630 ...resolver, 1631 // Copy the enumerable properties of the resolver function. 1632 fulfill: resolver 1633 // Add the fulfill method. 1634 }; 1635 } 1636 function mapSelectorWithResolver(selector, selectorName, resolver, store, resolversCache, boundMetadataSelectors) { 1637 function fulfillSelector(args) { 1638 if (resolversCache.isRunning(selectorName, args) || boundMetadataSelectors.hasStartedResolution(selectorName, args)) { 1639 return; 1640 } 1641 resolversCache.markAsRunning(selectorName, args); 1642 setTimeout(async () => { 1643 resolversCache.clear(selectorName, args); 1644 store.dispatch( 1645 startResolution(selectorName, args) 1646 ); 1647 try { 1648 const isFulfilled = typeof resolver.isFulfilled === "function" && resolver.isFulfilled(store.getState(), ...args); 1649 if (!isFulfilled) { 1650 const action = resolver.fulfill(...args); 1651 if (action) { 1652 await store.dispatch(action); 1653 } 1654 } 1655 store.dispatch( 1656 finishResolution(selectorName, args) 1657 ); 1658 } catch (error) { 1659 store.dispatch( 1660 failResolution(selectorName, args, error) 1661 ); 1662 } 1663 }, 0); 1664 } 1665 const selectorResolver = (...args) => { 1666 args = normalize(selector, args); 1667 fulfillSelector(args); 1668 return selector(...args); 1669 }; 1670 selectorResolver.hasResolver = true; 1671 return selectorResolver; 1672 } 1673 function normalize(selector, args) { 1674 if (selector.__unstableNormalizeArgs && typeof selector.__unstableNormalizeArgs === "function" && args?.length) { 1675 return selector.__unstableNormalizeArgs(args); 1676 } 1677 return args; 1678 } 1679 1680 // packages/data/build-module/store/index.js 1681 var coreDataStore = { 1682 name: "core/data", 1683 instantiate(registry) { 1684 const getCoreDataSelector = (selectorName) => (key, ...args) => { 1685 return registry.select(key)[selectorName](...args); 1686 }; 1687 const getCoreDataAction = (actionName) => (key, ...args) => { 1688 return registry.dispatch(key)[actionName](...args); 1689 }; 1690 return { 1691 getSelectors() { 1692 return Object.fromEntries( 1693 [ 1694 "getIsResolving", 1695 "hasStartedResolution", 1696 "hasFinishedResolution", 1697 "isResolving", 1698 "getCachedResolvers" 1699 ].map((selectorName) => [ 1700 selectorName, 1701 getCoreDataSelector(selectorName) 1702 ]) 1703 ); 1704 }, 1705 getActions() { 1706 return Object.fromEntries( 1707 [ 1708 "startResolution", 1709 "finishResolution", 1710 "invalidateResolution", 1711 "invalidateResolutionForStore", 1712 "invalidateResolutionForStoreSelector" 1713 ].map((actionName) => [ 1714 actionName, 1715 getCoreDataAction(actionName) 1716 ]) 1717 ); 1718 }, 1719 subscribe() { 1720 return () => () => { 1721 }; 1722 } 1723 }; 1724 } 1725 }; 1726 var store_default = coreDataStore; 1727 1728 // packages/data/build-module/utils/emitter.js 1729 function createEmitter() { 1730 let isPaused = false; 1731 let isPending = false; 1732 const listeners = /* @__PURE__ */ new Set(); 1733 const notifyListeners = () => ( 1734 // We use Array.from to clone the listeners Set 1735 // This ensures that we don't run a listener 1736 // that was added as a response to another listener. 1737 Array.from(listeners).forEach((listener) => listener()) 1738 ); 1739 return { 1740 get isPaused() { 1741 return isPaused; 1742 }, 1743 subscribe(listener) { 1744 listeners.add(listener); 1745 return () => listeners.delete(listener); 1746 }, 1747 pause() { 1748 isPaused = true; 1749 }, 1750 resume() { 1751 isPaused = false; 1752 if (isPending) { 1753 isPending = false; 1754 notifyListeners(); 1755 } 1756 }, 1757 emit() { 1758 if (isPaused) { 1759 isPending = true; 1760 return; 1761 } 1762 notifyListeners(); 1763 } 1764 }; 1765 } 1766 1767 // packages/data/build-module/registry.js 1768 function getStoreName(storeNameOrDescriptor) { 1769 return typeof storeNameOrDescriptor === "string" ? storeNameOrDescriptor : storeNameOrDescriptor.name; 1770 } 1771 function createRegistry(storeConfigs = {}, parent = null) { 1772 const stores = {}; 1773 const emitter = createEmitter(); 1774 let listeningStores = null; 1775 function globalListener() { 1776 emitter.emit(); 1777 } 1778 const subscribe2 = (listener, storeNameOrDescriptor) => { 1779 if (!storeNameOrDescriptor) { 1780 return emitter.subscribe(listener); 1781 } 1782 const storeName = getStoreName(storeNameOrDescriptor); 1783 const store = stores[storeName]; 1784 if (store) { 1785 return store.subscribe(listener); 1786 } 1787 if (!parent) { 1788 return emitter.subscribe(listener); 1789 } 1790 return parent.subscribe(listener, storeNameOrDescriptor); 1791 }; 1792 function select3(storeNameOrDescriptor) { 1793 const storeName = getStoreName(storeNameOrDescriptor); 1794 listeningStores?.add(storeName); 1795 const store = stores[storeName]; 1796 if (store) { 1797 return store.getSelectors(); 1798 } 1799 return parent?.select(storeName); 1800 } 1801 function __unstableMarkListeningStores(callback, ref) { 1802 listeningStores = /* @__PURE__ */ new Set(); 1803 try { 1804 return callback.call(this); 1805 } finally { 1806 ref.current = Array.from(listeningStores); 1807 listeningStores = null; 1808 } 1809 } 1810 function resolveSelect3(storeNameOrDescriptor) { 1811 const storeName = getStoreName(storeNameOrDescriptor); 1812 listeningStores?.add(storeName); 1813 const store = stores[storeName]; 1814 if (store) { 1815 return store.getResolveSelectors(); 1816 } 1817 return parent && parent.resolveSelect(storeName); 1818 } 1819 function suspendSelect2(storeNameOrDescriptor) { 1820 const storeName = getStoreName(storeNameOrDescriptor); 1821 listeningStores?.add(storeName); 1822 const store = stores[storeName]; 1823 if (store) { 1824 return store.getSuspendSelectors(); 1825 } 1826 return parent && parent.suspendSelect(storeName); 1827 } 1828 function dispatch3(storeNameOrDescriptor) { 1829 const storeName = getStoreName(storeNameOrDescriptor); 1830 const store = stores[storeName]; 1831 if (store) { 1832 return store.getActions(); 1833 } 1834 return parent && parent.dispatch(storeName); 1835 } 1836 function withPlugins(attributes) { 1837 return Object.fromEntries( 1838 Object.entries(attributes).map(([key, attribute]) => { 1839 if (typeof attribute !== "function") { 1840 return [key, attribute]; 1841 } 1842 return [ 1843 key, 1844 function() { 1845 return registry[key].apply(null, arguments); 1846 } 1847 ]; 1848 }) 1849 ); 1850 } 1851 function registerStoreInstance(name, createStore2) { 1852 if (stores[name]) { 1853 console.error('Store "' + name + '" is already registered.'); 1854 return stores[name]; 1855 } 1856 const store = createStore2(); 1857 if (typeof store.getSelectors !== "function") { 1858 throw new TypeError("store.getSelectors must be a function"); 1859 } 1860 if (typeof store.getActions !== "function") { 1861 throw new TypeError("store.getActions must be a function"); 1862 } 1863 if (typeof store.subscribe !== "function") { 1864 throw new TypeError("store.subscribe must be a function"); 1865 } 1866 store.emitter = createEmitter(); 1867 const currentSubscribe = store.subscribe; 1868 store.subscribe = (listener) => { 1869 const unsubscribeFromEmitter = store.emitter.subscribe(listener); 1870 const unsubscribeFromStore = currentSubscribe(() => { 1871 if (store.emitter.isPaused) { 1872 store.emitter.emit(); 1873 return; 1874 } 1875 listener(); 1876 }); 1877 return () => { 1878 unsubscribeFromStore?.(); 1879 unsubscribeFromEmitter?.(); 1880 }; 1881 }; 1882 stores[name] = store; 1883 store.subscribe(globalListener); 1884 if (parent) { 1885 try { 1886 unlock(store.store).registerPrivateActions( 1887 unlock(parent).privateActionsOf(name) 1888 ); 1889 unlock(store.store).registerPrivateSelectors( 1890 unlock(parent).privateSelectorsOf(name) 1891 ); 1892 } catch (e) { 1893 } 1894 } 1895 return store; 1896 } 1897 function register2(store) { 1898 registerStoreInstance( 1899 store.name, 1900 () => store.instantiate(registry) 1901 ); 1902 } 1903 function registerGenericStore2(name, store) { 1904 (0, import_deprecated2.default)("wp.data.registerGenericStore", { 1905 since: "5.9", 1906 alternative: "wp.data.register( storeDescriptor )" 1907 }); 1908 registerStoreInstance(name, () => store); 1909 } 1910 function registerStore2(storeName, options) { 1911 if (!options.reducer) { 1912 throw new TypeError("Must specify store reducer"); 1913 } 1914 const store = registerStoreInstance( 1915 storeName, 1916 () => createReduxStore(storeName, options).instantiate(registry) 1917 ); 1918 return store.store; 1919 } 1920 function batch(callback) { 1921 if (emitter.isPaused) { 1922 callback(); 1923 return; 1924 } 1925 emitter.pause(); 1926 Object.values(stores).forEach((store) => store.emitter.pause()); 1927 try { 1928 callback(); 1929 } finally { 1930 emitter.resume(); 1931 Object.values(stores).forEach( 1932 (store) => store.emitter.resume() 1933 ); 1934 } 1935 } 1936 let registry = { 1937 batch, 1938 stores, 1939 namespaces: stores, 1940 // TODO: Deprecate/remove this. 1941 subscribe: subscribe2, 1942 select: select3, 1943 resolveSelect: resolveSelect3, 1944 suspendSelect: suspendSelect2, 1945 dispatch: dispatch3, 1946 use: use2, 1947 register: register2, 1948 registerGenericStore: registerGenericStore2, 1949 registerStore: registerStore2, 1950 __unstableMarkListeningStores 1951 }; 1952 function use2(plugin, options) { 1953 if (!plugin) { 1954 return; 1955 } 1956 registry = { 1957 ...registry, 1958 ...plugin(registry, options) 1959 }; 1960 return registry; 1961 } 1962 registry.register(store_default); 1963 for (const [name, config] of Object.entries(storeConfigs)) { 1964 registry.register(createReduxStore(name, config)); 1965 } 1966 if (parent) { 1967 parent.subscribe(globalListener); 1968 } 1969 const registryWithPlugins = withPlugins(registry); 1970 lock(registryWithPlugins, { 1971 privateActionsOf: (name) => { 1972 try { 1973 return unlock(stores[name].store).privateActions; 1974 } catch (e) { 1975 return {}; 1976 } 1977 }, 1978 privateSelectorsOf: (name) => { 1979 try { 1980 return unlock(stores[name].store).privateSelectors; 1981 } catch (e) { 1982 return {}; 1983 } 1984 } 1985 }); 1986 return registryWithPlugins; 1987 } 1988 1989 // packages/data/build-module/default-registry.js 1990 var default_registry_default = createRegistry(); 1991 1992 // packages/data/build-module/plugins/index.js 1993 var plugins_exports = {}; 1994 __export(plugins_exports, { 1995 persistence: () => persistence_default 1996 }); 1997 1998 // node_modules/is-plain-object/dist/is-plain-object.mjs 1999 function isObject2(o) { 2000 return Object.prototype.toString.call(o) === "[object Object]"; 2001 } 2002 function isPlainObject2(o) { 2003 var ctor, prot; 2004 if (isObject2(o) === false) return false; 2005 ctor = o.constructor; 2006 if (ctor === void 0) return true; 2007 prot = ctor.prototype; 2008 if (isObject2(prot) === false) return false; 2009 if (prot.hasOwnProperty("isPrototypeOf") === false) { 2010 return false; 2011 } 2012 return true; 2013 } 2014 2015 // packages/data/build-module/plugins/persistence/index.js 2016 var import_deepmerge = __toESM(require_cjs()); 2017 2018 // packages/data/build-module/plugins/persistence/storage/object.js 2019 var objectStorage; 2020 var storage = { 2021 getItem(key) { 2022 if (!objectStorage || !objectStorage[key]) { 2023 return null; 2024 } 2025 return objectStorage[key]; 2026 }, 2027 setItem(key, value) { 2028 if (!objectStorage) { 2029 storage.clear(); 2030 } 2031 objectStorage[key] = String(value); 2032 }, 2033 clear() { 2034 objectStorage = /* @__PURE__ */ Object.create(null); 2035 } 2036 }; 2037 var object_default = storage; 2038 2039 // packages/data/build-module/plugins/persistence/storage/default.js 2040 var storage2; 2041 try { 2042 storage2 = window.localStorage; 2043 storage2.setItem("__wpDataTestLocalStorage", ""); 2044 storage2.removeItem("__wpDataTestLocalStorage"); 2045 } catch (error) { 2046 storage2 = object_default; 2047 } 2048 var default_default = storage2; 2049 2050 // packages/data/build-module/plugins/persistence/index.js 2051 var DEFAULT_STORAGE = default_default; 2052 var DEFAULT_STORAGE_KEY = "WP_DATA"; 2053 var withLazySameState = (reducer) => (state, action) => { 2054 if (action.nextState === state) { 2055 return state; 2056 } 2057 return reducer(state, action); 2058 }; 2059 function createPersistenceInterface(options) { 2060 const { storage: storage3 = DEFAULT_STORAGE, storageKey = DEFAULT_STORAGE_KEY } = options; 2061 let data; 2062 function getData() { 2063 if (data === void 0) { 2064 const persisted = storage3.getItem(storageKey); 2065 if (persisted === null) { 2066 data = {}; 2067 } else { 2068 try { 2069 data = JSON.parse(persisted); 2070 } catch (error) { 2071 data = {}; 2072 } 2073 } 2074 } 2075 return data; 2076 } 2077 function setData(key, value) { 2078 data = { ...data, [key]: value }; 2079 storage3.setItem(storageKey, JSON.stringify(data)); 2080 } 2081 return { 2082 get: getData, 2083 set: setData 2084 }; 2085 } 2086 function persistencePlugin(registry, pluginOptions) { 2087 const persistence = createPersistenceInterface(pluginOptions); 2088 function createPersistOnChange(getState, storeName, keys) { 2089 let getPersistedState; 2090 if (Array.isArray(keys)) { 2091 const reducers = keys.reduce( 2092 (accumulator, key) => Object.assign(accumulator, { 2093 [key]: (state, action) => action.nextState[key] 2094 }), 2095 {} 2096 ); 2097 getPersistedState = withLazySameState( 2098 combineReducers2(reducers) 2099 ); 2100 } else { 2101 getPersistedState = (state, action) => action.nextState; 2102 } 2103 let lastState = getPersistedState(void 0, { 2104 nextState: getState() 2105 }); 2106 return () => { 2107 const state = getPersistedState(lastState, { 2108 nextState: getState() 2109 }); 2110 if (state !== lastState) { 2111 persistence.set(storeName, state); 2112 lastState = state; 2113 } 2114 }; 2115 } 2116 return { 2117 registerStore(storeName, options) { 2118 if (!options.persist) { 2119 return registry.registerStore(storeName, options); 2120 } 2121 const persistedState = persistence.get()[storeName]; 2122 if (persistedState !== void 0) { 2123 let initialState = options.reducer(options.initialState, { 2124 type: "@@WP/PERSISTENCE_RESTORE" 2125 }); 2126 if (isPlainObject2(initialState) && isPlainObject2(persistedState)) { 2127 initialState = (0, import_deepmerge.default)(initialState, persistedState, { 2128 isMergeableObject: isPlainObject2 2129 }); 2130 } else { 2131 initialState = persistedState; 2132 } 2133 options = { 2134 ...options, 2135 initialState 2136 }; 2137 } 2138 const store = registry.registerStore(storeName, options); 2139 store.subscribe( 2140 createPersistOnChange( 2141 store.getState, 2142 storeName, 2143 options.persist 2144 ) 2145 ); 2146 return store; 2147 } 2148 }; 2149 } 2150 persistencePlugin.__unstableMigrate = () => { 2151 }; 2152 var persistence_default = persistencePlugin; 2153 2154 // packages/data/build-module/components/with-select/index.js 2155 var import_compose2 = __toESM(require_compose()); 2156 2157 // packages/data/build-module/components/use-select/index.js 2158 var import_priority_queue = __toESM(require_priority_queue()); 2159 var import_element5 = __toESM(require_element()); 2160 var import_is_shallow_equal = __toESM(require_is_shallow_equal()); 2161 2162 // packages/data/build-module/components/registry-provider/use-registry.js 2163 var import_element2 = __toESM(require_element()); 2164 2165 // packages/data/build-module/components/registry-provider/context.js 2166 var import_element = __toESM(require_element()); 2167 var Context = (0, import_element.createContext)(default_registry_default); 2168 Context.displayName = "RegistryProviderContext"; 2169 var { Consumer, Provider } = Context; 2170 var RegistryConsumer = Consumer; 2171 var context_default = Provider; 2172 2173 // packages/data/build-module/components/registry-provider/use-registry.js 2174 function useRegistry() { 2175 return (0, import_element2.useContext)(Context); 2176 } 2177 2178 // packages/data/build-module/components/async-mode-provider/use-async-mode.js 2179 var import_element4 = __toESM(require_element()); 2180 2181 // packages/data/build-module/components/async-mode-provider/context.js 2182 var import_element3 = __toESM(require_element()); 2183 var Context2 = (0, import_element3.createContext)(false); 2184 Context2.displayName = "AsyncModeContext"; 2185 var { Consumer: Consumer2, Provider: Provider2 } = Context2; 2186 var context_default2 = Provider2; 2187 2188 // packages/data/build-module/components/async-mode-provider/use-async-mode.js 2189 function useAsyncMode() { 2190 return (0, import_element4.useContext)(Context2); 2191 } 2192 2193 // packages/data/build-module/components/use-select/index.js 2194 var renderQueue = (0, import_priority_queue.createQueue)(); 2195 function warnOnUnstableReference(a, b) { 2196 if (!a || !b) { 2197 return; 2198 } 2199 const keys = typeof a === "object" && typeof b === "object" ? Object.keys(a).filter((k) => a[k] !== b[k]) : []; 2200 console.warn( 2201 "The `useSelect` hook returns different values when called with the same state and parameters.\nThis can lead to unnecessary re-renders and performance issues if not fixed.\n\nNon-equal value keys: %s\n\n", 2202 keys.join(", ") 2203 ); 2204 } 2205 function Store(registry, suspense) { 2206 const select3 = suspense ? registry.suspendSelect : registry.select; 2207 const queueContext = {}; 2208 let lastMapSelect; 2209 let lastMapResult; 2210 let lastMapResultValid = false; 2211 let lastIsAsync; 2212 let subscriber; 2213 let didWarnUnstableReference; 2214 const storeStatesOnMount = /* @__PURE__ */ new Map(); 2215 function getStoreState(name) { 2216 return registry.stores[name]?.store?.getState?.() ?? {}; 2217 } 2218 const createSubscriber = (stores) => { 2219 const activeStores = [...stores]; 2220 const activeSubscriptions = /* @__PURE__ */ new Set(); 2221 function subscribe2(listener) { 2222 if (lastMapResultValid) { 2223 for (const name of activeStores) { 2224 if (storeStatesOnMount.get(name) !== getStoreState(name)) { 2225 lastMapResultValid = false; 2226 } 2227 } 2228 } 2229 storeStatesOnMount.clear(); 2230 const onStoreChange = () => { 2231 lastMapResultValid = false; 2232 listener(); 2233 }; 2234 const onChange = () => { 2235 if (lastIsAsync) { 2236 renderQueue.add(queueContext, onStoreChange); 2237 } else { 2238 onStoreChange(); 2239 } 2240 }; 2241 const unsubs = []; 2242 function subscribeStore(storeName) { 2243 unsubs.push(registry.subscribe(onChange, storeName)); 2244 } 2245 for (const storeName of activeStores) { 2246 subscribeStore(storeName); 2247 } 2248 activeSubscriptions.add(subscribeStore); 2249 return () => { 2250 activeSubscriptions.delete(subscribeStore); 2251 for (const unsub of unsubs.values()) { 2252 unsub?.(); 2253 } 2254 renderQueue.cancel(queueContext); 2255 }; 2256 } 2257 function updateStores(newStores) { 2258 for (const newStore of newStores) { 2259 if (activeStores.includes(newStore)) { 2260 continue; 2261 } 2262 activeStores.push(newStore); 2263 for (const subscription of activeSubscriptions) { 2264 subscription(newStore); 2265 } 2266 } 2267 } 2268 return { subscribe: subscribe2, updateStores }; 2269 }; 2270 return (mapSelect, isAsync) => { 2271 function updateValue() { 2272 if (lastMapResultValid && mapSelect === lastMapSelect) { 2273 return lastMapResult; 2274 } 2275 const listeningStores = { current: null }; 2276 const mapResult = registry.__unstableMarkListeningStores( 2277 () => mapSelect(select3, registry), 2278 listeningStores 2279 ); 2280 if (true) { 2281 if (!didWarnUnstableReference) { 2282 const secondMapResult = mapSelect(select3, registry); 2283 if (!(0, import_is_shallow_equal.default)(mapResult, secondMapResult)) { 2284 warnOnUnstableReference(mapResult, secondMapResult); 2285 didWarnUnstableReference = true; 2286 } 2287 } 2288 } 2289 if (!subscriber) { 2290 for (const name of listeningStores.current) { 2291 storeStatesOnMount.set(name, getStoreState(name)); 2292 } 2293 subscriber = createSubscriber(listeningStores.current); 2294 } else { 2295 subscriber.updateStores(listeningStores.current); 2296 } 2297 if (!(0, import_is_shallow_equal.default)(lastMapResult, mapResult)) { 2298 lastMapResult = mapResult; 2299 } 2300 lastMapSelect = mapSelect; 2301 lastMapResultValid = true; 2302 } 2303 function getValue() { 2304 updateValue(); 2305 return lastMapResult; 2306 } 2307 if (lastIsAsync && !isAsync) { 2308 lastMapResultValid = false; 2309 renderQueue.cancel(queueContext); 2310 } 2311 updateValue(); 2312 lastIsAsync = isAsync; 2313 return { subscribe: subscriber.subscribe, getValue }; 2314 }; 2315 } 2316 function _useStaticSelect(storeName) { 2317 return useRegistry().select(storeName); 2318 } 2319 function _useMappingSelect(suspense, mapSelect, deps) { 2320 const registry = useRegistry(); 2321 const isAsync = useAsyncMode(); 2322 const store = (0, import_element5.useMemo)( 2323 () => Store(registry, suspense), 2324 [registry, suspense] 2325 ); 2326 const selector = (0, import_element5.useCallback)(mapSelect, deps); 2327 const { subscribe: subscribe2, getValue } = store(selector, isAsync); 2328 const result = (0, import_element5.useSyncExternalStore)(subscribe2, getValue, getValue); 2329 (0, import_element5.useDebugValue)(result); 2330 return result; 2331 } 2332 function useSelect(mapSelect, deps) { 2333 const staticSelectMode = typeof mapSelect !== "function"; 2334 const staticSelectModeRef = (0, import_element5.useRef)(staticSelectMode); 2335 if (staticSelectMode !== staticSelectModeRef.current) { 2336 const prevMode = staticSelectModeRef.current ? "static" : "mapping"; 2337 const nextMode = staticSelectMode ? "static" : "mapping"; 2338 throw new Error( 2339 `Switching useSelect from $prevMode} to $nextMode} is not allowed` 2340 ); 2341 } 2342 return staticSelectMode ? _useStaticSelect(mapSelect) : _useMappingSelect(false, mapSelect, deps); 2343 } 2344 function useSuspenseSelect(mapSelect, deps) { 2345 return _useMappingSelect(true, mapSelect, deps); 2346 } 2347 2348 // packages/data/build-module/components/with-select/index.js 2349 var import_jsx_runtime = __toESM(require_jsx_runtime()); 2350 var withSelect = (mapSelectToProps) => (0, import_compose2.createHigherOrderComponent)( 2351 (WrappedComponent) => (0, import_compose2.pure)((ownProps) => { 2352 const mapSelect = (select3, registry) => mapSelectToProps(select3, ownProps, registry); 2353 const mergeProps = useSelect(mapSelect); 2354 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrappedComponent, { ...ownProps, ...mergeProps }); 2355 }), 2356 "withSelect" 2357 ); 2358 var with_select_default = withSelect; 2359 2360 // packages/data/build-module/components/with-dispatch/index.js 2361 var import_compose4 = __toESM(require_compose()); 2362 2363 // packages/data/build-module/components/use-dispatch/use-dispatch.js 2364 var useDispatch = (storeNameOrDescriptor) => { 2365 const { dispatch: dispatch3 } = useRegistry(); 2366 return storeNameOrDescriptor === void 0 ? dispatch3 : dispatch3(storeNameOrDescriptor); 2367 }; 2368 var use_dispatch_default = useDispatch; 2369 2370 // packages/data/build-module/components/use-dispatch/use-dispatch-with-map.js 2371 var import_element6 = __toESM(require_element()); 2372 var import_compose3 = __toESM(require_compose()); 2373 var useDispatchWithMap = (dispatchMap, deps) => { 2374 const registry = useRegistry(); 2375 const currentDispatchMapRef = (0, import_element6.useRef)(dispatchMap); 2376 (0, import_compose3.useIsomorphicLayoutEffect)(() => { 2377 currentDispatchMapRef.current = dispatchMap; 2378 }); 2379 return (0, import_element6.useMemo)(() => { 2380 const currentDispatchProps = currentDispatchMapRef.current( 2381 registry.dispatch, 2382 registry 2383 ); 2384 return Object.fromEntries( 2385 Object.entries(currentDispatchProps).map( 2386 ([propName, dispatcher]) => { 2387 if (typeof dispatcher !== "function") { 2388 console.warn( 2389 `Property $propName} returned from dispatchMap in useDispatchWithMap must be a function.` 2390 ); 2391 } 2392 return [ 2393 propName, 2394 (...args) => currentDispatchMapRef.current(registry.dispatch, registry)[propName](...args) 2395 ]; 2396 } 2397 ) 2398 ); 2399 }, [registry, ...deps]); 2400 }; 2401 var use_dispatch_with_map_default = useDispatchWithMap; 2402 2403 // packages/data/build-module/components/with-dispatch/index.js 2404 var import_jsx_runtime2 = __toESM(require_jsx_runtime()); 2405 var withDispatch = (mapDispatchToProps) => (0, import_compose4.createHigherOrderComponent)( 2406 (WrappedComponent) => (ownProps) => { 2407 const mapDispatch = (dispatch3, registry) => mapDispatchToProps(dispatch3, ownProps, registry); 2408 const dispatchProps = use_dispatch_with_map_default(mapDispatch, []); 2409 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(WrappedComponent, { ...ownProps, ...dispatchProps }); 2410 }, 2411 "withDispatch" 2412 ); 2413 var with_dispatch_default = withDispatch; 2414 2415 // packages/data/build-module/components/with-registry/index.js 2416 var import_compose5 = __toESM(require_compose()); 2417 var import_jsx_runtime3 = __toESM(require_jsx_runtime()); 2418 var withRegistry = (0, import_compose5.createHigherOrderComponent)( 2419 (OriginalComponent) => (props) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RegistryConsumer, { children: (registry) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OriginalComponent, { ...props, registry }) }), 2420 "withRegistry" 2421 ); 2422 var with_registry_default = withRegistry; 2423 2424 // packages/data/build-module/dispatch.js 2425 function dispatch2(storeNameOrDescriptor) { 2426 return default_registry_default.dispatch(storeNameOrDescriptor); 2427 } 2428 2429 // packages/data/build-module/select.js 2430 function select2(storeNameOrDescriptor) { 2431 return default_registry_default.select(storeNameOrDescriptor); 2432 } 2433 2434 // packages/data/build-module/index.js 2435 var defaultRegistry = default_registry_default; 2436 var combineReducers2 = combineReducers; 2437 var resolveSelect2 = (storeNameOrDescriptor) => defaultRegistry.resolveSelect(storeNameOrDescriptor); 2438 var suspendSelect = (storeNameOrDescriptor) => defaultRegistry.suspendSelect(storeNameOrDescriptor); 2439 var subscribe = (listener, storeNameOrDescriptor) => defaultRegistry.subscribe(listener, storeNameOrDescriptor); 2440 var registerGenericStore = defaultRegistry.registerGenericStore; 2441 var registerStore = defaultRegistry.registerStore; 2442 var use = defaultRegistry.use; 2443 var register = (store) => defaultRegistry.register(store); 2444 return __toCommonJS(index_exports); 2445 })(); 2446 /*! Bundled license information: 2447 2448 is-plain-object/dist/is-plain-object.mjs: 2449 (*! 2450 * is-plain-object <https://github.com/jonschlinkert/is-plain-object> 2451 * 2452 * Copyright (c) 2014-2017, Jon Schlinkert. 2453 * Released under the MIT License. 2454 *) 2455 */
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed Apr 15 08:20:10 2026 | Cross-referenced by PHPXref |