@wordpress/core-data 4.8.0 → 4.11.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 (94) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +56 -56
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/create-batch.js +1 -1
  5. package/build/batch/create-batch.js.map +1 -1
  6. package/build/batch/default-processor.js +13 -7
  7. package/build/batch/default-processor.js.map +1 -1
  8. package/build/entities.js.map +1 -1
  9. package/build/entity-provider.js.map +1 -1
  10. package/build/hooks/use-entity-record.js.map +1 -1
  11. package/build/hooks/use-query-select.js.map +1 -1
  12. package/build/hooks/use-resource-permissions.js +94 -0
  13. package/build/hooks/use-resource-permissions.js.map +1 -0
  14. package/build/index.js +28 -1
  15. package/build/index.js.map +1 -1
  16. package/build/queried-data/selectors.js.map +1 -1
  17. package/build/reducer.js +4 -1
  18. package/build/reducer.js.map +1 -1
  19. package/build/resolvers.js +4 -14
  20. package/build/resolvers.js.map +1 -1
  21. package/build/selectors.js +45 -8
  22. package/build/selectors.js.map +1 -1
  23. package/build/utils/forward-resolver.js.map +1 -1
  24. package/build/utils/on-sub-key.js.map +1 -1
  25. package/build/utils/with-weak-map-cache.js +1 -7
  26. package/build/utils/with-weak-map-cache.js.map +1 -1
  27. package/build-module/actions.js.map +1 -1
  28. package/build-module/batch/create-batch.js +2 -2
  29. package/build-module/batch/create-batch.js.map +1 -1
  30. package/build-module/batch/default-processor.js +12 -5
  31. package/build-module/batch/default-processor.js.map +1 -1
  32. package/build-module/entities.js.map +1 -1
  33. package/build-module/entity-provider.js.map +1 -1
  34. package/build-module/hooks/use-entity-record.js.map +1 -1
  35. package/build-module/hooks/use-query-select.js.map +1 -1
  36. package/build-module/hooks/use-resource-permissions.js +82 -0
  37. package/build-module/hooks/use-resource-permissions.js.map +1 -0
  38. package/build-module/index.js +3 -0
  39. package/build-module/index.js.map +1 -1
  40. package/build-module/queried-data/selectors.js.map +1 -1
  41. package/build-module/reducer.js +5 -2
  42. package/build-module/reducer.js.map +1 -1
  43. package/build-module/resolvers.js +5 -15
  44. package/build-module/resolvers.js.map +1 -1
  45. package/build-module/selectors.js +40 -4
  46. package/build-module/selectors.js.map +1 -1
  47. package/build-module/utils/forward-resolver.js.map +1 -1
  48. package/build-module/utils/on-sub-key.js.map +1 -1
  49. package/build-module/utils/with-weak-map-cache.js +1 -6
  50. package/build-module/utils/with-weak-map-cache.js.map +1 -1
  51. package/package.json +11 -11
  52. package/src/actions.js +389 -372
  53. package/src/batch/create-batch.js +2 -2
  54. package/src/batch/default-processor.js +10 -5
  55. package/src/entities.ts +16 -17
  56. package/src/entity-provider.js +4 -6
  57. package/src/entity-types/attachment.ts +4 -3
  58. package/src/entity-types/comment.ts +4 -3
  59. package/src/entity-types/entities.ts +5 -2
  60. package/src/entity-types/index.ts +114 -20
  61. package/src/entity-types/menu-location.ts +4 -3
  62. package/src/entity-types/nav-menu-item.ts +4 -3
  63. package/src/entity-types/nav-menu.ts +3 -3
  64. package/src/entity-types/page.ts +3 -3
  65. package/src/entity-types/plugin.ts +3 -3
  66. package/src/entity-types/post.ts +3 -3
  67. package/src/entity-types/settings.ts +3 -3
  68. package/src/entity-types/sidebar.ts +4 -3
  69. package/src/entity-types/taxonomy.ts +4 -3
  70. package/src/entity-types/theme.ts +3 -3
  71. package/src/entity-types/type.ts +3 -3
  72. package/src/entity-types/user.ts +3 -3
  73. package/src/entity-types/widget-type.ts +4 -3
  74. package/src/entity-types/widget.ts +3 -3
  75. package/src/entity-types/wp-template-part.ts +4 -3
  76. package/src/entity-types/wp-template.ts +4 -3
  77. package/src/fetch/test/__experimental-fetch-link-suggestions.js +2 -4
  78. package/src/hooks/test/use-query-select.js +4 -2
  79. package/src/hooks/test/use-resource-permissions.js +115 -0
  80. package/src/hooks/use-entity-record.ts +0 -1
  81. package/src/hooks/use-query-select.ts +26 -24
  82. package/src/hooks/use-resource-permissions.ts +120 -0
  83. package/src/index.js +3 -0
  84. package/src/locks/test/selectors.js +2 -1
  85. package/src/queried-data/selectors.js +2 -8
  86. package/src/reducer.js +9 -2
  87. package/src/resolvers.js +344 -326
  88. package/src/selectors.ts +347 -194
  89. package/src/test/reducer.js +5 -4
  90. package/src/test/resolvers.js +1 -3
  91. package/src/test/selectors.js +1 -2
  92. package/src/utils/forward-resolver.js +6 -5
  93. package/src/utils/on-sub-key.js +20 -20
  94. package/src/utils/with-weak-map-cache.js +1 -6
@@ -1,11 +1,6 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { chunk } from 'lodash';
5
1
  /**
6
2
  * WordPress dependencies
7
3
  */
8
-
9
4
  import apiFetch from '@wordpress/api-fetch';
10
5
  /**
11
6
  * Maximum number of requests to place in a single batch request. Obtained by
@@ -15,6 +10,17 @@ import apiFetch from '@wordpress/api-fetch';
15
10
  */
16
11
 
17
12
  let maxItems = null;
13
+
14
+ function chunk(arr, chunkSize) {
15
+ const tmp = [...arr];
16
+ const cache = [];
17
+
18
+ while (tmp.length) {
19
+ cache.push(tmp.splice(0, chunkSize));
20
+ }
21
+
22
+ return cache;
23
+ }
18
24
  /**
19
25
  * Default batch processor. Sends its input requests to /batch/v1.
20
26
  *
@@ -25,6 +31,7 @@ let maxItems = null;
25
31
  * (if not ).
26
32
  */
27
33
 
34
+
28
35
  export default async function defaultProcessor(requests) {
29
36
  if (maxItems === null) {
30
37
  const preflightResponse = await apiFetch({
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/batch/default-processor.js"],"names":["chunk","apiFetch","maxItems","defaultProcessor","requests","preflightResponse","path","method","endpoints","args","results","batchRequests","batchResponse","data","validation","map","request","body","headers","batchResults","failed","responses","response","error","result","status","output","push"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,OAAOC,QAAP,MAAqB,sBAArB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,IAAf;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,eAAeC,gBAAf,CAAiCC,QAAjC,EAA4C;AAC1D,MAAKF,QAAQ,KAAK,IAAlB,EAAyB;AACxB,UAAMG,iBAAiB,GAAG,MAAMJ,QAAQ,CAAE;AACzCK,MAAAA,IAAI,EAAE,WADmC;AAEzCC,MAAAA,MAAM,EAAE;AAFiC,KAAF,CAAxC;AAIAL,IAAAA,QAAQ,GAAGG,iBAAiB,CAACG,SAAlB,CAA6B,CAA7B,EAAiCC,IAAjC,CAAsCL,QAAtC,CAA+CF,QAA1D;AACA;;AAED,QAAMQ,OAAO,GAAG,EAAhB,CAT0D,CAW1D;;AACA,OAAM,MAAMC,aAAZ,IAA6BX,KAAK,CAAEI,QAAF,EAAYF,QAAZ,CAAlC,EAA2D;AAC1D,UAAMU,aAAa,GAAG,MAAMX,QAAQ,CAAE;AACrCK,MAAAA,IAAI,EAAE,WAD+B;AAErCC,MAAAA,MAAM,EAAE,MAF6B;AAGrCM,MAAAA,IAAI,EAAE;AACLC,QAAAA,UAAU,EAAE,sBADP;AAELV,QAAAA,QAAQ,EAAEO,aAAa,CAACI,GAAd,CAAqBC,OAAF,KAAiB;AAC7CV,UAAAA,IAAI,EAAEU,OAAO,CAACV,IAD+B;AAE7CW,UAAAA,IAAI,EAAED,OAAO,CAACH,IAF+B;AAEzB;AACpBN,UAAAA,MAAM,EAAES,OAAO,CAACT,MAH6B;AAI7CW,UAAAA,OAAO,EAAEF,OAAO,CAACE;AAJ4B,SAAjB,CAAnB;AAFL;AAH+B,KAAF,CAApC;AAcA,QAAIC,YAAJ;;AAEA,QAAKP,aAAa,CAACQ,MAAnB,EAA4B;AAC3BD,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,KAAkB;AAC7DC,QAAAA,KAAK,EAAED,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAEL;AAD4C,OAAlB,CAA7B,CAAf;AAGA,KAJD,MAIO;AACNE,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,IAAgB;AAC3D,cAAME,MAAM,GAAG,EAAf;;AACA,YAAKF,QAAQ,CAACG,MAAT,IAAmB,GAAnB,IAA0BH,QAAQ,CAACG,MAAT,GAAkB,GAAjD,EAAuD;AACtDD,UAAAA,MAAM,CAACE,MAAP,GAAgBJ,QAAQ,CAACL,IAAzB;AACA,SAFD,MAEO;AACNO,UAAAA,MAAM,CAACD,KAAP,GAAeD,QAAQ,CAACL,IAAxB;AACA;;AACD,eAAOO,MAAP;AACA,OARc,CAAf;AASA;;AAEDd,IAAAA,OAAO,CAACiB,IAAR,CAAc,GAAGR,YAAjB;AACA;;AAED,SAAOT,OAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { chunk } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Maximum number of requests to place in a single batch request. Obtained by\n * sending a preflight OPTIONS request to /batch/v1/.\n *\n * @type {number?}\n */\nlet maxItems = null;\n\n/**\n * Default batch processor. Sends its input requests to /batch/v1.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was succesful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tif ( maxItems === null ) {\n\t\tconst preflightResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'OPTIONS',\n\t\t} );\n\t\tmaxItems = preflightResponse.endpoints[ 0 ].args.requests.maxItems;\n\t}\n\n\tconst results = [];\n\n\t// @ts-ignore We would have crashed or never gotten to this point if we hadn't received the maxItems count.\n\tfor ( const batchRequests of chunk( requests, maxItems ) ) {\n\t\tconst batchResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tvalidation: 'require-all-validate',\n\t\t\t\trequests: batchRequests.map( ( request ) => ( {\n\t\t\t\t\tpath: request.path,\n\t\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\t\tmethod: request.method,\n\t\t\t\t\theaders: request.headers,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t} );\n\n\t\tlet batchResults;\n\n\t\tif ( batchResponse.failed ) {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => ( {\n\t\t\t\terror: response?.body,\n\t\t\t} ) );\n\t\t} else {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => {\n\t\t\t\tconst result = {};\n\t\t\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\t\t\tresult.output = response.body;\n\t\t\t\t} else {\n\t\t\t\t\tresult.error = response.body;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}\n\n\t\tresults.push( ...batchResults );\n\t}\n\n\treturn results;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/batch/default-processor.js"],"names":["apiFetch","maxItems","chunk","arr","chunkSize","tmp","cache","length","push","splice","defaultProcessor","requests","preflightResponse","path","method","endpoints","args","results","batchRequests","batchResponse","data","validation","map","request","body","headers","batchResults","failed","responses","response","error","result","status","output"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,IAAf;;AAEA,SAASC,KAAT,CAAgBC,GAAhB,EAAqBC,SAArB,EAAiC;AAChC,QAAMC,GAAG,GAAG,CAAE,GAAGF,GAAL,CAAZ;AACA,QAAMG,KAAK,GAAG,EAAd;;AACA,SAAQD,GAAG,CAACE,MAAZ,EAAqB;AACpBD,IAAAA,KAAK,CAACE,IAAN,CAAYH,GAAG,CAACI,MAAJ,CAAY,CAAZ,EAAeL,SAAf,CAAZ;AACA;;AAED,SAAOE,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAe,eAAeI,gBAAf,CAAiCC,QAAjC,EAA4C;AAC1D,MAAKV,QAAQ,KAAK,IAAlB,EAAyB;AACxB,UAAMW,iBAAiB,GAAG,MAAMZ,QAAQ,CAAE;AACzCa,MAAAA,IAAI,EAAE,WADmC;AAEzCC,MAAAA,MAAM,EAAE;AAFiC,KAAF,CAAxC;AAIAb,IAAAA,QAAQ,GAAGW,iBAAiB,CAACG,SAAlB,CAA6B,CAA7B,EAAiCC,IAAjC,CAAsCL,QAAtC,CAA+CV,QAA1D;AACA;;AAED,QAAMgB,OAAO,GAAG,EAAhB,CAT0D,CAW1D;;AACA,OAAM,MAAMC,aAAZ,IAA6BhB,KAAK,CAAES,QAAF,EAAYV,QAAZ,CAAlC,EAA2D;AAC1D,UAAMkB,aAAa,GAAG,MAAMnB,QAAQ,CAAE;AACrCa,MAAAA,IAAI,EAAE,WAD+B;AAErCC,MAAAA,MAAM,EAAE,MAF6B;AAGrCM,MAAAA,IAAI,EAAE;AACLC,QAAAA,UAAU,EAAE,sBADP;AAELV,QAAAA,QAAQ,EAAEO,aAAa,CAACI,GAAd,CAAqBC,OAAF,KAAiB;AAC7CV,UAAAA,IAAI,EAAEU,OAAO,CAACV,IAD+B;AAE7CW,UAAAA,IAAI,EAAED,OAAO,CAACH,IAF+B;AAEzB;AACpBN,UAAAA,MAAM,EAAES,OAAO,CAACT,MAH6B;AAI7CW,UAAAA,OAAO,EAAEF,OAAO,CAACE;AAJ4B,SAAjB,CAAnB;AAFL;AAH+B,KAAF,CAApC;AAcA,QAAIC,YAAJ;;AAEA,QAAKP,aAAa,CAACQ,MAAnB,EAA4B;AAC3BD,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,KAAkB;AAC7DC,QAAAA,KAAK,EAAED,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAEL;AAD4C,OAAlB,CAA7B,CAAf;AAGA,KAJD,MAIO;AACNE,MAAAA,YAAY,GAAGP,aAAa,CAACS,SAAd,CAAwBN,GAAxB,CAA+BO,QAAF,IAAgB;AAC3D,cAAME,MAAM,GAAG,EAAf;;AACA,YAAKF,QAAQ,CAACG,MAAT,IAAmB,GAAnB,IAA0BH,QAAQ,CAACG,MAAT,GAAkB,GAAjD,EAAuD;AACtDD,UAAAA,MAAM,CAACE,MAAP,GAAgBJ,QAAQ,CAACL,IAAzB;AACA,SAFD,MAEO;AACNO,UAAAA,MAAM,CAACD,KAAP,GAAeD,QAAQ,CAACL,IAAxB;AACA;;AACD,eAAOO,MAAP;AACA,OARc,CAAf;AASA;;AAEDd,IAAAA,OAAO,CAACT,IAAR,CAAc,GAAGkB,YAAjB;AACA;;AAED,SAAOT,OAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Maximum number of requests to place in a single batch request. Obtained by\n * sending a preflight OPTIONS request to /batch/v1/.\n *\n * @type {number?}\n */\nlet maxItems = null;\n\nfunction chunk( arr, chunkSize ) {\n\tconst tmp = [ ...arr ];\n\tconst cache = [];\n\twhile ( tmp.length ) {\n\t\tcache.push( tmp.splice( 0, chunkSize ) );\n\t}\n\n\treturn cache;\n}\n\n/**\n * Default batch processor. Sends its input requests to /batch/v1.\n *\n * @param {Array} requests List of API requests to perform at once.\n *\n * @return {Promise} Promise that resolves to a list of objects containing\n * either `output` (if that request was succesful) or `error`\n * (if not ).\n */\nexport default async function defaultProcessor( requests ) {\n\tif ( maxItems === null ) {\n\t\tconst preflightResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'OPTIONS',\n\t\t} );\n\t\tmaxItems = preflightResponse.endpoints[ 0 ].args.requests.maxItems;\n\t}\n\n\tconst results = [];\n\n\t// @ts-ignore We would have crashed or never gotten to this point if we hadn't received the maxItems count.\n\tfor ( const batchRequests of chunk( requests, maxItems ) ) {\n\t\tconst batchResponse = await apiFetch( {\n\t\t\tpath: '/batch/v1',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tvalidation: 'require-all-validate',\n\t\t\t\trequests: batchRequests.map( ( request ) => ( {\n\t\t\t\t\tpath: request.path,\n\t\t\t\t\tbody: request.data, // Rename 'data' to 'body'.\n\t\t\t\t\tmethod: request.method,\n\t\t\t\t\theaders: request.headers,\n\t\t\t\t} ) ),\n\t\t\t},\n\t\t} );\n\n\t\tlet batchResults;\n\n\t\tif ( batchResponse.failed ) {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => ( {\n\t\t\t\terror: response?.body,\n\t\t\t} ) );\n\t\t} else {\n\t\t\tbatchResults = batchResponse.responses.map( ( response ) => {\n\t\t\t\tconst result = {};\n\t\t\t\tif ( response.status >= 200 && response.status < 300 ) {\n\t\t\t\t\tresult.output = response.body;\n\t\t\t\t} else {\n\t\t\t\t\tresult.error = response.body;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}\n\n\t\tresults.push( ...batchResults );\n\t}\n\n\treturn results;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/entities.ts"],"names":["upperFirst","camelCase","map","find","get","startCase","apiFetch","__","addEntities","DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","attachmentConfig","name","kind","baseURL","baseURLParams","context","plural","label","rawAttributes","siteConfig","getTitle","record","postTypeConfig","key","taxonomyConfig","sidebarConfig","transientEdits","blocks","widgetConfig","widgetTypeConfig","userConfig","commentConfig","menuConfig","menuItemConfig","menuLocationConfig","globalStyleConfig","title","rendered","themeConfig","pluginConfig","rootEntitiesConfig","_fields","join","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","path","postType","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","slug","String","id","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","getMethodName","prefix","usePlural","entityConfig","kindPrefix","nameSuffix","suffix","getOrLoadEntitiesConfig","select","dispatch","configs","getEntitiesConfig","length","loader"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { upperFirst, camelCase, map, find, get, startCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport type * as Records from './entity-types';\nimport type {\n\tEntityType,\n\tContext,\n\tPost,\n\tTaxonomy,\n\tType,\n\tUpdatable,\n} from './entity-types';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\ntype AttachmentEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'media';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Attachment< C >,\n\tC\n>;\n\nconst attachmentConfig: AttachmentEntity[ 'config' ] = {\n\tname: 'media',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/media',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'mediaItems',\n\tlabel: __( 'Media' ),\n\trawAttributes: [ 'caption', 'title', 'description' ],\n};\n\ntype SiteEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'site';\n\t\tkind: 'root';\n\t},\n\tRecords.Settings< C >,\n\tC\n>;\n\nconst siteConfig: SiteEntity[ 'config' ] = {\n\tlabel: __( 'Site' ),\n\tname: 'site',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/settings',\n\tgetTitle: ( record: Records.Settings< 'edit' > ) => {\n\t\treturn get( record, [ 'title' ], __( 'Site Title' ) );\n\t},\n};\n\ntype PostTypeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'postType';\n\t\tkind: 'root';\n\t\tkey: 'slug';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Type< C >,\n\tC\n>;\n\nconst postTypeConfig: PostTypeEntity[ 'config' ] = {\n\tlabel: __( 'Post Type' ),\n\tname: 'postType',\n\tkind: 'root',\n\tkey: 'slug',\n\tbaseURL: '/wp/v2/types',\n\tbaseURLParams: { context: 'edit' },\n};\n\ntype TaxonomyEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'taxonomy';\n\t\tkind: 'root';\n\t\tkey: 'slug';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Taxonomy< C >,\n\tC\n>;\n\nconst taxonomyConfig: TaxonomyEntity[ 'config' ] = {\n\tname: 'taxonomy',\n\tkind: 'root',\n\tkey: 'slug',\n\tbaseURL: '/wp/v2/taxonomies',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'taxonomies',\n\tlabel: __( 'Taxonomy' ),\n};\n\ntype SidebarEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'sidebar';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Sidebar< C >,\n\tC\n>;\n\nconst sidebarConfig: SidebarEntity[ 'config' ] = {\n\tname: 'sidebar',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/sidebars',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'sidebars',\n\ttransientEdits: { blocks: true },\n\tlabel: __( 'Widget areas' ),\n};\n\ntype WidgetEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'widget';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Widget< C >,\n\tC\n>;\nconst widgetConfig: WidgetEntity[ 'config' ] = {\n\tname: 'widget',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/widgets',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'widgets',\n\ttransientEdits: { blocks: true },\n\tlabel: __( 'Widgets' ),\n};\n\ntype WidgetTypeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'widgetType';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.WidgetType< C >,\n\tC\n>;\nconst widgetTypeConfig: WidgetTypeEntity[ 'config' ] = {\n\tname: 'widgetType',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/widget-types',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'widgetTypes',\n\tlabel: __( 'Widget types' ),\n};\n\ntype UserEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'user';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.User< C >,\n\tC\n>;\nconst userConfig: UserEntity[ 'config' ] = {\n\tlabel: __( 'User' ),\n\tname: 'user',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/users',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'users',\n};\n\ntype CommentEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'comment';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Comment< C >,\n\tC\n>;\nconst commentConfig: CommentEntity[ 'config' ] = {\n\tname: 'comment',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/comments',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'comments',\n\tlabel: __( 'Comment' ),\n};\n\ntype NavMenuEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menu';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.NavMenu< C >,\n\tC\n>;\n\nconst menuConfig: NavMenuEntity[ 'config' ] = {\n\tname: 'menu',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menus',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menus',\n\tlabel: __( 'Menu' ),\n};\n\ntype NavMenuItemEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menuItem';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.NavMenuItem< C >,\n\tC\n>;\n\nconst menuItemConfig: NavMenuItemEntity[ 'config' ] = {\n\tname: 'menuItem',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menu-items',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menuItems',\n\tlabel: __( 'Menu Item' ),\n\trawAttributes: [ 'title' ],\n};\n\ntype MenuLocationEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menuLocation';\n\t\tkind: 'root';\n\t\tkey: 'name';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.MenuLocation< C >,\n\tC\n>;\n\nconst menuLocationConfig: MenuLocationEntity[ 'config' ] = {\n\tname: 'menuLocation',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menu-locations',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menuLocations',\n\tlabel: __( 'Menu Location' ),\n\tkey: 'name',\n};\n\nconst globalStyleConfig = {\n\tlabel: __( 'Global Styles' ),\n\tname: 'globalStyles',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/global-styles',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'globalStylesVariations', // Should be different than name.\n\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n};\n\ntype ThemeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'theme';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t\tkey: 'stylesheet';\n\t},\n\tRecords.Theme< C >,\n\tC\n>;\n\nconst themeConfig: ThemeEntity[ 'config' ] = {\n\tlabel: __( 'Themes' ),\n\tname: 'theme',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/themes',\n\tbaseURLParams: { context: 'edit' },\n\tkey: 'stylesheet',\n};\n\ntype PluginEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'plugin';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t\tkey: 'plugin';\n\t},\n\tRecords.Plugin< C >,\n\tC\n>;\nconst pluginConfig: PluginEntity[ 'config' ] = {\n\tlabel: __( 'Plugins' ),\n\tname: 'plugin',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/plugins',\n\tbaseURLParams: { context: 'edit' },\n\tkey: 'plugin',\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t},\n\tsiteConfig,\n\tpostTypeConfig,\n\tattachmentConfig,\n\ttaxonomyConfig,\n\tsidebarConfig,\n\twidgetConfig,\n\twidgetTypeConfig,\n\tuserConfig,\n\tcommentConfig,\n\tmenuConfig,\n\tmenuItemConfig,\n\tmenuLocationConfig,\n\tglobalStyleConfig,\n\tthemeConfig,\n\tpluginConfig,\n];\n\ntype PostTypeConfig = {\n\tkind: 'postType';\n\tkey: 'id';\n\tdefaultContext: 'edit';\n};\n\ntype PostEntity< C extends Context = Context > = EntityType<\n\tPostTypeConfig & { name: 'post' },\n\tRecords.Post< C >,\n\tC\n>;\ntype PageEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'page' },\n\tRecords.Page< C >,\n\tC\n>;\ntype WpTemplateEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'wp_template' },\n\tRecords.WpTemplate< C >,\n\tC\n>;\ntype WpTemplatePartEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'wp_template_part' },\n\tRecords.WpTemplatePart< C >,\n\tC\n>;\n\nexport type CoreEntities< C extends Context > =\n\t| SiteEntity< C >\n\t| PostTypeEntity< C >\n\t| AttachmentEntity< C >\n\t| TaxonomyEntity< C >\n\t| SidebarEntity< C >\n\t| WidgetEntity< C >\n\t| WidgetTypeEntity< C >\n\t| UserEntity< C >\n\t| CommentEntity< C >\n\t| NavMenuEntity< C >\n\t| NavMenuItemEntity< C >\n\t| MenuLocationEntity< C >\n\t| ThemeEntity< C >\n\t| PluginEntity< C >\n\t| PostEntity< C >\n\t| PageEntity< C >\n\t| WpTemplateEntity< C >\n\t| WpTemplatePartEntity< C >;\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {} as Partial< Updatable< Post< 'edit' > > >;\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = ( await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} ) ) as Record< string, Type< 'view' > >;\n\treturn map( postTypes, ( postType, name ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate ? startCase( record.slug ) : String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = ( await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} ) ) as Record< string, Taxonomy< 'view' > >;\n\treturn map( taxonomies, ( taxonomy, name ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = find( rootEntitiesConfig, { kind, name } );\n\tconst kindPrefix = kind === 'root' ? '' : upperFirst( camelCase( kind ) );\n\tconst nameSuffix =\n\t\tupperFirst( camelCase( name ) ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig && entityConfig?.plural\n\t\t\t? upperFirst( camelCase( entityConfig.plural ) )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig = ( kind ) => async ( {\n\tselect,\n\tdispatch,\n} ) => {\n\tlet configs = select.getEntitiesConfig( kind );\n\tif ( configs && configs.length !== 0 ) {\n\t\treturn configs;\n\t}\n\n\tconst loader = find( additionalEntityConfigLoaders, { kind } );\n\tif ( ! loader ) {\n\t\treturn [];\n\t}\n\n\tconfigs = await loader.loadEntities();\n\tdispatch( addEntities( configs ) );\n\n\treturn configs;\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/entities.ts"],"names":["upperFirst","camelCase","map","find","get","startCase","apiFetch","__","addEntities","DEFAULT_ENTITY_KEY","POST_RAW_ATTRIBUTES","attachmentConfig","name","kind","baseURL","baseURLParams","context","plural","label","rawAttributes","siteConfig","getTitle","record","postTypeConfig","key","taxonomyConfig","sidebarConfig","transientEdits","blocks","widgetConfig","widgetTypeConfig","userConfig","commentConfig","menuConfig","menuItemConfig","menuLocationConfig","globalStyleConfig","title","rendered","themeConfig","pluginConfig","rootEntitiesConfig","_fields","join","additionalEntityConfigLoaders","loadEntities","loadPostTypeEntities","loadTaxonomyEntities","prePersistPostType","persistedRecord","edits","newEdits","status","postTypes","path","postType","isTemplate","includes","namespace","rest_namespace","rest_base","selection","mergedEdits","meta","slug","String","id","__unstablePrePersist","undefined","__unstable_rest_base","taxonomies","taxonomy","getMethodName","prefix","usePlural","entityConfig","kindPrefix","nameSuffix","suffix","getOrLoadEntitiesConfig","select","dispatch","configs","getEntitiesConfig","length","loader"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { upperFirst, camelCase, map, find, get, startCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { addEntities } from './actions';\nimport type * as Records from './entity-types';\nimport type {\n\tEntityType,\n\tContext,\n\tPost,\n\tTaxonomy,\n\tType,\n\tUpdatable,\n} from './entity-types';\n\nexport const DEFAULT_ENTITY_KEY = 'id';\n\nconst POST_RAW_ATTRIBUTES = [ 'title', 'excerpt', 'content' ];\n\ntype AttachmentEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'media';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Attachment< C >,\n\tC\n>;\n\nconst attachmentConfig: AttachmentEntity[ 'config' ] = {\n\tname: 'media',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/media',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'mediaItems',\n\tlabel: __( 'Media' ),\n\trawAttributes: [ 'caption', 'title', 'description' ],\n};\n\ntype SiteEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'site';\n\t\tkind: 'root';\n\t},\n\tRecords.Settings< C >,\n\tC\n>;\n\nconst siteConfig: SiteEntity[ 'config' ] = {\n\tlabel: __( 'Site' ),\n\tname: 'site',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/settings',\n\tgetTitle: ( record: Records.Settings< 'edit' > ) => {\n\t\treturn get( record, [ 'title' ], __( 'Site Title' ) );\n\t},\n};\n\ntype PostTypeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'postType';\n\t\tkind: 'root';\n\t\tkey: 'slug';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Type< C >,\n\tC\n>;\n\nconst postTypeConfig: PostTypeEntity[ 'config' ] = {\n\tlabel: __( 'Post Type' ),\n\tname: 'postType',\n\tkind: 'root',\n\tkey: 'slug',\n\tbaseURL: '/wp/v2/types',\n\tbaseURLParams: { context: 'edit' },\n};\n\ntype TaxonomyEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'taxonomy';\n\t\tkind: 'root';\n\t\tkey: 'slug';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Taxonomy< C >,\n\tC\n>;\n\nconst taxonomyConfig: TaxonomyEntity[ 'config' ] = {\n\tname: 'taxonomy',\n\tkind: 'root',\n\tkey: 'slug',\n\tbaseURL: '/wp/v2/taxonomies',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'taxonomies',\n\tlabel: __( 'Taxonomy' ),\n};\n\ntype SidebarEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'sidebar';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Sidebar< C >,\n\tC\n>;\n\nconst sidebarConfig: SidebarEntity[ 'config' ] = {\n\tname: 'sidebar',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/sidebars',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'sidebars',\n\ttransientEdits: { blocks: true },\n\tlabel: __( 'Widget areas' ),\n};\n\ntype WidgetEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'widget';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Widget< C >,\n\tC\n>;\nconst widgetConfig: WidgetEntity[ 'config' ] = {\n\tname: 'widget',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/widgets',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'widgets',\n\ttransientEdits: { blocks: true },\n\tlabel: __( 'Widgets' ),\n};\n\ntype WidgetTypeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'widgetType';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.WidgetType< C >,\n\tC\n>;\nconst widgetTypeConfig: WidgetTypeEntity[ 'config' ] = {\n\tname: 'widgetType',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/widget-types',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'widgetTypes',\n\tlabel: __( 'Widget types' ),\n};\n\ntype UserEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'user';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.User< C >,\n\tC\n>;\nconst userConfig: UserEntity[ 'config' ] = {\n\tlabel: __( 'User' ),\n\tname: 'user',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/users',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'users',\n};\n\ntype CommentEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'comment';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.Comment< C >,\n\tC\n>;\nconst commentConfig: CommentEntity[ 'config' ] = {\n\tname: 'comment',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/comments',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'comments',\n\tlabel: __( 'Comment' ),\n};\n\ntype NavMenuEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menu';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.NavMenu< C >,\n\tC\n>;\n\nconst menuConfig: NavMenuEntity[ 'config' ] = {\n\tname: 'menu',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menus',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menus',\n\tlabel: __( 'Menu' ),\n};\n\ntype NavMenuItemEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menuItem';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.NavMenuItem< C >,\n\tC\n>;\n\nconst menuItemConfig: NavMenuItemEntity[ 'config' ] = {\n\tname: 'menuItem',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menu-items',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menuItems',\n\tlabel: __( 'Menu Item' ),\n\trawAttributes: [ 'title' ],\n};\n\ntype MenuLocationEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'menuLocation';\n\t\tkind: 'root';\n\t\tkey: 'name';\n\t\tbaseURLParams: { context: 'edit' };\n\t},\n\tRecords.MenuLocation< C >,\n\tC\n>;\n\nconst menuLocationConfig: MenuLocationEntity[ 'config' ] = {\n\tname: 'menuLocation',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/menu-locations',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'menuLocations',\n\tlabel: __( 'Menu Location' ),\n\tkey: 'name',\n};\n\nconst globalStyleConfig = {\n\tlabel: __( 'Global Styles' ),\n\tname: 'globalStyles',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/global-styles',\n\tbaseURLParams: { context: 'edit' },\n\tplural: 'globalStylesVariations', // Should be different than name.\n\tgetTitle: ( record ) => record?.title?.rendered || record?.title,\n};\n\ntype ThemeEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'theme';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t\tkey: 'stylesheet';\n\t},\n\tRecords.Theme< C >,\n\tC\n>;\n\nconst themeConfig: ThemeEntity[ 'config' ] = {\n\tlabel: __( 'Themes' ),\n\tname: 'theme',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/themes',\n\tbaseURLParams: { context: 'edit' },\n\tkey: 'stylesheet',\n};\n\ntype PluginEntity< C extends Context = Context > = EntityType<\n\t{\n\t\tname: 'plugin';\n\t\tkind: 'root';\n\t\tbaseURLParams: { context: 'edit' };\n\t\tkey: 'plugin';\n\t},\n\tRecords.Plugin< C >,\n\tC\n>;\nconst pluginConfig: PluginEntity[ 'config' ] = {\n\tlabel: __( 'Plugins' ),\n\tname: 'plugin',\n\tkind: 'root',\n\tbaseURL: '/wp/v2/plugins',\n\tbaseURLParams: { context: 'edit' },\n\tkey: 'plugin',\n};\n\nexport const rootEntitiesConfig = [\n\t{\n\t\tlabel: __( 'Base' ),\n\t\tkind: 'root',\n\t\tname: '__unstableBase',\n\t\tbaseURL: '/',\n\t\tbaseURLParams: {\n\t\t\t_fields: [\n\t\t\t\t'description',\n\t\t\t\t'gmt_offset',\n\t\t\t\t'home',\n\t\t\t\t'name',\n\t\t\t\t'site_icon',\n\t\t\t\t'site_icon_url',\n\t\t\t\t'site_logo',\n\t\t\t\t'timezone_string',\n\t\t\t\t'url',\n\t\t\t].join( ',' ),\n\t\t},\n\t},\n\tsiteConfig,\n\tpostTypeConfig,\n\tattachmentConfig,\n\ttaxonomyConfig,\n\tsidebarConfig,\n\twidgetConfig,\n\twidgetTypeConfig,\n\tuserConfig,\n\tcommentConfig,\n\tmenuConfig,\n\tmenuItemConfig,\n\tmenuLocationConfig,\n\tglobalStyleConfig,\n\tthemeConfig,\n\tpluginConfig,\n];\n\ntype PostTypeConfig = {\n\tkind: 'postType';\n\tkey: 'id';\n\tdefaultContext: 'edit';\n};\n\ntype PostEntity< C extends Context = Context > = EntityType<\n\tPostTypeConfig & { name: 'post' },\n\tRecords.Post< C >,\n\tC\n>;\ntype PageEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'page' },\n\tRecords.Page< C >,\n\tC\n>;\ntype WpTemplateEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'wp_template' },\n\tRecords.WpTemplate< C >,\n\tC\n>;\ntype WpTemplatePartEntity< C extends Context > = EntityType<\n\tPostTypeConfig & { name: 'wp_template_part' },\n\tRecords.WpTemplatePart< C >,\n\tC\n>;\n\nexport type CoreEntities< C extends Context > =\n\t| SiteEntity< C >\n\t| PostTypeEntity< C >\n\t| AttachmentEntity< C >\n\t| TaxonomyEntity< C >\n\t| SidebarEntity< C >\n\t| WidgetEntity< C >\n\t| WidgetTypeEntity< C >\n\t| UserEntity< C >\n\t| CommentEntity< C >\n\t| NavMenuEntity< C >\n\t| NavMenuItemEntity< C >\n\t| MenuLocationEntity< C >\n\t| ThemeEntity< C >\n\t| PluginEntity< C >\n\t| PostEntity< C >\n\t| PageEntity< C >\n\t| WpTemplateEntity< C >\n\t| WpTemplatePartEntity< C >;\n\nexport const additionalEntityConfigLoaders = [\n\t{ kind: 'postType', loadEntities: loadPostTypeEntities },\n\t{ kind: 'taxonomy', loadEntities: loadTaxonomyEntities },\n];\n\n/**\n * Returns a function to be used to retrieve extra edits to apply before persisting a post type.\n *\n * @param {Object} persistedRecord Already persisted Post\n * @param {Object} edits Edits.\n * @return {Object} Updated edits.\n */\nexport const prePersistPostType = ( persistedRecord, edits ) => {\n\tconst newEdits = {} as Partial< Updatable< Post< 'edit' > > >;\n\n\tif ( persistedRecord?.status === 'auto-draft' ) {\n\t\t// Saving an auto-draft should create a draft by default.\n\t\tif ( ! edits.status && ! newEdits.status ) {\n\t\t\tnewEdits.status = 'draft';\n\t\t}\n\n\t\t// Fix the auto-draft default title.\n\t\tif (\n\t\t\t( ! edits.title || edits.title === 'Auto Draft' ) &&\n\t\t\t! newEdits.title &&\n\t\t\t( ! persistedRecord?.title ||\n\t\t\t\tpersistedRecord?.title === 'Auto Draft' )\n\t\t) {\n\t\t\tnewEdits.title = '';\n\t\t}\n\t}\n\n\treturn newEdits;\n};\n\n/**\n * Returns the list of post type entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadPostTypeEntities() {\n\tconst postTypes = ( await apiFetch( {\n\t\tpath: '/wp/v2/types?context=view',\n\t} ) ) as Record< string, Type< 'view' > >;\n\treturn map( postTypes, ( postType, name ) => {\n\t\tconst isTemplate = [ 'wp_template', 'wp_template_part' ].includes(\n\t\t\tname\n\t\t);\n\t\tconst namespace = postType?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'postType',\n\t\t\tbaseURL: `/${ namespace }/${ postType.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: postType.name,\n\t\t\ttransientEdits: {\n\t\t\t\tblocks: true,\n\t\t\t\tselection: true,\n\t\t\t},\n\t\t\tmergedEdits: { meta: true },\n\t\t\trawAttributes: POST_RAW_ATTRIBUTES,\n\t\t\tgetTitle: ( record ) =>\n\t\t\t\trecord?.title?.rendered ||\n\t\t\t\trecord?.title ||\n\t\t\t\t( isTemplate ? startCase( record.slug ) : String( record.id ) ),\n\t\t\t__unstablePrePersist: isTemplate ? undefined : prePersistPostType,\n\t\t\t__unstable_rest_base: postType.rest_base,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the list of the taxonomies entities.\n *\n * @return {Promise} Entities promise\n */\nasync function loadTaxonomyEntities() {\n\tconst taxonomies = ( await apiFetch( {\n\t\tpath: '/wp/v2/taxonomies?context=view',\n\t} ) ) as Record< string, Taxonomy< 'view' > >;\n\treturn map( taxonomies, ( taxonomy, name ) => {\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\treturn {\n\t\t\tkind: 'taxonomy',\n\t\t\tbaseURL: `/${ namespace }/${ taxonomy.rest_base }`,\n\t\t\tbaseURLParams: { context: 'edit' },\n\t\t\tname,\n\t\t\tlabel: taxonomy.name,\n\t\t};\n\t} );\n}\n\n/**\n * Returns the entity's getter method name given its kind and name.\n *\n * @example\n * ```js\n * const nameSingular = getMethodName( 'root', 'theme', 'get' );\n * // nameSingular is getRootTheme\n *\n * const namePlural = getMethodName( 'root', 'theme', 'set' );\n * // namePlural is setRootThemes\n * ```\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} prefix Function prefix.\n * @param {boolean} usePlural Whether to use the plural form or not.\n *\n * @return {string} Method name\n */\nexport const getMethodName = (\n\tkind,\n\tname,\n\tprefix = 'get',\n\tusePlural = false\n) => {\n\tconst entityConfig = find( rootEntitiesConfig, { kind, name } );\n\tconst kindPrefix = kind === 'root' ? '' : upperFirst( camelCase( kind ) );\n\tconst nameSuffix =\n\t\tupperFirst( camelCase( name ) ) + ( usePlural ? 's' : '' );\n\tconst suffix =\n\t\tusePlural && 'plural' in entityConfig! && entityConfig?.plural\n\t\t\t? upperFirst( camelCase( entityConfig.plural ) )\n\t\t\t: nameSuffix;\n\treturn `${ prefix }${ kindPrefix }${ suffix }`;\n};\n\n/**\n * Loads the kind entities into the store.\n *\n * @param {string} kind Kind\n *\n * @return {(thunkArgs: object) => Promise<Array>} Entities\n */\nexport const getOrLoadEntitiesConfig =\n\t( kind ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tlet configs = select.getEntitiesConfig( kind );\n\t\tif ( configs && configs.length !== 0 ) {\n\t\t\treturn configs;\n\t\t}\n\n\t\tconst loader = find( additionalEntityConfigLoaders, { kind } );\n\t\tif ( ! loader ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconfigs = await loader.loadEntities();\n\t\tdispatch( addEntities( configs ) );\n\n\t\treturn configs;\n\t};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/entity-provider.js"],"names":["createContext","useContext","useCallback","useEffect","useSelect","useDispatch","parse","__unstableSerializeAndClean","STORE_NAME","EMPTY_ARRAY","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","useEntityId","useEntityProp","prop","_id","providerId","value","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","content","blocks","__unstableCreateUndoLevel","parsedContent","undoIgnore","onChange","newBlocks","options","selection","edits","noChange","blocksForSerialization","onInput"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Internal dependencies\n */\nimport { rootEntitiesConfig, additionalEntityConfigLoaders } from './entities';\n\nconst entityContexts = {\n\t...rootEntitiesConfig.reduce( ( acc, loader ) => {\n\t\tif ( ! acc[ loader.kind ] ) {\n\t\t\tacc[ loader.kind ] = {};\n\t\t}\n\t\tacc[ loader.kind ][ loader.name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t\treturn acc;\n\t}, {} ),\n\t...additionalEntityConfigLoaders.reduce( ( acc, loader ) => {\n\t\tacc[ loader.kind ] = {};\n\t\treturn acc;\n\t}, {} ),\n};\nconst getEntityContext = ( kind, name ) => {\n\tif ( ! entityContexts[ kind ] ) {\n\t\tthrow new Error( `Missing entity config for kind: ${ kind }.` );\n\t}\n\n\tif ( ! entityContexts[ kind ][ name ] ) {\n\t\tentityContexts[ kind ][ name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t}\n\n\treturn entityContexts[ kind ][ name ].context;\n};\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( { kind, type: name, id, children } ) {\n\tconst Provider = getEntityContext( kind, name ).Provider;\n\treturn <Provider value={ id }>{ children }</Provider>;\n}\n\n/**\n * Hook that returns the ID for the nearest\n * provided entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n */\nexport function useEntityId( kind, name ) {\n\treturn useContext( getEntityContext( kind, name ) );\n}\n\n/**\n * Hook that returns the value and a setter for the\n * specified property of the nearest provided\n * entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {string} prop The property name.\n * @param {string} [_id] An entity ID to use instead of the context-provided one.\n *\n * @return {[*, Function, *]} An array where the first item is the\n * property value, the second is the\n * setter and the third is the full value\n * \t\t\t\t\t\t\t object from REST API containing more\n * \t\t\t\t\t\t\t information like `raw`, `rendered` and\n * \t\t\t\t\t\t\t `protected` props.\n */\nexport function useEntityProp( kind, name, prop, _id ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\n\tconst { value, fullValue } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getEditedEntityRecord } = select(\n\t\t\t\tSTORE_NAME\n\t\t\t);\n\t\t\tconst record = getEntityRecord( kind, name, id ); // Trigger resolver.\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn record && editedRecord\n\t\t\t\t? {\n\t\t\t\t\t\tvalue: editedRecord[ prop ],\n\t\t\t\t\t\tfullValue: record[ prop ],\n\t\t\t\t }\n\t\t\t\t: {};\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\tconst { editEntityRecord } = useDispatch( STORE_NAME );\n\tconst setValue = useCallback(\n\t\t( newValue ) => {\n\t\t\teditEntityRecord( kind, name, id, {\n\t\t\t\t[ prop ]: newValue,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\n\treturn [ value, setValue, fullValue ];\n}\n\n/**\n * Hook that returns block content getters and setters for\n * the nearest provided entity of the specified type.\n *\n * The return value has the shape `[ blocks, onInput, onChange ]`.\n * `onInput` is for block changes that don't create undo levels\n * or dirty the post, non-persistent changes, and `onChange` is for\n * peristent changes. They map directly to the props of a\n * `BlockEditorProvider` and are intended to be used with it,\n * or similar components or hooks.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {Object} options\n * @param {string} [options.id] An entity ID to use instead of the context-provided one.\n *\n * @return {[WPBlock[], Function, Function]} The block array and setters.\n */\nexport function useEntityBlockEditor( kind, name, { id: _id } = {} ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\tconst { content, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord } = select( STORE_NAME );\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn {\n\t\t\t\tblocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\tconst { __unstableCreateUndoLevel, editEntityRecord } = useDispatch(\n\t\tSTORE_NAME\n\t);\n\n\tuseEffect( () => {\n\t\t// Load the blocks from the content if not already in state\n\t\t// Guard against other instances that might have\n\t\t// set content to a function already or the blocks are already in state.\n\t\tif ( content && typeof content !== 'function' && ! blocks ) {\n\t\t\tconst parsedContent = parse( content );\n\t\t\teditEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tid,\n\t\t\t\t{\n\t\t\t\t\tblocks: parsedContent,\n\t\t\t\t},\n\t\t\t\t{ undoIgnore: true }\n\t\t\t);\n\t\t}\n\t}, [ content ] );\n\n\tconst onChange = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\n\t\t\tconst noChange = blocks === edits.blocks;\n\t\t\tif ( noChange ) {\n\t\t\t\treturn __unstableCreateUndoLevel( kind, name, id );\n\t\t\t}\n\n\t\t\t// We create a new function here on every persistent edit\n\t\t\t// to make sure the edit makes the post dirty and creates\n\t\t\t// a new undo level.\n\t\t\tedits.content = ( { blocks: blocksForSerialization = [] } ) =>\n\t\t\t\t__unstableSerializeAndClean( blocksForSerialization );\n\n\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t},\n\t\t[ kind, name, id, blocks ]\n\t);\n\n\tconst onInput = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\n\treturn [ blocks ?? EMPTY_ARRAY, onInput, onChange ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/entity-provider.js"],"names":["createContext","useContext","useCallback","useEffect","useSelect","useDispatch","parse","__unstableSerializeAndClean","STORE_NAME","EMPTY_ARRAY","rootEntitiesConfig","additionalEntityConfigLoaders","entityContexts","reduce","acc","loader","kind","name","context","undefined","getEntityContext","Error","EntityProvider","type","id","children","Provider","useEntityId","useEntityProp","prop","_id","providerId","value","fullValue","select","getEntityRecord","getEditedEntityRecord","record","editedRecord","editEntityRecord","setValue","newValue","useEntityBlockEditor","content","blocks","__unstableCreateUndoLevel","parsedContent","undoIgnore","onChange","newBlocks","options","selection","edits","noChange","blocksForSerialization","onInput"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { parse, __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\n\n/** @typedef {import('@wordpress/blocks').WPBlock} WPBlock */\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Internal dependencies\n */\nimport { rootEntitiesConfig, additionalEntityConfigLoaders } from './entities';\n\nconst entityContexts = {\n\t...rootEntitiesConfig.reduce( ( acc, loader ) => {\n\t\tif ( ! acc[ loader.kind ] ) {\n\t\t\tacc[ loader.kind ] = {};\n\t\t}\n\t\tacc[ loader.kind ][ loader.name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t\treturn acc;\n\t}, {} ),\n\t...additionalEntityConfigLoaders.reduce( ( acc, loader ) => {\n\t\tacc[ loader.kind ] = {};\n\t\treturn acc;\n\t}, {} ),\n};\nconst getEntityContext = ( kind, name ) => {\n\tif ( ! entityContexts[ kind ] ) {\n\t\tthrow new Error( `Missing entity config for kind: ${ kind }.` );\n\t}\n\n\tif ( ! entityContexts[ kind ][ name ] ) {\n\t\tentityContexts[ kind ][ name ] = {\n\t\t\tcontext: createContext( undefined ),\n\t\t};\n\t}\n\n\treturn entityContexts[ kind ][ name ].context;\n};\n\n/**\n * Context provider component for providing\n * an entity for a specific entity.\n *\n * @param {Object} props The component's props.\n * @param {string} props.kind The entity kind.\n * @param {string} props.type The entity name.\n * @param {number} props.id The entity ID.\n * @param {*} props.children The children to wrap.\n *\n * @return {Object} The provided children, wrapped with\n * the entity's context provider.\n */\nexport default function EntityProvider( { kind, type: name, id, children } ) {\n\tconst Provider = getEntityContext( kind, name ).Provider;\n\treturn <Provider value={ id }>{ children }</Provider>;\n}\n\n/**\n * Hook that returns the ID for the nearest\n * provided entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n */\nexport function useEntityId( kind, name ) {\n\treturn useContext( getEntityContext( kind, name ) );\n}\n\n/**\n * Hook that returns the value and a setter for the\n * specified property of the nearest provided\n * entity of the specified type.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {string} prop The property name.\n * @param {string} [_id] An entity ID to use instead of the context-provided one.\n *\n * @return {[*, Function, *]} An array where the first item is the\n * property value, the second is the\n * setter and the third is the full value\n * \t\t\t\t\t\t\t object from REST API containing more\n * \t\t\t\t\t\t\t information like `raw`, `rendered` and\n * \t\t\t\t\t\t\t `protected` props.\n */\nexport function useEntityProp( kind, name, prop, _id ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\n\tconst { value, fullValue } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getEditedEntityRecord } =\n\t\t\t\tselect( STORE_NAME );\n\t\t\tconst record = getEntityRecord( kind, name, id ); // Trigger resolver.\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn record && editedRecord\n\t\t\t\t? {\n\t\t\t\t\t\tvalue: editedRecord[ prop ],\n\t\t\t\t\t\tfullValue: record[ prop ],\n\t\t\t\t }\n\t\t\t\t: {};\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\tconst { editEntityRecord } = useDispatch( STORE_NAME );\n\tconst setValue = useCallback(\n\t\t( newValue ) => {\n\t\t\teditEntityRecord( kind, name, id, {\n\t\t\t\t[ prop ]: newValue,\n\t\t\t} );\n\t\t},\n\t\t[ kind, name, id, prop ]\n\t);\n\n\treturn [ value, setValue, fullValue ];\n}\n\n/**\n * Hook that returns block content getters and setters for\n * the nearest provided entity of the specified type.\n *\n * The return value has the shape `[ blocks, onInput, onChange ]`.\n * `onInput` is for block changes that don't create undo levels\n * or dirty the post, non-persistent changes, and `onChange` is for\n * peristent changes. They map directly to the props of a\n * `BlockEditorProvider` and are intended to be used with it,\n * or similar components or hooks.\n *\n * @param {string} kind The entity kind.\n * @param {string} name The entity name.\n * @param {Object} options\n * @param {string} [options.id] An entity ID to use instead of the context-provided one.\n *\n * @return {[WPBlock[], Function, Function]} The block array and setters.\n */\nexport function useEntityBlockEditor( kind, name, { id: _id } = {} ) {\n\tconst providerId = useEntityId( kind, name );\n\tconst id = _id ?? providerId;\n\tconst { content, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord } = select( STORE_NAME );\n\t\t\tconst editedRecord = getEditedEntityRecord( kind, name, id );\n\t\t\treturn {\n\t\t\t\tblocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\tconst { __unstableCreateUndoLevel, editEntityRecord } =\n\t\tuseDispatch( STORE_NAME );\n\n\tuseEffect( () => {\n\t\t// Load the blocks from the content if not already in state\n\t\t// Guard against other instances that might have\n\t\t// set content to a function already or the blocks are already in state.\n\t\tif ( content && typeof content !== 'function' && ! blocks ) {\n\t\t\tconst parsedContent = parse( content );\n\t\t\teditEntityRecord(\n\t\t\t\tkind,\n\t\t\t\tname,\n\t\t\t\tid,\n\t\t\t\t{\n\t\t\t\t\tblocks: parsedContent,\n\t\t\t\t},\n\t\t\t\t{ undoIgnore: true }\n\t\t\t);\n\t\t}\n\t}, [ content ] );\n\n\tconst onChange = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\n\t\t\tconst noChange = blocks === edits.blocks;\n\t\t\tif ( noChange ) {\n\t\t\t\treturn __unstableCreateUndoLevel( kind, name, id );\n\t\t\t}\n\n\t\t\t// We create a new function here on every persistent edit\n\t\t\t// to make sure the edit makes the post dirty and creates\n\t\t\t// a new undo level.\n\t\t\tedits.content = ( { blocks: blocksForSerialization = [] } ) =>\n\t\t\t\t__unstableSerializeAndClean( blocksForSerialization );\n\n\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t},\n\t\t[ kind, name, id, blocks ]\n\t);\n\n\tconst onInput = useCallback(\n\t\t( newBlocks, options ) => {\n\t\t\tconst { selection } = options;\n\t\t\tconst edits = { blocks: newBlocks, selection };\n\t\t\teditEntityRecord( kind, name, id, edits );\n\t\t},\n\t\t[ kind, name, id ]\n\t);\n\n\treturn [ blocks ?? EMPTY_ARRAY, onInput, onChange ];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-record.ts"],"names":["deprecated","useQuerySelect","store","coreStore","useEntityRecord","kind","name","recordId","options","enabled","data","record","rest","query","getEntityRecord","__experimentalUseEntityRecord","alternative","since"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAT,CACdC,IADc,EAEdC,IAFc,EAGdC,QAHc,EAKyB;AAAA,MADvCC,OACuC,uEADpB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACoB;AACvC,QAAM;AAAEC,IAAAA,IAAI,EAAEC,MAAR;AAAgB,OAAGC;AAAnB,MAA4BX,cAAc,CAC7CY,KAAF,IAAa;AACZ,QAAK,CAAEL,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO,IAAP;AACA;;AACD,WAAOI,KAAK,CAAEV,SAAF,CAAL,CAAmBW,eAAnB,CAAoCT,IAApC,EAA0CC,IAA1C,EAAgDC,QAAhD,CAAP;AACA,GAN8C,EAO/C,CAAEF,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAO,CAACC,OAAhC,CAP+C,CAAhD;AAUA,SAAO;AACNE,IAAAA,MADM;AAEN,OAAGC;AAFG,GAAP;AAIA;AAED,OAAO,SAASG,6BAAT,CACNV,IADM,EAENC,IAFM,EAGNC,QAHM,EAINC,OAJM,EAKL;AACDR,EAAAA,UAAU,CAAG,uCAAH,EAA2C;AACpDgB,IAAAA,WAAW,EAAE,yBADuC;AAEpDC,IAAAA,KAAK,EAAE;AAF6C,GAA3C,CAAV;AAIA,SAAOb,eAAe,CAAEC,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAxB,CAAtB;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\nimport useEntityRecords from './use-entity-records';\n\nexport interface EntityRecordResolution< RecordType > {\n\t/** The requested entity record */\n\trecord: RecordType | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\nexport interface Options {\n\t/**\n\t * Whether to run the query or short-circuit and return null.\n\t *\n\t * @default true\n\t */\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity record.\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 recordId ID of the requested entity record.\n * @param options Optional hook options.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { record, isResolving } = useEntityRecord( 'postType', 'page', id );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return record.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 1 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using `getEntityRecord()`, or resolved if missing.\n *\n * @return Entity record data.\n * @template RecordType\n */\nexport default function useEntityRecord< RecordType >(\n\tkind: string,\n\tname: string,\n\trecordId: string | number,\n\toptions: Options = { enabled: true }\n): EntityRecordResolution< RecordType > {\n\tconst { data: record, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecord( kind, name, recordId );\n\t\t},\n\t\t[ kind, name, recordId, options.enabled ]\n\t);\n\n\treturn {\n\t\trecord,\n\t\t...rest,\n\t};\n}\n\nexport function __experimentalUseEntityRecord(\n\tkind: string,\n\tname: string,\n\trecordId: any,\n\toptions: any\n) {\n\tdeprecated( `wp.data.__experimentalUseEntityRecord`, {\n\t\talternative: 'wp.data.useEntityRecord',\n\t\tsince: '6.1',\n\t} );\n\treturn useEntityRecord( kind, name, recordId, options );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-entity-record.ts"],"names":["deprecated","useQuerySelect","store","coreStore","useEntityRecord","kind","name","recordId","options","enabled","data","record","rest","query","getEntityRecord","__experimentalUseEntityRecord","alternative","since"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAT,CACdC,IADc,EAEdC,IAFc,EAGdC,QAHc,EAKyB;AAAA,MADvCC,OACuC,uEADpB;AAAEC,IAAAA,OAAO,EAAE;AAAX,GACoB;AACvC,QAAM;AAAEC,IAAAA,IAAI,EAAEC,MAAR;AAAgB,OAAGC;AAAnB,MAA4BX,cAAc,CAC7CY,KAAF,IAAa;AACZ,QAAK,CAAEL,OAAO,CAACC,OAAf,EAAyB;AACxB,aAAO,IAAP;AACA;;AACD,WAAOI,KAAK,CAAEV,SAAF,CAAL,CAAmBW,eAAnB,CAAoCT,IAApC,EAA0CC,IAA1C,EAAgDC,QAAhD,CAAP;AACA,GAN8C,EAO/C,CAAEF,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAO,CAACC,OAAhC,CAP+C,CAAhD;AAUA,SAAO;AACNE,IAAAA,MADM;AAEN,OAAGC;AAFG,GAAP;AAIA;AAED,OAAO,SAASG,6BAAT,CACNV,IADM,EAENC,IAFM,EAGNC,QAHM,EAINC,OAJM,EAKL;AACDR,EAAAA,UAAU,CAAG,uCAAH,EAA2C;AACpDgB,IAAAA,WAAW,EAAE,yBADuC;AAEpDC,IAAAA,KAAK,EAAE;AAF6C,GAA3C,CAAV;AAIA,SAAOb,eAAe,CAAEC,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,OAAxB,CAAtB;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport useQuerySelect from './use-query-select';\nimport { store as coreStore } from '../';\nimport type { Status } from './constants';\n\nexport interface EntityRecordResolution< RecordType > {\n\t/** The requested entity record */\n\trecord: RecordType | null;\n\n\t/**\n\t * Is the record still being resolved?\n\t */\n\tisResolving: boolean;\n\n\t/**\n\t * Is the record resolved by now?\n\t */\n\thasResolved: boolean;\n\n\t/** Resolution status */\n\tstatus: Status;\n}\n\nexport interface Options {\n\t/**\n\t * Whether to run the query or short-circuit and return null.\n\t *\n\t * @default true\n\t */\n\tenabled: boolean;\n}\n\n/**\n * Resolves the specified entity record.\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 recordId ID of the requested entity record.\n * @param options Optional hook options.\n * @example\n * ```js\n * import { useEntityRecord } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { record, isResolving } = useEntityRecord( 'postType', 'page', id );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return record.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 1 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using `getEntityRecord()`, or resolved if missing.\n *\n * @return Entity record data.\n * @template RecordType\n */\nexport default function useEntityRecord< RecordType >(\n\tkind: string,\n\tname: string,\n\trecordId: string | number,\n\toptions: Options = { enabled: true }\n): EntityRecordResolution< RecordType > {\n\tconst { data: record, ...rest } = useQuerySelect(\n\t\t( query ) => {\n\t\t\tif ( ! options.enabled ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn query( coreStore ).getEntityRecord( kind, name, recordId );\n\t\t},\n\t\t[ kind, name, recordId, options.enabled ]\n\t);\n\n\treturn {\n\t\trecord,\n\t\t...rest,\n\t};\n}\n\nexport function __experimentalUseEntityRecord(\n\tkind: string,\n\tname: string,\n\trecordId: any,\n\toptions: any\n) {\n\tdeprecated( `wp.data.__experimentalUseEntityRecord`, {\n\t\talternative: 'wp.data.useEntityRecord',\n\t\tsince: '6.1',\n\t} );\n\treturn useEntityRecord( kind, name, recordId, options );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/hooks/use-query-select.ts"],"names":["useSelect","memoize","Status","META_SELECTORS","__experimentalUseQuerySelect","mapQuerySelect","deps","select","registry","resolve","store","enrichSelectors","selectors","resolvers","selectorName","includes","Object","defineProperty","get","getIsResolving","hasFinishedResolution","args","isResolving","hasResolved","data","status","Resolving","Success","Error","Idle"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,MAAT,QAAuB,aAAvB;AAEA,OAAO,MAAMC,cAAc,GAAG,CAC7B,gBAD6B,EAE7B,sBAF6B,EAG7B,uBAH6B,EAI7B,aAJ6B,EAK7B,oBAL6B,CAAvB;;AAsBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAAT,CAAuCC,cAAvC,EAAuDC,IAAvD,EAA8D;AAC5E,SAAON,SAAS,CAAE,CAAEO,MAAF,EAAUC,QAAV,KAAwB;AACzC,UAAMC,OAAO,GAAKC,KAAF,IAAaC,eAAe,CAAEJ,MAAM,CAAEG,KAAF,CAAR,CAA5C;;AACA,WAAOL,cAAc,CAAEI,OAAF,EAAWD,QAAX,CAArB;AACA,GAHe,EAGbF,IAHa,CAAhB;AAIA;;AAYD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,eAAe,GAAGV,OAAO,CAAMW,SAAF,IAAiB;AACnD,QAAMC,SAAS,GAAG,EAAlB;;AACA,OAAM,MAAMC,YAAZ,IAA4BF,SAA5B,EAAwC;AACvC,QAAKT,cAAc,CAACY,QAAf,CAAyBD,YAAzB,CAAL,EAA+C;AAC9C;AACA;;AACDE,IAAAA,MAAM,CAACC,cAAP,CAAuBJ,SAAvB,EAAkCC,YAAlC,EAAgD;AAC/CI,MAAAA,GAAG,EAAE,MAAM,YAA0B;AACpC,cAAM;AAAEC,UAAAA,cAAF;AAAkBC,UAAAA;AAAlB,YAA4CR,SAAlD;;AADoC,0CAArBS,IAAqB;AAArBA,UAAAA,IAAqB;AAAA;;AAEpC,cAAMC,WAAW,GAAG,CAAC,CAAEH,cAAc,CAAEL,YAAF,EAAgBO,IAAhB,CAArC;AACA,cAAME,WAAW,GAChB,CAAED,WAAF,IACAF,qBAAqB,CAAEN,YAAF,EAAgBO,IAAhB,CAFtB;AAGA,cAAMG,IAAI,GAAGZ,SAAS,CAAEE,YAAF,CAAT,CAA2B,GAAGO,IAA9B,CAAb;AAEA,YAAII,MAAJ;;AACA,YAAKH,WAAL,EAAmB;AAClBG,UAAAA,MAAM,GAAGvB,MAAM,CAACwB,SAAhB;AACA,SAFD,MAEO,IAAKH,WAAL,EAAmB;AACzB,cAAKC,IAAL,EAAY;AACXC,YAAAA,MAAM,GAAGvB,MAAM,CAACyB,OAAhB;AACA,WAFD,MAEO;AACNF,YAAAA,MAAM,GAAGvB,MAAM,CAAC0B,KAAhB;AACA;AACD,SANM,MAMA;AACNH,UAAAA,MAAM,GAAGvB,MAAM,CAAC2B,IAAhB;AACA;;AAED,eAAO;AACNL,UAAAA,IADM;AAENC,UAAAA,MAFM;AAGNH,UAAAA,WAHM;AAINC,UAAAA;AAJM,SAAP;AAMA;AA5B8C,KAAhD;AA8BA;;AACD,SAAOV,SAAP;AACA,CAtC8B,CAA/B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport memoize from './memoize';\nimport { Status } from './constants';\n\nexport const META_SELECTORS = [\n\t'getIsResolving',\n\t'hasStartedResolution',\n\t'hasFinishedResolution',\n\t'isResolving',\n\t'getCachedResolvers',\n];\n\ninterface QuerySelectResponse< Data > {\n\t/** the requested selector return value */\n\tdata: Data;\n\n\t/** is the record still being resolved? Via the `getIsResolving` meta-selector */\n\tisResolving: boolean;\n\n\t/** was the resolution started? Via the `hasStartedResolution` meta-selector */\n\thasStarted: boolean;\n\n\t/** has the resolution finished? Via the `hasFinishedResolution` meta-selector. */\n\thasResolved: boolean;\n}\n\n/**\n * Like useSelect, but the selectors return objects containing\n * both the original data AND the resolution info.\n *\n * @param {Function} mapQuerySelect see useSelect\n * @param {Array} deps see useSelect\n *\n * @example\n * ```js\n * import { useQuerySelect } from '@wordpress/data';\n * import { store as coreDataStore } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { data: page, isResolving } = useQuerySelect( ( query ) => {\n * return query( coreDataStore ).getEntityRecord( 'postType', 'page', id )\n * }, [ id ] );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return page.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 10 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using the `mapSelect` callback on `useQuerySelect`.\n *\n * If the id prop changes then any page in the state for that id is\n * retrieved. If the id prop doesn't change and other props are passed in\n * that do change, the title will not change because the dependency is just\n * the id.\n * @see useSelect\n *\n * @return {QuerySelectResponse} Queried data.\n */\nexport default function __experimentalUseQuerySelect( mapQuerySelect, deps ) {\n\treturn useSelect( ( select, registry ) => {\n\t\tconst resolve = ( store ) => enrichSelectors( select( store ) );\n\t\treturn mapQuerySelect( resolve, registry );\n\t}, deps );\n}\n\ninterface EnrichedSelectors {\n\t< Selectors extends Record< string, ( ...args: any[] ) => any > >(\n\t\tselectors: Selectors\n\t): {\n\t\t[ Selector in keyof Selectors ]: (\n\t\t\t...args: Parameters< Selectors[ Selector ] >\n\t\t) => QuerySelectResponse< ReturnType< Selectors[ Selector ] > >;\n\t};\n}\n\n/**\n * Transform simple selectors into ones that return an object with the\n * original return value AND the resolution info.\n *\n * @param {Object} selectors Selectors to enrich\n * @return {EnrichedSelectors} Enriched selectors\n */\nconst enrichSelectors = memoize( ( ( selectors ) => {\n\tconst resolvers = {};\n\tfor ( const selectorName in selectors ) {\n\t\tif ( META_SELECTORS.includes( selectorName ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tObject.defineProperty( resolvers, selectorName, {\n\t\t\tget: () => ( ...args: unknown[] ) => {\n\t\t\t\tconst { getIsResolving, hasFinishedResolution } = selectors;\n\t\t\t\tconst isResolving = !! getIsResolving( selectorName, args );\n\t\t\t\tconst hasResolved =\n\t\t\t\t\t! isResolving &&\n\t\t\t\t\thasFinishedResolution( selectorName, args );\n\t\t\t\tconst data = selectors[ selectorName ]( ...args );\n\n\t\t\t\tlet status;\n\t\t\t\tif ( isResolving ) {\n\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\tif ( data ) {\n\t\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatus = Status.Error;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstatus = Status.Idle;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tdata,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\thasResolved,\n\t\t\t\t};\n\t\t\t},\n\t\t} );\n\t}\n\treturn resolvers;\n} ) as EnrichedSelectors );\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-query-select.ts"],"names":["useSelect","memoize","Status","META_SELECTORS","__experimentalUseQuerySelect","mapQuerySelect","deps","select","registry","resolve","store","enrichSelectors","selectors","resolvers","selectorName","includes","Object","defineProperty","get","getIsResolving","hasFinishedResolution","args","isResolving","hasResolved","data","status","Resolving","Success","Error","Idle"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAASC,MAAT,QAAuB,aAAvB;AAEA,OAAO,MAAMC,cAAc,GAAG,CAC7B,gBAD6B,EAE7B,sBAF6B,EAG7B,uBAH6B,EAI7B,aAJ6B,EAK7B,oBAL6B,CAAvB;;AAsBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAAT,CAAuCC,cAAvC,EAAuDC,IAAvD,EAA8D;AAC5E,SAAON,SAAS,CAAE,CAAEO,MAAF,EAAUC,QAAV,KAAwB;AACzC,UAAMC,OAAO,GAAKC,KAAF,IAAaC,eAAe,CAAEJ,MAAM,CAAEG,KAAF,CAAR,CAA5C;;AACA,WAAOL,cAAc,CAAEI,OAAF,EAAWD,QAAX,CAArB;AACA,GAHe,EAGbF,IAHa,CAAhB;AAIA;;AAYD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,eAAe,GAAGV,OAAO,CAAMW,SAAF,IAAiB;AACnD,QAAMC,SAAS,GAAG,EAAlB;;AACA,OAAM,MAAMC,YAAZ,IAA4BF,SAA5B,EAAwC;AACvC,QAAKT,cAAc,CAACY,QAAf,CAAyBD,YAAzB,CAAL,EAA+C;AAC9C;AACA;;AACDE,IAAAA,MAAM,CAACC,cAAP,CAAuBJ,SAAvB,EAAkCC,YAAlC,EAAgD;AAC/CI,MAAAA,GAAG,EACF,MACA,YAA0B;AACzB,cAAM;AAAEC,UAAAA,cAAF;AAAkBC,UAAAA;AAAlB,YAA4CR,SAAlD;;AADyB,0CAArBS,IAAqB;AAArBA,UAAAA,IAAqB;AAAA;;AAEzB,cAAMC,WAAW,GAAG,CAAC,CAAEH,cAAc,CAAEL,YAAF,EAAgBO,IAAhB,CAArC;AACA,cAAME,WAAW,GAChB,CAAED,WAAF,IACAF,qBAAqB,CAAEN,YAAF,EAAgBO,IAAhB,CAFtB;AAGA,cAAMG,IAAI,GAAGZ,SAAS,CAAEE,YAAF,CAAT,CAA2B,GAAGO,IAA9B,CAAb;AAEA,YAAII,MAAJ;;AACA,YAAKH,WAAL,EAAmB;AAClBG,UAAAA,MAAM,GAAGvB,MAAM,CAACwB,SAAhB;AACA,SAFD,MAEO,IAAKH,WAAL,EAAmB;AACzB,cAAKC,IAAL,EAAY;AACXC,YAAAA,MAAM,GAAGvB,MAAM,CAACyB,OAAhB;AACA,WAFD,MAEO;AACNF,YAAAA,MAAM,GAAGvB,MAAM,CAAC0B,KAAhB;AACA;AACD,SANM,MAMA;AACNH,UAAAA,MAAM,GAAGvB,MAAM,CAAC2B,IAAhB;AACA;;AAED,eAAO;AACNL,UAAAA,IADM;AAENC,UAAAA,MAFM;AAGNH,UAAAA,WAHM;AAINC,UAAAA;AAJM,SAAP;AAMA;AA9B6C,KAAhD;AAgCA;;AACD,SAAOV,SAAP;AACA,CAxC8B,CAA/B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport memoize from './memoize';\nimport { Status } from './constants';\n\nexport const META_SELECTORS = [\n\t'getIsResolving',\n\t'hasStartedResolution',\n\t'hasFinishedResolution',\n\t'isResolving',\n\t'getCachedResolvers',\n];\n\ninterface QuerySelectResponse< Data > {\n\t/** the requested selector return value */\n\tdata: Data;\n\n\t/** is the record still being resolved? Via the `getIsResolving` meta-selector */\n\tisResolving: boolean;\n\n\t/** was the resolution started? Via the `hasStartedResolution` meta-selector */\n\thasStarted: boolean;\n\n\t/** has the resolution finished? Via the `hasFinishedResolution` meta-selector. */\n\thasResolved: boolean;\n}\n\n/**\n * Like useSelect, but the selectors return objects containing\n * both the original data AND the resolution info.\n *\n * @param {Function} mapQuerySelect see useSelect\n * @param {Array} deps see useSelect\n *\n * @example\n * ```js\n * import { useQuerySelect } from '@wordpress/data';\n * import { store as coreDataStore } from '@wordpress/core-data';\n *\n * function PageTitleDisplay( { id } ) {\n * const { data: page, isResolving } = useQuerySelect( ( query ) => {\n * return query( coreDataStore ).getEntityRecord( 'postType', 'page', id )\n * }, [ id ] );\n *\n * if ( isResolving ) {\n * return 'Loading...';\n * }\n *\n * return page.title;\n * }\n *\n * // Rendered in the application:\n * // <PageTitleDisplay id={ 10 } />\n * ```\n *\n * In the above example, when `PageTitleDisplay` is rendered into an\n * application, the page and the resolution details will be retrieved from\n * the store state using the `mapSelect` callback on `useQuerySelect`.\n *\n * If the id prop changes then any page in the state for that id is\n * retrieved. If the id prop doesn't change and other props are passed in\n * that do change, the title will not change because the dependency is just\n * the id.\n * @see useSelect\n *\n * @return {QuerySelectResponse} Queried data.\n */\nexport default function __experimentalUseQuerySelect( mapQuerySelect, deps ) {\n\treturn useSelect( ( select, registry ) => {\n\t\tconst resolve = ( store ) => enrichSelectors( select( store ) );\n\t\treturn mapQuerySelect( resolve, registry );\n\t}, deps );\n}\n\ninterface EnrichedSelectors {\n\t< Selectors extends Record< string, ( ...args: any[] ) => any > >(\n\t\tselectors: Selectors\n\t): {\n\t\t[ Selector in keyof Selectors ]: (\n\t\t\t...args: Parameters< Selectors[ Selector ] >\n\t\t) => QuerySelectResponse< ReturnType< Selectors[ Selector ] > >;\n\t};\n}\n\n/**\n * Transform simple selectors into ones that return an object with the\n * original return value AND the resolution info.\n *\n * @param {Object} selectors Selectors to enrich\n * @return {EnrichedSelectors} Enriched selectors\n */\nconst enrichSelectors = memoize( ( ( selectors ) => {\n\tconst resolvers = {};\n\tfor ( const selectorName in selectors ) {\n\t\tif ( META_SELECTORS.includes( selectorName ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tObject.defineProperty( resolvers, selectorName, {\n\t\t\tget:\n\t\t\t\t() =>\n\t\t\t\t( ...args: unknown[] ) => {\n\t\t\t\t\tconst { getIsResolving, hasFinishedResolution } = selectors;\n\t\t\t\t\tconst isResolving = !! getIsResolving( selectorName, args );\n\t\t\t\t\tconst hasResolved =\n\t\t\t\t\t\t! isResolving &&\n\t\t\t\t\t\thasFinishedResolution( selectorName, args );\n\t\t\t\t\tconst data = selectors[ selectorName ]( ...args );\n\n\t\t\t\t\tlet status;\n\t\t\t\t\tif ( isResolving ) {\n\t\t\t\t\t\tstatus = Status.Resolving;\n\t\t\t\t\t} else if ( hasResolved ) {\n\t\t\t\t\t\tif ( data ) {\n\t\t\t\t\t\t\tstatus = Status.Success;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstatus = Status.Error;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatus = Status.Idle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tisResolving,\n\t\t\t\t\t\thasResolved,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t} );\n\t}\n\treturn resolvers;\n} ) as EnrichedSelectors );\n"]}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { store as coreStore } from '../';
5
+ import { Status } from './constants';
6
+ import useQuerySelect from './use-query-select';
7
+
8
+ /**
9
+ * Resolves resource permissions.
10
+ *
11
+ * @param resource The resource in question, e.g. media.
12
+ * @param id ID of a specific resource entry, if needed, e.g. 10.
13
+ *
14
+ * @example
15
+ * ```js
16
+ * import { useResourcePermissions } from '@wordpress/core-data';
17
+ *
18
+ * function PagesList() {
19
+ * const { canCreate, isResolving } = useResourcePermissions( 'pages' );
20
+ *
21
+ * if ( isResolving ) {
22
+ * return 'Loading ...';
23
+ * }
24
+ *
25
+ * return (
26
+ * <div>
27
+ * {canCreate ? (<button>+ Create a new page</button>) : false}
28
+ * // ...
29
+ * </div>
30
+ * );
31
+ * }
32
+ *
33
+ * // Rendered in the application:
34
+ * // <PagesList />
35
+ * ```
36
+ *
37
+ * In the above example, when `PagesList` is rendered into an
38
+ * application, the appropriate permissions and the resolution details will be retrieved from
39
+ * the store state using `canUser()`, or resolved if missing.
40
+ *
41
+ * @return Entity records data.
42
+ * @template IdType
43
+ */
44
+ export default function __experimentalUseResourcePermissions(resource, id) {
45
+ return useQuerySelect(resolve => {
46
+ const {
47
+ canUser
48
+ } = resolve(coreStore);
49
+ const create = canUser('create', resource);
50
+
51
+ if (!id) {
52
+ return [create.hasResolved, {
53
+ status: create.status,
54
+ isResolving: create.isResolving,
55
+ canCreate: create.hasResolved && create.data
56
+ }];
57
+ }
58
+
59
+ const update = canUser('update', resource, id);
60
+
61
+ const _delete = canUser('delete', resource, id);
62
+
63
+ const isResolving = create.isResolving || update.isResolving || _delete.isResolving;
64
+ const hasResolved = create.hasResolved && update.hasResolved && _delete.hasResolved;
65
+ let status = Status.Idle;
66
+
67
+ if (isResolving) {
68
+ status = Status.Resolving;
69
+ } else if (hasResolved) {
70
+ status = Status.Success;
71
+ }
72
+
73
+ return [hasResolved, {
74
+ status,
75
+ isResolving,
76
+ canCreate: hasResolved && create.data,
77
+ canUpdate: hasResolved && update.data,
78
+ canDelete: hasResolved && _delete.data
79
+ }];
80
+ }, [resource, id]);
81
+ }
82
+ //# sourceMappingURL=use-resource-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/core-data/src/hooks/use-resource-permissions.ts"],"names":["store","coreStore","Status","useQuerySelect","__experimentalUseResourcePermissions","resource","id","resolve","canUser","create","hasResolved","status","isResolving","canCreate","data","update","_delete","Idle","Resolving","Success","canUpdate","canDelete"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,SAAlB,QAAmC,KAAnC;AACA,SAASC,MAAT,QAAuB,aAAvB;AACA,OAAOC,cAAP,MAA2B,oBAA3B;;AAiCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,oCAAT,CACdC,QADc,EAEdC,EAFc,EAG4B;AAC1C,SAAOH,cAAc,CAClBI,OAAF,IAAe;AACd,UAAM;AAAEC,MAAAA;AAAF,QAAcD,OAAO,CAAEN,SAAF,CAA3B;AACA,UAAMQ,MAAM,GAAGD,OAAO,CAAE,QAAF,EAAYH,QAAZ,CAAtB;;AACA,QAAK,CAAEC,EAAP,EAAY;AACX,aAAO,CACNG,MAAM,CAACC,WADD,EAEN;AACCC,QAAAA,MAAM,EAAEF,MAAM,CAACE,MADhB;AAECC,QAAAA,WAAW,EAAEH,MAAM,CAACG,WAFrB;AAGCC,QAAAA,SAAS,EAAEJ,MAAM,CAACC,WAAP,IAAsBD,MAAM,CAACK;AAHzC,OAFM,CAAP;AAQA;;AAED,UAAMC,MAAM,GAAGP,OAAO,CAAE,QAAF,EAAYH,QAAZ,EAAsBC,EAAtB,CAAtB;;AACA,UAAMU,OAAO,GAAGR,OAAO,CAAE,QAAF,EAAYH,QAAZ,EAAsBC,EAAtB,CAAvB;;AACA,UAAMM,WAAW,GAChBH,MAAM,CAACG,WAAP,IAAsBG,MAAM,CAACH,WAA7B,IAA4CI,OAAO,CAACJ,WADrD;AAEA,UAAMF,WAAW,GAChBD,MAAM,CAACC,WAAP,IAAsBK,MAAM,CAACL,WAA7B,IAA4CM,OAAO,CAACN,WADrD;AAGA,QAAIC,MAAM,GAAGT,MAAM,CAACe,IAApB;;AACA,QAAKL,WAAL,EAAmB;AAClBD,MAAAA,MAAM,GAAGT,MAAM,CAACgB,SAAhB;AACA,KAFD,MAEO,IAAKR,WAAL,EAAmB;AACzBC,MAAAA,MAAM,GAAGT,MAAM,CAACiB,OAAhB;AACA;;AACD,WAAO,CACNT,WADM,EAEN;AACCC,MAAAA,MADD;AAECC,MAAAA,WAFD;AAGCC,MAAAA,SAAS,EAAEH,WAAW,IAAID,MAAM,CAACK,IAHlC;AAICM,MAAAA,SAAS,EAAEV,WAAW,IAAIK,MAAM,CAACD,IAJlC;AAKCO,MAAAA,SAAS,EAAEX,WAAW,IAAIM,OAAO,CAACF;AALnC,KAFM,CAAP;AAUA,GAtCmB,EAuCpB,CAAET,QAAF,EAAYC,EAAZ,CAvCoB,CAArB;AAyCA","sourcesContent":["/**\n * Internal dependencies\n */\nimport { store as coreStore } from '../';\nimport { Status } from './constants';\nimport useQuerySelect from './use-query-select';\n\ninterface GlobalResourcePermissionsResolution {\n\t/** Can the current user create new resources of this type? */\n\tcanCreate: boolean;\n}\ninterface SpecificResourcePermissionsResolution {\n\t/** Can the current user update resources of this type? */\n\tcanUpdate: boolean;\n\t/** Can the current user delete resources of this type? */\n\tcanDelete: boolean;\n}\ninterface ResolutionDetails {\n\t/** Resolution status */\n\tstatus: Status;\n\t/**\n\t * Is the data still being resolved?\n\t */\n\tisResolving: boolean;\n}\n\n/**\n * Is the data resolved by now?\n */\ntype HasResolved = boolean;\n\ntype ResourcePermissionsResolution< IdType > = [\n\tHasResolved,\n\tResolutionDetails &\n\t\tGlobalResourcePermissionsResolution &\n\t\t( IdType extends void ? SpecificResourcePermissionsResolution : {} )\n];\n\n/**\n * Resolves resource permissions.\n *\n * @param resource The resource in question, e.g. media.\n * @param id ID of a specific resource entry, if needed, e.g. 10.\n *\n * @example\n * ```js\n * import { useResourcePermissions } from '@wordpress/core-data';\n *\n * function PagesList() {\n * const { canCreate, isResolving } = useResourcePermissions( 'pages' );\n *\n * if ( isResolving ) {\n * return 'Loading ...';\n * }\n *\n * return (\n * <div>\n * {canCreate ? (<button>+ Create a new page</button>) : false}\n * // ...\n * </div>\n * );\n * }\n *\n * // Rendered in the application:\n * // <PagesList />\n * ```\n *\n * In the above example, when `PagesList` is rendered into an\n * application, the appropriate permissions and the resolution details will be retrieved from\n * the store state using `canUser()`, or resolved if missing.\n *\n * @return Entity records data.\n * @template IdType\n */\nexport default function __experimentalUseResourcePermissions< IdType = void >(\n\tresource: string,\n\tid?: IdType\n): ResourcePermissionsResolution< IdType > {\n\treturn useQuerySelect(\n\t\t( resolve ) => {\n\t\t\tconst { canUser } = resolve( coreStore );\n\t\t\tconst create = canUser( 'create', resource );\n\t\t\tif ( ! id ) {\n\t\t\t\treturn [\n\t\t\t\t\tcreate.hasResolved,\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: create.status,\n\t\t\t\t\t\tisResolving: create.isResolving,\n\t\t\t\t\t\tcanCreate: create.hasResolved && create.data,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tconst update = canUser( 'update', resource, id );\n\t\t\tconst _delete = canUser( 'delete', resource, id );\n\t\t\tconst isResolving =\n\t\t\t\tcreate.isResolving || update.isResolving || _delete.isResolving;\n\t\t\tconst hasResolved =\n\t\t\t\tcreate.hasResolved && update.hasResolved && _delete.hasResolved;\n\n\t\t\tlet status = Status.Idle;\n\t\t\tif ( isResolving ) {\n\t\t\t\tstatus = Status.Resolving;\n\t\t\t} else if ( hasResolved ) {\n\t\t\t\tstatus = Status.Success;\n\t\t\t}\n\t\t\treturn [\n\t\t\t\thasResolved,\n\t\t\t\t{\n\t\t\t\t\tstatus,\n\t\t\t\t\tisResolving,\n\t\t\t\t\tcanCreate: hasResolved && create.data,\n\t\t\t\t\tcanUpdate: hasResolved && update.data,\n\t\t\t\t\tcanDelete: hasResolved && _delete.data,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\t[ resource, id ]\n\t);\n}\n"]}
@@ -89,6 +89,9 @@ const storeConfig = () => ({
89
89
  export const store = createReduxStore(STORE_NAME, storeConfig());
90
90
  register(store);
91
91
  export { default as EntityProvider } from './entity-provider';
92
+ export { default as useEntityRecord } from './hooks/use-entity-record';
93
+ export { default as useEntityRecords } from './hooks/use-entity-records';
94
+ export { default as __experimentalUseResourcePermissions } from './hooks/use-resource-permissions';
92
95
  export * from './entity-provider';
93
96
  export * from './entity-types';
94
97
  export * from './fetch';
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["createReduxStore","register","reducer","selectors","actions","resolvers","createLocksActions","rootEntitiesConfig","getMethodName","STORE_NAME","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","store","default","EntityProvider"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { rootEntitiesConfig, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/index.js"],"names":["createReduxStore","register","reducer","selectors","actions","resolvers","createLocksActions","rootEntitiesConfig","getMethodName","STORE_NAME","entitySelectors","reduce","result","entity","kind","name","state","key","query","getEntityRecord","getEntityRecords","entityResolvers","pluralMethodName","args","shouldInvalidate","action","entityActions","saveEntityRecord","deleteEntityRecord","storeConfig","store","default","EntityProvider","useEntityRecord","useEntityRecords","__experimentalUseResourcePermissions"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport createLocksActions from './locks/actions';\nimport { rootEntitiesConfig, getMethodName } from './entities';\nimport { STORE_NAME } from './name';\n\n// The entity selectors/resolvers and actions are shortcuts to their generic equivalents\n// (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecords)\n// Instead of getEntityRecord, the consumer could use more user-friendly named selector: getPostType, getTaxonomy...\n// The \"kind\" and the \"name\" of the entity are combined to generate these shortcuts.\n\nconst entitySelectors = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( state, key, query ) =>\n\t\tselectors.getEntityRecord( state, kind, name, key, query );\n\tresult[ getMethodName( kind, name, 'get', true ) ] = ( state, query ) =>\n\t\tselectors.getEntityRecords( state, kind, name, query );\n\treturn result;\n}, {} );\n\nconst entityResolvers = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name ) ] = ( key, query ) =>\n\t\tresolvers.getEntityRecord( kind, name, key, query );\n\tconst pluralMethodName = getMethodName( kind, name, 'get', true );\n\tresult[ pluralMethodName ] = ( ...args ) =>\n\t\tresolvers.getEntityRecords( kind, name, ...args );\n\tresult[ pluralMethodName ].shouldInvalidate = ( action ) =>\n\t\tresolvers.getEntityRecords.shouldInvalidate( action, kind, name );\n\treturn result;\n}, {} );\n\nconst entityActions = rootEntitiesConfig.reduce( ( result, entity ) => {\n\tconst { kind, name } = entity;\n\tresult[ getMethodName( kind, name, 'save' ) ] = ( key ) =>\n\t\tactions.saveEntityRecord( kind, name, key );\n\tresult[ getMethodName( kind, name, 'delete' ) ] = ( key, query ) =>\n\t\tactions.deleteEntityRecord( kind, name, key, query );\n\treturn result;\n}, {} );\n\nconst storeConfig = () => ( {\n\treducer,\n\tactions: { ...actions, ...entityActions, ...createLocksActions() },\n\tselectors: { ...selectors, ...entitySelectors },\n\tresolvers: { ...resolvers, ...entityResolvers },\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, storeConfig() );\n\nregister( store );\n\nexport { default as EntityProvider } from './entity-provider';\nexport { default as useEntityRecord } from './hooks/use-entity-record';\nexport { default as useEntityRecords } from './hooks/use-entity-records';\nexport { default as __experimentalUseResourcePermissions } from './hooks/use-resource-permissions';\nexport * from './entity-provider';\nexport * from './entity-types';\nexport * from './fetch';\nexport * from './hooks';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["createSelector","EquivalentKeyMap","get","set","getQueryParts","queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","queriedItems","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport { get, set } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\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 {\n\t\tstableKey,\n\t\tpage,\n\t\tperPage,\n\t\tinclude,\n\t\tfields,\n\t\tcontext,\n\t} = getQueryParts( 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\tconst value = get( item, field );\n\t\t\t\tset( 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"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/queried-data/selectors.js"],"names":["createSelector","EquivalentKeyMap","get","set","getQueryParts","queriedItemsCacheByState","WeakMap","getQueriedItemsUncached","state","query","stableKey","page","perPage","include","fields","context","itemIds","queries","startOffset","endOffset","length","Math","min","items","i","itemId","Array","isArray","includes","hasOwnProperty","item","filteredItem","f","field","split","value","itemIsComplete","push","getQueriedItems","queriedItemsCache","queriedItems","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport { get, set } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport getQueryParts from './get-query-parts';\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\tconst value = get( item, field );\n\t\t\t\tset( 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"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { keyBy, map, groupBy, flowRight, isEqual, get } from 'lodash';
4
+ import { map, groupBy, flowRight, isEqual, get } from 'lodash';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
@@ -62,7 +62,10 @@ export function users() {
62
62
  case 'RECEIVE_USER_QUERY':
63
63
  return {
64
64
  byId: { ...state.byId,
65
- ...keyBy(action.users, 'id')
65
+ // Key users by their ID.
66
+ ...action.users.reduce((newUsers, user) => ({ ...newUsers,
67
+ [user.id]: user
68
+ }), {})
66
69
  },
67
70
  queries: { ...state.queries,
68
71
  [action.queryID]: map(action.users, user => user.id)