@wordpress/core-data 6.10.0 → 6.12.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 +4 -0
- package/README.md +4 -0
- package/build/actions.js +252 -276
- package/build/actions.js.map +1 -1
- package/build/batch/create-batch.js +8 -16
- package/build/batch/create-batch.js.map +1 -1
- package/build/batch/default-processor.js +1 -1
- package/build/batch/default-processor.js.map +1 -1
- package/build/entities.js +16 -25
- package/build/entities.js.map +1 -1
- package/build/entity-provider.js +12 -17
- package/build/entity-provider.js.map +1 -1
- package/build/fetch/__experimental-fetch-link-suggestions.js +2 -6
- package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build/fetch/__experimental-fetch-url-data.js +1 -2
- package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build/hooks/use-entity-record.js +7 -11
- package/build/hooks/use-entity-record.js.map +1 -1
- package/build/hooks/use-entity-records.js +3 -5
- package/build/hooks/use-entity-records.js.map +1 -1
- package/build/hooks/use-query-select.js +1 -6
- package/build/hooks/use-query-select.js.map +1 -1
- package/build/index.js +1 -7
- package/build/index.js.map +1 -1
- package/build/locks/actions.js +3 -4
- package/build/locks/actions.js.map +1 -1
- package/build/locks/reducer.js +1 -4
- package/build/locks/reducer.js.map +1 -1
- package/build/locks/selectors.js +3 -4
- package/build/locks/selectors.js.map +1 -1
- package/build/locks/utils.js +3 -5
- package/build/locks/utils.js.map +1 -1
- package/build/private-selectors.js +37 -0
- package/build/private-selectors.js.map +1 -0
- package/build/queried-data/actions.js +2 -5
- package/build/queried-data/actions.js.map +1 -1
- package/build/queried-data/reducer.js +17 -47
- package/build/queried-data/reducer.js.map +1 -1
- package/build/queried-data/selectors.js +4 -11
- package/build/queried-data/selectors.js.map +1 -1
- package/build/reducer.js +167 -194
- package/build/reducer.js.map +1 -1
- package/build/resolvers.js +175 -220
- package/build/resolvers.js.map +1 -1
- package/build/selectors.js +53 -61
- package/build/selectors.js.map +1 -1
- package/build/utils/forward-resolver.js +4 -11
- package/build/utils/forward-resolver.js.map +1 -1
- package/build/utils/on-sub-key.js +1 -3
- package/build/utils/on-sub-key.js.map +1 -1
- package/build-module/actions.js +251 -276
- package/build-module/actions.js.map +1 -1
- package/build-module/batch/create-batch.js +8 -16
- package/build-module/batch/create-batch.js.map +1 -1
- package/build-module/batch/default-processor.js +1 -1
- package/build-module/batch/default-processor.js.map +1 -1
- package/build-module/entities.js +16 -25
- package/build-module/entities.js.map +1 -1
- package/build-module/entity-provider.js +12 -17
- package/build-module/entity-provider.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-link-suggestions.js +2 -6
- package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
- package/build-module/fetch/__experimental-fetch-url-data.js +1 -2
- package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
- package/build-module/hooks/use-entity-record.js +7 -11
- package/build-module/hooks/use-entity-record.js.map +1 -1
- package/build-module/hooks/use-entity-records.js +3 -5
- package/build-module/hooks/use-entity-records.js.map +1 -1
- package/build-module/hooks/use-query-select.js +1 -6
- package/build-module/hooks/use-query-select.js.map +1 -1
- package/build-module/index.js +1 -7
- package/build-module/index.js.map +1 -1
- package/build-module/locks/actions.js +3 -4
- package/build-module/locks/actions.js.map +1 -1
- package/build-module/locks/reducer.js +1 -4
- package/build-module/locks/reducer.js.map +1 -1
- package/build-module/locks/selectors.js +3 -4
- package/build-module/locks/selectors.js.map +1 -1
- package/build-module/locks/utils.js +3 -5
- package/build-module/locks/utils.js.map +1 -1
- package/build-module/private-selectors.js +28 -0
- package/build-module/private-selectors.js.map +1 -0
- package/build-module/queried-data/actions.js +2 -5
- package/build-module/queried-data/actions.js.map +1 -1
- package/build-module/queried-data/reducer.js +17 -47
- package/build-module/queried-data/reducer.js.map +1 -1
- package/build-module/queried-data/selectors.js +4 -11
- package/build-module/queried-data/selectors.js.map +1 -1
- package/build-module/reducer.js +168 -194
- package/build-module/reducer.js.map +1 -1
- package/build-module/resolvers.js +175 -220
- package/build-module/resolvers.js.map +1 -1
- package/build-module/selectors.js +55 -61
- package/build-module/selectors.js.map +1 -1
- package/build-module/utils/forward-resolver.js +4 -11
- package/build-module/utils/forward-resolver.js.map +1 -1
- package/build-module/utils/on-sub-key.js +1 -3
- package/build-module/utils/on-sub-key.js.map +1 -1
- package/build-types/actions.d.ts.map +1 -1
- package/build-types/private-selectors.d.ts +25 -0
- package/build-types/private-selectors.d.ts.map +1 -0
- package/build-types/reducer.d.ts +6 -2
- package/build-types/reducer.d.ts.map +1 -1
- package/build-types/selectors.d.ts +16 -4
- package/build-types/selectors.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/actions.js +9 -8
- package/src/index.js +0 -1
- package/src/private-selectors.ts +30 -0
- package/src/reducer.js +130 -104
- package/src/selectors.ts +33 -13
- package/src/test/reducer.js +89 -54
- package/src/test/selectors.js +8 -8
- package/tsconfig.tsbuildinfo +1 -1
package/build/resolvers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","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","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__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","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\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';\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\tif ( query !== undefined && 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\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\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 = Object.values( await apiFetch( { path } ) );\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 \"fullfilled\".\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( kind, name, records, query );\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 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 getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch } ) => {\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\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","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","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__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","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\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';\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\tif ( query !== undefined && 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\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\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 = Object.values( await apiFetch( { path } ) );\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 \"fullfilled\".\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( kind, name, records, query );\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 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 getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch } ) => {\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\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\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"]}
|
package/build/selectors.js
CHANGED
|
@@ -66,6 +66,8 @@ var _entities = require("./entities");
|
|
|
66
66
|
|
|
67
67
|
var _utils = require("./utils");
|
|
68
68
|
|
|
69
|
+
var _privateSelectors = require("./private-selectors");
|
|
70
|
+
|
|
69
71
|
/**
|
|
70
72
|
* External dependencies
|
|
71
73
|
*/
|
|
@@ -211,9 +213,7 @@ function getEntity(state, kind, name) {
|
|
|
211
213
|
|
|
212
214
|
|
|
213
215
|
function getEntityConfig(state, kind, name) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
return (_state$entities$confi = state.entities.config) === null || _state$entities$confi === void 0 ? void 0 : _state$entities$confi.find(config => config.kind === kind && config.name === name);
|
|
216
|
+
return state.entities.config?.find(config => config.kind === kind && config.name === name);
|
|
217
217
|
}
|
|
218
218
|
/**
|
|
219
219
|
* GetEntityRecord is declared as a *callable interface* with
|
|
@@ -256,28 +256,26 @@ function getEntityConfig(state, kind, name) {
|
|
|
256
256
|
* @return Record.
|
|
257
257
|
*/
|
|
258
258
|
const getEntityRecord = (0, _rememo.default)((state, kind, name, key, query) => {
|
|
259
|
-
var
|
|
259
|
+
var _query$context;
|
|
260
260
|
|
|
261
|
-
const queriedState =
|
|
261
|
+
const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
|
|
262
262
|
|
|
263
263
|
if (!queriedState) {
|
|
264
264
|
return undefined;
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
const context = (_query$context = query
|
|
267
|
+
const context = (_query$context = query?.context) !== null && _query$context !== void 0 ? _query$context : 'default';
|
|
268
268
|
|
|
269
269
|
if (query === undefined) {
|
|
270
|
-
var _queriedState$itemIsC;
|
|
271
|
-
|
|
272
270
|
// If expecting a complete item, validate that completeness.
|
|
273
|
-
if (!
|
|
271
|
+
if (!queriedState.itemIsComplete[context]?.[key]) {
|
|
274
272
|
return undefined;
|
|
275
273
|
}
|
|
276
274
|
|
|
277
275
|
return queriedState.items[context][key];
|
|
278
276
|
}
|
|
279
277
|
|
|
280
|
-
const item =
|
|
278
|
+
const item = queriedState.items[context]?.[key];
|
|
281
279
|
|
|
282
280
|
if (item && query._fields) {
|
|
283
281
|
var _getNormalizedCommaSe;
|
|
@@ -299,10 +297,10 @@ const getEntityRecord = (0, _rememo.default)((state, kind, name, key, query) =>
|
|
|
299
297
|
|
|
300
298
|
return item;
|
|
301
299
|
}, (state, kind, name, recordId, query) => {
|
|
302
|
-
var _query$context2
|
|
300
|
+
var _query$context2;
|
|
303
301
|
|
|
304
|
-
const context = (_query$context2 = query
|
|
305
|
-
return [
|
|
302
|
+
const context = (_query$context2 = query?.context) !== null && _query$context2 !== void 0 ? _query$context2 : 'default';
|
|
303
|
+
return [state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
|
|
306
304
|
});
|
|
307
305
|
/**
|
|
308
306
|
* Returns the Entity's record object by key. Doesn't trigger a resolver nor requests the entity records from the API if the entity record isn't available in the local state.
|
|
@@ -337,12 +335,12 @@ const getRawEntityRecord = (0, _rememo.default)((state, kind, name, key) => {
|
|
|
337
335
|
const record = getEntityRecord(state, kind, name, key);
|
|
338
336
|
return record && Object.keys(record).reduce((accumulator, _key) => {
|
|
339
337
|
if ((0, _utils.isRawAttribute)(getEntityConfig(state, kind, name), _key)) {
|
|
340
|
-
var _record$_key$raw
|
|
338
|
+
var _record$_key$raw;
|
|
341
339
|
|
|
342
340
|
// Because edits are the "raw" attribute values,
|
|
343
341
|
// we return those from record selectors to make rendering,
|
|
344
342
|
// comparisons, and joins with edits easier.
|
|
345
|
-
accumulator[_key] = (_record$_key$raw =
|
|
343
|
+
accumulator[_key] = (_record$_key$raw = record[_key]?.raw) !== null && _record$_key$raw !== void 0 ? _record$_key$raw : record[_key];
|
|
346
344
|
} else {
|
|
347
345
|
accumulator[_key] = record[_key];
|
|
348
346
|
}
|
|
@@ -350,10 +348,10 @@ const getRawEntityRecord = (0, _rememo.default)((state, kind, name, key) => {
|
|
|
350
348
|
return accumulator;
|
|
351
349
|
}, {});
|
|
352
350
|
}, (state, kind, name, recordId, query) => {
|
|
353
|
-
var _query$context3
|
|
351
|
+
var _query$context3;
|
|
354
352
|
|
|
355
|
-
const context = (_query$context3 = query
|
|
356
|
-
return [state.entities.config,
|
|
353
|
+
const context = (_query$context3 = query?.context) !== null && _query$context3 !== void 0 ? _query$context3 : 'default';
|
|
354
|
+
return [state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
|
|
357
355
|
});
|
|
358
356
|
/**
|
|
359
357
|
* Returns true if records have been received for the given set of parameters,
|
|
@@ -394,11 +392,9 @@ function hasEntityRecords(state, kind, name, query) {
|
|
|
394
392
|
* @return Records.
|
|
395
393
|
*/
|
|
396
394
|
const getEntityRecords = (state, kind, name, query) => {
|
|
397
|
-
var _state$entities$recor24, _state$entities$recor25, _state$entities$recor26;
|
|
398
|
-
|
|
399
395
|
// Queried data state is prepopulated for all known entities. If this is not
|
|
400
396
|
// assigned for the given parameters, then it is known to not exist.
|
|
401
|
-
const queriedState =
|
|
397
|
+
const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
|
|
402
398
|
|
|
403
399
|
if (!queriedState) {
|
|
404
400
|
return null;
|
|
@@ -432,14 +428,12 @@ const __experimentalGetDirtyEntityRecords = (0, _rememo.default)(state => {
|
|
|
432
428
|
if (primaryKeys.length) {
|
|
433
429
|
const entityConfig = getEntityConfig(state, kind, name);
|
|
434
430
|
primaryKeys.forEach(primaryKey => {
|
|
435
|
-
var _entityConfig$getTitl;
|
|
436
|
-
|
|
437
431
|
const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
|
|
438
432
|
dirtyRecords.push({
|
|
439
433
|
// We avoid using primaryKey because it's transformed into a string
|
|
440
434
|
// when it's used as an object key.
|
|
441
435
|
key: entityRecord ? entityRecord[entityConfig.key || _entities.DEFAULT_ENTITY_KEY] : undefined,
|
|
442
|
-
title:
|
|
436
|
+
title: entityConfig?.getTitle?.(entityRecord) || '',
|
|
443
437
|
name,
|
|
444
438
|
kind
|
|
445
439
|
});
|
|
@@ -474,14 +468,12 @@ const __experimentalGetEntitiesBeingSaved = (0, _rememo.default)(state => {
|
|
|
474
468
|
if (primaryKeys.length) {
|
|
475
469
|
const entityConfig = getEntityConfig(state, kind, name);
|
|
476
470
|
primaryKeys.forEach(primaryKey => {
|
|
477
|
-
var _entityConfig$getTitl2;
|
|
478
|
-
|
|
479
471
|
const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
|
|
480
472
|
recordsBeingSaved.push({
|
|
481
473
|
// We avoid using primaryKey because it's transformed into a string
|
|
482
474
|
// when it's used as an object key.
|
|
483
475
|
key: entityRecord ? entityRecord[entityConfig.key || _entities.DEFAULT_ENTITY_KEY] : undefined,
|
|
484
|
-
title:
|
|
476
|
+
title: entityConfig?.getTitle?.(entityRecord) || '',
|
|
485
477
|
name,
|
|
486
478
|
kind
|
|
487
479
|
});
|
|
@@ -506,9 +498,7 @@ const __experimentalGetEntitiesBeingSaved = (0, _rememo.default)(state => {
|
|
|
506
498
|
exports.__experimentalGetEntitiesBeingSaved = __experimentalGetEntitiesBeingSaved;
|
|
507
499
|
|
|
508
500
|
function getEntityRecordEdits(state, kind, name, recordId) {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
return (_state$entities$recor27 = state.entities.records) === null || _state$entities$recor27 === void 0 ? void 0 : (_state$entities$recor28 = _state$entities$recor27[kind]) === null || _state$entities$recor28 === void 0 ? void 0 : (_state$entities$recor29 = _state$entities$recor28[name]) === null || _state$entities$recor29 === void 0 ? void 0 : (_state$entities$recor30 = _state$entities$recor29.edits) === null || _state$entities$recor30 === void 0 ? void 0 : _state$entities$recor30[recordId];
|
|
501
|
+
return state.entities.records?.[kind]?.[name]?.edits?.[recordId];
|
|
512
502
|
}
|
|
513
503
|
/**
|
|
514
504
|
* Returns the specified entity record's non transient edits.
|
|
@@ -543,11 +533,7 @@ const getEntityRecordNonTransientEdits = (0, _rememo.default)((state, kind, name
|
|
|
543
533
|
|
|
544
534
|
return acc;
|
|
545
535
|
}, {});
|
|
546
|
-
}, (state, kind, name, recordId) =>
|
|
547
|
-
var _state$entities$recor31, _state$entities$recor32, _state$entities$recor33, _state$entities$recor34;
|
|
548
|
-
|
|
549
|
-
return [state.entities.config, (_state$entities$recor31 = state.entities.records) === null || _state$entities$recor31 === void 0 ? void 0 : (_state$entities$recor32 = _state$entities$recor31[kind]) === null || _state$entities$recor32 === void 0 ? void 0 : (_state$entities$recor33 = _state$entities$recor32[name]) === null || _state$entities$recor33 === void 0 ? void 0 : (_state$entities$recor34 = _state$entities$recor33.edits) === null || _state$entities$recor34 === void 0 ? void 0 : _state$entities$recor34[recordId]];
|
|
550
|
-
});
|
|
536
|
+
}, (state, kind, name, recordId) => [state.entities.config, state.entities.records?.[kind]?.[name]?.edits?.[recordId]]);
|
|
551
537
|
/**
|
|
552
538
|
* Returns true if the specified entity record has edits,
|
|
553
539
|
* and false otherwise.
|
|
@@ -580,10 +566,10 @@ function hasEditsForEntityRecord(state, kind, name, recordId) {
|
|
|
580
566
|
const getEditedEntityRecord = (0, _rememo.default)((state, kind, name, recordId) => ({ ...getRawEntityRecord(state, kind, name, recordId),
|
|
581
567
|
...getEntityRecordEdits(state, kind, name, recordId)
|
|
582
568
|
}), (state, kind, name, recordId, query) => {
|
|
583
|
-
var _query$context4
|
|
569
|
+
var _query$context4;
|
|
584
570
|
|
|
585
|
-
const context = (_query$context4 = query
|
|
586
|
-
return [state.entities.config,
|
|
571
|
+
const context = (_query$context4 = query?.context) !== null && _query$context4 !== void 0 ? _query$context4 : 'default';
|
|
572
|
+
return [state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData.itemIsComplete[context]?.[recordId], state.entities.records?.[kind]?.[name]?.edits?.[recordId]];
|
|
587
573
|
});
|
|
588
574
|
/**
|
|
589
575
|
* Returns true if the specified entity record is autosaving, and false otherwise.
|
|
@@ -599,12 +585,12 @@ const getEditedEntityRecord = (0, _rememo.default)((state, kind, name, recordId)
|
|
|
599
585
|
exports.getEditedEntityRecord = getEditedEntityRecord;
|
|
600
586
|
|
|
601
587
|
function isAutosavingEntityRecord(state, kind, name, recordId) {
|
|
602
|
-
var _state$entities$
|
|
588
|
+
var _state$entities$recor;
|
|
603
589
|
|
|
604
590
|
const {
|
|
605
591
|
pending,
|
|
606
592
|
isAutosave
|
|
607
|
-
} = (_state$entities$
|
|
593
|
+
} = (_state$entities$recor = state.entities.records?.[kind]?.[name]?.saving?.[recordId]) !== null && _state$entities$recor !== void 0 ? _state$entities$recor : {};
|
|
608
594
|
return Boolean(pending && isAutosave);
|
|
609
595
|
}
|
|
610
596
|
/**
|
|
@@ -620,9 +606,9 @@ function isAutosavingEntityRecord(state, kind, name, recordId) {
|
|
|
620
606
|
|
|
621
607
|
|
|
622
608
|
function isSavingEntityRecord(state, kind, name, recordId) {
|
|
623
|
-
var _state$entities$
|
|
609
|
+
var _state$entities$recor2;
|
|
624
610
|
|
|
625
|
-
return (_state$entities$
|
|
611
|
+
return (_state$entities$recor2 = state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.pending) !== null && _state$entities$recor2 !== void 0 ? _state$entities$recor2 : false;
|
|
626
612
|
}
|
|
627
613
|
/**
|
|
628
614
|
* Returns true if the specified entity record is deleting, and false otherwise.
|
|
@@ -637,9 +623,9 @@ function isSavingEntityRecord(state, kind, name, recordId) {
|
|
|
637
623
|
|
|
638
624
|
|
|
639
625
|
function isDeletingEntityRecord(state, kind, name, recordId) {
|
|
640
|
-
var _state$entities$
|
|
626
|
+
var _state$entities$recor3;
|
|
641
627
|
|
|
642
|
-
return (_state$entities$
|
|
628
|
+
return (_state$entities$recor3 = state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.pending) !== null && _state$entities$recor3 !== void 0 ? _state$entities$recor3 : false;
|
|
643
629
|
}
|
|
644
630
|
/**
|
|
645
631
|
* Returns the specified entity record's last save error.
|
|
@@ -654,9 +640,7 @@ function isDeletingEntityRecord(state, kind, name, recordId) {
|
|
|
654
640
|
|
|
655
641
|
|
|
656
642
|
function getLastEntitySaveError(state, kind, name, recordId) {
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
return (_state$entities$recor64 = state.entities.records) === null || _state$entities$recor64 === void 0 ? void 0 : (_state$entities$recor65 = _state$entities$recor64[kind]) === null || _state$entities$recor65 === void 0 ? void 0 : (_state$entities$recor66 = _state$entities$recor65[name]) === null || _state$entities$recor66 === void 0 ? void 0 : (_state$entities$recor67 = _state$entities$recor66.saving) === null || _state$entities$recor67 === void 0 ? void 0 : (_state$entities$recor68 = _state$entities$recor67[recordId]) === null || _state$entities$recor68 === void 0 ? void 0 : _state$entities$recor68.error;
|
|
643
|
+
return state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.error;
|
|
660
644
|
}
|
|
661
645
|
/**
|
|
662
646
|
* Returns the specified entity record's last delete error.
|
|
@@ -671,9 +655,7 @@ function getLastEntitySaveError(state, kind, name, recordId) {
|
|
|
671
655
|
|
|
672
656
|
|
|
673
657
|
function getLastEntityDeleteError(state, kind, name, recordId) {
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
return (_state$entities$recor69 = state.entities.records) === null || _state$entities$recor69 === void 0 ? void 0 : (_state$entities$recor70 = _state$entities$recor69[kind]) === null || _state$entities$recor70 === void 0 ? void 0 : (_state$entities$recor71 = _state$entities$recor70[name]) === null || _state$entities$recor71 === void 0 ? void 0 : (_state$entities$recor72 = _state$entities$recor71.deleting) === null || _state$entities$recor72 === void 0 ? void 0 : (_state$entities$recor73 = _state$entities$recor72[recordId]) === null || _state$entities$recor73 === void 0 ? void 0 : _state$entities$recor73.error;
|
|
658
|
+
return state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.error;
|
|
677
659
|
}
|
|
678
660
|
/**
|
|
679
661
|
* Returns the current undo offset for the
|
|
@@ -695,27 +677,37 @@ function getCurrentUndoOffset(state) {
|
|
|
695
677
|
* Returns the previous edit from the current undo offset
|
|
696
678
|
* for the entity records edits history, if any.
|
|
697
679
|
*
|
|
698
|
-
* @
|
|
680
|
+
* @deprecated since 6.3
|
|
681
|
+
*
|
|
682
|
+
* @param state State tree.
|
|
699
683
|
*
|
|
700
684
|
* @return The edit.
|
|
701
685
|
*/
|
|
702
686
|
|
|
703
687
|
|
|
704
688
|
function getUndoEdit(state) {
|
|
705
|
-
|
|
689
|
+
(0, _deprecated.default)("select( 'core' ).getUndoEdit()", {
|
|
690
|
+
since: '6.3'
|
|
691
|
+
});
|
|
692
|
+
return state.undo.list[state.undo.list.length - 2 + getCurrentUndoOffset(state)]?.[0];
|
|
706
693
|
}
|
|
707
694
|
/**
|
|
708
695
|
* Returns the next edit from the current undo offset
|
|
709
696
|
* for the entity records edits history, if any.
|
|
710
697
|
*
|
|
711
|
-
* @
|
|
698
|
+
* @deprecated since 6.3
|
|
699
|
+
*
|
|
700
|
+
* @param state State tree.
|
|
712
701
|
*
|
|
713
702
|
* @return The edit.
|
|
714
703
|
*/
|
|
715
704
|
|
|
716
705
|
|
|
717
706
|
function getRedoEdit(state) {
|
|
718
|
-
|
|
707
|
+
(0, _deprecated.default)("select( 'core' ).getRedoEdit()", {
|
|
708
|
+
since: '6.3'
|
|
709
|
+
});
|
|
710
|
+
return state.undo.list[state.undo.list.length + getCurrentUndoOffset(state)]?.[0];
|
|
719
711
|
}
|
|
720
712
|
/**
|
|
721
713
|
* Returns true if there is a previous edit from the current undo offset
|
|
@@ -728,7 +720,7 @@ function getRedoEdit(state) {
|
|
|
728
720
|
|
|
729
721
|
|
|
730
722
|
function hasUndo(state) {
|
|
731
|
-
return Boolean(
|
|
723
|
+
return Boolean((0, _privateSelectors.getUndoEdits)(state));
|
|
732
724
|
}
|
|
733
725
|
/**
|
|
734
726
|
* Returns true if there is a next edit from the current undo offset
|
|
@@ -741,7 +733,7 @@ function hasUndo(state) {
|
|
|
741
733
|
|
|
742
734
|
|
|
743
735
|
function hasRedo(state) {
|
|
744
|
-
return Boolean(
|
|
736
|
+
return Boolean((0, _privateSelectors.getRedoEdits)(state));
|
|
745
737
|
}
|
|
746
738
|
/**
|
|
747
739
|
* Return the current theme.
|
|
@@ -777,9 +769,9 @@ function __experimentalGetCurrentGlobalStylesId(state) {
|
|
|
777
769
|
|
|
778
770
|
|
|
779
771
|
function getThemeSupports(state) {
|
|
780
|
-
var _getCurrentTheme$them
|
|
772
|
+
var _getCurrentTheme$them;
|
|
781
773
|
|
|
782
|
-
return (_getCurrentTheme$them =
|
|
774
|
+
return (_getCurrentTheme$them = getCurrentTheme(state)?.theme_supports) !== null && _getCurrentTheme$them !== void 0 ? _getCurrentTheme$them : EMPTY_OBJECT;
|
|
783
775
|
}
|
|
784
776
|
/**
|
|
785
777
|
* Returns the embed preview for the given URL.
|
|
@@ -903,7 +895,7 @@ function getAutosave(state, postType, postId, authorId) {
|
|
|
903
895
|
}
|
|
904
896
|
|
|
905
897
|
const autosaves = state.autosaves[postId];
|
|
906
|
-
return autosaves
|
|
898
|
+
return autosaves?.find(autosave => autosave.author === authorId);
|
|
907
899
|
}
|
|
908
900
|
/**
|
|
909
901
|
* Returns true if the REST request for autosaves has completed.
|
|
@@ -940,7 +932,7 @@ const hasFetchedAutosaves = (0, _data.createRegistrySelector)(select => (state,
|
|
|
940
932
|
|
|
941
933
|
exports.hasFetchedAutosaves = hasFetchedAutosaves;
|
|
942
934
|
const getReferenceByDistinctEdits = (0, _rememo.default)( // This unused state argument is listed here for the documentation generating tool (docgen).
|
|
943
|
-
state => [], state => [state.undo.length, state.undo.offset
|
|
935
|
+
state => [], state => [state.undo.list.length, state.undo.offset]);
|
|
944
936
|
/**
|
|
945
937
|
* Retrieve the frontend template used for a given link.
|
|
946
938
|
*
|
|
@@ -957,7 +949,7 @@ function __experimentalGetTemplateForLink(state, link) {
|
|
|
957
949
|
'find-template': link
|
|
958
950
|
});
|
|
959
951
|
|
|
960
|
-
if (records
|
|
952
|
+
if (records?.length) {
|
|
961
953
|
return getEditedEntityRecord(state, 'postType', 'wp_template', records[0].id);
|
|
962
954
|
}
|
|
963
955
|
|