@wordpress/core-data 7.10.0 → 7.11.0
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 +13 -9
- package/build/actions.js.map +1 -1
- package/build/entities.js +1 -63
- package/build/entities.js.map +1 -1
- package/build/entity-types/attachment.js.map +1 -1
- package/build/hooks/use-entity-block-editor.js +4 -5
- package/build/hooks/use-entity-block-editor.js.map +1 -1
- package/build/resolvers.js +55 -24
- package/build/resolvers.js.map +1 -1
- package/build-module/actions.js +14 -10
- package/build-module/actions.js.map +1 -1
- package/build-module/entities.js +0 -61
- package/build-module/entities.js.map +1 -1
- package/build-module/entity-types/attachment.js.map +1 -1
- package/build-module/hooks/use-entity-block-editor.js +4 -5
- package/build-module/hooks/use-entity-block-editor.js.map +1 -1
- package/build-module/resolvers.js +54 -24
- package/build-module/resolvers.js.map +1 -1
- package/build-types/actions.d.ts +8 -4
- package/build-types/actions.d.ts.map +1 -1
- package/build-types/entities.d.ts +0 -1
- package/build-types/entities.d.ts.map +1 -1
- package/build-types/entity-types/attachment.d.ts +36 -1
- package/build-types/entity-types/attachment.d.ts.map +1 -1
- package/build-types/hooks/use-entity-block-editor.d.ts.map +1 -1
- package/build-types/index.d.ts +8 -4
- package/build-types/index.d.ts.map +1 -1
- package/build-types/resolvers.d.ts +13 -5
- package/build-types/resolvers.d.ts.map +1 -1
- package/package.json +19 -18
- package/src/actions.js +10 -10
- package/src/entities.js +0 -64
- package/src/entity-types/attachment.ts +35 -1
- package/src/hooks/test/use-entity-record.js +9 -2
- package/src/hooks/use-entity-block-editor.js +4 -9
- package/src/resolvers.js +59 -29
- package/src/test/actions.js +24 -39
- package/src/test/entities.js +0 -80
- package/src/test/resolvers.js +89 -35
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -94,7 +94,6 @@ function useEntityBlockEditor(kind, name, {
|
|
|
94
94
|
}
|
|
95
95
|
return _blocks;
|
|
96
96
|
}, [kind, name, id, editedBlocks, content, getEntityRecord, getEntityRecordEdits]);
|
|
97
|
-
const updateFootnotes = (0, _element.useCallback)(_blocks => (0, _footnotes.updateFootnotesFromMeta)(_blocks, meta), [meta]);
|
|
98
97
|
const onChange = (0, _element.useCallback)((newBlocks, options) => {
|
|
99
98
|
const noChange = blocks === newBlocks;
|
|
100
99
|
if (noChange) {
|
|
@@ -113,19 +112,19 @@ function useEntityBlockEditor(kind, name, {
|
|
|
113
112
|
content: ({
|
|
114
113
|
blocks: blocksForSerialization = []
|
|
115
114
|
}) => (0, _blocks2.__unstableSerializeAndClean)(blocksForSerialization),
|
|
116
|
-
...
|
|
115
|
+
...(0, _footnotes.updateFootnotesFromMeta)(newBlocks, meta)
|
|
117
116
|
};
|
|
118
117
|
editEntityRecord(kind, name, id, edits, {
|
|
119
118
|
isCached: false,
|
|
120
119
|
...rest
|
|
121
120
|
});
|
|
122
|
-
}, [kind, name, id, blocks,
|
|
121
|
+
}, [kind, name, id, blocks, meta, __unstableCreateUndoLevel, editEntityRecord]);
|
|
123
122
|
const onInput = (0, _element.useCallback)((newBlocks, options) => {
|
|
124
123
|
const {
|
|
125
124
|
selection,
|
|
126
125
|
...rest
|
|
127
126
|
} = options;
|
|
128
|
-
const footnotesChanges =
|
|
127
|
+
const footnotesChanges = (0, _footnotes.updateFootnotesFromMeta)(newBlocks, meta);
|
|
129
128
|
const edits = {
|
|
130
129
|
selection,
|
|
131
130
|
...footnotesChanges
|
|
@@ -134,7 +133,7 @@ function useEntityBlockEditor(kind, name, {
|
|
|
134
133
|
isCached: true,
|
|
135
134
|
...rest
|
|
136
135
|
});
|
|
137
|
-
}, [kind, name, id,
|
|
136
|
+
}, [kind, name, id, meta, editEntityRecord]);
|
|
138
137
|
return [blocks, onInput, onChange];
|
|
139
138
|
}
|
|
140
139
|
//# sourceMappingURL=use-entity-block-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_data","_blocks2","_name","_useEntityId","_interopRequireDefault","_footnotes","EMPTY_ARRAY","parsedBlocksCache","WeakMap","useEntityBlockEditor","kind","name","id","_id","providerId","useEntityId","getEntityRecord","getEntityRecordEdits","useSelect","STORE_NAME","content","editedBlocks","meta","select","getEditedEntityRecord","editedRecord","blocks","__unstableCreateUndoLevel","editEntityRecord","useDispatch","useMemo","undefined","edits","isUnedited","Object","keys","length","cackeKey","_blocks","get","parse","set","
|
|
1
|
+
{"version":3,"names":["_element","require","_data","_blocks2","_name","_useEntityId","_interopRequireDefault","_footnotes","EMPTY_ARRAY","parsedBlocksCache","WeakMap","useEntityBlockEditor","kind","name","id","_id","providerId","useEntityId","getEntityRecord","getEntityRecordEdits","useSelect","STORE_NAME","content","editedBlocks","meta","select","getEditedEntityRecord","editedRecord","blocks","__unstableCreateUndoLevel","editEntityRecord","useDispatch","useMemo","undefined","edits","isUnedited","Object","keys","length","cackeKey","_blocks","get","parse","set","onChange","useCallback","newBlocks","options","noChange","selection","rest","blocksForSerialization","__unstableSerializeAndClean","updateFootnotesFromMeta","isCached","onInput","footnotesChanges"],"sources":["@wordpress/core-data/src/hooks/use-entity-block-editor.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../name';\nimport useEntityId from './use-entity-id';\nimport { updateFootnotesFromMeta } from '../footnotes';\n\nconst EMPTY_ARRAY = [];\nconst parsedBlocksCache = new WeakMap();\n\n/**\n * Hook that returns block content getters and setters for\n * the nearest provided entity of the specified type.\n *\n * The return value has the shape `[ blocks, onInput, onChange ]`.\n * `onInput` is for block changes that don't create undo levels\n * or dirty the post, non-persistent changes, and `onChange` is for\n * persistent changes. They map directly to the props of a\n * `BlockEditorProvider` and are intended to be used with it,\n * or similar components or hooks.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {Object} options\n * @param {string} [options.id] An entity ID to use instead of the context-provided one.\n *\n * @return {[unknown[], Function, Function]} The block array and setters.\n */\nexport default function useEntityBlockEditor( kind, name, { id: _id } = {} ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\tconst { getEntityRecord, getEntityRecordEdits } = useSelect( STORE_NAME );\n\tconst { content, editedBlocks, meta } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getEditedEntityRecord } = select( STORE_NAME );\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn {\n\t\t\t\teditedBlocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t\tmeta: editedRecord.meta,\n\t\t\t};\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\tconst { __unstableCreateUndoLevel, editEntityRecord } =\n\t\tuseDispatch( STORE_NAME );\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\n\t\t// If there's an edit, cache the parsed blocks by the edit.\n\t\t// If not, cache by the original enity record.\n\t\tconst edits = getEntityRecordEdits( kind, name, id );\n\t\tconst isUnedited = ! edits || ! Object.keys( edits ).length;\n\t\tconst cackeKey = isUnedited ? getEntityRecord( kind, name, id ) : edits;\n\t\tlet _blocks = parsedBlocksCache.get( cackeKey );\n\n\t\tif ( ! _blocks ) {\n\t\t\t_blocks = parse( content );\n\t\t\tparsedBlocksCache.set( cackeKey, _blocks );\n\t\t}\n\n\t\treturn _blocks;\n\t}, [\n\t\tkind,\n\t\tname,\n\t\tid,\n\t\teditedBlocks,\n\t\tcontent,\n\t\tgetEntityRecord,\n\t\tgetEntityRecordEdits,\n\t] );\n\n\tconst onChange = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst noChange = blocks === newBlocks;\n\t\t\tif ( noChange ) {\n\t\t\t\treturn __unstableCreateUndoLevel( kind, name, id );\n\t\t\t}\n\t\t\tconst { selection, ...rest } = options;\n\n\t\t\t// We create a new function here on every persistent edit\n\t\t\t// to make sure the edit makes the post dirty and creates\n\t\t\t// a new undo level.\n\t\t\tconst edits = {\n\t\t\t\tselection,\n\t\t\t\tcontent: ( { blocks: blocksForSerialization = [] } ) =>\n\t\t\t\t\t__unstableSerializeAndClean( blocksForSerialization ),\n\t\t\t\t...updateFootnotesFromMeta( newBlocks, meta ),\n\t\t\t};\n\n\t\t\teditEntityRecord( kind, name, id, edits, {\n\t\t\t\tisCached: false,\n\t\t\t\t...rest,\n\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tkind,\n\t\t\tname,\n\t\t\tid,\n\t\t\tblocks,\n\t\t\tmeta,\n\t\t\t__unstableCreateUndoLevel,\n\t\t\teditEntityRecord,\n\t\t]\n\t);\n\n\tconst onInput = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection, ...rest } = options;\n\t\t\tconst footnotesChanges = updateFootnotesFromMeta( newBlocks, meta );\n\t\t\tconst edits = { selection, ...footnotesChanges };\n\n\t\t\teditEntityRecord( kind, name, id, edits, {\n\t\t\t\tisCached: true,\n\t\t\t\t...rest,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, meta, editEntityRecord ]\n\t);\n\n\treturn [ blocks, onInput, onChange ];\n}\n"],"mappings":"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","ignoreList":[]}
|
package/build/resolvers.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.getUserPatternCategories = exports.getThemeSupports = exports.getRevisions = exports.getRevision = exports.getRegisteredPostMeta = exports.getRawEntityRecord = exports.getNavigationFallbackId = exports.getEntityRecords = exports.getEntityRecord = exports.getEmbedPreview = exports.getEditedEntityRecord = exports.getDefaultTemplateId = exports.getCurrentUser = exports.getCurrentThemeGlobalStylesRevisions = exports.getCurrentTheme = exports.getBlockPatterns = exports.getBlockPatternCategories = exports.getAutosaves = exports.getAutosave = exports.getAuthors = exports.canUserEditEntityRecord = exports.canUser = exports.__experimentalGetTemplateForLink = exports.__experimentalGetCurrentThemeGlobalStylesVariations = exports.__experimentalGetCurrentThemeBaseGlobalStyles = exports.__experimentalGetCurrentGlobalStylesId = void 0;
|
|
8
|
+
exports.getUserPatternCategories = exports.getThemeSupports = exports.getRevisions = exports.getRevision = exports.getRegisteredPostMeta = exports.getRawEntityRecord = exports.getNavigationFallbackId = exports.getEntityRecords = exports.getEntityRecord = exports.getEntitiesConfig = exports.getEmbedPreview = exports.getEditedEntityRecord = exports.getDefaultTemplateId = exports.getCurrentUser = exports.getCurrentThemeGlobalStylesRevisions = exports.getCurrentTheme = exports.getBlockPatterns = exports.getBlockPatternCategories = exports.getAutosaves = exports.getAutosave = exports.getAuthors = exports.canUserEditEntityRecord = exports.canUser = exports.__experimentalGetTemplateForLink = exports.__experimentalGetCurrentThemeGlobalStylesVariations = exports.__experimentalGetCurrentThemeBaseGlobalStyles = exports.__experimentalGetCurrentGlobalStylesId = void 0;
|
|
9
9
|
var _changeCase = require("change-case");
|
|
10
10
|
var _url = require("@wordpress/url");
|
|
11
11
|
var _htmlEntities = require("@wordpress/html-entities");
|
|
@@ -70,9 +70,10 @@ exports.getCurrentUser = getCurrentUser;
|
|
|
70
70
|
const getEntityRecord = (kind, name, key = '', query) => async ({
|
|
71
71
|
select,
|
|
72
72
|
dispatch,
|
|
73
|
-
registry
|
|
73
|
+
registry,
|
|
74
|
+
resolveSelect
|
|
74
75
|
}) => {
|
|
75
|
-
const configs = await
|
|
76
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
76
77
|
const entityConfig = configs.find(config => config.name === name && config.kind === kind);
|
|
77
78
|
if (!entityConfig) {
|
|
78
79
|
return;
|
|
@@ -194,9 +195,10 @@ const getEditedEntityRecord = exports.getEditedEntityRecord = (0, _utils.forward
|
|
|
194
195
|
*/
|
|
195
196
|
const getEntityRecords = (kind, name, query = {}) => async ({
|
|
196
197
|
dispatch,
|
|
197
|
-
registry
|
|
198
|
+
registry,
|
|
199
|
+
resolveSelect
|
|
198
200
|
}) => {
|
|
199
|
-
const configs = await
|
|
201
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
200
202
|
const entityConfig = configs.find(config => config.name === name && config.kind === kind);
|
|
201
203
|
if (!entityConfig) {
|
|
202
204
|
return;
|
|
@@ -350,25 +352,12 @@ const getEmbedPreview = url => async ({
|
|
|
350
352
|
exports.getEmbedPreview = getEmbedPreview;
|
|
351
353
|
const canUser = (requestedAction, resource, id) => async ({
|
|
352
354
|
dispatch,
|
|
353
|
-
registry
|
|
355
|
+
registry,
|
|
356
|
+
resolveSelect
|
|
354
357
|
}) => {
|
|
355
358
|
if (!_utils.ALLOWED_RESOURCE_ACTIONS.includes(requestedAction)) {
|
|
356
359
|
throw new Error(`'${requestedAction}' is not a valid action.`);
|
|
357
360
|
}
|
|
358
|
-
let resourcePath = null;
|
|
359
|
-
if (typeof resource === 'object') {
|
|
360
|
-
if (!resource.kind || !resource.name) {
|
|
361
|
-
throw new Error('The entity resource object is not valid.');
|
|
362
|
-
}
|
|
363
|
-
const configs = await dispatch((0, _entities.getOrLoadEntitiesConfig)(resource.kind, resource.name));
|
|
364
|
-
const entityConfig = configs.find(config => config.name === resource.name && config.kind === resource.kind);
|
|
365
|
-
if (!entityConfig) {
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
resourcePath = entityConfig.baseURL + (resource.id ? '/' + resource.id : '');
|
|
369
|
-
} else {
|
|
370
|
-
resourcePath = `/wp/v2/${resource}` + (id ? '/' + id : '');
|
|
371
|
-
}
|
|
372
361
|
const {
|
|
373
362
|
hasStartedResolution
|
|
374
363
|
} = registry.select(_name.STORE_NAME);
|
|
@@ -383,6 +372,20 @@ const canUser = (requestedAction, resource, id) => async ({
|
|
|
383
372
|
return;
|
|
384
373
|
}
|
|
385
374
|
}
|
|
375
|
+
let resourcePath = null;
|
|
376
|
+
if (typeof resource === 'object') {
|
|
377
|
+
if (!resource.kind || !resource.name) {
|
|
378
|
+
throw new Error('The entity resource object is not valid.');
|
|
379
|
+
}
|
|
380
|
+
const configs = await resolveSelect.getEntitiesConfig(resource.kind);
|
|
381
|
+
const entityConfig = configs.find(config => config.name === resource.name && config.kind === resource.kind);
|
|
382
|
+
if (!entityConfig) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
resourcePath = entityConfig.baseURL + (resource.id ? '/' + resource.id : '');
|
|
386
|
+
} else {
|
|
387
|
+
resourcePath = `/wp/v2/${resource}` + (id ? '/' + id : '');
|
|
388
|
+
}
|
|
386
389
|
let response;
|
|
387
390
|
try {
|
|
388
391
|
response = await (0, _apiFetch.default)({
|
|
@@ -535,6 +538,7 @@ const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ({
|
|
|
535
538
|
dispatch
|
|
536
539
|
}) => {
|
|
537
540
|
const currentTheme = await resolveSelect.getCurrentTheme();
|
|
541
|
+
// Please adjust the preloaded requests if this changes!
|
|
538
542
|
const themeGlobalStyles = await (0, _apiFetch.default)({
|
|
539
543
|
path: `/wp/v2/global-styles/themes/${currentTheme.stylesheet}?context=view`
|
|
540
544
|
});
|
|
@@ -546,6 +550,7 @@ const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ({
|
|
|
546
550
|
dispatch
|
|
547
551
|
}) => {
|
|
548
552
|
const currentTheme = await resolveSelect.getCurrentTheme();
|
|
553
|
+
// Please adjust the preloaded requests if this changes!
|
|
549
554
|
const variations = await (0, _apiFetch.default)({
|
|
550
555
|
path: `/wp/v2/global-styles/themes/${currentTheme.stylesheet}/variations?context=view`
|
|
551
556
|
});
|
|
@@ -671,9 +676,10 @@ const getDefaultTemplateId = query => async ({
|
|
|
671
676
|
exports.getDefaultTemplateId = getDefaultTemplateId;
|
|
672
677
|
const getRevisions = (kind, name, recordKey, query = {}) => async ({
|
|
673
678
|
dispatch,
|
|
674
|
-
registry
|
|
679
|
+
registry,
|
|
680
|
+
resolveSelect
|
|
675
681
|
}) => {
|
|
676
|
-
const configs = await
|
|
682
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
677
683
|
const entityConfig = configs.find(config => config.name === name && config.kind === kind);
|
|
678
684
|
if (!entityConfig) {
|
|
679
685
|
return;
|
|
@@ -751,9 +757,10 @@ getRevisions.shouldInvalidate = (action, kind, name, recordKey) => action.type =
|
|
|
751
757
|
* fields, fields must always include the ID.
|
|
752
758
|
*/
|
|
753
759
|
const getRevision = (kind, name, recordKey, revisionKey, query) => async ({
|
|
754
|
-
dispatch
|
|
760
|
+
dispatch,
|
|
761
|
+
resolveSelect
|
|
755
762
|
}) => {
|
|
756
|
-
const configs = await
|
|
763
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
757
764
|
const entityConfig = configs.find(config => config.name === name && config.kind === kind);
|
|
758
765
|
if (!entityConfig) {
|
|
759
766
|
return;
|
|
@@ -810,5 +817,29 @@ const getRegisteredPostMeta = postType => async ({
|
|
|
810
817
|
dispatch.receiveRegisteredPostMeta(postType, options?.schema?.properties?.meta?.properties);
|
|
811
818
|
}
|
|
812
819
|
};
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* Requests entity configs for the given kind from the REST API.
|
|
823
|
+
*
|
|
824
|
+
* @param {string} kind Entity kind.
|
|
825
|
+
*/
|
|
813
826
|
exports.getRegisteredPostMeta = getRegisteredPostMeta;
|
|
827
|
+
const getEntitiesConfig = kind => async ({
|
|
828
|
+
dispatch
|
|
829
|
+
}) => {
|
|
830
|
+
const loader = _entities.additionalEntityConfigLoaders.find(l => l.kind === kind);
|
|
831
|
+
if (!loader) {
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
try {
|
|
835
|
+
const configs = await loader.loadEntities();
|
|
836
|
+
if (!configs.length) {
|
|
837
|
+
return;
|
|
838
|
+
}
|
|
839
|
+
dispatch.addEntities(configs);
|
|
840
|
+
} catch {
|
|
841
|
+
// Do nothing if the request comes back with an API error.
|
|
842
|
+
}
|
|
843
|
+
};
|
|
844
|
+
exports.getEntitiesConfig = getEntitiesConfig;
|
|
814
845
|
//# sourceMappingURL=resolvers.js.map
|
package/build/resolvers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_changeCase","require","_url","_htmlEntities","_apiFetch","_interopRequireDefault","_name","_entities","_utils","_sync","_fetch","getAuthors","query","dispatch","path","addQueryArgs","users","apiFetch","receiveUserQuery","exports","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","registry","configs","getOrLoadEntitiesConfig","entityConfig","find","config","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","window","__experimentalEnableSync","syncConfig","globalThis","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","getSyncProvider","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","getNormalizedCommaSeparable","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","response","parse","json","permissions","getUserPermissionsFromAllowHeader","headers","get","canUserResolutionsArgs","receiveUserPermissionArgs","action","ALLOWED_RESOURCE_ACTIONS","getUserPermissionCacheKey","id","push","batch","receiveUserPermissions","finishResolutions","__unstableReleaseStoreLock","getRawEntityRecord","forwardResolver","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","Object","values","totalItems","parseInt","totalPages","length","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","targetHints","_links","self","allow","targetHint","e","shouldInvalidate","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","includes","Error","resourcePath","hasStartedResolution","relatedAction","isAlreadyResolving","method","receiveUserPermission","finishResolution","canUserEditEntityRecord","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","__experimentalGetCurrentGlobalStylesId","globalStylesURL","href","matches","match","Number","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","entries","value","camelCase","receiveThemeGlobalStyleRevisions","getBlockPatterns","patterns","fetchBlockPatterns","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","decodeEntities","slug","getNavigationFallbackId","fallback","_embed","_embedded","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","revisionKey","getRevisionsUrl","isPaginated","receiveRevisions","getRevision","getRegisteredPostMeta","options","receiveRegisteredPostMeta","schema","properties"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport {\n\tforwardResolver,\n\tgetNormalizedCommaSeparable,\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromAllowHeader,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './utils';\nimport { getSyncProvider } from './sync';\nimport { fetchBlockPatterns } from './fetch';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\tconst record = await response.json();\n\t\t\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\t\t\tresponse.headers?.get( 'allow' )\n\t\t\t\t);\n\n\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tid: key,\n\t\t\t\t\t\t} )\n\t\t\t\t\t] = permissions[ action ];\n\n\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\t{ kind, name, id: key },\n\t\t\t\t\t] );\n\t\t\t\t}\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records, meta;\n\t\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t\t),\n\t\t\t\t\ttotalPages: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-TotalPages' )\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: records.length,\n\t\t\t\t\ttotalPages: 1,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fulfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tundefined,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to resolve\n\t\t\t\t// the `getEntityRecord` and `canUser` selectors in addition to `getEntityRecords`.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/64504\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\t\tconst targetHints = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => ( {\n\t\t\t\t\t\t\tid: record[ key ],\n\t\t\t\t\t\t\tpermissions: getUserPermissionsFromAllowHeader(\n\t\t\t\t\t\t\t\trecord?._links?.self?.[ 0 ].targetHints.allow\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} ) );\n\n\t\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\t\tfor ( const targetHint of targetHints ) {\n\t\t\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t{ kind, name, id: targetHint.id },\n\t\t\t\t\t\t\t] );\n\n\t\t\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\tid: targetHint.id,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t] = targetHint.permissions[ action ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t\t} );\n\t\t} catch ( e ) {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string|Object} resource Entity resource to check. Accepts entity object `{ kind: 'root', name: 'media', id: 1 }`\n * or REST base as a string - `media`.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tif ( ! ALLOWED_RESOURCE_ACTIONS.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\tlet resourcePath = null;\n\t\tif ( typeof resource === 'object' ) {\n\t\t\tif ( ! resource.kind || ! resource.name ) {\n\t\t\t\tthrow new Error( 'The entity resource object is not valid.' );\n\t\t\t}\n\n\t\t\tconst configs = await dispatch(\n\t\t\t\tgetOrLoadEntitiesConfig( resource.kind, resource.name )\n\t\t\t);\n\t\t\tconst entityConfig = configs.find(\n\t\t\t\t( config ) =>\n\t\t\t\t\tconfig.name === resource.name &&\n\t\t\t\t\tconfig.kind === resource.kind\n\t\t\t);\n\t\t\tif ( ! entityConfig ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresourcePath =\n\t\t\t\tentityConfig.baseURL + ( resource.id ? '/' + resource.id : '' );\n\t\t} else {\n\t\t\tresourcePath = `/wp/v2/${ resource }` + ( id ? '/' + id : '' );\n\t\t}\n\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: resourcePath,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the React native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\tresponse.headers?.get( 'allow' )\n\t\t);\n\t\tregistry.batch( () => {\n\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\tconst key = getUserPermissionCacheKey( action, resource, id );\n\n\t\t\t\tdispatch.receiveUserPermission( key, permissions[ action ] );\n\n\t\t\t\t// Mark related action resolutions as finished.\n\t\t\t\tif ( action !== requestedAction ) {\n\t\t\t\t\tdispatch.finishResolution( 'canUser', [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tresource,\n\t\t\t\t\t\tid,\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tawait dispatch( canUser( 'update', { kind, name, id: recordId } ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( ! globalStylesURL ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Regex matches the ID at the end of a URL or immediately before\n\t\t// the query string.\n\t\tconst matches = globalStylesURL.match( /\\/(\\d+)(?:\\?|$)/ );\n\t\tconst id = matches ? Number( matches[ 1 ] ) : null;\n\n\t\tif ( id ) {\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId( id );\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }?context=view`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations?context=view`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst patterns = await fetchBlockPatterns();\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t\tcontext: 'view',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: decodeEntities( userCategory.name ),\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch, select, registry } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tregistry.batch( () => {\n\t\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\t\tif ( ! record ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the fallback is already in the store, don't invalidate navigation queries.\n\t\t\t// Otherwise, invalidate the cache for the scenario where there were no Navigation\n\t\t\t// posts in the state and the fallback created one.\n\t\t\tconst existingFallbackEntityRecord = select.getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback.id\n\t\t\t);\n\t\t\tconst invalidateNavigationQueries = ! existingFallbackEntityRecord;\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback.id,\n\t\t\t] );\n\t\t} );\n\t};\n\nexport const getDefaultTemplateId =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst template = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', query ),\n\t\t} );\n\t\t// Endpoint may return an empty object if no template is found.\n\t\tif ( template?.id ) {\n\t\t\tdispatch.receiveDefaultTemplateId( query, template.id );\n\t\t}\n\t};\n\n/**\n * Requests an entity's revisions from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getRevisions =\n\t( kind, name, recordKey, query = {} ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet records, response;\n\t\tconst meta = {};\n\t\tconst isPaginated =\n\t\t\tentityConfig.supportsPagination && query.per_page !== -1;\n\t\ttry {\n\t\t\tresponse = await apiFetch( { path, parse: ! isPaginated } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( response ) {\n\t\t\tif ( isPaginated ) {\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta.totalItems = parseInt(\n\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\trecords = Object.values( response );\n\t\t\t}\n\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fulfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveRevisions(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordKey,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\trecordKey,\n\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t] );\n\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getRevision',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\n// Invalidate cache when a new revision is created.\ngetRevisions.shouldInvalidate = ( action, kind, name, recordKey ) =>\n\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\tname === action.name &&\n\tkind === action.kind &&\n\t! action.error &&\n\trecordKey === action.recordId;\n\n/**\n * Requests a specific Entity revision from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {number|string} revisionKey The revision's key.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getRevision =\n\t( kind, name, recordKey, revisionKey, query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind, name ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey, revisionKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet record;\n\t\ttry {\n\t\t\trecord = await apiFetch( { path } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveRevisions( kind, name, recordKey, record, query );\n\t\t}\n\t};\n\n/**\n * Requests a specific post type options from the REST API.\n *\n * @param {string} postType Post type slug.\n */\nexport const getRegisteredPostMeta =\n\t( postType ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet options;\n\t\ttry {\n\t\t\tconst {\n\t\t\t\trest_namespace: restNamespace = 'wp/v2',\n\t\t\t\trest_base: restBase,\n\t\t\t} = ( await resolveSelect.getPostType( postType ) ) || {};\n\t\t\toptions = await apiFetch( {\n\t\t\t\tpath: `${ restNamespace }/${ restBase }/?context=edit`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if the request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( options ) {\n\t\t\tdispatch.receiveRegisteredPostMeta(\n\t\t\t\tpostType,\n\t\t\t\toptions?.schema?.properties?.meta?.properties\n\t\t\t);\n\t\t}\n\t};\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAKA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAOA,IAAAQ,KAAA,GAAAR,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AAzBA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMU,UAAU,GACpBC,KAAK,IACP,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMC,IAAI,GAAG,IAAAC,iBAAY,EACxB,wCAAwC,EACxCH,KACD,CAAC;EACD,MAAMI,KAAK,GAAG,MAAM,IAAAC,iBAAQ,EAAE;IAAEH;EAAK,CAAE,CAAC;EACxCD,QAAQ,CAACK,gBAAgB,CAAEJ,IAAI,EAAEE,KAAM,CAAC;AACzC,CAAC;;AAEF;AACA;AACA;AAFAG,OAAA,CAAAR,UAAA,GAAAA,UAAA;AAGO,MAAMS,cAAc,GAC1BA,CAAA,KACA,OAAQ;EAAEP;AAAS,CAAC,KAAM;EACzB,MAAMQ,WAAW,GAAG,MAAM,IAAAJ,iBAAQ,EAAE;IAAEH,IAAI,EAAE;EAAkB,CAAE,CAAC;EACjED,QAAQ,CAACS,kBAAkB,CAAED,WAAY,CAAC;AAC3C,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATAF,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAUO,MAAMG,eAAe,GAC3BA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,GAAG,GAAG,EAAE,EAAEd,KAAK,KAC7B,OAAQ;EAAEe,MAAM;EAAEd,QAAQ;EAAEe;AAAS,CAAC,KAAM;EAC3C,MAAMC,OAAO,GAAG,MAAMhB,QAAQ,CAAE,IAAAiB,iCAAuB,EAAEN,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMM,YAAY,GAAGF,OAAO,CAACG,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACR,IAAI,KAAKA,IAAI,IAAIQ,MAAM,CAACT,IAAI,KAAKA,IACvD,CAAC;EACD,IAAK,CAAEO,YAAY,EAAG;IACrB;EACD;EAEA,MAAMG,IAAI,GAAG,MAAMrB,QAAQ,CAACsB,0BAA0B,CACrDC,gBAAU,EACV,CAAE,UAAU,EAAE,SAAS,EAAEZ,IAAI,EAAEC,IAAI,EAAEC,GAAG,CAAE,EAC1C;IAAEW,SAAS,EAAE;EAAM,CACpB,CAAC;EAED,IAAI;IACH;IACA;IACA,IACCC,MAAM,CAACC,wBAAwB,IAC/BR,YAAY,CAACS,UAAU,IACvB,CAAE5B,KAAK,EACN;MACD,IAAK6B,UAAU,CAACC,mBAAmB,EAAG;QACrC,MAAMC,QAAQ,GAAGZ,YAAY,CAACa,eAAe,CAAElB,GAAI,CAAC;;QAEpD;QACA,MAAM,IAAAmB,qBAAe,EAAC,CAAC,CAACC,SAAS,CAChCf,YAAY,CAACgB,cAAc,EAC3BJ,QAAQ,EACNK,MAAM,IAAM;UACbnC,QAAQ,CAACoC,oBAAoB,CAC5BzB,IAAI,EACJC,IAAI,EACJuB,MAAM,EACNpC,KACD,CAAC;QACF,CACD,CAAC;;QAED;QACA,MAAM,IAAAiC,qBAAe,EAAC,CAAC,CAACC,SAAS,CAChCf,YAAY,CAACgB,cAAc,GAAG,QAAQ,EACtCJ,QAAQ,EACNK,MAAM,IAAM;UACbnC,QAAQ,CAAE;YACTqC,IAAI,EAAE,oBAAoB;YAC1B1B,IAAI;YACJC,IAAI;YACJ0B,QAAQ,EAAEzB,GAAG;YACb0B,KAAK,EAAEJ,MAAM;YACbK,IAAI,EAAE;cACLC,IAAI,EAAEC;YACP;UACD,CAAE,CAAC;QACJ,CACD,CAAC;MACF;IACD,CAAC,MAAM;MACN,IAAK3C,KAAK,KAAK2C,SAAS,IAAI3C,KAAK,CAAC4C,OAAO,EAAG;QAC3C;QACA;QACA;QACA5C,KAAK,GAAG;UACP,GAAGA,KAAK;UACR4C,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK,IAAAC,kCAA2B,EAC/B9C,KAAK,CAAC4C,OACP,CAAC,IAAI,EAAE,CAAE,EACTzB,YAAY,CAACL,GAAG,IAAIiC,4BAAkB,CACrC,CAAC,CACH,CAACC,IAAI,CAAC;QACR,CAAC;MACF;;MAEA;MACA;MACA;MACA;MACA;;MAEA;MACA,MAAM9C,IAAI,GAAG,IAAAC,iBAAY,EACxBgB,YAAY,CAAC8B,OAAO,IAAKnC,GAAG,GAAG,GAAG,GAAGA,GAAG,GAAG,EAAE,CAAE,EAC/C;QACC,GAAGK,YAAY,CAAC+B,aAAa;QAC7B,GAAGlD;MACJ,CACD,CAAC;MAED,IAAKA,KAAK,KAAK2C,SAAS,IAAI3C,KAAK,CAAC4C,OAAO,EAAG;QAC3C5C,KAAK,GAAG;UAAE,GAAGA,KAAK;UAAEmD,OAAO,EAAE,CAAErC,GAAG;QAAG,CAAC;;QAEtC;QACA;QACA;QACA,MAAMsC,UAAU,GAAGrC,MAAM,CAACsC,gBAAgB,CACzCzC,IAAI,EACJC,IAAI,EACJb,KACD,CAAC;QACD,IAAKoD,UAAU,EAAG;UACjB;QACD;MACD;MAEA,MAAME,QAAQ,GAAG,MAAM,IAAAjD,iBAAQ,EAAE;QAAEH,IAAI;QAAEqD,KAAK,EAAE;MAAM,CAAE,CAAC;MACzD,MAAMnB,MAAM,GAAG,MAAMkB,QAAQ,CAACE,IAAI,CAAC,CAAC;MACpC,MAAMC,WAAW,GAAG,IAAAC,wCAAiC,EACpDJ,QAAQ,CAACK,OAAO,EAAEC,GAAG,CAAE,OAAQ,CAChC,CAAC;MAED,MAAMC,sBAAsB,GAAG,EAAE;MACjC,MAAMC,yBAAyB,GAAG,CAAC,CAAC;MACpC,KAAM,MAAMC,MAAM,IAAIC,+BAAwB,EAAG;QAChDF,yBAAyB,CACxB,IAAAG,gCAAyB,EAAEF,MAAM,EAAE;UAClCnD,IAAI;UACJC,IAAI;UACJqD,EAAE,EAAEpD;QACL,CAAE,CAAC,CACH,GAAG2C,WAAW,CAAEM,MAAM,CAAE;QAEzBF,sBAAsB,CAACM,IAAI,CAAE,CAC5BJ,MAAM,EACN;UAAEnD,IAAI;UAAEC,IAAI;UAAEqD,EAAE,EAAEpD;QAAI,CAAC,CACtB,CAAC;MACJ;MAEAE,QAAQ,CAACoD,KAAK,CAAE,MAAM;QACrBnE,QAAQ,CAACoC,oBAAoB,CAAEzB,IAAI,EAAEC,IAAI,EAAEuB,MAAM,EAAEpC,KAAM,CAAC;QAC1DC,QAAQ,CAACoE,sBAAsB,CAC9BP,yBACD,CAAC;QACD7D,QAAQ,CAACqE,iBAAiB,CACzB,SAAS,EACTT,sBACD,CAAC;MACF,CAAE,CAAC;IACJ;EACD,CAAC,SAAS;IACT5D,QAAQ,CAACsE,0BAA0B,CAAEjD,IAAK,CAAC;EAC5C;AACD,CAAC;;AAEF;AACA;AACA;AAFAf,OAAA,CAAAI,eAAA,GAAAA,eAAA;AAGO,MAAM6D,kBAAkB,GAAAjE,OAAA,CAAAiE,kBAAA,GAAG,IAAAC,sBAAe,EAAE,iBAAkB,CAAC;;AAEtE;AACA;AACA;AACO,MAAMC,qBAAqB,GAAAnE,OAAA,CAAAmE,qBAAA,GAAG,IAAAD,sBAAe,EAAE,iBAAkB,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,gBAAgB,GAC5BA,CAAE/D,IAAI,EAAEC,IAAI,EAAEb,KAAK,GAAG,CAAC,CAAC,KACxB,OAAQ;EAAEC,QAAQ;EAAEe;AAAS,CAAC,KAAM;EACnC,MAAMC,OAAO,GAAG,MAAMhB,QAAQ,CAAE,IAAAiB,iCAAuB,EAAEN,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMM,YAAY,GAAGF,OAAO,CAACG,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACR,IAAI,KAAKA,IAAI,IAAIQ,MAAM,CAACT,IAAI,KAAKA,IACvD,CAAC;EACD,IAAK,CAAEO,YAAY,EAAG;IACrB;EACD;EAEA,MAAMG,IAAI,GAAG,MAAMrB,QAAQ,CAACsB,0BAA0B,CACrDC,gBAAU,EACV,CAAE,UAAU,EAAE,SAAS,EAAEZ,IAAI,EAAEC,IAAI,CAAE,EACrC;IAAEY,SAAS,EAAE;EAAM,CACpB,CAAC;EAED,IAAI;IACH,IAAKzB,KAAK,CAAC4C,OAAO,EAAG;MACpB;MACA;MACA;MACA5C,KAAK,GAAG;QACP,GAAGA,KAAK;QACR4C,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK,IAAAC,kCAA2B,EAAE9C,KAAK,CAAC4C,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLzB,YAAY,CAACL,GAAG,IAAIiC,4BAAkB,CACrC,CAAC,CACH,CAACC,IAAI,CAAC;MACR,CAAC;IACF;IAEA,MAAM9C,IAAI,GAAG,IAAAC,iBAAY,EAAEgB,YAAY,CAAC8B,OAAO,EAAE;MAChD,GAAG9B,YAAY,CAAC+B,aAAa;MAC7B,GAAGlD;IACJ,CAAE,CAAC;IAEH,IAAI4E,OAAO,EAAEnC,IAAI;IACjB,IAAKtB,YAAY,CAAC0D,kBAAkB,IAAI7E,KAAK,CAAC8E,QAAQ,KAAK,CAAC,CAAC,EAAG;MAC/D,MAAMxB,QAAQ,GAAG,MAAM,IAAAjD,iBAAQ,EAAE;QAAEH,IAAI;QAAEqD,KAAK,EAAE;MAAM,CAAE,CAAC;MACzDqB,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAM1B,QAAQ,CAACE,IAAI,CAAC,CAAE,CAAC;MAChDf,IAAI,GAAG;QACNwC,UAAU,EAAEC,QAAQ,CACnB5B,QAAQ,CAACK,OAAO,CAACC,GAAG,CAAE,YAAa,CACpC,CAAC;QACDuB,UAAU,EAAED,QAAQ,CACnB5B,QAAQ,CAACK,OAAO,CAACC,GAAG,CAAE,iBAAkB,CACzC;MACD,CAAC;IACF,CAAC,MAAM;MACNgB,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAM,IAAA3E,iBAAQ,EAAE;QAAEH;MAAK,CAAE,CAAE,CAAC;MACrDuC,IAAI,GAAG;QACNwC,UAAU,EAAEL,OAAO,CAACQ,MAAM;QAC1BD,UAAU,EAAE;MACb,CAAC;IACF;;IAEA;IACA;IACA;IACA,IAAKnF,KAAK,CAAC4C,OAAO,EAAG;MACpBgC,OAAO,GAAGA,OAAO,CAACS,GAAG,CAAIjD,MAAM,IAAM;QACpCpC,KAAK,CAAC4C,OAAO,CAAC0C,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,KAAK,IAAM;UAChD,IAAK,CAAEpD,MAAM,CAACqD,cAAc,CAAED,KAAM,CAAC,EAAG;YACvCpD,MAAM,CAAEoD,KAAK,CAAE,GAAG7C,SAAS;UAC5B;QACD,CAAE,CAAC;QAEH,OAAOP,MAAM;MACd,CAAE,CAAC;IACJ;IAEApB,QAAQ,CAACoD,KAAK,CAAE,MAAM;MACrBnE,QAAQ,CAACoC,oBAAoB,CAC5BzB,IAAI,EACJC,IAAI,EACJ+D,OAAO,EACP5E,KAAK,EACL,KAAK,EACL2C,SAAS,EACTF,IACD,CAAC;;MAED;MACA;MACA;MACA;MACA,IAAK,CAAEzC,KAAK,EAAE4C,OAAO,IAAI,CAAE5C,KAAK,CAAC0F,OAAO,EAAG;QAC1C,MAAM5E,GAAG,GAAGK,YAAY,CAACL,GAAG,IAAIiC,4BAAkB;QAClD,MAAM4C,eAAe,GAAGf,OAAO,CAC7BgB,MAAM,CAAIxD,MAAM,IAAMA,MAAM,GAAItB,GAAG,CAAG,CAAC,CACvCuE,GAAG,CAAIjD,MAAM,IAAM,CAAExB,IAAI,EAAEC,IAAI,EAAEuB,MAAM,CAAEtB,GAAG,CAAE,CAAG,CAAC;QAEpD,MAAM+E,WAAW,GAAGjB,OAAO,CACzBgB,MAAM,CAAIxD,MAAM,IAAMA,MAAM,GAAItB,GAAG,CAAG,CAAC,CACvCuE,GAAG,CAAIjD,MAAM,KAAQ;UACrB8B,EAAE,EAAE9B,MAAM,CAAEtB,GAAG,CAAE;UACjB2C,WAAW,EAAE,IAAAC,wCAAiC,EAC7CtB,MAAM,EAAE0D,MAAM,EAAEC,IAAI,GAAI,CAAC,CAAE,CAACF,WAAW,CAACG,KACzC;QACD,CAAC,CAAG,CAAC;QAEN,MAAMnC,sBAAsB,GAAG,EAAE;QACjC,MAAMC,yBAAyB,GAAG,CAAC,CAAC;QACpC,KAAM,MAAMmC,UAAU,IAAIJ,WAAW,EAAG;UACvC,KAAM,MAAM9B,MAAM,IAAIC,+BAAwB,EAAG;YAChDH,sBAAsB,CAACM,IAAI,CAAE,CAC5BJ,MAAM,EACN;cAAEnD,IAAI;cAAEC,IAAI;cAAEqD,EAAE,EAAE+B,UAAU,CAAC/B;YAAG,CAAC,CAChC,CAAC;YAEHJ,yBAAyB,CACxB,IAAAG,gCAAyB,EAAEF,MAAM,EAAE;cAClCnD,IAAI;cACJC,IAAI;cACJqD,EAAE,EAAE+B,UAAU,CAAC/B;YAChB,CAAE,CAAC,CACH,GAAG+B,UAAU,CAACxC,WAAW,CAAEM,MAAM,CAAE;UACrC;QACD;QAEA9D,QAAQ,CAACoE,sBAAsB,CAC9BP,yBACD,CAAC;QACD7D,QAAQ,CAACqE,iBAAiB,CACzB,iBAAiB,EACjBqB,eACD,CAAC;QACD1F,QAAQ,CAACqE,iBAAiB,CACzB,SAAS,EACTT,sBACD,CAAC;MACF;MAEA5D,QAAQ,CAACsE,0BAA0B,CAAEjD,IAAK,CAAC;IAC5C,CAAE,CAAC;EACJ,CAAC,CAAC,OAAQ4E,CAAC,EAAG;IACbjG,QAAQ,CAACsE,0BAA0B,CAAEjD,IAAK,CAAC;EAC5C;AACD,CAAC;AAACf,OAAA,CAAAoE,gBAAA,GAAAA,gBAAA;AAEHA,gBAAgB,CAACwB,gBAAgB,GAAG,CAAEpC,MAAM,EAAEnD,IAAI,EAAEC,IAAI,KAAM;EAC7D,OACC,CAAEkD,MAAM,CAACzB,IAAI,KAAK,eAAe,IAAIyB,MAAM,CAACzB,IAAI,KAAK,cAAc,KACnEyB,MAAM,CAACqC,eAAe,IACtBxF,IAAI,KAAKmD,MAAM,CAACnD,IAAI,IACpBC,IAAI,KAAKkD,MAAM,CAAClD,IAAI;AAEtB,CAAC;;AAED;AACA;AACA;AACO,MAAMwF,eAAe,GAC3BA,CAAA,KACA,OAAQ;EAAEpG,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,MAAMC,YAAY,GAAG,MAAMD,aAAa,CAAC3B,gBAAgB,CACxD,MAAM,EACN,OAAO,EACP;IAAE6B,MAAM,EAAE;EAAS,CACpB,CAAC;EAEDvG,QAAQ,CAACwG,mBAAmB,CAAEF,YAAY,CAAE,CAAC,CAAG,CAAC;AAClD,CAAC;;AAEF;AACA;AACA;AAFAhG,OAAA,CAAA8F,eAAA,GAAAA,eAAA;AAGO,MAAMK,gBAAgB,GAAAnG,OAAA,CAAAmG,gBAAA,GAAG,IAAAjC,sBAAe,EAAE,iBAAkB,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACO,MAAMkC,eAAe,GACzBC,GAAG,IACL,OAAQ;EAAE3G;AAAS,CAAC,KAAM;EACzB,IAAI;IACH,MAAM4G,kBAAkB,GAAG,MAAM,IAAAxG,iBAAQ,EAAE;MAC1CH,IAAI,EAAE,IAAAC,iBAAY,EAAE,mBAAmB,EAAE;QAAEyG;MAAI,CAAE;IAClD,CAAE,CAAC;IACH3G,QAAQ,CAAC6G,mBAAmB,CAAEF,GAAG,EAAEC,kBAAmB,CAAC;EACxD,CAAC,CAAC,OAAQE,KAAK,EAAG;IACjB;IACA9G,QAAQ,CAAC6G,mBAAmB,CAAEF,GAAG,EAAE,KAAM,CAAC;EAC3C;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATArG,OAAA,CAAAoG,eAAA,GAAAA,eAAA;AAUO,MAAMK,OAAO,GACnBA,CAAEC,eAAe,EAAEC,QAAQ,EAAEhD,EAAE,KAC/B,OAAQ;EAAEjE,QAAQ;EAAEe;AAAS,CAAC,KAAM;EACnC,IAAK,CAAEgD,+BAAwB,CAACmD,QAAQ,CAAEF,eAAgB,CAAC,EAAG;IAC7D,MAAM,IAAIG,KAAK,CAAE,IAAKH,eAAe,0BAA4B,CAAC;EACnE;EAEA,IAAII,YAAY,GAAG,IAAI;EACvB,IAAK,OAAOH,QAAQ,KAAK,QAAQ,EAAG;IACnC,IAAK,CAAEA,QAAQ,CAACtG,IAAI,IAAI,CAAEsG,QAAQ,CAACrG,IAAI,EAAG;MACzC,MAAM,IAAIuG,KAAK,CAAE,0CAA2C,CAAC;IAC9D;IAEA,MAAMnG,OAAO,GAAG,MAAMhB,QAAQ,CAC7B,IAAAiB,iCAAuB,EAAEgG,QAAQ,CAACtG,IAAI,EAAEsG,QAAQ,CAACrG,IAAK,CACvD,CAAC;IACD,MAAMM,YAAY,GAAGF,OAAO,CAACG,IAAI,CAC9BC,MAAM,IACPA,MAAM,CAACR,IAAI,KAAKqG,QAAQ,CAACrG,IAAI,IAC7BQ,MAAM,CAACT,IAAI,KAAKsG,QAAQ,CAACtG,IAC3B,CAAC;IACD,IAAK,CAAEO,YAAY,EAAG;MACrB;IACD;IAEAkG,YAAY,GACXlG,YAAY,CAAC8B,OAAO,IAAKiE,QAAQ,CAAChD,EAAE,GAAG,GAAG,GAAGgD,QAAQ,CAAChD,EAAE,GAAG,EAAE,CAAE;EACjE,CAAC,MAAM;IACNmD,YAAY,GAAG,UAAWH,QAAQ,EAAG,IAAKhD,EAAE,GAAG,GAAG,GAAGA,EAAE,GAAG,EAAE,CAAE;EAC/D;EAEA,MAAM;IAAEoD;EAAqB,CAAC,GAAGtG,QAAQ,CAACD,MAAM,CAAES,gBAAW,CAAC;;EAE9D;EACA,KAAM,MAAM+F,aAAa,IAAIvD,+BAAwB,EAAG;IACvD,IAAKuD,aAAa,KAAKN,eAAe,EAAG;MACxC;IACD;IACA,MAAMO,kBAAkB,GAAGF,oBAAoB,CAAE,SAAS,EAAE,CAC3DC,aAAa,EACbL,QAAQ,EACRhD,EAAE,CACD,CAAC;IACH,IAAKsD,kBAAkB,EAAG;MACzB;IACD;EACD;EAEA,IAAIlE,QAAQ;EACZ,IAAI;IACHA,QAAQ,GAAG,MAAM,IAAAjD,iBAAQ,EAAE;MAC1BH,IAAI,EAAEmH,YAAY;MAClBI,MAAM,EAAE,SAAS;MACjBlE,KAAK,EAAE;IACR,CAAE,CAAC;EACJ,CAAC,CAAC,OAAQwD,KAAK,EAAG;IACjB;IACA;IACA;EACD;;EAEA;EACA;EACA;EACA,MAAMtD,WAAW,GAAG,IAAAC,wCAAiC,EACpDJ,QAAQ,CAACK,OAAO,EAAEC,GAAG,CAAE,OAAQ,CAChC,CAAC;EACD5C,QAAQ,CAACoD,KAAK,CAAE,MAAM;IACrB,KAAM,MAAML,MAAM,IAAIC,+BAAwB,EAAG;MAChD,MAAMlD,GAAG,GAAG,IAAAmD,gCAAyB,EAAEF,MAAM,EAAEmD,QAAQ,EAAEhD,EAAG,CAAC;MAE7DjE,QAAQ,CAACyH,qBAAqB,CAAE5G,GAAG,EAAE2C,WAAW,CAAEM,MAAM,CAAG,CAAC;;MAE5D;MACA,IAAKA,MAAM,KAAKkD,eAAe,EAAG;QACjChH,QAAQ,CAAC0H,gBAAgB,CAAE,SAAS,EAAE,CACrC5D,MAAM,EACNmD,QAAQ,EACRhD,EAAE,CACD,CAAC;MACJ;IACD;EACD,CAAE,CAAC;AACJ,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA3D,OAAA,CAAAyG,OAAA,GAAAA,OAAA;AAQO,MAAMY,uBAAuB,GACnCA,CAAEhH,IAAI,EAAEC,IAAI,EAAE0B,QAAQ,KACtB,OAAQ;EAAEtC;AAAS,CAAC,KAAM;EACzB,MAAMA,QAAQ,CAAE+G,OAAO,CAAE,QAAQ,EAAE;IAAEpG,IAAI;IAAEC,IAAI;IAAEqD,EAAE,EAAE3B;EAAS,CAAE,CAAE,CAAC;AACpE,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AALAhC,OAAA,CAAAqH,uBAAA,GAAAA,uBAAA;AAMO,MAAMC,YAAY,GACxBA,CAAEC,QAAQ,EAAEC,MAAM,KAClB,OAAQ;EAAE9H,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,MAAM;IAAE0B,SAAS,EAAEC,QAAQ;IAAEC,cAAc,EAAEC,aAAa,GAAG;EAAQ,CAAC,GACrE,MAAM7B,aAAa,CAAC8B,WAAW,CAAEN,QAAS,CAAC;EAC5C,MAAMO,SAAS,GAAG,MAAM,IAAAhI,iBAAQ,EAAE;IACjCH,IAAI,EAAE,IAAKiI,aAAa,IAAMF,QAAQ,IAAMF,MAAM;EACnD,CAAE,CAAC;EAEH,IAAKM,SAAS,IAAIA,SAAS,CAACjD,MAAM,EAAG;IACpCnF,QAAQ,CAACqI,gBAAgB,CAAEP,MAAM,EAAEM,SAAU,CAAC;EAC/C;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA9H,OAAA,CAAAsH,YAAA,GAAAA,YAAA;AASO,MAAMU,WAAW,GACvBA,CAAET,QAAQ,EAAEC,MAAM,KAClB,OAAQ;EAAEzB;AAAc,CAAC,KAAM;EAC9B,MAAMA,aAAa,CAACuB,YAAY,CAAEC,QAAQ,EAAEC,MAAO,CAAC;AACrD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AAJAxH,OAAA,CAAAgI,WAAA,GAAAA,WAAA;AAKO,MAAMC,gCAAgC,GAC1CC,IAAI,IACN,OAAQ;EAAExI,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,IAAIoC,QAAQ;EACZ,IAAI;IACH;IACA;IACAA,QAAQ,GAAG,MAAM,IAAArI,iBAAQ,EAAE;MAC1BuG,GAAG,EAAE,IAAAzG,iBAAY,EAAEsI,IAAI,EAAE;QACxB,mBAAmB,EAAE;MACtB,CAAE;IACH,CAAE,CAAC,CAACE,IAAI,CAAE,CAAE;MAAEC;IAAK,CAAC,KAAMA,IAAK,CAAC;EACjC,CAAC,CAAC,OAAQ1C,CAAC,EAAG;IACb;EAAA;EAGD,IAAK,CAAEwC,QAAQ,EAAG;IACjB;EACD;EAEA,MAAMtG,MAAM,GAAG,MAAMkE,aAAa,CAAC3F,eAAe,CACjD,UAAU,EACV,aAAa,EACb+H,QAAQ,CAACxE,EACV,CAAC;EAED,IAAK9B,MAAM,EAAG;IACbnC,QAAQ,CAACoC,oBAAoB,CAC5B,UAAU,EACV,aAAa,EACb,CAAED,MAAM,CAAE,EACV;MACC,eAAe,EAAEqG;IAClB,CACD,CAAC;EACF;AACD,CAAC;AAAClI,OAAA,CAAAiI,gCAAA,GAAAA,gCAAA;AAEHA,gCAAgC,CAACrC,gBAAgB,GAAKpC,MAAM,IAAM;EACjE,OACC,CAAEA,MAAM,CAACzB,IAAI,KAAK,eAAe,IAAIyB,MAAM,CAACzB,IAAI,KAAK,cAAc,KACnEyB,MAAM,CAACqC,eAAe,IACtBrC,MAAM,CAACnD,IAAI,KAAK,UAAU,IAC1BmD,MAAM,CAAClD,IAAI,KAAK,aAAa;AAE/B,CAAC;AAEM,MAAMgI,sCAAsC,GAClDA,CAAA,KACA,OAAQ;EAAE5I,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,MAAMC,YAAY,GAAG,MAAMD,aAAa,CAAC3B,gBAAgB,CACxD,MAAM,EACN,OAAO,EACP;IAAE6B,MAAM,EAAE;EAAS,CACpB,CAAC;EACD,MAAMsC,eAAe,GACpBvC,YAAY,GAAI,CAAC,CAAE,EAAET,MAAM,GAAI,uBAAuB,CAAE,GAAI,CAAC,CAAE,EAC5DiD,IAAI;EACR,IAAK,CAAED,eAAe,EAAG;IACxB;EACD;;EAEA;EACA;EACA,MAAME,OAAO,GAAGF,eAAe,CAACG,KAAK,CAAE,iBAAkB,CAAC;EAC1D,MAAM/E,EAAE,GAAG8E,OAAO,GAAGE,MAAM,CAAEF,OAAO,CAAE,CAAC,CAAG,CAAC,GAAG,IAAI;EAElD,IAAK9E,EAAE,EAAG;IACTjE,QAAQ,CAACkJ,0CAA0C,CAAEjF,EAAG,CAAC;EAC1D;AACD,CAAC;AAAC3D,OAAA,CAAAsI,sCAAA,GAAAA,sCAAA;AAEI,MAAMO,6CAA6C,GACzDA,CAAA,KACA,OAAQ;EAAE9C,aAAa;EAAErG;AAAS,CAAC,KAAM;EACxC,MAAMoJ,YAAY,GAAG,MAAM/C,aAAa,CAACD,eAAe,CAAC,CAAC;EAC1D,MAAMiD,iBAAiB,GAAG,MAAM,IAAAjJ,iBAAQ,EAAE;IACzCH,IAAI,EAAE,+BAAgCmJ,YAAY,CAACE,UAAU;EAC9D,CAAE,CAAC;EACHtJ,QAAQ,CAACuJ,0CAA0C,CAClDH,YAAY,CAACE,UAAU,EACvBD,iBACD,CAAC;AACF,CAAC;AAAC/I,OAAA,CAAA6I,6CAAA,GAAAA,6CAAA;AAEI,MAAMK,mDAAmD,GAC/DA,CAAA,KACA,OAAQ;EAAEnD,aAAa;EAAErG;AAAS,CAAC,KAAM;EACxC,MAAMoJ,YAAY,GAAG,MAAM/C,aAAa,CAACD,eAAe,CAAC,CAAC;EAC1D,MAAMqD,UAAU,GAAG,MAAM,IAAArJ,iBAAQ,EAAE;IAClCH,IAAI,EAAE,+BAAgCmJ,YAAY,CAACE,UAAU;EAC9D,CAAE,CAAC;EACHtJ,QAAQ,CAAC0J,+CAA+C,CACvDN,YAAY,CAACE,UAAU,EACvBG,UACD,CAAC;AACF,CAAC;;AAEF;AACA;AACA;AAFAnJ,OAAA,CAAAkJ,mDAAA,GAAAA,mDAAA;AAGO,MAAMG,oCAAoC,GAChDA,CAAA,KACA,OAAQ;EAAEtD,aAAa;EAAErG;AAAS,CAAC,KAAM;EACxC,MAAM4J,cAAc,GACnB,MAAMvD,aAAa,CAACuC,sCAAsC,CAAC,CAAC;EAC7D,MAAMzG,MAAM,GAAGyH,cAAc,GAC1B,MAAMvD,aAAa,CAAC3F,eAAe,CACnC,MAAM,EACN,cAAc,EACdkJ,cACA,CAAC,GACDlH,SAAS;EACZ,MAAMmH,YAAY,GAAG1H,MAAM,EAAE0D,MAAM,GAAI,iBAAiB,CAAE,GAAI,CAAC,CAAE,EAAEiD,IAAI;EAEvE,IAAKe,YAAY,EAAG;IACnB,MAAMC,cAAc,GAAG,MAAM,IAAA1J,iBAAQ,EAAE;MACtCuG,GAAG,EAAEkD;IACN,CAAE,CAAC;IACH,MAAME,SAAS,GAAGD,cAAc,EAAE1E,GAAG,CAAI4E,QAAQ,IAChDlF,MAAM,CAACmF,WAAW,CACjBnF,MAAM,CAACoF,OAAO,CAAEF,QAAS,CAAC,CAAC5E,GAAG,CAAE,CAAE,CAAEvE,GAAG,EAAEsJ,KAAK,CAAE,KAAM,CACrD,IAAAC,qBAAS,EAAEvJ,GAAI,CAAC,EAChBsJ,KAAK,CACJ,CACH,CACD,CAAC;IACDnK,QAAQ,CAACqK,gCAAgC,CACxCT,cAAc,EACdG,SACD,CAAC;EACF;AACD,CAAC;AAACzJ,OAAA,CAAAqJ,oCAAA,GAAAA,oCAAA;AAEHA,oCAAoC,CAACzD,gBAAgB,GAAKpC,MAAM,IAAM;EACrE,OACCA,MAAM,CAACzB,IAAI,KAAK,2BAA2B,IAC3CyB,MAAM,CAACnD,IAAI,KAAK,MAAM,IACtB,CAAEmD,MAAM,CAACgD,KAAK,IACdhD,MAAM,CAAClD,IAAI,KAAK,cAAc;AAEhC,CAAC;AAEM,MAAM0J,gBAAgB,GAC5BA,CAAA,KACA,OAAQ;EAAEtK;AAAS,CAAC,KAAM;EACzB,MAAMuK,QAAQ,GAAG,MAAM,IAAAC,yBAAkB,EAAC,CAAC;EAC3CxK,QAAQ,CAAE;IAAEqC,IAAI,EAAE,wBAAwB;IAAEkI;EAAS,CAAE,CAAC;AACzD,CAAC;AAACjK,OAAA,CAAAgK,gBAAA,GAAAA,gBAAA;AAEI,MAAMG,yBAAyB,GACrCA,CAAA,KACA,OAAQ;EAAEzK;AAAS,CAAC,KAAM;EACzB,MAAM0K,UAAU,GAAG,MAAM,IAAAtK,iBAAQ,EAAE;IAClCH,IAAI,EAAE;EACP,CAAE,CAAC;EACHD,QAAQ,CAAE;IAAEqC,IAAI,EAAE,kCAAkC;IAAEqI;EAAW,CAAE,CAAC;AACrE,CAAC;AAACpK,OAAA,CAAAmK,yBAAA,GAAAA,yBAAA;AAEI,MAAME,wBAAwB,GACpCA,CAAA,KACA,OAAQ;EAAE3K,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,MAAMuE,iBAAiB,GAAG,MAAMvE,aAAa,CAAC3B,gBAAgB,CAC7D,UAAU,EACV,qBAAqB,EACrB;IACCG,QAAQ,EAAE,CAAC,CAAC;IACZlC,OAAO,EAAE,0BAA0B;IACnC8C,OAAO,EAAE;EACV,CACD,CAAC;EAED,MAAMoF,uBAAuB,GAC5BD,iBAAiB,EAAExF,GAAG,CAAI0F,YAAY,KAAQ;IAC7C,GAAGA,YAAY;IACfC,KAAK,EAAE,IAAAC,4BAAc,EAAEF,YAAY,CAAClK,IAAK,CAAC;IAC1CA,IAAI,EAAEkK,YAAY,CAACG;EACpB,CAAC,CAAG,CAAC,IAAI,EAAE;EAEZjL,QAAQ,CAAE;IACTqC,IAAI,EAAE,iCAAiC;IACvCuI,iBAAiB,EAAEC;EACpB,CAAE,CAAC;AACJ,CAAC;AAACvK,OAAA,CAAAqK,wBAAA,GAAAA,wBAAA;AAEI,MAAMO,uBAAuB,GACnCA,CAAA,KACA,OAAQ;EAAElL,QAAQ;EAAEc,MAAM;EAAEC;AAAS,CAAC,KAAM;EAC3C,MAAMoK,QAAQ,GAAG,MAAM,IAAA/K,iBAAQ,EAAE;IAChCH,IAAI,EAAE,IAAAC,iBAAY,EAAE,yCAAyC,EAAE;MAC9DkL,MAAM,EAAE;IACT,CAAE;EACH,CAAE,CAAC;EAEH,MAAMjJ,MAAM,GAAGgJ,QAAQ,EAAEE,SAAS,EAAEvF,IAAI;EAExC/E,QAAQ,CAACoD,KAAK,CAAE,MAAM;IACrBnE,QAAQ,CAACsL,2BAA2B,CAAEH,QAAQ,EAAElH,EAAG,CAAC;IAEpD,IAAK,CAAE9B,MAAM,EAAG;MACf;IACD;;IAEA;IACA;IACA;IACA,MAAMoJ,4BAA4B,GAAGzK,MAAM,CAACJ,eAAe,CAC1D,UAAU,EACV,eAAe,EACfyK,QAAQ,CAAClH,EACV,CAAC;IACD,MAAMuH,2BAA2B,GAAG,CAAED,4BAA4B;IAClEvL,QAAQ,CAACoC,oBAAoB,CAC5B,UAAU,EACV,eAAe,EACfD,MAAM,EACNO,SAAS,EACT8I,2BACD,CAAC;;IAED;IACAxL,QAAQ,CAAC0H,gBAAgB,CAAE,iBAAiB,EAAE,CAC7C,UAAU,EACV,eAAe,EACfyD,QAAQ,CAAClH,EAAE,CACV,CAAC;EACJ,CAAE,CAAC;AACJ,CAAC;AAAC3D,OAAA,CAAA4K,uBAAA,GAAAA,uBAAA;AAEI,MAAMO,oBAAoB,GAC9B1L,KAAK,IACP,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMyI,QAAQ,GAAG,MAAM,IAAArI,iBAAQ,EAAE;IAChCH,IAAI,EAAE,IAAAC,iBAAY,EAAE,yBAAyB,EAAEH,KAAM;EACtD,CAAE,CAAC;EACH;EACA,IAAK0I,QAAQ,EAAExE,EAAE,EAAG;IACnBjE,QAAQ,CAAC0L,wBAAwB,CAAE3L,KAAK,EAAE0I,QAAQ,CAACxE,EAAG,CAAC;EACxD;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA3D,OAAA,CAAAmL,oBAAA,GAAAA,oBAAA;AAUO,MAAME,YAAY,GACxBA,CAAEhL,IAAI,EAAEC,IAAI,EAAEgL,SAAS,EAAE7L,KAAK,GAAG,CAAC,CAAC,KACnC,OAAQ;EAAEC,QAAQ;EAAEe;AAAS,CAAC,KAAM;EACnC,MAAMC,OAAO,GAAG,MAAMhB,QAAQ,CAAE,IAAAiB,iCAAuB,EAAEN,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMM,YAAY,GAAGF,OAAO,CAACG,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACR,IAAI,KAAKA,IAAI,IAAIQ,MAAM,CAACT,IAAI,KAAKA,IACvD,CAAC;EAED,IAAK,CAAEO,YAAY,EAAG;IACrB;EACD;EAEA,IAAKnB,KAAK,CAAC4C,OAAO,EAAG;IACpB;IACA;IACA;IACA5C,KAAK,GAAG;MACP,GAAGA,KAAK;MACR4C,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK,IAAAC,kCAA2B,EAAE9C,KAAK,CAAC4C,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLzB,YAAY,CAAC2K,WAAW,IAAI/I,4BAAkB,CAC7C,CAAC,CACH,CAACC,IAAI,CAAC;IACR,CAAC;EACF;EAEA,MAAM9C,IAAI,GAAG,IAAAC,iBAAY,EACxBgB,YAAY,CAAC4K,eAAe,CAAEF,SAAU,CAAC,EACzC7L,KACD,CAAC;EAED,IAAI4E,OAAO,EAAEtB,QAAQ;EACrB,MAAMb,IAAI,GAAG,CAAC,CAAC;EACf,MAAMuJ,WAAW,GAChB7K,YAAY,CAAC0D,kBAAkB,IAAI7E,KAAK,CAAC8E,QAAQ,KAAK,CAAC,CAAC;EACzD,IAAI;IACHxB,QAAQ,GAAG,MAAM,IAAAjD,iBAAQ,EAAE;MAAEH,IAAI;MAAEqD,KAAK,EAAE,CAAEyI;IAAY,CAAE,CAAC;EAC5D,CAAC,CAAC,OAAQjF,KAAK,EAAG;IACjB;IACA;EACD;EAEA,IAAKzD,QAAQ,EAAG;IACf,IAAK0I,WAAW,EAAG;MAClBpH,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE,MAAM1B,QAAQ,CAACE,IAAI,CAAC,CAAE,CAAC;MAChDf,IAAI,CAACwC,UAAU,GAAGC,QAAQ,CACzB5B,QAAQ,CAACK,OAAO,CAACC,GAAG,CAAE,YAAa,CACpC,CAAC;IACF,CAAC,MAAM;MACNgB,OAAO,GAAGG,MAAM,CAACC,MAAM,CAAE1B,QAAS,CAAC;IACpC;;IAEA;IACA;IACA;IACA,IAAKtD,KAAK,CAAC4C,OAAO,EAAG;MACpBgC,OAAO,GAAGA,OAAO,CAACS,GAAG,CAAIjD,MAAM,IAAM;QACpCpC,KAAK,CAAC4C,OAAO,CAAC0C,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,KAAK,IAAM;UAChD,IAAK,CAAEpD,MAAM,CAACqD,cAAc,CAAED,KAAM,CAAC,EAAG;YACvCpD,MAAM,CAAEoD,KAAK,CAAE,GAAG7C,SAAS;UAC5B;QACD,CAAE,CAAC;QAEH,OAAOP,MAAM;MACd,CAAE,CAAC;IACJ;IAEApB,QAAQ,CAACoD,KAAK,CAAE,MAAM;MACrBnE,QAAQ,CAACgM,gBAAgB,CACxBrL,IAAI,EACJC,IAAI,EACJgL,SAAS,EACTjH,OAAO,EACP5E,KAAK,EACL,KAAK,EACLyC,IACD,CAAC;;MAED;MACA;MACA,IAAK,CAAEzC,KAAK,EAAE4C,OAAO,IAAI,CAAE5C,KAAK,CAAC0F,OAAO,EAAG;QAC1C,MAAM5E,GAAG,GAAGK,YAAY,CAACL,GAAG,IAAIiC,4BAAkB;QAClD,MAAM4C,eAAe,GAAGf,OAAO,CAC7BgB,MAAM,CAAIxD,MAAM,IAAMA,MAAM,CAAEtB,GAAG,CAAG,CAAC,CACrCuE,GAAG,CAAIjD,MAAM,IAAM,CACnBxB,IAAI,EACJC,IAAI,EACJgL,SAAS,EACTzJ,MAAM,CAAEtB,GAAG,CAAE,CACZ,CAAC;QAEJb,QAAQ,CAACqE,iBAAiB,CACzB,aAAa,EACbqB,eACD,CAAC;MACF;IACD,CAAE,CAAC;EACJ;AACD,CAAC;;AAEF;AAAApF,OAAA,CAAAqL,YAAA,GAAAA,YAAA;AACAA,YAAY,CAACzF,gBAAgB,GAAG,CAAEpC,MAAM,EAAEnD,IAAI,EAAEC,IAAI,EAAEgL,SAAS,KAC9D9H,MAAM,CAACzB,IAAI,KAAK,2BAA2B,IAC3CzB,IAAI,KAAKkD,MAAM,CAAClD,IAAI,IACpBD,IAAI,KAAKmD,MAAM,CAACnD,IAAI,IACpB,CAAEmD,MAAM,CAACgD,KAAK,IACd8E,SAAS,KAAK9H,MAAM,CAACxB,QAAQ;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM2J,WAAW,GACvBA,CAAEtL,IAAI,EAAEC,IAAI,EAAEgL,SAAS,EAAEC,WAAW,EAAE9L,KAAK,KAC3C,OAAQ;EAAEC;AAAS,CAAC,KAAM;EACzB,MAAMgB,OAAO,GAAG,MAAMhB,QAAQ,CAAE,IAAAiB,iCAAuB,EAAEN,IAAI,EAAEC,IAAK,CAAE,CAAC;EACvE,MAAMM,YAAY,GAAGF,OAAO,CAACG,IAAI,CAC9BC,MAAM,IAAMA,MAAM,CAACR,IAAI,KAAKA,IAAI,IAAIQ,MAAM,CAACT,IAAI,KAAKA,IACvD,CAAC;EAED,IAAK,CAAEO,YAAY,EAAG;IACrB;EACD;EAEA,IAAKnB,KAAK,KAAK2C,SAAS,IAAI3C,KAAK,CAAC4C,OAAO,EAAG;IAC3C;IACA;IACA;IACA5C,KAAK,GAAG;MACP,GAAGA,KAAK;MACR4C,OAAO,EAAE,CACR,GAAG,IAAIC,GAAG,CAAE,CACX,IAAK,IAAAC,kCAA2B,EAAE9C,KAAK,CAAC4C,OAAQ,CAAC,IAChD,EAAE,CAAE,EACLzB,YAAY,CAAC2K,WAAW,IAAI/I,4BAAkB,CAC7C,CAAC,CACH,CAACC,IAAI,CAAC;IACR,CAAC;EACF;EACA,MAAM9C,IAAI,GAAG,IAAAC,iBAAY,EACxBgB,YAAY,CAAC4K,eAAe,CAAEF,SAAS,EAAEC,WAAY,CAAC,EACtD9L,KACD,CAAC;EAED,IAAIoC,MAAM;EACV,IAAI;IACHA,MAAM,GAAG,MAAM,IAAA/B,iBAAQ,EAAE;MAAEH;IAAK,CAAE,CAAC;EACpC,CAAC,CAAC,OAAQ6G,KAAK,EAAG;IACjB;IACA;EACD;EAEA,IAAK3E,MAAM,EAAG;IACbnC,QAAQ,CAACgM,gBAAgB,CAAErL,IAAI,EAAEC,IAAI,EAAEgL,SAAS,EAAEzJ,MAAM,EAAEpC,KAAM,CAAC;EAClE;AACD,CAAC;;AAEF;AACA;AACA;AACA;AACA;AAJAO,OAAA,CAAA2L,WAAA,GAAAA,WAAA;AAKO,MAAMC,qBAAqB,GAC/BrE,QAAQ,IACV,OAAQ;EAAE7H,QAAQ;EAAEqG;AAAc,CAAC,KAAM;EACxC,IAAI8F,OAAO;EACX,IAAI;IACH,MAAM;MACLlE,cAAc,EAAEC,aAAa,GAAG,OAAO;MACvCH,SAAS,EAAEC;IACZ,CAAC,GAAG,CAAE,MAAM3B,aAAa,CAAC8B,WAAW,CAAEN,QAAS,CAAC,KAAM,CAAC,CAAC;IACzDsE,OAAO,GAAG,MAAM,IAAA/L,iBAAQ,EAAE;MACzBH,IAAI,EAAE,GAAIiI,aAAa,IAAMF,QAAQ,gBAAiB;MACtDR,MAAM,EAAE;IACT,CAAE,CAAC;EACJ,CAAC,CAAC,OAAQV,KAAK,EAAG;IACjB;IACA;EACD;EAEA,IAAKqF,OAAO,EAAG;IACdnM,QAAQ,CAACoM,yBAAyB,CACjCvE,QAAQ,EACRsE,OAAO,EAAEE,MAAM,EAAEC,UAAU,EAAE9J,IAAI,EAAE8J,UACpC,CAAC;EACF;AACD,CAAC;AAAChM,OAAA,CAAA4L,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_changeCase","require","_url","_htmlEntities","_apiFetch","_interopRequireDefault","_name","_entities","_utils","_sync","_fetch","getAuthors","query","dispatch","path","addQueryArgs","users","apiFetch","receiveUserQuery","exports","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","registry","resolveSelect","configs","getEntitiesConfig","entityConfig","find","config","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","window","__experimentalEnableSync","syncConfig","globalThis","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","getSyncProvider","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","getNormalizedCommaSeparable","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","response","parse","json","permissions","getUserPermissionsFromAllowHeader","headers","get","canUserResolutionsArgs","receiveUserPermissionArgs","action","ALLOWED_RESOURCE_ACTIONS","getUserPermissionCacheKey","id","push","batch","receiveUserPermissions","finishResolutions","__unstableReleaseStoreLock","getRawEntityRecord","forwardResolver","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","Object","values","totalItems","parseInt","totalPages","length","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","targetHints","_links","self","allow","targetHint","e","shouldInvalidate","invalidateCache","getCurrentTheme","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","includes","Error","hasStartedResolution","relatedAction","isAlreadyResolving","resourcePath","method","receiveUserPermission","finishResolution","canUserEditEntityRecord","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","__experimentalGetCurrentGlobalStylesId","globalStylesURL","href","matches","match","Number","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","entries","value","camelCase","receiveThemeGlobalStyleRevisions","getBlockPatterns","patterns","fetchBlockPatterns","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","decodeEntities","slug","getNavigationFallbackId","fallback","_embed","_embedded","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","revisionKey","getRevisionsUrl","isPaginated","receiveRevisions","getRevision","getRegisteredPostMeta","options","receiveRegisteredPostMeta","schema","properties","loader","additionalEntityConfigLoaders","l","loadEntities","addEntities"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { additionalEntityConfigLoaders, DEFAULT_ENTITY_KEY } from './entities';\nimport {\n\tforwardResolver,\n\tgetNormalizedCommaSeparable,\n\tgetUserPermissionCacheKey,\n\tgetUserPermissionsFromAllowHeader,\n\tALLOWED_RESOURCE_ACTIONS,\n} from './utils';\nimport { getSyncProvider } from './sync';\nimport { fetchBlockPatterns } from './fetch';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch, registry, resolveSelect } ) => {\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\tconst record = await response.json();\n\t\t\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\t\t\tresponse.headers?.get( 'allow' )\n\t\t\t\t);\n\n\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tid: key,\n\t\t\t\t\t\t} )\n\t\t\t\t\t] = permissions[ action ];\n\n\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\t{ kind, name, id: key },\n\t\t\t\t\t] );\n\t\t\t\t}\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch, registry, resolveSelect } ) => {\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records, meta;\n\t\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t\t),\n\t\t\t\t\ttotalPages: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-TotalPages' )\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: records.length,\n\t\t\t\t\ttotalPages: 1,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fulfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tundefined,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to resolve\n\t\t\t\t// the `getEntityRecord` and `canUser` selectors in addition to `getEntityRecords`.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/64504\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\t\tconst targetHints = records\n\t\t\t\t\t\t.filter( ( record ) => record?.[ key ] )\n\t\t\t\t\t\t.map( ( record ) => ( {\n\t\t\t\t\t\t\tid: record[ key ],\n\t\t\t\t\t\t\tpermissions: getUserPermissionsFromAllowHeader(\n\t\t\t\t\t\t\t\trecord?._links?.self?.[ 0 ].targetHints.allow\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t} ) );\n\n\t\t\t\t\tconst canUserResolutionsArgs = [];\n\t\t\t\t\tconst receiveUserPermissionArgs = {};\n\t\t\t\t\tfor ( const targetHint of targetHints ) {\n\t\t\t\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\t\t\t\tcanUserResolutionsArgs.push( [\n\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t{ kind, name, id: targetHint.id },\n\t\t\t\t\t\t\t] );\n\n\t\t\t\t\t\t\treceiveUserPermissionArgs[\n\t\t\t\t\t\t\t\tgetUserPermissionCacheKey( action, {\n\t\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\t\tid: targetHint.id,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t] = targetHint.permissions[ action ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch.receiveUserPermissions(\n\t\t\t\t\t\treceiveUserPermissionArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getEntityRecord',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'canUser',\n\t\t\t\t\t\tcanUserResolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t\t} );\n\t\t} catch ( e ) {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string|Object} resource Entity resource to check. Accepts entity object `{ kind: 'root', name: 'media', id: 1 }`\n * or REST base as a string - `media`.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry, resolveSelect } ) => {\n\t\tif ( ! ALLOWED_RESOURCE_ACTIONS.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet resourcePath = null;\n\t\tif ( typeof resource === 'object' ) {\n\t\t\tif ( ! resource.kind || ! resource.name ) {\n\t\t\t\tthrow new Error( 'The entity resource object is not valid.' );\n\t\t\t}\n\n\t\t\tconst configs = await resolveSelect.getEntitiesConfig(\n\t\t\t\tresource.kind\n\t\t\t);\n\t\t\tconst entityConfig = configs.find(\n\t\t\t\t( config ) =>\n\t\t\t\t\tconfig.name === resource.name &&\n\t\t\t\t\tconfig.kind === resource.kind\n\t\t\t);\n\t\t\tif ( ! entityConfig ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresourcePath =\n\t\t\t\tentityConfig.baseURL + ( resource.id ? '/' + resource.id : '' );\n\t\t} else {\n\t\t\tresourcePath = `/wp/v2/${ resource }` + ( id ? '/' + id : '' );\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: resourcePath,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the React native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst permissions = getUserPermissionsFromAllowHeader(\n\t\t\tresponse.headers?.get( 'allow' )\n\t\t);\n\t\tregistry.batch( () => {\n\t\t\tfor ( const action of ALLOWED_RESOURCE_ACTIONS ) {\n\t\t\t\tconst key = getUserPermissionCacheKey( action, resource, id );\n\n\t\t\t\tdispatch.receiveUserPermission( key, permissions[ action ] );\n\n\t\t\t\t// Mark related action resolutions as finished.\n\t\t\t\tif ( action !== requestedAction ) {\n\t\t\t\t\tdispatch.finishResolution( 'canUser', [\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tresource,\n\t\t\t\t\t\tid,\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tawait dispatch( canUser( 'update', { kind, name, id: recordId } ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( ! globalStylesURL ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Regex matches the ID at the end of a URL or immediately before\n\t\t// the query string.\n\t\tconst matches = globalStylesURL.match( /\\/(\\d+)(?:\\?|$)/ );\n\t\tconst id = matches ? Number( matches[ 1 ] ) : null;\n\n\t\tif ( id ) {\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId( id );\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\t// Please adjust the preloaded requests if this changes!\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }?context=view`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\t// Please adjust the preloaded requests if this changes!\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations?context=view`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst patterns = await fetchBlockPatterns();\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t\tcontext: 'view',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: decodeEntities( userCategory.name ),\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch, select, registry } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tregistry.batch( () => {\n\t\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\t\tif ( ! record ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the fallback is already in the store, don't invalidate navigation queries.\n\t\t\t// Otherwise, invalidate the cache for the scenario where there were no Navigation\n\t\t\t// posts in the state and the fallback created one.\n\t\t\tconst existingFallbackEntityRecord = select.getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback.id\n\t\t\t);\n\t\t\tconst invalidateNavigationQueries = ! existingFallbackEntityRecord;\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback.id,\n\t\t\t] );\n\t\t} );\n\t};\n\nexport const getDefaultTemplateId =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst template = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', query ),\n\t\t} );\n\t\t// Endpoint may return an empty object if no template is found.\n\t\tif ( template?.id ) {\n\t\t\tdispatch.receiveDefaultTemplateId( query, template.id );\n\t\t}\n\t};\n\n/**\n * Requests an entity's revisions from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getRevisions =\n\t( kind, name, recordKey, query = {} ) =>\n\tasync ( { dispatch, registry, resolveSelect } ) => {\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet records, response;\n\t\tconst meta = {};\n\t\tconst isPaginated =\n\t\t\tentityConfig.supportsPagination && query.per_page !== -1;\n\t\ttry {\n\t\t\tresponse = await apiFetch( { path, parse: ! isPaginated } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( response ) {\n\t\t\tif ( isPaginated ) {\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta.totalItems = parseInt(\n\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\trecords = Object.values( response );\n\t\t\t}\n\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fulfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tdispatch.receiveRevisions(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\trecordKey,\n\t\t\t\t\trecords,\n\t\t\t\t\tquery,\n\t\t\t\t\tfalse,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\n\t\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t\t.map( ( record ) => [\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\trecordKey,\n\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t] );\n\n\t\t\t\t\tdispatch.finishResolutions(\n\t\t\t\t\t\t'getRevision',\n\t\t\t\t\t\tresolutionsArgs\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\n// Invalidate cache when a new revision is created.\ngetRevisions.shouldInvalidate = ( action, kind, name, recordKey ) =>\n\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\tname === action.name &&\n\tkind === action.kind &&\n\t! action.error &&\n\trecordKey === action.recordId;\n\n/**\n * Requests a specific Entity revision from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} recordKey The key of the entity record whose revisions you want to fetch.\n * @param {number|string} revisionKey The revision's key.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getRevision =\n\t( kind, name, recordKey, revisionKey, query ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst configs = await resolveSelect.getEntitiesConfig( kind );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: [\n\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\tentityConfig.revisionKey || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t] ),\n\t\t\t\t].join(),\n\t\t\t};\n\t\t}\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.getRevisionsUrl( recordKey, revisionKey ),\n\t\t\tquery\n\t\t);\n\n\t\tlet record;\n\t\ttry {\n\t\t\trecord = await apiFetch( { path } );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveRevisions( kind, name, recordKey, record, query );\n\t\t}\n\t};\n\n/**\n * Requests a specific post type options from the REST API.\n *\n * @param {string} postType Post type slug.\n */\nexport const getRegisteredPostMeta =\n\t( postType ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet options;\n\t\ttry {\n\t\t\tconst {\n\t\t\t\trest_namespace: restNamespace = 'wp/v2',\n\t\t\t\trest_base: restBase,\n\t\t\t} = ( await resolveSelect.getPostType( postType ) ) || {};\n\t\t\toptions = await apiFetch( {\n\t\t\t\tpath: `${ restNamespace }/${ restBase }/?context=edit`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if the request comes back with an API error.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( options ) {\n\t\t\tdispatch.receiveRegisteredPostMeta(\n\t\t\t\tpostType,\n\t\t\t\toptions?.schema?.properties?.meta?.properties\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Requests entity configs for the given kind from the REST API.\n *\n * @param {string} kind Entity kind.\n */\nexport const getEntitiesConfig =\n\t( kind ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst loader = additionalEntityConfigLoaders.find(\n\t\t\t( l ) => l.kind === kind\n\t\t);\n\n\t\tif ( ! loader ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst configs = await loader.loadEntities();\n\t\t\tif ( ! configs.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.addEntities( configs );\n\t\t} catch {\n\t\t\t// Do nothing if the request comes back with an API error.\n\t\t}\n\t};\n"],"mappings":"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","ignoreList":[]}
|
package/build-module/actions.js
CHANGED
|
@@ -16,7 +16,7 @@ import deprecated from '@wordpress/deprecated';
|
|
|
16
16
|
*/
|
|
17
17
|
import { getNestedValue, setNestedValue } from './utils';
|
|
18
18
|
import { receiveItems, removeItems, receiveQueriedItems } from './queried-data';
|
|
19
|
-
import {
|
|
19
|
+
import { DEFAULT_ENTITY_KEY } from './entities';
|
|
20
20
|
import { createBatch } from './batch';
|
|
21
21
|
import { STORE_NAME } from './name';
|
|
22
22
|
import { getSyncProvider } from './sync';
|
|
@@ -258,9 +258,10 @@ export const deleteEntityRecord = (kind, name, recordId, query, {
|
|
|
258
258
|
__unstableFetch = apiFetch,
|
|
259
259
|
throwOnError = false
|
|
260
260
|
} = {}) => async ({
|
|
261
|
-
dispatch
|
|
261
|
+
dispatch,
|
|
262
|
+
resolveSelect
|
|
262
263
|
}) => {
|
|
263
|
-
const configs = await
|
|
264
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
264
265
|
const entityConfig = configs.find(config => config.kind === kind && config.name === name);
|
|
265
266
|
let error;
|
|
266
267
|
let deletedRecord = false;
|
|
@@ -450,7 +451,7 @@ export const saveEntityRecord = (kind, name, record, {
|
|
|
450
451
|
resolveSelect,
|
|
451
452
|
dispatch
|
|
452
453
|
}) => {
|
|
453
|
-
const configs = await
|
|
454
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
454
455
|
const entityConfig = configs.find(config => config.kind === kind && config.name === name);
|
|
455
456
|
if (!entityConfig) {
|
|
456
457
|
return;
|
|
@@ -646,12 +647,13 @@ export const __experimentalBatch = requests => async ({
|
|
|
646
647
|
*/
|
|
647
648
|
export const saveEditedEntityRecord = (kind, name, recordId, options) => async ({
|
|
648
649
|
select,
|
|
649
|
-
dispatch
|
|
650
|
+
dispatch,
|
|
651
|
+
resolveSelect
|
|
650
652
|
}) => {
|
|
651
653
|
if (!select.hasEditsForEntityRecord(kind, name, recordId)) {
|
|
652
654
|
return;
|
|
653
655
|
}
|
|
654
|
-
const configs = await
|
|
656
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
655
657
|
const entityConfig = configs.find(config => config.kind === kind && config.name === name);
|
|
656
658
|
if (!entityConfig) {
|
|
657
659
|
return;
|
|
@@ -676,7 +678,8 @@ export const saveEditedEntityRecord = (kind, name, recordId, options) => async (
|
|
|
676
678
|
*/
|
|
677
679
|
export const __experimentalSaveSpecifiedEntityEdits = (kind, name, recordId, itemsToSave, options) => async ({
|
|
678
680
|
select,
|
|
679
|
-
dispatch
|
|
681
|
+
dispatch,
|
|
682
|
+
resolveSelect
|
|
680
683
|
}) => {
|
|
681
684
|
if (!select.hasEditsForEntityRecord(kind, name, recordId)) {
|
|
682
685
|
return;
|
|
@@ -686,7 +689,7 @@ export const __experimentalSaveSpecifiedEntityEdits = (kind, name, recordId, ite
|
|
|
686
689
|
for (const item of itemsToSave) {
|
|
687
690
|
setNestedValue(editsToSave, item, getNestedValue(edits, item));
|
|
688
691
|
}
|
|
689
|
-
const configs = await
|
|
692
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
690
693
|
const entityConfig = configs.find(config => config.kind === kind && config.name === name);
|
|
691
694
|
const entityIdKey = entityConfig?.key || DEFAULT_ENTITY_KEY;
|
|
692
695
|
|
|
@@ -821,9 +824,10 @@ export function receiveDefaultTemplateId(query, templateId) {
|
|
|
821
824
|
* @param {?Object} meta Meta information about pagination.
|
|
822
825
|
*/
|
|
823
826
|
export const receiveRevisions = (kind, name, recordKey, records, query, invalidateCache = false, meta) => async ({
|
|
824
|
-
dispatch
|
|
827
|
+
dispatch,
|
|
828
|
+
resolveSelect
|
|
825
829
|
}) => {
|
|
826
|
-
const configs = await
|
|
830
|
+
const configs = await resolveSelect.getEntitiesConfig(kind);
|
|
827
831
|
const entityConfig = configs.find(config => config.kind === kind && config.name === name);
|
|
828
832
|
const key = entityConfig && entityConfig?.revisionKey ? entityConfig.revisionKey : DEFAULT_ENTITY_KEY;
|
|
829
833
|
dispatch({
|