| @@ -1,4 +1,5 @@ | ||
| 1 | +(function() { | |
| 1 | 2 | "use strict"; |
| 2 | 3 | var wp; |
| 3 | 4 | (wp ||= {}).data = (() => { |
| 4 | 5 | var __create = Object.create; |
| @@ -375,8 +376,15 @@ | ||
| 375 | 376 | module.exports = deepmerge_1; |
| 376 | 377 | } |
| 377 | 378 | }); |
| 378 | 379 | |
| 380 | + // package-external:@wordpress/element | |
| 381 | + var require_element = __commonJS({ | |
| 382 | + "package-external:@wordpress/element"(exports, module) { | |
| 383 | + module.exports = window.wp.element; | |
| 384 | + } | |
| 385 | + }); | |
| 386 | + | |
| 379 | 387 | // package-external:@wordpress/priority-queue |
| 380 | 388 | var require_priority_queue = __commonJS({ |
| 381 | 389 | "package-external:@wordpress/priority-queue"(exports, module) { |
| 382 | 390 | module.exports = window.wp.priorityQueue; |
| @@ -382,15 +390,8 @@ | ||
| 382 | 390 | module.exports = window.wp.priorityQueue; |
| 383 | 391 | } |
| 384 | 392 | }); |
| 385 | 393 | |
| 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 | 394 | // package-external:@wordpress/is-shallow-equal |
| 394 | 395 | var require_is_shallow_equal = __commonJS({ |
| 395 | 396 | "package-external:@wordpress/is-shallow-equal"(exports, module) { |
| 396 | 397 | module.exports = window.wp.isShallowEqual; |
| @@ -415,9 +416,9 @@ | ||
| 415 | 416 | createReduxStore: () => createReduxStore, |
| 416 | 417 | createRegistry: () => createRegistry, |
| 417 | 418 | createRegistryControl: () => createRegistryControl, |
| 418 | 419 | createRegistrySelector: () => createRegistrySelector, |
| 419 | - createSelector: () => rememo_default, | |
| 420 | + createSelector: () => createSelector, | |
| 420 | 421 | dispatch: () => dispatch2, |
| 421 | 422 | keyedReducer: () => keyedReducer, |
| 422 | 423 | plugins: () => plugins_exports, |
| 423 | 424 | register: () => register, |
| @@ -1089,8 +1090,11 @@ | ||
| 1089 | 1090 | callSelector |
| 1090 | 1091 | ); |
| 1091 | 1092 | } |
| 1092 | 1093 | |
| 1094 | + // packages/data/build-module/create-selector.mjs | |
| 1095 | + var createSelector = rememo_default; | |
| 1096 | + | |
| 1093 | 1097 | // packages/data/build-module/redux-store/metadata/selectors.mjs |
| 1094 | 1098 | function getResolutionState(state, selectorName, args) { |
| 1095 | 1099 | const map = state[selectorName]; |
| 1096 | 1100 | if (!map) { |
| @@ -1142,9 +1146,9 @@ | ||
| 1142 | 1146 | ) |
| 1143 | 1147 | ) |
| 1144 | 1148 | ); |
| 1145 | 1149 | } |
| 1146 | - var countSelectorsByStatus = rememo_default( | |
| 1150 | + var countSelectorsByStatus = createSelector( | |
| 1147 | 1151 | (state) => { |
| 1148 | 1152 | const selectorsByStatus = {}; |
| 1149 | 1153 | Object.values(state).forEach( |
| 1150 | 1154 | (selectorState) => ( |
| @@ -1393,9 +1397,9 @@ | ||
| 1393 | 1397 | selector.registry = registry; |
| 1394 | 1398 | } |
| 1395 | 1399 | return selector(state.root, ...args); |
| 1396 | 1400 | }; |
| 1397 | - boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs; | |
| 1401 | + boundSelector.normalizeArgs = getNormalizeArgs(selector); | |
| 1398 | 1402 | const resolver = resolvers[selectorName]; |
| 1399 | 1403 | if (!resolver) { |
| 1400 | 1404 | boundSelector.hasResolver = false; |
| 1401 | 1405 | return boundSelector; |
| @@ -1418,8 +1422,15 @@ | ||
| 1418 | 1422 | targetSelector, |
| 1419 | 1423 | selectorArgs |
| 1420 | 1424 | ); |
| 1421 | 1425 | } |
| 1426 | + const resolver = resolvers[selectorName]; | |
| 1427 | + if (resolver && selectorArgs) { | |
| 1428 | + selectorArgs = normalizeResolutionArgs( | |
| 1429 | + resolver, | |
| 1430 | + selectorArgs | |
| 1431 | + ); | |
| 1432 | + } | |
| 1422 | 1433 | } |
| 1423 | 1434 | const state = store.__unstableOriginalGetState(); |
| 1424 | 1435 | return metaDataSelector( |
| 1425 | 1436 | state.metadata, |
| @@ -1462,8 +1473,9 @@ | ||
| 1462 | 1473 | ); |
| 1463 | 1474 | lock(selectors, allSelectors); |
| 1464 | 1475 | const bindResolveSelector = mapResolveSelector( |
| 1465 | 1476 | store, |
| 1477 | + resolvers, | |
| 1466 | 1478 | boundMetadataSelectors |
| 1467 | 1479 | ); |
| 1468 | 1480 | const resolveSelectors = mapValues( |
| 1469 | 1481 | boundSelectors, |
| @@ -1569,18 +1581,26 @@ | ||
| 1569 | 1581 | { root: initialState }, |
| 1570 | 1582 | (0, import_compose.compose)(...enhancers) |
| 1571 | 1583 | ); |
| 1572 | 1584 | } |
| 1573 | - function mapResolveSelector(store, boundMetadataSelectors) { | |
| 1585 | + function mapResolveSelector(store, resolvers, boundMetadataSelectors) { | |
| 1574 | 1586 | return (selector, selectorName) => { |
| 1575 | 1587 | if (!selector.hasResolver) { |
| 1576 | 1588 | return async (...args) => selector(...args); |
| 1577 | 1589 | } |
| 1578 | 1590 | return (...args) => new Promise((resolve, reject) => { |
| 1591 | + const resolver = resolvers[selectorName]; | |
| 1592 | + const resolutionArgs = normalizeResolutionArgs( | |
| 1593 | + resolver, | |
| 1594 | + normalize(selector, args) | |
| 1595 | + ); | |
| 1579 | 1596 | const hasFinished = () => { |
| 1580 | 1597 | return boundMetadataSelectors.hasFinishedResolution( |
| 1581 | 1598 | selectorName, |
| 1582 | 1599 | args |
| 1600 | + ) || typeof resolver.isFulfilled === "function" && resolver.isFulfilled( | |
| 1601 | + store.getState(), | |
| 1602 | + ...resolutionArgs | |
| 1583 | 1603 | ); |
| 1584 | 1604 | }; |
| 1585 | 1605 | const finalize = (result2) => { |
| 1586 | 1606 | const hasFailed = boundMetadataSelectors.hasResolutionFailed( |
| @@ -1658,10 +1678,14 @@ | ||
| 1658 | 1678 | // Add the fulfill method. |
| 1659 | 1679 | }; |
| 1660 | 1680 | } |
| 1661 | 1681 | function mapSelectorWithResolver(selector, selectorName, resolver, store, resolversCache, boundMetadataSelectors) { |
| 1662 | - function fulfillSelector(args) { | |
| 1663 | - if (resolversCache.isRunning(selectorName, args) || boundMetadataSelectors.hasStartedResolution(selectorName, args)) { | |
| 1682 | + function fulfillSelector(selectorArgs) { | |
| 1683 | + const args = normalizeResolutionArgs(resolver, selectorArgs); | |
| 1684 | + if (resolversCache.isRunning(selectorName, args) || boundMetadataSelectors.hasStartedResolution( | |
| 1685 | + selectorName, | |
| 1686 | + selectorArgs | |
| 1687 | + ) || typeof resolver.isFulfilled === "function" && resolver.isFulfilled(store.getState(), ...args)) { | |
| 1664 | 1688 | return; |
| 1665 | 1689 | } |
| 1666 | 1690 | resolversCache.markAsRunning(selectorName, args); |
| 1667 | 1691 | setTimeout(async () => { |
| @@ -1669,14 +1693,11 @@ | ||
| 1669 | 1693 | store.dispatch( |
| 1670 | 1694 | startResolution(selectorName, args) |
| 1671 | 1695 | ); |
| 1672 | 1696 | try { |
| 1673 | - const isFulfilled = typeof resolver.isFulfilled === "function" && resolver.isFulfilled(store.getState(), ...args); | |
| 1674 | - if (!isFulfilled) { | |
| 1675 | - const action = resolver.fulfill(...args); | |
| 1676 | - if (action) { | |
| 1677 | - await store.dispatch(action); | |
| 1678 | - } | |
| 1697 | + const action = resolver.fulfill(...args); | |
| 1698 | + if (action) { | |
| 1699 | + await store.dispatch(action); | |
| 1679 | 1700 | } |
| 1680 | 1701 | store.dispatch( |
| 1681 | 1702 | finishResolution(selectorName, args) |
| 1682 | 1703 | ); |
| @@ -1692,16 +1713,27 @@ | ||
| 1692 | 1713 | fulfillSelector(args); |
| 1693 | 1714 | return selector(...args); |
| 1694 | 1715 | }; |
| 1695 | 1716 | selectorResolver.hasResolver = true; |
| 1717 | + selectorResolver.normalizeArgs = selector.normalizeArgs; | |
| 1696 | 1718 | return selectorResolver; |
| 1697 | 1719 | } |
| 1720 | + function getNormalizeArgs(selector) { | |
| 1721 | + return selector.normalizeArgs ?? selector.__unstableNormalizeArgs; | |
| 1722 | + } | |
| 1698 | 1723 | function normalize(selector, args) { |
| 1699 | - if (selector.__unstableNormalizeArgs && typeof selector.__unstableNormalizeArgs === "function" && args?.length) { | |
| 1700 | - return selector.__unstableNormalizeArgs(args); | |
| 1724 | + const normalizeArgs = getNormalizeArgs(selector); | |
| 1725 | + if (typeof normalizeArgs === "function" && args?.length) { | |
| 1726 | + return normalizeArgs(args); | |
| 1701 | 1727 | } |
| 1702 | 1728 | return args; |
| 1703 | 1729 | } |
| 1730 | + function normalizeResolutionArgs(resolver, args) { | |
| 1731 | + if (typeof resolver.getResolutionArgs === "function") { | |
| 1732 | + return resolver.getResolutionArgs(...args); | |
| 1733 | + } | |
| 1734 | + return args; | |
| 1735 | + } | |
| 1704 | 1736 | |
| 1705 | 1737 | // packages/data/build-module/store/index.mjs |
| 1706 | 1738 | var coreDataStore = { |
| 1707 | 1739 | name: "core/data", |
| @@ -1754,14 +1786,16 @@ | ||
| 1754 | 1786 | function createEmitter() { |
| 1755 | 1787 | let isPaused = false; |
| 1756 | 1788 | let isPending = false; |
| 1757 | 1789 | const listeners = /* @__PURE__ */ new Set(); |
| 1758 | - const notifyListeners = () => ( | |
| 1759 | - // We use Array.from to clone the listeners Set | |
| 1760 | - // This ensures that we don't run a listener | |
| 1761 | - // that was added as a response to another listener. | |
| 1762 | - Array.from(listeners).forEach((listener) => listener()) | |
| 1763 | - ); | |
| 1790 | + let clonedListeners = null; | |
| 1791 | + const notifyListeners = () => { | |
| 1792 | + clonedListeners ??= Array.from(listeners); | |
| 1793 | + const currentListeners = clonedListeners; | |
| 1794 | + for (let i = 0; i < currentListeners.length; i++) { | |
| 1795 | + currentListeners[i](); | |
| 1796 | + } | |
| 1797 | + }; | |
| 1764 | 1798 | return { |
| 1765 | 1799 | get isPaused() { |
| 1766 | 1800 | return isPaused; |
| 1767 | 1801 | }, |
| @@ -1766,9 +1800,13 @@ | ||
| 1766 | 1800 | return isPaused; |
| 1767 | 1801 | }, |
| 1768 | 1802 | subscribe(listener) { |
| 1769 | 1803 | listeners.add(listener); |
| 1770 | - return () => listeners.delete(listener); | |
| 1804 | + clonedListeners = null; | |
| 1805 | + return () => { | |
| 1806 | + listeners.delete(listener); | |
| 1807 | + clonedListeners = null; | |
| 1808 | + }; | |
| 1771 | 1809 | }, |
| 1772 | 1810 | pause() { |
| 1773 | 1811 | isPaused = true; |
| 1774 | 1812 | }, |
| @@ -1796,11 +1834,41 @@ | ||
| 1796 | 1834 | function createRegistry(storeConfigs = {}, parent = null) { |
| 1797 | 1835 | const stores = {}; |
| 1798 | 1836 | const emitter = createEmitter(); |
| 1799 | 1837 | let listeningStores = null; |
| 1838 | + const pendingListeners = /* @__PURE__ */ new Map(); | |
| 1800 | 1839 | function globalListener() { |
| 1801 | 1840 | emitter.emit(); |
| 1802 | 1841 | } |
| 1842 | + function subscribePending(storeName, listener) { | |
| 1843 | + const pending = { listener }; | |
| 1844 | + let listeners = pendingListeners.get(storeName); | |
| 1845 | + if (!listeners) { | |
| 1846 | + listeners = /* @__PURE__ */ new Set(); | |
| 1847 | + pendingListeners.set(storeName, listeners); | |
| 1848 | + } | |
| 1849 | + listeners.add(pending); | |
| 1850 | + return () => { | |
| 1851 | + pending.unsubscribe?.(); | |
| 1852 | + const stillPending = pendingListeners.get(storeName); | |
| 1853 | + if (stillPending) { | |
| 1854 | + stillPending.delete(pending); | |
| 1855 | + if (stillPending.size === 0) { | |
| 1856 | + pendingListeners.delete(storeName); | |
| 1857 | + } | |
| 1858 | + } | |
| 1859 | + }; | |
| 1860 | + } | |
| 1861 | + function connectPendingListeners(name, store) { | |
| 1862 | + const listeners = pendingListeners.get(name); | |
| 1863 | + if (!listeners) { | |
| 1864 | + return; | |
| 1865 | + } | |
| 1866 | + pendingListeners.delete(name); | |
| 1867 | + for (const pending of listeners) { | |
| 1868 | + pending.unsubscribe = store.subscribe(pending.listener); | |
| 1869 | + } | |
| 1870 | + } | |
| 1803 | 1871 | const subscribe2 = (listener, storeNameOrDescriptor) => { |
| 1804 | 1872 | if (!storeNameOrDescriptor) { |
| 1805 | 1873 | return emitter.subscribe(listener); |
| 1806 | 1874 | } |
| @@ -1809,9 +1877,9 @@ | ||
| 1809 | 1877 | if (store) { |
| 1810 | 1878 | return store.subscribe(listener); |
| 1811 | 1879 | } |
| 1812 | 1880 | if (!parent) { |
| 1813 | - return emitter.subscribe(listener); | |
| 1881 | + return subscribePending(storeName, listener); | |
| 1814 | 1882 | } |
| 1815 | 1883 | return parent.subscribe(listener, storeNameOrDescriptor); |
| 1816 | 1884 | }; |
| 1817 | 1885 | function select3(storeNameOrDescriptor) { |
| @@ -1888,25 +1956,13 @@ | ||
| 1888 | 1956 | if (typeof store.subscribe !== "function") { |
| 1889 | 1957 | throw new TypeError("store.subscribe must be a function"); |
| 1890 | 1958 | } |
| 1891 | 1959 | store.emitter = createEmitter(); |
| 1892 | - const currentSubscribe = store.subscribe; | |
| 1893 | - store.subscribe = (listener) => { | |
| 1894 | - const unsubscribeFromEmitter = store.emitter.subscribe(listener); | |
| 1895 | - const unsubscribeFromStore = currentSubscribe(() => { | |
| 1896 | - if (store.emitter.isPaused) { | |
| 1897 | - store.emitter.emit(); | |
| 1898 | - return; | |
| 1899 | - } | |
| 1900 | - listener(); | |
| 1901 | - }); | |
| 1902 | - return () => { | |
| 1903 | - unsubscribeFromStore?.(); | |
| 1904 | - unsubscribeFromEmitter?.(); | |
| 1905 | - }; | |
| 1906 | - }; | |
| 1960 | + store.subscribe(() => store.emitter.emit()); | |
| 1961 | + store.subscribe = (listener) => store.emitter.subscribe(listener); | |
| 1907 | 1962 | stores[name] = store; |
| 1908 | 1963 | store.subscribe(globalListener); |
| 1964 | + connectPendingListeners(name, store); | |
| 1909 | 1965 | if (parent) { |
| 1910 | 1966 | try { |
| 1911 | 1967 | unlock(store.store).registerPrivateActions( |
| 1912 | 1968 | unlock(parent).privateActionsOf(name) |
| @@ -2187,8 +2243,9 @@ | ||
| 2187 | 2243 | }); |
| 2188 | 2244 | |
| 2189 | 2245 | // packages/data/build-module/components/with-select/index.mjs |
| 2190 | 2246 | var import_compose2 = __toESM(require_compose(), 1); |
| 2247 | + var import_element6 = __toESM(require_element(), 1); | |
| 2191 | 2248 | |
| 2192 | 2249 | // packages/data/build-module/components/use-select/index.mjs |
| 2193 | 2250 | var import_priority_queue = __toESM(require_priority_queue(), 1); |
| 2194 | 2251 | var import_element5 = __toESM(require_element(), 1); |
| @@ -2216,10 +2273,9 @@ | ||
| 2216 | 2273 | // packages/data/build-module/components/async-mode-provider/context.mjs |
| 2217 | 2274 | var import_element3 = __toESM(require_element(), 1); |
| 2218 | 2275 | var Context2 = (0, import_element3.createContext)(false); |
| 2219 | 2276 | Context2.displayName = "AsyncModeContext"; |
| 2220 | - var { Consumer: Consumer2, Provider: Provider2 } = Context2; | |
| 2221 | - var context_default2 = Provider2; | |
| 2277 | + var context_default2 = Context2.Provider; | |
| 2222 | 2278 | |
| 2223 | 2279 | // packages/data/build-module/components/async-mode-provider/use-async-mode.mjs |
| 2224 | 2280 | function useAsyncMode() { |
| 2225 | 2281 | return (0, import_element4.useContext)(Context2); |
| @@ -2236,8 +2292,41 @@ | ||
| 2236 | 2292 | "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", |
| 2237 | 2293 | keys.join(", ") |
| 2238 | 2294 | ); |
| 2239 | 2295 | } |
| 2296 | + var deferredBuckets = /* @__PURE__ */ new WeakMap(); | |
| 2297 | + function subscribeDeferred(registry, storeName, listener) { | |
| 2298 | + let buckets = deferredBuckets.get(registry); | |
| 2299 | + if (!buckets) { | |
| 2300 | + buckets = /* @__PURE__ */ new Map(); | |
| 2301 | + deferredBuckets.set(registry, buckets); | |
| 2302 | + } | |
| 2303 | + let addToBucket = buckets.get(storeName); | |
| 2304 | + if (!addToBucket) { | |
| 2305 | + const listeners = /* @__PURE__ */ new Set(); | |
| 2306 | + const flush = () => { | |
| 2307 | + for (const { context, callback } of listeners) { | |
| 2308 | + renderQueue.add(context, callback); | |
| 2309 | + } | |
| 2310 | + }; | |
| 2311 | + const unsubscribe = registry.subscribe( | |
| 2312 | + () => renderQueue.add(listeners, flush), | |
| 2313 | + storeName | |
| 2314 | + ); | |
| 2315 | + addToBucket = (newListener) => { | |
| 2316 | + listeners.add(newListener); | |
| 2317 | + return () => { | |
| 2318 | + if (listeners.delete(newListener) && listeners.size === 0) { | |
| 2319 | + buckets.delete(storeName); | |
| 2320 | + renderQueue.cancel(listeners); | |
| 2321 | + unsubscribe(); | |
| 2322 | + } | |
| 2323 | + }; | |
| 2324 | + }; | |
| 2325 | + buckets.set(storeName, addToBucket); | |
| 2326 | + } | |
| 2327 | + return addToBucket(listener); | |
| 2328 | + } | |
| 2240 | 2329 | function Store(registry, suspense) { |
| 2241 | 2330 | const select3 = suspense ? registry.suspendSelect : registry.select; |
| 2242 | 2331 | const queueContext = {}; |
| 2243 | 2332 | let lastMapSelect; |
| @@ -2265,25 +2354,34 @@ | ||
| 2265 | 2354 | const onStoreChange = () => { |
| 2266 | 2355 | lastMapResultValid = false; |
| 2267 | 2356 | listener(); |
| 2268 | 2357 | }; |
| 2269 | - const onChange = () => { | |
| 2358 | + function listenToStore(storeName) { | |
| 2270 | 2359 | if (lastIsAsync) { |
| 2271 | - renderQueue.add(queueContext, onStoreChange); | |
| 2272 | - } else { | |
| 2273 | - onStoreChange(); | |
| 2360 | + return subscribeDeferred(registry, storeName, { | |
| 2361 | + context: queueContext, | |
| 2362 | + callback: onStoreChange | |
| 2363 | + }); | |
| 2274 | 2364 | } |
| 2275 | - }; | |
| 2276 | - const unsubs = []; | |
| 2365 | + return registry.subscribe(onStoreChange, storeName); | |
| 2366 | + } | |
| 2367 | + const unsubs = /* @__PURE__ */ new Map(); | |
| 2277 | 2368 | function subscribeStore(storeName) { |
| 2278 | - unsubs.push(registry.subscribe(onChange, storeName)); | |
| 2369 | + unsubs.set(storeName, listenToStore(storeName)); | |
| 2279 | 2370 | } |
| 2371 | + function resubscribeStores() { | |
| 2372 | + for (const [storeName, unsub] of unsubs) { | |
| 2373 | + unsub?.(); | |
| 2374 | + unsubs.set(storeName, listenToStore(storeName)); | |
| 2375 | + } | |
| 2376 | + } | |
| 2280 | 2377 | for (const storeName of activeStores) { |
| 2281 | 2378 | subscribeStore(storeName); |
| 2282 | 2379 | } |
| 2283 | - activeSubscriptions.add(subscribeStore); | |
| 2380 | + const subscription = { subscribeStore, resubscribeStores }; | |
| 2381 | + activeSubscriptions.add(subscription); | |
| 2284 | 2382 | return () => { |
| 2285 | - activeSubscriptions.delete(subscribeStore); | |
| 2383 | + activeSubscriptions.delete(subscription); | |
| 2286 | 2384 | for (const unsub of unsubs.values()) { |
| 2287 | 2385 | unsub?.(); |
| 2288 | 2386 | } |
| 2289 | 2387 | renderQueue.cancel(queueContext); |
| @@ -2295,13 +2393,18 @@ | ||
| 2295 | 2393 | continue; |
| 2296 | 2394 | } |
| 2297 | 2395 | activeStores.push(newStore); |
| 2298 | 2396 | for (const subscription of activeSubscriptions) { |
| 2299 | - subscription(newStore); | |
| 2397 | + subscription.subscribeStore(newStore); | |
| 2300 | 2398 | } |
| 2301 | 2399 | } |
| 2302 | 2400 | } |
| 2303 | - return { subscribe: subscribe2, updateStores }; | |
| 2401 | + function switchMode() { | |
| 2402 | + for (const subscription of activeSubscriptions) { | |
| 2403 | + subscription.resubscribeStores(); | |
| 2404 | + } | |
| 2405 | + } | |
| 2406 | + return { subscribe: subscribe2, updateStores, switchMode }; | |
| 2304 | 2407 | }; |
| 2305 | 2408 | return (mapSelect, isAsync) => { |
| 2306 | 2409 | function updateValue() { |
| 2307 | 2410 | if (lastMapResultValid && mapSelect === lastMapSelect) { |
| @@ -2338,14 +2441,18 @@ | ||
| 2338 | 2441 | function getValue() { |
| 2339 | 2442 | updateValue(); |
| 2340 | 2443 | return lastMapResult; |
| 2341 | 2444 | } |
| 2342 | - if (lastIsAsync && !isAsync) { | |
| 2445 | + const wasAsync = lastIsAsync; | |
| 2446 | + lastIsAsync = isAsync; | |
| 2447 | + if (wasAsync && !isAsync) { | |
| 2343 | 2448 | lastMapResultValid = false; |
| 2344 | 2449 | renderQueue.cancel(queueContext); |
| 2345 | 2450 | } |
| 2346 | 2451 | updateValue(); |
| 2347 | - lastIsAsync = isAsync; | |
| 2452 | + if (wasAsync !== isAsync) { | |
| 2453 | + subscriber.switchMode(); | |
| 2454 | + } | |
| 2348 | 2455 | return { subscribe: subscriber.subscribe, getValue }; |
| 2349 | 2456 | }; |
| 2350 | 2457 | } |
| 2351 | 2458 | function _useStaticSelect(storeName) { |
| @@ -2382,13 +2489,22 @@ | ||
| 2382 | 2489 | |
| 2383 | 2490 | // packages/data/build-module/components/with-select/index.mjs |
| 2384 | 2491 | var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); |
| 2385 | 2492 | var withSelect = (mapSelectToProps) => (0, import_compose2.createHigherOrderComponent)( |
| 2386 | - (WrappedComponent) => (0, import_compose2.pure)((ownProps) => { | |
| 2387 | - const mapSelect = (select3, registry) => mapSelectToProps(select3, ownProps, registry); | |
| 2388 | - const mergeProps = useSelect(mapSelect); | |
| 2389 | - return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrappedComponent, { ...ownProps, ...mergeProps }); | |
| 2390 | - }), | |
| 2493 | + (WrappedComponent) => (0, import_element6.memo)( | |
| 2494 | + (0, import_element6.forwardRef)(function WithSelect(ownProps, ref) { | |
| 2495 | + const mapSelect = (select3, registry) => mapSelectToProps(select3, ownProps, registry); | |
| 2496 | + const mergeProps = useSelect(mapSelect); | |
| 2497 | + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( | |
| 2498 | + WrappedComponent, | |
| 2499 | + { | |
| 2500 | + ref, | |
| 2501 | + ...ownProps, | |
| 2502 | + ...mergeProps | |
| 2503 | + } | |
| 2504 | + ); | |
| 2505 | + }) | |
| 2506 | + ), | |
| 2391 | 2507 | "withSelect" |
| 2392 | 2508 | ); |
| 2393 | 2509 | var with_select_default = withSelect; |
| 2394 | 2510 | |
| @@ -2402,17 +2518,17 @@ | ||
| 2402 | 2518 | }; |
| 2403 | 2519 | var use_dispatch_default = useDispatch; |
| 2404 | 2520 | |
| 2405 | 2521 | // packages/data/build-module/components/use-dispatch/use-dispatch-with-map.mjs |
| 2406 | - var import_element6 = __toESM(require_element(), 1); | |
| 2522 | + var import_element7 = __toESM(require_element(), 1); | |
| 2407 | 2523 | var import_compose3 = __toESM(require_compose(), 1); |
| 2408 | 2524 | var useDispatchWithMap = (dispatchMap, deps) => { |
| 2409 | 2525 | const registry = useRegistry(); |
| 2410 | - const currentDispatchMapRef = (0, import_element6.useRef)(dispatchMap); | |
| 2526 | + const currentDispatchMapRef = (0, import_element7.useRef)(dispatchMap); | |
| 2411 | 2527 | (0, import_compose3.useIsomorphicLayoutEffect)(() => { |
| 2412 | 2528 | currentDispatchMapRef.current = dispatchMap; |
| 2413 | 2529 | }); |
| 2414 | - return (0, import_element6.useMemo)(() => { | |
| 2530 | + return (0, import_element7.useMemo)(() => { | |
| 2415 | 2531 | const currentDispatchProps = currentDispatchMapRef.current( |
| 2416 | 2532 | registry.dispatch, |
| 2417 | 2533 | registry |
| 2418 | 2534 | ); |
| @@ -2494,5 +2610,7 @@ | ||
| 2494 | 2610 | * Copyright (c) 2014-2017, Jon Schlinkert. |
| 2495 | 2611 | * Released under the MIT License. |
| 2496 | 2612 | *) |
| 2497 | 2613 | */ |
| 2614 | +(window.wp ||= {}).data = wp.data; | |
| 2615 | +})(); | |
| 2498 | 2616 | //# sourceMappingURL=index.js.map |