@wordpress/data 6.1.4 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +77 -71
  4. package/build/components/use-dispatch/use-dispatch.js +8 -8
  5. package/build/components/use-dispatch/use-dispatch.js.map +1 -1
  6. package/build/components/use-select/index.js +58 -43
  7. package/build/components/use-select/index.js.map +1 -1
  8. package/build/controls.js +16 -16
  9. package/build/controls.js.map +1 -1
  10. package/build/index.js +14 -14
  11. package/build/index.js.map +1 -1
  12. package/build/plugins/index.js +0 -8
  13. package/build/plugins/index.js.map +1 -1
  14. package/build/redux-store/index.js +15 -15
  15. package/build/redux-store/index.js.map +1 -1
  16. package/build/registry.js +82 -68
  17. package/build/registry.js.map +1 -1
  18. package/build/resolvers-cache-middleware.js +5 -3
  19. package/build/resolvers-cache-middleware.js.map +1 -1
  20. package/build/store/index.js +42 -43
  21. package/build/store/index.js.map +1 -1
  22. package/build/utils/emitter.js +1 -1
  23. package/build/utils/emitter.js.map +1 -1
  24. package/build-module/components/use-dispatch/use-dispatch.js +8 -8
  25. package/build-module/components/use-dispatch/use-dispatch.js.map +1 -1
  26. package/build-module/components/use-select/index.js +60 -44
  27. package/build-module/components/use-select/index.js.map +1 -1
  28. package/build-module/controls.js +16 -16
  29. package/build-module/controls.js.map +1 -1
  30. package/build-module/index.js +14 -14
  31. package/build-module/index.js.map +1 -1
  32. package/build-module/plugins/index.js +0 -1
  33. package/build-module/plugins/index.js.map +1 -1
  34. package/build-module/redux-store/index.js +15 -15
  35. package/build-module/redux-store/index.js.map +1 -1
  36. package/build-module/registry.js +82 -68
  37. package/build-module/registry.js.map +1 -1
  38. package/build-module/resolvers-cache-middleware.js +3 -3
  39. package/build-module/resolvers-cache-middleware.js.map +1 -1
  40. package/build-module/store/index.js +42 -42
  41. package/build-module/store/index.js.map +1 -1
  42. package/build-module/utils/emitter.js +1 -1
  43. package/build-module/utils/emitter.js.map +1 -1
  44. package/build-types/types.d.ts +29 -16
  45. package/build-types/types.d.ts.map +1 -1
  46. package/build-types/utils/emitter.d.ts +2 -2
  47. package/build-types/utils/emitter.d.ts.map +1 -1
  48. package/package.json +10 -10
  49. package/src/components/use-dispatch/test/use-dispatch.js +1 -1
  50. package/src/components/use-dispatch/use-dispatch.js +9 -9
  51. package/src/components/use-select/index.js +61 -46
  52. package/src/components/use-select/test/index.js +32 -32
  53. package/src/controls.js +22 -22
  54. package/src/index.js +14 -14
  55. package/src/plugins/index.js +0 -1
  56. package/src/redux-store/index.js +15 -15
  57. package/src/registry.js +88 -75
  58. package/src/resolvers-cache-middleware.js +3 -3
  59. package/src/store/index.js +49 -48
  60. package/src/test/registry.js +33 -47
  61. package/src/types.ts +44 -16
  62. package/src/utils/emitter.js +1 -1
  63. package/tsconfig.tsbuildinfo +1 -1
  64. package/build/plugins/controls/index.js +0 -24
  65. package/build/plugins/controls/index.js.map +0 -1
  66. package/build/store/name.js +0 -15
  67. package/build/store/name.js.map +0 -1
  68. package/build-module/plugins/controls/index.js +0 -12
  69. package/build-module/plugins/controls/index.js.map +0 -1
  70. package/build-module/store/name.js +0 -7
  71. package/build-module/store/name.js.map +0 -1
  72. package/src/plugins/controls/index.js +0 -12
  73. package/src/store/name.js +0 -6
package/build/registry.js CHANGED
@@ -9,23 +9,27 @@ exports.createRegistry = createRegistry;
9
9
 
10
10
  var _lodash = require("lodash");
11
11
 
12
+ var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
13
+
12
14
  var _reduxStore = _interopRequireDefault(require("./redux-store"));
13
15
 
14
16
  var _store = _interopRequireDefault(require("./store"));
15
17
 
16
- var _name = require("./store/name");
17
-
18
18
  var _emitter = require("./utils/emitter");
19
19
 
20
20
  /**
21
21
  * External dependencies
22
22
  */
23
23
 
24
+ /**
25
+ * WordPress dependencies
26
+ */
27
+
24
28
  /**
25
29
  * Internal dependencies
26
30
  */
27
31
 
28
- /** @typedef {import('./types').WPDataStore} WPDataStore */
32
+ /** @typedef {import('./types').StoreDescriptor} StoreDescriptor */
29
33
 
30
34
  /**
31
35
  * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.
@@ -92,15 +96,15 @@ function createRegistry() {
92
96
  /**
93
97
  * Calls a selector given the current state and extra arguments.
94
98
  *
95
- * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store
96
- * or the store definition.
99
+ * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
100
+ * or the store descriptor.
97
101
  *
98
102
  * @return {*} The selector's returned value.
99
103
  */
100
104
 
101
105
 
102
- function select(storeNameOrDefinition) {
103
- const storeName = (0, _lodash.isObject)(storeNameOrDefinition) ? storeNameOrDefinition.name : storeNameOrDefinition;
106
+ function select(storeNameOrDescriptor) {
107
+ const storeName = (0, _lodash.isObject)(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor;
104
108
 
105
109
  __experimentalListeningStores.add(storeName);
106
110
 
@@ -126,15 +130,15 @@ function createRegistry() {
126
130
  * and modified so that they return promises that resolve to their eventual values,
127
131
  * after any resolvers have ran.
128
132
  *
129
- * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store
130
- * or the store definition.
133
+ * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
134
+ * or the store descriptor.
131
135
  *
132
136
  * @return {Object} Each key of the object matches the name of a selector.
133
137
  */
134
138
 
135
139
 
136
- function resolveSelect(storeNameOrDefinition) {
137
- const storeName = (0, _lodash.isObject)(storeNameOrDefinition) ? storeNameOrDefinition.name : storeNameOrDefinition;
140
+ function resolveSelect(storeNameOrDescriptor) {
141
+ const storeName = (0, _lodash.isObject)(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor;
138
142
 
139
143
  __experimentalListeningStores.add(storeName);
140
144
 
@@ -149,15 +153,15 @@ function createRegistry() {
149
153
  /**
150
154
  * Returns the available actions for a part of the state.
151
155
  *
152
- * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store
153
- * or the store definition.
156
+ * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store
157
+ * or the store descriptor.
154
158
  *
155
159
  * @return {*} The action's returned value.
156
160
  */
157
161
 
158
162
 
159
- function dispatch(storeNameOrDefinition) {
160
- const storeName = (0, _lodash.isObject)(storeNameOrDefinition) ? storeNameOrDefinition.name : storeNameOrDefinition;
163
+ function dispatch(storeNameOrDescriptor) {
164
+ const storeName = (0, _lodash.isObject)(storeNameOrDescriptor) ? storeNameOrDescriptor.name : storeNameOrDescriptor;
161
165
  const store = stores[storeName];
162
166
 
163
167
  if (store) {
@@ -183,63 +187,87 @@ function createRegistry() {
183
187
  });
184
188
  }
185
189
  /**
186
- * Registers a generic store.
190
+ * Registers a store instance.
187
191
  *
188
- * @param {string} key Store registry key.
189
- * @param {Object} config Configuration (getSelectors, getActions, subscribe).
192
+ * @param {string} name Store registry name.
193
+ * @param {Object} store Store instance object (getSelectors, getActions, subscribe).
190
194
  */
191
195
 
192
196
 
193
- function registerGenericStore(key, config) {
194
- if (typeof config.getSelectors !== 'function') {
195
- throw new TypeError('config.getSelectors must be a function');
197
+ function registerStoreInstance(name, store) {
198
+ if (typeof store.getSelectors !== 'function') {
199
+ throw new TypeError('store.getSelectors must be a function');
196
200
  }
197
201
 
198
- if (typeof config.getActions !== 'function') {
199
- throw new TypeError('config.getActions must be a function');
202
+ if (typeof store.getActions !== 'function') {
203
+ throw new TypeError('store.getActions must be a function');
200
204
  }
201
205
 
202
- if (typeof config.subscribe !== 'function') {
203
- throw new TypeError('config.subscribe must be a function');
204
- } // Thi emitter is used to keep track of active listeners when the registry
206
+ if (typeof store.subscribe !== 'function') {
207
+ throw new TypeError('store.subscribe must be a function');
208
+ } // The emitter is used to keep track of active listeners when the registry
205
209
  // get paused, that way, when resumed we should be able to call all these
206
210
  // pending listeners.
207
211
 
208
212
 
209
- config.emitter = (0, _emitter.createEmitter)();
210
- const currentSubscribe = config.subscribe;
213
+ store.emitter = (0, _emitter.createEmitter)();
214
+ const currentSubscribe = store.subscribe;
211
215
 
212
- config.subscribe = listener => {
213
- const unsubscribeFromStoreEmitter = config.emitter.subscribe(listener);
214
- const unsubscribeFromRootStore = currentSubscribe(() => {
215
- if (config.emitter.isPaused) {
216
- config.emitter.emit();
216
+ store.subscribe = listener => {
217
+ const unsubscribeFromEmitter = store.emitter.subscribe(listener);
218
+ const unsubscribeFromStore = currentSubscribe(() => {
219
+ if (store.emitter.isPaused) {
220
+ store.emitter.emit();
217
221
  return;
218
222
  }
219
223
 
220
224
  listener();
221
225
  });
222
226
  return () => {
223
- if (unsubscribeFromRootStore) {
224
- unsubscribeFromRootStore();
225
- }
226
-
227
- unsubscribeFromStoreEmitter();
227
+ unsubscribeFromStore === null || unsubscribeFromStore === void 0 ? void 0 : unsubscribeFromStore();
228
+ unsubscribeFromEmitter === null || unsubscribeFromEmitter === void 0 ? void 0 : unsubscribeFromEmitter();
228
229
  };
229
230
  };
230
231
 
231
- stores[key] = config;
232
- config.subscribe(globalListener);
232
+ stores[name] = store;
233
+ store.subscribe(globalListener);
233
234
  }
234
235
  /**
235
- * Registers a new store definition.
236
+ * Registers a new store given a store descriptor.
236
237
  *
237
- * @param {WPDataStore} store Store definition.
238
+ * @param {StoreDescriptor} store Store descriptor.
238
239
  */
239
240
 
240
241
 
241
242
  function register(store) {
242
- registerGenericStore(store.name, store.instantiate(registry));
243
+ registerStoreInstance(store.name, store.instantiate(registry));
244
+ }
245
+
246
+ function registerGenericStore(name, store) {
247
+ (0, _deprecated.default)('wp.data.registerGenericStore', {
248
+ since: '5.9',
249
+ alternative: 'wp.data.register( storeDescriptor )'
250
+ });
251
+ registerStoreInstance(name, store);
252
+ }
253
+ /**
254
+ * Registers a standard `@wordpress/data` store.
255
+ *
256
+ * @param {string} storeName Unique namespace identifier.
257
+ * @param {Object} options Store description (reducer, actions, selectors, resolvers).
258
+ *
259
+ * @return {Object} Registered store object.
260
+ */
261
+
262
+
263
+ function registerStore(storeName, options) {
264
+ if (!options.reducer) {
265
+ throw new TypeError('Must specify store reducer');
266
+ }
267
+
268
+ const store = (0, _reduxStore.default)(storeName, options).instantiate(registry);
269
+ registerStoreInstance(storeName, store);
270
+ return store.store;
243
271
  }
244
272
  /**
245
273
  * Subscribe handler to a store.
@@ -276,7 +304,6 @@ function createRegistry() {
276
304
 
277
305
  let registry = {
278
306
  batch,
279
- registerGenericStore,
280
307
  stores,
281
308
  namespaces: stores,
282
309
  // TODO: Deprecate/remove this.
@@ -286,44 +313,31 @@ function createRegistry() {
286
313
  dispatch,
287
314
  use,
288
315
  register,
316
+ registerGenericStore,
317
+ registerStore,
289
318
  __experimentalMarkListeningStores,
290
319
  __experimentalSubscribeStore
291
- };
292
- /**
293
- * Registers a standard `@wordpress/data` store.
294
- *
295
- * @param {string} storeName Unique namespace identifier.
296
- * @param {Object} options Store description (reducer, actions, selectors, resolvers).
297
- *
298
- * @return {Object} Registered store object.
299
- */
300
-
301
- registry.registerStore = (storeName, options) => {
302
- if (!options.reducer) {
303
- throw new TypeError('Must specify store reducer');
304
- }
305
-
306
- const store = (0, _reduxStore.default)(storeName, options).instantiate(registry);
307
- registerGenericStore(storeName, store);
308
- return store.store;
309
320
  }; //
310
321
  // TODO:
311
322
  // This function will be deprecated as soon as it is no longer internally referenced.
312
323
  //
313
324
 
314
-
315
325
  function use(plugin, options) {
326
+ if (!plugin) {
327
+ return;
328
+ }
329
+
316
330
  registry = { ...registry,
317
331
  ...plugin(registry, options)
318
332
  };
319
333
  return registry;
320
334
  }
321
335
 
322
- registerGenericStore(_name.STORE_NAME, (0, _store.default)(registry));
323
- Object.entries(storeConfigs).forEach(_ref => {
324
- let [name, config] = _ref;
325
- return registry.registerStore(name, config);
326
- });
336
+ registry.register(_store.default);
337
+
338
+ for (const [name, config] of Object.entries(storeConfigs)) {
339
+ registry.register((0, _reduxStore.default)(name, config));
340
+ }
327
341
 
328
342
  if (parent) {
329
343
  parent.subscribe(globalListener);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDefinition","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerGenericStore","config","TypeError","currentSubscribe","unsubscribeFromStoreEmitter","unsubscribeFromRootStore","isPaused","register","instantiate","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","registerStore","options","reducer","plugin","STORE_NAME","Object","entries","forEach"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport createCoreDataStore from './store';\nimport { STORE_NAME } from './store/name';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').WPDataStore} WPDataStore */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store\n\t * or the store definition.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDefinition ) {\n\t\tconst storeName = isObject( storeNameOrDefinition )\n\t\t\t? storeNameOrDefinition.name\n\t\t\t: storeNameOrDefinition;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store\n\t * or the store definition.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDefinition ) {\n\t\tconst storeName = isObject( storeNameOrDefinition )\n\t\t\t? storeNameOrDefinition.name\n\t\t\t: storeNameOrDefinition;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|WPDataStore} storeNameOrDefinition Unique namespace identifier for the store\n\t * or the store definition.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDefinition ) {\n\t\tconst storeName = isObject( storeNameOrDefinition )\n\t\t\t? storeNameOrDefinition.name\n\t\t\t: storeNameOrDefinition;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a generic store.\n\t *\n\t * @param {string} key Store registry key.\n\t * @param {Object} config Configuration (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerGenericStore( key, config ) {\n\t\tif ( typeof config.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'config.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof config.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'config.getActions must be a function' );\n\t\t}\n\t\tif ( typeof config.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'config.subscribe must be a function' );\n\t\t}\n\t\t// Thi emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tconfig.emitter = createEmitter();\n\t\tconst currentSubscribe = config.subscribe;\n\t\tconfig.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromStoreEmitter = config.emitter.subscribe(\n\t\t\t\tlistener\n\t\t\t);\n\t\t\tconst unsubscribeFromRootStore = currentSubscribe( () => {\n\t\t\t\tif ( config.emitter.isPaused ) {\n\t\t\t\t\tconfig.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tif ( unsubscribeFromRootStore ) {\n\t\t\t\t\tunsubscribeFromRootStore();\n\t\t\t\t}\n\t\t\t\tunsubscribeFromStoreEmitter();\n\t\t\t};\n\t\t};\n\t\tstores[ key ] = config;\n\t\tconfig.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store definition.\n\t *\n\t * @param {WPDataStore} store Store definition.\n\t */\n\tfunction register( store ) {\n\t\tregisterGenericStore( store.name, store.instantiate( registry ) );\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tregisterGenericStore,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tregistry.registerStore = ( storeName, options ) => {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterGenericStore( storeName, store );\n\t\treturn store.store;\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregisterGenericStore( STORE_NAME, createCoreDataStore( registry ) );\n\n\tObject.entries( storeConfigs ).forEach( ( [ name, config ] ) =>\n\t\tregistry.registerStore( name, config )\n\t);\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDescriptor","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerStoreInstance","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","plugin","coreDataStore","config","Object","entries"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Object} store Store instance object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, store ) {\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, store.instantiate( registry ) );\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterStoreInstance( storeName, store );\n\t\treturn store.store;\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,7 +9,7 @@ exports.default = void 0;
7
9
 
8
10
  var _lodash = require("lodash");
9
11
 
10
- var _name = require("./store/name");
12
+ var _store = _interopRequireDefault(require("./store"));
11
13
 
12
14
  /**
13
15
  * External dependencies
@@ -30,7 +32,7 @@ var _name = require("./store/name");
30
32
  * @return {Function} Middleware function.
31
33
  */
32
34
  const createResolversCacheMiddleware = (registry, reducerKey) => () => next => action => {
33
- const resolvers = registry.select(_name.STORE_NAME).getCachedResolvers(reducerKey);
35
+ const resolvers = registry.select(_store.default).getCachedResolvers(reducerKey);
34
36
  Object.entries(resolvers).forEach(_ref => {
35
37
  let [selectorName, resolversByArgs] = _ref;
36
38
  const resolver = (0, _lodash.get)(registry.stores, [reducerKey, 'resolvers', selectorName]);
@@ -48,7 +50,7 @@ const createResolversCacheMiddleware = (registry, reducerKey) => () => next => a
48
50
  } // Trigger cache invalidation
49
51
 
50
52
 
51
- registry.dispatch(_name.STORE_NAME).invalidateResolution(reducerKey, selectorName, args);
53
+ registry.dispatch(_store.default).invalidateResolution(reducerKey, selectorName, args);
52
54
  });
53
55
  });
54
56
  return next(action);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/resolvers-cache-middleware.js"],"names":["createResolversCacheMiddleware","registry","reducerKey","next","action","resolvers","select","STORE_NAME","getCachedResolvers","Object","entries","forEach","selectorName","resolversByArgs","resolver","stores","shouldInvalidate","value","args","dispatch","invalidateResolution"],"mappings":";;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,CAAEC,QAAF,EAAYC,UAAZ,KAA4B,MAClEC,IADwE,IAElEC,MAAF,IAAc;AAClB,QAAMC,SAAS,GAAGJ,QAAQ,CACxBK,MADgB,CACRC,gBADQ,EAEhBC,kBAFgB,CAEIN,UAFJ,CAAlB;AAGAO,EAAAA,MAAM,CAACC,OAAP,CAAgBL,SAAhB,EAA4BM,OAA5B,CACC,QAAyC;AAAA,QAAvC,CAAEC,YAAF,EAAgBC,eAAhB,CAAuC;AACxC,UAAMC,QAAQ,GAAG,iBAAKb,QAAQ,CAACc,MAAd,EAAsB,CACtCb,UADsC,EAEtC,WAFsC,EAGtCU,YAHsC,CAAtB,CAAjB;;AAKA,QAAK,CAAEE,QAAF,IAAc,CAAEA,QAAQ,CAACE,gBAA9B,EAAiD;AAChD;AACA;;AACDH,IAAAA,eAAe,CAACF,OAAhB,CAAyB,CAAEM,KAAF,EAASC,IAAT,KAAmB;AAC3C;AACA;AACA;AACA,UACCD,KAAK,KAAK,KAAV,IACA,CAAEH,QAAQ,CAACE,gBAAT,CAA2BZ,MAA3B,EAAmC,GAAGc,IAAtC,CAFH,EAGE;AACD;AACA,OAT0C,CAW3C;;;AACAjB,MAAAA,QAAQ,CACNkB,QADF,CACYZ,gBADZ,EAEEa,oBAFF,CAEwBlB,UAFxB,EAEoCU,YAFpC,EAEkDM,IAFlD;AAGA,KAfD;AAgBA,GA1BF;AA4BA,SAAOf,IAAI,CAAEC,MAAF,CAAX;AACA,CAnCD;;eAqCeJ,8B","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './store/name';\n\n/** @typedef {import('./registry').WPDataRegistry} WPDataRegistry */\n\n/**\n * Creates a middleware handling resolvers cache invalidation.\n *\n * @param {WPDataRegistry} registry The registry reference for which to create\n * the middleware.\n * @param {string} reducerKey The namespace for which to create the\n * middleware.\n *\n * @return {Function} Middleware function.\n */\nconst createResolversCacheMiddleware = ( registry, reducerKey ) => () => (\n\tnext\n) => ( action ) => {\n\tconst resolvers = registry\n\t\t.select( STORE_NAME )\n\t\t.getCachedResolvers( reducerKey );\n\tObject.entries( resolvers ).forEach(\n\t\t( [ selectorName, resolversByArgs ] ) => {\n\t\t\tconst resolver = get( registry.stores, [\n\t\t\t\treducerKey,\n\t\t\t\t'resolvers',\n\t\t\t\tselectorName,\n\t\t\t] );\n\t\t\tif ( ! resolver || ! resolver.shouldInvalidate ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolversByArgs.forEach( ( value, args ) => {\n\t\t\t\t// resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.\n\t\t\t\t// If the value is false it means this resolver has finished its resolution which means we need to invalidate it,\n\t\t\t\t// if it's true it means it's inflight and the invalidation is not necessary.\n\t\t\t\tif (\n\t\t\t\t\tvalue !== false ||\n\t\t\t\t\t! resolver.shouldInvalidate( action, ...args )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Trigger cache invalidation\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( STORE_NAME )\n\t\t\t\t\t.invalidateResolution( reducerKey, selectorName, args );\n\t\t\t} );\n\t\t}\n\t);\n\treturn next( action );\n};\n\nexport default createResolversCacheMiddleware;\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/resolvers-cache-middleware.js"],"names":["createResolversCacheMiddleware","registry","reducerKey","next","action","resolvers","select","coreDataStore","getCachedResolvers","Object","entries","forEach","selectorName","resolversByArgs","resolver","stores","shouldInvalidate","value","args","dispatch","invalidateResolution"],"mappings":";;;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,CAAEC,QAAF,EAAYC,UAAZ,KAA4B,MAClEC,IADwE,IAElEC,MAAF,IAAc;AAClB,QAAMC,SAAS,GAAGJ,QAAQ,CACxBK,MADgB,CACRC,cADQ,EAEhBC,kBAFgB,CAEIN,UAFJ,CAAlB;AAGAO,EAAAA,MAAM,CAACC,OAAP,CAAgBL,SAAhB,EAA4BM,OAA5B,CACC,QAAyC;AAAA,QAAvC,CAAEC,YAAF,EAAgBC,eAAhB,CAAuC;AACxC,UAAMC,QAAQ,GAAG,iBAAKb,QAAQ,CAACc,MAAd,EAAsB,CACtCb,UADsC,EAEtC,WAFsC,EAGtCU,YAHsC,CAAtB,CAAjB;;AAKA,QAAK,CAAEE,QAAF,IAAc,CAAEA,QAAQ,CAACE,gBAA9B,EAAiD;AAChD;AACA;;AACDH,IAAAA,eAAe,CAACF,OAAhB,CAAyB,CAAEM,KAAF,EAASC,IAAT,KAAmB;AAC3C;AACA;AACA;AACA,UACCD,KAAK,KAAK,KAAV,IACA,CAAEH,QAAQ,CAACE,gBAAT,CAA2BZ,MAA3B,EAAmC,GAAGc,IAAtC,CAFH,EAGE;AACD;AACA,OAT0C,CAW3C;;;AACAjB,MAAAA,QAAQ,CACNkB,QADF,CACYZ,cADZ,EAEEa,oBAFF,CAEwBlB,UAFxB,EAEoCU,YAFpC,EAEkDM,IAFlD;AAGA,KAfD;AAgBA,GA1BF;AA4BA,SAAOf,IAAI,CAAEC,MAAF,CAAX;AACA,CAnCD;;eAqCeJ,8B","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport coreDataStore from './store';\n\n/** @typedef {import('./registry').WPDataRegistry} WPDataRegistry */\n\n/**\n * Creates a middleware handling resolvers cache invalidation.\n *\n * @param {WPDataRegistry} registry The registry reference for which to create\n * the middleware.\n * @param {string} reducerKey The namespace for which to create the\n * middleware.\n *\n * @return {Function} Middleware function.\n */\nconst createResolversCacheMiddleware = ( registry, reducerKey ) => () => (\n\tnext\n) => ( action ) => {\n\tconst resolvers = registry\n\t\t.select( coreDataStore )\n\t\t.getCachedResolvers( reducerKey );\n\tObject.entries( resolvers ).forEach(\n\t\t( [ selectorName, resolversByArgs ] ) => {\n\t\t\tconst resolver = get( registry.stores, [\n\t\t\t\treducerKey,\n\t\t\t\t'resolvers',\n\t\t\t\tselectorName,\n\t\t\t] );\n\t\t\tif ( ! resolver || ! resolver.shouldInvalidate ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolversByArgs.forEach( ( value, args ) => {\n\t\t\t\t// resolversByArgs is the map Map([ args ] => boolean) storing the cache resolution status for a given selector.\n\t\t\t\t// If the value is false it means this resolver has finished its resolution which means we need to invalidate it,\n\t\t\t\t// if it's true it means it's inflight and the invalidation is not necessary.\n\t\t\t\tif (\n\t\t\t\t\tvalue !== false ||\n\t\t\t\t\t! resolver.shouldInvalidate( action, ...args )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Trigger cache invalidation\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( coreDataStore )\n\t\t\t\t\t.invalidateResolution( reducerKey, selectorName, args );\n\t\t\t} );\n\t\t}\n\t);\n\treturn next( action );\n};\n\nexport default createResolversCacheMiddleware;\n"]}
@@ -4,48 +4,47 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
- function createCoreDataStore(registry) {
9
- const getCoreDataSelector = selectorName => function (key) {
10
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
11
- args[_key - 1] = arguments[_key];
12
- }
13
-
14
- return registry.select(key)[selectorName](...args);
15
- };
16
-
17
- const getCoreDataAction = actionName => function (key) {
18
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
19
- args[_key2 - 1] = arguments[_key2];
20
- }
21
-
22
- return registry.dispatch(key)[actionName](...args);
23
- };
24
-
25
- return {
26
- getSelectors() {
27
- return ['getIsResolving', 'hasStartedResolution', 'hasFinishedResolution', 'isResolving', 'getCachedResolvers'].reduce((memo, selectorName) => ({ ...memo,
28
- [selectorName]: getCoreDataSelector(selectorName)
29
- }), {});
30
- },
31
-
32
- getActions() {
33
- return ['startResolution', 'finishResolution', 'invalidateResolution', 'invalidateResolutionForStore', 'invalidateResolutionForStoreSelector'].reduce((memo, actionName) => ({ ...memo,
34
- [actionName]: getCoreDataAction(actionName)
35
- }), {});
36
- },
37
-
38
- subscribe() {
39
- // There's no reasons to trigger any listener when we subscribe to this store
40
- // because there's no state stored in this store that need to retrigger selectors
41
- // if a change happens, the corresponding store where the tracking stated live
42
- // would have already triggered a "subscribe" call.
43
- return () => {};
44
- }
45
-
46
- };
47
- }
48
-
49
- var _default = createCoreDataStore;
7
+ const coreDataStore = {
8
+ name: 'core/data',
9
+
10
+ instantiate(registry) {
11
+ const getCoreDataSelector = selectorName => function (key) {
12
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
13
+ args[_key - 1] = arguments[_key];
14
+ }
15
+
16
+ return registry.select(key)[selectorName](...args);
17
+ };
18
+
19
+ const getCoreDataAction = actionName => function (key) {
20
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
21
+ args[_key2 - 1] = arguments[_key2];
22
+ }
23
+
24
+ return registry.dispatch(key)[actionName](...args);
25
+ };
26
+
27
+ return {
28
+ getSelectors() {
29
+ return Object.fromEntries(['getIsResolving', 'hasStartedResolution', 'hasFinishedResolution', 'isResolving', 'getCachedResolvers'].map(selectorName => [selectorName, getCoreDataSelector(selectorName)]));
30
+ },
31
+
32
+ getActions() {
33
+ return Object.fromEntries(['startResolution', 'finishResolution', 'invalidateResolution', 'invalidateResolutionForStore', 'invalidateResolutionForStoreSelector'].map(actionName => [actionName, getCoreDataAction(actionName)]));
34
+ },
35
+
36
+ subscribe() {
37
+ // There's no reasons to trigger any listener when we subscribe to this store
38
+ // because there's no state stored in this store that need to retrigger selectors
39
+ // if a change happens, the corresponding store where the tracking stated live
40
+ // would have already triggered a "subscribe" call.
41
+ return () => () => {};
42
+ }
43
+
44
+ };
45
+ }
46
+
47
+ };
48
+ var _default = coreDataStore;
50
49
  exports.default = _default;
51
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/store/index.js"],"names":["createCoreDataStore","registry","getCoreDataSelector","selectorName","key","args","select","getCoreDataAction","actionName","dispatch","getSelectors","reduce","memo","getActions","subscribe"],"mappings":";;;;;;;AAAA,SAASA,mBAAT,CAA8BC,QAA9B,EAAyC;AACxC,QAAMC,mBAAmB,GAAKC,YAAF,IAAoB,UAAEC,GAAF,EAAoB;AAAA,sCAAVC,IAAU;AAAVA,MAAAA,IAAU;AAAA;;AACnE,WAAOJ,QAAQ,CAACK,MAAT,CAAiBF,GAAjB,EAAwBD,YAAxB,EAAwC,GAAGE,IAA3C,CAAP;AACA,GAFD;;AAIA,QAAME,iBAAiB,GAAKC,UAAF,IAAkB,UAAEJ,GAAF,EAAoB;AAAA,uCAAVC,IAAU;AAAVA,MAAAA,IAAU;AAAA;;AAC/D,WAAOJ,QAAQ,CAACQ,QAAT,CAAmBL,GAAnB,EAA0BI,UAA1B,EAAwC,GAAGH,IAA3C,CAAP;AACA,GAFD;;AAIA,SAAO;AACNK,IAAAA,YAAY,GAAG;AACd,aAAO,CACN,gBADM,EAEN,sBAFM,EAGN,uBAHM,EAIN,aAJM,EAKN,oBALM,EAMLC,MANK,CAON,CAAEC,IAAF,EAAQT,YAAR,MAA4B,EAC3B,GAAGS,IADwB;AAE3B,SAAET,YAAF,GAAkBD,mBAAmB,CAAEC,YAAF;AAFV,OAA5B,CAPM,EAWN,EAXM,CAAP;AAaA,KAfK;;AAiBNU,IAAAA,UAAU,GAAG;AACZ,aAAO,CACN,iBADM,EAEN,kBAFM,EAGN,sBAHM,EAIN,8BAJM,EAKN,sCALM,EAMLF,MANK,CAON,CAAEC,IAAF,EAAQJ,UAAR,MAA0B,EACzB,GAAGI,IADsB;AAEzB,SAAEJ,UAAF,GAAgBD,iBAAiB,CAAEC,UAAF;AAFR,OAA1B,CAPM,EAWN,EAXM,CAAP;AAaA,KA/BK;;AAiCNM,IAAAA,SAAS,GAAG;AACX;AACA;AACA;AACA;AACA,aAAO,MAAM,CAAE,CAAf;AACA;;AAvCK,GAAP;AAyCA;;eAEcd,mB","sourcesContent":["function createCoreDataStore( registry ) {\n\tconst getCoreDataSelector = ( selectorName ) => ( key, ...args ) => {\n\t\treturn registry.select( key )[ selectorName ]( ...args );\n\t};\n\n\tconst getCoreDataAction = ( actionName ) => ( key, ...args ) => {\n\t\treturn registry.dispatch( key )[ actionName ]( ...args );\n\t};\n\n\treturn {\n\t\tgetSelectors() {\n\t\t\treturn [\n\t\t\t\t'getIsResolving',\n\t\t\t\t'hasStartedResolution',\n\t\t\t\t'hasFinishedResolution',\n\t\t\t\t'isResolving',\n\t\t\t\t'getCachedResolvers',\n\t\t\t].reduce(\n\t\t\t\t( memo, selectorName ) => ( {\n\t\t\t\t\t...memo,\n\t\t\t\t\t[ selectorName ]: getCoreDataSelector( selectorName ),\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\n\t\tgetActions() {\n\t\t\treturn [\n\t\t\t\t'startResolution',\n\t\t\t\t'finishResolution',\n\t\t\t\t'invalidateResolution',\n\t\t\t\t'invalidateResolutionForStore',\n\t\t\t\t'invalidateResolutionForStoreSelector',\n\t\t\t].reduce(\n\t\t\t\t( memo, actionName ) => ( {\n\t\t\t\t\t...memo,\n\t\t\t\t\t[ actionName ]: getCoreDataAction( actionName ),\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\n\t\tsubscribe() {\n\t\t\t// There's no reasons to trigger any listener when we subscribe to this store\n\t\t\t// because there's no state stored in this store that need to retrigger selectors\n\t\t\t// if a change happens, the corresponding store where the tracking stated live\n\t\t\t// would have already triggered a \"subscribe\" call.\n\t\t\treturn () => {};\n\t\t},\n\t};\n}\n\nexport default createCoreDataStore;\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/store/index.js"],"names":["coreDataStore","name","instantiate","registry","getCoreDataSelector","selectorName","key","args","select","getCoreDataAction","actionName","dispatch","getSelectors","Object","fromEntries","map","getActions","subscribe"],"mappings":";;;;;;AAAA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,IAAI,EAAE,WADe;;AAErBC,EAAAA,WAAW,CAAEC,QAAF,EAAa;AACvB,UAAMC,mBAAmB,GAAKC,YAAF,IAAoB,UAAEC,GAAF,EAAoB;AAAA,wCAAVC,IAAU;AAAVA,QAAAA,IAAU;AAAA;;AACnE,aAAOJ,QAAQ,CAACK,MAAT,CAAiBF,GAAjB,EAAwBD,YAAxB,EAAwC,GAAGE,IAA3C,CAAP;AACA,KAFD;;AAIA,UAAME,iBAAiB,GAAKC,UAAF,IAAkB,UAAEJ,GAAF,EAAoB;AAAA,yCAAVC,IAAU;AAAVA,QAAAA,IAAU;AAAA;;AAC/D,aAAOJ,QAAQ,CAACQ,QAAT,CAAmBL,GAAnB,EAA0BI,UAA1B,EAAwC,GAAGH,IAA3C,CAAP;AACA,KAFD;;AAIA,WAAO;AACNK,MAAAA,YAAY,GAAG;AACd,eAAOC,MAAM,CAACC,WAAP,CACN,CACC,gBADD,EAEC,sBAFD,EAGC,uBAHD,EAIC,aAJD,EAKC,oBALD,EAMEC,GANF,CAMSV,YAAF,IAAoB,CAC1BA,YAD0B,EAE1BD,mBAAmB,CAAEC,YAAF,CAFO,CAN3B,CADM,CAAP;AAYA,OAdK;;AAgBNW,MAAAA,UAAU,GAAG;AACZ,eAAOH,MAAM,CAACC,WAAP,CACN,CACC,iBADD,EAEC,kBAFD,EAGC,sBAHD,EAIC,8BAJD,EAKC,sCALD,EAMEC,GANF,CAMSL,UAAF,IAAkB,CACxBA,UADwB,EAExBD,iBAAiB,CAAEC,UAAF,CAFO,CANzB,CADM,CAAP;AAYA,OA7BK;;AA+BNO,MAAAA,SAAS,GAAG;AACX;AACA;AACA;AACA;AACA,eAAO,MAAM,MAAM,CAAE,CAArB;AACA;;AArCK,KAAP;AAuCA;;AAlDoB,CAAtB;eAqDejB,a","sourcesContent":["const coreDataStore = {\n\tname: 'core/data',\n\tinstantiate( registry ) {\n\t\tconst getCoreDataSelector = ( selectorName ) => ( key, ...args ) => {\n\t\t\treturn registry.select( key )[ selectorName ]( ...args );\n\t\t};\n\n\t\tconst getCoreDataAction = ( actionName ) => ( key, ...args ) => {\n\t\t\treturn registry.dispatch( key )[ actionName ]( ...args );\n\t\t};\n\n\t\treturn {\n\t\t\tgetSelectors() {\n\t\t\t\treturn Object.fromEntries(\n\t\t\t\t\t[\n\t\t\t\t\t\t'getIsResolving',\n\t\t\t\t\t\t'hasStartedResolution',\n\t\t\t\t\t\t'hasFinishedResolution',\n\t\t\t\t\t\t'isResolving',\n\t\t\t\t\t\t'getCachedResolvers',\n\t\t\t\t\t].map( ( selectorName ) => [\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\tgetCoreDataSelector( selectorName ),\n\t\t\t\t\t] )\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tgetActions() {\n\t\t\t\treturn Object.fromEntries(\n\t\t\t\t\t[\n\t\t\t\t\t\t'startResolution',\n\t\t\t\t\t\t'finishResolution',\n\t\t\t\t\t\t'invalidateResolution',\n\t\t\t\t\t\t'invalidateResolutionForStore',\n\t\t\t\t\t\t'invalidateResolutionForStoreSelector',\n\t\t\t\t\t].map( ( actionName ) => [\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\tgetCoreDataAction( actionName ),\n\t\t\t\t\t] )\n\t\t\t\t);\n\t\t\t},\n\n\t\t\tsubscribe() {\n\t\t\t\t// There's no reasons to trigger any listener when we subscribe to this store\n\t\t\t\t// because there's no state stored in this store that need to retrigger selectors\n\t\t\t\t// if a change happens, the corresponding store where the tracking stated live\n\t\t\t\t// would have already triggered a \"subscribe\" call.\n\t\t\t\treturn () => () => {};\n\t\t\t},\n\t\t};\n\t},\n};\n\nexport default coreDataStore;\n"]}
@@ -8,7 +8,7 @@ exports.createEmitter = createEmitter;
8
8
  /**
9
9
  * Create an event emitter.
10
10
  *
11
- * @return {import("../types").WPDataEmitter} Emitter.
11
+ * @return {import("../types").DataEmitter} Emitter.
12
12
  */
13
13
  function createEmitter() {
14
14
  let isPaused = false;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/utils/emitter.js"],"names":["createEmitter","isPaused","isPending","listeners","Set","notifyListeners","Array","from","forEach","listener","subscribe","add","delete","pause","resume","emit"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAT,GAAyB;AAC/B,MAAIC,QAAQ,GAAG,KAAf;AACA,MAAIC,SAAS,GAAG,KAAhB;AACA,QAAMC,SAAS,GAAG,IAAIC,GAAJ,EAAlB;;AACA,QAAMC,eAAe,GAAG,MACvB;AACA;AACA;AACAC,EAAAA,KAAK,CAACC,IAAN,CAAYJ,SAAZ,EAAwBK,OAAxB,CAAmCC,QAAF,IAAgBA,QAAQ,EAAzD,CAJD;;AAMA,SAAO;AACN,QAAIR,QAAJ,GAAe;AACd,aAAOA,QAAP;AACA,KAHK;;AAKNS,IAAAA,SAAS,CAAED,QAAF,EAAa;AACrBN,MAAAA,SAAS,CAACQ,GAAV,CAAeF,QAAf;AACA,aAAO,MAAMN,SAAS,CAACS,MAAV,CAAkBH,QAAlB,CAAb;AACA,KARK;;AAUNI,IAAAA,KAAK,GAAG;AACPZ,MAAAA,QAAQ,GAAG,IAAX;AACA,KAZK;;AAcNa,IAAAA,MAAM,GAAG;AACRb,MAAAA,QAAQ,GAAG,KAAX;;AACA,UAAKC,SAAL,EAAiB;AAChBA,QAAAA,SAAS,GAAG,KAAZ;AACAG,QAAAA,eAAe;AACf;AACD,KApBK;;AAsBNU,IAAAA,IAAI,GAAG;AACN,UAAKd,QAAL,EAAgB;AACfC,QAAAA,SAAS,GAAG,IAAZ;AACA;AACA;;AACDG,MAAAA,eAAe;AACf;;AA5BK,GAAP;AA8BA","sourcesContent":["/**\n * Create an event emitter.\n *\n * @return {import(\"../types\").WPDataEmitter} Emitter.\n */\nexport function createEmitter() {\n\tlet isPaused = false;\n\tlet isPending = false;\n\tconst listeners = new Set();\n\tconst notifyListeners = () =>\n\t\t// We use Array.from to clone the listeners Set\n\t\t// This ensures that we don't run a listener\n\t\t// that was added as a response to another listener.\n\t\tArray.from( listeners ).forEach( ( listener ) => listener() );\n\n\treturn {\n\t\tget isPaused() {\n\t\t\treturn isPaused;\n\t\t},\n\n\t\tsubscribe( listener ) {\n\t\t\tlisteners.add( listener );\n\t\t\treturn () => listeners.delete( listener );\n\t\t},\n\n\t\tpause() {\n\t\t\tisPaused = true;\n\t\t},\n\n\t\tresume() {\n\t\t\tisPaused = false;\n\t\t\tif ( isPending ) {\n\t\t\t\tisPending = false;\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t},\n\n\t\temit() {\n\t\t\tif ( isPaused ) {\n\t\t\t\tisPending = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnotifyListeners();\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/utils/emitter.js"],"names":["createEmitter","isPaused","isPending","listeners","Set","notifyListeners","Array","from","forEach","listener","subscribe","add","delete","pause","resume","emit"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAT,GAAyB;AAC/B,MAAIC,QAAQ,GAAG,KAAf;AACA,MAAIC,SAAS,GAAG,KAAhB;AACA,QAAMC,SAAS,GAAG,IAAIC,GAAJ,EAAlB;;AACA,QAAMC,eAAe,GAAG,MACvB;AACA;AACA;AACAC,EAAAA,KAAK,CAACC,IAAN,CAAYJ,SAAZ,EAAwBK,OAAxB,CAAmCC,QAAF,IAAgBA,QAAQ,EAAzD,CAJD;;AAMA,SAAO;AACN,QAAIR,QAAJ,GAAe;AACd,aAAOA,QAAP;AACA,KAHK;;AAKNS,IAAAA,SAAS,CAAED,QAAF,EAAa;AACrBN,MAAAA,SAAS,CAACQ,GAAV,CAAeF,QAAf;AACA,aAAO,MAAMN,SAAS,CAACS,MAAV,CAAkBH,QAAlB,CAAb;AACA,KARK;;AAUNI,IAAAA,KAAK,GAAG;AACPZ,MAAAA,QAAQ,GAAG,IAAX;AACA,KAZK;;AAcNa,IAAAA,MAAM,GAAG;AACRb,MAAAA,QAAQ,GAAG,KAAX;;AACA,UAAKC,SAAL,EAAiB;AAChBA,QAAAA,SAAS,GAAG,KAAZ;AACAG,QAAAA,eAAe;AACf;AACD,KApBK;;AAsBNU,IAAAA,IAAI,GAAG;AACN,UAAKd,QAAL,EAAgB;AACfC,QAAAA,SAAS,GAAG,IAAZ;AACA;AACA;;AACDG,MAAAA,eAAe;AACf;;AA5BK,GAAP;AA8BA","sourcesContent":["/**\n * Create an event emitter.\n *\n * @return {import(\"../types\").DataEmitter} Emitter.\n */\nexport function createEmitter() {\n\tlet isPaused = false;\n\tlet isPending = false;\n\tconst listeners = new Set();\n\tconst notifyListeners = () =>\n\t\t// We use Array.from to clone the listeners Set\n\t\t// This ensures that we don't run a listener\n\t\t// that was added as a response to another listener.\n\t\tArray.from( listeners ).forEach( ( listener ) => listener() );\n\n\treturn {\n\t\tget isPaused() {\n\t\t\treturn isPaused;\n\t\t},\n\n\t\tsubscribe( listener ) {\n\t\t\tlisteners.add( listener );\n\t\t\treturn () => listeners.delete( listener );\n\t\t},\n\n\t\tpause() {\n\t\t\tisPaused = true;\n\t\t},\n\n\t\tresume() {\n\t\t\tisPaused = false;\n\t\t\tif ( isPending ) {\n\t\t\t\tisPending = false;\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t},\n\n\t\temit() {\n\t\t\tif ( isPaused ) {\n\t\t\t\tisPending = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnotifyListeners();\n\t\t},\n\t};\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import useRegistry from '../registry-provider/use-registry';
5
- /** @typedef {import('./types').WPDataStore} WPDataStore */
5
+ /** @typedef {import('../../types').StoreDescriptor} StoreDescriptor */
6
6
 
7
7
  /**
8
8
  * A custom react hook returning the current registry dispatch actions creators.
@@ -10,11 +10,11 @@ import useRegistry from '../registry-provider/use-registry';
10
10
  * Note: The component using this hook must be within the context of a
11
11
  * RegistryProvider.
12
12
  *
13
- * @param {string|WPDataStore} [storeNameOrDefinition] Optionally provide the name of the
14
- * store or its definition from which to
15
- * retrieve action creators. If not
16
- * provided, the registry.dispatch
17
- * function is returned instead.
13
+ * @param {string|StoreDescriptor} [storeNameOrDescriptor] Optionally provide the name of the
14
+ * store or its descriptor from which to
15
+ * retrieve action creators. If not
16
+ * provided, the registry.dispatch
17
+ * function is returned instead.
18
18
  *
19
19
  * @example
20
20
  * This illustrates a pattern where you may need to retrieve dynamic data from
@@ -49,11 +49,11 @@ import useRegistry from '../registry-provider/use-registry';
49
49
  * @return {Function} A custom react hook.
50
50
  */
51
51
 
52
- const useDispatch = storeNameOrDefinition => {
52
+ const useDispatch = storeNameOrDescriptor => {
53
53
  const {
54
54
  dispatch
55
55
  } = useRegistry();
56
- return storeNameOrDefinition === void 0 ? dispatch : dispatch(storeNameOrDefinition);
56
+ return storeNameOrDescriptor === void 0 ? dispatch : dispatch(storeNameOrDescriptor);
57
57
  };
58
58
 
59
59
  export default useDispatch;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/data/src/components/use-dispatch/use-dispatch.js"],"names":["useRegistry","useDispatch","storeNameOrDefinition","dispatch"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,WAAP,MAAwB,mCAAxB;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,WAAW,GAAKC,qBAAF,IAA6B;AAChD,QAAM;AAAEC,IAAAA;AAAF,MAAeH,WAAW,EAAhC;AACA,SAAOE,qBAAqB,KAAK,KAAK,CAA/B,GACJC,QADI,GAEJA,QAAQ,CAAED,qBAAF,CAFX;AAGA,CALD;;AAOA,eAAeD,WAAf","sourcesContent":["/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\n\n/** @typedef {import('./types').WPDataStore} WPDataStore */\n\n/**\n * A custom react hook returning the current registry dispatch actions creators.\n *\n * Note: The component using this hook must be within the context of a\n * RegistryProvider.\n *\n * @param {string|WPDataStore} [storeNameOrDefinition] Optionally provide the name of the\n * store or its definition from which to\n * retrieve action creators. If not\n * provided, the registry.dispatch\n * function is returned instead.\n *\n * @example\n * This illustrates a pattern where you may need to retrieve dynamic data from\n * the server via the `useSelect` hook to use in combination with the dispatch\n * action.\n *\n * ```jsx\n * import { useDispatch, useSelect } from '@wordpress/data';\n * import { useCallback } from '@wordpress/element';\n *\n * function Button( { onClick, children } ) {\n * return <button type=\"button\" onClick={ onClick }>{ children }</button>\n * }\n *\n * const SaleButton = ( { children } ) => {\n * const { stockNumber } = useSelect(\n * ( select ) => select( 'my-shop' ).getStockNumber(),\n * []\n * );\n * const { startSale } = useDispatch( 'my-shop' );\n * const onClick = useCallback( () => {\n * const discountPercent = stockNumber > 50 ? 10: 20;\n * startSale( discountPercent );\n * }, [ stockNumber ] );\n * return <Button onClick={ onClick }>{ children }</Button>\n * }\n *\n * // Rendered somewhere in the application:\n * //\n * // <SaleButton>Start Sale!</SaleButton>\n * ```\n * @return {Function} A custom react hook.\n */\nconst useDispatch = ( storeNameOrDefinition ) => {\n\tconst { dispatch } = useRegistry();\n\treturn storeNameOrDefinition === void 0\n\t\t? dispatch\n\t\t: dispatch( storeNameOrDefinition );\n};\n\nexport default useDispatch;\n"]}
1
+ {"version":3,"sources":["@wordpress/data/src/components/use-dispatch/use-dispatch.js"],"names":["useRegistry","useDispatch","storeNameOrDescriptor","dispatch"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,WAAP,MAAwB,mCAAxB;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,WAAW,GAAKC,qBAAF,IAA6B;AAChD,QAAM;AAAEC,IAAAA;AAAF,MAAeH,WAAW,EAAhC;AACA,SAAOE,qBAAqB,KAAK,KAAK,CAA/B,GACJC,QADI,GAEJA,QAAQ,CAAED,qBAAF,CAFX;AAGA,CALD;;AAOA,eAAeD,WAAf","sourcesContent":["/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\n\n/** @typedef {import('../../types').StoreDescriptor} StoreDescriptor */\n\n/**\n * A custom react hook returning the current registry dispatch actions creators.\n *\n * Note: The component using this hook must be within the context of a\n * RegistryProvider.\n *\n * @param {string|StoreDescriptor} [storeNameOrDescriptor] Optionally provide the name of the\n * store or its descriptor from which to\n * retrieve action creators. If not\n * provided, the registry.dispatch\n * function is returned instead.\n *\n * @example\n * This illustrates a pattern where you may need to retrieve dynamic data from\n * the server via the `useSelect` hook to use in combination with the dispatch\n * action.\n *\n * ```jsx\n * import { useDispatch, useSelect } from '@wordpress/data';\n * import { useCallback } from '@wordpress/element';\n *\n * function Button( { onClick, children } ) {\n * return <button type=\"button\" onClick={ onClick }>{ children }</button>\n * }\n *\n * const SaleButton = ( { children } ) => {\n * const { stockNumber } = useSelect(\n * ( select ) => select( 'my-shop' ).getStockNumber(),\n * []\n * );\n * const { startSale } = useDispatch( 'my-shop' );\n * const onClick = useCallback( () => {\n * const discountPercent = stockNumber > 50 ? 10: 20;\n * startSale( discountPercent );\n * }, [ stockNumber ] );\n * return <Button onClick={ onClick }>{ children }</Button>\n * }\n *\n * // Rendered somewhere in the application:\n * //\n * // <SaleButton>Start Sale!</SaleButton>\n * ```\n * @return {Function} A custom react hook.\n */\nconst useDispatch = ( storeNameOrDescriptor ) => {\n\tconst { dispatch } = useRegistry();\n\treturn storeNameOrDescriptor === void 0\n\t\t? dispatch\n\t\t: dispatch( storeNameOrDescriptor );\n};\n\nexport default useDispatch;\n"]}