@wordpress/core-data 6.24.0 → 6.25.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.
@@ -1 +1 @@
1
- {"version":3,"names":["camelCase","addQueryArgs","decodeEntities","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getSyncProvider","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","window","__experimentalEnableSync","syncConfig","process","env","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","response","parse","Object","values","json","totalItems","parseInt","headers","get","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","method","allowHeader","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","slug","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","finishResolution","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","supports","revisionKey","getRevisionsUrl","receiveRevisions","getRevision"],"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 { forwardResolver, getNormalizedCommaSeparable } from './utils';\nimport { getSyncProvider } from './sync';\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 || entityConfig?.__experimentalNoFetch ) {\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 ( process.env.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 ) {\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 record = await apiFetch( { path } );\n\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 || entityConfig?.__experimentalNoFetch ) {\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};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\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\tdispatch.receiveEntityRecords(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tundefined,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\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\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} resource REST resource to check, e.g. 'media' or 'posts'.\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\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\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: `/wp/v2/${ 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 native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\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 {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, 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\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\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 }`,\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`,\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 restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\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 } ) => {\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\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\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\tif ( template ) {\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 (\n\t\t\t! entityConfig ||\n\t\t\tentityConfig?.__experimentalNoFetch ||\n\t\t\t! entityConfig?.supports?.revisions\n\t\t) {\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, meta;\n\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\trecords = Object.values( await response.json() );\n\t\t\tmeta = {\n\t\t\t\ttotalItems: parseInt( response.headers.get( 'X-WP-Total' ) ),\n\t\t\t};\n\t\t} else {\n\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t}\n\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitly set these fields as \"undefined\"\n\t\t// that way we consider the query \"fulfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveRevisions(\n\t\t\tkind,\n\t\t\tname,\n\t\t\trecordKey,\n\t\t\trecords,\n\t\t\tquery,\n\t\t\tfalse,\n\t\t\tmeta\n\t\t);\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, recordKey, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getRevision',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getRevision',\n\t\t\t\targs: resolutionsArgs,\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 ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\n\t\tif (\n\t\t\t! entityConfig ||\n\t\t\tentityConfig?.__experimentalNoFetch ||\n\t\t\t! entityConfig?.supports?.revisions\n\t\t) {\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\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveRevisions( kind, name, recordKey, record, query );\n\t};\n"],"mappings":"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"}
1
+ {"version":3,"names":["camelCase","addQueryArgs","decodeEntities","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getSyncProvider","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","window","__experimentalEnableSync","syncConfig","process","env","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","response","parse","Object","values","json","totalItems","parseInt","headers","get","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","method","allowHeader","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","slug","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","finishResolution","getDefaultTemplateId","receiveDefaultTemplateId","getRevisions","recordKey","revisionKey","getRevisionsUrl","isPaginated","receiveRevisions","getRevision"],"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 { forwardResolver, getNormalizedCommaSeparable } from './utils';\nimport { getSyncProvider } from './sync';\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 || entityConfig?.__experimentalNoFetch ) {\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 ( process.env.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 ) {\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 record = await apiFetch( { path } );\n\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 || entityConfig?.__experimentalNoFetch ) {\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};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\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\tdispatch.receiveEntityRecords(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tundefined,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\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\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} resource REST resource to check, e.g. 'media' or 'posts'.\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\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\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: `/wp/v2/${ 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 native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\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 {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, 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\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\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 }`,\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`,\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 restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\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 } ) => {\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\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\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\tif ( template ) {\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 } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( 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 || entityConfig?.__experimentalNoFetch ) {\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\tdispatch.receiveRevisions(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecordKey,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getRevision` selector in addition to `getRevisions`.\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\trecordKey,\n\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getRevision',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getRevision',\n\t\t\t\t\targs: resolutionsArgs,\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 ) );\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 || entityConfig?.__experimentalNoFetch ) {\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"],"mappings":"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"}
@@ -22,7 +22,6 @@ export const rootEntitiesConfig: ({
22
22
  supportsPagination?: undefined;
23
23
  transientEdits?: undefined;
24
24
  getRevisionsUrl?: undefined;
25
- supports?: undefined;
26
25
  } | {
27
26
  label: string;
28
27
  name: string;
@@ -43,7 +42,6 @@ export const rootEntitiesConfig: ({
43
42
  supportsPagination?: undefined;
44
43
  transientEdits?: undefined;
45
44
  getRevisionsUrl?: undefined;
46
- supports?: undefined;
47
45
  } | {
48
46
  label: string;
49
47
  name: string;
@@ -67,7 +65,6 @@ export const rootEntitiesConfig: ({
67
65
  supportsPagination?: undefined;
68
66
  transientEdits?: undefined;
69
67
  getRevisionsUrl?: undefined;
70
- supports?: undefined;
71
68
  } | {
72
69
  name: string;
73
70
  kind: string;
@@ -87,7 +84,6 @@ export const rootEntitiesConfig: ({
87
84
  key?: undefined;
88
85
  transientEdits?: undefined;
89
86
  getRevisionsUrl?: undefined;
90
- supports?: undefined;
91
87
  } | {
92
88
  name: string;
93
89
  kind: string;
@@ -107,7 +103,6 @@ export const rootEntitiesConfig: ({
107
103
  supportsPagination?: undefined;
108
104
  transientEdits?: undefined;
109
105
  getRevisionsUrl?: undefined;
110
- supports?: undefined;
111
106
  } | {
112
107
  name: string;
113
108
  kind: string;
@@ -129,7 +124,6 @@ export const rootEntitiesConfig: ({
129
124
  rawAttributes?: undefined;
130
125
  supportsPagination?: undefined;
131
126
  getRevisionsUrl?: undefined;
132
- supports?: undefined;
133
127
  } | {
134
128
  name: string;
135
129
  kind: string;
@@ -149,7 +143,6 @@ export const rootEntitiesConfig: ({
149
143
  supportsPagination?: undefined;
150
144
  transientEdits?: undefined;
151
145
  getRevisionsUrl?: undefined;
152
- supports?: undefined;
153
146
  } | {
154
147
  name: string;
155
148
  kind: string;
@@ -169,7 +162,6 @@ export const rootEntitiesConfig: ({
169
162
  supportsPagination?: undefined;
170
163
  transientEdits?: undefined;
171
164
  getRevisionsUrl?: undefined;
172
- supports?: undefined;
173
165
  } | {
174
166
  label: string;
175
167
  name: string;
@@ -182,9 +174,6 @@ export const rootEntitiesConfig: ({
182
174
  plural: string;
183
175
  getTitle: (record: any) => any;
184
176
  getRevisionsUrl: (parentId: any, revisionId: any) => string;
185
- supports: {
186
- revisions: boolean;
187
- };
188
177
  supportsPagination: boolean;
189
178
  syncConfig?: undefined;
190
179
  syncObjectType?: undefined;
@@ -211,7 +200,6 @@ export const rootEntitiesConfig: ({
211
200
  supportsPagination?: undefined;
212
201
  transientEdits?: undefined;
213
202
  getRevisionsUrl?: undefined;
214
- supports?: undefined;
215
203
  })[];
216
204
  export const additionalEntityConfigLoaders: {
217
205
  kind: string;
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.js"],"names":[],"mappings":"AAiBA,sCAAuC;AAgBvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8NE;AAEF;;;IAGE;AASK,0EAqBN;AAoHM,oCAPI,MAAM,QACN,MAAM,WACN,MAAM,cACN,OAAO,GAEN,MAAM,CAkBjB;AAkBM,8CAJI,MAAM,eAEO,MAAM,KAAK,cAAc,CAiC/C;AAnLF;;;;GAIG;AACH,sDAmEC"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.js"],"names":[],"mappings":"AAiBA,sCAAuC;AAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2NE;AAEF;;;IAGE;AASK,0EAqBN;AA+GM,oCAPI,MAAM,QACN,MAAM,WACN,MAAM,cACN,OAAO,GAEN,MAAM,CAkBjB;AAkBM,8CAJI,MAAM,eAEO,MAAM,KAAK,cAAc,CAiC/C;AA9KF;;;;GAIG;AACH,sDA8DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-footnotes-order.d.ts","sourceRoot":"","sources":["../../src/footnotes/get-footnotes-order.js"],"names":[],"mappings":"AAmCA,4DAMC"}
1
+ {"version":3,"file":"get-footnotes-order.d.ts","sourceRoot":"","sources":["../../src/footnotes/get-footnotes-order.js"],"names":[],"mappings":"AA4BA,4DAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EAyGC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/footnotes/index.js"],"names":[],"mappings":"AAYA;;EA+GC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,oDAUC;AAED;;;;;;;GAOG;AACH,oDAuBC;AAED;;;;;;;GAOG;AACH,0DAOC;AAED;;;;;;;GAOG;AACH,yDAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,4FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,iGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA+ND;;;;;;;GAOG;AACH,6DAOC;AA+DD;;GAEG;AACH,sKAEC;AAED,uEAQC;AAED;;;;;;;GAOG;AACH,4DAUC;AAED;;;;;;;;GAQG;AACH,8DAUC;AAED;;;;;;;GAOG;AACH,wDAYC;AAED,0EAOC;AAED,mFAOC;AAED,kFAMC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,gGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,0FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA9MM,uDAmDN;;;;;;;;;;;;;;;;;;;;;;;;0BA/ca,OAAO,SAAS,EAAE,WAAW"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.js"],"names":[],"mappings":"AAmBA,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,oDAUC;AAED;;;;;;;GAOG;AACH,oDAuBC;AAED;;;;;;;GAOG;AACH,0DAOC;AAED;;;;;;;GAOG;AACH,yDAOC;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,6CALW,MAAM,GAAC,SAAS,gBAGf,MAAM,GAAC,SAAS,CAS3B;AAED;;;;;;;GAOG;AACH,4FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,iGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAiND;;;;;;;GAOG;AACH,6DAOC;AA+DD;;GAEG;AACH,sKAEC;AAED,uEAQC;AAED;;;;;;;GAOG;AACH,4DAUC;AAED;;;;;;;;GAQG;AACH,8DAUC;AAED;;;;;;;GAOG;AACH,wDAYC;AAED,0EAOC;AAED,mFAOC;AAED,kFAMC;AAED,gFAOC;AAED;;;;;;;GAOG;AACH,gGAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AAED;;;;;;;GAOG;AACH,0FAFY,OAAO,MAAM,EAAE,MAAM,CAAC,CAYjC;AA9MM,uDAmDN;;;;;;;;;;;;;;;;;;;;;;;;0BAjca,OAAO,SAAS,EAAE,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.js"],"names":[],"mappings":"AA0BO,kCAHI,MAAO,SAAS;;oBAYzB;AAKK;;oBAKL;AAYK,sCAPI,MAAM,QACN,MAAM,2CAEN,MAAO,SAAS;;;oBAuHzB;AAEF;;GAEG;AACH,0CAAuE;AAEvE;;GAEG;AACH,6CAA0E;AAUnE,uCALI,MAAM,QACN,MAAM;;oBAwGf;;IAEF,kEAOC;;AAKM;;;oBAUL;AAEF;;GAEG;AACH,wCAAqE;AAO9D,qCAFI,MAAM;;oBAcf;AAWK,yCALI,MAAM,YAEN,MAAM,MACL,MAAM;;;oBAiEhB;AAUK,8CAJI,MAAM,QACN,MAAM,YACN,MAAM;;oBAef;AAQK,uCAHI,MAAM,UACN,MAAM;;;oBAcf;AAWK,sCAHI,MAAM,UACN,MAAM;;oBAMf;AAOK,uDAFI,MAAM;;;oBAsCf;;IAEF,4CAOC;;AAEM;;;oBAmBL;AAEK;;;oBAWL;AAEK;;;oBAWL;AAKK;;;oBA+BL;;IAEF,gDAOC;;AAEM;;oBAeL;AAEK;;oBAOL;AAEK;;;oBAwBL;AAEK;;;oBAsCL;AAEK;;oBASL;AAYK,mCAPI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,UACb,MAAO,SAAS;;oBAgGzB;;IAGF,sFAK8B;;AAavB,kCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,eACb,MAAM,GAAC,MAAM,SACb,MAAO,SAAS;;oBA0CzB"}
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.js"],"names":[],"mappings":"AA0BO,kCAHI,MAAO,SAAS;;oBAYzB;AAKK;;oBAKL;AAYK,sCAPI,MAAM,QACN,MAAM,2CAEN,MAAO,SAAS;;;oBAuHzB;AAEF;;GAEG;AACH,0CAAuE;AAEvE;;GAEG;AACH,6CAA0E;AAUnE,uCALI,MAAM,QACN,MAAM;;oBAwGf;;IAEF,kEAOC;;AAKM;;;oBAUL;AAEF;;GAEG;AACH,wCAAqE;AAO9D,qCAFI,MAAM;;oBAcf;AAWK,yCALI,MAAM,YAEN,MAAM,MACL,MAAM;;;oBAiEhB;AAUK,8CAJI,MAAM,QACN,MAAM,YACN,MAAM;;oBAef;AAQK,uCAHI,MAAM,UACN,MAAM;;;oBAcf;AAWK,sCAHI,MAAM,UACN,MAAM;;oBAMf;AAOK,uDAFI,MAAM;;;oBAsCf;;IAEF,4CAOC;;AAEM;;;oBAmBL;AAEK;;;oBAWL;AAEK;;;oBAWL;AAKK;;;oBA+BL;;IAEF,gDAOC;;AAEM;;oBAeL;AAEK;;oBAOL;AAEK;;;oBAwBL;AAEK;;;oBAsCL;AAEK;;oBASL;AAYK,mCAPI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,UACb,MAAO,SAAS;;oBA4GzB;;IAGF,sFAK8B;;AAavB,kCARI,MAAM,QACN,MAAM,aACN,MAAM,GAAC,MAAM,eACb,MAAM,GAAC,MAAM,SACb,MAAO,SAAS;;oBA+CzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/core-data",
3
- "version": "6.24.0",
3
+ "version": "6.25.0",
4
4
  "description": "Access to and manipulation of core WordPress entities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,21 +31,21 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/api-fetch": "^6.44.0",
35
- "@wordpress/block-editor": "^12.15.0",
36
- "@wordpress/blocks": "^12.24.0",
37
- "@wordpress/compose": "^6.24.0",
38
- "@wordpress/data": "^9.17.0",
39
- "@wordpress/deprecated": "^3.47.0",
40
- "@wordpress/element": "^5.24.0",
41
- "@wordpress/html-entities": "^3.47.0",
42
- "@wordpress/i18n": "^4.47.0",
43
- "@wordpress/is-shallow-equal": "^4.47.0",
44
- "@wordpress/private-apis": "^0.29.0",
45
- "@wordpress/rich-text": "^6.24.0",
46
- "@wordpress/sync": "^0.9.0",
47
- "@wordpress/undo-manager": "^0.7.0",
48
- "@wordpress/url": "^3.48.0",
34
+ "@wordpress/api-fetch": "^6.45.0",
35
+ "@wordpress/block-editor": "^12.16.0",
36
+ "@wordpress/blocks": "^12.25.0",
37
+ "@wordpress/compose": "^6.25.0",
38
+ "@wordpress/data": "^9.18.0",
39
+ "@wordpress/deprecated": "^3.48.0",
40
+ "@wordpress/element": "^5.25.0",
41
+ "@wordpress/html-entities": "^3.48.0",
42
+ "@wordpress/i18n": "^4.48.0",
43
+ "@wordpress/is-shallow-equal": "^4.48.0",
44
+ "@wordpress/private-apis": "^0.30.0",
45
+ "@wordpress/rich-text": "^6.25.0",
46
+ "@wordpress/sync": "^0.10.0",
47
+ "@wordpress/undo-manager": "^0.8.0",
48
+ "@wordpress/url": "^3.49.0",
49
49
  "change-case": "^4.1.2",
50
50
  "equivalent-key-map": "^0.2.2",
51
51
  "fast-deep-equal": "^3.1.3",
@@ -60,5 +60,5 @@
60
60
  "publishConfig": {
61
61
  "access": "public"
62
62
  },
63
- "gitHead": "d98dff8ea96f29cfea045bf964269f46f040d539"
63
+ "gitHead": "fcf61b4beff747222c2c81d09d757ca1a0abd925"
64
64
  }
package/src/entities.js CHANGED
@@ -19,18 +19,6 @@ export const DEFAULT_ENTITY_KEY = 'id';
19
19
 
20
20
  const POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];
21
21
 
22
- // A hardcoded list of post types that support revisions.
23
- // Reflects post types in Core's src/wp-includes/post.php.
24
- // @TODO: Ideally this should be fetched from the `/types` REST API's view context.
25
- const POST_TYPE_ENTITIES_WITH_REVISIONS_SUPPORT = [
26
- 'post',
27
- 'page',
28
- 'wp_block',
29
- 'wp_navigation',
30
- 'wp_template',
31
- 'wp_template_part',
32
- ];
33
-
34
22
  export const rootEntitiesConfig = [
35
23
  {
36
24
  label: __( 'Base' ),
@@ -223,9 +211,6 @@ export const rootEntitiesConfig = [
223
211
  `/wp/v2/global-styles/${ parentId }/revisions${
224
212
  revisionId ? '/' + revisionId : ''
225
213
  }`,
226
- supports: {
227
- revisions: true,
228
- },
229
214
  supportsPagination: true,
230
215
  },
231
216
  {
@@ -315,11 +300,6 @@ async function loadPostTypeEntities() {
315
300
  selection: true,
316
301
  },
317
302
  mergedEdits: { meta: true },
318
- supports: {
319
- revisions: POST_TYPE_ENTITIES_WITH_REVISIONS_SUPPORT.includes(
320
- postType?.slug
321
- ),
322
- },
323
303
  rawAttributes: POST_RAW_ATTRIBUTES,
324
304
  getTitle: ( record ) =>
325
305
  record?.title?.rendered ||
@@ -1,8 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { create } from '@wordpress/rich-text';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -14,18 +9,16 @@ function getBlockFootnotesOrder( block ) {
14
9
  if ( ! cache.has( block ) ) {
15
10
  const order = [];
16
11
  for ( const value of getRichTextValuesCached( block ) ) {
17
- if ( ! value || ! value.includes( 'data-fn' ) ) {
12
+ if ( ! value ) {
18
13
  continue;
19
14
  }
20
15
 
21
16
  // replacements is a sparse array, use forEach to skip empty slots.
22
- create( { html: value } ).replacements.forEach(
23
- ( { type, attributes } ) => {
24
- if ( type === 'core/footnote' ) {
25
- order.push( attributes[ 'data-fn' ] );
26
- }
17
+ value.replacements.forEach( ( { type, attributes } ) => {
18
+ if ( type === 'core/footnote' ) {
19
+ order.push( attributes[ 'data-fn' ] );
27
20
  }
28
- );
21
+ } );
29
22
  }
30
23
  cache.set( block, order );
31
24
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { create, toHTMLString } from '@wordpress/rich-text';
4
+ import { RichTextData, create, toHTMLString } from '@wordpress/rich-text';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -53,15 +53,18 @@ export function updateFootnotesFromMeta( blocks, meta ) {
53
53
  continue;
54
54
  }
55
55
 
56
- if ( typeof value !== 'string' ) {
56
+ // To do, remove support for string values?
57
+ if (
58
+ typeof value !== 'string' &&
59
+ ! ( value instanceof RichTextData )
60
+ ) {
57
61
  continue;
58
62
  }
59
63
 
60
- if ( value.indexOf( 'data-fn' ) === -1 ) {
61
- continue;
62
- }
63
-
64
- const richTextValue = create( { html: value } );
64
+ const richTextValue =
65
+ typeof value === 'string'
66
+ ? RichTextData.fromHTMLString( value )
67
+ : value;
65
68
 
66
69
  richTextValue.replacements.forEach( ( replacement ) => {
67
70
  if ( replacement.type === 'core/footnote' ) {
@@ -78,7 +81,10 @@ export function updateFootnotesFromMeta( blocks, meta ) {
78
81
  }
79
82
  } );
80
83
 
81
- attributes[ key ] = toHTMLString( { value: richTextValue } );
84
+ attributes[ key ] =
85
+ typeof value === 'string'
86
+ ? richTextValue.toHTMLString()
87
+ : richTextValue;
82
88
  }
83
89
 
84
90
  return attributes;
package/src/reducer.js CHANGED
@@ -355,51 +355,37 @@ function entity( entityConfig ) {
355
355
  return state;
356
356
  },
357
357
 
358
- // Add revisions to the state tree if the post type supports it.
359
- ...( entityConfig?.supports?.revisions
360
- ? {
361
- revisions: ( state = {}, action ) => {
362
- // Use the same queriedDataReducer shape for revisions.
363
- if ( action.type === 'RECEIVE_ITEM_REVISIONS' ) {
364
- const recordKey = action.recordKey;
365
- delete action.recordKey;
366
- const newState = queriedDataReducer(
367
- state[ recordKey ],
368
- {
369
- ...action,
370
- type: 'RECEIVE_ITEMS',
371
- }
372
- );
373
- return {
374
- ...state,
375
- [ recordKey ]: newState,
376
- };
377
- }
358
+ revisions: ( state = {}, action ) => {
359
+ // Use the same queriedDataReducer shape for revisions.
360
+ if ( action.type === 'RECEIVE_ITEM_REVISIONS' ) {
361
+ const recordKey = action.recordKey;
362
+ delete action.recordKey;
363
+ const newState = queriedDataReducer( state[ recordKey ], {
364
+ ...action,
365
+ type: 'RECEIVE_ITEMS',
366
+ } );
367
+ return {
368
+ ...state,
369
+ [ recordKey ]: newState,
370
+ };
371
+ }
378
372
 
379
- if ( action.type === 'REMOVE_ITEMS' ) {
380
- return Object.fromEntries(
381
- Object.entries( state ).filter(
382
- ( [ id ] ) =>
383
- ! action.itemIds.some(
384
- ( itemId ) => {
385
- if (
386
- Number.isInteger(
387
- itemId
388
- )
389
- ) {
390
- return itemId === +id;
391
- }
392
- return itemId === id;
393
- }
394
- )
395
- )
396
- );
397
- }
373
+ if ( action.type === 'REMOVE_ITEMS' ) {
374
+ return Object.fromEntries(
375
+ Object.entries( state ).filter(
376
+ ( [ id ] ) =>
377
+ ! action.itemIds.some( ( itemId ) => {
378
+ if ( Number.isInteger( itemId ) ) {
379
+ return itemId === +id;
380
+ }
381
+ return itemId === id;
382
+ } )
383
+ )
384
+ );
385
+ }
398
386
 
399
- return state;
400
- },
401
- }
402
- : {} ),
387
+ return state;
388
+ },
403
389
  } )
404
390
  );
405
391
  }