@wordpress/core-data 6.11.0 → 6.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +5 -1
- 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 +74 -23
- 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 +11 -13
- package/build/hooks/use-entity-record.js.map +1 -1
- package/build/hooks/use-entity-records.js +4 -6
- 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-apis.js +19 -0
- package/build/private-apis.js.map +1 -0
- 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 +71 -22
- 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 +11 -13
- package/build-module/hooks/use-entity-record.js.map +1 -1
- package/build-module/hooks/use-entity-records.js +4 -6
- 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-apis.js +9 -0
- package/build-module/private-apis.js.map +1 -0
- 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/entity-provider.d.ts.map +1 -1
- package/build-types/entity-types/wp-template.d.ts +4 -0
- package/build-types/entity-types/wp-template.d.ts.map +1 -1
- package/build-types/hooks/use-entity-record.d.ts.map +1 -1
- package/build-types/hooks/use-entity-records.d.ts +1 -1
- package/build-types/private-apis.d.ts +3 -0
- package/build-types/private-apis.d.ts.map +1 -0
- 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 +14 -12
- package/src/actions.js +9 -8
- package/src/entity-provider.js +72 -5
- package/src/entity-types/wp-template.ts +4 -0
- package/src/hooks/use-entity-record.ts +4 -2
- package/src/hooks/use-entity-records.ts +1 -1
- package/src/index.js +0 -1
- package/src/private-apis.js +10 -0
- 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.json +2 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["camelCase","addQueryArgs","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","Set","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":["camelCase","addQueryArgs","apiFetch","STORE_NAME","getOrLoadEntitiesConfig","DEFAULT_ENTITY_KEY","forwardResolver","getNormalizedCommaSeparable","getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","Set","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"]}
|
|
@@ -17,6 +17,10 @@ import { STORE_NAME } from './name';
|
|
|
17
17
|
import { getQueriedItems } from './queried-data';
|
|
18
18
|
import { DEFAULT_ENTITY_KEY } from './entities';
|
|
19
19
|
import { getNormalizedCommaSeparable, isRawAttribute, setNestedValue } from './utils';
|
|
20
|
+
import { getUndoEdits, getRedoEdits } from './private-selectors'; // This is an incomplete, high-level approximation of the State type.
|
|
21
|
+
// It makes the selectors slightly more safe, but is intended to evolve
|
|
22
|
+
// into a more detailed representation over time.
|
|
23
|
+
// See https://github.com/WordPress/gutenberg/pull/40025#discussion_r865410589 for more context.
|
|
20
24
|
|
|
21
25
|
/**
|
|
22
26
|
* Shared reference to an empty object for cases where it is important to avoid
|
|
@@ -142,9 +146,7 @@ export function getEntity(state, kind, name) {
|
|
|
142
146
|
*/
|
|
143
147
|
|
|
144
148
|
export function getEntityConfig(state, kind, name) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
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);
|
|
149
|
+
return state.entities.config?.find(config => config.kind === kind && config.name === name);
|
|
148
150
|
}
|
|
149
151
|
/**
|
|
150
152
|
* GetEntityRecord is declared as a *callable interface* with
|
|
@@ -186,28 +188,26 @@ export function getEntityConfig(state, kind, name) {
|
|
|
186
188
|
* @return Record.
|
|
187
189
|
*/
|
|
188
190
|
export const getEntityRecord = createSelector((state, kind, name, key, query) => {
|
|
189
|
-
var
|
|
191
|
+
var _query$context;
|
|
190
192
|
|
|
191
|
-
const queriedState =
|
|
193
|
+
const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
|
|
192
194
|
|
|
193
195
|
if (!queriedState) {
|
|
194
196
|
return undefined;
|
|
195
197
|
}
|
|
196
198
|
|
|
197
|
-
const context = (_query$context = query
|
|
199
|
+
const context = (_query$context = query?.context) !== null && _query$context !== void 0 ? _query$context : 'default';
|
|
198
200
|
|
|
199
201
|
if (query === undefined) {
|
|
200
|
-
var _queriedState$itemIsC;
|
|
201
|
-
|
|
202
202
|
// If expecting a complete item, validate that completeness.
|
|
203
|
-
if (!
|
|
203
|
+
if (!queriedState.itemIsComplete[context]?.[key]) {
|
|
204
204
|
return undefined;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
return queriedState.items[context][key];
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
const item =
|
|
210
|
+
const item = queriedState.items[context]?.[key];
|
|
211
211
|
|
|
212
212
|
if (item && query._fields) {
|
|
213
213
|
var _getNormalizedCommaSe;
|
|
@@ -229,10 +229,10 @@ export const getEntityRecord = createSelector((state, kind, name, key, query) =>
|
|
|
229
229
|
|
|
230
230
|
return item;
|
|
231
231
|
}, (state, kind, name, recordId, query) => {
|
|
232
|
-
var _query$context2
|
|
232
|
+
var _query$context2;
|
|
233
233
|
|
|
234
|
-
const context = (_query$context2 = query
|
|
235
|
-
return [
|
|
234
|
+
const context = (_query$context2 = query?.context) !== null && _query$context2 !== void 0 ? _query$context2 : 'default';
|
|
235
|
+
return [state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
|
|
236
236
|
});
|
|
237
237
|
/**
|
|
238
238
|
* 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.
|
|
@@ -264,12 +264,12 @@ export const getRawEntityRecord = createSelector((state, kind, name, key) => {
|
|
|
264
264
|
const record = getEntityRecord(state, kind, name, key);
|
|
265
265
|
return record && Object.keys(record).reduce((accumulator, _key) => {
|
|
266
266
|
if (isRawAttribute(getEntityConfig(state, kind, name), _key)) {
|
|
267
|
-
var _record$_key$raw
|
|
267
|
+
var _record$_key$raw;
|
|
268
268
|
|
|
269
269
|
// Because edits are the "raw" attribute values,
|
|
270
270
|
// we return those from record selectors to make rendering,
|
|
271
271
|
// comparisons, and joins with edits easier.
|
|
272
|
-
accumulator[_key] = (_record$_key$raw =
|
|
272
|
+
accumulator[_key] = (_record$_key$raw = record[_key]?.raw) !== null && _record$_key$raw !== void 0 ? _record$_key$raw : record[_key];
|
|
273
273
|
} else {
|
|
274
274
|
accumulator[_key] = record[_key];
|
|
275
275
|
}
|
|
@@ -277,10 +277,10 @@ export const getRawEntityRecord = createSelector((state, kind, name, key) => {
|
|
|
277
277
|
return accumulator;
|
|
278
278
|
}, {});
|
|
279
279
|
}, (state, kind, name, recordId, query) => {
|
|
280
|
-
var _query$context3
|
|
280
|
+
var _query$context3;
|
|
281
281
|
|
|
282
|
-
const context = (_query$context3 = query
|
|
283
|
-
return [state.entities.config,
|
|
282
|
+
const context = (_query$context3 = query?.context) !== null && _query$context3 !== void 0 ? _query$context3 : 'default';
|
|
283
|
+
return [state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
|
|
284
284
|
});
|
|
285
285
|
/**
|
|
286
286
|
* Returns true if records have been received for the given set of parameters,
|
|
@@ -318,11 +318,9 @@ export function hasEntityRecords(state, kind, name, query) {
|
|
|
318
318
|
* @return Records.
|
|
319
319
|
*/
|
|
320
320
|
export const getEntityRecords = (state, kind, name, query) => {
|
|
321
|
-
var _state$entities$recor24, _state$entities$recor25, _state$entities$recor26;
|
|
322
|
-
|
|
323
321
|
// Queried data state is prepopulated for all known entities. If this is not
|
|
324
322
|
// assigned for the given parameters, then it is known to not exist.
|
|
325
|
-
const queriedState =
|
|
323
|
+
const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
|
|
326
324
|
|
|
327
325
|
if (!queriedState) {
|
|
328
326
|
return null;
|
|
@@ -354,14 +352,12 @@ export const __experimentalGetDirtyEntityRecords = createSelector(state => {
|
|
|
354
352
|
if (primaryKeys.length) {
|
|
355
353
|
const entityConfig = getEntityConfig(state, kind, name);
|
|
356
354
|
primaryKeys.forEach(primaryKey => {
|
|
357
|
-
var _entityConfig$getTitl;
|
|
358
|
-
|
|
359
355
|
const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
|
|
360
356
|
dirtyRecords.push({
|
|
361
357
|
// We avoid using primaryKey because it's transformed into a string
|
|
362
358
|
// when it's used as an object key.
|
|
363
359
|
key: entityRecord ? entityRecord[entityConfig.key || DEFAULT_ENTITY_KEY] : undefined,
|
|
364
|
-
title:
|
|
360
|
+
title: entityConfig?.getTitle?.(entityRecord) || '',
|
|
365
361
|
name,
|
|
366
362
|
kind
|
|
367
363
|
});
|
|
@@ -393,14 +389,12 @@ export const __experimentalGetEntitiesBeingSaved = createSelector(state => {
|
|
|
393
389
|
if (primaryKeys.length) {
|
|
394
390
|
const entityConfig = getEntityConfig(state, kind, name);
|
|
395
391
|
primaryKeys.forEach(primaryKey => {
|
|
396
|
-
var _entityConfig$getTitl2;
|
|
397
|
-
|
|
398
392
|
const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
|
|
399
393
|
recordsBeingSaved.push({
|
|
400
394
|
// We avoid using primaryKey because it's transformed into a string
|
|
401
395
|
// when it's used as an object key.
|
|
402
396
|
key: entityRecord ? entityRecord[entityConfig.key || DEFAULT_ENTITY_KEY] : undefined,
|
|
403
|
-
title:
|
|
397
|
+
title: entityConfig?.getTitle?.(entityRecord) || '',
|
|
404
398
|
name,
|
|
405
399
|
kind
|
|
406
400
|
});
|
|
@@ -422,9 +416,7 @@ export const __experimentalGetEntitiesBeingSaved = createSelector(state => {
|
|
|
422
416
|
*/
|
|
423
417
|
|
|
424
418
|
export function getEntityRecordEdits(state, kind, name, recordId) {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
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];
|
|
419
|
+
return state.entities.records?.[kind]?.[name]?.edits?.[recordId];
|
|
428
420
|
}
|
|
429
421
|
/**
|
|
430
422
|
* Returns the specified entity record's non transient edits.
|
|
@@ -458,11 +450,7 @@ export const getEntityRecordNonTransientEdits = createSelector((state, kind, nam
|
|
|
458
450
|
|
|
459
451
|
return acc;
|
|
460
452
|
}, {});
|
|
461
|
-
}, (state, kind, name, recordId) =>
|
|
462
|
-
var _state$entities$recor31, _state$entities$recor32, _state$entities$recor33, _state$entities$recor34;
|
|
463
|
-
|
|
464
|
-
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]];
|
|
465
|
-
});
|
|
453
|
+
}, (state, kind, name, recordId) => [state.entities.config, state.entities.records?.[kind]?.[name]?.edits?.[recordId]]);
|
|
466
454
|
/**
|
|
467
455
|
* Returns true if the specified entity record has edits,
|
|
468
456
|
* and false otherwise.
|
|
@@ -492,10 +480,10 @@ export function hasEditsForEntityRecord(state, kind, name, recordId) {
|
|
|
492
480
|
export const getEditedEntityRecord = createSelector((state, kind, name, recordId) => ({ ...getRawEntityRecord(state, kind, name, recordId),
|
|
493
481
|
...getEntityRecordEdits(state, kind, name, recordId)
|
|
494
482
|
}), (state, kind, name, recordId, query) => {
|
|
495
|
-
var _query$context4
|
|
483
|
+
var _query$context4;
|
|
496
484
|
|
|
497
|
-
const context = (_query$context4 = query
|
|
498
|
-
return [state.entities.config,
|
|
485
|
+
const context = (_query$context4 = query?.context) !== null && _query$context4 !== void 0 ? _query$context4 : 'default';
|
|
486
|
+
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]];
|
|
499
487
|
});
|
|
500
488
|
/**
|
|
501
489
|
* Returns true if the specified entity record is autosaving, and false otherwise.
|
|
@@ -509,12 +497,12 @@ export const getEditedEntityRecord = createSelector((state, kind, name, recordId
|
|
|
509
497
|
*/
|
|
510
498
|
|
|
511
499
|
export function isAutosavingEntityRecord(state, kind, name, recordId) {
|
|
512
|
-
var _state$entities$
|
|
500
|
+
var _state$entities$recor;
|
|
513
501
|
|
|
514
502
|
const {
|
|
515
503
|
pending,
|
|
516
504
|
isAutosave
|
|
517
|
-
} = (_state$entities$
|
|
505
|
+
} = (_state$entities$recor = state.entities.records?.[kind]?.[name]?.saving?.[recordId]) !== null && _state$entities$recor !== void 0 ? _state$entities$recor : {};
|
|
518
506
|
return Boolean(pending && isAutosave);
|
|
519
507
|
}
|
|
520
508
|
/**
|
|
@@ -529,9 +517,9 @@ export function isAutosavingEntityRecord(state, kind, name, recordId) {
|
|
|
529
517
|
*/
|
|
530
518
|
|
|
531
519
|
export function isSavingEntityRecord(state, kind, name, recordId) {
|
|
532
|
-
var _state$entities$
|
|
520
|
+
var _state$entities$recor2;
|
|
533
521
|
|
|
534
|
-
return (_state$entities$
|
|
522
|
+
return (_state$entities$recor2 = state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.pending) !== null && _state$entities$recor2 !== void 0 ? _state$entities$recor2 : false;
|
|
535
523
|
}
|
|
536
524
|
/**
|
|
537
525
|
* Returns true if the specified entity record is deleting, and false otherwise.
|
|
@@ -545,9 +533,9 @@ export function isSavingEntityRecord(state, kind, name, recordId) {
|
|
|
545
533
|
*/
|
|
546
534
|
|
|
547
535
|
export function isDeletingEntityRecord(state, kind, name, recordId) {
|
|
548
|
-
var _state$entities$
|
|
536
|
+
var _state$entities$recor3;
|
|
549
537
|
|
|
550
|
-
return (_state$entities$
|
|
538
|
+
return (_state$entities$recor3 = state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.pending) !== null && _state$entities$recor3 !== void 0 ? _state$entities$recor3 : false;
|
|
551
539
|
}
|
|
552
540
|
/**
|
|
553
541
|
* Returns the specified entity record's last save error.
|
|
@@ -561,9 +549,7 @@ export function isDeletingEntityRecord(state, kind, name, recordId) {
|
|
|
561
549
|
*/
|
|
562
550
|
|
|
563
551
|
export function getLastEntitySaveError(state, kind, name, recordId) {
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
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;
|
|
552
|
+
return state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.error;
|
|
567
553
|
}
|
|
568
554
|
/**
|
|
569
555
|
* Returns the specified entity record's last delete error.
|
|
@@ -577,9 +563,7 @@ export function getLastEntitySaveError(state, kind, name, recordId) {
|
|
|
577
563
|
*/
|
|
578
564
|
|
|
579
565
|
export function getLastEntityDeleteError(state, kind, name, recordId) {
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
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;
|
|
566
|
+
return state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.error;
|
|
583
567
|
}
|
|
584
568
|
/**
|
|
585
569
|
* Returns the current undo offset for the
|
|
@@ -600,26 +584,36 @@ function getCurrentUndoOffset(state) {
|
|
|
600
584
|
* Returns the previous edit from the current undo offset
|
|
601
585
|
* for the entity records edits history, if any.
|
|
602
586
|
*
|
|
603
|
-
* @
|
|
587
|
+
* @deprecated since 6.3
|
|
588
|
+
*
|
|
589
|
+
* @param state State tree.
|
|
604
590
|
*
|
|
605
591
|
* @return The edit.
|
|
606
592
|
*/
|
|
607
593
|
|
|
608
594
|
|
|
609
595
|
export function getUndoEdit(state) {
|
|
610
|
-
|
|
596
|
+
deprecated("select( 'core' ).getUndoEdit()", {
|
|
597
|
+
since: '6.3'
|
|
598
|
+
});
|
|
599
|
+
return state.undo.list[state.undo.list.length - 2 + getCurrentUndoOffset(state)]?.[0];
|
|
611
600
|
}
|
|
612
601
|
/**
|
|
613
602
|
* Returns the next edit from the current undo offset
|
|
614
603
|
* for the entity records edits history, if any.
|
|
615
604
|
*
|
|
616
|
-
* @
|
|
605
|
+
* @deprecated since 6.3
|
|
606
|
+
*
|
|
607
|
+
* @param state State tree.
|
|
617
608
|
*
|
|
618
609
|
* @return The edit.
|
|
619
610
|
*/
|
|
620
611
|
|
|
621
612
|
export function getRedoEdit(state) {
|
|
622
|
-
|
|
613
|
+
deprecated("select( 'core' ).getRedoEdit()", {
|
|
614
|
+
since: '6.3'
|
|
615
|
+
});
|
|
616
|
+
return state.undo.list[state.undo.list.length + getCurrentUndoOffset(state)]?.[0];
|
|
623
617
|
}
|
|
624
618
|
/**
|
|
625
619
|
* Returns true if there is a previous edit from the current undo offset
|
|
@@ -631,7 +625,7 @@ export function getRedoEdit(state) {
|
|
|
631
625
|
*/
|
|
632
626
|
|
|
633
627
|
export function hasUndo(state) {
|
|
634
|
-
return Boolean(
|
|
628
|
+
return Boolean(getUndoEdits(state));
|
|
635
629
|
}
|
|
636
630
|
/**
|
|
637
631
|
* Returns true if there is a next edit from the current undo offset
|
|
@@ -643,7 +637,7 @@ export function hasUndo(state) {
|
|
|
643
637
|
*/
|
|
644
638
|
|
|
645
639
|
export function hasRedo(state) {
|
|
646
|
-
return Boolean(
|
|
640
|
+
return Boolean(getRedoEdits(state));
|
|
647
641
|
}
|
|
648
642
|
/**
|
|
649
643
|
* Return the current theme.
|
|
@@ -676,9 +670,9 @@ export function __experimentalGetCurrentGlobalStylesId(state) {
|
|
|
676
670
|
*/
|
|
677
671
|
|
|
678
672
|
export function getThemeSupports(state) {
|
|
679
|
-
var _getCurrentTheme$them
|
|
673
|
+
var _getCurrentTheme$them;
|
|
680
674
|
|
|
681
|
-
return (_getCurrentTheme$them =
|
|
675
|
+
return (_getCurrentTheme$them = getCurrentTheme(state)?.theme_supports) !== null && _getCurrentTheme$them !== void 0 ? _getCurrentTheme$them : EMPTY_OBJECT;
|
|
682
676
|
}
|
|
683
677
|
/**
|
|
684
678
|
* Returns the embed preview for the given URL.
|
|
@@ -796,7 +790,7 @@ export function getAutosave(state, postType, postId, authorId) {
|
|
|
796
790
|
}
|
|
797
791
|
|
|
798
792
|
const autosaves = state.autosaves[postId];
|
|
799
|
-
return autosaves
|
|
793
|
+
return autosaves?.find(autosave => autosave.author === authorId);
|
|
800
794
|
}
|
|
801
795
|
/**
|
|
802
796
|
* Returns true if the REST request for autosaves has completed.
|
|
@@ -831,7 +825,7 @@ export const hasFetchedAutosaves = createRegistrySelector(select => (state, post
|
|
|
831
825
|
*/
|
|
832
826
|
|
|
833
827
|
export const getReferenceByDistinctEdits = createSelector( // This unused state argument is listed here for the documentation generating tool (docgen).
|
|
834
|
-
state => [], state => [state.undo.length, state.undo.offset
|
|
828
|
+
state => [], state => [state.undo.list.length, state.undo.offset]);
|
|
835
829
|
/**
|
|
836
830
|
* Retrieve the frontend template used for a given link.
|
|
837
831
|
*
|
|
@@ -846,7 +840,7 @@ export function __experimentalGetTemplateForLink(state, link) {
|
|
|
846
840
|
'find-template': link
|
|
847
841
|
});
|
|
848
842
|
|
|
849
|
-
if (records
|
|
843
|
+
if (records?.length) {
|
|
850
844
|
return getEditedEntityRecord(state, 'postType', 'wp_template', records[0].id);
|
|
851
845
|
}
|
|
852
846
|
|