@wordpress/core-data 6.20.1 → 6.21.1-next.f8d8eceb.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 (89) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +147 -0
  3. package/build/actions.js +4 -3
  4. package/build/actions.js.map +1 -1
  5. package/build/entities.js +14 -2
  6. package/build/entities.js.map +1 -1
  7. package/build/hooks/use-entity-records.js +18 -0
  8. package/build/hooks/use-entity-records.js.map +1 -1
  9. package/build/private-apis.js +1 -1
  10. package/build/private-apis.js.map +1 -1
  11. package/build/queried-data/actions.js +7 -4
  12. package/build/queried-data/actions.js.map +1 -1
  13. package/build/queried-data/reducer.js +9 -3
  14. package/build/queried-data/reducer.js.map +1 -1
  15. package/build/queried-data/selectors.js +10 -1
  16. package/build/queried-data/selectors.js.map +1 -1
  17. package/build/resolvers.js +21 -6
  18. package/build/resolvers.js.map +1 -1
  19. package/build/selectors.js +64 -2
  20. package/build/selectors.js.map +1 -1
  21. package/build/sync.js +6 -1
  22. package/build/sync.js.map +1 -1
  23. package/build/utils/index.js +7 -0
  24. package/build/utils/index.js.map +1 -1
  25. package/build/utils/is-numeric-id.js +17 -0
  26. package/build/utils/is-numeric-id.js.map +1 -0
  27. package/build-module/actions.js +4 -3
  28. package/build-module/actions.js.map +1 -1
  29. package/build-module/entities.js +14 -2
  30. package/build-module/entities.js.map +1 -1
  31. package/build-module/hooks/use-entity-records.js +18 -0
  32. package/build-module/hooks/use-entity-records.js.map +1 -1
  33. package/build-module/private-apis.js +1 -1
  34. package/build-module/private-apis.js.map +1 -1
  35. package/build-module/queried-data/actions.js +7 -4
  36. package/build-module/queried-data/actions.js.map +1 -1
  37. package/build-module/queried-data/reducer.js +9 -3
  38. package/build-module/queried-data/reducer.js.map +1 -1
  39. package/build-module/queried-data/selectors.js +9 -1
  40. package/build-module/queried-data/selectors.js.map +1 -1
  41. package/build-module/resolvers.js +21 -6
  42. package/build-module/resolvers.js.map +1 -1
  43. package/build-module/selectors.js +62 -2
  44. package/build-module/selectors.js.map +1 -1
  45. package/build-module/sync.js +7 -2
  46. package/build-module/sync.js.map +1 -1
  47. package/build-module/utils/index.js +1 -0
  48. package/build-module/utils/index.js.map +1 -1
  49. package/build-module/utils/is-numeric-id.js +11 -0
  50. package/build-module/utils/is-numeric-id.js.map +1 -0
  51. package/build-types/actions.d.ts +2 -1
  52. package/build-types/actions.d.ts.map +1 -1
  53. package/build-types/entities.d.ts +27 -0
  54. package/build-types/entities.d.ts.map +1 -1
  55. package/build-types/hooks/use-entity-records.d.ts +8 -0
  56. package/build-types/hooks/use-entity-records.d.ts.map +1 -1
  57. package/build-types/index.d.ts +7 -1
  58. package/build-types/index.d.ts.map +1 -1
  59. package/build-types/queried-data/actions.d.ts +4 -2
  60. package/build-types/queried-data/actions.d.ts.map +1 -1
  61. package/build-types/queried-data/selectors.d.ts +1 -0
  62. package/build-types/queried-data/selectors.d.ts.map +1 -1
  63. package/build-types/resolvers.d.ts.map +1 -1
  64. package/build-types/selectors.d.ts +29 -0
  65. package/build-types/selectors.d.ts.map +1 -1
  66. package/build-types/sync.d.ts.map +1 -1
  67. package/build-types/utils/index.d.ts +1 -0
  68. package/build-types/utils/is-numeric-id.d.ts +9 -0
  69. package/build-types/utils/is-numeric-id.d.ts.map +1 -0
  70. package/package.json +17 -17
  71. package/src/actions.js +5 -3
  72. package/src/entities.js +11 -0
  73. package/src/hooks/test/use-entity-records.js +4 -0
  74. package/src/hooks/use-entity-records.ts +37 -0
  75. package/src/private-apis.js +1 -1
  76. package/src/queried-data/actions.js +6 -3
  77. package/src/queried-data/reducer.js +17 -10
  78. package/src/queried-data/selectors.js +7 -1
  79. package/src/queried-data/test/reducer.js +9 -9
  80. package/src/queried-data/test/selectors.js +8 -8
  81. package/src/resolvers.js +25 -3
  82. package/src/selectors.ts +85 -1
  83. package/src/sync.js +11 -2
  84. package/src/test/resolvers.js +4 -1
  85. package/src/test/selectors.js +28 -3
  86. package/src/utils/index.js +1 -0
  87. package/src/utils/is-numeric-id.js +10 -0
  88. package/src/utils/test/is-numeric-id.js +22 -0
  89. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_url","require","_deprecated","_interopRequireDefault","_useQuerySelect","_","EMPTY_ARRAY","useEntityRecords","kind","name","queryArgs","options","enabled","queryAsString","addQueryArgs","data","records","rest","useQuerySelect","query","coreStore","getEntityRecords","__experimentalUseEntityRecords","deprecated","alternative","since"],"sources":["@wordpress/core-data/src/hooks/use-entity-records.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Options } from './use-entity-record';\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\nconst EMPTY_ARRAY = [];\n\n/**\n * Resolves the specified entity records.\n *\n * @since 6.1.0 Introduced in WordPress core.\n *\n * @param kind Kind of the entity, e.g. `root` or a `postType`. See rootEntitiesConfig in ../entities.ts for a list of available kinds.\n * @param name Name of the entity, e.g. `plugin` or a `post`. See rootEntitiesConfig in ../entities.ts for a list of available names.\n * @param queryArgs Optional HTTP query description for how to fetch the data, passed to the requested API endpoint.\n * @param options Optional hook options.\n * @example\n * ```js\n * import { useEntityRecords } 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 useEntityRecords< 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\t// Avoiding returning a new reference on every execution.\n\t\t\t\t\tdata: EMPTY_ARRAY,\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\nexport function __experimentalUseEntityRecords(\n\tkind: string,\n\tname: string,\n\tqueryArgs: any,\n\toptions: any\n) {\n\tdeprecated( `wp.data.__experimentalUseEntityRecords`, {\n\t\talternative: 'wp.data.useEntityRecords',\n\t\tsince: '6.1',\n\t} );\n\treturn useEntityRecords( kind, name, queryArgs, options );\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAKA,IAAAG,eAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,CAAA,GAAAJ,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAwBA,MAAMK,WAAW,GAAG,EAAE;;AAEtB;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;AACe,SAASC,gBAAgBA,CACvCC,IAAY,EACZC,IAAY,EACZC,SAAoC,GAAG,CAAC,CAAC,EACzCC,OAAgB,GAAG;EAAEC,OAAO,EAAE;AAAK,CAAC,EACI;EACxC;EACA;EACA;EACA;EACA,MAAMC,aAAa,GAAG,IAAAC,iBAAY,EAAE,EAAE,EAAEJ,SAAU,CAAC;EAEnD,MAAM;IAAEK,IAAI,EAAEC,OAAO;IAAE,GAAGC;EAAK,CAAC,GAAG,IAAAC,uBAAc,EAC9CC,KAAK,IAAM;IACZ,IAAK,CAAER,OAAO,CAACC,OAAO,EAAG;MACxB,OAAO;QACN;QACAG,IAAI,EAAET;MACP,CAAC;IACF;IACA,OAAOa,KAAK,CAAEC,OAAU,CAAC,CAACC,gBAAgB,CAAEb,IAAI,EAAEC,IAAI,EAAEC,SAAU,CAAC;EACpE,CAAC,EACD,CAAEF,IAAI,EAAEC,IAAI,EAAEI,aAAa,EAAEF,OAAO,CAACC,OAAO,CAC7C,CAAC;EAED,OAAO;IACNI,OAAO;IACP,GAAGC;EACJ,CAAC;AACF;AAEO,SAASK,8BAA8BA,CAC7Cd,IAAY,EACZC,IAAY,EACZC,SAAc,EACdC,OAAY,EACX;EACD,IAAAY,mBAAU,EAAG,wCAAuC,EAAE;IACrDC,WAAW,EAAE,0BAA0B;IACvCC,KAAK,EAAE;EACR,CAAE,CAAC;EACH,OAAOlB,gBAAgB,CAAEC,IAAI,EAAEC,IAAI,EAAEC,SAAS,EAAEC,OAAQ,CAAC;AAC1D"}
1
+ {"version":3,"names":["_url","require","_deprecated","_interopRequireDefault","_data","_useQuerySelect","_","EMPTY_ARRAY","useEntityRecords","kind","name","queryArgs","options","enabled","queryAsString","addQueryArgs","data","records","rest","useQuerySelect","query","coreStore","getEntityRecords","totalItems","totalPages","useSelect","select","getEntityRecordsTotalItems","getEntityRecordsTotalPages","__experimentalUseEntityRecords","deprecated","alternative","since"],"sources":["@wordpress/core-data/src/hooks/use-entity-records.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Options } from './use-entity-record';\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\t/**\n\t * The total number of available items (if not paginated).\n\t */\n\ttotalItems: number | null;\n\n\t/**\n\t * The total number of pages.\n\t */\n\ttotalPages: number | null;\n}\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Resolves the specified entity records.\n *\n * @since 6.1.0 Introduced in WordPress core.\n *\n * @param kind Kind of the entity, e.g. `root` or a `postType`. See rootEntitiesConfig in ../entities.ts for a list of available kinds.\n * @param name Name of the entity, e.g. `plugin` or a `post`. See rootEntitiesConfig in ../entities.ts for a list of available names.\n * @param queryArgs Optional HTTP query description for how to fetch the data, passed to the requested API endpoint.\n * @param options Optional hook options.\n * @example\n * ```js\n * import { useEntityRecords } 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 useEntityRecords< 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\t// Avoiding returning a new reference on every execution.\n\t\t\t\t\tdata: EMPTY_ARRAY,\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\tconst { totalItems, totalPages } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn {\n\t\t\t\t\ttotalItems: null,\n\t\t\t\t\ttotalPages: null,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttotalItems: select( coreStore ).getEntityRecordsTotalItems(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tqueryArgs\n\t\t\t\t),\n\t\t\t\ttotalPages: select( coreStore ).getEntityRecordsTotalPages(\n\t\t\t\t\tkind,\n\t\t\t\t\tname,\n\t\t\t\t\tqueryArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ kind, name, queryAsString, options.enabled ]\n\t);\n\n\treturn {\n\t\trecords,\n\t\ttotalItems,\n\t\ttotalPages,\n\t\t...rest,\n\t};\n}\n\nexport function __experimentalUseEntityRecords(\n\tkind: string,\n\tname: string,\n\tqueryArgs: any,\n\toptions: any\n) {\n\tdeprecated( `wp.data.__experimentalUseEntityRecords`, {\n\t\talternative: 'wp.data.useEntityRecords',\n\t\tsince: '6.1',\n\t} );\n\treturn useEntityRecords( kind, name, queryArgs, options );\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,CAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAKA;AACA;AACA;;AAkCA,MAAMM,WAAW,GAAG,EAAE;;AAEtB;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;AACe,SAASC,gBAAgBA,CACvCC,IAAY,EACZC,IAAY,EACZC,SAAoC,GAAG,CAAC,CAAC,EACzCC,OAAgB,GAAG;EAAEC,OAAO,EAAE;AAAK,CAAC,EACI;EACxC;EACA;EACA;EACA;EACA,MAAMC,aAAa,GAAG,IAAAC,iBAAY,EAAE,EAAE,EAAEJ,SAAU,CAAC;EAEnD,MAAM;IAAEK,IAAI,EAAEC,OAAO;IAAE,GAAGC;EAAK,CAAC,GAAG,IAAAC,uBAAc,EAC9CC,KAAK,IAAM;IACZ,IAAK,CAAER,OAAO,CAACC,OAAO,EAAG;MACxB,OAAO;QACN;QACAG,IAAI,EAAET;MACP,CAAC;IACF;IACA,OAAOa,KAAK,CAAEC,OAAU,CAAC,CAACC,gBAAgB,CAAEb,IAAI,EAAEC,IAAI,EAAEC,SAAU,CAAC;EACpE,CAAC,EACD,CAAEF,IAAI,EAAEC,IAAI,EAAEI,aAAa,EAAEF,OAAO,CAACC,OAAO,CAC7C,CAAC;EAED,MAAM;IAAEU,UAAU;IAAEC;EAAW,CAAC,GAAG,IAAAC,eAAS,EACzCC,MAAM,IAAM;IACb,IAAK,CAAEd,OAAO,CAACC,OAAO,EAAG;MACxB,OAAO;QACNU,UAAU,EAAE,IAAI;QAChBC,UAAU,EAAE;MACb,CAAC;IACF;IACA,OAAO;MACND,UAAU,EAAEG,MAAM,CAAEL,OAAU,CAAC,CAACM,0BAA0B,CACzDlB,IAAI,EACJC,IAAI,EACJC,SACD,CAAC;MACDa,UAAU,EAAEE,MAAM,CAAEL,OAAU,CAAC,CAACO,0BAA0B,CACzDnB,IAAI,EACJC,IAAI,EACJC,SACD;IACD,CAAC;EACF,CAAC,EACD,CAAEF,IAAI,EAAEC,IAAI,EAAEI,aAAa,EAAEF,OAAO,CAACC,OAAO,CAC7C,CAAC;EAED,OAAO;IACNI,OAAO;IACPM,UAAU;IACVC,UAAU;IACV,GAAGN;EACJ,CAAC;AACF;AAEO,SAASW,8BAA8BA,CAC7CpB,IAAY,EACZC,IAAY,EACZC,SAAc,EACdC,OAAY,EACX;EACD,IAAAkB,mBAAU,EAAG,wCAAuC,EAAE;IACrDC,WAAW,EAAE,0BAA0B;IACvCC,KAAK,EAAE;EACR,CAAE,CAAC;EACH,OAAOxB,gBAAgB,CAAEC,IAAI,EAAEC,IAAI,EAAEC,SAAS,EAAEC,OAAQ,CAAC;AAC1D"}
@@ -12,7 +12,7 @@ var _privateApis = require("@wordpress/private-apis");
12
12
  const {
13
13
  lock,
14
14
  unlock
15
- } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.', '@wordpress/core-data');
15
+ } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.', '@wordpress/core-data');
16
16
  exports.unlock = unlock;
17
17
  exports.lock = lock;
18
18
  //# sourceMappingURL=private-apis.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/core-data/src/private-apis.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t\t'@wordpress/core-data'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,8GAA8G,EAC9G,sBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA"}
1
+ {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/core-data/src/private-apis.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/core-data'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,iHAAiH,EACjH,sBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA"}
@@ -11,14 +11,16 @@ exports.removeItems = removeItems;
11
11
  *
12
12
  * @param {Array} items Items received.
13
13
  * @param {?Object} edits Optional edits to reset.
14
+ * @param {?Object} meta Meta information about pagination.
14
15
  *
15
16
  * @return {Object} Action object.
16
17
  */
17
- function receiveItems(items, edits) {
18
+ function receiveItems(items, edits, meta) {
18
19
  return {
19
20
  type: 'RECEIVE_ITEMS',
20
21
  items: Array.isArray(items) ? items : [items],
21
- persistedEdits: edits
22
+ persistedEdits: edits,
23
+ meta
22
24
  };
23
25
  }
24
26
 
@@ -49,12 +51,13 @@ function removeItems(kind, name, records, invalidateCache = false) {
49
51
  * @param {Array} items Queried items received.
50
52
  * @param {?Object} query Optional query object.
51
53
  * @param {?Object} edits Optional edits to reset.
54
+ * @param {?Object} meta Meta information about pagination.
52
55
  *
53
56
  * @return {Object} Action object.
54
57
  */
55
- function receiveQueriedItems(items, query = {}, edits) {
58
+ function receiveQueriedItems(items, query = {}, edits, meta) {
56
59
  return {
57
- ...receiveItems(items, edits),
60
+ ...receiveItems(items, edits, meta),
58
61
  query
59
62
  };
60
63
  }
@@ -1 +1 @@
1
- {"version":3,"names":["receiveItems","items","edits","type","Array","isArray","persistedEdits","removeItems","kind","name","records","invalidateCache","itemIds","receiveQueriedItems","query"],"sources":["@wordpress/core-data/src/queried-data/actions.js"],"sourcesContent":["/**\n * Returns an action object used in signalling that items have been received.\n *\n * @param {Array} items Items received.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveItems( items, edits ) {\n\treturn {\n\t\ttype: 'RECEIVE_ITEMS',\n\t\titems: Array.isArray( items ) ? items : [ items ],\n\t\tpersistedEdits: edits,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been\n * deleted and they need to be removed from entities state.\n *\n * @param {string} kind Kind of the removed entities.\n * @param {string} name Name of the removed entities.\n * @param {Array|number|string} records Record IDs of the removed entities.\n * @param {boolean} invalidateCache Controls whether we want to invalidate the cache.\n * @return {Object} Action object.\n */\nexport function removeItems( kind, name, records, invalidateCache = false ) {\n\treturn {\n\t\ttype: 'REMOVE_ITEMS',\n\t\titemIds: Array.isArray( records ) ? records : [ records ],\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that queried data has been\n * received.\n *\n * @param {Array} items Queried items received.\n * @param {?Object} query Optional query object.\n * @param {?Object} edits Optional edits to reset.\n *\n * @return {Object} Action object.\n */\nexport function receiveQueriedItems( items, query = {}, edits ) {\n\treturn {\n\t\t...receiveItems( items, edits ),\n\t\tquery,\n\t};\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAAEC,KAAK,EAAEC,KAAK,EAAG;EAC5C,OAAO;IACNC,IAAI,EAAE,eAAe;IACrBF,KAAK,EAAEG,KAAK,CAACC,OAAO,CAAEJ,KAAM,CAAC,GAAGA,KAAK,GAAG,CAAEA,KAAK,CAAE;IACjDK,cAAc,EAAEJ;EACjB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,WAAWA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,eAAe,GAAG,KAAK,EAAG;EAC3E,OAAO;IACNR,IAAI,EAAE,cAAc;IACpBS,OAAO,EAAER,KAAK,CAACC,OAAO,CAAEK,OAAQ,CAAC,GAAGA,OAAO,GAAG,CAAEA,OAAO,CAAE;IACzDF,IAAI;IACJC,IAAI;IACJE;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CAAEZ,KAAK,EAAEa,KAAK,GAAG,CAAC,CAAC,EAAEZ,KAAK,EAAG;EAC/D,OAAO;IACN,GAAGF,YAAY,CAAEC,KAAK,EAAEC,KAAM,CAAC;IAC/BY;EACD,CAAC;AACF"}
1
+ {"version":3,"names":["receiveItems","items","edits","meta","type","Array","isArray","persistedEdits","removeItems","kind","name","records","invalidateCache","itemIds","receiveQueriedItems","query"],"sources":["@wordpress/core-data/src/queried-data/actions.js"],"sourcesContent":["/**\n * Returns an action object used in signalling that items have been received.\n *\n * @param {Array} items Items received.\n * @param {?Object} edits Optional edits to reset.\n * @param {?Object} meta Meta information about pagination.\n *\n * @return {Object} Action object.\n */\nexport function receiveItems( items, edits, meta ) {\n\treturn {\n\t\ttype: 'RECEIVE_ITEMS',\n\t\titems: Array.isArray( items ) ? items : [ items ],\n\t\tpersistedEdits: edits,\n\t\tmeta,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that entity records have been\n * deleted and they need to be removed from entities state.\n *\n * @param {string} kind Kind of the removed entities.\n * @param {string} name Name of the removed entities.\n * @param {Array|number|string} records Record IDs of the removed entities.\n * @param {boolean} invalidateCache Controls whether we want to invalidate the cache.\n * @return {Object} Action object.\n */\nexport function removeItems( kind, name, records, invalidateCache = false ) {\n\treturn {\n\t\ttype: 'REMOVE_ITEMS',\n\t\titemIds: Array.isArray( records ) ? records : [ records ],\n\t\tkind,\n\t\tname,\n\t\tinvalidateCache,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that queried data has been\n * received.\n *\n * @param {Array} items Queried items received.\n * @param {?Object} query Optional query object.\n * @param {?Object} edits Optional edits to reset.\n * @param {?Object} meta Meta information about pagination.\n *\n * @return {Object} Action object.\n */\nexport function receiveQueriedItems( items, query = {}, edits, meta ) {\n\treturn {\n\t\t...receiveItems( items, edits, meta ),\n\t\tquery,\n\t};\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAG;EAClD,OAAO;IACNC,IAAI,EAAE,eAAe;IACrBH,KAAK,EAAEI,KAAK,CAACC,OAAO,CAAEL,KAAM,CAAC,GAAGA,KAAK,GAAG,CAAEA,KAAK,CAAE;IACjDM,cAAc,EAAEL,KAAK;IACrBC;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,WAAWA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,OAAO,EAAEC,eAAe,GAAG,KAAK,EAAG;EAC3E,OAAO;IACNR,IAAI,EAAE,cAAc;IACpBS,OAAO,EAAER,KAAK,CAACC,OAAO,CAAEK,OAAQ,CAAC,GAAGA,OAAO,GAAG,CAAEA,OAAO,CAAE;IACzDF,IAAI;IACJC,IAAI;IACJE;EACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CAAEb,KAAK,EAAEc,KAAK,GAAG,CAAC,CAAC,EAAEb,KAAK,EAAEC,IAAI,EAAG;EACrE,OAAO;IACN,GAAGH,YAAY,CAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAK,CAAC;IACrCY;EACD,CAAC;AACF"}
@@ -195,7 +195,7 @@ const receiveQueries = (0, _compose.compose)([
195
195
  }), (0, _utils.onSubKey)('context'),
196
196
  // Queries shape is shared, but keyed by query `stableKey` part. Original
197
197
  // reducer tracks only a single query object.
198
- (0, _utils.onSubKey)('stableKey')])((state = null, action) => {
198
+ (0, _utils.onSubKey)('stableKey')])((state = {}, action) => {
199
199
  const {
200
200
  type,
201
201
  page,
@@ -205,7 +205,10 @@ const receiveQueries = (0, _compose.compose)([
205
205
  if (type !== 'RECEIVE_ITEMS') {
206
206
  return state;
207
207
  }
208
- return getMergedItemIds(state || [], action.items.map(item => item[key]), page, perPage);
208
+ return {
209
+ itemIds: getMergedItemIds(state?.itemIds || [], action.items.map(item => item[key]), page, perPage),
210
+ meta: action.meta
211
+ };
209
212
  });
210
213
 
211
214
  /**
@@ -225,7 +228,10 @@ const queries = (state = {}, action) => {
225
228
  result[itemId] = true;
226
229
  return result;
227
230
  }, {});
228
- return Object.fromEntries(Object.entries(state).map(([queryGroup, contextQueries]) => [queryGroup, Object.fromEntries(Object.entries(contextQueries).map(([query, queryItems]) => [query, queryItems.filter(queryId => !removedItems[queryId])]))]));
231
+ return Object.fromEntries(Object.entries(state).map(([queryGroup, contextQueries]) => [queryGroup, Object.fromEntries(Object.entries(contextQueries).map(([query, queryItems]) => [query, {
232
+ ...queryItems,
233
+ itemIds: queryItems.itemIds.filter(queryId => !removedItems[queryId])
234
+ }]))]));
229
235
  default:
230
236
  return state;
231
237
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_compose","_utils","_entities","_getQueryParts","_interopRequireDefault","getContextFromAction","action","query","queryParts","getQueryParts","context","getMergedItemIds","itemIds","nextItemIds","page","perPage","_itemIds$length","receivedAllIds","nextItemIdsStartIndex","size","Math","max","length","mergedItemIds","Array","i","isInNextItemsRange","removeEntitiesById","entities","ids","Object","fromEntries","entries","filter","id","some","itemId","Number","isInteger","items","state","type","key","DEFAULT_ENTITY_KEY","reduce","accumulator","value","conservativeMapItem","map","contextState","itemIsComplete","isCompleteQuery","isArray","fields","result","item","receiveQueries","compose","ifMatchingAction","replaceAction","onSubKey","queries","removedItems","queryGroup","contextQueries","queryItems","queryId","_default","combineReducers","exports","default"],"sources":["@wordpress/core-data/src/queried-data/reducer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tconservativeMapItem,\n\tifMatchingAction,\n\treplaceAction,\n\tonSubKey,\n} from '../utils';\nimport { DEFAULT_ENTITY_KEY } from '../entities';\nimport getQueryParts from './get-query-parts';\n\nfunction getContextFromAction( action ) {\n\tconst { query } = action;\n\tif ( ! query ) {\n\t\treturn 'default';\n\t}\n\n\tconst queryParts = getQueryParts( query );\n\treturn queryParts.context;\n}\n\n/**\n * Returns a merged array of item IDs, given details of the received paginated\n * items. The array is sparse-like with `undefined` entries where holes exist.\n *\n * @param {?Array<number>} itemIds Original item IDs (default empty array).\n * @param {number[]} nextItemIds Item IDs to merge.\n * @param {number} page Page of items merged.\n * @param {number} perPage Number of items per page.\n *\n * @return {number[]} Merged array of item IDs.\n */\nexport function getMergedItemIds( itemIds, nextItemIds, page, perPage ) {\n\tconst receivedAllIds = page === 1 && perPage === -1;\n\tif ( receivedAllIds ) {\n\t\treturn nextItemIds;\n\t}\n\tconst nextItemIdsStartIndex = ( page - 1 ) * perPage;\n\n\t// If later page has already been received, default to the larger known\n\t// size of the existing array, else calculate as extending the existing.\n\tconst size = Math.max(\n\t\titemIds?.length ?? 0,\n\t\tnextItemIdsStartIndex + nextItemIds.length\n\t);\n\n\t// Preallocate array since size is known.\n\tconst mergedItemIds = new Array( size );\n\n\tfor ( let i = 0; i < size; i++ ) {\n\t\t// Preserve existing item ID except for subset of range of next items.\n\t\tconst isInNextItemsRange =\n\t\t\ti >= nextItemIdsStartIndex &&\n\t\t\ti < nextItemIdsStartIndex + nextItemIds.length;\n\n\t\tmergedItemIds[ i ] = isInNextItemsRange\n\t\t\t? nextItemIds[ i - nextItemIdsStartIndex ]\n\t\t\t: itemIds?.[ i ];\n\t}\n\n\treturn mergedItemIds;\n}\n\n/**\n * Helper function to filter out entities with certain IDs.\n * Entities are keyed by their ID.\n *\n * @param {Object} entities Entity objects, keyed by entity ID.\n * @param {Array} ids Entity IDs to filter out.\n *\n * @return {Object} Filtered entities.\n */\nfunction removeEntitiesById( entities, ids ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( entities ).filter(\n\t\t\t( [ id ] ) =>\n\t\t\t\t! ids.some( ( itemId ) => {\n\t\t\t\t\tif ( Number.isInteger( itemId ) ) {\n\t\t\t\t\t\treturn itemId === +id;\n\t\t\t\t\t}\n\t\t\t\t\treturn itemId === id;\n\t\t\t\t} )\n\t\t)\n\t);\n}\n\n/**\n * Reducer tracking items state, keyed by ID. Items are assumed to be normal,\n * where identifiers are common across all queries.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nexport function items( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst key = action.key || DEFAULT_ENTITY_KEY;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( accumulator, value ) => {\n\t\t\t\t\t\tconst itemId = value[ key ];\n\t\t\t\t\t\taccumulator[ itemId ] = conservativeMapItem(\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ],\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking item completeness, keyed by ID. A complete item is one for\n * which all fields are known. This is used in supporting `_fields` queries,\n * where not all properties associated with an entity are necessarily returned.\n * In such cases, completeness is used as an indication of whether it would be\n * safe to use queried data for a non-`_fields`-limited request.\n *\n * @param {Object<string,Object<string,boolean>>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object<string,Object<string,boolean>>} Next state.\n */\nexport function itemIsComplete( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst { query, key = DEFAULT_ENTITY_KEY } = action;\n\n\t\t\t// An item is considered complete if it is received without an associated\n\t\t\t// fields query. Ideally, this would be implemented in such a way where the\n\t\t\t// complete aggregate of all fields would satisfy completeness. Since the\n\t\t\t// fields are not consistent across all entities, this would require\n\t\t\t// introspection on the REST schema for each entity to know which fields\n\t\t\t// compose a complete item for that entity.\n\t\t\tconst queryParts = query ? getQueryParts( query ) : {};\n\t\t\tconst isCompleteQuery =\n\t\t\t\t! query || ! Array.isArray( queryParts.fields );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( result, item ) => {\n\t\t\t\t\t\tconst itemId = item[ key ];\n\n\t\t\t\t\t\t// Defer to completeness if already assigned. Technically the\n\t\t\t\t\t\t// data may be outdated if receiving items for a field subset.\n\t\t\t\t\t\tresult[ itemId ] =\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ] || isCompleteQuery;\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking queries state, keyed by stable query key. Each reducer\n * query object includes `itemIds` and `requestingPageByPerPage`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst receiveQueries = compose( [\n\t// Limit to matching action type so we don't attempt to replace action on\n\t// an unhandled action.\n\tifMatchingAction( ( action ) => 'query' in action ),\n\n\t// Inject query parts into action for use both in `onSubKey` and reducer.\n\treplaceAction( ( action ) => {\n\t\t// `ifMatchingAction` still passes on initialization, where state is\n\t\t// undefined and a query is not assigned. Avoid attempting to parse\n\t\t// parts. `onSubKey` will omit by lack of `stableKey`.\n\t\tif ( action.query ) {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\t...getQueryParts( action.query ),\n\t\t\t};\n\t\t}\n\n\t\treturn action;\n\t} ),\n\n\tonSubKey( 'context' ),\n\n\t// Queries shape is shared, but keyed by query `stableKey` part. Original\n\t// reducer tracks only a single query object.\n\tonSubKey( 'stableKey' ),\n] )( ( state = null, action ) => {\n\tconst { type, page, perPage, key = DEFAULT_ENTITY_KEY } = action;\n\n\tif ( type !== 'RECEIVE_ITEMS' ) {\n\t\treturn state;\n\t}\n\n\treturn getMergedItemIds(\n\t\tstate || [],\n\t\taction.items.map( ( item ) => item[ key ] ),\n\t\tpage,\n\t\tperPage\n\t);\n} );\n\n/**\n * Reducer tracking queries state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst queries = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS':\n\t\t\treturn receiveQueries( state, action );\n\t\tcase 'REMOVE_ITEMS':\n\t\t\tconst removedItems = action.itemIds.reduce( ( result, itemId ) => {\n\t\t\t\tresult[ itemId ] = true;\n\t\t\t\treturn result;\n\t\t\t}, {} );\n\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map(\n\t\t\t\t\t( [ queryGroup, contextQueries ] ) => [\n\t\t\t\t\t\tqueryGroup,\n\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\tObject.entries( contextQueries ).map(\n\t\t\t\t\t\t\t\t( [ query, queryItems ] ) => [\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\tqueryItems.filter(\n\t\t\t\t\t\t\t\t\t\t( queryId ) => ! removedItems[ queryId ]\n\t\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\t\t\t\t\t\t),\n\t\t\t\t\t]\n\t\t\t\t)\n\t\t\t);\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default combineReducers( {\n\titems,\n\titemIsComplete,\n\tqueries,\n} );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_data","require","_compose","_utils","_entities","_getQueryParts","_interopRequireDefault","getContextFromAction","action","query","queryParts","getQueryParts","context","getMergedItemIds","itemIds","nextItemIds","page","perPage","_itemIds$length","receivedAllIds","nextItemIdsStartIndex","size","Math","max","length","mergedItemIds","Array","i","isInNextItemsRange","removeEntitiesById","entities","ids","Object","fromEntries","entries","filter","id","some","itemId","Number","isInteger","items","state","type","key","DEFAULT_ENTITY_KEY","reduce","accumulator","value","conservativeMapItem","map","contextState","itemIsComplete","isCompleteQuery","isArray","fields","result","item","receiveQueries","compose","ifMatchingAction","replaceAction","onSubKey","meta","queries","removedItems","queryGroup","contextQueries","queryItems","queryId","_default","combineReducers","exports","default"],"sources":["@wordpress/core-data/src/queried-data/reducer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tconservativeMapItem,\n\tifMatchingAction,\n\treplaceAction,\n\tonSubKey,\n} from '../utils';\nimport { DEFAULT_ENTITY_KEY } from '../entities';\nimport getQueryParts from './get-query-parts';\n\nfunction getContextFromAction( action ) {\n\tconst { query } = action;\n\tif ( ! query ) {\n\t\treturn 'default';\n\t}\n\n\tconst queryParts = getQueryParts( query );\n\treturn queryParts.context;\n}\n\n/**\n * Returns a merged array of item IDs, given details of the received paginated\n * items. The array is sparse-like with `undefined` entries where holes exist.\n *\n * @param {?Array<number>} itemIds Original item IDs (default empty array).\n * @param {number[]} nextItemIds Item IDs to merge.\n * @param {number} page Page of items merged.\n * @param {number} perPage Number of items per page.\n *\n * @return {number[]} Merged array of item IDs.\n */\nexport function getMergedItemIds( itemIds, nextItemIds, page, perPage ) {\n\tconst receivedAllIds = page === 1 && perPage === -1;\n\tif ( receivedAllIds ) {\n\t\treturn nextItemIds;\n\t}\n\tconst nextItemIdsStartIndex = ( page - 1 ) * perPage;\n\n\t// If later page has already been received, default to the larger known\n\t// size of the existing array, else calculate as extending the existing.\n\tconst size = Math.max(\n\t\titemIds?.length ?? 0,\n\t\tnextItemIdsStartIndex + nextItemIds.length\n\t);\n\n\t// Preallocate array since size is known.\n\tconst mergedItemIds = new Array( size );\n\n\tfor ( let i = 0; i < size; i++ ) {\n\t\t// Preserve existing item ID except for subset of range of next items.\n\t\tconst isInNextItemsRange =\n\t\t\ti >= nextItemIdsStartIndex &&\n\t\t\ti < nextItemIdsStartIndex + nextItemIds.length;\n\n\t\tmergedItemIds[ i ] = isInNextItemsRange\n\t\t\t? nextItemIds[ i - nextItemIdsStartIndex ]\n\t\t\t: itemIds?.[ i ];\n\t}\n\n\treturn mergedItemIds;\n}\n\n/**\n * Helper function to filter out entities with certain IDs.\n * Entities are keyed by their ID.\n *\n * @param {Object} entities Entity objects, keyed by entity ID.\n * @param {Array} ids Entity IDs to filter out.\n *\n * @return {Object} Filtered entities.\n */\nfunction removeEntitiesById( entities, ids ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( entities ).filter(\n\t\t\t( [ id ] ) =>\n\t\t\t\t! ids.some( ( itemId ) => {\n\t\t\t\t\tif ( Number.isInteger( itemId ) ) {\n\t\t\t\t\t\treturn itemId === +id;\n\t\t\t\t\t}\n\t\t\t\t\treturn itemId === id;\n\t\t\t\t} )\n\t\t)\n\t);\n}\n\n/**\n * Reducer tracking items state, keyed by ID. Items are assumed to be normal,\n * where identifiers are common across all queries.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nexport function items( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst key = action.key || DEFAULT_ENTITY_KEY;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( accumulator, value ) => {\n\t\t\t\t\t\tconst itemId = value[ key ];\n\t\t\t\t\t\taccumulator[ itemId ] = conservativeMapItem(\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ],\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\treturn state;\n}\n\n/**\n * Reducer tracking item completeness, keyed by ID. A complete item is one for\n * which all fields are known. This is used in supporting `_fields` queries,\n * where not all properties associated with an entity are necessarily returned.\n * In such cases, completeness is used as an indication of whether it would be\n * safe to use queried data for a non-`_fields`-limited request.\n *\n * @param {Object<string,Object<string,boolean>>} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object<string,Object<string,boolean>>} Next state.\n */\nexport function itemIsComplete( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS': {\n\t\t\tconst context = getContextFromAction( action );\n\t\t\tconst { query, key = DEFAULT_ENTITY_KEY } = action;\n\n\t\t\t// An item is considered complete if it is received without an associated\n\t\t\t// fields query. Ideally, this would be implemented in such a way where the\n\t\t\t// complete aggregate of all fields would satisfy completeness. Since the\n\t\t\t// fields are not consistent across all entities, this would require\n\t\t\t// introspection on the REST schema for each entity to know which fields\n\t\t\t// compose a complete item for that entity.\n\t\t\tconst queryParts = query ? getQueryParts( query ) : {};\n\t\t\tconst isCompleteQuery =\n\t\t\t\t! query || ! Array.isArray( queryParts.fields );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ context ]: {\n\t\t\t\t\t...state[ context ],\n\t\t\t\t\t...action.items.reduce( ( result, item ) => {\n\t\t\t\t\t\tconst itemId = item[ key ];\n\n\t\t\t\t\t\t// Defer to completeness if already assigned. Technically the\n\t\t\t\t\t\t// data may be outdated if receiving items for a field subset.\n\t\t\t\t\t\tresult[ itemId ] =\n\t\t\t\t\t\t\tstate?.[ context ]?.[ itemId ] || isCompleteQuery;\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}, {} ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ITEMS':\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map( ( [ itemId, contextState ] ) => [\n\t\t\t\t\titemId,\n\t\t\t\t\tremoveEntitiesById( contextState, action.itemIds ),\n\t\t\t\t] )\n\t\t\t);\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer tracking queries state, keyed by stable query key. Each reducer\n * query object includes `itemIds` and `requestingPageByPerPage`.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst receiveQueries = compose( [\n\t// Limit to matching action type so we don't attempt to replace action on\n\t// an unhandled action.\n\tifMatchingAction( ( action ) => 'query' in action ),\n\n\t// Inject query parts into action for use both in `onSubKey` and reducer.\n\treplaceAction( ( action ) => {\n\t\t// `ifMatchingAction` still passes on initialization, where state is\n\t\t// undefined and a query is not assigned. Avoid attempting to parse\n\t\t// parts. `onSubKey` will omit by lack of `stableKey`.\n\t\tif ( action.query ) {\n\t\t\treturn {\n\t\t\t\t...action,\n\t\t\t\t...getQueryParts( action.query ),\n\t\t\t};\n\t\t}\n\n\t\treturn action;\n\t} ),\n\n\tonSubKey( 'context' ),\n\n\t// Queries shape is shared, but keyed by query `stableKey` part. Original\n\t// reducer tracks only a single query object.\n\tonSubKey( 'stableKey' ),\n] )( ( state = {}, action ) => {\n\tconst { type, page, perPage, key = DEFAULT_ENTITY_KEY } = action;\n\n\tif ( type !== 'RECEIVE_ITEMS' ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\titemIds: getMergedItemIds(\n\t\t\tstate?.itemIds || [],\n\t\t\taction.items.map( ( item ) => item[ key ] ),\n\t\t\tpage,\n\t\t\tperPage\n\t\t),\n\t\tmeta: action.meta,\n\t};\n} );\n\n/**\n * Reducer tracking queries state.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Next state.\n */\nconst queries = ( state = {}, action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'RECEIVE_ITEMS':\n\t\t\treturn receiveQueries( state, action );\n\t\tcase 'REMOVE_ITEMS':\n\t\t\tconst removedItems = action.itemIds.reduce( ( result, itemId ) => {\n\t\t\t\tresult[ itemId ] = true;\n\t\t\t\treturn result;\n\t\t\t}, {} );\n\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries( state ).map(\n\t\t\t\t\t( [ queryGroup, contextQueries ] ) => [\n\t\t\t\t\t\tqueryGroup,\n\t\t\t\t\t\tObject.fromEntries(\n\t\t\t\t\t\t\tObject.entries( contextQueries ).map(\n\t\t\t\t\t\t\t\t( [ query, queryItems ] ) => [\n\t\t\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t...queryItems,\n\t\t\t\t\t\t\t\t\t\titemIds: queryItems.itemIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t( queryId ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t! removedItems[ queryId ]\n\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]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t]\n\t\t\t\t)\n\t\t\t);\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default combineReducers( {\n\titems,\n\titemIsComplete,\n\tqueries,\n} );\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.getQueriedItems = void 0;
8
+ exports.getQueriedTotalItems = getQueriedTotalItems;
8
9
  var _rememo = _interopRequireDefault(require("rememo"));
9
10
  var _equivalentKeyMap = _interopRequireDefault(require("equivalent-key-map"));
10
11
  var _getQueryParts = _interopRequireDefault(require("./get-query-parts"));
@@ -45,7 +46,7 @@ function getQueriedItemsUncached(state, query) {
45
46
  } = (0, _getQueryParts.default)(query);
46
47
  let itemIds;
47
48
  if (state.queries?.[context]?.[stableKey]) {
48
- itemIds = state.queries[context][stableKey];
49
+ itemIds = state.queries[context][stableKey].itemIds;
49
50
  }
50
51
  if (!itemIds) {
51
52
  return null;
@@ -117,4 +118,12 @@ const getQueriedItems = (0, _rememo.default)((state, query = {}) => {
117
118
  return items;
118
119
  });
119
120
  exports.getQueriedItems = getQueriedItems;
121
+ function getQueriedTotalItems(state, query = {}) {
122
+ var _state$queries$contex;
123
+ const {
124
+ stableKey,
125
+ context
126
+ } = (0, _getQueryParts.default)(query);
127
+ return (_state$queries$contex = state.queries?.[context]?.[stableKey]?.meta?.totalItems) !== null && _state$queries$contex !== void 0 ? _state$queries$contex : null;
128
+ }
120
129
  //# sourceMappingURL=selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_rememo","_interopRequireDefault","require","_equivalentKeyMap","_getQueryParts","_utils","queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","getQueryParts","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","forEach","fieldName","setNestedValue","itemIsComplete","push","getQueriedItems","createSelector","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set","exports"],"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\nimport { setNestedValue } from '../utils';\n\n/**\n * Cache of state keys to EquivalentKeyMap where the inner map tracks queries\n * to their resulting items set. WeakMap allows garbage collection on expired\n * state references.\n *\n * @type {WeakMap<Object,EquivalentKeyMap>}\n */\nconst queriedItemsCacheByState = new WeakMap();\n\n/**\n * Returns items for a given query, or null if the items are not known.\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nfunction getQueriedItemsUncached( state, query ) {\n\tconst { stableKey, page, perPage, include, fields, context } =\n\t\tgetQueryParts( query );\n\tlet itemIds;\n\n\tif ( state.queries?.[ context ]?.[ stableKey ] ) {\n\t\titemIds = state.queries[ context ][ stableKey ];\n\t}\n\n\tif ( ! itemIds ) {\n\t\treturn null;\n\t}\n\n\tconst startOffset = perPage === -1 ? 0 : ( page - 1 ) * perPage;\n\tconst endOffset =\n\t\tperPage === -1\n\t\t\t? itemIds.length\n\t\t\t: Math.min( startOffset + perPage, itemIds.length );\n\n\tconst items = [];\n\tfor ( let i = startOffset; i < endOffset; i++ ) {\n\t\tconst itemId = itemIds[ i ];\n\t\tif ( Array.isArray( include ) && ! include.includes( itemId ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Having a target item ID doesn't guarantee that this object has been queried.\n\t\tif ( ! state.items[ context ]?.hasOwnProperty( itemId ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = state.items[ context ][ itemId ];\n\n\t\tlet filteredItem;\n\t\tif ( Array.isArray( fields ) ) {\n\t\t\tfilteredItem = {};\n\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tlet value = item;\n\t\t\t\tfield.forEach( ( fieldName ) => {\n\t\t\t\t\tvalue = value?.[ fieldName ];\n\t\t\t\t} );\n\n\t\t\t\tsetNestedValue( filteredItem, field, value );\n\t\t\t}\n\t\t} else {\n\t\t\t// If expecting a complete item, validate that completeness, or\n\t\t\t// otherwise abort.\n\t\t\tif ( ! state.itemIsComplete[ context ]?.[ itemId ] ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfilteredItem = item;\n\t\t}\n\n\t\titems.push( filteredItem );\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns items for a given query, or null if the items are not known. Caches\n * result both per state (by reference) and per query (by deep equality).\n * The caching approach is intended to be durable to query objects which are\n * deeply but not referentially equal, since otherwise:\n *\n * `getQueriedItems( state, {} ) !== getQueriedItems( state, {} )`\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nexport const getQueriedItems = createSelector( ( state, query = {} ) => {\n\tlet queriedItemsCache = queriedItemsCacheByState.get( state );\n\tif ( queriedItemsCache ) {\n\t\tconst queriedItems = queriedItemsCache.get( query );\n\t\tif ( queriedItems !== undefined ) {\n\t\t\treturn queriedItems;\n\t\t}\n\t} else {\n\t\tqueriedItemsCache = new EquivalentKeyMap();\n\t\tqueriedItemsCacheByState.set( state, queriedItemsCache );\n\t}\n\n\tconst items = getQueriedItemsUncached( state, query );\n\tqueriedItemsCache.set( query, items );\n\treturn items;\n} );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_rememo","_interopRequireDefault","require","_equivalentKeyMap","_getQueryParts","_utils","queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","getQueryParts","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","forEach","fieldName","setNestedValue","itemIsComplete","push","getQueriedItems","createSelector","queriedItemsCache","get","queriedItems","undefined","EquivalentKeyMap","set","exports","getQueriedTotalItems","_state$queries$contex","meta","totalItems"],"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\nimport { setNestedValue } from '../utils';\n\n/**\n * Cache of state keys to EquivalentKeyMap where the inner map tracks queries\n * to their resulting items set. WeakMap allows garbage collection on expired\n * state references.\n *\n * @type {WeakMap<Object,EquivalentKeyMap>}\n */\nconst queriedItemsCacheByState = new WeakMap();\n\n/**\n * Returns items for a given query, or null if the items are not known.\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nfunction getQueriedItemsUncached( state, query ) {\n\tconst { stableKey, page, perPage, include, fields, context } =\n\t\tgetQueryParts( query );\n\tlet itemIds;\n\n\tif ( state.queries?.[ context ]?.[ stableKey ] ) {\n\t\titemIds = state.queries[ context ][ stableKey ].itemIds;\n\t}\n\n\tif ( ! itemIds ) {\n\t\treturn null;\n\t}\n\n\tconst startOffset = perPage === -1 ? 0 : ( page - 1 ) * perPage;\n\tconst endOffset =\n\t\tperPage === -1\n\t\t\t? itemIds.length\n\t\t\t: Math.min( startOffset + perPage, itemIds.length );\n\n\tconst items = [];\n\tfor ( let i = startOffset; i < endOffset; i++ ) {\n\t\tconst itemId = itemIds[ i ];\n\t\tif ( Array.isArray( include ) && ! include.includes( itemId ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Having a target item ID doesn't guarantee that this object has been queried.\n\t\tif ( ! state.items[ context ]?.hasOwnProperty( itemId ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = state.items[ context ][ itemId ];\n\n\t\tlet filteredItem;\n\t\tif ( Array.isArray( fields ) ) {\n\t\t\tfilteredItem = {};\n\n\t\t\tfor ( let f = 0; f < fields.length; f++ ) {\n\t\t\t\tconst field = fields[ f ].split( '.' );\n\t\t\t\tlet value = item;\n\t\t\t\tfield.forEach( ( fieldName ) => {\n\t\t\t\t\tvalue = value?.[ fieldName ];\n\t\t\t\t} );\n\n\t\t\t\tsetNestedValue( filteredItem, field, value );\n\t\t\t}\n\t\t} else {\n\t\t\t// If expecting a complete item, validate that completeness, or\n\t\t\t// otherwise abort.\n\t\t\tif ( ! state.itemIsComplete[ context ]?.[ itemId ] ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfilteredItem = item;\n\t\t}\n\n\t\titems.push( filteredItem );\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns items for a given query, or null if the items are not known. Caches\n * result both per state (by reference) and per query (by deep equality).\n * The caching approach is intended to be durable to query objects which are\n * deeply but not referentially equal, since otherwise:\n *\n * `getQueriedItems( state, {} ) !== getQueriedItems( state, {} )`\n *\n * @param {Object} state State object.\n * @param {?Object} query Optional query.\n *\n * @return {?Array} Query items.\n */\nexport const getQueriedItems = createSelector( ( state, query = {} ) => {\n\tlet queriedItemsCache = queriedItemsCacheByState.get( state );\n\tif ( queriedItemsCache ) {\n\t\tconst queriedItems = queriedItemsCache.get( query );\n\t\tif ( queriedItems !== undefined ) {\n\t\t\treturn queriedItems;\n\t\t}\n\t} else {\n\t\tqueriedItemsCache = new EquivalentKeyMap();\n\t\tqueriedItemsCacheByState.set( state, queriedItemsCache );\n\t}\n\n\tconst items = getQueriedItemsUncached( state, query );\n\tqueriedItemsCache.set( query, items );\n\treturn items;\n} );\n\nexport function getQueriedTotalItems( state, query = {} ) {\n\tconst { stableKey, context } = getQueryParts( query );\n\n\treturn state.queries?.[ context ]?.[ stableKey ]?.meta?.totalItems ?? null;\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.getUserPatternCategories = exports.getThemeSupports = exports.getRawEntityRecord = exports.getNavigationFallbackId = exports.getEntityRecords = exports.getEntityRecord = exports.getEmbedPreview = exports.getEditedEntityRecord = exports.getCurrentUser = exports.getCurrentThemeGlobalStylesRevisions = exports.getCurrentTheme = exports.getBlockPatterns = exports.getBlockPatternCategories = exports.getAutosaves = exports.getAutosave = exports.getAuthors = exports.canUserEditEntityRecord = exports.canUser = exports.__experimentalGetTemplateForLink = exports.__experimentalGetCurrentThemeGlobalStylesVariations = exports.__experimentalGetCurrentThemeBaseGlobalStyles = exports.__experimentalGetCurrentGlobalStylesId = void 0;
8
8
  var _changeCase = require("change-case");
9
9
  var _url = require("@wordpress/url");
10
+ var _htmlEntities = require("@wordpress/html-entities");
10
11
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
11
12
  var _name = require("./name");
12
13
  var _entities = require("./entities");
@@ -194,9 +195,22 @@ const getEntityRecords = (kind, name, query = {}) => async ({
194
195
  ...entityConfig.baseURLParams,
195
196
  ...query
196
197
  });
197
- let records = Object.values(await (0, _apiFetch.default)({
198
- path
199
- }));
198
+ let records, meta;
199
+ if (entityConfig.supportsPagination && query.per_page !== -1) {
200
+ const response = await (0, _apiFetch.default)({
201
+ path,
202
+ parse: false
203
+ });
204
+ records = Object.values(await response.json());
205
+ meta = {
206
+ totalItems: parseInt(response.headers.get('X-WP-Total'))
207
+ };
208
+ } else {
209
+ records = Object.values(await (0, _apiFetch.default)({
210
+ path
211
+ }));
212
+ }
213
+
200
214
  // If we request fields but the result doesn't contain the fields,
201
215
  // explicitly set these fields as "undefined"
202
216
  // that way we consider the query "fullfilled".
@@ -210,7 +224,7 @@ const getEntityRecords = (kind, name, query = {}) => async ({
210
224
  return record;
211
225
  });
212
226
  }
213
- dispatch.receiveEntityRecords(kind, name, records, query);
227
+ dispatch.receiveEntityRecords(kind, name, records, query, false, undefined, meta);
214
228
 
215
229
  // When requesting all fields, the list of results can be used to
216
230
  // resolve the `getEntityRecord` selector in addition to `getEntityRecords`.
@@ -535,11 +549,12 @@ const getUserPatternCategories = () => async ({
535
549
  }) => {
536
550
  const patternCategories = await resolveSelect.getEntityRecords('taxonomy', 'wp_pattern_category', {
537
551
  per_page: -1,
538
- _fields: 'id,name,description,slug'
552
+ _fields: 'id,name,description,slug',
553
+ context: 'view'
539
554
  });
540
555
  const mappedPatternCategories = patternCategories?.map(userCategory => ({
541
556
  ...userCategory,
542
- label: userCategory.name,
557
+ label: (0, _htmlEntities.decodeEntities)(userCategory.name),
543
558
  name: userCategory.slug
544
559
  })) || [];
545
560
  dispatch({
@@ -1 +1 @@
1
- {"version":3,"names":["_changeCase","require","_url","_apiFetch","_interopRequireDefault","_name","_entities","_utils","_sync","getAuthors","query","dispatch","path","addQueryArgs","users","apiFetch","receiveUserQuery","exports","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","getOrLoadEntitiesConfig","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","window","__experimentalEnableSync","syncConfig","process","env","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","getSyncProvider","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","getNormalizedCommaSeparable","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","forwardResolver","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","camelCase","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","per_page","mappedPatternCategories","userCategory","label","slug","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","finishResolution"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\nimport { getSyncProvider } from './sync';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst record = await apiFetch( { path } );\n\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: userCategory.name,\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\t// If the fallback is already in the store, don't invalidate navigation queries.\n\t\t\t// Otherwise, invalidate the cache for the scenario where there were no Navigation\n\t\t\t// posts in the state and the fallback created one.\n\t\t\tconst existingFallbackEntityRecord = select.getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id\n\t\t\t);\n\t\t\tconst invalidateNavigationQueries = ! existingFallbackEntityRecord;\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_changeCase","require","_url","_htmlEntities","_apiFetch","_interopRequireDefault","_name","_entities","_utils","_sync","getAuthors","query","dispatch","path","addQueryArgs","users","apiFetch","receiveUserQuery","exports","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","getOrLoadEntitiesConfig","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","window","__experimentalEnableSync","syncConfig","process","env","IS_GUTENBERG_PLUGIN","objectId","getSyncObjectId","getSyncProvider","bootstrap","syncObjectType","record","receiveEntityRecords","type","recordId","edits","meta","undo","undefined","_fields","Set","getNormalizedCommaSeparable","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","forwardResolver","getEditedEntityRecord","getEntityRecords","records","supportsPagination","per_page","response","parse","Object","values","json","totalItems","parseInt","headers","get","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","method","allowHeader","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","camelCase","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getUserPatternCategories","patternCategories","mappedPatternCategories","userCategory","label","decodeEntities","slug","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","existingFallbackEntityRecord","invalidateNavigationQueries","finishResolution"],"sources":["@wordpress/core-data/src/resolvers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\nimport { getSyncProvider } from './sync';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\t// Entity supports configs,\n\t\t\t// use the sync algorithm instead of the old fetch behavior.\n\t\t\tif (\n\t\t\t\twindow.__experimentalEnableSync &&\n\t\t\t\tentityConfig.syncConfig &&\n\t\t\t\t! query\n\t\t\t) {\n\t\t\t\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\t\t\t\tconst objectId = entityConfig.getSyncObjectId( key );\n\n\t\t\t\t\t// Loads the persisted document.\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType,\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\t\tquery\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Boostraps the edited document as well (and load from peers).\n\t\t\t\t\tawait getSyncProvider().bootstrap(\n\t\t\t\t\t\tentityConfig.syncObjectType + '--edit',\n\t\t\t\t\t\tobjectId,\n\t\t\t\t\t\t( record ) => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: 'EDIT_ENTITY_RECORD',\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\trecordId: key,\n\t\t\t\t\t\t\t\tedits: record,\n\t\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\t\tundo: undefined,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t\t// the ID.\n\t\t\t\t\tquery = {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\t_fields: [\n\t\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t\t...( getNormalizedCommaSeparable(\n\t\t\t\t\t\t\t\t\tquery._fields\n\t\t\t\t\t\t\t\t) || [] ),\n\t\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t].join(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t\t// additional query modifications in the condition below, since those\n\t\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t\t// for how the request is made to the REST API.\n\n\t\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\t\tconst path = addQueryArgs(\n\t\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t\t{\n\t\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t\t...query,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( query !== undefined ) {\n\t\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\t\tconst hasRecords = select.hasEntityRecords(\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tquery\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst record = await apiFetch( { path } );\n\t\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records, meta;\n\t\t\tif ( entityConfig.supportsPagination && query.per_page !== -1 ) {\n\t\t\t\tconst response = await apiFetch( { path, parse: false } );\n\t\t\t\trecords = Object.values( await response.json() );\n\t\t\t\tmeta = {\n\t\t\t\t\ttotalItems: parseInt(\n\t\t\t\t\t\tresponse.headers.get( 'X-WP-Total' )\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\trecords = Object.values( await apiFetch( { path } ) );\n\t\t\t}\n\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\trecords,\n\t\t\t\tquery,\n\t\t\t\tfalse,\n\t\t\t\tundefined,\n\t\t\t\tmeta\n\t\t\t);\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getUserPatternCategories =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst patternCategories = await resolveSelect.getEntityRecords(\n\t\t\t'taxonomy',\n\t\t\t'wp_pattern_category',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t\t_fields: 'id,name,description,slug',\n\t\t\t\tcontext: 'view',\n\t\t\t}\n\t\t);\n\n\t\tconst mappedPatternCategories =\n\t\t\tpatternCategories?.map( ( userCategory ) => ( {\n\t\t\t\t...userCategory,\n\t\t\t\tlabel: decodeEntities( userCategory.name ),\n\t\t\t\tname: userCategory.slug,\n\t\t\t} ) ) || [];\n\n\t\tdispatch( {\n\t\t\ttype: 'RECEIVE_USER_PATTERN_CATEGORIES',\n\t\t\tpatternCategories: mappedPatternCategories,\n\t\t} );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\t// If the fallback is already in the store, don't invalidate navigation queries.\n\t\t\t// Otherwise, invalidate the cache for the scenario where there were no Navigation\n\t\t\t// posts in the state and the fallback created one.\n\t\t\tconst existingFallbackEntityRecord = select.getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id\n\t\t\t);\n\t\t\tconst invalidateNavigationQueries = ! existingFallbackEntityRecord;\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord,\n\t\t\t\tundefined,\n\t\t\t\tinvalidateNavigationQueries\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"],"mappings":"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"}