@wordpress/core-data 4.3.0 → 4.4.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 (65) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/README.md +27 -3
  3. package/build/batch/default-processor.js +1 -1
  4. package/build/batch/default-processor.js.map +1 -1
  5. package/build/entities.js.map +1 -1
  6. package/build/fetch/__experimental-fetch-link-suggestions.js +48 -11
  7. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  8. package/build/hooks/use-entity-record.js +4 -4
  9. package/build/hooks/use-entity-record.js.map +1 -1
  10. package/build/hooks/use-entity-records.js +4 -4
  11. package/build/hooks/use-entity-records.js.map +1 -1
  12. package/build/hooks/use-query-select.js.map +1 -1
  13. package/build/reducer.js +61 -9
  14. package/build/reducer.js.map +1 -1
  15. package/build/resolvers.js +31 -1
  16. package/build/resolvers.js.map +1 -1
  17. package/build/selectors.js +30 -4
  18. package/build/selectors.js.map +1 -1
  19. package/build/types.js +6 -0
  20. package/build/types.js.map +1 -0
  21. package/build/utils/if-matching-action.js +4 -2
  22. package/build/utils/if-matching-action.js.map +1 -1
  23. package/build/utils/on-sub-key.js +3 -1
  24. package/build/utils/on-sub-key.js.map +1 -1
  25. package/build/utils/replace-action.js +4 -2
  26. package/build/utils/replace-action.js.map +1 -1
  27. package/build-module/batch/default-processor.js +1 -1
  28. package/build-module/batch/default-processor.js.map +1 -1
  29. package/build-module/entities.js.map +1 -1
  30. package/build-module/fetch/__experimental-fetch-link-suggestions.js +48 -11
  31. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  32. package/build-module/hooks/use-entity-record.js +4 -4
  33. package/build-module/hooks/use-entity-record.js.map +1 -1
  34. package/build-module/hooks/use-entity-records.js +4 -4
  35. package/build-module/hooks/use-entity-records.js.map +1 -1
  36. package/build-module/hooks/use-query-select.js.map +1 -1
  37. package/build-module/reducer.js +58 -9
  38. package/build-module/reducer.js.map +1 -1
  39. package/build-module/resolvers.js +24 -0
  40. package/build-module/resolvers.js.map +1 -1
  41. package/build-module/selectors.js +26 -4
  42. package/build-module/selectors.js.map +1 -1
  43. package/build-module/types.js +2 -0
  44. package/build-module/types.js.map +1 -0
  45. package/build-module/utils/if-matching-action.js +4 -2
  46. package/build-module/utils/if-matching-action.js.map +1 -1
  47. package/build-module/utils/on-sub-key.js +3 -1
  48. package/build-module/utils/on-sub-key.js.map +1 -1
  49. package/build-module/utils/replace-action.js +4 -2
  50. package/build-module/utils/replace-action.js.map +1 -1
  51. package/package.json +11 -11
  52. package/src/batch/default-processor.js +1 -0
  53. package/src/{entities.js → entities.ts} +7 -4
  54. package/src/fetch/__experimental-fetch-link-suggestions.js +56 -20
  55. package/src/fetch/test/__experimental-fetch-link-suggestions.js +39 -1
  56. package/src/hooks/use-entity-record.ts +4 -4
  57. package/src/hooks/use-entity-records.ts +4 -4
  58. package/src/hooks/use-query-select.ts +12 -7
  59. package/src/reducer.js +50 -7
  60. package/src/resolvers.js +14 -0
  61. package/src/{selectors.js → selectors.ts} +26 -4
  62. package/src/types.ts +3 -0
  63. package/src/utils/if-matching-action.js +4 -2
  64. package/src/utils/on-sub-key.js +3 -1
  65. package/src/utils/replace-action.js +4 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/fetch/__experimental-fetch-link-suggestions.js"],"names":["apiFetch","addQueryArgs","decodeEntities","__","fetchLinkSuggestions","search","searchOptions","settings","isInitialSuggestions","type","undefined","subtype","page","perPage","disablePostFormats","queries","push","path","per_page","then","results","map","result","meta","kind","catch","Promise","all","reduce","accumulator","current","concat","filter","id","slice","url","title"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Filters the search by type\n *\n * @typedef { 'post' | 'term' | 'post-format' } WPLinkSearchType\n */\n\n/**\n * A link with an id may be of kind post-type or taxonomy\n *\n * @typedef { 'post-type' | 'taxonomy' } WPKind\n */\n\n/**\n * @typedef WPLinkSearchOptions\n *\n * @property {boolean} [isInitialSuggestions] Displays initial search suggestions, when true.\n * @property {WPLinkSearchType} [type] Filters by search type.\n * @property {string} [subtype] Slug of the post-type or taxonomy.\n * @property {number} [page] Which page of results to return.\n * @property {number} [perPage] Search results per page.\n */\n\n/**\n * @typedef WPLinkSearchResult\n *\n * @property {number} id Post or term id.\n * @property {string} url Link url.\n * @property {string} title Title of the link.\n * @property {string} type The taxonomy or post type slug or type URL.\n * @property {WPKind} [kind] Link kind of post-type or taxonomy\n */\n\n/**\n * @typedef WPEditorSettings\n *\n * @property {boolean} [ disablePostFormats ] Disables post formats, when true.\n */\n\n/**\n * Fetches link suggestions from the API.\n *\n * @async\n * @param {string} search\n * @param {WPLinkSearchOptions} [searchOptions]\n * @param {WPEditorSettings} [settings]\n *\n * @example\n * ```js\n * import { __experimentalFetchLinkSuggestions as fetchLinkSuggestions } from '@wordpress/core-data';\n *\n * //...\n *\n * export function initialize( id, settings ) {\n *\n * settings.__experimentalFetchLinkSuggestions = (\n * search,\n * searchOptions\n * ) => fetchLinkSuggestions( search, searchOptions, settings );\n * ```\n * @return {Promise< WPLinkSearchResult[] >} List of search suggestions\n */\nconst fetchLinkSuggestions = async (\n\tsearch,\n\tsearchOptions = {},\n\tsettings = {}\n) => {\n\tconst {\n\t\tisInitialSuggestions = false,\n\t\ttype = undefined,\n\t\tsubtype = undefined,\n\t\tpage = undefined,\n\t\tperPage = isInitialSuggestions ? 3 : 20,\n\t} = searchOptions;\n\n\tconst { disablePostFormats = false } = settings;\n\n\tconst queries = [];\n\n\tif ( ! type || type === 'post' ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'post',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'post-type', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] ) // Fail by returning no results.\n\t\t);\n\t}\n\n\tif ( ! type || type === 'term' ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'term',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'taxonomy', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] )\n\t\t);\n\t}\n\n\tif ( ! disablePostFormats && ( ! type || type === 'post-format' ) ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'post-format',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'taxonomy', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] )\n\t\t);\n\t}\n\n\treturn Promise.all( queries ).then( ( results ) => {\n\t\treturn results\n\t\t\t.reduce(\n\t\t\t\t( accumulator, current ) => accumulator.concat( current ), // Flatten list.\n\t\t\t\t[]\n\t\t\t)\n\t\t\t.filter(\n\t\t\t\t/**\n\t\t\t\t * @param {{ id: number }} result\n\t\t\t\t */\n\t\t\t\t( result ) => {\n\t\t\t\t\treturn !! result.id;\n\t\t\t\t}\n\t\t\t)\n\t\t\t.slice( 0, perPage )\n\t\t\t.map(\n\t\t\t\t/**\n\t\t\t\t * @param {{ id: number, meta?: object, url:string, title?:string, subtype?: string, type?: string }} result\n\t\t\t\t */\n\t\t\t\t( result ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: result.id,\n\t\t\t\t\t\turl: result.url,\n\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\tdecodeEntities( result.title || '' ) ||\n\t\t\t\t\t\t\t__( '(no title)' ),\n\t\t\t\t\t\ttype: result.subtype || result.type,\n\t\t\t\t\t\tkind: result?.meta?.kind,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t);\n\t} );\n};\n\nexport default fetchLinkSuggestions;\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/fetch/__experimental-fetch-link-suggestions.js"],"names":["apiFetch","addQueryArgs","decodeEntities","__","fetchLinkSuggestions","search","searchOptions","settings","isInitialSuggestions","type","undefined","subtype","page","perPage","disablePostFormats","queries","push","path","per_page","then","results","map","result","meta","kind","catch","Promise","all","reduce","accumulator","current","concat","filter","id","slice","isMedia","url","source_url","title","rendered"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Filters the search by type\n *\n * @typedef { 'attachment' | 'post' | 'term' | 'post-format' } WPLinkSearchType\n */\n\n/**\n * A link with an id may be of kind post-type or taxonomy\n *\n * @typedef { 'post-type' | 'taxonomy' } WPKind\n */\n\n/**\n * @typedef WPLinkSearchOptions\n *\n * @property {boolean} [isInitialSuggestions] Displays initial search suggestions, when true.\n * @property {WPLinkSearchType} [type] Filters by search type.\n * @property {string} [subtype] Slug of the post-type or taxonomy.\n * @property {number} [page] Which page of results to return.\n * @property {number} [perPage] Search results per page.\n */\n\n/**\n * @typedef WPLinkSearchResult\n *\n * @property {number} id Post or term id.\n * @property {string} url Link url.\n * @property {string} title Title of the link.\n * @property {string} type The taxonomy or post type slug or type URL.\n * @property {WPKind} [kind] Link kind of post-type or taxonomy\n */\n\n/**\n * @typedef WPLinkSearchResultAugments\n *\n * @property {{kind: WPKind}} [meta] Contains kind information.\n * @property {WPKind} [subtype] Optional subtype if it exists.\n */\n\n/**\n * @typedef {WPLinkSearchResult & WPLinkSearchResultAugments} WPLinkSearchResultAugmented\n */\n\n/**\n * @typedef WPEditorSettings\n *\n * @property {boolean} [ disablePostFormats ] Disables post formats, when true.\n */\n\n/**\n * Fetches link suggestions from the API.\n *\n * @async\n * @param {string} search\n * @param {WPLinkSearchOptions} [searchOptions]\n * @param {WPEditorSettings} [settings]\n *\n * @example\n * ```js\n * import { __experimentalFetchLinkSuggestions as fetchLinkSuggestions } from '@wordpress/core-data';\n *\n * //...\n *\n * export function initialize( id, settings ) {\n *\n * settings.__experimentalFetchLinkSuggestions = (\n * search,\n * searchOptions\n * ) => fetchLinkSuggestions( search, searchOptions, settings );\n * ```\n * @return {Promise< WPLinkSearchResult[] >} List of search suggestions\n */\nconst fetchLinkSuggestions = async (\n\tsearch,\n\tsearchOptions = {},\n\tsettings = {}\n) => {\n\tconst {\n\t\tisInitialSuggestions = false,\n\t\ttype = undefined,\n\t\tsubtype = undefined,\n\t\tpage = undefined,\n\t\tperPage = isInitialSuggestions ? 3 : 20,\n\t} = searchOptions;\n\n\tconst { disablePostFormats = false } = settings;\n\n\t/** @type {Promise<WPLinkSearchResult>[]} */\n\tconst queries = [];\n\n\tif ( ! type || type === 'post' ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'post',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'post-type', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] ) // Fail by returning no results.\n\t\t);\n\t}\n\n\tif ( ! type || type === 'term' ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'term',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'taxonomy', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] ) // Fail by returning no results.\n\t\t);\n\t}\n\n\tif ( ! disablePostFormats && ( ! type || type === 'post-format' ) ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/search', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: 'post-format',\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'taxonomy', subtype },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] ) // Fail by returning no results.\n\t\t);\n\t}\n\n\tif ( ! type || type === 'attachment' ) {\n\t\tqueries.push(\n\t\t\tapiFetch( {\n\t\t\t\tpath: addQueryArgs( '/wp/v2/media', {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t} ),\n\t\t\t} )\n\t\t\t\t.then( ( results ) => {\n\t\t\t\t\treturn results.map( ( result ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...result,\n\t\t\t\t\t\t\tmeta: { kind: 'media' },\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( () => [] ) // Fail by returning no results.\n\t\t);\n\t}\n\n\treturn Promise.all( queries ).then( ( results ) => {\n\t\treturn results\n\t\t\t.reduce(\n\t\t\t\t( /** @type {WPLinkSearchResult[]} */ accumulator, current ) =>\n\t\t\t\t\taccumulator.concat( current ), // Flatten list.\n\t\t\t\t[]\n\t\t\t)\n\t\t\t.filter(\n\t\t\t\t/**\n\t\t\t\t * @param {{ id: number }} result\n\t\t\t\t */\n\t\t\t\t( result ) => {\n\t\t\t\t\treturn !! result.id;\n\t\t\t\t}\n\t\t\t)\n\t\t\t.slice( 0, perPage )\n\t\t\t.map( ( /** @type {WPLinkSearchResultAugmented} */ result ) => {\n\t\t\t\tconst isMedia = result.type === 'attachment';\n\n\t\t\t\treturn {\n\t\t\t\t\tid: result.id,\n\t\t\t\t\t// @ts-ignore fix when we make this a TS file\n\t\t\t\t\turl: isMedia ? result.source_url : result.url,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\tdecodeEntities(\n\t\t\t\t\t\t\tisMedia\n\t\t\t\t\t\t\t\t? // @ts-ignore fix when we make this a TS file\n\t\t\t\t\t\t\t\t result.title.rendered\n\t\t\t\t\t\t\t\t: result.title || ''\n\t\t\t\t\t\t) || __( '(no title)' ),\n\t\t\t\t\ttype: result.subtype || result.type,\n\t\t\t\t\tkind: result?.meta?.kind,\n\t\t\t\t};\n\t\t\t} );\n\t} );\n};\n\nexport default fetchLinkSuggestions;\n"]}
@@ -7,10 +7,10 @@ import { store as coreStore } from '../';
7
7
  /**
8
8
  * Resolves the specified entity record.
9
9
  *
10
- * @param kind Kind of the requested entity.
11
- * @param name Name of the requested entity.
12
- * @param recordId Record ID of the requested entity.
13
- * @param options Hook options.
10
+ * @param kind Kind of the requested entity.
11
+ * @param name Name of the requested entity.
12
+ * @param recordId Record ID of the requested entity.
13
+ * @param options Hook options.
14
14
  * @param [options.enabled=true] Whether to run the query or short-circuit and return null. Defaults to true.
15
15
  * @example
16
16
  * ```js
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-record.ts"],"names":["useQuerySelect","store","coreStore","__experimentalUseEntityRecord","kind","name","recordId","options","enabled","data","record","rest","query","getEntityRecord"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,6BAAT,CACdC,IADc,EAEdC,IAFc,EAGdC,QAHc,EAKyB;AAAA,MADvCC,OACuC,uEADpB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACoB;AACvC,QAAM;AAAEC,IAAAA,IAAI,EAAEC,MAAR;AAAgB,OAAGC;AAAnB,MAA4BX,cAAc,CAC7CY,KAAF,IAAa;AACZ,QAAK,CAAEL,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO,IAAP;AACA;;AACD,WAAOI,KAAK,CAAEV,SAAF,CAAL,CAAmBW,eAAnB,CAAoCT,IAApC,EAA0CC,IAA1C,EAAgDC,QAAhD,CAAP;AACA,GAN8C,EAO/C,CAAEF,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAO,CAACC,OAAhC,CAP+C,CAAhD;AAUA,SAAO;AACNE,IAAAA,MADM;AAEN,OAAGC;AAFG,GAAP;AAIA","sourcesContent":["/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\n\ninterface EntityRecordResolution< RecordType > {\n\t/** The requested entity record */\n\trecord: RecordType | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\ninterface Options {\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity record.\n *\n * @param kind Kind of the requested entity.\n * @param name Name of the requested entity.\n * @param recordId Record ID of the requested entity.\n * @param options Hook options.\n * @param [options.enabled=true] Whether to run the query or short-circuit and return null. Defaults to true.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { record, isResolving } = useEntityRecord( 'postType', 'page', id );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return record.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 1 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using `getEntityRecord()`, or resolved if missing.\n *\n * @return {EntityRecordResolution<RecordType>} Entity record data.\n * @template RecordType\n */\nexport default function __experimentalUseEntityRecord< RecordType >(\n\tkind: string,\n\tname: string,\n\trecordId: string | number,\n\toptions: Options = { enabled: true }\n): EntityRecordResolution< RecordType > {\n\tconst { data: record, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecord( kind, name, recordId );\n\t\t},\n\t\t[ kind, name, recordId, options.enabled ]\n\t);\n\n\treturn {\n\t\trecord,\n\t\t...rest,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-record.ts"],"names":["useQuerySelect","store","coreStore","__experimentalUseEntityRecord","kind","name","recordId","options","enabled","data","record","rest","query","getEntityRecord"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,6BAAT,CACdC,IADc,EAEdC,IAFc,EAGdC,QAHc,EAKyB;AAAA,MADvCC,OACuC,uEADpB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACoB;AACvC,QAAM;AAAEC,IAAAA,IAAI,EAAEC,MAAR;AAAgB,OAAGC;AAAnB,MAA4BX,cAAc,CAC7CY,KAAF,IAAa;AACZ,QAAK,CAAEL,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO,IAAP;AACA;;AACD,WAAOI,KAAK,CAAEV,SAAF,CAAL,CAAmBW,eAAnB,CAAoCT,IAApC,EAA0CC,IAA1C,EAAgDC,QAAhD,CAAP;AACA,GAN8C,EAO/C,CAAEF,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAO,CAACC,OAAhC,CAP+C,CAAhD;AAUA,SAAO;AACNE,IAAAA,MADM;AAEN,OAAGC;AAFG,GAAP;AAIA","sourcesContent":["/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\n\ninterface EntityRecordResolution< RecordType > {\n\t/** The requested entity record */\n\trecord: RecordType | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\ninterface Options {\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity record.\n *\n * @param kind Kind of the requested entity.\n * @param name Name of the requested entity.\n * @param recordId Record ID of the requested entity.\n * @param options Hook options.\n * @param [options.enabled=true] Whether to run the query or short-circuit and return null. Defaults to true.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { record, isResolving } = useEntityRecord( 'postType', 'page', id );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return record.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 1 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using `getEntityRecord()`, or resolved if missing.\n *\n * @return {EntityRecordResolution<RecordType>} Entity record data.\n * @template RecordType\n */\nexport default function __experimentalUseEntityRecord< RecordType >(\n\tkind: string,\n\tname: string,\n\trecordId: string | number,\n\toptions: Options = { enabled: true }\n): EntityRecordResolution< RecordType > {\n\tconst { data: record, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecord( kind, name, recordId );\n\t\t},\n\t\t[ kind, name, recordId, options.enabled ]\n\t);\n\n\treturn {\n\t\trecord,\n\t\t...rest,\n\t};\n}\n"]}
@@ -12,10 +12,10 @@ import { store as coreStore } from '../';
12
12
  /**
13
13
  * Resolves the specified entity records.
14
14
  *
15
- * @param kind Kind of the requested entities.
16
- * @param name Name of the requested entities.
17
- * @param queryArgs HTTP query for the requested entities.
18
- * @param options Hook options.
15
+ * @param kind Kind of the requested entities.
16
+ * @param name Name of the requested entities.
17
+ * @param queryArgs HTTP query for the requested entities.
18
+ * @param options Hook options.
19
19
  * @example
20
20
  * ```js
21
21
  * import { useEntityRecord } from '@wordpress/core-data';
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-records.ts"],"names":["addQueryArgs","useQuerySelect","store","coreStore","__experimentalUseEntityRecords","kind","name","queryArgs","options","enabled","queryAsString","data","records","rest","query","getEntityRecords"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAT,QAA6B,gBAA7B;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,8BAAT,CACdC,IADc,EAEdC,IAFc,EAK0B;AAAA,MAFxCC,SAEwC,uEAFD,EAEC;AAAA,MADxCC,OACwC,uEADrB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACqB;AACxC;AACA;AACA;AACA;AACA,QAAMC,aAAa,GAAGV,YAAY,CAAE,EAAF,EAAMO,SAAN,CAAlC;AAEA,QAAM;AAAEI,IAAAA,IAAI,EAAEC,OAAR;AAAiB,OAAGC;AAApB,MAA6BZ,cAAc,CAC9Ca,KAAF,IAAa;AACZ,QAAK,CAAEN,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO;AACNE,QAAAA,IAAI,EAAE;AADA,OAAP;AAGA;;AACD,WAAOG,KAAK,CAAEX,SAAF,CAAL,CAAmBY,gBAAnB,CAAqCV,IAArC,EAA2CC,IAA3C,EAAiDC,SAAjD,CAAP;AACA,GAR+C,EAShD,CAAEF,IAAF,EAAQC,IAAR,EAAcI,aAAd,EAA6BF,OAAO,CAACC,OAArC,CATgD,CAAjD;AAYA,SAAO;AACNG,IAAAA,OADM;AAEN,OAAGC;AAFG,GAAP;AAIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\n\ninterface EntityRecordsResolution< RecordType > {\n\t/** The requested entity record */\n\trecords: RecordType[] | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\ninterface Options {\n\t/**\n\t * Whether to run the query or short-circuit and return null.\n\t *\n\t * @default true\n\t */\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity records.\n *\n * @param kind Kind of the requested entities.\n * @param name Name of the requested entities.\n * @param queryArgs HTTP query for the requested entities.\n * @param options Hook options.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitlesList() {\n * const { records, isResolving } = useEntityRecords( 'postType', 'page' );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return (\n * <ul>\n * {records.map(( page ) => (\n * <li>{ page.title }</li>\n * ))}\n * </ul>\n * );\n * }\n *\n * // Rendered in the application:\n * // <PageTitlesList />\n * ```\n *\n * In the above example, when `PageTitlesList` is rendered into an\n * application, the list of records and the resolution details will be retrieved from\n * the store state using `getEntityRecords()`, or resolved if missing.\n *\n * @return Entity records data.\n * @template RecordType\n */\nexport default function __experimentalUseEntityRecords< RecordType >(\n\tkind: string,\n\tname: string,\n\tqueryArgs: Record< string, unknown > = {},\n\toptions: Options = { enabled: true }\n): EntityRecordsResolution< RecordType > {\n\t// Serialize queryArgs to a string that can be safely used as a React dep.\n\t// We can't just pass queryArgs as one of the deps, because if it is passed\n\t// as an object literal, then it will be a different object on each call even\n\t// if the values remain the same.\n\tconst queryAsString = addQueryArgs( '', queryArgs );\n\n\tconst { data: records, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn {\n\t\t\t\t\tdata: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecords( kind, name, queryArgs );\n\t\t},\n\t\t[ kind, name, queryAsString, options.enabled ]\n\t);\n\n\treturn {\n\t\trecords,\n\t\t...rest,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-records.ts"],"names":["addQueryArgs","useQuerySelect","store","coreStore","__experimentalUseEntityRecords","kind","name","queryArgs","options","enabled","queryAsString","data","records","rest","query","getEntityRecords"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAT,QAA6B,gBAA7B;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,8BAAT,CACdC,IADc,EAEdC,IAFc,EAK0B;AAAA,MAFxCC,SAEwC,uEAFD,EAEC;AAAA,MADxCC,OACwC,uEADrB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACqB;AACxC;AACA;AACA;AACA;AACA,QAAMC,aAAa,GAAGV,YAAY,CAAE,EAAF,EAAMO,SAAN,CAAlC;AAEA,QAAM;AAAEI,IAAAA,IAAI,EAAEC,OAAR;AAAiB,OAAGC;AAApB,MAA6BZ,cAAc,CAC9Ca,KAAF,IAAa;AACZ,QAAK,CAAEN,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO;AACNE,QAAAA,IAAI,EAAE;AADA,OAAP;AAGA;;AACD,WAAOG,KAAK,CAAEX,SAAF,CAAL,CAAmBY,gBAAnB,CAAqCV,IAArC,EAA2CC,IAA3C,EAAiDC,SAAjD,CAAP;AACA,GAR+C,EAShD,CAAEF,IAAF,EAAQC,IAAR,EAAcI,aAAd,EAA6BF,OAAO,CAACC,OAArC,CATgD,CAAjD;AAYA,SAAO;AACNG,IAAAA,OADM;AAEN,OAAGC;AAFG,GAAP;AAIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\n\ninterface EntityRecordsResolution< RecordType > {\n\t/** The requested entity record */\n\trecords: RecordType[] | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\ninterface Options {\n\t/**\n\t * Whether to run the query or short-circuit and return null.\n\t *\n\t * @default true\n\t */\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity records.\n *\n * @param kind Kind of the requested entities.\n * @param name Name of the requested entities.\n * @param queryArgs HTTP query for the requested entities.\n * @param options Hook options.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitlesList() {\n * const { records, isResolving } = useEntityRecords( 'postType', 'page' );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return (\n * <ul>\n * {records.map(( page ) => (\n * <li>{ page.title }</li>\n * ))}\n * </ul>\n * );\n * }\n *\n * // Rendered in the application:\n * // <PageTitlesList />\n * ```\n *\n * In the above example, when `PageTitlesList` is rendered into an\n * application, the list of records and the resolution details will be retrieved from\n * the store state using `getEntityRecords()`, or resolved if missing.\n *\n * @return Entity records data.\n * @template RecordType\n */\nexport default function __experimentalUseEntityRecords< RecordType >(\n\tkind: string,\n\tname: string,\n\tqueryArgs: Record< string, unknown > = {},\n\toptions: Options = { enabled: true }\n): EntityRecordsResolution< RecordType > {\n\t// Serialize queryArgs to a string that can be safely used as a React dep.\n\t// We can't just pass queryArgs as one of the deps, because if it is passed\n\t// as an object literal, then it will be a different object on each call even\n\t// if the values remain the same.\n\tconst queryAsString = addQueryArgs( '', queryArgs );\n\n\tconst { data: records, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn {\n\t\t\t\t\tdata: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecords( kind, name, queryArgs );\n\t\t},\n\t\t[ kind, name, queryAsString, options.enabled ]\n\t);\n\n\treturn {\n\t\trecords,\n\t\t...rest,\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/hooks/use-query-select.ts"],"names":["useSelect","memoize","Status","META_SELECTORS","__experimentalUseQuerySelect","mapQuerySelect","deps","select","registry","resolve","store","enrichSelectors","selectors","resolvers","selectorName","includes","Object","defineProperty","get","getIsResolving","hasFinishedResolution","args","isResolving","hasResolved","data","status","Resolving","Success","Error","Idle"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,MAAT,QAAuB,aAAvB;AAEA,OAAO,MAAMC,cAAc,GAAG,CAC7B,gBAD6B,EAE7B,sBAF6B,EAG7B,uBAH6B,EAI7B,aAJ6B,EAK7B,oBAL6B,CAAvB;;AAsBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAAT,CAAuCC,cAAvC,EAAuDC,IAAvD,EAA8D;AAC5E,SAAON,SAAS,CAAE,CAAEO,MAAF,EAAUC,QAAV,KAAwB;AACzC,UAAMC,OAAO,GAAKC,KAAF,IAAaC,eAAe,CAAEJ,MAAM,CAAEG,KAAF,CAAR,CAA5C;;AACA,WAAOL,cAAc,CAAEI,OAAF,EAAWD,QAAX,CAArB;AACA,GAHe,EAGbF,IAHa,CAAhB;AAIA;;AAOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,eAAe,GAAGV,OAAO,CAAIW,SAAF,IAAiB;AACjD,QAAMC,SAAS,GAAG,EAAlB;;AACA,OAAM,MAAMC,YAAZ,IAA4BF,SAA5B,EAAwC;AACvC,QAAKT,cAAc,CAACY,QAAf,CAAyBD,YAAzB,CAAL,EAA+C;AAC9C;AACA;;AACDE,IAAAA,MAAM,CAACC,cAAP,CAAuBJ,SAAvB,EAAkCC,YAAlC,EAAgD;AAC/CI,MAAAA,GAAG,EAAE,MAAM,YAAe;AACzB,cAAM;AAAEC,UAAAA,cAAF;AAAkBC,UAAAA;AAAlB,YAA4CR,SAAlD;;AADyB,0CAAVS,IAAU;AAAVA,UAAAA,IAAU;AAAA;;AAEzB,cAAMC,WAAW,GAAG,CAAC,CAAEH,cAAc,CAAEL,YAAF,EAAgBO,IAAhB,CAArC;AACA,cAAME,WAAW,GAChB,CAAED,WAAF,IACAF,qBAAqB,CAAEN,YAAF,EAAgBO,IAAhB,CAFtB;AAGA,cAAMG,IAAI,GAAGZ,SAAS,CAAEE,YAAF,CAAT,CAA2B,GAAGO,IAA9B,CAAb;AAEA,YAAII,MAAJ;;AACA,YAAKH,WAAL,EAAmB;AAClBG,UAAAA,MAAM,GAAGvB,MAAM,CAACwB,SAAhB;AACA,SAFD,MAEO,IAAKH,WAAL,EAAmB;AACzB,cAAKC,IAAL,EAAY;AACXC,YAAAA,MAAM,GAAGvB,MAAM,CAACyB,OAAhB;AACA,WAFD,MAEO;AACNF,YAAAA,MAAM,GAAGvB,MAAM,CAAC0B,KAAhB;AACA;AACD,SANM,MAMA;AACNH,UAAAA,MAAM,GAAGvB,MAAM,CAAC2B,IAAhB;AACA;;AAED,eAAO;AACNL,UAAAA,IADM;AAENC,UAAAA,MAFM;AAGNH,UAAAA,WAHM;AAINC,UAAAA;AAJM,SAAP;AAMA;AA5B8C,KAAhD;AA8BA;;AACD,SAAOV,SAAP;AACA,CAtC8B,CAA/B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport memoize from './memoize';\nimport { Status } from './constants';\n\nexport const META_SELECTORS = [\n\t'getIsResolving',\n\t'hasStartedResolution',\n\t'hasFinishedResolution',\n\t'isResolving',\n\t'getCachedResolvers',\n];\n\ninterface QuerySelectResponse {\n\t/** the requested selector return value */\n\tdata: Object;\n\n\t/** is the record still being resolved? Via the `getIsResolving` meta-selector */\n\tisResolving: boolean;\n\n\t/** was the resolution started? Via the `hasStartedResolution` meta-selector */\n\thasStarted: boolean;\n\n\t/** has the resolution finished? Via the `hasFinishedResolution` meta-selector. */\n\thasResolved: boolean;\n}\n\n/**\n * Like useSelect, but the selectors return objects containing\n * both the original data AND the resolution info.\n *\n * @param {Function} mapQuerySelect see useSelect\n * @param {Array} deps see useSelect\n *\n * @example\n * ```js\n * import { useQuerySelect } from '@wordpress/data';\n * import { store as coreDataStore } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { data: page, isResolving } = useQuerySelect( ( query ) => {\n * return query( coreDataStore ).getEntityRecord( 'postType', 'page', id )\n * }, [ id ] );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return page.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 10 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using the `mapSelect` callback on `useQuerySelect`.\n *\n * If the id prop changes then any page in the state for that id is\n * retrieved. If the id prop doesn't change and other props are passed in\n * that do change, the title will not change because the dependency is just\n * the id.\n * @see useSelect\n *\n * @return {QuerySelectResponse} Queried data.\n */\nexport default function __experimentalUseQuerySelect( mapQuerySelect, deps ) {\n\treturn useSelect( ( select, registry ) => {\n\t\tconst resolve = ( store ) => enrichSelectors( select( store ) );\n\t\treturn mapQuerySelect( resolve, registry );\n\t}, deps );\n}\n\ntype QuerySelector = ( ...args ) => QuerySelectResponse;\ninterface EnrichedSelectors {\n\t[ key: string ]: QuerySelector;\n}\n\n/**\n * Transform simple selectors into ones that return an object with the\n * original return value AND the resolution info.\n *\n * @param {Object} selectors Selectors to enrich\n * @return {EnrichedSelectors} Enriched selectors\n */\nconst enrichSelectors = memoize( ( selectors ) => {\n\tconst resolvers = {};\n\tfor ( const selectorName in selectors ) {\n\t\tif ( META_SELECTORS.includes( selectorName ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tObject.defineProperty( resolvers, selectorName, {\n\t\t\tget: () => ( ...args ) => {\n\t\t\t\tconst { getIsResolving, hasFinishedResolution } = selectors;\n\t\t\t\tconst isResolving = !! getIsResolving( selectorName, args );\n\t\t\t\tconst hasResolved =\n\t\t\t\t\t! isResolving &&\n\t\t\t\t\thasFinishedResolution( selectorName, args );\n\t\t\t\tconst data = selectors[ selectorName ]( ...args );\n\n\t\t\t\tlet status;\n\t\t\t\tif ( isResolving ) {\n\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\tif ( data ) {\n\t\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatus = Status.Error;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstatus = Status.Idle;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\thasResolved,\n\t\t\t\t};\n\t\t\t},\n\t\t} );\n\t}\n\treturn resolvers;\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-query-select.ts"],"names":["useSelect","memoize","Status","META_SELECTORS","__experimentalUseQuerySelect","mapQuerySelect","deps","select","registry","resolve","store","enrichSelectors","selectors","resolvers","selectorName","includes","Object","defineProperty","get","getIsResolving","hasFinishedResolution","args","isResolving","hasResolved","data","status","Resolving","Success","Error","Idle"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,MAAT,QAAuB,aAAvB;AAEA,OAAO,MAAMC,cAAc,GAAG,CAC7B,gBAD6B,EAE7B,sBAF6B,EAG7B,uBAH6B,EAI7B,aAJ6B,EAK7B,oBAL6B,CAAvB;;AAsBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAAT,CAAuCC,cAAvC,EAAuDC,IAAvD,EAA8D;AAC5E,SAAON,SAAS,CAAE,CAAEO,MAAF,EAAUC,QAAV,KAAwB;AACzC,UAAMC,OAAO,GAAKC,KAAF,IAAaC,eAAe,CAAEJ,MAAM,CAAEG,KAAF,CAAR,CAA5C;;AACA,WAAOL,cAAc,CAAEI,OAAF,EAAWD,QAAX,CAArB;AACA,GAHe,EAGbF,IAHa,CAAhB;AAIA;;AAYD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,eAAe,GAAGV,OAAO,CAAMW,SAAF,IAAiB;AACnD,QAAMC,SAAS,GAAG,EAAlB;;AACA,OAAM,MAAMC,YAAZ,IAA4BF,SAA5B,EAAwC;AACvC,QAAKT,cAAc,CAACY,QAAf,CAAyBD,YAAzB,CAAL,EAA+C;AAC9C;AACA;;AACDE,IAAAA,MAAM,CAACC,cAAP,CAAuBJ,SAAvB,EAAkCC,YAAlC,EAAgD;AAC/CI,MAAAA,GAAG,EAAE,MAAM,YAA0B;AACpC,cAAM;AAAEC,UAAAA,cAAF;AAAkBC,UAAAA;AAAlB,YAA4CR,SAAlD;;AADoC,0CAArBS,IAAqB;AAArBA,UAAAA,IAAqB;AAAA;;AAEpC,cAAMC,WAAW,GAAG,CAAC,CAAEH,cAAc,CAAEL,YAAF,EAAgBO,IAAhB,CAArC;AACA,cAAME,WAAW,GAChB,CAAED,WAAF,IACAF,qBAAqB,CAAEN,YAAF,EAAgBO,IAAhB,CAFtB;AAGA,cAAMG,IAAI,GAAGZ,SAAS,CAAEE,YAAF,CAAT,CAA2B,GAAGO,IAA9B,CAAb;AAEA,YAAII,MAAJ;;AACA,YAAKH,WAAL,EAAmB;AAClBG,UAAAA,MAAM,GAAGvB,MAAM,CAACwB,SAAhB;AACA,SAFD,MAEO,IAAKH,WAAL,EAAmB;AACzB,cAAKC,IAAL,EAAY;AACXC,YAAAA,MAAM,GAAGvB,MAAM,CAACyB,OAAhB;AACA,WAFD,MAEO;AACNF,YAAAA,MAAM,GAAGvB,MAAM,CAAC0B,KAAhB;AACA;AACD,SANM,MAMA;AACNH,UAAAA,MAAM,GAAGvB,MAAM,CAAC2B,IAAhB;AACA;;AAED,eAAO;AACNL,UAAAA,IADM;AAENC,UAAAA,MAFM;AAGNH,UAAAA,WAHM;AAINC,UAAAA;AAJM,SAAP;AAMA;AA5B8C,KAAhD;AA8BA;;AACD,SAAOV,SAAP;AACA,CAtC8B,CAA/B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport memoize from './memoize';\nimport { Status } from './constants';\n\nexport const META_SELECTORS = [\n\t'getIsResolving',\n\t'hasStartedResolution',\n\t'hasFinishedResolution',\n\t'isResolving',\n\t'getCachedResolvers',\n];\n\ninterface QuerySelectResponse< Data > {\n\t/** the requested selector return value */\n\tdata: Data;\n\n\t/** is the record still being resolved? Via the `getIsResolving` meta-selector */\n\tisResolving: boolean;\n\n\t/** was the resolution started? Via the `hasStartedResolution` meta-selector */\n\thasStarted: boolean;\n\n\t/** has the resolution finished? Via the `hasFinishedResolution` meta-selector. */\n\thasResolved: boolean;\n}\n\n/**\n * Like useSelect, but the selectors return objects containing\n * both the original data AND the resolution info.\n *\n * @param {Function} mapQuerySelect see useSelect\n * @param {Array} deps see useSelect\n *\n * @example\n * ```js\n * import { useQuerySelect } from '@wordpress/data';\n * import { store as coreDataStore } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { data: page, isResolving } = useQuerySelect( ( query ) => {\n * return query( coreDataStore ).getEntityRecord( 'postType', 'page', id )\n * }, [ id ] );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return page.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 10 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using the `mapSelect` callback on `useQuerySelect`.\n *\n * If the id prop changes then any page in the state for that id is\n * retrieved. If the id prop doesn't change and other props are passed in\n * that do change, the title will not change because the dependency is just\n * the id.\n * @see useSelect\n *\n * @return {QuerySelectResponse} Queried data.\n */\nexport default function __experimentalUseQuerySelect( mapQuerySelect, deps ) {\n\treturn useSelect( ( select, registry ) => {\n\t\tconst resolve = ( store ) => enrichSelectors( select( store ) );\n\t\treturn mapQuerySelect( resolve, registry );\n\t}, deps );\n}\n\ninterface EnrichedSelectors {\n\t< Selectors extends Record< string, ( ...args: any[] ) => any > >(\n\t\tselectors: Selectors\n\t): {\n\t\t[ Selector in keyof Selectors ]: (\n\t\t\t...args: Parameters< Selectors[ Selector ] >\n\t\t) => QuerySelectResponse< ReturnType< Selectors[ Selector ] > >;\n\t};\n}\n\n/**\n * Transform simple selectors into ones that return an object with the\n * original return value AND the resolution info.\n *\n * @param {Object} selectors Selectors to enrich\n * @return {EnrichedSelectors} Enriched selectors\n */\nconst enrichSelectors = memoize( ( ( selectors ) => {\n\tconst resolvers = {};\n\tfor ( const selectorName in selectors ) {\n\t\tif ( META_SELECTORS.includes( selectorName ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tObject.defineProperty( resolvers, selectorName, {\n\t\t\tget: () => ( ...args: unknown[] ) => {\n\t\t\t\tconst { getIsResolving, hasFinishedResolution } = selectors;\n\t\t\t\tconst isResolving = !! getIsResolving( selectorName, args );\n\t\t\t\tconst hasResolved =\n\t\t\t\t\t! isResolving &&\n\t\t\t\t\thasFinishedResolution( selectorName, args );\n\t\t\t\tconst data = selectors[ selectorName ]( ...args );\n\n\t\t\t\tlet status;\n\t\t\t\tif ( isResolving ) {\n\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\tif ( data ) {\n\t\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatus = Status.Error;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstatus = Status.Idle;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\thasResolved,\n\t\t\t\t};\n\t\t\t},\n\t\t} );\n\t}\n\treturn resolvers;\n} ) as EnrichedSelectors );\n"]}
@@ -15,6 +15,8 @@ import isShallowEqual from '@wordpress/is-shallow-equal';
15
15
  import { ifMatchingAction, replaceAction } from './utils';
16
16
  import { reducer as queriedDataReducer } from './queried-data';
17
17
  import { rootEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';
18
+ /** @typedef {import('./types').AnyFunction} AnyFunction */
19
+
18
20
  /**
19
21
  * Reducer managing terms state. Keyed by taxonomy slug, the value is either
20
22
  * undefined (if no request has been made for given taxonomy), null (if a
@@ -203,7 +205,7 @@ export function themeGlobalStyleVariations() {
203
205
  *
204
206
  * @param {Object} entityConfig Entity config.
205
207
  *
206
- * @return {Function} Reducer.
208
+ * @return {AnyFunction} Reducer.
207
209
  */
208
210
 
209
211
  function entity(entityConfig) {
@@ -382,17 +384,35 @@ export const entities = function () {
382
384
  };
383
385
  };
384
386
  /**
385
- * Reducer keeping track of entity edit undo history.
387
+ * @typedef {Object} UndoStateMeta
386
388
  *
387
- * @param {Object} state Current state.
388
- * @param {Object} action Dispatched action.
389
+ * @property {number} offset Where in the undo stack we are.
390
+ * @property {Object} [flattenedUndo] Flattened form of undo stack.
391
+ */
392
+
393
+ /** @typedef {Array<Object> & UndoStateMeta} UndoState */
394
+
395
+ /**
396
+ * @type {UndoState}
389
397
  *
390
- * @return {Object} Updated state.
398
+ * @todo Given how we use this we might want to make a custom class for it.
391
399
  */
392
400
 
393
- const UNDO_INITIAL_STATE = [];
394
- UNDO_INITIAL_STATE.offset = 0;
401
+ const UNDO_INITIAL_STATE = Object.assign([], {
402
+ offset: 0
403
+ });
404
+ /** @type {Object} */
405
+
395
406
  let lastEditAction;
407
+ /**
408
+ * Reducer keeping track of entity edit undo history.
409
+ *
410
+ * @param {UndoState} state Current state.
411
+ * @param {Object} action Dispatched action.
412
+ *
413
+ * @return {UndoState} Updated state.
414
+ */
415
+
396
416
  export function undo() {
397
417
  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : UNDO_INITIAL_STATE;
398
418
  let action = arguments.length > 1 ? arguments[1] : undefined;
@@ -419,10 +439,13 @@ export function undo() {
419
439
  };
420
440
  }
421
441
  }
442
+ /** @type {UndoState} */
443
+
422
444
 
423
445
  let nextState;
424
446
 
425
447
  if (isUndoOrRedo) {
448
+ // @ts-ignore we might consider using Object.assign({}, state)
426
449
  nextState = [...state];
427
450
  nextState.offset = state.offset + (action.meta.isUndo ? -1 : 1);
428
451
 
@@ -458,6 +481,7 @@ export function undo() {
458
481
 
459
482
 
460
483
  if (!isCreateUndoLevel && !Object.keys(action.edits).some(key => !action.transientEdits[key])) {
484
+ // @ts-ignore we might consider using Object.assign({}, state)
461
485
  nextState = [...state];
462
486
  nextState.flattenedUndo = { ...state.flattenedUndo,
463
487
  ...action.edits
@@ -467,7 +491,8 @@ export function undo() {
467
491
  } // Clear potential redos, because this only supports linear history.
468
492
 
469
493
 
470
- nextState = nextState || state.slice(0, state.offset || undefined);
494
+ nextState = // @ts-ignore this needs additional cleanup, probably involving code-level changes
495
+ nextState || state.slice(0, state.offset || undefined);
471
496
  nextState.offset = nextState.offset || 0;
472
497
  nextState.pop();
473
498
 
@@ -578,6 +603,28 @@ export function autosaves() {
578
603
 
579
604
  return state;
580
605
  }
606
+ export function blockPatterns() {
607
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
608
+ let action = arguments.length > 1 ? arguments[1] : undefined;
609
+
610
+ switch (action.type) {
611
+ case 'RECEIVE_BLOCK_PATTERNS':
612
+ return action.patterns;
613
+ }
614
+
615
+ return state;
616
+ }
617
+ export function blockPatternCategories() {
618
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
619
+ let action = arguments.length > 1 ? arguments[1] : undefined;
620
+
621
+ switch (action.type) {
622
+ case 'RECEIVE_BLOCK_PATTERN_CATEGORIES':
623
+ return action.categories;
624
+ }
625
+
626
+ return state;
627
+ }
581
628
  export default combineReducers({
582
629
  terms,
583
630
  users,
@@ -591,6 +638,8 @@ export default combineReducers({
591
638
  undo,
592
639
  embedPreviews,
593
640
  userPermissions,
594
- autosaves
641
+ autosaves,
642
+ blockPatterns,
643
+ blockPatternCategories
595
644
  });
596
645
  //# sourceMappingURL=reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","rootEntitiesConfig","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","themeGlobalStyleVariations","variations","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","records","UNDO_INITIAL_STATE","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { rootEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme global styles variations.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.variations,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {Function} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = rootEntitiesConfig, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities.\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.records, action );\n\n\tif (\n\t\tnewData === state.records &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\trecords: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nconst UNDO_INITIAL_STATE = [];\nUNDO_INITIAL_STATE.offset = 0;\nlet lastEditAction;\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet nextState;\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\t// We also have to take into account if the `lastEditAction` had opted out\n\t\t\t\t\t// of being tracked in undo history, like the action that persists the latest\n\t\t\t\t\t// content right before saving. In that case we have to update the `lastEditAction`\n\t\t\t\t\t// to avoid returning early before applying the existing flattened undos.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\tif ( ! lastEditAction.meta.undo ) {\n\t\t\t\t\t\tlastEditAction.meta.undo = {\n\t\t\t\t\t\t\tedits: {},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeGlobalStyleVariations,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/reducer.js"],"names":["keyBy","map","groupBy","flowRight","isEqual","get","combineReducers","isShallowEqual","ifMatchingAction","replaceAction","reducer","queriedDataReducer","rootEntitiesConfig","DEFAULT_ENTITY_KEY","terms","state","action","type","taxonomy","users","byId","queries","queryID","user","id","currentUser","taxonomies","currentTheme","undefined","stylesheet","currentGlobalStylesId","themeBaseGlobalStyles","globalStyles","themeGlobalStyleVariations","variations","entity","entityConfig","name","kind","key","queriedData","edits","context","query","nextState","record","items","recordId","nextEdits","Object","keys","reduce","acc","persistedEdits","length","forEach","saving","pending","error","isAutosave","deleting","entitiesConfig","entities","newConfig","config","entitiesDataReducer","entitiesByKind","entries","memo","subEntities","kindReducer","kindMemo","newData","records","UNDO_INITIAL_STATE","assign","offset","lastEditAction","undo","isCreateUndoLevel","isUndoOrRedo","meta","isUndo","isRedo","some","transientEdits","flattenedUndo","slice","pop","push","comparisonUndoEdits","values","filter","edit","comparisonEdits","embedPreviews","url","preview","userPermissions","isAllowed","autosaves","postId","autosavesData","blockPatterns","patterns","blockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport { ifMatchingAction, replaceAction } from './utils';\nimport { reducer as queriedDataReducer } from './queried-data';\nimport { rootEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\n\n/** @typedef {import('./types').AnyFunction} AnyFunction */\n\n/**\n * Reducer managing terms state. Keyed by taxonomy slug, the value is either\n * undefined (if no request has been made for given taxonomy), null (if a\n * request is in-flight for given taxonomy), or the array of terms for the\n * taxonomy.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function terms( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TERMS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.taxonomy ]: action.terms,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing authors state. Keyed by id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function users( state = { byId: {}, queries: {} }, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_QUERY':\n\t\t\treturn {\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t...keyBy( action.users, 'id' ),\n\t\t\t\t},\n\t\t\t\tqueries: {\n\t\t\t\t\t...state.queries,\n\t\t\t\t\t[ action.queryID ]: map(\n\t\t\t\t\t\taction.users,\n\t\t\t\t\t\t( user ) => user.id\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing current user state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function currentUser( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_USER':\n\t\t\treturn action.currentUser;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing taxonomies.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function taxonomies( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_TAXONOMIES':\n\t\t\treturn action.taxonomies;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current theme.\n *\n * @param {string|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} Updated state.\n */\nexport function currentTheme( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_THEME':\n\t\t\treturn action.currentTheme.stylesheet;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the current global styles id.\n *\n * @param {string|undefined} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {string|undefined} Updated state.\n */\nexport function currentGlobalStylesId( state = undefined, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':\n\t\t\treturn action.id;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme base global styles.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeBaseGlobalStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.globalStyles,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the theme global styles variations.\n *\n * @param {Record<string, object>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Record<string, object>} Updated state.\n */\nexport function themeGlobalStyleVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.stylesheet ]: action.variations,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher Order Reducer for a given entity config. It supports:\n *\n * - Fetching\n * - Editing\n * - Saving\n *\n * @param {Object} entityConfig Entity config.\n *\n * @return {AnyFunction} Reducer.\n */\nfunction entity( entityConfig ) {\n\treturn flowRight( [\n\t\t// Limit to matching action type so we don't attempt to replace action on\n\t\t// an unhandled action.\n\t\tifMatchingAction(\n\t\t\t( action ) =>\n\t\t\t\taction.name &&\n\t\t\t\taction.kind &&\n\t\t\t\taction.name === entityConfig.name &&\n\t\t\t\taction.kind === entityConfig.kind\n\t\t),\n\n\t\t// Inject the entity config into the action.\n\t\treplaceAction( ( action ) => {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\tkey: entityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t};\n\t\t} ),\n\t] )(\n\t\tcombineReducers( {\n\t\t\tqueriedData: queriedDataReducer,\n\n\t\t\tedits: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'RECEIVE_ITEMS':\n\t\t\t\t\t\tconst context = action?.query?.context ?? 'default';\n\t\t\t\t\t\tif ( context !== 'default' ) {\n\t\t\t\t\t\t\treturn state;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst nextState = { ...state };\n\n\t\t\t\t\t\tfor ( const record of action.items ) {\n\t\t\t\t\t\t\tconst recordId = record[ action.key ];\n\t\t\t\t\t\t\tconst edits = nextState[ recordId ];\n\t\t\t\t\t\t\tif ( ! edits ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst nextEdits = Object.keys( edits ).reduce(\n\t\t\t\t\t\t\t\t( acc, key ) => {\n\t\t\t\t\t\t\t\t\t// If the edited value is still different to the persisted value,\n\t\t\t\t\t\t\t\t\t// keep the edited value in edits.\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t// Edits are the \"raw\" attribute values, but records may have\n\t\t\t\t\t\t\t\t\t\t// objects with more properties, so we use `get` here for the\n\t\t\t\t\t\t\t\t\t\t// comparison.\n\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\t'raw',\n\t\t\t\t\t\t\t\t\t\t\t\trecord[ key ]\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\t\t\t// Sometimes the server alters the sent value which means\n\t\t\t\t\t\t\t\t\t\t// we need to also remove the edits before the api request.\n\t\t\t\t\t\t\t\t\t\t( ! action.persistedEdits ||\n\t\t\t\t\t\t\t\t\t\t\t! isEqual(\n\t\t\t\t\t\t\t\t\t\t\t\tedits[ key ],\n\t\t\t\t\t\t\t\t\t\t\t\taction.persistedEdits[ key ]\n\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tacc[ key ] = edits[ key ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( Object.keys( nextEdits ).length ) {\n\t\t\t\t\t\t\t\tnextState[ recordId ] = nextEdits;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete nextState[ recordId ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nextState;\n\n\t\t\t\t\tcase 'EDIT_ENTITY_RECORD':\n\t\t\t\t\t\tconst nextEdits = {\n\t\t\t\t\t\t\t...state[ action.recordId ],\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tObject.keys( nextEdits ).forEach( ( key ) => {\n\t\t\t\t\t\t\t// Delete cleared edits so that the properties\n\t\t\t\t\t\t\t// are not considered dirty.\n\t\t\t\t\t\t\tif ( nextEdits[ key ] === undefined ) {\n\t\t\t\t\t\t\t\tdelete nextEdits[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: nextEdits,\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tsaving: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'SAVE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type === 'SAVE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\tisAutosave: action.isAutosave,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\n\t\t\tdeleting: ( state = {}, action ) => {\n\t\t\t\tswitch ( action.type ) {\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_START':\n\t\t\t\t\tcase 'DELETE_ENTITY_RECORD_FINISH':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[ action.recordId ]: {\n\t\t\t\t\t\t\t\tpending:\n\t\t\t\t\t\t\t\t\taction.type ===\n\t\t\t\t\t\t\t\t\t'DELETE_ENTITY_RECORD_START',\n\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn state;\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Reducer keeping track of the registered entities.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function entitiesConfig( state = rootEntitiesConfig, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_ENTITIES':\n\t\t\treturn [ ...state, ...action.entities ];\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the registered entities config and data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport const entities = ( state = {}, action ) => {\n\tconst newConfig = entitiesConfig( state.config, action );\n\n\t// Generates a dynamic reducer for the entities.\n\tlet entitiesDataReducer = state.reducer;\n\tif ( ! entitiesDataReducer || newConfig !== state.config ) {\n\t\tconst entitiesByKind = groupBy( newConfig, 'kind' );\n\t\tentitiesDataReducer = combineReducers(\n\t\t\tObject.entries( entitiesByKind ).reduce(\n\t\t\t\t( memo, [ kind, subEntities ] ) => {\n\t\t\t\t\tconst kindReducer = combineReducers(\n\t\t\t\t\t\tsubEntities.reduce(\n\t\t\t\t\t\t\t( kindMemo, entityConfig ) => ( {\n\t\t\t\t\t\t\t\t...kindMemo,\n\t\t\t\t\t\t\t\t[ entityConfig.name ]: entity( entityConfig ),\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tmemo[ kind ] = kindReducer;\n\t\t\t\t\treturn memo;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst newData = entitiesDataReducer( state.records, action );\n\n\tif (\n\t\tnewData === state.records &&\n\t\tnewConfig === state.config &&\n\t\tentitiesDataReducer === state.reducer\n\t) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\treducer: entitiesDataReducer,\n\t\trecords: newData,\n\t\tconfig: newConfig,\n\t};\n};\n\n/**\n * @typedef {Object} UndoStateMeta\n *\n * @property {number} offset Where in the undo stack we are.\n * @property {Object} [flattenedUndo] Flattened form of undo stack.\n */\n\n/** @typedef {Array<Object> & UndoStateMeta} UndoState */\n\n/**\n * @type {UndoState}\n *\n * @todo Given how we use this we might want to make a custom class for it.\n */\nconst UNDO_INITIAL_STATE = Object.assign( [], { offset: 0 } );\n\n/** @type {Object} */\nlet lastEditAction;\n\n/**\n * Reducer keeping track of entity edit undo history.\n *\n * @param {UndoState} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {UndoState} Updated state.\n */\nexport function undo( state = UNDO_INITIAL_STATE, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'EDIT_ENTITY_RECORD':\n\t\tcase 'CREATE_UNDO_LEVEL':\n\t\t\tlet isCreateUndoLevel = action.type === 'CREATE_UNDO_LEVEL';\n\t\t\tconst isUndoOrRedo =\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t( action.meta.isUndo || action.meta.isRedo );\n\t\t\tif ( isCreateUndoLevel ) {\n\t\t\t\taction = lastEditAction;\n\t\t\t} else if ( ! isUndoOrRedo ) {\n\t\t\t\t// Don't lose the last edit cache if the new one only has transient edits.\n\t\t\t\t// Transient edits don't create new levels so updating the cache would make\n\t\t\t\t// us skip an edit later when creating levels explicitly.\n\t\t\t\tif (\n\t\t\t\t\tObject.keys( action.edits ).some(\n\t\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlastEditAction = action;\n\t\t\t\t} else {\n\t\t\t\t\tlastEditAction = {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tedits: {\n\t\t\t\t\t\t\t...( lastEditAction && lastEditAction.edits ),\n\t\t\t\t\t\t\t...action.edits,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** @type {UndoState} */\n\t\t\tlet nextState;\n\n\t\t\tif ( isUndoOrRedo ) {\n\t\t\t\t// @ts-ignore we might consider using Object.assign({}, state)\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.offset =\n\t\t\t\t\tstate.offset + ( action.meta.isUndo ? -1 : 1 );\n\n\t\t\t\tif ( state.flattenedUndo ) {\n\t\t\t\t\t// The first undo in a sequence of undos might happen while we have\n\t\t\t\t\t// flattened undos in state. If this is the case, we want execution\n\t\t\t\t\t// to continue as if we were creating an explicit undo level. This\n\t\t\t\t\t// will result in an extra undo level being appended with the flattened\n\t\t\t\t\t// undo values.\n\t\t\t\t\t// We also have to take into account if the `lastEditAction` had opted out\n\t\t\t\t\t// of being tracked in undo history, like the action that persists the latest\n\t\t\t\t\t// content right before saving. In that case we have to update the `lastEditAction`\n\t\t\t\t\t// to avoid returning early before applying the existing flattened undos.\n\t\t\t\t\tisCreateUndoLevel = true;\n\t\t\t\t\tif ( ! lastEditAction.meta.undo ) {\n\t\t\t\t\t\tlastEditAction.meta.undo = {\n\t\t\t\t\t\t\tedits: {},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\taction = lastEditAction;\n\t\t\t\t} else {\n\t\t\t\t\treturn nextState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! action.meta.undo ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Transient edits don't create an undo level, but are\n\t\t\t// reachable in the next meaningful edit to which they\n\t\t\t// are merged. They are defined in the entity's config.\n\t\t\tif (\n\t\t\t\t! isCreateUndoLevel &&\n\t\t\t\t! Object.keys( action.edits ).some(\n\t\t\t\t\t( key ) => ! action.transientEdits[ key ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// @ts-ignore we might consider using Object.assign({}, state)\n\t\t\t\tnextState = [ ...state ];\n\t\t\t\tnextState.flattenedUndo = {\n\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t...action.edits,\n\t\t\t\t};\n\t\t\t\tnextState.offset = state.offset;\n\t\t\t\treturn nextState;\n\t\t\t}\n\n\t\t\t// Clear potential redos, because this only supports linear history.\n\t\t\tnextState =\n\t\t\t\t// @ts-ignore this needs additional cleanup, probably involving code-level changes\n\t\t\t\tnextState || state.slice( 0, state.offset || undefined );\n\t\t\tnextState.offset = nextState.offset || 0;\n\t\t\tnextState.pop();\n\t\t\tif ( ! isCreateUndoLevel ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.meta.undo.kind,\n\t\t\t\t\tname: action.meta.undo.name,\n\t\t\t\t\trecordId: action.meta.undo.recordId,\n\t\t\t\t\tedits: {\n\t\t\t\t\t\t...state.flattenedUndo,\n\t\t\t\t\t\t...action.meta.undo.edits,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// When an edit is a function it's an optimization to avoid running some expensive operation.\n\t\t\t// We can't rely on the function references being the same so we opt out of comparing them here.\n\t\t\tconst comparisonUndoEdits = Object.values(\n\t\t\t\taction.meta.undo.edits\n\t\t\t).filter( ( edit ) => typeof edit !== 'function' );\n\t\t\tconst comparisonEdits = Object.values( action.edits ).filter(\n\t\t\t\t( edit ) => typeof edit !== 'function'\n\t\t\t);\n\t\t\tif ( ! isShallowEqual( comparisonUndoEdits, comparisonEdits ) ) {\n\t\t\t\tnextState.push( {\n\t\t\t\t\tkind: action.kind,\n\t\t\t\t\tname: action.name,\n\t\t\t\t\trecordId: action.recordId,\n\t\t\t\t\tedits: isCreateUndoLevel\n\t\t\t\t\t\t? { ...state.flattenedUndo, ...action.edits }\n\t\t\t\t\t\t: action.edits,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing embed preview data.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function embedPreviews( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_EMBED_PREVIEW':\n\t\t\tconst { url, preview } = action;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ url ]: preview,\n\t\t\t};\n\t}\n\treturn state;\n}\n\n/**\n * State which tracks whether the user can perform an action on a REST\n * resource.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function userPermissions( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_USER_PERMISSION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.key ]: action.isAllowed,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer returning autosaves keyed by their parent's post id.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function autosaves( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_AUTOSAVES':\n\t\t\tconst { postId, autosaves: autosavesData } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ postId ]: autosavesData,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\nexport function blockPatterns( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERNS':\n\t\t\treturn action.patterns;\n\t}\n\n\treturn state;\n}\n\nexport function blockPatternCategories( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_BLOCK_PATTERN_CATEGORIES':\n\t\t\treturn action.categories;\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tterms,\n\tusers,\n\tcurrentTheme,\n\tcurrentGlobalStylesId,\n\tcurrentUser,\n\tthemeGlobalStyleVariations,\n\tthemeBaseGlobalStyles,\n\ttaxonomies,\n\tentities,\n\tundo,\n\tembedPreviews,\n\tuserPermissions,\n\tautosaves,\n\tblockPatterns,\n\tblockPatternCategories,\n} );\n"]}
@@ -464,4 +464,28 @@ export const __experimentalGetCurrentThemeGlobalStylesVariations = () => async _
464
464
 
465
465
  dispatch.__experimentalReceiveThemeGlobalStyleVariations(currentTheme.stylesheet, variations);
466
466
  };
467
+ export const getBlockPatterns = () => async _ref16 => {
468
+ let {
469
+ dispatch
470
+ } = _ref16;
471
+ const patterns = await apiFetch({
472
+ path: '/__experimental/block-patterns/patterns'
473
+ });
474
+ dispatch({
475
+ type: 'RECEIVE_BLOCK_PATTERNS',
476
+ patterns
477
+ });
478
+ };
479
+ export const getBlockPatternCategories = () => async _ref17 => {
480
+ let {
481
+ dispatch
482
+ } = _ref17;
483
+ const categories = await apiFetch({
484
+ path: '/__experimental/block-patterns/categories'
485
+ });
486
+ dispatch({
487
+ type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES',
488
+ categories
489
+ });
490
+ };
467
491
  //# sourceMappingURL=resolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["find","includes","get","compact","uniq","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","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["find","includes","get","compact","uniq","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","__experimentalNoFetch","lock","__unstableAcquireStoreLock","exclusive","undefined","_fields","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","resource","id","methods","create","read","update","delete","method","Error","response","parse","allowHeader","headers","isAllowed","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","window","fetch","then","res","json","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getBlockPatterns","patterns","getBlockPatternCategories","categories"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, includes, get, compact, uniq } from 'lodash';\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 = ( query ) => async ( { dispatch } ) => {\n\tconst path = addQueryArgs(\n\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\tquery\n\t);\n\tconst users = await apiFetch( { path } );\n\tdispatch.receiveUserQuery( path, users );\n};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser = () => async ( { dispatch } ) => {\n\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\tdispatch.receiveCurrentUser( currentUser );\n};\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.\n */\nexport const getEntityRecord = ( kind, name, key = '', query ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name, key ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query !== undefined && query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\t// Disable reason: While true that an early return could leave `path`\n\t\t// unused, it's important that path is derived using the query prior to\n\t\t// additional query modifications in the condition below, since those\n\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t// for how the request is made to the REST API.\n\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst path = addQueryArgs(\n\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t{\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t}\n\t\t);\n\n\t\tif ( query !== undefined ) {\n\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\tif ( hasRecords ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst record = await apiFetch( { path } );\n\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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.\n */\nexport const getEntityRecords = ( kind, name, query = {} ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\treturn;\n\t}\n\n\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\tSTORE_NAME,\n\t\t[ 'entities', 'records', kind, name ],\n\t\t{ exclusive: false }\n\t);\n\n\ttry {\n\t\tif ( query._fields ) {\n\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t// the ID.\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\t_fields: uniq( [\n\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) || [] ),\n\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t] ).join(),\n\t\t\t};\n\t\t}\n\n\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t...entityConfig.baseURLParams,\n\t\t\t...query,\n\t\t} );\n\n\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t// If we request fields but the result doesn't contain the fields,\n\t\t// explicitely set these fields as \"undefined\"\n\t\t// that way we consider the query \"fullfilled\".\n\t\tif ( query._fields ) {\n\t\t\trecords = records.map( ( record ) => {\n\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn record;\n\t\t\t} );\n\t\t}\n\n\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t// When requesting all fields, the list of results can be used to\n\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\tconst resolutionsArgs = records\n\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t\tdispatch( {\n\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\targs: resolutionsArgs,\n\t\t\t} );\n\t\t}\n\t} finally {\n\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t}\n};\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 = () => async ( { dispatch, resolveSelect } ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\n\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n};\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 = ( url ) => async ( { dispatch } ) => {\n\ttry {\n\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t} );\n\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t} catch ( error ) {\n\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\tdispatch.receiveEmbedPreview( url, false );\n\t}\n};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} action 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 = ( action, resource, id ) => async ( { dispatch } ) => {\n\tconst methods = {\n\t\tcreate: 'POST',\n\t\tread: 'GET',\n\t\tupdate: 'PUT',\n\t\tdelete: 'DELETE',\n\t};\n\n\tconst method = methods[ action ];\n\tif ( ! method ) {\n\t\tthrow new Error( `'${ action }' is not a valid action.` );\n\t}\n\n\tconst path = id ? `/wp/v2/${ resource }/${ id }` : `/wp/v2/${ resource }`;\n\n\tlet response;\n\ttry {\n\t\tresponse = await apiFetch( {\n\t\t\tpath,\n\t\t\tmethod: 'OPTIONS',\n\t\t\tparse: false,\n\t\t} );\n\t} catch ( error ) {\n\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\treturn;\n\t}\n\n\t// Optional chaining operator is used here because the API requests don't\n\t// return the expected result in the native version. Instead, API requests\n\t// only return the result, without including response properties like the headers.\n\tconst allowHeader = response.headers?.get( 'allow' );\n\tconst key = compact( [ action, resource, id ] ).join( '/' );\n\tconst isAllowed = includes( allowHeader, method );\n\tdispatch.receiveUserPermission( key, isAllowed );\n};\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 = ( kind, name, recordId ) => async ( {\n\tdispatch,\n} ) => {\n\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\tconst entityConfig = find( configs, { kind, name } );\n\tif ( ! entityConfig ) {\n\t\treturn;\n\t}\n\n\tconst resource = entityConfig.__unstable_rest_base;\n\tawait dispatch( canUser( 'update', resource, recordId ) );\n};\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 = ( postType, postId ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst { rest_base: restBase } = await resolveSelect.getPostType( postType );\n\tconst autosaves = await apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }/${ postId }/autosaves?context=edit`,\n\t} );\n\n\tif ( autosaves && autosaves.length ) {\n\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t}\n};\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 = ( postType, postId ) => async ( {\n\tresolveSelect,\n} ) => {\n\tawait resolveSelect.getAutosaves( postType, postId );\n};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink = ( link ) => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\t// Ideally this should be using an apiFetch call\n\t// We could potentially do so by adding a \"filter\" to the `wp_template` end point.\n\t// Also it seems the returned object is not a regular REST API post type.\n\tlet template;\n\ttry {\n\t\ttemplate = await window\n\t\t\t.fetch( addQueryArgs( link, { '_wp-find-template': true } ) )\n\t\t\t.then( ( res ) => res.json() )\n\t\t\t.then( ( { data } ) => data );\n\t} catch ( e ) {\n\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t}\n\n\tif ( ! template ) {\n\t\treturn;\n\t}\n\n\tconst record = await resolveSelect.getEntityRecord(\n\t\t'postType',\n\t\t'wp_template',\n\t\ttemplate.id\n\t);\n\n\tif ( record ) {\n\t\tdispatch.receiveEntityRecords( 'postType', 'wp_template', [ record ], {\n\t\t\t'find-template': link,\n\t\t} );\n\t}\n};\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 = () => async ( {\n\tdispatch,\n\tresolveSelect,\n} ) => {\n\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t'root',\n\t\t'theme',\n\t\t{ status: 'active' }\n\t);\n\tconst globalStylesURL = get( activeThemes, [\n\t\t0,\n\t\t'_links',\n\t\t'wp:user-global-styles',\n\t\t0,\n\t\t'href',\n\t] );\n\tif ( globalStylesURL ) {\n\t\tconst globalStylesObject = await apiFetch( {\n\t\t\turl: globalStylesURL,\n\t\t} );\n\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\tglobalStylesObject.id\n\t\t);\n\t}\n};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst themeGlobalStyles = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t} );\n\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\tcurrentTheme.stylesheet,\n\t\tthemeGlobalStyles\n\t);\n};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations = () => async ( {\n\tresolveSelect,\n\tdispatch,\n} ) => {\n\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\tconst variations = await apiFetch( {\n\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t} );\n\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\tcurrentTheme.stylesheet,\n\t\tvariations\n\t);\n};\n\nexport const getBlockPatterns = () => async ( { dispatch } ) => {\n\tconst patterns = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/patterns',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n};\n\nexport const getBlockPatternCategories = () => async ( { dispatch } ) => {\n\tconst categories = await apiFetch( {\n\t\tpath: '/__experimental/block-patterns/categories',\n\t} );\n\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n};\n"]}