@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.
- package/CHANGELOG.md +2 -0
- package/build/actions.js +69 -134
- package/build/actions.js.map +1 -1
- package/build/batch/create-batch.js +0 -22
- package/build/batch/create-batch.js.map +1 -1
- package/build/batch/default-processor.js +3 -15
- package/build/batch/default-processor.js.map +1 -1
- package/build/batch/index.js +0 -3
- package/build/batch/index.js.map +1 -1
- package/build/entities.js +109 -36
- package/build/entities.js.map +1 -1
- package/build/entity-provider.js +34 -53
- package/build/entity-provider.js.map +1 -1
- package/build/entity-types/attachment.js.map +1 -1
- package/build/entity-types/base-entity-records.js +0 -3
- package/build/entity-types/base-entity-records.js.map +1 -1
- package/build/entity-types/comment.js.map +1 -1
- package/build/entity-types/helpers.js.map +1 -1
- package/build/entity-types/index.js.map +1 -1
- package/build/entity-types/menu-location.js.map +1 -1
- package/build/entity-types/nav-menu-item.js.map +1 -1
- package/build/entity-types/nav-menu.js.map +1 -1
- package/build/entity-types/page.js.map +1 -1
- package/build/entity-types/plugin.js.map +1 -1
- package/build/entity-types/post.js.map +1 -1
- package/build/entity-types/settings.js.map +1 -1
- package/build/entity-types/sidebar.js.map +1 -1
- package/build/entity-types/taxonomy.js.map +1 -1
- package/build/entity-types/theme.js.map +1 -1
- package/build/entity-types/type.js.map +1 -1
- package/build/entity-types/user.js.map +1 -1
- package/build/entity-types/widget-type.js.map +1 -1
- package/build/entity-types/widget.js.map +1 -1
- package/build/entity-types/wp-template-part.js.map +1 -1
- package/build/entity-types/wp-template.js.map +1 -1
- package/build/fetch/__experimental-fetch-link-suggestions.js +14 -20
- package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build/fetch/__experimental-fetch-url-data.js +4 -13
- package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build/fetch/index.js +0 -3
- package/build/fetch/index.js.map +1 -1
- package/build/hooks/constants.js +4 -5
- package/build/hooks/constants.js.map +1 -1
- package/build/hooks/index.js +0 -5
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/memoize.js +0 -3
- package/build/hooks/memoize.js.map +1 -1
- package/build/hooks/use-entity-record.js +0 -9
- package/build/hooks/use-entity-record.js.map +1 -1
- package/build/hooks/use-entity-records.js +2 -9
- package/build/hooks/use-entity-records.js.map +1 -1
- package/build/hooks/use-query-select.js +1 -13
- package/build/hooks/use-query-select.js.map +1 -1
- package/build/hooks/use-resource-permissions.js +0 -15
- package/build/hooks/use-resource-permissions.js.map +1 -1
- package/build/index.js +9 -41
- package/build/index.js.map +1 -1
- package/build/locks/actions.js +1 -6
- package/build/locks/actions.js.map +1 -1
- package/build/locks/engine.js +1 -9
- package/build/locks/engine.js.map +1 -1
- package/build/locks/reducer.js +8 -9
- package/build/locks/reducer.js.map +1 -1
- package/build/locks/selectors.js +8 -11
- package/build/locks/selectors.js.map +1 -1
- package/build/locks/utils.js +4 -19
- package/build/locks/utils.js.map +1 -1
- package/build/name.js +0 -1
- package/build/name.js.map +1 -1
- package/build/private-apis.js +1 -2
- package/build/private-apis.js.map +1 -1
- package/build/private-selectors.js +2 -5
- package/build/private-selectors.js.map +1 -1
- package/build/queried-data/actions.js +4 -6
- package/build/queried-data/actions.js.map +1 -1
- package/build/queried-data/get-query-parts.js +11 -24
- package/build/queried-data/get-query-parts.js.map +1 -1
- package/build/queried-data/index.js +0 -6
- package/build/queried-data/index.js.map +1 -1
- package/build/queried-data/reducer.js +33 -51
- package/build/queried-data/reducer.js.map +1 -1
- package/build/queried-data/selectors.js +4 -25
- package/build/queried-data/selectors.js.map +1 -1
- package/build/reducer.js +76 -128
- package/build/reducer.js.map +1 -1
- package/build/resolvers.js +91 -133
- package/build/resolvers.js.map +1 -1
- package/build/selectors.js +51 -145
- package/build/selectors.js.map +1 -1
- package/build/sync.js +19 -0
- package/build/sync.js.map +1 -0
- package/build/types.js.map +1 -1
- package/build/utils/conservative-map-item.js +3 -10
- package/build/utils/conservative-map-item.js.map +1 -1
- package/build/utils/forward-resolver.js +0 -2
- package/build/utils/forward-resolver.js.map +1 -1
- package/build/utils/get-normalized-comma-separable.js +0 -3
- package/build/utils/get-normalized-comma-separable.js.map +1 -1
- package/build/utils/if-matching-action.js +0 -3
- package/build/utils/if-matching-action.js.map +1 -1
- package/build/utils/index.js +0 -10
- package/build/utils/index.js.map +1 -1
- package/build/utils/is-raw-attribute.js +0 -1
- package/build/utils/is-raw-attribute.js.map +1 -1
- package/build/utils/on-sub-key.js +5 -9
- package/build/utils/on-sub-key.js.map +1 -1
- package/build/utils/replace-action.js +0 -2
- package/build/utils/replace-action.js.map +1 -1
- package/build/utils/set-nested-value.js +0 -4
- package/build/utils/set-nested-value.js.map +1 -1
- package/build/utils/with-weak-map-cache.js +3 -6
- package/build/utils/with-weak-map-cache.js.map +1 -1
- package/build-module/actions.js +72 -95
- package/build-module/actions.js.map +1 -1
- package/build-module/batch/create-batch.js +1 -20
- package/build-module/batch/create-batch.js.map +1 -1
- package/build-module/batch/default-processor.js +4 -13
- package/build-module/batch/default-processor.js.map +1 -1
- package/build-module/batch/index.js.map +1 -1
- package/build-module/entities.js +109 -25
- package/build-module/entities.js.map +1 -1
- package/build-module/entity-provider.js +35 -45
- package/build-module/entity-provider.js.map +1 -1
- package/build-module/entity-types/attachment.js.map +1 -1
- package/build-module/entity-types/base-entity-records.js +0 -2
- package/build-module/entity-types/base-entity-records.js.map +1 -1
- package/build-module/entity-types/comment.js.map +1 -1
- package/build-module/entity-types/helpers.js.map +1 -1
- package/build-module/entity-types/index.js.map +1 -1
- package/build-module/entity-types/menu-location.js.map +1 -1
- package/build-module/entity-types/nav-menu-item.js.map +1 -1
- package/build-module/entity-types/nav-menu.js.map +1 -1
- package/build-module/entity-types/page.js.map +1 -1
- package/build-module/entity-types/plugin.js.map +1 -1
- package/build-module/entity-types/post.js.map +1 -1
- package/build-module/entity-types/settings.js.map +1 -1
- package/build-module/entity-types/sidebar.js.map +1 -1
- package/build-module/entity-types/taxonomy.js.map +1 -1
- package/build-module/entity-types/theme.js.map +1 -1
- package/build-module/entity-types/type.js.map +1 -1
- package/build-module/entity-types/user.js.map +1 -1
- package/build-module/entity-types/widget-type.js.map +1 -1
- package/build-module/entity-types/widget.js.map +1 -1
- package/build-module/entity-types/wp-template-part.js.map +1 -1
- package/build-module/entity-types/wp-template.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-link-suggestions.js +15 -15
- package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-url-data.js +5 -10
- package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build-module/fetch/index.js.map +1 -1
- package/build-module/hooks/constants.js +3 -4
- package/build-module/hooks/constants.js.map +1 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/memoize.js +2 -1
- package/build-module/hooks/memoize.js.map +1 -1
- package/build-module/hooks/use-entity-record.js +1 -3
- package/build-module/hooks/use-entity-record.js.map +1 -1
- package/build-module/hooks/use-entity-records.js +2 -3
- package/build-module/hooks/use-entity-records.js.map +1 -1
- package/build-module/hooks/use-query-select.js +1 -9
- package/build-module/hooks/use-query-select.js.map +1 -1
- package/build-module/hooks/use-resource-permissions.js +1 -10
- package/build-module/hooks/use-resource-permissions.js.map +1 -1
- package/build-module/index.js +11 -19
- package/build-module/index.js.map +1 -1
- package/build-module/locks/actions.js +0 -3
- package/build-module/locks/actions.js.map +1 -1
- package/build-module/locks/engine.js +0 -5
- package/build-module/locks/engine.js.map +1 -1
- package/build-module/locks/reducer.js +7 -7
- package/build-module/locks/reducer.js.map +1 -1
- package/build-module/locks/selectors.js +7 -8
- package/build-module/locks/selectors.js.map +1 -1
- package/build-module/locks/utils.js +4 -14
- package/build-module/locks/utils.js.map +1 -1
- package/build-module/name.js.map +1 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-selectors.js +2 -2
- package/build-module/private-selectors.js.map +1 -1
- package/build-module/queried-data/actions.js +4 -3
- package/build-module/queried-data/actions.js.map +1 -1
- package/build-module/queried-data/get-query-parts.js +13 -21
- package/build-module/queried-data/get-query-parts.js.map +1 -1
- package/build-module/queried-data/index.js.map +1 -1
- package/build-module/queried-data/reducer.js +33 -42
- package/build-module/queried-data/reducer.js.map +1 -1
- package/build-module/queried-data/selectors.js +6 -21
- package/build-module/queried-data/selectors.js.map +1 -1
- package/build-module/reducer.js +79 -104
- package/build-module/reducer.js.map +1 -1
- package/build-module/resolvers.js +94 -96
- package/build-module/resolvers.js.map +1 -1
- package/build-module/selectors.js +56 -92
- package/build-module/selectors.js.map +1 -1
- package/build-module/sync.js +12 -0
- package/build-module/sync.js.map +1 -0
- package/build-module/types.js.map +1 -1
- package/build-module/utils/conservative-map-item.js +4 -8
- package/build-module/utils/conservative-map-item.js.map +1 -1
- package/build-module/utils/forward-resolver.js +0 -1
- package/build-module/utils/forward-resolver.js.map +1 -1
- package/build-module/utils/get-normalized-comma-separable.js +0 -2
- package/build-module/utils/get-normalized-comma-separable.js.map +1 -1
- package/build-module/utils/if-matching-action.js +0 -2
- package/build-module/utils/if-matching-action.js.map +1 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/is-raw-attribute.js.map +1 -1
- package/build-module/utils/on-sub-key.js +5 -7
- package/build-module/utils/on-sub-key.js.map +1 -1
- package/build-module/utils/replace-action.js +0 -1
- package/build-module/utils/replace-action.js.map +1 -1
- package/build-module/utils/set-nested-value.js +0 -3
- package/build-module/utils/set-nested-value.js.map +1 -1
- package/build-module/utils/with-weak-map-cache.js +3 -5
- package/build-module/utils/with-weak-map-cache.js.map +1 -1
- package/build-types/actions.d.ts.map +1 -1
- package/build-types/entities.d.ts +53 -0
- package/build-types/entities.d.ts.map +1 -1
- package/build-types/entity-provider.d.ts +1 -1
- package/build-types/entity-provider.d.ts.map +1 -1
- package/build-types/hooks/memoize.d.ts +1 -1
- package/build-types/hooks/memoize.d.ts.map +1 -1
- package/build-types/index.d.ts +3 -3
- package/build-types/index.d.ts.map +1 -1
- package/build-types/resolvers.d.ts.map +1 -1
- package/build-types/sync.d.ts +2 -0
- package/build-types/sync.d.ts.map +1 -0
- package/package.json +17 -15
- package/src/actions.js +24 -14
- package/src/entities.js +91 -0
- package/src/entity-provider.js +11 -2
- package/src/resolvers.js +89 -41
- package/src/sync.js +18 -0
- package/src/test/entity-provider.js +272 -0
- package/tsconfig.json +1 -0
- 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
|
-
}
|
|
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
|
package/build/entities.js.map
CHANGED
|
@@ -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":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAKA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAIO,MAAMM,kBAAkB,GAAG,IAAI;AAACC,OAAA,CAAAD,kBAAA,GAAAA,kBAAA;AAEvC,MAAME,mBAAmB,GAAG,CAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAE;AAEtD,MAAMC,kBAAkB,GAAG,CACjC;EACCC,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,gBAAgB;EACtBC,OAAO,EAAE,GAAG;EACZC,aAAa,EAAE;IACdC,OAAO,EAAE,CACR,aAAa,EACb,YAAY,EACZ,MAAM,EACN,MAAM,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,KAAK,CACL,CAACC,IAAI,CAAE,GAAI;EACb,CAAC;EACDC,UAAU,EAAE;IACXC,KAAK,EAAE,MAAAA,CAAA,KAAY;MAClB,OAAO,IAAAC,iBAAQ,EAAE;QAAEC,IAAI,EAAE;MAAI,CAAE,CAAC;IACjC,CAAC;IACDC,iBAAiB,EAAEA,CAAEC,GAAG,EAAEC,OAAO,KAAM;MACtC,MAAMC,QAAQ,GAAGF,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC;MACzCC,MAAM,CAACC,OAAO,CAAEJ,OAAQ,CAAC,CAACK,OAAO,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM;QACxD,IAAKN,QAAQ,CAACO,GAAG,CAAEF,GAAI,CAAC,KAAKC,KAAK,EAAG;UACpCN,QAAQ,CAACQ,GAAG,CAAEH,GAAG,EAAEC,KAAM,CAAC;QAC3B;MACD,CAAE,CAAC;IACJ,CAAC;IACDG,WAAW,EAAIX,GAAG,IAAM;MACvB,OAAOA,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC,CAACS,MAAM,CAAC,CAAC;IACzC;EACD,CAAC;EACDC,cAAc,EAAE,WAAW;EAC3BC,eAAe,EAAEA,CAAA,KAAM;AACxB,CAAC,EACD;EACC3B,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBE,IAAI,EAAE,MAAM;EACZD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,iBAAiB;EAC1BwB,QAAQ,EAAIC,MAAM,IAAM;IAAA,IAAAC,aAAA;IACvB,QAAAA,aAAA,GAAOD,MAAM,EAAEE,KAAK,cAAAD,aAAA,cAAAA,aAAA,GAAI,IAAA7B,QAAE,EAAE,YAAa,CAAC;EAC3C,CAAC;EACDO,UAAU,EAAE;IACXC,KAAK,EAAE,MAAAA,CAAA,KAAY;MAClB,OAAO,IAAAC,iBAAQ,EAAE;QAAEC,IAAI,EAAE;MAAkB,CAAE,CAAC;IAC/C,CAAC;IACDC,iBAAiB,EAAEA,CAAEC,GAAG,EAAEC,OAAO,KAAM;MACtC,MAAMC,QAAQ,GAAGF,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC;MACzCC,MAAM,CAACC,OAAO,CAAEJ,OAAQ,CAAC,CAACK,OAAO,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM;QACxD,IAAKN,QAAQ,CAACO,GAAG,CAAEF,GAAI,CAAC,KAAKC,KAAK,EAAG;UACpCN,QAAQ,CAACQ,GAAG,CAAEH,GAAG,EAAEC,KAAM,CAAC;QAC3B;MACD,CAAE,CAAC;IACJ,CAAC;IACDG,WAAW,EAAIX,GAAG,IAAM;MACvB,OAAOA,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC,CAACS,MAAM,CAAC,CAAC;IACzC;EACD,CAAC;EACDC,cAAc,EAAE,WAAW;EAC3BC,eAAe,EAAEA,CAAA,KAAM;AACxB,CAAC,EACD;EACC3B,KAAK,EAAE,IAAAC,QAAE,EAAE,WAAY,CAAC;EACxBE,IAAI,EAAE,UAAU;EAChBD,IAAI,EAAE,MAAM;EACZkB,GAAG,EAAE,MAAM;EACXhB,OAAO,EAAE,cAAc;EACvBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCxB,UAAU,EAAE;IACXC,KAAK,EAAE,MAAQwB,EAAE,IAAM;MACtB,OAAO,IAAAvB,iBAAQ,EAAE;QAChBC,IAAI,EAAG,gBAAgBsB,EAAI;MAC5B,CAAE,CAAC;IACJ,CAAC;IACDrB,iBAAiB,EAAEA,CAAEC,GAAG,EAAEC,OAAO,KAAM;MACtC,MAAMC,QAAQ,GAAGF,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC;MACzCC,MAAM,CAACC,OAAO,CAAEJ,OAAQ,CAAC,CAACK,OAAO,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM;QACxD,IAAKN,QAAQ,CAACO,GAAG,CAAEF,GAAI,CAAC,KAAKC,KAAK,EAAG;UACpCN,QAAQ,CAACQ,GAAG,CAAEH,GAAG,EAAEC,KAAM,CAAC;QAC3B;MACD,CAAE,CAAC;IACJ,CAAC;IACDG,WAAW,EAAIX,GAAG,IAAM;MACvB,OAAOA,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC,CAACS,MAAM,CAAC,CAAC;IACzC;EACD,CAAC;EACDC,cAAc,EAAE,eAAe;EAC/BC,eAAe,EAAIM,EAAE,IAAMA;AAC5B,CAAC,EACD;EACC9B,IAAI,EAAE,OAAO;EACbD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,cAAc;EACvBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,YAAY;EACpBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,OAAQ,CAAC;EACpBkC,aAAa,EAAE,CAAE,SAAS,EAAE,OAAO,EAAE,aAAa;AACnD,CAAC,EACD;EACChC,IAAI,EAAE,UAAU;EAChBD,IAAI,EAAE,MAAM;EACZkB,GAAG,EAAE,MAAM;EACXhB,OAAO,EAAE,mBAAmB;EAC5BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,YAAY;EACpBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,UAAW;AACvB,CAAC,EACD;EACCE,IAAI,EAAE,SAAS;EACfD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,iBAAiB;EAC1BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,UAAU;EAClBE,cAAc,EAAE;IAAEC,MAAM,EAAE;EAAK,CAAC;EAChCrC,KAAK,EAAE,IAAAC,QAAE,EAAE,cAAe;AAC3B,CAAC,EACD;EACCE,IAAI,EAAE,QAAQ;EACdD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,gBAAgB;EACzBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,SAAS;EACjBE,cAAc,EAAE;IAAEC,MAAM,EAAE;EAAK,CAAC;EAChCrC,KAAK,EAAE,IAAAC,QAAE,EAAE,SAAU;AACtB,CAAC,EACD;EACCE,IAAI,EAAE,YAAY;EAClBD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,qBAAqB;EAC9BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,aAAa;EACrBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,cAAe;AAC3B,CAAC,EACD;EACCD,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBE,IAAI,EAAE,MAAM;EACZD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,cAAc;EACvBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE;AACT,CAAC,EACD;EACC/B,IAAI,EAAE,SAAS;EACfD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,iBAAiB;EAC1BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,UAAU;EAClBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,SAAU;AACtB,CAAC,EACD;EACCE,IAAI,EAAE,MAAM;EACZD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,cAAc;EACvBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,OAAO;EACflC,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO;AACnB,CAAC,EACD;EACCE,IAAI,EAAE,UAAU;EAChBD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,mBAAmB;EAC5BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,WAAW;EACnBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,WAAY,CAAC;EACxBkC,aAAa,EAAE,CAAE,OAAO;AACzB,CAAC,EACD;EACChC,IAAI,EAAE,cAAc;EACpBD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,uBAAuB;EAChCC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,eAAe;EACvBlC,KAAK,EAAE,IAAAC,QAAE,EAAE,eAAgB,CAAC;EAC5BmB,GAAG,EAAE;AACN,CAAC,EACD;EACCpB,KAAK,EAAE,IAAAC,QAAE,EAAE,eAAgB,CAAC;EAC5BE,IAAI,EAAE,cAAc;EACpBD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,sBAAsB;EAC/BC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCE,MAAM,EAAE,wBAAwB;EAAE;EAClCN,QAAQ,EAAIC,MAAM,IAAMA,MAAM,EAAEE,KAAK,EAAEO,QAAQ,IAAIT,MAAM,EAAEE;AAC5D,CAAC,EACD;EACC/B,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAS,CAAC;EACrBE,IAAI,EAAE,OAAO;EACbD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,eAAe;EACxBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCZ,GAAG,EAAE;AACN,CAAC,EACD;EACCpB,KAAK,EAAE,IAAAC,QAAE,EAAE,SAAU,CAAC;EACtBE,IAAI,EAAE,QAAQ;EACdD,IAAI,EAAE,MAAM;EACZE,OAAO,EAAE,gBAAgB;EACzBC,aAAa,EAAE;IAAE2B,OAAO,EAAE;EAAO,CAAC;EAClCZ,GAAG,EAAE;AACN,CAAC,CACD;AAACvB,OAAA,CAAAE,kBAAA,GAAAA,kBAAA;AAEK,MAAMwC,6BAA6B,GAAG,CAC5C;EAAErC,IAAI,EAAE,UAAU;EAAEsC,YAAY,EAAEC;AAAqB,CAAC,EACxD;EAAEvC,IAAI,EAAE,UAAU;EAAEsC,YAAY,EAAEE;AAAqB,CAAC,CACxD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA7C,OAAA,CAAA0C,6BAAA,GAAAA,6BAAA;AAOO,MAAMI,kBAAkB,GAAGA,CAAEC,eAAe,EAAEC,KAAK,KAAM;EAC/D,MAAMC,QAAQ,GAAG,CAAC,CAAC;EAEnB,IAAKF,eAAe,EAAEG,MAAM,KAAK,YAAY,EAAG;IAC/C;IACA,IAAK,CAAEF,KAAK,CAACE,MAAM,IAAI,CAAED,QAAQ,CAACC,MAAM,EAAG;MAC1CD,QAAQ,CAACC,MAAM,GAAG,OAAO;IAC1B;;IAEA;IACA,IACC,CAAE,CAAEF,KAAK,CAACd,KAAK,IAAIc,KAAK,CAACd,KAAK,KAAK,YAAY,KAC/C,CAAEe,QAAQ,CAACf,KAAK,KACd,CAAEa,eAAe,EAAEb,KAAK,IACzBa,eAAe,EAAEb,KAAK,KAAK,YAAY,CAAE,EACzC;MACDe,QAAQ,CAACf,KAAK,GAAG,EAAE;IACpB;EACD;EAEA,OAAOe,QAAQ;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAjD,OAAA,CAAA8C,kBAAA,GAAAA,kBAAA;AAKA,eAAeF,oBAAoBA,CAAA,EAAG;EACrC,MAAMO,SAAS,GAAG,MAAM,IAAAtC,iBAAQ,EAAE;IACjCC,IAAI,EAAE;EACP,CAAE,CAAC;EACH,OAAOM,MAAM,CAACC,OAAO,CAAE8B,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,CAAC,CAAE,CAAC,CAACC,GAAG,CAAE,CAAE,CAAE9C,IAAI,EAAE+C,QAAQ,CAAE,KAAM;IAAA,IAAAC,qBAAA;IACvE,MAAMC,UAAU,GAAG,CAAE,aAAa,EAAE,kBAAkB,CAAE,CAACC,QAAQ,CAChElD,IACD,CAAC;IACD,MAAMmD,SAAS,IAAAH,qBAAA,GAAGD,QAAQ,EAAEK,cAAc,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,OAAO;IACrD,OAAO;MACNjD,IAAI,EAAE,UAAU;MAChBE,OAAO,EAAG,IAAIkD,SAAW,IAAIJ,QAAQ,CAACM,SAAW,EAAC;MAClDnD,aAAa,EAAE;QAAE2B,OAAO,EAAE;MAAO,CAAC;MAClC7B,IAAI;MACJH,KAAK,EAAEkD,QAAQ,CAAC/C,IAAI;MACpBiC,cAAc,EAAE;QACfC,MAAM,EAAE,IAAI;QACZoB,SAAS,EAAE;MACZ,CAAC;MACDC,WAAW,EAAE;QAAEC,IAAI,EAAE;MAAK,CAAC;MAC3BxB,aAAa,EAAErC,mBAAmB;MAClC8B,QAAQ,EAAIC,MAAM;QAAA,IAAA+B,YAAA;QAAA,OACjB/B,MAAM,EAAEE,KAAK,EAAEO,QAAQ,IACvBT,MAAM,EAAEE,KAAK,KACXqB,UAAU,GACT,IAAAS,uBAAW,GAAAD,YAAA,GAAE/B,MAAM,CAACiC,IAAI,cAAAF,YAAA,cAAAA,YAAA,GAAI,EAAG,CAAC,GAChCG,MAAM,CAAElC,MAAM,CAACI,EAAG,CAAC,CAAE;MAAA;MACzB+B,oBAAoB,EAAEZ,UAAU,GAAGa,SAAS,GAAGtB,kBAAkB;MACjEuB,oBAAoB,EAAEhB,QAAQ,CAACM,SAAS;MACxChD,UAAU,EAAE;QACXC,KAAK,EAAE,MAAQwB,EAAE,IAAM;UACtB,OAAO,IAAAvB,iBAAQ,EAAE;YAChBC,IAAI,EAAG,IAAI2C,SAAW,IAAIJ,QAAQ,CAACM,SAAW,IAAIvB,EAAI;UACvD,CAAE,CAAC;QACJ,CAAC;QACDrB,iBAAiB,EAAEA,CAAEC,GAAG,EAAEC,OAAO,KAAM;UACtC,MAAMC,QAAQ,GAAGF,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC;UACzCC,MAAM,CAACC,OAAO,CAAEJ,OAAQ,CAAC,CAACK,OAAO,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM;YACxD,IACCN,QAAQ,CAACO,GAAG,CAAEF,GAAI,CAAC,KAAKC,KAAK,IAC7B,OAAOA,KAAK,KAAK,UAAU,EAC1B;cACDN,QAAQ,CAACQ,GAAG,CAAEH,GAAG,EAAEC,KAAM,CAAC;YAC3B;UACD,CAAE,CAAC;QACJ,CAAC;QACDG,WAAW,EAAIX,GAAG,IAAM;UACvB,OAAOA,GAAG,CAACG,MAAM,CAAE,UAAW,CAAC,CAACS,MAAM,CAAC,CAAC;QACzC;MACD,CAAC;MACDC,cAAc,EAAE,WAAW,GAAGwB,QAAQ,CAAC/C,IAAI;MAC3CwB,eAAe,EAAIM,EAAE,IAAMA;IAC5B,CAAC;EACF,CAAE,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeS,oBAAoBA,CAAA,EAAG;EACrC,MAAMyB,UAAU,GAAG,MAAM,IAAAzD,iBAAQ,EAAE;IAClCC,IAAI,EAAE;EACP,CAAE,CAAC;EACH,OAAOM,MAAM,CAACC,OAAO,CAAEiD,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,CAAC,CAAE,CAAC,CAAClB,GAAG,CAAE,CAAE,CAAE9C,IAAI,EAAEiE,QAAQ,CAAE,KAAM;IAAA,IAAAC,qBAAA;IACxE,MAAMf,SAAS,IAAAe,qBAAA,GAAGD,QAAQ,EAAEb,cAAc,cAAAc,qBAAA,cAAAA,qBAAA,GAAI,OAAO;IACrD,OAAO;MACNnE,IAAI,EAAE,UAAU;MAChBE,OAAO,EAAG,IAAIkD,SAAW,IAAIc,QAAQ,CAACZ,SAAW,EAAC;MAClDnD,aAAa,EAAE;QAAE2B,OAAO,EAAE;MAAO,CAAC;MAClC7B,IAAI;MACJH,KAAK,EAAEoE,QAAQ,CAACjE;IACjB,CAAC;EACF,CAAE,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMmE,aAAa,GAAGA,CAC5BpE,IAAI,EACJC,IAAI,EACJoE,MAAM,GAAG,KAAK,EACdC,SAAS,GAAG,KAAK,KACb;EACJ,MAAMC,YAAY,GAAG1E,kBAAkB,CAAC2E,IAAI,CACzCC,MAAM,IAAMA,MAAM,CAACzE,IAAI,KAAKA,IAAI,IAAIyE,MAAM,CAACxE,IAAI,KAAKA,IACvD,CAAC;EACD,MAAMyE,UAAU,GAAG1E,IAAI,KAAK,MAAM,GAAG,EAAE,GAAG,IAAA2E,sBAAU,EAAE3E,IAAK,CAAC;EAC5D,MAAM4E,UAAU,GAAG,IAAAD,sBAAU,EAAE1E,IAAK,CAAC,IAAKqE,SAAS,GAAG,GAAG,GAAG,EAAE,CAAE;EAChE,MAAMO,MAAM,GACXP,SAAS,IAAI,QAAQ,IAAIC,YAAY,IAAIA,YAAY,EAAEvC,MAAM,GAC1D,IAAA2C,sBAAU,EAAEJ,YAAY,CAACvC,MAAO,CAAC,GACjC4C,UAAU;EACd,OAAQ,GAAGP,MAAQ,GAAGK,UAAY,GAAGG,MAAQ,EAAC;AAC/C,CAAC;AAAClF,OAAA,CAAAyE,aAAA,GAAAA,aAAA;AAEF,SAASU,mBAAmBA,CAAEC,OAAO,EAAG;EACvCA,OAAO,CAAC9D,OAAO,CAAE,CAAE;IAAEO,cAAc;IAAElB;EAAW,CAAC,KAAM;IACtD,IAAA0E,qBAAe,EAAC,CAAC,CAACC,QAAQ,CAAEzD,cAAc,EAAElB,UAAW,CAAC;IACxD,MAAM4E,cAAc,GAAG;MAAE,GAAG5E;IAAW,CAAC;IACxC,OAAO4E,cAAc,CAAC3E,KAAK;IAC3B,IAAAyE,qBAAe,EAAC,CAAC,CAACC,QAAQ,CAAEzD,cAAc,GAAG,QAAQ,EAAE0D,cAAe,CAAC;EACxE,CAAE,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,uBAAuB,GACjCnF,IAAI,IACN,OAAQ;EAAEoF,MAAM;EAAEC;AAAS,CAAC,KAAM;EACjC,IAAIN,OAAO,GAAGK,MAAM,CAACE,iBAAiB,CAAEtF,IAAK,CAAC;EAC9C,IAAK+E,OAAO,IAAIA,OAAO,CAACQ,MAAM,KAAK,CAAC,EAAG;IACtCT,mBAAmB,CAAEC,OAAQ,CAAC;IAC9B,OAAOA,OAAO;EACf;EAEA,MAAMS,MAAM,GAAGnD,6BAA6B,CAACmC,IAAI,CAC9CiB,CAAC,IAAMA,CAAC,CAACzF,IAAI,KAAKA,IACrB,CAAC;EACD,IAAK,CAAEwF,MAAM,EAAG;IACf,OAAO,EAAE;EACV;EAEAT,OAAO,GAAG,MAAMS,MAAM,CAAClD,YAAY,CAAC,CAAC;EACrCwC,mBAAmB,CAAEC,OAAQ,CAAC;EAC9BM,QAAQ,CAAE,IAAAK,oBAAW,EAAEX,OAAQ,CAAE,CAAC;EAElC,OAAOA,OAAO;AACf,CAAC;AAACpF,OAAA,CAAAwF,uBAAA,GAAAA,uBAAA"}
|
package/build/entity-provider.js
CHANGED
|
@@ -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 = {
|
|
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
|
-
*
|
|
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;
|
|
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
|
-
|
|
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
|
|
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
|
-
}
|
|
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 {
|
|
259
|
+
return {
|
|
260
|
+
...block,
|
|
280
261
|
attributes: updateAttributes(block.attributes),
|
|
281
262
|
innerBlocks: updateBlocksAttributes(block.innerBlocks)
|
|
282
263
|
};
|
|
283
264
|
});
|
|
284
|
-
}
|
|
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 = {
|
|
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: {
|
|
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;
|
|
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: ({
|