@wordpress/core-data 4.0.5 → 4.0.10-next.33ec3857e2.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.
Files changed (85) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/actions.js +269 -244
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/create-batch.js +17 -9
  5. package/build/batch/create-batch.js.map +1 -1
  6. package/build/entities.js +22 -10
  7. package/build/entities.js.map +1 -1
  8. package/build/entity-provider.js +18 -13
  9. package/build/entity-provider.js.map +1 -1
  10. package/build/fetch/__experimental-fetch-link-suggestions.js +3 -1
  11. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  12. package/build/fetch/__experimental-fetch-url-data.js +2 -1
  13. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  14. package/build/index.js +25 -5
  15. package/build/index.js.map +1 -1
  16. package/build/locks/actions.js +4 -3
  17. package/build/locks/actions.js.map +1 -1
  18. package/build/locks/reducer.js +4 -1
  19. package/build/locks/reducer.js.map +1 -1
  20. package/build/locks/selectors.js +4 -3
  21. package/build/locks/selectors.js.map +1 -1
  22. package/build/locks/utils.js +7 -5
  23. package/build/locks/utils.js.map +1 -1
  24. package/build/queried-data/actions.js +6 -3
  25. package/build/queried-data/actions.js.map +1 -1
  26. package/build/queried-data/get-query-parts.js +1 -1
  27. package/build/queried-data/reducer.js +17 -6
  28. package/build/queried-data/reducer.js.map +1 -1
  29. package/build/queried-data/selectors.js +2 -1
  30. package/build/queried-data/selectors.js.map +1 -1
  31. package/build/reducer.js +77 -28
  32. package/build/reducer.js.map +1 -1
  33. package/build/resolvers.js +186 -158
  34. package/build/resolvers.js.map +1 -1
  35. package/build/selectors.js +31 -36
  36. package/build/selectors.js.map +1 -1
  37. package/build/utils/forward-resolver.js +11 -4
  38. package/build/utils/forward-resolver.js.map +1 -1
  39. package/build/utils/index.js +8 -8
  40. package/build/utils/on-sub-key.js +4 -2
  41. package/build/utils/on-sub-key.js.map +1 -1
  42. package/build-module/actions.js +257 -235
  43. package/build-module/actions.js.map +1 -1
  44. package/build-module/batch/create-batch.js +17 -9
  45. package/build-module/batch/create-batch.js.map +1 -1
  46. package/build-module/entities.js +21 -9
  47. package/build-module/entities.js.map +1 -1
  48. package/build-module/entity-provider.js +17 -12
  49. package/build-module/entity-provider.js.map +1 -1
  50. package/build-module/fetch/__experimental-fetch-link-suggestions.js +3 -1
  51. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  52. package/build-module/fetch/__experimental-fetch-url-data.js +2 -1
  53. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  54. package/build-module/index.js +21 -3
  55. package/build-module/index.js.map +1 -1
  56. package/build-module/locks/actions.js +4 -3
  57. package/build-module/locks/actions.js.map +1 -1
  58. package/build-module/locks/reducer.js +4 -1
  59. package/build-module/locks/reducer.js.map +1 -1
  60. package/build-module/locks/selectors.js +4 -3
  61. package/build-module/locks/selectors.js.map +1 -1
  62. package/build-module/locks/utils.js +5 -3
  63. package/build-module/locks/utils.js.map +1 -1
  64. package/build-module/queried-data/actions.js +5 -2
  65. package/build-module/queried-data/actions.js.map +1 -1
  66. package/build-module/queried-data/reducer.js +15 -4
  67. package/build-module/queried-data/reducer.js.map +1 -1
  68. package/build-module/queried-data/selectors.js +2 -1
  69. package/build-module/queried-data/selectors.js.map +1 -1
  70. package/build-module/reducer.js +68 -20
  71. package/build-module/reducer.js.map +1 -1
  72. package/build-module/resolvers.js +185 -157
  73. package/build-module/resolvers.js.map +1 -1
  74. package/build-module/selectors.js +2 -15
  75. package/build-module/selectors.js.map +1 -1
  76. package/build-module/utils/forward-resolver.js +11 -4
  77. package/build-module/utils/forward-resolver.js.map +1 -1
  78. package/build-module/utils/on-sub-key.js +3 -1
  79. package/build-module/utils/on-sub-key.js.map +1 -1
  80. package/package.json +12 -12
  81. package/src/entities.js +12 -4
  82. package/src/resolvers.js +5 -0
  83. package/src/selectors.js +2 -15
  84. package/src/test/actions.js +2 -2
  85. package/src/test/selectors.js +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/selectors.js"],"names":["createSelector","set","map","find","get","filter","compact","createRegistrySelector","addQueryArgs","deprecated","STORE_NAME","getQueriedItems","DEFAULT_ENTITY_KEY","getNormalizedCommaSeparable","isRawAttribute","EMPTY_OBJECT","EMPTY_ARRAY","isRequestingEmbedPreview","select","state","url","isResolving","getAuthors","query","since","alternative","path","getUserQueryResults","getCurrentUser","currentUser","queryID","queryResults","users","queries","id","byId","getEntitiesByKind","kind","entities","config","getEntity","name","getEntityRecord","key","queriedState","data","undefined","context","itemIsComplete","items","item","_fields","filteredItem","fields","f","length","field","split","value","recordId","__experimentalGetEntityRecordNoResolver","getRawEntityRecord","record","Object","keys","reduce","accumulator","_key","hasEntityRecords","Array","isArray","getEntityRecords","__experimentalGetDirtyEntityRecords","dirtyRecords","forEach","primaryKeys","edits","primaryKey","hasEditsForEntityRecord","entity","entityRecord","getEditedEntityRecord","push","title","getTitle","__experimentalGetEntitiesBeingSaved","recordsBeingSaved","saving","isSavingEntityRecord","getEntityRecordEdits","getEntityRecordNonTransientEdits","transientEdits","acc","isAutosavingEntityRecord","pending","isAutosave","Boolean","isDeletingEntityRecord","getLastEntitySaveError","getLastEntityDeleteError","getCurrentUndoOffset","undo","offset","getUndoEdit","getRedoEdit","hasUndo","hasRedo","getCurrentTheme","currentTheme","__experimentalGetCurrentGlobalStylesId","currentGlobalStylesId","getThemeSupports","theme_supports","getEmbedPreview","embedPreviews","isPreviewEmbedFallback","preview","oEmbedLinkCheck","html","canUser","action","resource","join","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","autosaves","getAutosave","authorId","author","hasFetchedAutosaves","hasFinishedResolution","getReferenceByDistinctEdits","flattenedUndo","__experimentalGetTemplateForLink","link","records","template","__experimentalGetCurrentThemeBaseGlobalStyles","themeBaseGlobalStyles","stylesheet"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport { set, map, find, get, filter, compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getQueriedItems } from './queried-data';\nimport { DEFAULT_ENTITY_KEY } from './entities';\nimport { getNormalizedCommaSeparable, isRawAttribute } from './utils';\n\n/**\n * Shared reference to an empty object for cases where it is important to avoid\n * returning a new object reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n */\nconst EMPTY_OBJECT = {};\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Returns true if a request is in progress for embed preview data, or false\n * otherwise.\n *\n * @param {Object} state Data state.\n * @param {string} url URL the preview would be for.\n *\n * @return {boolean} Whether a request is in progress for an embed preview.\n */\nexport const isRequestingEmbedPreview = createRegistrySelector(\n\t( select ) => ( state, url ) => {\n\t\treturn select( STORE_NAME ).isResolving( 'getEmbedPreview', [ url ] );\n\t}\n);\n\n/**\n * Returns all available authors.\n *\n * @deprecated since 11.3. Callers should use `select( 'core' ).getUsers({ who: 'authors' })` instead.\n *\n * @param {Object} state Data state.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n * @return {Array} Authors list.\n */\nexport function getAuthors( state, query ) {\n\tdeprecated( \"select( 'core' ).getAuthors()\", {\n\t\tsince: '5.9',\n\t\talternative: \"select( 'core' ).getUsers({ who: 'authors' })\",\n\t} );\n\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\treturn getUserQueryResults( state, path );\n}\n\n/**\n * Returns the current user.\n *\n * @param {Object} state Data state.\n *\n * @return {Object} Current user object.\n */\nexport function getCurrentUser( state ) {\n\treturn state.currentUser;\n}\n\n/**\n * Returns all the users returned by a query ID.\n *\n * @param {Object} state Data state.\n * @param {string} queryID Query ID.\n *\n * @return {Array} Users list.\n */\nexport const getUserQueryResults = createSelector(\n\t( state, queryID ) => {\n\t\tconst queryResults = state.users.queries[ queryID ];\n\n\t\treturn map( queryResults, ( id ) => state.users.byId[ id ] );\n\t},\n\t( state, queryID ) => [ state.users.queries[ queryID ], state.users.byId ]\n);\n\n/**\n * Returns whether the entities for the give kind are loaded.\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n *\n * @return {Array<Object>} Array of entities with config matching kind.\n */\nexport function getEntitiesByKind( state, kind ) {\n\treturn filter( state.entities.config, { kind } );\n}\n\n/**\n * Returns the entity object given its kind and name.\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n *\n * @return {Object} Entity\n */\nexport function getEntity( state, kind, name ) {\n\treturn find( state.entities.config, { kind, name } );\n}\n\n/**\n * Returns the Entity's record object by key. Returns `null` if the value is not\n * yet received, undefined if the value entity is known to not exist, or the\n * entity object if it exists and is received.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key\n * @param {?Object} query Optional query.\n *\n * @return {Object?} Record.\n */\nexport const getEntityRecord = createSelector(\n\t( state, kind, name, key, query ) => {\n\t\tconst queriedState = get( state.entities.data, [\n\t\t\tkind,\n\t\t\tname,\n\t\t\t'queriedData',\n\t\t] );\n\t\tif ( ! queriedState ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst context = query?.context ?? 'default';\n\n\t\tif ( query === undefined ) {\n\t\t\t// If expecting a complete item, validate that completeness.\n\t\t\tif ( ! queriedState.itemIsComplete[ context ]?.[ key ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn queriedState.items[ context ][ key ];\n\t\t}\n\n\t\tconst item = queriedState.items[ context ]?.[ key ];\n\t\tif ( item && query._fields ) {\n\t\t\tconst filteredItem = {};\n\t\t\tconst fields = getNormalizedCommaSeparable( query._fields );\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tconst value = get( item, field );\n\t\t\t\tset( filteredItem, field, value );\n\t\t\t}\n\t\t\treturn filteredItem;\n\t\t}\n\n\t\treturn item;\n\t},\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns the Entity's record object by key. Doesn't trigger a resolver nor requests the entity from the API if the entity record isn't available in the local state.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key\n *\n * @return {Object|null} Record.\n */\nexport function __experimentalGetEntityRecordNoResolver(\n\tstate,\n\tkind,\n\tname,\n\tkey\n) {\n\treturn getEntityRecord( state, kind, name, key );\n}\n\n/**\n * Returns the entity's record object by key,\n * with its attributes mapped to their raw values.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key.\n *\n * @return {Object?} Object with the entity's raw attributes.\n */\nexport const getRawEntityRecord = createSelector(\n\t( state, kind, name, key ) => {\n\t\tconst record = getEntityRecord( state, kind, name, key );\n\t\treturn (\n\t\t\trecord &&\n\t\t\tObject.keys( record ).reduce( ( accumulator, _key ) => {\n\t\t\t\tif ( isRawAttribute( getEntity( state, kind, name ), _key ) ) {\n\t\t\t\t\t// Because edits are the \"raw\" attribute values,\n\t\t\t\t\t// we return those from record selectors to make rendering,\n\t\t\t\t\t// comparisons, and joins with edits easier.\n\t\t\t\t\taccumulator[ _key ] = get(\n\t\t\t\t\t\trecord[ _key ],\n\t\t\t\t\t\t'raw',\n\t\t\t\t\t\trecord[ _key ]\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator[ _key ] = record[ _key ];\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, {} )\n\t\t);\n\t},\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tstate.entities.config,\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns true if records have been received for the given set of parameters,\n * or false otherwise.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {?Object} query Optional terms query.\n *\n * @return {boolean} Whether entity records have been received.\n */\nexport function hasEntityRecords( state, kind, name, query ) {\n\treturn Array.isArray( getEntityRecords( state, kind, name, query ) );\n}\n\n/**\n * Returns the Entity's records.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {?Object} query Optional terms query.\n *\n * @return {?Array} Records.\n */\nexport function getEntityRecords( state, kind, name, query ) {\n\t// Queried data state is prepopulated for all known entities. If this is not\n\t// assigned for the given parameters, then it is known to not exist. Thus, a\n\t// return value of an empty array is used instead of `null` (where `null` is\n\t// otherwise used to represent an unknown state).\n\tconst queriedState = get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'queriedData',\n\t] );\n\tif ( ! queriedState ) {\n\t\treturn EMPTY_ARRAY;\n\t}\n\treturn getQueriedItems( queriedState, query );\n}\n\n/**\n * Returns the list of dirty entity records.\n *\n * @param {Object} state State tree.\n *\n * @return {[{ title: string, key: string, name: string, kind: string }]} The list of updated records\n */\nexport const __experimentalGetDirtyEntityRecords = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tentities: { data },\n\t\t} = state;\n\t\tconst dirtyRecords = [];\n\t\tObject.keys( data ).forEach( ( kind ) => {\n\t\t\tObject.keys( data[ kind ] ).forEach( ( name ) => {\n\t\t\t\tconst primaryKeys = Object.keys(\n\t\t\t\t\tdata[ kind ][ name ].edits\n\t\t\t\t).filter(\n\t\t\t\t\t( primaryKey ) =>\n\t\t\t\t\t\t// The entity record must exist (not be deleted),\n\t\t\t\t\t\t// and it must have edits.\n\t\t\t\t\t\tgetEntityRecord( state, kind, name, primaryKey ) &&\n\t\t\t\t\t\thasEditsForEntityRecord( state, kind, name, primaryKey )\n\t\t\t\t);\n\n\t\t\t\tif ( primaryKeys.length ) {\n\t\t\t\t\tconst entity = getEntity( state, kind, name );\n\t\t\t\t\tprimaryKeys.forEach( ( primaryKey ) => {\n\t\t\t\t\t\tconst entityRecord = getEditedEntityRecord(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tprimaryKey\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdirtyRecords.push( {\n\t\t\t\t\t\t\t// We avoid using primaryKey because it's transformed into a string\n\t\t\t\t\t\t\t// when it's used as an object key.\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tentityRecord[\n\t\t\t\t\t\t\t\t\tentity.key || DEFAULT_ENTITY_KEY\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\ttitle: entity?.getTitle?.( entityRecord ) || '',\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn dirtyRecords;\n\t},\n\t( state ) => [ state.entities.data ]\n);\n\n/**\n * Returns the list of entities currently being saved.\n *\n * @param {Object} state State tree.\n *\n * @return {[{ title: string, key: string, name: string, kind: string }]} The list of records being saved.\n */\nexport const __experimentalGetEntitiesBeingSaved = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tentities: { data },\n\t\t} = state;\n\t\tconst recordsBeingSaved = [];\n\t\tObject.keys( data ).forEach( ( kind ) => {\n\t\t\tObject.keys( data[ kind ] ).forEach( ( name ) => {\n\t\t\t\tconst primaryKeys = Object.keys(\n\t\t\t\t\tdata[ kind ][ name ].saving\n\t\t\t\t).filter( ( primaryKey ) =>\n\t\t\t\t\tisSavingEntityRecord( state, kind, name, primaryKey )\n\t\t\t\t);\n\n\t\t\t\tif ( primaryKeys.length ) {\n\t\t\t\t\tconst entity = getEntity( state, kind, name );\n\t\t\t\t\tprimaryKeys.forEach( ( primaryKey ) => {\n\t\t\t\t\t\tconst entityRecord = getEditedEntityRecord(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tprimaryKey\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordsBeingSaved.push( {\n\t\t\t\t\t\t\t// We avoid using primaryKey because it's transformed into a string\n\t\t\t\t\t\t\t// when it's used as an object key.\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tentityRecord[\n\t\t\t\t\t\t\t\t\tentity.key || DEFAULT_ENTITY_KEY\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\ttitle: entity?.getTitle?.( entityRecord ) || '',\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t\treturn recordsBeingSaved;\n\t},\n\t( state ) => [ state.entities.data ]\n);\n\n/**\n * Returns the specified entity record's edits.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's edits.\n */\nexport function getEntityRecordEdits( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [ kind, name, 'edits', recordId ] );\n}\n\n/**\n * Returns the specified entity record's non transient edits.\n *\n * Transient edits don't create an undo level, and\n * are not considered for change detection.\n * They are defined in the entity's config.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's non transient edits.\n */\nexport const getEntityRecordNonTransientEdits = createSelector(\n\t( state, kind, name, recordId ) => {\n\t\tconst { transientEdits } = getEntity( state, kind, name ) || {};\n\t\tconst edits = getEntityRecordEdits( state, kind, name, recordId ) || {};\n\t\tif ( ! transientEdits ) {\n\t\t\treturn edits;\n\t\t}\n\t\treturn Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\tif ( ! transientEdits[ key ] ) {\n\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} );\n\t},\n\t( state, kind, name, recordId ) => [\n\t\tstate.entities.config,\n\t\tget( state.entities.data, [ kind, name, 'edits', recordId ] ),\n\t]\n);\n\n/**\n * Returns true if the specified entity record has edits,\n * and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record has edits or not.\n */\nexport function hasEditsForEntityRecord( state, kind, name, recordId ) {\n\treturn (\n\t\tisSavingEntityRecord( state, kind, name, recordId ) ||\n\t\tObject.keys(\n\t\t\tgetEntityRecordNonTransientEdits( state, kind, name, recordId )\n\t\t).length > 0\n\t);\n}\n\n/**\n * Returns the specified entity record, merged with its edits.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record, merged with its edits.\n */\nexport const getEditedEntityRecord = createSelector(\n\t( state, kind, name, recordId ) => ( {\n\t\t...getRawEntityRecord( state, kind, name, recordId ),\n\t\t...getEntityRecordEdits( state, kind, name, recordId ),\n\t} ),\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tstate.entities.config,\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [ kind, name, 'edits', recordId ] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns true if the specified entity record is autosaving, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is autosaving or not.\n */\nexport function isAutosavingEntityRecord( state, kind, name, recordId ) {\n\tconst { pending, isAutosave } = get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'saving', recordId ],\n\t\t{}\n\t);\n\treturn Boolean( pending && isAutosave );\n}\n\n/**\n * Returns true if the specified entity record is saving, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is saving or not.\n */\nexport function isSavingEntityRecord( state, kind, name, recordId ) {\n\treturn get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'saving', recordId, 'pending' ],\n\t\tfalse\n\t);\n}\n\n/**\n * Returns true if the specified entity record is deleting, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is deleting or not.\n */\nexport function isDeletingEntityRecord( state, kind, name, recordId ) {\n\treturn get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'deleting', recordId, 'pending' ],\n\t\tfalse\n\t);\n}\n\n/**\n * Returns the specified entity record's last save error.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's save error.\n */\nexport function getLastEntitySaveError( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'saving',\n\t\trecordId,\n\t\t'error',\n\t] );\n}\n\n/**\n * Returns the specified entity record's last delete error.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's save error.\n */\nexport function getLastEntityDeleteError( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'deleting',\n\t\trecordId,\n\t\t'error',\n\t] );\n}\n\n/**\n * Returns the current undo offset for the\n * entity records edits history. The offset\n * represents how many items from the end\n * of the history stack we are at. 0 is the\n * last edit, -1 is the second last, and so on.\n *\n * @param {Object} state State tree.\n *\n * @return {number} The current undo offset.\n */\nfunction getCurrentUndoOffset( state ) {\n\treturn state.undo.offset;\n}\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param {Object} state State tree.\n *\n * @return {Object?} The edit.\n */\nexport function getUndoEdit( state ) {\n\treturn state.undo[ state.undo.length - 2 + getCurrentUndoOffset( state ) ];\n}\n\n/**\n * Returns the next edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param {Object} state State tree.\n *\n * @return {Object?} The edit.\n */\nexport function getRedoEdit( state ) {\n\treturn state.undo[ state.undo.length + getCurrentUndoOffset( state ) ];\n}\n\n/**\n * Returns true if there is a previous edit from the current undo offset\n * for the entity records edits history, and false otherwise.\n *\n * @param {Object} state State tree.\n *\n * @return {boolean} Whether there is a previous edit or not.\n */\nexport function hasUndo( state ) {\n\treturn Boolean( getUndoEdit( state ) );\n}\n\n/**\n * Returns true if there is a next edit from the current undo offset\n * for the entity records edits history, and false otherwise.\n *\n * @param {Object} state State tree.\n *\n * @return {boolean} Whether there is a next edit or not.\n */\nexport function hasRedo( state ) {\n\treturn Boolean( getRedoEdit( state ) );\n}\n\n/**\n * Return the current theme.\n *\n * @param {Object} state Data state.\n *\n * @return {Object} The current theme.\n */\nexport function getCurrentTheme( state ) {\n\treturn getEntityRecord( state, 'root', 'theme', state.currentTheme );\n}\n\n/**\n * Return the ID of the current global styles object.\n *\n * @param {Object} state Data state.\n *\n * @return {string} The current global styles ID.\n */\nexport function __experimentalGetCurrentGlobalStylesId( state ) {\n\treturn state.currentGlobalStylesId;\n}\n\n/**\n * Return theme supports data in the index.\n *\n * @param {Object} state Data state.\n *\n * @return {*} Index data.\n */\nexport function getThemeSupports( state ) {\n\treturn getCurrentTheme( state )?.theme_supports ?? EMPTY_OBJECT;\n}\n\n/**\n * Returns the embed preview for the given URL.\n *\n * @param {Object} state Data state.\n * @param {string} url Embedded URL.\n *\n * @return {*} Undefined if the preview has not been fetched, otherwise, the preview fetched from the embed preview API.\n */\nexport function getEmbedPreview( state, url ) {\n\treturn state.embedPreviews[ url ];\n}\n\n/**\n * Determines if the returned preview is an oEmbed link fallback.\n *\n * WordPress can be configured to return a simple link to a URL if it is not embeddable.\n * We need to be able to determine if a URL is embeddable or not, based on what we\n * get back from the oEmbed preview API.\n *\n * @param {Object} state Data state.\n * @param {string} url Embedded URL.\n *\n * @return {boolean} Is the preview for the URL an oEmbed link fallback.\n */\nexport function isPreviewEmbedFallback( state, url ) {\n\tconst preview = state.embedPreviews[ url ];\n\tconst oEmbedLinkCheck = '<a href=\"' + url + '\">' + url + '</a>';\n\tif ( ! preview ) {\n\t\treturn false;\n\t}\n\treturn preview.html === oEmbedLinkCheck;\n}\n\n/**\n * Returns whether the current user can perform the given action on the given\n * REST resource.\n *\n * Calling this may trigger an OPTIONS request to the REST API via the\n * `canUser()` resolver.\n *\n * https://developer.wordpress.org/rest-api/reference/\n *\n * @param {Object} state Data state.\n * @param {string} action Action to check. One of: 'create', 'read', 'update', 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {string=} id Optional ID of the rest resource to check.\n *\n * @return {boolean|undefined} Whether or not the user can perform the action,\n * or `undefined` if the OPTIONS request is still being made.\n */\nexport function canUser( state, action, resource, id ) {\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\treturn get( state, [ 'userPermissions', key ] );\n}\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * Calling this may trigger an OPTIONS request to the REST API via the\n * `canUser()` resolver.\n *\n * https://developer.wordpress.org/rest-api/reference/\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n * @return {boolean|undefined} Whether or not the user can edit,\n * or `undefined` if the OPTIONS request is still being made.\n */\nexport function canUserEditEntityRecord( state, kind, name, recordId ) {\n\tconst entity = getEntity( state, kind, name );\n\tif ( ! entity ) {\n\t\treturn false;\n\t}\n\tconst resource = entity.__unstable_rest_base;\n\n\treturn canUser( state, 'update', resource, recordId );\n}\n\n/**\n * Returns the latest autosaves for the post.\n *\n * May return multiple autosaves since the backend stores one autosave per\n * author for each post.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n *\n * @return {?Array} An array of autosaves for the post, or undefined if there is none.\n */\nexport function getAutosaves( state, postType, postId ) {\n\treturn state.autosaves[ postId ];\n}\n\n/**\n * Returns the autosave for the post and author.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n * @param {number} authorId The id of the author.\n *\n * @return {?Object} The autosave for the post and author.\n */\nexport function getAutosave( state, postType, postId, authorId ) {\n\tif ( authorId === undefined ) {\n\t\treturn;\n\t}\n\n\tconst autosaves = state.autosaves[ postId ];\n\treturn find( autosaves, { author: authorId } );\n}\n\n/**\n * Returns true if the REST request for autosaves has completed.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n *\n * @return {boolean} True if the REST request was completed. False otherwise.\n */\nexport const hasFetchedAutosaves = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\treturn select( STORE_NAME ).hasFinishedResolution( 'getAutosaves', [\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t] );\n\t}\n);\n\n/**\n * Returns a new reference when edited values have changed. This is useful in\n * inferring where an edit has been made between states by comparison of the\n * return values using strict equality.\n *\n * @example\n *\n * ```\n * const hasEditOccurred = (\n * getReferenceByDistinctEdits( beforeState ) !==\n * getReferenceByDistinctEdits( afterState )\n * );\n * ```\n *\n * @param {Object} state Editor state.\n *\n * @return {*} A value whose reference will change only when an edit occurs.\n */\nexport const getReferenceByDistinctEdits = createSelector(\n\t() => [],\n\t( state ) => [\n\t\tstate.undo.length,\n\t\tstate.undo.offset,\n\t\tstate.undo.flattenedUndo,\n\t]\n);\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {Object} state Editor state.\n * @param {string} link Link.\n *\n * @return {Object?} The template record.\n */\nexport function __experimentalGetTemplateForLink( state, link ) {\n\tconst records = getEntityRecords( state, 'postType', 'wp_template', {\n\t\t'find-template': link,\n\t} );\n\n\tconst template = records?.length ? records[ 0 ] : null;\n\tif ( template ) {\n\t\treturn getEditedEntityRecord(\n\t\t\tstate,\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\t}\n\treturn template;\n}\n\n/**\n * Retrieve the current theme's base global styles\n *\n * @param {Object} state Editor state.\n *\n * @return {Object?} The Global Styles object.\n */\nexport function __experimentalGetCurrentThemeBaseGlobalStyles( state ) {\n\tconst currentTheme = getCurrentTheme( state );\n\tif ( ! currentTheme ) {\n\t\treturn null;\n\t}\n\treturn state.themeBaseGlobalStyles[ currentTheme.stylesheet ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/selectors.js"],"names":["createSelector","set","map","find","get","filter","compact","createRegistrySelector","addQueryArgs","deprecated","STORE_NAME","getQueriedItems","DEFAULT_ENTITY_KEY","getNormalizedCommaSeparable","isRawAttribute","EMPTY_OBJECT","isRequestingEmbedPreview","select","state","url","isResolving","getAuthors","query","since","alternative","path","getUserQueryResults","getCurrentUser","currentUser","queryID","queryResults","users","queries","id","byId","getEntitiesByKind","kind","entities","config","getEntity","name","getEntityRecord","key","queriedState","data","undefined","context","itemIsComplete","items","item","_fields","filteredItem","fields","f","length","field","split","value","recordId","__experimentalGetEntityRecordNoResolver","getRawEntityRecord","record","Object","keys","reduce","accumulator","_key","hasEntityRecords","Array","isArray","getEntityRecords","__experimentalGetDirtyEntityRecords","dirtyRecords","forEach","primaryKeys","edits","primaryKey","hasEditsForEntityRecord","entity","entityRecord","getEditedEntityRecord","push","title","getTitle","__experimentalGetEntitiesBeingSaved","recordsBeingSaved","saving","isSavingEntityRecord","getEntityRecordEdits","getEntityRecordNonTransientEdits","transientEdits","acc","isAutosavingEntityRecord","pending","isAutosave","Boolean","isDeletingEntityRecord","getLastEntitySaveError","getLastEntityDeleteError","getCurrentUndoOffset","undo","offset","getUndoEdit","getRedoEdit","hasUndo","hasRedo","getCurrentTheme","currentTheme","__experimentalGetCurrentGlobalStylesId","currentGlobalStylesId","getThemeSupports","theme_supports","getEmbedPreview","embedPreviews","isPreviewEmbedFallback","preview","oEmbedLinkCheck","html","canUser","action","resource","join","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","autosaves","getAutosave","authorId","author","hasFetchedAutosaves","hasFinishedResolution","getReferenceByDistinctEdits","flattenedUndo","__experimentalGetTemplateForLink","link","records","template","__experimentalGetCurrentThemeBaseGlobalStyles","themeBaseGlobalStyles","stylesheet"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport { set, map, find, get, filter, compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getQueriedItems } from './queried-data';\nimport { DEFAULT_ENTITY_KEY } from './entities';\nimport { getNormalizedCommaSeparable, isRawAttribute } from './utils';\n\n/**\n * Shared reference to an empty object for cases where it is important to avoid\n * returning a new object reference on every invocation, as in a connected or\n * other pure component which performs `shouldComponentUpdate` check on props.\n * This should be used as a last resort, since the normalized data should be\n * maintained by the reducer result in state.\n */\nconst EMPTY_OBJECT = {};\n\n/**\n * Returns true if a request is in progress for embed preview data, or false\n * otherwise.\n *\n * @param {Object} state Data state.\n * @param {string} url URL the preview would be for.\n *\n * @return {boolean} Whether a request is in progress for an embed preview.\n */\nexport const isRequestingEmbedPreview = createRegistrySelector(\n\t( select ) => ( state, url ) => {\n\t\treturn select( STORE_NAME ).isResolving( 'getEmbedPreview', [ url ] );\n\t}\n);\n\n/**\n * Returns all available authors.\n *\n * @deprecated since 11.3. Callers should use `select( 'core' ).getUsers({ who: 'authors' })` instead.\n *\n * @param {Object} state Data state.\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n * @return {Array} Authors list.\n */\nexport function getAuthors( state, query ) {\n\tdeprecated( \"select( 'core' ).getAuthors()\", {\n\t\tsince: '5.9',\n\t\talternative: \"select( 'core' ).getUsers({ who: 'authors' })\",\n\t} );\n\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\treturn getUserQueryResults( state, path );\n}\n\n/**\n * Returns the current user.\n *\n * @param {Object} state Data state.\n *\n * @return {Object} Current user object.\n */\nexport function getCurrentUser( state ) {\n\treturn state.currentUser;\n}\n\n/**\n * Returns all the users returned by a query ID.\n *\n * @param {Object} state Data state.\n * @param {string} queryID Query ID.\n *\n * @return {Array} Users list.\n */\nexport const getUserQueryResults = createSelector(\n\t( state, queryID ) => {\n\t\tconst queryResults = state.users.queries[ queryID ];\n\n\t\treturn map( queryResults, ( id ) => state.users.byId[ id ] );\n\t},\n\t( state, queryID ) => [ state.users.queries[ queryID ], state.users.byId ]\n);\n\n/**\n * Returns whether the entities for the give kind are loaded.\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n *\n * @return {Array<Object>} Array of entities with config matching kind.\n */\nexport function getEntitiesByKind( state, kind ) {\n\treturn filter( state.entities.config, { kind } );\n}\n\n/**\n * Returns the entity object given its kind and name.\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n *\n * @return {Object} Entity\n */\nexport function getEntity( state, kind, name ) {\n\treturn find( state.entities.config, { kind, name } );\n}\n\n/**\n * Returns the Entity's record object by key. Returns `null` if the value is not\n * yet received, undefined if the value entity is known to not exist, or the\n * entity object if it exists and is received.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key\n * @param {?Object} query Optional query.\n *\n * @return {Object?} Record.\n */\nexport const getEntityRecord = createSelector(\n\t( state, kind, name, key, query ) => {\n\t\tconst queriedState = get( state.entities.data, [\n\t\t\tkind,\n\t\t\tname,\n\t\t\t'queriedData',\n\t\t] );\n\t\tif ( ! queriedState ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst context = query?.context ?? 'default';\n\n\t\tif ( query === undefined ) {\n\t\t\t// If expecting a complete item, validate that completeness.\n\t\t\tif ( ! queriedState.itemIsComplete[ context ]?.[ key ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn queriedState.items[ context ][ key ];\n\t\t}\n\n\t\tconst item = queriedState.items[ context ]?.[ key ];\n\t\tif ( item && query._fields ) {\n\t\t\tconst filteredItem = {};\n\t\t\tconst fields = getNormalizedCommaSeparable( query._fields );\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tconst value = get( item, field );\n\t\t\t\tset( filteredItem, field, value );\n\t\t\t}\n\t\t\treturn filteredItem;\n\t\t}\n\n\t\treturn item;\n\t},\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns the Entity's record object by key. Doesn't trigger a resolver nor requests the entity from the API if the entity record isn't available in the local state.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key\n *\n * @return {Object|null} Record.\n */\nexport function __experimentalGetEntityRecordNoResolver(\n\tstate,\n\tkind,\n\tname,\n\tkey\n) {\n\treturn getEntityRecord( state, kind, name, key );\n}\n\n/**\n * Returns the entity's record object by key,\n * with its attributes mapped to their raw values.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} key Record's key.\n *\n * @return {Object?} Object with the entity's raw attributes.\n */\nexport const getRawEntityRecord = createSelector(\n\t( state, kind, name, key ) => {\n\t\tconst record = getEntityRecord( state, kind, name, key );\n\t\treturn (\n\t\t\trecord &&\n\t\t\tObject.keys( record ).reduce( ( accumulator, _key ) => {\n\t\t\t\tif ( isRawAttribute( getEntity( state, kind, name ), _key ) ) {\n\t\t\t\t\t// Because edits are the \"raw\" attribute values,\n\t\t\t\t\t// we return those from record selectors to make rendering,\n\t\t\t\t\t// comparisons, and joins with edits easier.\n\t\t\t\t\taccumulator[ _key ] = get(\n\t\t\t\t\t\trecord[ _key ],\n\t\t\t\t\t\t'raw',\n\t\t\t\t\t\trecord[ _key ]\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator[ _key ] = record[ _key ];\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, {} )\n\t\t);\n\t},\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tstate.entities.config,\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns true if records have been received for the given set of parameters,\n * or false otherwise.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {?Object} query Optional terms query.\n *\n * @return {boolean} Whether entity records have been received.\n */\nexport function hasEntityRecords( state, kind, name, query ) {\n\treturn Array.isArray( getEntityRecords( state, kind, name, query ) );\n}\n\n/**\n * Returns the Entity's records.\n *\n * @param {Object} state State tree\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {?Object} query Optional terms query.\n *\n * @return {?Array} Records.\n */\nexport function getEntityRecords( state, kind, name, query ) {\n\t// Queried data state is prepopulated for all known entities. If this is not\n\t// assigned for the given parameters, then it is known to not exist.\n\tconst queriedState = get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'queriedData',\n\t] );\n\tif ( ! queriedState ) {\n\t\treturn null;\n\t}\n\treturn getQueriedItems( queriedState, query );\n}\n\n/**\n * Returns the list of dirty entity records.\n *\n * @param {Object} state State tree.\n *\n * @return {[{ title: string, key: string, name: string, kind: string }]} The list of updated records\n */\nexport const __experimentalGetDirtyEntityRecords = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tentities: { data },\n\t\t} = state;\n\t\tconst dirtyRecords = [];\n\t\tObject.keys( data ).forEach( ( kind ) => {\n\t\t\tObject.keys( data[ kind ] ).forEach( ( name ) => {\n\t\t\t\tconst primaryKeys = Object.keys(\n\t\t\t\t\tdata[ kind ][ name ].edits\n\t\t\t\t).filter(\n\t\t\t\t\t( primaryKey ) =>\n\t\t\t\t\t\t// The entity record must exist (not be deleted),\n\t\t\t\t\t\t// and it must have edits.\n\t\t\t\t\t\tgetEntityRecord( state, kind, name, primaryKey ) &&\n\t\t\t\t\t\thasEditsForEntityRecord( state, kind, name, primaryKey )\n\t\t\t\t);\n\n\t\t\t\tif ( primaryKeys.length ) {\n\t\t\t\t\tconst entity = getEntity( state, kind, name );\n\t\t\t\t\tprimaryKeys.forEach( ( primaryKey ) => {\n\t\t\t\t\t\tconst entityRecord = getEditedEntityRecord(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tprimaryKey\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdirtyRecords.push( {\n\t\t\t\t\t\t\t// We avoid using primaryKey because it's transformed into a string\n\t\t\t\t\t\t\t// when it's used as an object key.\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tentityRecord[\n\t\t\t\t\t\t\t\t\tentity.key || DEFAULT_ENTITY_KEY\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\ttitle: entity?.getTitle?.( entityRecord ) || '',\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn dirtyRecords;\n\t},\n\t( state ) => [ state.entities.data ]\n);\n\n/**\n * Returns the list of entities currently being saved.\n *\n * @param {Object} state State tree.\n *\n * @return {[{ title: string, key: string, name: string, kind: string }]} The list of records being saved.\n */\nexport const __experimentalGetEntitiesBeingSaved = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tentities: { data },\n\t\t} = state;\n\t\tconst recordsBeingSaved = [];\n\t\tObject.keys( data ).forEach( ( kind ) => {\n\t\t\tObject.keys( data[ kind ] ).forEach( ( name ) => {\n\t\t\t\tconst primaryKeys = Object.keys(\n\t\t\t\t\tdata[ kind ][ name ].saving\n\t\t\t\t).filter( ( primaryKey ) =>\n\t\t\t\t\tisSavingEntityRecord( state, kind, name, primaryKey )\n\t\t\t\t);\n\n\t\t\t\tif ( primaryKeys.length ) {\n\t\t\t\t\tconst entity = getEntity( state, kind, name );\n\t\t\t\t\tprimaryKeys.forEach( ( primaryKey ) => {\n\t\t\t\t\t\tconst entityRecord = getEditedEntityRecord(\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tprimaryKey\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordsBeingSaved.push( {\n\t\t\t\t\t\t\t// We avoid using primaryKey because it's transformed into a string\n\t\t\t\t\t\t\t// when it's used as an object key.\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tentityRecord[\n\t\t\t\t\t\t\t\t\tentity.key || DEFAULT_ENTITY_KEY\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\ttitle: entity?.getTitle?.( entityRecord ) || '',\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t\treturn recordsBeingSaved;\n\t},\n\t( state ) => [ state.entities.data ]\n);\n\n/**\n * Returns the specified entity record's edits.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's edits.\n */\nexport function getEntityRecordEdits( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [ kind, name, 'edits', recordId ] );\n}\n\n/**\n * Returns the specified entity record's non transient edits.\n *\n * Transient edits don't create an undo level, and\n * are not considered for change detection.\n * They are defined in the entity's config.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's non transient edits.\n */\nexport const getEntityRecordNonTransientEdits = createSelector(\n\t( state, kind, name, recordId ) => {\n\t\tconst { transientEdits } = getEntity( state, kind, name ) || {};\n\t\tconst edits = getEntityRecordEdits( state, kind, name, recordId ) || {};\n\t\tif ( ! transientEdits ) {\n\t\t\treturn edits;\n\t\t}\n\t\treturn Object.keys( edits ).reduce( ( acc, key ) => {\n\t\t\tif ( ! transientEdits[ key ] ) {\n\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} );\n\t},\n\t( state, kind, name, recordId ) => [\n\t\tstate.entities.config,\n\t\tget( state.entities.data, [ kind, name, 'edits', recordId ] ),\n\t]\n);\n\n/**\n * Returns true if the specified entity record has edits,\n * and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record has edits or not.\n */\nexport function hasEditsForEntityRecord( state, kind, name, recordId ) {\n\treturn (\n\t\tisSavingEntityRecord( state, kind, name, recordId ) ||\n\t\tObject.keys(\n\t\t\tgetEntityRecordNonTransientEdits( state, kind, name, recordId )\n\t\t).length > 0\n\t);\n}\n\n/**\n * Returns the specified entity record, merged with its edits.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record, merged with its edits.\n */\nexport const getEditedEntityRecord = createSelector(\n\t( state, kind, name, recordId ) => ( {\n\t\t...getRawEntityRecord( state, kind, name, recordId ),\n\t\t...getEntityRecordEdits( state, kind, name, recordId ),\n\t} ),\n\t( state, kind, name, recordId, query ) => {\n\t\tconst context = query?.context ?? 'default';\n\t\treturn [\n\t\t\tstate.entities.config,\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'items',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\t'queriedData',\n\t\t\t\t'itemIsComplete',\n\t\t\t\tcontext,\n\t\t\t\trecordId,\n\t\t\t] ),\n\t\t\tget( state.entities.data, [ kind, name, 'edits', recordId ] ),\n\t\t];\n\t}\n);\n\n/**\n * Returns true if the specified entity record is autosaving, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is autosaving or not.\n */\nexport function isAutosavingEntityRecord( state, kind, name, recordId ) {\n\tconst { pending, isAutosave } = get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'saving', recordId ],\n\t\t{}\n\t);\n\treturn Boolean( pending && isAutosave );\n}\n\n/**\n * Returns true if the specified entity record is saving, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is saving or not.\n */\nexport function isSavingEntityRecord( state, kind, name, recordId ) {\n\treturn get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'saving', recordId, 'pending' ],\n\t\tfalse\n\t);\n}\n\n/**\n * Returns true if the specified entity record is deleting, and false otherwise.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {boolean} Whether the entity record is deleting or not.\n */\nexport function isDeletingEntityRecord( state, kind, name, recordId ) {\n\treturn get(\n\t\tstate.entities.data,\n\t\t[ kind, name, 'deleting', recordId, 'pending' ],\n\t\tfalse\n\t);\n}\n\n/**\n * Returns the specified entity record's last save error.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's save error.\n */\nexport function getLastEntitySaveError( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'saving',\n\t\trecordId,\n\t\t'error',\n\t] );\n}\n\n/**\n * Returns the specified entity record's last delete error.\n *\n * @param {Object} state State tree.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number} recordId Record ID.\n *\n * @return {Object?} The entity record's save error.\n */\nexport function getLastEntityDeleteError( state, kind, name, recordId ) {\n\treturn get( state.entities.data, [\n\t\tkind,\n\t\tname,\n\t\t'deleting',\n\t\trecordId,\n\t\t'error',\n\t] );\n}\n\n/**\n * Returns the current undo offset for the\n * entity records edits history. The offset\n * represents how many items from the end\n * of the history stack we are at. 0 is the\n * last edit, -1 is the second last, and so on.\n *\n * @param {Object} state State tree.\n *\n * @return {number} The current undo offset.\n */\nfunction getCurrentUndoOffset( state ) {\n\treturn state.undo.offset;\n}\n\n/**\n * Returns the previous edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param {Object} state State tree.\n *\n * @return {Object?} The edit.\n */\nexport function getUndoEdit( state ) {\n\treturn state.undo[ state.undo.length - 2 + getCurrentUndoOffset( state ) ];\n}\n\n/**\n * Returns the next edit from the current undo offset\n * for the entity records edits history, if any.\n *\n * @param {Object} state State tree.\n *\n * @return {Object?} The edit.\n */\nexport function getRedoEdit( state ) {\n\treturn state.undo[ state.undo.length + getCurrentUndoOffset( state ) ];\n}\n\n/**\n * Returns true if there is a previous edit from the current undo offset\n * for the entity records edits history, and false otherwise.\n *\n * @param {Object} state State tree.\n *\n * @return {boolean} Whether there is a previous edit or not.\n */\nexport function hasUndo( state ) {\n\treturn Boolean( getUndoEdit( state ) );\n}\n\n/**\n * Returns true if there is a next edit from the current undo offset\n * for the entity records edits history, and false otherwise.\n *\n * @param {Object} state State tree.\n *\n * @return {boolean} Whether there is a next edit or not.\n */\nexport function hasRedo( state ) {\n\treturn Boolean( getRedoEdit( state ) );\n}\n\n/**\n * Return the current theme.\n *\n * @param {Object} state Data state.\n *\n * @return {Object} The current theme.\n */\nexport function getCurrentTheme( state ) {\n\treturn getEntityRecord( state, 'root', 'theme', state.currentTheme );\n}\n\n/**\n * Return the ID of the current global styles object.\n *\n * @param {Object} state Data state.\n *\n * @return {string} The current global styles ID.\n */\nexport function __experimentalGetCurrentGlobalStylesId( state ) {\n\treturn state.currentGlobalStylesId;\n}\n\n/**\n * Return theme supports data in the index.\n *\n * @param {Object} state Data state.\n *\n * @return {*} Index data.\n */\nexport function getThemeSupports( state ) {\n\treturn getCurrentTheme( state )?.theme_supports ?? EMPTY_OBJECT;\n}\n\n/**\n * Returns the embed preview for the given URL.\n *\n * @param {Object} state Data state.\n * @param {string} url Embedded URL.\n *\n * @return {*} Undefined if the preview has not been fetched, otherwise, the preview fetched from the embed preview API.\n */\nexport function getEmbedPreview( state, url ) {\n\treturn state.embedPreviews[ url ];\n}\n\n/**\n * Determines if the returned preview is an oEmbed link fallback.\n *\n * WordPress can be configured to return a simple link to a URL if it is not embeddable.\n * We need to be able to determine if a URL is embeddable or not, based on what we\n * get back from the oEmbed preview API.\n *\n * @param {Object} state Data state.\n * @param {string} url Embedded URL.\n *\n * @return {boolean} Is the preview for the URL an oEmbed link fallback.\n */\nexport function isPreviewEmbedFallback( state, url ) {\n\tconst preview = state.embedPreviews[ url ];\n\tconst oEmbedLinkCheck = '<a href=\"' + url + '\">' + url + '</a>';\n\tif ( ! preview ) {\n\t\treturn false;\n\t}\n\treturn preview.html === oEmbedLinkCheck;\n}\n\n/**\n * Returns whether the current user can perform the given action on the given\n * REST resource.\n *\n * Calling this may trigger an OPTIONS request to the REST API via the\n * `canUser()` resolver.\n *\n * https://developer.wordpress.org/rest-api/reference/\n *\n * @param {Object} state Data state.\n * @param {string} action Action to check. One of: 'create', 'read', 'update', 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {string=} id Optional ID of the rest resource to check.\n *\n * @return {boolean|undefined} Whether or not the user can perform the action,\n * or `undefined` if the OPTIONS request is still being made.\n */\nexport function canUser( state, action, resource, id ) {\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\treturn get( state, [ 'userPermissions', key ] );\n}\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * Calling this may trigger an OPTIONS request to the REST API via the\n * `canUser()` resolver.\n *\n * https://developer.wordpress.org/rest-api/reference/\n *\n * @param {Object} state Data state.\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n * @return {boolean|undefined} Whether or not the user can edit,\n * or `undefined` if the OPTIONS request is still being made.\n */\nexport function canUserEditEntityRecord( state, kind, name, recordId ) {\n\tconst entity = getEntity( state, kind, name );\n\tif ( ! entity ) {\n\t\treturn false;\n\t}\n\tconst resource = entity.__unstable_rest_base;\n\n\treturn canUser( state, 'update', resource, recordId );\n}\n\n/**\n * Returns the latest autosaves for the post.\n *\n * May return multiple autosaves since the backend stores one autosave per\n * author for each post.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n *\n * @return {?Array} An array of autosaves for the post, or undefined if there is none.\n */\nexport function getAutosaves( state, postType, postId ) {\n\treturn state.autosaves[ postId ];\n}\n\n/**\n * Returns the autosave for the post and author.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n * @param {number} authorId The id of the author.\n *\n * @return {?Object} The autosave for the post and author.\n */\nexport function getAutosave( state, postType, postId, authorId ) {\n\tif ( authorId === undefined ) {\n\t\treturn;\n\t}\n\n\tconst autosaves = state.autosaves[ postId ];\n\treturn find( autosaves, { author: authorId } );\n}\n\n/**\n * Returns true if the REST request for autosaves has completed.\n *\n * @param {Object} state State tree.\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n *\n * @return {boolean} True if the REST request was completed. False otherwise.\n */\nexport const hasFetchedAutosaves = createRegistrySelector(\n\t( select ) => ( state, postType, postId ) => {\n\t\treturn select( STORE_NAME ).hasFinishedResolution( 'getAutosaves', [\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t] );\n\t}\n);\n\n/**\n * Returns a new reference when edited values have changed. This is useful in\n * inferring where an edit has been made between states by comparison of the\n * return values using strict equality.\n *\n * @example\n *\n * ```\n * const hasEditOccurred = (\n * getReferenceByDistinctEdits( beforeState ) !==\n * getReferenceByDistinctEdits( afterState )\n * );\n * ```\n *\n * @param {Object} state Editor state.\n *\n * @return {*} A value whose reference will change only when an edit occurs.\n */\nexport const getReferenceByDistinctEdits = createSelector(\n\t() => [],\n\t( state ) => [\n\t\tstate.undo.length,\n\t\tstate.undo.offset,\n\t\tstate.undo.flattenedUndo,\n\t]\n);\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {Object} state Editor state.\n * @param {string} link Link.\n *\n * @return {Object?} The template record.\n */\nexport function __experimentalGetTemplateForLink( state, link ) {\n\tconst records = getEntityRecords( state, 'postType', 'wp_template', {\n\t\t'find-template': link,\n\t} );\n\n\tconst template = records?.length ? records[ 0 ] : null;\n\tif ( template ) {\n\t\treturn getEditedEntityRecord(\n\t\t\tstate,\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\t}\n\treturn template;\n}\n\n/**\n * Retrieve the current theme's base global styles\n *\n * @param {Object} state Editor state.\n *\n * @return {Object?} The Global Styles object.\n */\nexport function __experimentalGetCurrentThemeBaseGlobalStyles( state ) {\n\tconst currentTheme = getCurrentTheme( state );\n\tif ( ! currentTheme ) {\n\t\treturn null;\n\t}\n\treturn state.themeBaseGlobalStyles[ currentTheme.stylesheet ];\n}\n"]}
@@ -5,10 +5,17 @@
5
5
  *
6
6
  * @return {Function} Enhanced resolver.
7
7
  */
8
- const forwardResolver = resolverName => (...args) => async ({
9
- resolveSelect
10
- }) => {
11
- await resolveSelect[resolverName](...args);
8
+ const forwardResolver = resolverName => function () {
9
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10
+ args[_key] = arguments[_key];
11
+ }
12
+
13
+ return async _ref => {
14
+ let {
15
+ resolveSelect
16
+ } = _ref;
17
+ await resolveSelect[resolverName](...args);
18
+ };
12
19
  };
13
20
 
14
21
  export default forwardResolver;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/utils/forward-resolver.js"],"names":["forwardResolver","resolverName","args","resolveSelect"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,eAAe,GAAKC,YAAF,IAAoB,CAAE,GAAGC,IAAL,KAAe,OAAQ;AAClEC,EAAAA;AADkE,CAAR,KAEpD;AACN,QAAMA,aAAa,CAAEF,YAAF,CAAb,CAA+B,GAAGC,IAAlC,CAAN;AACA,CAJD;;AAMA,eAAeF,eAAf","sourcesContent":["/**\n * Higher-order function which forward the resolution to another resolver with the same arguments.\n *\n * @param {string} resolverName forwarded resolver.\n *\n * @return {Function} Enhanced resolver.\n */\nconst forwardResolver = ( resolverName ) => ( ...args ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect[ resolverName ]( ...args );\n};\n\nexport default forwardResolver;\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/utils/forward-resolver.js"],"names":["forwardResolver","resolverName","args","resolveSelect"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,eAAe,GAAKC,YAAF,IAAoB;AAAA,oCAAKC,IAAL;AAAKA,IAAAA,IAAL;AAAA;;AAAA,SAAe,cAEpD;AAAA,QAF4D;AAClEC,MAAAA;AADkE,KAE5D;AACN,UAAMA,aAAa,CAAEF,YAAF,CAAb,CAA+B,GAAGC,IAAlC,CAAN;AACA,GAJ2C;AAAA,CAA5C;;AAMA,eAAeF,eAAf","sourcesContent":["/**\n * Higher-order function which forward the resolution to another resolver with the same arguments.\n *\n * @param {string} resolverName forwarded resolver.\n *\n * @return {Function} Enhanced resolver.\n */\nconst forwardResolver = ( resolverName ) => ( ...args ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect[ resolverName ]( ...args );\n};\n\nexport default forwardResolver;\n"]}
@@ -6,7 +6,9 @@
6
6
  *
7
7
  * @return {Function} Higher-order reducer.
8
8
  */
9
- export const onSubKey = actionProperty => reducer => (state = {}, action) => {
9
+ export const onSubKey = actionProperty => reducer => function () {
10
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
11
+ let action = arguments.length > 1 ? arguments[1] : undefined;
10
12
  // Retrieve subkey from action. Do not track if undefined; useful for cases
11
13
  // where reducer is scoped by action shape.
12
14
  const key = action[actionProperty];
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/utils/on-sub-key.js"],"names":["onSubKey","actionProperty","reducer","state","action","key","undefined","nextKeyState"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,QAAQ,GAAKC,cAAF,IAAwBC,OAAF,IAAe,CAC5DC,KAAK,GAAG,EADoD,EAE5DC,MAF4D,KAGxD;AACJ;AACA;AACA,QAAMC,GAAG,GAAGD,MAAM,CAAEH,cAAF,CAAlB;;AACA,MAAKI,GAAG,KAAKC,SAAb,EAAyB;AACxB,WAAOH,KAAP;AACA,GANG,CAQJ;AACA;;;AACA,QAAMI,YAAY,GAAGL,OAAO,CAAEC,KAAK,CAAEE,GAAF,CAAP,EAAgBD,MAAhB,CAA5B;;AACA,MAAKG,YAAY,KAAKJ,KAAK,CAAEE,GAAF,CAA3B,EAAqC;AACpC,WAAOF,KAAP;AACA;;AAED,SAAO,EACN,GAAGA,KADG;AAEN,KAAEE,GAAF,GAASE;AAFH,GAAP;AAIA,CAtBM;AAwBP,eAAeP,QAAf","sourcesContent":["/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param {string} actionProperty Action property by which to key object.\n *\n * @return {Function} Higher-order reducer.\n */\nexport const onSubKey = ( actionProperty ) => ( reducer ) => (\n\tstate = {},\n\taction\n) => {\n\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t// where reducer is scoped by action shape.\n\tconst key = action[ actionProperty ];\n\tif ( key === undefined ) {\n\t\treturn state;\n\t}\n\n\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t// reducer which returns undefined on a key which is not yet tracked.\n\tconst nextKeyState = reducer( state[ key ], action );\n\tif ( nextKeyState === state[ key ] ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\t...state,\n\t\t[ key ]: nextKeyState,\n\t};\n};\n\nexport default onSubKey;\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/utils/on-sub-key.js"],"names":["onSubKey","actionProperty","reducer","state","action","key","undefined","nextKeyState"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,QAAQ,GAAKC,cAAF,IAAwBC,OAAF,IAAe,YAGxD;AAAA,MAFJC,KAEI,uEAFI,EAEJ;AAAA,MADJC,MACI;AACJ;AACA;AACA,QAAMC,GAAG,GAAGD,MAAM,CAAEH,cAAF,CAAlB;;AACA,MAAKI,GAAG,KAAKC,SAAb,EAAyB;AACxB,WAAOH,KAAP;AACA,GANG,CAQJ;AACA;;;AACA,QAAMI,YAAY,GAAGL,OAAO,CAAEC,KAAK,CAAEE,GAAF,CAAP,EAAgBD,MAAhB,CAA5B;;AACA,MAAKG,YAAY,KAAKJ,KAAK,CAAEE,GAAF,CAA3B,EAAqC;AACpC,WAAOF,KAAP;AACA;;AAED,SAAO,EACN,GAAGA,KADG;AAEN,KAAEE,GAAF,GAASE;AAFH,GAAP;AAIA,CAtBM;AAwBP,eAAeP,QAAf","sourcesContent":["/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param {string} actionProperty Action property by which to key object.\n *\n * @return {Function} Higher-order reducer.\n */\nexport const onSubKey = ( actionProperty ) => ( reducer ) => (\n\tstate = {},\n\taction\n) => {\n\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t// where reducer is scoped by action shape.\n\tconst key = action[ actionProperty ];\n\tif ( key === undefined ) {\n\t\treturn state;\n\t}\n\n\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t// reducer which returns undefined on a key which is not yet tracked.\n\tconst nextKeyState = reducer( state[ key ], action );\n\tif ( nextKeyState === state[ key ] ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\t...state,\n\t\t[ key ]: nextKeyState,\n\t};\n};\n\nexport default onSubKey;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/core-data",
3
- "version": "4.0.5",
3
+ "version": "4.0.10-next.33ec3857e2.0",
4
4
  "description": "Access to and manipulation of core WordPress entities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -29,16 +29,16 @@
29
29
  "{src,build,build-module}/index.js"
30
30
  ],
31
31
  "dependencies": {
32
- "@babel/runtime": "^7.13.10",
33
- "@wordpress/api-fetch": "^5.2.5",
34
- "@wordpress/blocks": "^11.1.3",
35
- "@wordpress/data": "^6.1.3",
36
- "@wordpress/deprecated": "^3.2.2",
37
- "@wordpress/element": "^4.0.3",
38
- "@wordpress/html-entities": "^3.2.2",
39
- "@wordpress/i18n": "^4.2.3",
40
- "@wordpress/is-shallow-equal": "^4.2.0",
41
- "@wordpress/url": "^3.3.0",
32
+ "@babel/runtime": "^7.16.0",
33
+ "@wordpress/api-fetch": "^5.2.7-next.33ec3857e2.0",
34
+ "@wordpress/blocks": "^11.1.5-next.33ec3857e2.0",
35
+ "@wordpress/data": "^6.1.6-next.33ec3857e2.0",
36
+ "@wordpress/deprecated": "^3.2.4-next.33ec3857e2.0",
37
+ "@wordpress/element": "^4.0.6-next.33ec3857e2.0",
38
+ "@wordpress/html-entities": "^3.2.4-next.33ec3857e2.0",
39
+ "@wordpress/i18n": "^4.2.5-next.33ec3857e2.0",
40
+ "@wordpress/is-shallow-equal": "^4.2.2-next.33ec3857e2.0",
41
+ "@wordpress/url": "^3.3.2-next.33ec3857e2.0",
42
42
  "equivalent-key-map": "^0.2.2",
43
43
  "lodash": "^4.17.21",
44
44
  "rememo": "^3.0.0",
@@ -47,5 +47,5 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "393c2b5533837fd637e998d23f0124c081a10df0"
50
+ "gitHead": "51c7917ea7fac72953702f24d6daac87d99e7617"
51
51
  }
package/src/entities.js CHANGED
@@ -104,7 +104,7 @@ export const defaultEntities = [
104
104
  {
105
105
  name: 'menu',
106
106
  kind: 'root',
107
- baseURL: '/__experimental/menus',
107
+ baseURL: '/wp/v2/menus',
108
108
  baseURLParams: { context: 'edit' },
109
109
  plural: 'menus',
110
110
  label: __( 'Menu' ),
@@ -112,7 +112,7 @@ export const defaultEntities = [
112
112
  {
113
113
  name: 'menuItem',
114
114
  kind: 'root',
115
- baseURL: '/__experimental/menu-items',
115
+ baseURL: '/wp/v2/menu-items',
116
116
  baseURLParams: { context: 'edit' },
117
117
  plural: 'menuItems',
118
118
  label: __( 'Menu Item' ),
@@ -121,7 +121,7 @@ export const defaultEntities = [
121
121
  {
122
122
  name: 'menuLocation',
123
123
  kind: 'root',
124
- baseURL: '/__experimental/menu-locations',
124
+ baseURL: '/wp/v2/menu-locations',
125
125
  baseURLParams: { context: 'edit' },
126
126
  plural: 'menuLocations',
127
127
  label: __( 'Menu Location' ),
@@ -130,7 +130,7 @@ export const defaultEntities = [
130
130
  {
131
131
  name: 'navigationArea',
132
132
  kind: 'root',
133
- baseURL: '/__experimental/block-navigation-areas',
133
+ baseURL: '/wp/v2/block-navigation-areas',
134
134
  baseURLParams: { context: 'edit' },
135
135
  plural: 'navigationAreas',
136
136
  label: __( 'Navigation Area' ),
@@ -154,6 +154,14 @@ export const defaultEntities = [
154
154
  baseURLParams: { context: 'edit' },
155
155
  key: 'stylesheet',
156
156
  },
157
+ {
158
+ label: __( 'Plugins' ),
159
+ name: 'plugin',
160
+ kind: 'root',
161
+ baseURL: '/wp/v2/plugins',
162
+ baseURLParams: { context: 'edit' },
163
+ key: 'plugin',
164
+ },
157
165
  ];
158
166
 
159
167
  export const kinds = [
package/src/resolvers.js CHANGED
@@ -107,6 +107,7 @@ export const getEntityRecord = ( kind, name, key = '', query ) => async ( {
107
107
  } catch ( error ) {
108
108
  // We need a way to handle and access REST API errors in state
109
109
  // Until then, catching the error ensures the resolver is marked as resolved.
110
+ // See similar implementation in `getEntityRecords()`.
110
111
  } finally {
111
112
  dispatch.__unstableReleaseStoreLock( lock );
112
113
  }
@@ -201,6 +202,10 @@ export const getEntityRecords = ( kind, name, query = {} ) => async ( {
201
202
  args: resolutionsArgs,
202
203
  } );
203
204
  }
205
+ } catch ( error ) {
206
+ // We need a way to handle and access REST API errors in state
207
+ // Until then, catching the error ensures the resolver is marked as resolved.
208
+ // See similar implementation in `getEntityRecord()`.
204
209
  } finally {
205
210
  dispatch.__unstableReleaseStoreLock( lock );
206
211
  }
package/src/selectors.js CHANGED
@@ -28,17 +28,6 @@ import { getNormalizedCommaSeparable, isRawAttribute } from './utils';
28
28
  */
29
29
  const EMPTY_OBJECT = {};
30
30
 
31
- /**
32
- * Shared reference to an empty array for cases where it is important to avoid
33
- * returning a new array reference on every invocation, as in a connected or
34
- * other pure component which performs `shouldComponentUpdate` check on props.
35
- * This should be used as a last resort, since the normalized data should be
36
- * maintained by the reducer result in state.
37
- *
38
- * @type {Array}
39
- */
40
- const EMPTY_ARRAY = [];
41
-
42
31
  /**
43
32
  * Returns true if a request is in progress for embed preview data, or false
44
33
  * otherwise.
@@ -304,16 +293,14 @@ export function hasEntityRecords( state, kind, name, query ) {
304
293
  */
305
294
  export function getEntityRecords( state, kind, name, query ) {
306
295
  // Queried data state is prepopulated for all known entities. If this is not
307
- // assigned for the given parameters, then it is known to not exist. Thus, a
308
- // return value of an empty array is used instead of `null` (where `null` is
309
- // otherwise used to represent an unknown state).
296
+ // assigned for the given parameters, then it is known to not exist.
310
297
  const queriedState = get( state.entities.data, [
311
298
  kind,
312
299
  name,
313
300
  'queriedData',
314
301
  ] );
315
302
  if ( ! queriedState ) {
316
- return EMPTY_ARRAY;
303
+ return null;
317
304
  }
318
305
  return getQueriedItems( queriedState, query );
319
306
  }
@@ -120,7 +120,7 @@ describe( 'saveEditedEntityRecord', () => {
120
120
  {
121
121
  kind: 'root',
122
122
  name: 'navigationArea',
123
- baseURL: '/__experimental/block-navigation-areas',
123
+ baseURL: '/wp/v2/block-navigation-areas',
124
124
  },
125
125
  ];
126
126
  const select = {
@@ -160,7 +160,7 @@ describe( 'saveEditedEntityRecord', () => {
160
160
  {
161
161
  kind: 'root',
162
162
  name: 'navigationArea',
163
- baseURL: '/__experimental/block-navigation-areas',
163
+ baseURL: '/wp/v2/block-navigation-areas',
164
164
  key: 'area',
165
165
  },
166
166
  ];
@@ -160,14 +160,14 @@ describe( 'hasEntityRecords', () => {
160
160
  expect( hasEntityRecords( state, 'root', 'postType' ) ).toBe( false );
161
161
  } );
162
162
 
163
- it( 'returns true if the entity configuration is not known', () => {
163
+ it( 'returns false if the entity configuration is not known', () => {
164
164
  const state = deepFreeze( {
165
165
  entities: {
166
166
  data: {},
167
167
  },
168
168
  } );
169
169
 
170
- expect( hasEntityRecords( state, 'root', 'postType' ) ).toBe( true );
170
+ expect( hasEntityRecords( state, 'root', 'postType' ) ).toBe( false );
171
171
  } );
172
172
 
173
173
  it( 'returns true if entity records have been received', () => {
@@ -295,14 +295,14 @@ describe( 'getEntityRecords', () => {
295
295
  expect( getEntityRecords( state, 'root', 'postType' ) ).toBe( null );
296
296
  } );
297
297
 
298
- it( 'should return an empty array for an unknown entity configuration', () => {
298
+ it( 'should return null for an unknown entity configuration', () => {
299
299
  const state = deepFreeze( {
300
300
  entities: {
301
301
  data: {},
302
302
  },
303
303
  } );
304
304
 
305
- expect( getEntityRecords( state, 'root', 'postType' ) ).toEqual( [] );
305
+ expect( getEntityRecords( state, 'root', 'postType' ) ).toBe( null );
306
306
  } );
307
307
 
308
308
  it( 'should return all the records', () => {