@wordpress/core-data 6.16.0 → 6.17.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 (236) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/actions.js +69 -134
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/create-batch.js +0 -22
  5. package/build/batch/create-batch.js.map +1 -1
  6. package/build/batch/default-processor.js +3 -15
  7. package/build/batch/default-processor.js.map +1 -1
  8. package/build/batch/index.js +0 -3
  9. package/build/batch/index.js.map +1 -1
  10. package/build/entities.js +109 -36
  11. package/build/entities.js.map +1 -1
  12. package/build/entity-provider.js +34 -53
  13. package/build/entity-provider.js.map +1 -1
  14. package/build/entity-types/attachment.js.map +1 -1
  15. package/build/entity-types/base-entity-records.js +0 -3
  16. package/build/entity-types/base-entity-records.js.map +1 -1
  17. package/build/entity-types/comment.js.map +1 -1
  18. package/build/entity-types/helpers.js.map +1 -1
  19. package/build/entity-types/index.js.map +1 -1
  20. package/build/entity-types/menu-location.js.map +1 -1
  21. package/build/entity-types/nav-menu-item.js.map +1 -1
  22. package/build/entity-types/nav-menu.js.map +1 -1
  23. package/build/entity-types/page.js.map +1 -1
  24. package/build/entity-types/plugin.js.map +1 -1
  25. package/build/entity-types/post.js.map +1 -1
  26. package/build/entity-types/settings.js.map +1 -1
  27. package/build/entity-types/sidebar.js.map +1 -1
  28. package/build/entity-types/taxonomy.js.map +1 -1
  29. package/build/entity-types/theme.js.map +1 -1
  30. package/build/entity-types/type.js.map +1 -1
  31. package/build/entity-types/user.js.map +1 -1
  32. package/build/entity-types/widget-type.js.map +1 -1
  33. package/build/entity-types/widget.js.map +1 -1
  34. package/build/entity-types/wp-template-part.js.map +1 -1
  35. package/build/entity-types/wp-template.js.map +1 -1
  36. package/build/fetch/__experimental-fetch-link-suggestions.js +14 -20
  37. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  38. package/build/fetch/__experimental-fetch-url-data.js +4 -13
  39. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  40. package/build/fetch/index.js +0 -3
  41. package/build/fetch/index.js.map +1 -1
  42. package/build/hooks/constants.js +4 -5
  43. package/build/hooks/constants.js.map +1 -1
  44. package/build/hooks/index.js +0 -5
  45. package/build/hooks/index.js.map +1 -1
  46. package/build/hooks/memoize.js +0 -3
  47. package/build/hooks/memoize.js.map +1 -1
  48. package/build/hooks/use-entity-record.js +0 -9
  49. package/build/hooks/use-entity-record.js.map +1 -1
  50. package/build/hooks/use-entity-records.js +2 -9
  51. package/build/hooks/use-entity-records.js.map +1 -1
  52. package/build/hooks/use-query-select.js +1 -13
  53. package/build/hooks/use-query-select.js.map +1 -1
  54. package/build/hooks/use-resource-permissions.js +0 -15
  55. package/build/hooks/use-resource-permissions.js.map +1 -1
  56. package/build/index.js +9 -41
  57. package/build/index.js.map +1 -1
  58. package/build/locks/actions.js +1 -6
  59. package/build/locks/actions.js.map +1 -1
  60. package/build/locks/engine.js +1 -9
  61. package/build/locks/engine.js.map +1 -1
  62. package/build/locks/reducer.js +8 -9
  63. package/build/locks/reducer.js.map +1 -1
  64. package/build/locks/selectors.js +8 -11
  65. package/build/locks/selectors.js.map +1 -1
  66. package/build/locks/utils.js +4 -19
  67. package/build/locks/utils.js.map +1 -1
  68. package/build/name.js +0 -1
  69. package/build/name.js.map +1 -1
  70. package/build/private-apis.js +1 -2
  71. package/build/private-apis.js.map +1 -1
  72. package/build/private-selectors.js +2 -5
  73. package/build/private-selectors.js.map +1 -1
  74. package/build/queried-data/actions.js +4 -6
  75. package/build/queried-data/actions.js.map +1 -1
  76. package/build/queried-data/get-query-parts.js +11 -24
  77. package/build/queried-data/get-query-parts.js.map +1 -1
  78. package/build/queried-data/index.js +0 -6
  79. package/build/queried-data/index.js.map +1 -1
  80. package/build/queried-data/reducer.js +33 -51
  81. package/build/queried-data/reducer.js.map +1 -1
  82. package/build/queried-data/selectors.js +4 -25
  83. package/build/queried-data/selectors.js.map +1 -1
  84. package/build/reducer.js +76 -128
  85. package/build/reducer.js.map +1 -1
  86. package/build/resolvers.js +91 -133
  87. package/build/resolvers.js.map +1 -1
  88. package/build/selectors.js +51 -145
  89. package/build/selectors.js.map +1 -1
  90. package/build/sync.js +19 -0
  91. package/build/sync.js.map +1 -0
  92. package/build/types.js.map +1 -1
  93. package/build/utils/conservative-map-item.js +3 -10
  94. package/build/utils/conservative-map-item.js.map +1 -1
  95. package/build/utils/forward-resolver.js +0 -2
  96. package/build/utils/forward-resolver.js.map +1 -1
  97. package/build/utils/get-normalized-comma-separable.js +0 -3
  98. package/build/utils/get-normalized-comma-separable.js.map +1 -1
  99. package/build/utils/if-matching-action.js +0 -3
  100. package/build/utils/if-matching-action.js.map +1 -1
  101. package/build/utils/index.js +0 -10
  102. package/build/utils/index.js.map +1 -1
  103. package/build/utils/is-raw-attribute.js +0 -1
  104. package/build/utils/is-raw-attribute.js.map +1 -1
  105. package/build/utils/on-sub-key.js +5 -9
  106. package/build/utils/on-sub-key.js.map +1 -1
  107. package/build/utils/replace-action.js +0 -2
  108. package/build/utils/replace-action.js.map +1 -1
  109. package/build/utils/set-nested-value.js +0 -4
  110. package/build/utils/set-nested-value.js.map +1 -1
  111. package/build/utils/with-weak-map-cache.js +3 -6
  112. package/build/utils/with-weak-map-cache.js.map +1 -1
  113. package/build-module/actions.js +72 -95
  114. package/build-module/actions.js.map +1 -1
  115. package/build-module/batch/create-batch.js +1 -20
  116. package/build-module/batch/create-batch.js.map +1 -1
  117. package/build-module/batch/default-processor.js +4 -13
  118. package/build-module/batch/default-processor.js.map +1 -1
  119. package/build-module/batch/index.js.map +1 -1
  120. package/build-module/entities.js +109 -25
  121. package/build-module/entities.js.map +1 -1
  122. package/build-module/entity-provider.js +35 -45
  123. package/build-module/entity-provider.js.map +1 -1
  124. package/build-module/entity-types/attachment.js.map +1 -1
  125. package/build-module/entity-types/base-entity-records.js +0 -2
  126. package/build-module/entity-types/base-entity-records.js.map +1 -1
  127. package/build-module/entity-types/comment.js.map +1 -1
  128. package/build-module/entity-types/helpers.js.map +1 -1
  129. package/build-module/entity-types/index.js.map +1 -1
  130. package/build-module/entity-types/menu-location.js.map +1 -1
  131. package/build-module/entity-types/nav-menu-item.js.map +1 -1
  132. package/build-module/entity-types/nav-menu.js.map +1 -1
  133. package/build-module/entity-types/page.js.map +1 -1
  134. package/build-module/entity-types/plugin.js.map +1 -1
  135. package/build-module/entity-types/post.js.map +1 -1
  136. package/build-module/entity-types/settings.js.map +1 -1
  137. package/build-module/entity-types/sidebar.js.map +1 -1
  138. package/build-module/entity-types/taxonomy.js.map +1 -1
  139. package/build-module/entity-types/theme.js.map +1 -1
  140. package/build-module/entity-types/type.js.map +1 -1
  141. package/build-module/entity-types/user.js.map +1 -1
  142. package/build-module/entity-types/widget-type.js.map +1 -1
  143. package/build-module/entity-types/widget.js.map +1 -1
  144. package/build-module/entity-types/wp-template-part.js.map +1 -1
  145. package/build-module/entity-types/wp-template.js.map +1 -1
  146. package/build-module/fetch/__experimental-fetch-link-suggestions.js +15 -15
  147. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  148. package/build-module/fetch/__experimental-fetch-url-data.js +5 -10
  149. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  150. package/build-module/fetch/index.js.map +1 -1
  151. package/build-module/hooks/constants.js +3 -4
  152. package/build-module/hooks/constants.js.map +1 -1
  153. package/build-module/hooks/index.js.map +1 -1
  154. package/build-module/hooks/memoize.js +2 -1
  155. package/build-module/hooks/memoize.js.map +1 -1
  156. package/build-module/hooks/use-entity-record.js +1 -3
  157. package/build-module/hooks/use-entity-record.js.map +1 -1
  158. package/build-module/hooks/use-entity-records.js +2 -3
  159. package/build-module/hooks/use-entity-records.js.map +1 -1
  160. package/build-module/hooks/use-query-select.js +1 -9
  161. package/build-module/hooks/use-query-select.js.map +1 -1
  162. package/build-module/hooks/use-resource-permissions.js +1 -10
  163. package/build-module/hooks/use-resource-permissions.js.map +1 -1
  164. package/build-module/index.js +11 -19
  165. package/build-module/index.js.map +1 -1
  166. package/build-module/locks/actions.js +0 -3
  167. package/build-module/locks/actions.js.map +1 -1
  168. package/build-module/locks/engine.js +0 -5
  169. package/build-module/locks/engine.js.map +1 -1
  170. package/build-module/locks/reducer.js +7 -7
  171. package/build-module/locks/reducer.js.map +1 -1
  172. package/build-module/locks/selectors.js +7 -8
  173. package/build-module/locks/selectors.js.map +1 -1
  174. package/build-module/locks/utils.js +4 -14
  175. package/build-module/locks/utils.js.map +1 -1
  176. package/build-module/name.js.map +1 -1
  177. package/build-module/private-apis.js.map +1 -1
  178. package/build-module/private-selectors.js +2 -2
  179. package/build-module/private-selectors.js.map +1 -1
  180. package/build-module/queried-data/actions.js +4 -3
  181. package/build-module/queried-data/actions.js.map +1 -1
  182. package/build-module/queried-data/get-query-parts.js +13 -21
  183. package/build-module/queried-data/get-query-parts.js.map +1 -1
  184. package/build-module/queried-data/index.js.map +1 -1
  185. package/build-module/queried-data/reducer.js +33 -42
  186. package/build-module/queried-data/reducer.js.map +1 -1
  187. package/build-module/queried-data/selectors.js +6 -21
  188. package/build-module/queried-data/selectors.js.map +1 -1
  189. package/build-module/reducer.js +79 -104
  190. package/build-module/reducer.js.map +1 -1
  191. package/build-module/resolvers.js +94 -96
  192. package/build-module/resolvers.js.map +1 -1
  193. package/build-module/selectors.js +56 -92
  194. package/build-module/selectors.js.map +1 -1
  195. package/build-module/sync.js +12 -0
  196. package/build-module/sync.js.map +1 -0
  197. package/build-module/types.js.map +1 -1
  198. package/build-module/utils/conservative-map-item.js +4 -8
  199. package/build-module/utils/conservative-map-item.js.map +1 -1
  200. package/build-module/utils/forward-resolver.js +0 -1
  201. package/build-module/utils/forward-resolver.js.map +1 -1
  202. package/build-module/utils/get-normalized-comma-separable.js +0 -2
  203. package/build-module/utils/get-normalized-comma-separable.js.map +1 -1
  204. package/build-module/utils/if-matching-action.js +0 -2
  205. package/build-module/utils/if-matching-action.js.map +1 -1
  206. package/build-module/utils/index.js.map +1 -1
  207. package/build-module/utils/is-raw-attribute.js.map +1 -1
  208. package/build-module/utils/on-sub-key.js +5 -7
  209. package/build-module/utils/on-sub-key.js.map +1 -1
  210. package/build-module/utils/replace-action.js +0 -1
  211. package/build-module/utils/replace-action.js.map +1 -1
  212. package/build-module/utils/set-nested-value.js +0 -3
  213. package/build-module/utils/set-nested-value.js.map +1 -1
  214. package/build-module/utils/with-weak-map-cache.js +3 -5
  215. package/build-module/utils/with-weak-map-cache.js.map +1 -1
  216. package/build-types/actions.d.ts.map +1 -1
  217. package/build-types/entities.d.ts +53 -0
  218. package/build-types/entities.d.ts.map +1 -1
  219. package/build-types/entity-provider.d.ts +1 -1
  220. package/build-types/entity-provider.d.ts.map +1 -1
  221. package/build-types/hooks/memoize.d.ts +1 -1
  222. package/build-types/hooks/memoize.d.ts.map +1 -1
  223. package/build-types/index.d.ts +3 -3
  224. package/build-types/index.d.ts.map +1 -1
  225. package/build-types/resolvers.d.ts.map +1 -1
  226. package/build-types/sync.d.ts +2 -0
  227. package/build-types/sync.d.ts.map +1 -0
  228. package/package.json +17 -15
  229. package/src/actions.js +24 -14
  230. package/src/entities.js +91 -0
  231. package/src/entity-provider.js +11 -2
  232. package/src/resolvers.js +89 -41
  233. package/src/sync.js +18 -0
  234. package/src/test/entity-provider.js +272 -0
  235. package/tsconfig.json +1 -0
  236. package/tsconfig.tsbuildinfo +1 -1
package/build/entities.js CHANGED
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.rootEntitiesConfig = exports.prePersistPostType = exports.getOrLoadEntitiesConfig = exports.getMethodName = exports.additionalEntityConfigLoaders = exports.DEFAULT_ENTITY_KEY = void 0;
9
-
10
8
  var _changeCase = require("change-case");
11
-
12
9
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
13
-
14
10
  var _i18n = require("@wordpress/i18n");
15
-
16
11
  var _actions = require("./actions");
17
-
12
+ var _sync = require("./sync");
18
13
  /**
19
14
  * External dependencies
20
15
  */
@@ -26,6 +21,7 @@ var _actions = require("./actions");
26
21
  /**
27
22
  * Internal dependencies
28
23
  */
24
+
29
25
  const DEFAULT_ENTITY_KEY = 'id';
30
26
  exports.DEFAULT_ENTITY_KEY = DEFAULT_ENTITY_KEY;
31
27
  const POST_RAW_ATTRIBUTES = ['title', 'excerpt', 'content'];
@@ -36,7 +32,27 @@ const rootEntitiesConfig = [{
36
32
  baseURL: '/',
37
33
  baseURLParams: {
38
34
  _fields: ['description', 'gmt_offset', 'home', 'name', 'site_icon', 'site_icon_url', 'site_logo', 'timezone_string', 'url'].join(',')
39
- }
35
+ },
36
+ syncConfig: {
37
+ fetch: async () => {
38
+ return (0, _apiFetch.default)({
39
+ path: '/'
40
+ });
41
+ },
42
+ applyChangesToDoc: (doc, changes) => {
43
+ const document = doc.getMap('document');
44
+ Object.entries(changes).forEach(([key, value]) => {
45
+ if (document.get(key) !== value) {
46
+ document.set(key, value);
47
+ }
48
+ });
49
+ },
50
+ fromCRDTDoc: doc => {
51
+ return doc.getMap('document').toJSON();
52
+ }
53
+ },
54
+ syncObjectType: 'root/base',
55
+ getSyncObjectId: () => 'index'
40
56
  }, {
41
57
  label: (0, _i18n.__)('Site'),
42
58
  name: 'site',
@@ -44,9 +60,28 @@ const rootEntitiesConfig = [{
44
60
  baseURL: '/wp/v2/settings',
45
61
  getTitle: record => {
46
62
  var _record$title;
47
-
48
63
  return (_record$title = record?.title) !== null && _record$title !== void 0 ? _record$title : (0, _i18n.__)('Site Title');
49
- }
64
+ },
65
+ syncConfig: {
66
+ fetch: async () => {
67
+ return (0, _apiFetch.default)({
68
+ path: '/wp/v2/settings'
69
+ });
70
+ },
71
+ applyChangesToDoc: (doc, changes) => {
72
+ const document = doc.getMap('document');
73
+ Object.entries(changes).forEach(([key, value]) => {
74
+ if (document.get(key) !== value) {
75
+ document.set(key, value);
76
+ }
77
+ });
78
+ },
79
+ fromCRDTDoc: doc => {
80
+ return doc.getMap('document').toJSON();
81
+ }
82
+ },
83
+ syncObjectType: 'root/site',
84
+ getSyncObjectId: () => 'index'
50
85
  }, {
51
86
  label: (0, _i18n.__)('Post Type'),
52
87
  name: 'postType',
@@ -55,7 +90,27 @@ const rootEntitiesConfig = [{
55
90
  baseURL: '/wp/v2/types',
56
91
  baseURLParams: {
57
92
  context: 'edit'
58
- }
93
+ },
94
+ syncConfig: {
95
+ fetch: async id => {
96
+ return (0, _apiFetch.default)({
97
+ path: `/wp/v2/types/${id}?context=edit`
98
+ });
99
+ },
100
+ applyChangesToDoc: (doc, changes) => {
101
+ const document = doc.getMap('document');
102
+ Object.entries(changes).forEach(([key, value]) => {
103
+ if (document.get(key) !== value) {
104
+ document.set(key, value);
105
+ }
106
+ });
107
+ },
108
+ fromCRDTDoc: doc => {
109
+ return doc.getMap('document').toJSON();
110
+ }
111
+ },
112
+ syncObjectType: 'root/postType',
113
+ getSyncObjectId: id => id
59
114
  }, {
60
115
  name: 'media',
61
116
  kind: 'root',
@@ -194,6 +249,7 @@ const additionalEntityConfigLoaders = [{
194
249
  kind: 'taxonomy',
195
250
  loadEntities: loadTaxonomyEntities
196
251
  }];
252
+
197
253
  /**
198
254
  * Returns a function to be used to retrieve extra edits to apply before persisting a post type.
199
255
  *
@@ -201,42 +257,35 @@ const additionalEntityConfigLoaders = [{
201
257
  * @param {Object} edits Edits.
202
258
  * @return {Object} Updated edits.
203
259
  */
204
-
205
260
  exports.additionalEntityConfigLoaders = additionalEntityConfigLoaders;
206
-
207
261
  const prePersistPostType = (persistedRecord, edits) => {
208
262
  const newEdits = {};
209
-
210
263
  if (persistedRecord?.status === 'auto-draft') {
211
264
  // Saving an auto-draft should create a draft by default.
212
265
  if (!edits.status && !newEdits.status) {
213
266
  newEdits.status = 'draft';
214
- } // Fix the auto-draft default title.
215
-
267
+ }
216
268
 
269
+ // Fix the auto-draft default title.
217
270
  if ((!edits.title || edits.title === 'Auto Draft') && !newEdits.title && (!persistedRecord?.title || persistedRecord?.title === 'Auto Draft')) {
218
271
  newEdits.title = '';
219
272
  }
220
273
  }
221
-
222
274
  return newEdits;
223
275
  };
276
+
224
277
  /**
225
278
  * Returns the list of post type entities.
226
279
  *
227
280
  * @return {Promise} Entities promise
228
281
  */
229
-
230
-
231
282
  exports.prePersistPostType = prePersistPostType;
232
-
233
283
  async function loadPostTypeEntities() {
234
284
  const postTypes = await (0, _apiFetch.default)({
235
285
  path: '/wp/v2/types?context=view'
236
286
  });
237
287
  return Object.entries(postTypes !== null && postTypes !== void 0 ? postTypes : {}).map(([name, postType]) => {
238
288
  var _postType$rest_namesp;
239
-
240
289
  const isTemplate = ['wp_template', 'wp_template_part'].includes(name);
241
290
  const namespace = (_postType$rest_namesp = postType?.rest_namespace) !== null && _postType$rest_namesp !== void 0 ? _postType$rest_namesp : 'wp/v2';
242
291
  return {
@@ -257,28 +306,45 @@ async function loadPostTypeEntities() {
257
306
  rawAttributes: POST_RAW_ATTRIBUTES,
258
307
  getTitle: record => {
259
308
  var _record$slug;
260
-
261
309
  return record?.title?.rendered || record?.title || (isTemplate ? (0, _changeCase.capitalCase)((_record$slug = record.slug) !== null && _record$slug !== void 0 ? _record$slug : '') : String(record.id));
262
310
  },
263
311
  __unstablePrePersist: isTemplate ? undefined : prePersistPostType,
264
- __unstable_rest_base: postType.rest_base
312
+ __unstable_rest_base: postType.rest_base,
313
+ syncConfig: {
314
+ fetch: async id => {
315
+ return (0, _apiFetch.default)({
316
+ path: `/${namespace}/${postType.rest_base}/${id}?context=edit`
317
+ });
318
+ },
319
+ applyChangesToDoc: (doc, changes) => {
320
+ const document = doc.getMap('document');
321
+ Object.entries(changes).forEach(([key, value]) => {
322
+ if (document.get(key) !== value && typeof value !== 'function') {
323
+ document.set(key, value);
324
+ }
325
+ });
326
+ },
327
+ fromCRDTDoc: doc => {
328
+ return doc.getMap('document').toJSON();
329
+ }
330
+ },
331
+ syncObjectType: 'postType/' + postType.name,
332
+ getSyncObjectId: id => id
265
333
  };
266
334
  });
267
335
  }
336
+
268
337
  /**
269
338
  * Returns the list of the taxonomies entities.
270
339
  *
271
340
  * @return {Promise} Entities promise
272
341
  */
273
-
274
-
275
342
  async function loadTaxonomyEntities() {
276
343
  const taxonomies = await (0, _apiFetch.default)({
277
344
  path: '/wp/v2/taxonomies?context=view'
278
345
  });
279
346
  return Object.entries(taxonomies !== null && taxonomies !== void 0 ? taxonomies : {}).map(([name, taxonomy]) => {
280
347
  var _taxonomy$rest_namesp;
281
-
282
348
  const namespace = (_taxonomy$rest_namesp = taxonomy?.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
283
349
  return {
284
350
  kind: 'taxonomy',
@@ -291,6 +357,7 @@ async function loadTaxonomyEntities() {
291
357
  };
292
358
  });
293
359
  }
360
+
294
361
  /**
295
362
  * Returns the entity's getter method name given its kind and name.
296
363
  *
@@ -310,8 +377,6 @@ async function loadTaxonomyEntities() {
310
377
  *
311
378
  * @return {string} Method name
312
379
  */
313
-
314
-
315
380
  const getMethodName = (kind, name, prefix = 'get', usePlural = false) => {
316
381
  const entityConfig = rootEntitiesConfig.find(config => config.kind === kind && config.name === name);
317
382
  const kindPrefix = kind === 'root' ? '' : (0, _changeCase.pascalCase)(kind);
@@ -319,6 +384,21 @@ const getMethodName = (kind, name, prefix = 'get', usePlural = false) => {
319
384
  const suffix = usePlural && 'plural' in entityConfig && entityConfig?.plural ? (0, _changeCase.pascalCase)(entityConfig.plural) : nameSuffix;
320
385
  return `${prefix}${kindPrefix}${suffix}`;
321
386
  };
387
+ exports.getMethodName = getMethodName;
388
+ function registerSyncConfigs(configs) {
389
+ configs.forEach(({
390
+ syncObjectType,
391
+ syncConfig
392
+ }) => {
393
+ (0, _sync.getSyncProvider)().register(syncObjectType, syncConfig);
394
+ const editSyncConfig = {
395
+ ...syncConfig
396
+ };
397
+ delete editSyncConfig.fetch;
398
+ (0, _sync.getSyncProvider)().register(syncObjectType + '--edit', editSyncConfig);
399
+ });
400
+ }
401
+
322
402
  /**
323
403
  * Loads the kind entities into the store.
324
404
  *
@@ -326,30 +406,23 @@ const getMethodName = (kind, name, prefix = 'get', usePlural = false) => {
326
406
  *
327
407
  * @return {(thunkArgs: object) => Promise<Array>} Entities
328
408
  */
329
-
330
-
331
- exports.getMethodName = getMethodName;
332
-
333
409
  const getOrLoadEntitiesConfig = kind => async ({
334
410
  select,
335
411
  dispatch
336
412
  }) => {
337
413
  let configs = select.getEntitiesConfig(kind);
338
-
339
414
  if (configs && configs.length !== 0) {
415
+ registerSyncConfigs(configs);
340
416
  return configs;
341
417
  }
342
-
343
418
  const loader = additionalEntityConfigLoaders.find(l => l.kind === kind);
344
-
345
419
  if (!loader) {
346
420
  return [];
347
421
  }
348
-
349
422
  configs = await loader.loadEntities();
423
+ registerSyncConfigs(configs);
350
424
  dispatch((0, _actions.addEntities)(configs));
351
425
  return configs;
352
426
  };
353
-
354
427
  exports.getOrLoadEntitiesConfig = getOrLoadEntitiesConfig;
355
428
  //# sourceMappingURL=entities.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/entities.js"],"names":["DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","kind","name","baseURL","baseURLParams","_fields","join","getTitle","record","title","key","context","plural","rawAttributes","transientEdits","blocks","rendered","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","path","Object","entries","map","postType","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","slug","String","id","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","nameSuffix","suffix","getOrLoadEntitiesConfig","select","dispatch","configs","getEntitiesConfig","length","loader","l"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn record?.title ?? __( 'Site Title' );\n\t\t},\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different than name.\n\t\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'stylesheet',\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'plugin',\n\t},\n];\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} );\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = rootEntitiesConfig.find(\n\t\t( config ) => config.kind === kind && config.name === name\n\t);\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst nameSuffix = pascalCase( name ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig && entityConfig?.plural\n\t\t\t? pascalCase( entityConfig.plural )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig =\n\t( kind ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tlet configs = select.getEntitiesConfig( kind );\n\t\tif ( configs && configs.length !== 0 ) {\n\t\t\treturn configs;\n\t\t}\n\n\t\tconst loader = additionalEntityConfigLoaders.find(\n\t\t\t( l ) => l.kind === kind\n\t\t);\n\t\tif ( ! loader ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconfigs = await loader.loadEntities();\n\t\tdispatch( addEntities( configs ) );\n\n\t\treturn configs;\n\t};\n"]}
1
+ {"version":3,"names":["_changeCase","require","_apiFetch","_interopRequireDefault","_i18n","_actions","_sync","DEFAULT_ENTITY_KEY","exports","POST_RAW_ATTRIBUTES","rootEntitiesConfig","label","__","kind","name","baseURL","baseURLParams","_fields","join","syncConfig","fetch","apiFetch","path","applyChangesToDoc","doc","changes","document","getMap","Object","entries","forEach","key","value","get","set","fromCRDTDoc","toJSON","syncObjectType","getSyncObjectId","getTitle","record","_record$title","title","context","id","plural","rawAttributes","transientEdits","blocks","rendered","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","map","postType","_postType$rest_namesp","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","_record$slug","capitalCase","slug","String","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","_taxonomy$rest_namesp","getMethodName","prefix","usePlural","entityConfig","find","config","kindPrefix","pascalCase","nameSuffix","suffix","registerSyncConfigs","configs","getSyncProvider","register","editSyncConfig","getOrLoadEntitiesConfig","select","dispatch","getEntitiesConfig","length","loader","l","addEntities"],"sources":["@wordpress/core-data/src/entities.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { capitalCase, pascalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport { getSyncProvider } from './sync';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/base',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Site' ),\n\t\tname: 'site',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/settings',\n\t\tgetTitle: ( record ) => {\n\t\t\treturn record?.title ?? __( 'Site Title' );\n\t\t},\n\t\tsyncConfig: {\n\t\t\tfetch: async () => {\n\t\t\t\treturn apiFetch( { path: '/wp/v2/settings' } );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/site',\n\t\tgetSyncObjectId: () => 'index',\n\t},\n\t{\n\t\tlabel: __( 'Post Type' ),\n\t\tname: 'postType',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tsyncConfig: {\n\t\t\tfetch: async ( id ) => {\n\t\t\t\treturn apiFetch( {\n\t\t\t\t\tpath: `/wp/v2/types/${ id }?context=edit`,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\tif ( document.get( key ) !== value ) {\n\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t},\n\t\t},\n\t\tsyncObjectType: 'root/postType',\n\t\tgetSyncObjectId: ( id ) => id,\n\t},\n\t{\n\t\tname: 'media',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/media',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'mediaItems',\n\t\tlabel: __( 'Media' ),\n\t\trawAttributes: [ 'caption', 'title', 'description' ],\n\t},\n\t{\n\t\tname: 'taxonomy',\n\t\tkind: 'root',\n\t\tkey: 'slug',\n\t\tbaseURL: '/wp/v2/taxonomies',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'taxonomies',\n\t\tlabel: __( 'Taxonomy' ),\n\t},\n\t{\n\t\tname: 'sidebar',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/sidebars',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'sidebars',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widget areas' ),\n\t},\n\t{\n\t\tname: 'widget',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widgets',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgets',\n\t\ttransientEdits: { blocks: true },\n\t\tlabel: __( 'Widgets' ),\n\t},\n\t{\n\t\tname: 'widgetType',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/widget-types',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'widgetTypes',\n\t\tlabel: __( 'Widget types' ),\n\t},\n\t{\n\t\tlabel: __( 'User' ),\n\t\tname: 'user',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/users',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'users',\n\t},\n\t{\n\t\tname: 'comment',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/comments',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'comments',\n\t\tlabel: __( 'Comment' ),\n\t},\n\t{\n\t\tname: 'menu',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menus',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menus',\n\t\tlabel: __( 'Menu' ),\n\t},\n\t{\n\t\tname: 'menuItem',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-items',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuItems',\n\t\tlabel: __( 'Menu Item' ),\n\t\trawAttributes: [ 'title' ],\n\t},\n\t{\n\t\tname: 'menuLocation',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/menu-locations',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'menuLocations',\n\t\tlabel: __( 'Menu Location' ),\n\t\tkey: 'name',\n\t},\n\t{\n\t\tlabel: __( 'Global Styles' ),\n\t\tname: 'globalStyles',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/global-styles',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tplural: 'globalStylesVariations', // Should be different than name.\n\t\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n\t},\n\t{\n\t\tlabel: __( 'Themes' ),\n\t\tname: 'theme',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/themes',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'stylesheet',\n\t},\n\t{\n\t\tlabel: __( 'Plugins' ),\n\t\tname: 'plugin',\n\t\tkind: 'root',\n\t\tbaseURL: '/wp/v2/plugins',\n\t\tbaseURLParams: { context: 'edit' },\n\t\tkey: 'plugin',\n\t},\n];\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {};\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} );\n\treturn Object.entries( postTypes ?? {} ).map( ( [ name, postType ] ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate\n\t\t\t\t\t? capitalCase( record.slug ?? '' )\n\t\t\t\t\t: String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t\tsyncConfig: {\n\t\t\t\tfetch: async ( id ) => {\n\t\t\t\t\treturn apiFetch( {\n\t\t\t\t\t\tpath: `/${ namespace }/${ postType.rest_base }/${ id }?context=edit`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tapplyChangesToDoc: ( doc, changes ) => {\n\t\t\t\t\tconst document = doc.getMap( 'document' );\n\t\t\t\t\tObject.entries( changes ).forEach( ( [ key, value ] ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdocument.get( key ) !== value &&\n\t\t\t\t\t\t\ttypeof value !== 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdocument.set( key, value );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t\tfromCRDTDoc: ( doc ) => {\n\t\t\t\t\treturn doc.getMap( 'document' ).toJSON();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsyncObjectType: 'postType/' + postType.name,\n\t\t\tgetSyncObjectId: ( id ) => id,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} );\n\treturn Object.entries( taxonomies ?? {} ).map( ( [ name, taxonomy ] ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = rootEntitiesConfig.find(\n\t\t( config ) => config.kind === kind && config.name === name\n\t);\n\tconst kindPrefix = kind === 'root' ? '' : pascalCase( kind );\n\tconst nameSuffix = pascalCase( name ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig && entityConfig?.plural\n\t\t\t? pascalCase( entityConfig.plural )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\nfunction registerSyncConfigs( configs ) {\n\tconfigs.forEach( ( { syncObjectType, syncConfig } ) => {\n\t\tgetSyncProvider().register( syncObjectType, syncConfig );\n\t\tconst editSyncConfig = { ...syncConfig };\n\t\tdelete editSyncConfig.fetch;\n\t\tgetSyncProvider().register( syncObjectType + '--edit', editSyncConfig );\n\t} );\n}\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig =\n\t( kind ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tlet configs = select.getEntitiesConfig( kind );\n\t\tif ( configs && configs.length !== 0 ) {\n\t\t\tregisterSyncConfigs( configs );\n\t\t\treturn configs;\n\t\t}\n\n\t\tconst loader = additionalEntityConfigLoaders.find(\n\t\t\t( l ) => l.kind === kind\n\t\t);\n\t\tif ( ! loader ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconfigs = await loader.loadEntities();\n\t\tregisterSyncConfigs( configs );\n\t\tdispatch( addEntities( configs ) );\n\n\t\treturn configs;\n\t};\n"],"mappings":"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"}
@@ -7,21 +7,13 @@ exports.default = EntityProvider;
7
7
  exports.useEntityBlockEditor = useEntityBlockEditor;
8
8
  exports.useEntityId = useEntityId;
9
9
  exports.useEntityProp = useEntityProp;
10
-
11
10
  var _element = require("@wordpress/element");
12
-
13
11
  var _data = require("@wordpress/data");
14
-
15
12
  var _blocks2 = require("@wordpress/blocks");
16
-
17
13
  var _blockEditor = require("@wordpress/block-editor");
18
-
19
14
  var _name = require("./name");
20
-
21
15
  var _privateApis = require("./private-apis");
22
-
23
16
  var _entities = require("./entities");
24
-
25
17
  /**
26
18
  * WordPress dependencies
27
19
  */
@@ -31,17 +23,19 @@ var _entities = require("./entities");
31
23
  */
32
24
 
33
25
  /** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */
26
+
34
27
  const EMPTY_ARRAY = [];
35
28
  let oldFootnotes = {};
29
+
36
30
  /**
37
31
  * Internal dependencies
38
32
  */
39
33
 
40
- const entityContexts = { ..._entities.rootEntitiesConfig.reduce((acc, loader) => {
34
+ const entityContexts = {
35
+ ..._entities.rootEntitiesConfig.reduce((acc, loader) => {
41
36
  if (!acc[loader.kind]) {
42
37
  acc[loader.kind] = {};
43
38
  }
44
-
45
39
  acc[loader.kind][loader.name] = {
46
40
  context: (0, _element.createContext)(undefined)
47
41
  };
@@ -52,20 +46,18 @@ const entityContexts = { ..._entities.rootEntitiesConfig.reduce((acc, loader) =>
52
46
  return acc;
53
47
  }, {})
54
48
  };
55
-
56
49
  const getEntityContext = (kind, name) => {
57
50
  if (!entityContexts[kind]) {
58
51
  throw new Error(`Missing entity config for kind: ${kind}.`);
59
52
  }
60
-
61
53
  if (!entityContexts[kind][name]) {
62
54
  entityContexts[kind][name] = {
63
55
  context: (0, _element.createContext)(undefined)
64
56
  };
65
57
  }
66
-
67
58
  return entityContexts[kind][name].context;
68
59
  };
60
+
69
61
  /**
70
62
  * Context provider component for providing
71
63
  * an entity for a specific entity.
@@ -79,8 +71,6 @@ const getEntityContext = (kind, name) => {
79
71
  * @return {Object} The provided children, wrapped with
80
72
  * the entity's context provider.
81
73
  */
82
-
83
-
84
74
  function EntityProvider({
85
75
  kind,
86
76
  type: name,
@@ -92,6 +82,7 @@ function EntityProvider({
92
82
  value: id
93
83
  }, children);
94
84
  }
85
+
95
86
  /**
96
87
  * Hook that returns the ID for the nearest
97
88
  * provided entity of the specified type.
@@ -99,11 +90,10 @@ function EntityProvider({
99
90
  * @param {string} kind The entity kind.
100
91
  * @param {string} name The entity name.
101
92
  */
102
-
103
-
104
93
  function useEntityId(kind, name) {
105
94
  return (0, _element.useContext)(getEntityContext(kind, name));
106
95
  }
96
+
107
97
  /**
108
98
  * Hook that returns the value and a setter for the
109
99
  * specified property of the nearest provided
@@ -121,8 +111,6 @@ function useEntityId(kind, name) {
121
111
  * information like `raw`, `rendered` and
122
112
  * `protected` props.
123
113
  */
124
-
125
-
126
114
  function useEntityProp(kind, name, prop, _id) {
127
115
  const providerId = useEntityId(kind, name);
128
116
  const id = _id !== null && _id !== void 0 ? _id : providerId;
@@ -135,7 +123,6 @@ function useEntityProp(kind, name, prop, _id) {
135
123
  getEditedEntityRecord
136
124
  } = select(_name.STORE_NAME);
137
125
  const record = getEntityRecord(kind, name, id); // Trigger resolver.
138
-
139
126
  const editedRecord = getEditedEntityRecord(kind, name, id);
140
127
  return record && editedRecord ? {
141
128
  value: editedRecord[prop],
@@ -152,6 +139,7 @@ function useEntityProp(kind, name, prop, _id) {
152
139
  }, [editEntityRecord, kind, name, id, prop]);
153
140
  return [value, setValue, fullValue];
154
141
  }
142
+
155
143
  /**
156
144
  * Hook that returns block content getters and setters for
157
145
  * the nearest provided entity of the specified type.
@@ -159,7 +147,7 @@ function useEntityProp(kind, name, prop, _id) {
159
147
  * The return value has the shape `[ blocks, onInput, onChange ]`.
160
148
  * `onInput` is for block changes that don't create undo levels
161
149
  * or dirty the post, non-persistent changes, and `onChange` is for
162
- * peristent changes. They map directly to the props of a
150
+ * persistent changes. They map directly to the props of a
163
151
  * `BlockEditorProvider` and are intended to be used with it,
164
152
  * or similar components or hooks.
165
153
  *
@@ -170,8 +158,6 @@ function useEntityProp(kind, name, prop, _id) {
170
158
  *
171
159
  * @return {[WPBlock[], Function, Function]} The block array and setters.
172
160
  */
173
-
174
-
175
161
  function useEntityBlockEditor(kind, name, {
176
162
  id: _id
177
163
  } = {}) {
@@ -200,35 +186,31 @@ function useEntityBlockEditor(kind, name, {
200
186
  if (editedBlocks) {
201
187
  return editedBlocks;
202
188
  }
203
-
204
189
  return content && typeof content !== 'function' ? (0, _blocks2.parse)(content) : EMPTY_ARRAY;
205
190
  }, [editedBlocks, content]);
206
191
  const updateFootnotes = (0, _element.useCallback)(_blocks => {
207
192
  const output = {
208
193
  blocks: _blocks
209
194
  };
210
- if (!meta) return output; // If meta.footnotes is empty, it means the meta is not registered.
211
-
195
+ if (!meta) return output;
196
+ // If meta.footnotes is empty, it means the meta is not registered.
212
197
  if (meta.footnotes === undefined) return output;
213
198
  const {
214
199
  getRichTextValues
215
200
  } = (0, _privateApis.unlock)(_blockEditor.privateApis);
216
-
217
201
  const _content = getRichTextValues(_blocks).join('') || '';
202
+ const newOrder = [];
218
203
 
219
- const newOrder = []; // This can be avoided when
204
+ // This can be avoided when
220
205
  // https://github.com/WordPress/gutenberg/pull/43204 lands. We can then
221
206
  // get the order directly from the rich text values.
222
-
223
207
  if (_content.indexOf('data-fn') !== -1) {
224
208
  const regex = /data-fn="([^"]+)"/g;
225
209
  let match;
226
-
227
210
  while ((match = regex.exec(_content)) !== null) {
228
211
  newOrder.push(match[1]);
229
212
  }
230
213
  }
231
-
232
214
  const footnotes = meta.footnotes ? JSON.parse(meta.footnotes) : [];
233
215
  const currentOrder = footnotes.map(fn => fn.id);
234
216
  if (currentOrder.join('') === newOrder.join('')) return output;
@@ -236,29 +218,29 @@ function useEntityBlockEditor(kind, name, {
236
218
  id: fnId,
237
219
  content: ''
238
220
  });
239
-
240
221
  function updateAttributes(attributes) {
241
- attributes = { ...attributes
222
+ // Only attempt to update attributes, if attributes is an object.
223
+ if (!attributes || Array.isArray(attributes) || typeof attributes !== 'object') {
224
+ return attributes;
225
+ }
226
+ attributes = {
227
+ ...attributes
242
228
  };
243
-
244
229
  for (const key in attributes) {
245
230
  const value = attributes[key];
246
-
247
231
  if (Array.isArray(value)) {
248
232
  attributes[key] = value.map(updateAttributes);
249
233
  continue;
250
234
  }
251
-
252
235
  if (typeof value !== 'string') {
253
236
  continue;
254
237
  }
255
-
256
238
  if (value.indexOf('data-fn') === -1) {
257
239
  continue;
258
- } // When we store rich text values, this would no longer
259
- // require a regex.
260
-
240
+ }
261
241
 
242
+ // When we store rich text values, this would no longer
243
+ // require a regex.
262
244
  const regex = /(<sup[^>]+data-fn="([^"]+)"[^>]*><a[^>]*>)[\d*]*<\/a><\/sup>/g;
263
245
  attributes[key] = value.replace(regex, (match, opening, fnId) => {
264
246
  const index = newOrder.indexOf(fnId);
@@ -270,33 +252,33 @@ function useEntityBlockEditor(kind, name, {
270
252
  return `<sup data-fn="${fnId}" class="fn"><a href="#${fnId}" id="${fnId}-link">${index + 1}</a></sup>`;
271
253
  });
272
254
  }
273
-
274
255
  return attributes;
275
256
  }
276
-
277
257
  function updateBlocksAttributes(__blocks) {
278
258
  return __blocks.map(block => {
279
- return { ...block,
259
+ return {
260
+ ...block,
280
261
  attributes: updateAttributes(block.attributes),
281
262
  innerBlocks: updateBlocksAttributes(block.innerBlocks)
282
263
  };
283
264
  });
284
- } // We need to go through all block attributs deeply and update the
285
- // footnote anchor numbering (textContent) to match the new order.
286
-
265
+ }
287
266
 
267
+ // We need to go through all block attributes deeply and update the
268
+ // footnote anchor numbering (textContent) to match the new order.
288
269
  const newBlocks = updateBlocksAttributes(_blocks);
289
- oldFootnotes = { ...oldFootnotes,
270
+ oldFootnotes = {
271
+ ...oldFootnotes,
290
272
  ...footnotes.reduce((acc, fn) => {
291
273
  if (!newOrder.includes(fn.id)) {
292
274
  acc[fn.id] = fn;
293
275
  }
294
-
295
276
  return acc;
296
277
  }, {})
297
278
  };
298
279
  return {
299
- meta: { ...meta,
280
+ meta: {
281
+ ...meta,
300
282
  footnotes: JSON.stringify(newFootnotes)
301
283
  },
302
284
  blocks: newBlocks
@@ -304,17 +286,16 @@ function useEntityBlockEditor(kind, name, {
304
286
  }, [meta]);
305
287
  const onChange = (0, _element.useCallback)((newBlocks, options) => {
306
288
  const noChange = blocks === newBlocks;
307
-
308
289
  if (noChange) {
309
290
  return __unstableCreateUndoLevel(kind, name, id);
310
291
  }
311
-
312
292
  const {
313
293
  selection
314
- } = options; // We create a new function here on every persistent edit
294
+ } = options;
295
+
296
+ // We create a new function here on every persistent edit
315
297
  // to make sure the edit makes the post dirty and creates
316
298
  // a new undo level.
317
-
318
299
  const edits = {
319
300
  selection,
320
301
  content: ({