@wordpress/core-data 6.11.0 → 6.12.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 (114) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +4 -0
  3. package/build/actions.js +252 -276
  4. package/build/actions.js.map +1 -1
  5. package/build/batch/create-batch.js +8 -16
  6. package/build/batch/create-batch.js.map +1 -1
  7. package/build/batch/default-processor.js +1 -1
  8. package/build/batch/default-processor.js.map +1 -1
  9. package/build/entities.js +16 -25
  10. package/build/entities.js.map +1 -1
  11. package/build/entity-provider.js +12 -17
  12. package/build/entity-provider.js.map +1 -1
  13. package/build/fetch/__experimental-fetch-link-suggestions.js +2 -6
  14. package/build/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  15. package/build/fetch/__experimental-fetch-url-data.js +1 -2
  16. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  17. package/build/hooks/use-entity-record.js +7 -11
  18. package/build/hooks/use-entity-record.js.map +1 -1
  19. package/build/hooks/use-entity-records.js +3 -5
  20. package/build/hooks/use-entity-records.js.map +1 -1
  21. package/build/hooks/use-query-select.js +1 -6
  22. package/build/hooks/use-query-select.js.map +1 -1
  23. package/build/index.js +1 -7
  24. package/build/index.js.map +1 -1
  25. package/build/locks/actions.js +3 -4
  26. package/build/locks/actions.js.map +1 -1
  27. package/build/locks/reducer.js +1 -4
  28. package/build/locks/reducer.js.map +1 -1
  29. package/build/locks/selectors.js +3 -4
  30. package/build/locks/selectors.js.map +1 -1
  31. package/build/locks/utils.js +3 -5
  32. package/build/locks/utils.js.map +1 -1
  33. package/build/private-selectors.js +37 -0
  34. package/build/private-selectors.js.map +1 -0
  35. package/build/queried-data/actions.js +2 -5
  36. package/build/queried-data/actions.js.map +1 -1
  37. package/build/queried-data/reducer.js +17 -47
  38. package/build/queried-data/reducer.js.map +1 -1
  39. package/build/queried-data/selectors.js +4 -11
  40. package/build/queried-data/selectors.js.map +1 -1
  41. package/build/reducer.js +167 -194
  42. package/build/reducer.js.map +1 -1
  43. package/build/resolvers.js +175 -220
  44. package/build/resolvers.js.map +1 -1
  45. package/build/selectors.js +53 -61
  46. package/build/selectors.js.map +1 -1
  47. package/build/utils/forward-resolver.js +4 -11
  48. package/build/utils/forward-resolver.js.map +1 -1
  49. package/build/utils/on-sub-key.js +1 -3
  50. package/build/utils/on-sub-key.js.map +1 -1
  51. package/build-module/actions.js +251 -276
  52. package/build-module/actions.js.map +1 -1
  53. package/build-module/batch/create-batch.js +8 -16
  54. package/build-module/batch/create-batch.js.map +1 -1
  55. package/build-module/batch/default-processor.js +1 -1
  56. package/build-module/batch/default-processor.js.map +1 -1
  57. package/build-module/entities.js +16 -25
  58. package/build-module/entities.js.map +1 -1
  59. package/build-module/entity-provider.js +12 -17
  60. package/build-module/entity-provider.js.map +1 -1
  61. package/build-module/fetch/__experimental-fetch-link-suggestions.js +2 -6
  62. package/build-module/fetch/__experimental-fetch-link-suggestions.js.map +1 -1
  63. package/build-module/fetch/__experimental-fetch-url-data.js +1 -2
  64. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  65. package/build-module/hooks/use-entity-record.js +7 -11
  66. package/build-module/hooks/use-entity-record.js.map +1 -1
  67. package/build-module/hooks/use-entity-records.js +3 -5
  68. package/build-module/hooks/use-entity-records.js.map +1 -1
  69. package/build-module/hooks/use-query-select.js +1 -6
  70. package/build-module/hooks/use-query-select.js.map +1 -1
  71. package/build-module/index.js +1 -7
  72. package/build-module/index.js.map +1 -1
  73. package/build-module/locks/actions.js +3 -4
  74. package/build-module/locks/actions.js.map +1 -1
  75. package/build-module/locks/reducer.js +1 -4
  76. package/build-module/locks/reducer.js.map +1 -1
  77. package/build-module/locks/selectors.js +3 -4
  78. package/build-module/locks/selectors.js.map +1 -1
  79. package/build-module/locks/utils.js +3 -5
  80. package/build-module/locks/utils.js.map +1 -1
  81. package/build-module/private-selectors.js +28 -0
  82. package/build-module/private-selectors.js.map +1 -0
  83. package/build-module/queried-data/actions.js +2 -5
  84. package/build-module/queried-data/actions.js.map +1 -1
  85. package/build-module/queried-data/reducer.js +17 -47
  86. package/build-module/queried-data/reducer.js.map +1 -1
  87. package/build-module/queried-data/selectors.js +4 -11
  88. package/build-module/queried-data/selectors.js.map +1 -1
  89. package/build-module/reducer.js +168 -194
  90. package/build-module/reducer.js.map +1 -1
  91. package/build-module/resolvers.js +175 -220
  92. package/build-module/resolvers.js.map +1 -1
  93. package/build-module/selectors.js +55 -61
  94. package/build-module/selectors.js.map +1 -1
  95. package/build-module/utils/forward-resolver.js +4 -11
  96. package/build-module/utils/forward-resolver.js.map +1 -1
  97. package/build-module/utils/on-sub-key.js +1 -3
  98. package/build-module/utils/on-sub-key.js.map +1 -1
  99. package/build-types/actions.d.ts.map +1 -1
  100. package/build-types/private-selectors.d.ts +25 -0
  101. package/build-types/private-selectors.d.ts.map +1 -0
  102. package/build-types/reducer.d.ts +6 -2
  103. package/build-types/reducer.d.ts.map +1 -1
  104. package/build-types/selectors.d.ts +16 -4
  105. package/build-types/selectors.d.ts.map +1 -1
  106. package/package.json +12 -12
  107. package/src/actions.js +9 -8
  108. package/src/index.js +0 -1
  109. package/src/private-selectors.ts +30 -0
  110. package/src/reducer.js +130 -104
  111. package/src/selectors.ts +33 -13
  112. package/src/test/reducer.js +89 -54
  113. package/src/test/selectors.js +8 -8
  114. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","finishResolution"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,GACpBC,KAAF,IACA,cAA0B;AAAA,MAAlB;AAAEC,IAAAA;AAAF,GAAkB;AACzB,QAAMC,IAAI,GAAG,uBACZ,wCADY,EAEZF,KAFY,CAAb;AAIA,QAAMG,KAAK,GAAG,MAAM,uBAAU;AAAED,IAAAA;AAAF,GAAV,CAApB;AACAD,EAAAA,QAAQ,CAACG,gBAAT,CAA2BF,IAA3B,EAAiCC,KAAjC;AACA,CATK;AAWP;AACA;AACA;;;;;AACO,MAAME,cAAc,GAC1B,MACA,eAA0B;AAAA,MAAlB;AAAEJ,IAAAA;AAAF,GAAkB;AACzB,QAAMK,WAAW,GAAG,MAAM,uBAAU;AAAEJ,IAAAA,IAAI,EAAE;AAAR,GAAV,CAA1B;AACAD,EAAAA,QAAQ,CAACM,kBAAT,CAA6BD,WAA7B;AACA,CALK;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAME,eAAe,GAC3B,UAAEC,IAAF,EAAQC,IAAR;AAAA,MAAcC,GAAd,uEAAoB,EAApB;AAAA,MAAwBX,KAAxB;AAAA,SACA,eAAkC;AAAA,QAA1B;AAAEY,MAAAA,MAAF;AAAUX,MAAAA;AAAV,KAA0B;AACjC,UAAMY,OAAO,GAAG,MAAMZ,QAAQ,CAAE,uCAAyBQ,IAAzB,CAAF,CAA9B;AACA,UAAMK,YAAY,GAAGD,OAAO,CAACE,IAAR,CAClBC,MAAF,IAAcA,MAAM,CAACN,IAAP,KAAgBA,IAAhB,IAAwBM,MAAM,CAACP,IAAP,KAAgBA,IADlC,CAArB;;AAGA,QAAK,CAAEK,YAAF,IAAkBA,YAAlB,aAAkBA,YAAlB,eAAkBA,YAAY,CAAEG,qBAArC,EAA6D;AAC5D;AACA;;AAED,UAAMC,IAAI,GAAG,MAAMjB,QAAQ,CAACkB,0BAAT,CAClBC,gBADkB,EAElB,CAAE,UAAF,EAAc,SAAd,EAAyBX,IAAzB,EAA+BC,IAA/B,EAAqCC,GAArC,CAFkB,EAGlB;AAAEU,MAAAA,SAAS,EAAE;AAAb,KAHkB,CAAnB;;AAMA,QAAI;AACH,UAAKrB,KAAK,KAAKsB,SAAV,IAAuBtB,KAAK,CAACuB,OAAlC,EAA4C;AAC3C;AACA;AACA;AACAvB,QAAAA,KAAK,GAAG,EACP,GAAGA,KADI;AAEPuB,UAAAA,OAAO,EAAE,CACR,GAAG,IAAIC,GAAJ,CAAS,CACX,IAAK,wCAA6BxB,KAAK,CAACuB,OAAnC,KACJ,EADD,CADW,EAGXT,YAAY,CAACH,GAAb,IAAoBc,4BAHT,CAAT,CADK,EAMPC,IANO;AAFF,SAAR;AAUA,OAfE,CAiBH;AACA;AACA;AACA;AACA;AAEA;;;AACA,YAAMxB,IAAI,GAAG,uBACZY,YAAY,CAACa,OAAb,IAAyBhB,GAAG,GAAG,MAAMA,GAAT,GAAe,EAA3C,CADY,EAEZ,EACC,GAAGG,YAAY,CAACc,aADjB;AAEC,WAAG5B;AAFJ,OAFY,CAAb;;AAQA,UAAKA,KAAK,KAAKsB,SAAf,EAA2B;AAC1BtB,QAAAA,KAAK,GAAG,EAAE,GAAGA,KAAL;AAAY6B,UAAAA,OAAO,EAAE,CAAElB,GAAF;AAArB,SAAR,CAD0B,CAG1B;AACA;AACA;;AACA,cAAMmB,UAAU,GAAGlB,MAAM,CAACmB,gBAAP,CAAyBtB,IAAzB,EAA+BC,IAA/B,EAAqCV,KAArC,CAAnB;;AACA,YAAK8B,UAAL,EAAkB;AACjB;AACA;AACD;;AAED,YAAME,MAAM,GAAG,MAAM,uBAAU;AAAE9B,QAAAA;AAAF,OAAV,CAArB;AACAD,MAAAA,QAAQ,CAACgC,oBAAT,CAA+BxB,IAA/B,EAAqCC,IAArC,EAA2CsB,MAA3C,EAAmDhC,KAAnD;AACA,KA9CD,SA8CU;AACTC,MAAAA,QAAQ,CAACiC,0BAAT,CAAqChB,IAArC;AACA;AACD,GAjED;AAAA,CADM;AAoEP;AACA;AACA;;;;AACO,MAAMiB,kBAAkB,GAAG,4BAAiB,iBAAjB,CAA3B;AAEP;AACA;AACA;;;AACO,MAAMC,qBAAqB,GAAG,4BAAiB,iBAAjB,CAA9B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,MAAMC,gBAAgB,GAC5B,UAAE5B,IAAF,EAAQC,IAAR;AAAA,MAAcV,KAAd,uEAAsB,EAAtB;AAAA,SACA,eAA0B;AAAA,QAAlB;AAAEC,MAAAA;AAAF,KAAkB;AACzB,UAAMY,OAAO,GAAG,MAAMZ,QAAQ,CAAE,uCAAyBQ,IAAzB,CAAF,CAA9B;AACA,UAAMK,YAAY,GAAGD,OAAO,CAACE,IAAR,CAClBC,MAAF,IAAcA,MAAM,CAACN,IAAP,KAAgBA,IAAhB,IAAwBM,MAAM,CAACP,IAAP,KAAgBA,IADlC,CAArB;;AAGA,QAAK,CAAEK,YAAF,IAAkBA,YAAlB,aAAkBA,YAAlB,eAAkBA,YAAY,CAAEG,qBAArC,EAA6D;AAC5D;AACA;;AAED,UAAMC,IAAI,GAAG,MAAMjB,QAAQ,CAACkB,0BAAT,CAClBC,gBADkB,EAElB,CAAE,UAAF,EAAc,SAAd,EAAyBX,IAAzB,EAA+BC,IAA/B,CAFkB,EAGlB;AAAEW,MAAAA,SAAS,EAAE;AAAb,KAHkB,CAAnB;;AAMA,QAAI;AAAA;;AACH,UAAKrB,KAAK,CAACuB,OAAX,EAAqB;AACpB;AACA;AACA;AACAvB,QAAAA,KAAK,GAAG,EACP,GAAGA,KADI;AAEPuB,UAAAA,OAAO,EAAE,CACR,GAAG,IAAIC,GAAJ,CAAS,CACX,IAAK,wCAA6BxB,KAAK,CAACuB,OAAnC,KACJ,EADD,CADW,EAGXT,YAAY,CAACH,GAAb,IAAoBc,4BAHT,CAAT,CADK,EAMPC,IANO;AAFF,SAAR;AAUA;;AAED,YAAMxB,IAAI,GAAG,uBAAcY,YAAY,CAACa,OAA3B,EAAoC,EAChD,GAAGb,YAAY,CAACc,aADgC;AAEhD,WAAG5B;AAF6C,OAApC,CAAb;AAKA,UAAIsC,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAe,MAAM,uBAAU;AAAEtC,QAAAA;AAAF,OAAV,CAArB,CAAd,CAtBG,CAuBH;AACA;AACA;;AACA,UAAKF,KAAK,CAACuB,OAAX,EAAqB;AACpBe,QAAAA,OAAO,GAAGA,OAAO,CAACG,GAAR,CAAeT,MAAF,IAAc;AACpChC,UAAAA,KAAK,CAACuB,OAAN,CAAcmB,KAAd,CAAqB,GAArB,EAA2BC,OAA3B,CAAsCC,KAAF,IAAa;AAChD,gBAAK,CAAEZ,MAAM,CAACa,cAAP,CAAuBD,KAAvB,CAAP,EAAwC;AACvCZ,cAAAA,MAAM,CAAEY,KAAF,CAAN,GAAkBtB,SAAlB;AACA;AACD,WAJD;;AAMA,iBAAOU,MAAP;AACA,SARS,CAAV;AASA;;AAED/B,MAAAA,QAAQ,CAACgC,oBAAT,CAA+BxB,IAA/B,EAAqCC,IAArC,EAA2C4B,OAA3C,EAAoDtC,KAApD,EAtCG,CAwCH;AACA;AACA;;AACA,UAAK,YAAEA,KAAF,mCAAE,OAAOuB,OAAT,KAAoB,CAAEvB,KAAK,CAAC8C,OAAjC,EAA2C;AAC1C,cAAMnC,GAAG,GAAGG,YAAY,CAACH,GAAb,IAAoBc,4BAAhC;AACA,cAAMsB,eAAe,GAAGT,OAAO,CAC7BU,MADsB,CACZhB,MAAF,IAAcA,MAAM,CAAErB,GAAF,CADN,EAEtB8B,GAFsB,CAEfT,MAAF,IAAc,CAAEvB,IAAF,EAAQC,IAAR,EAAcsB,MAAM,CAAErB,GAAF,CAApB,CAFG,CAAxB;AAIAV,QAAAA,QAAQ,CAAE;AACTgD,UAAAA,IAAI,EAAE,mBADG;AAETC,UAAAA,YAAY,EAAE,iBAFL;AAGTC,UAAAA,IAAI,EAAEJ;AAHG,SAAF,CAAR;AAKA9C,QAAAA,QAAQ,CAAE;AACTgD,UAAAA,IAAI,EAAE,oBADG;AAETC,UAAAA,YAAY,EAAE,iBAFL;AAGTC,UAAAA,IAAI,EAAEJ;AAHG,SAAF,CAAR;AAKA;AACD,KA5DD,SA4DU;AACT9C,MAAAA,QAAQ,CAACiC,0BAAT,CAAqChB,IAArC;AACA;AACD,GA/ED;AAAA,CADM;;;;AAkFPmB,gBAAgB,CAACe,gBAAjB,GAAoC,CAAEC,MAAF,EAAU5C,IAAV,EAAgBC,IAAhB,KAA0B;AAC7D,SACC,CAAE2C,MAAM,CAACJ,IAAP,KAAgB,eAAhB,IAAmCI,MAAM,CAACJ,IAAP,KAAgB,cAArD,KACAI,MAAM,CAACC,eADP,IAEA7C,IAAI,KAAK4C,MAAM,CAAC5C,IAFhB,IAGAC,IAAI,KAAK2C,MAAM,CAAC3C,IAJjB;AAMA,CAPD;AASA;AACA;AACA;;;AACO,MAAM6C,eAAe,GAC3B,MACA,eAAyC;AAAA,MAAjC;AAAEtD,IAAAA,QAAF;AAAYuD,IAAAA;AAAZ,GAAiC;AACxC,QAAMC,YAAY,GAAG,MAAMD,aAAa,CAACnB,gBAAd,CAC1B,MAD0B,EAE1B,OAF0B,EAG1B;AAAEqB,IAAAA,MAAM,EAAE;AAAV,GAH0B,CAA3B;AAMAzD,EAAAA,QAAQ,CAAC0D,mBAAT,CAA8BF,YAAY,CAAE,CAAF,CAA1C;AACA,CAVK;AAYP;AACA;AACA;;;;AACO,MAAMG,gBAAgB,GAAG,4BAAiB,iBAAjB,CAAzB;AAEP;AACA;AACA;AACA;AACA;;;;AACO,MAAMC,eAAe,GACzBC,GAAF,IACA,eAA0B;AAAA,MAAlB;AAAE7D,IAAAA;AAAF,GAAkB;;AACzB,MAAI;AACH,UAAM8D,kBAAkB,GAAG,MAAM,uBAAU;AAC1C7D,MAAAA,IAAI,EAAE,uBAAc,mBAAd,EAAmC;AAAE4D,QAAAA;AAAF,OAAnC;AADoC,KAAV,CAAjC;AAGA7D,IAAAA,QAAQ,CAAC+D,mBAAT,CAA8BF,GAA9B,EAAmCC,kBAAnC;AACA,GALD,CAKE,OAAQE,KAAR,EAAgB;AACjB;AACAhE,IAAAA,QAAQ,CAAC+D,mBAAT,CAA8BF,GAA9B,EAAmC,KAAnC;AACA;AACD,CAZK;AAcP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMI,OAAO,GACnB,CAAEC,eAAF,EAAmBC,QAAnB,EAA6BC,EAA7B,KACA,eAAoC;AAAA;;AAAA,MAA5B;AAAEpE,IAAAA,QAAF;AAAYqE,IAAAA;AAAZ,GAA4B;AACnC,QAAM;AAAEC,IAAAA;AAAF,MAA2BD,QAAQ,CAAC1D,MAAT,CAAiBQ,gBAAjB,CAAjC;AAEA,QAAMoD,YAAY,GAAGH,EAAE,GAAI,GAAGD,QAAU,IAAIC,EAAI,EAAzB,GAA6BD,QAApD;AACA,QAAMK,gBAAgB,GAAG,CAAE,QAAF,EAAY,MAAZ,EAAoB,QAApB,EAA8B,QAA9B,CAAzB;;AAEA,MAAK,CAAEA,gBAAgB,CAACC,QAAjB,CAA2BP,eAA3B,CAAP,EAAsD;AACrD,UAAM,IAAIQ,KAAJ,CAAY,IAAIR,eAAiB,0BAAjC,CAAN;AACA,GARkC,CAUnC;;;AACA,OAAM,MAAMS,aAAZ,IAA6BH,gBAA7B,EAAgD;AAC/C,QAAKG,aAAa,KAAKT,eAAvB,EAAyC;AACxC;AACA;;AACD,UAAMU,kBAAkB,GAAGN,oBAAoB,CAAE,SAAF,EAAa,CAC3DK,aAD2D,EAE3DR,QAF2D,EAG3DC,EAH2D,CAAb,CAA/C;;AAKA,QAAKQ,kBAAL,EAA0B;AACzB;AACA;AACD;;AAED,MAAIC,QAAJ;;AACA,MAAI;AACHA,IAAAA,QAAQ,GAAG,MAAM,uBAAU;AAC1B5E,MAAAA,IAAI,EAAG,UAAUsE,YAAc,EADL;AAE1BO,MAAAA,MAAM,EAAE,SAFkB;AAG1BC,MAAAA,KAAK,EAAE;AAHmB,KAAV,CAAjB;AAKA,GAND,CAME,OAAQf,KAAR,EAAgB;AACjB;AACA;AACA;AACA,GApCkC,CAsCnC;AACA;AACA;;;AACA,QAAMgB,WAAW,wBAAGH,QAAQ,CAACI,OAAZ,sDAAG,kBAAkBC,GAAlB,CAAuB,OAAvB,CAApB;AACA,QAAMC,cAAc,GAAG,CAAAH,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEI,KAAb,KAAsBJ,WAAtB,IAAqC,EAA5D;AAEA,QAAMK,WAAW,GAAG,EAApB;AACA,QAAMC,OAAO,GAAG;AACfC,IAAAA,MAAM,EAAE,MADO;AAEfC,IAAAA,IAAI,EAAE,KAFS;AAGfC,IAAAA,MAAM,EAAE,KAHO;AAIfC,IAAAA,MAAM,EAAE;AAJO,GAAhB;;AAMA,OAAM,MAAM,CAAEC,UAAF,EAAcC,UAAd,CAAZ,IAA0CtD,MAAM,CAACuD,OAAP,CAAgBP,OAAhB,CAA1C,EAAsE;AACrED,IAAAA,WAAW,CAAEM,UAAF,CAAX,GAA4BR,cAAc,CAACV,QAAf,CAAyBmB,UAAzB,CAA5B;AACA;;AAED,OAAM,MAAMxC,MAAZ,IAAsBoB,gBAAtB,EAAyC;AACxCxE,IAAAA,QAAQ,CAAC8F,qBAAT,CACE,GAAG1C,MAAQ,IAAImB,YAAc,EAD/B,EAECc,WAAW,CAAEjC,MAAF,CAFZ;AAIA;AACD,CA/DK;AAiEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAM2C,uBAAuB,GACnC,CAAEvF,IAAF,EAAQC,IAAR,EAAcuF,QAAd,KACA,eAA0B;AAAA,MAAlB;AAAEhG,IAAAA;AAAF,GAAkB;AACzB,QAAMY,OAAO,GAAG,MAAMZ,QAAQ,CAAE,uCAAyBQ,IAAzB,CAAF,CAA9B;AACA,QAAMK,YAAY,GAAGD,OAAO,CAACE,IAAR,CAClBC,MAAF,IAAcA,MAAM,CAACN,IAAP,KAAgBA,IAAhB,IAAwBM,MAAM,CAACP,IAAP,KAAgBA,IADlC,CAArB;;AAGA,MAAK,CAAEK,YAAP,EAAsB;AACrB;AACA;;AAED,QAAMsD,QAAQ,GAAGtD,YAAY,CAACoF,oBAA9B;AACA,QAAMjG,QAAQ,CAAEiE,OAAO,CAAE,QAAF,EAAYE,QAAZ,EAAsB6B,QAAtB,CAAT,CAAd;AACA,CAbK;AAeP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAME,YAAY,GACxB,CAAEC,QAAF,EAAYC,MAAZ,KACA,eAAyC;AAAA,MAAjC;AAAEpG,IAAAA,QAAF;AAAYuD,IAAAA;AAAZ,GAAiC;AACxC,QAAM;AAAE8C,IAAAA,SAAS,EAAEC,QAAb;AAAuBC,IAAAA,cAAc,EAAEC,aAAa,GAAG;AAAvD,MACL,MAAMjD,aAAa,CAACkD,WAAd,CAA2BN,QAA3B,CADP;AAEA,QAAMO,SAAS,GAAG,MAAM,uBAAU;AACjCzG,IAAAA,IAAI,EAAG,IAAIuG,aAAe,IAAIF,QAAU,IAAIF,MAAQ;AADnB,GAAV,CAAxB;;AAIA,MAAKM,SAAS,IAAIA,SAAS,CAACC,MAA5B,EAAqC;AACpC3G,IAAAA,QAAQ,CAAC4G,gBAAT,CAA2BR,MAA3B,EAAmCM,SAAnC;AACA;AACD,CAZK;AAcP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMG,WAAW,GACvB,CAAEV,QAAF,EAAYC,MAAZ,KACA,gBAA+B;AAAA,MAAvB;AAAE7C,IAAAA;AAAF,GAAuB;AAC9B,QAAMA,aAAa,CAAC2C,YAAd,CAA4BC,QAA5B,EAAsCC,MAAtC,CAAN;AACA,CAJK;AAMP;AACA;AACA;AACA;AACA;;;;;AACO,MAAMU,gCAAgC,GAC1CC,IAAF,IACA,gBAAyC;AAAA,MAAjC;AAAE/G,IAAAA,QAAF;AAAYuD,IAAAA;AAAZ,GAAiC;AACxC,MAAIyD,QAAJ;;AACA,MAAI;AACH;AACA;AACAA,IAAAA,QAAQ,GAAG,MAAM,uBAAU;AAC1BnD,MAAAA,GAAG,EAAE,uBAAckD,IAAd,EAAoB;AACxB,6BAAqB;AADG,OAApB;AADqB,KAAV,EAIbE,IAJa,CAIP;AAAA,UAAE;AAAEC,QAAAA;AAAF,OAAF;AAAA,aAAgBA,IAAhB;AAAA,KAJO,CAAjB;AAKA,GARD,CAQE,OAAQC,CAAR,EAAY,CACb;AACA;;AAED,MAAK,CAAEH,QAAP,EAAkB;AACjB;AACA;;AAED,QAAMjF,MAAM,GAAG,MAAMwB,aAAa,CAAChD,eAAd,CACpB,UADoB,EAEpB,aAFoB,EAGpByG,QAAQ,CAAC5C,EAHW,CAArB;;AAMA,MAAKrC,MAAL,EAAc;AACb/B,IAAAA,QAAQ,CAACgC,oBAAT,CACC,UADD,EAEC,aAFD,EAGC,CAAED,MAAF,CAHD,EAIC;AACC,uBAAiBgF;AADlB,KAJD;AAQA;AACD,CApCK;;;;AAsCPD,gCAAgC,CAAC3D,gBAAjC,GAAsDC,MAAF,IAAc;AACjE,SACC,CAAEA,MAAM,CAACJ,IAAP,KAAgB,eAAhB,IAAmCI,MAAM,CAACJ,IAAP,KAAgB,cAArD,KACAI,MAAM,CAACC,eADP,IAEAD,MAAM,CAAC5C,IAAP,KAAgB,UAFhB,IAGA4C,MAAM,CAAC3C,IAAP,KAAgB,aAJjB;AAMA,CAPD;;AASO,MAAM2G,sCAAsC,GAClD,MACA,gBAAyC;AAAA;;AAAA,MAAjC;AAAEpH,IAAAA,QAAF;AAAYuD,IAAAA;AAAZ,GAAiC;AACxC,QAAMC,YAAY,GAAG,MAAMD,aAAa,CAACnB,gBAAd,CAC1B,MAD0B,EAE1B,OAF0B,EAG1B;AAAEqB,IAAAA,MAAM,EAAE;AAAV,GAH0B,CAA3B;AAKA,QAAM4D,eAAe,GACpB7D,YADoB,aACpBA,YADoB,yCACpBA,YAAY,CAAI,CAAJ,CADQ,4EACpB,eAAqB8D,MADD,oFACpB,sBAA+B,uBAA/B,CADoB,qFACpB,uBAA4D,CAA5D,CADoB,2DACpB,uBACGC,IAFJ;;AAGA,MAAKF,eAAL,EAAuB;AACtB,UAAMG,kBAAkB,GAAG,MAAM,uBAAU;AAC1C3D,MAAAA,GAAG,EAAEwD;AADqC,KAAV,CAAjC;;AAGArH,IAAAA,QAAQ,CAACyH,0CAAT,CACCD,kBAAkB,CAACpD,EADpB;AAGA;AACD,CAnBK;;;;AAqBA,MAAMsD,6CAA6C,GACzD,MACA,gBAAyC;AAAA,MAAjC;AAAEnE,IAAAA,aAAF;AAAiBvD,IAAAA;AAAjB,GAAiC;AACxC,QAAM2H,YAAY,GAAG,MAAMpE,aAAa,CAACD,eAAd,EAA3B;AACA,QAAMsE,iBAAiB,GAAG,MAAM,uBAAU;AACzC3H,IAAAA,IAAI,EAAG,+BAA+B0H,YAAY,CAACE,UAAY;AADtB,GAAV,CAAhC;;AAGA7H,EAAAA,QAAQ,CAAC8H,0CAAT,CACCH,YAAY,CAACE,UADd,EAECD,iBAFD;AAIA,CAXK;;;;AAaA,MAAMG,mDAAmD,GAC/D,MACA,gBAAyC;AAAA,MAAjC;AAAExE,IAAAA,aAAF;AAAiBvD,IAAAA;AAAjB,GAAiC;AACxC,QAAM2H,YAAY,GAAG,MAAMpE,aAAa,CAACD,eAAd,EAA3B;AACA,QAAM0E,UAAU,GAAG,MAAM,uBAAU;AAClC/H,IAAAA,IAAI,EAAG,+BAA+B0H,YAAY,CAACE,UAAY;AAD7B,GAAV,CAAzB;;AAGA7H,EAAAA,QAAQ,CAACiI,+CAAT,CACCN,YAAY,CAACE,UADd,EAECG,UAFD;AAIA,CAXK;AAaP;AACA;AACA;;;;;AACO,MAAME,oCAAoC,GAChD,MACA,gBAAyC;AAAA;;AAAA,MAAjC;AAAE3E,IAAAA,aAAF;AAAiBvD,IAAAA;AAAjB,GAAiC;AACxC,QAAMmI,cAAc,GACnB,MAAM5E,aAAa,CAAC6D,sCAAd,EADP;AAEA,QAAMrF,MAAM,GAAGoG,cAAc,GAC1B,MAAM5E,aAAa,CAAChD,eAAd,CACN,MADM,EAEN,cAFM,EAGN4H,cAHM,CADoB,GAM1B9G,SANH;AAOA,QAAM+G,YAAY,GAAGrG,MAAH,aAAGA,MAAH,yCAAGA,MAAM,CAAEuF,MAAX,4EAAG,eAAkB,iBAAlB,CAAH,oFAAG,sBAAyC,CAAzC,CAAH,2DAAG,uBAA8CC,IAAnE;;AAEA,MAAKa,YAAL,EAAoB;AACnB,UAAMC,cAAc,GAAG,MAAM,uBAAU;AACtCxE,MAAAA,GAAG,EAAEuE;AADiC,KAAV,CAA7B;AAGA,UAAME,SAAS,GAAGD,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAE7F,GAAhB,CAAuB+F,QAAF,IACtCjG,MAAM,CAACkG,WAAP,CACClG,MAAM,CAACuD,OAAP,CAAgB0C,QAAhB,EAA2B/F,GAA3B,CAAgC;AAAA,UAAE,CAAE9B,GAAF,EAAO+H,KAAP,CAAF;AAAA,aAAsB,CACrD,2BAAW/H,GAAX,CADqD,EAErD+H,KAFqD,CAAtB;AAAA,KAAhC,CADD,CADiB,CAAlB;AAQAzI,IAAAA,QAAQ,CAAC0I,gCAAT,CACCP,cADD,EAECG,SAFD;AAIA;AACD,CA/BK;;;;AAiCPJ,oCAAoC,CAAC/E,gBAArC,GAA0DC,MAAF,IAAc;AACrE,SACCA,MAAM,CAACJ,IAAP,KAAgB,2BAAhB,IACAI,MAAM,CAAC5C,IAAP,KAAgB,MADhB,IAEA,CAAE4C,MAAM,CAACY,KAFT,IAGAZ,MAAM,CAAC3C,IAAP,KAAgB,cAJjB;AAMA,CAPD;;AASO,MAAMkI,gBAAgB,GAC5B,MACA,gBAA0B;AAAA,MAAlB;AAAE3I,IAAAA;AAAF,GAAkB;AACzB,QAAM4I,YAAY,GAAG,MAAM,uBAAU;AACpC3I,IAAAA,IAAI,EAAE;AAD8B,GAAV,CAA3B;AAGA,QAAM4I,QAAQ,GAAGD,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEpG,GAAd,CAAqBsG,OAAF,IACnCxG,MAAM,CAACkG,WAAP,CACClG,MAAM,CAACuD,OAAP,CAAgBiD,OAAhB,EAA0BtG,GAA1B,CAA+B;AAAA,QAAE,CAAE9B,GAAF,EAAO+H,KAAP,CAAF;AAAA,WAAsB,CACpD,2BAAW/H,GAAX,CADoD,EAEpD+H,KAFoD,CAAtB;AAAA,GAA/B,CADD,CADgB,CAAjB;AAQAzI,EAAAA,QAAQ,CAAE;AAAEgD,IAAAA,IAAI,EAAE,wBAAR;AAAkC6F,IAAAA;AAAlC,GAAF,CAAR;AACA,CAfK;;;;AAiBA,MAAME,yBAAyB,GACrC,MACA,gBAA0B;AAAA,MAAlB;AAAE/I,IAAAA;AAAF,GAAkB;AACzB,QAAMgJ,UAAU,GAAG,MAAM,uBAAU;AAClC/I,IAAAA,IAAI,EAAE;AAD4B,GAAV,CAAzB;AAGAD,EAAAA,QAAQ,CAAE;AAAEgD,IAAAA,IAAI,EAAE,kCAAR;AAA4CgG,IAAAA;AAA5C,GAAF,CAAR;AACA,CAPK;;;;AASA,MAAMC,uBAAuB,GACnC,MACA,gBAA0B;AAAA;;AAAA,MAAlB;AAAEjJ,IAAAA;AAAF,GAAkB;AACzB,QAAMkJ,QAAQ,GAAG,MAAM,uBAAU;AAChCjJ,IAAAA,IAAI,EAAE,uBAAc,yCAAd,EAAyD;AAC9DkJ,MAAAA,MAAM,EAAE;AADsD,KAAzD;AAD0B,GAAV,CAAvB;AAMA,QAAMpH,MAAM,GAAGmH,QAAH,aAAGA,QAAH,8CAAGA,QAAQ,CAAEE,SAAb,wDAAG,oBAAqBC,IAApC;AAEArJ,EAAAA,QAAQ,CAACsJ,2BAAT,CAAsCJ,QAAtC,aAAsCA,QAAtC,uBAAsCA,QAAQ,CAAE9E,EAAhD;;AAEA,MAAKrC,MAAL,EAAc;AACb/B,IAAAA,QAAQ,CAACgC,oBAAT,CACC,UADD,EAEC,eAFD,EAGCD,MAHD,EADa,CAOb;;AACA/B,IAAAA,QAAQ,CAACuJ,gBAAT,CAA2B,iBAA3B,EAA8C,CAC7C,UAD6C,EAE7C,eAF6C,EAG7CL,QAH6C,aAG7CA,QAH6C,uBAG7CA,QAAQ,CAAE9E,EAHmC,CAA9C;AAKA;AACD,CA3BK","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"]}
1
+ {"version":3,"sources":["@wordpress/core-data/src/resolvers.js"],"names":["getAuthors","query","dispatch","path","users","receiveUserQuery","getCurrentUser","currentUser","receiveCurrentUser","getEntityRecord","kind","name","key","select","configs","entityConfig","find","config","__experimentalNoFetch","lock","__unstableAcquireStoreLock","STORE_NAME","exclusive","undefined","_fields","Set","DEFAULT_ENTITY_KEY","join","baseURL","baseURLParams","include","hasRecords","hasEntityRecords","record","receiveEntityRecords","__unstableReleaseStoreLock","getRawEntityRecord","getEditedEntityRecord","getEntityRecords","records","Object","values","map","split","forEach","field","hasOwnProperty","context","resolutionsArgs","filter","type","selectorName","args","shouldInvalidate","action","invalidateCache","getCurrentTheme","resolveSelect","activeThemes","status","receiveCurrentTheme","getThemeSupports","getEmbedPreview","url","embedProxyResponse","receiveEmbedPreview","error","canUser","requestedAction","resource","id","registry","hasStartedResolution","resourcePath","retrievedActions","includes","Error","relatedAction","isAlreadyResolving","response","method","parse","allowHeader","headers","get","allowedMethods","allow","permissions","methods","create","read","update","delete","actionName","methodName","entries","receiveUserPermission","canUserEditEntityRecord","recordId","__unstable_rest_base","getAutosaves","postType","postId","rest_base","restBase","rest_namespace","restNamespace","getPostType","autosaves","length","receiveAutosaves","getAutosave","__experimentalGetTemplateForLink","link","template","then","data","e","__experimentalGetCurrentGlobalStylesId","globalStylesURL","_links","href","globalStylesObject","__experimentalReceiveCurrentGlobalStylesId","__experimentalGetCurrentThemeBaseGlobalStyles","currentTheme","themeGlobalStyles","stylesheet","__experimentalReceiveThemeBaseGlobalStyles","__experimentalGetCurrentThemeGlobalStylesVariations","variations","__experimentalReceiveThemeGlobalStyleVariations","getCurrentThemeGlobalStylesRevisions","globalStylesId","revisionsURL","resetRevisions","revisions","revision","fromEntries","value","receiveThemeGlobalStyleRevisions","getBlockPatterns","restPatterns","patterns","pattern","getBlockPatternCategories","categories","getNavigationFallbackId","fallback","_embed","_embedded","self","receiveNavigationFallbackId","finishResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from './name';\nimport { getOrLoadEntitiesConfig, DEFAULT_ENTITY_KEY } from './entities';\nimport { forwardResolver, getNormalizedCommaSeparable } from './utils';\n\n/**\n * Requests authors from the REST API.\n *\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request.\n */\nexport const getAuthors =\n\t( query ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst path = addQueryArgs(\n\t\t\t'/wp/v2/users/?who=authors&per_page=100',\n\t\t\tquery\n\t\t);\n\t\tconst users = await apiFetch( { path } );\n\t\tdispatch.receiveUserQuery( path, users );\n\t};\n\n/**\n * Requests the current user from the REST API.\n */\nexport const getCurrentUser =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst currentUser = await apiFetch( { path: '/wp/v2/users/me' } );\n\t\tdispatch.receiveCurrentUser( currentUser );\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {number|string} key Record's key\n * @param {Object|undefined} query Optional object of query parameters to\n * include with request. If requesting specific\n * fields, fields must always include the ID.\n */\nexport const getEntityRecord =\n\t( kind, name, key = '', query ) =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name, key ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query !== undefined && query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Disable reason: While true that an early return could leave `path`\n\t\t\t// unused, it's important that path is derived using the query prior to\n\t\t\t// additional query modifications in the condition below, since those\n\t\t\t// modifications are relevant to how the data is tracked in state, and not\n\t\t\t// for how the request is made to the REST API.\n\n\t\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\t\tconst path = addQueryArgs(\n\t\t\t\tentityConfig.baseURL + ( key ? '/' + key : '' ),\n\t\t\t\t{\n\t\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t\t...query,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( query !== undefined ) {\n\t\t\t\tquery = { ...query, include: [ key ] };\n\n\t\t\t\t// The resolution cache won't consider query as reusable based on the\n\t\t\t\t// fields, so it's tested here, prior to initiating the REST request,\n\t\t\t\t// and without causing `getEntityRecords` resolution to occur.\n\t\t\t\tconst hasRecords = select.hasEntityRecords( kind, name, query );\n\t\t\t\tif ( hasRecords ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst record = await apiFetch( { path } );\n\t\t\tdispatch.receiveEntityRecords( kind, name, record, query );\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getRawEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests an entity's record from the REST API.\n */\nexport const getEditedEntityRecord = forwardResolver( 'getEntityRecord' );\n\n/**\n * Requests the entity's records from the REST API.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {Object?} query Query Object. If requesting specific fields, fields\n * must always include the ID.\n */\nexport const getEntityRecords =\n\t( kind, name, query = {} ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig || entityConfig?.__experimentalNoFetch ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lock = await dispatch.__unstableAcquireStoreLock(\n\t\t\tSTORE_NAME,\n\t\t\t[ 'entities', 'records', kind, name ],\n\t\t\t{ exclusive: false }\n\t\t);\n\n\t\ttry {\n\t\t\tif ( query._fields ) {\n\t\t\t\t// If requesting specific fields, items and query association to said\n\t\t\t\t// records are stored by ID reference. Thus, fields must always include\n\t\t\t\t// the ID.\n\t\t\t\tquery = {\n\t\t\t\t\t...query,\n\t\t\t\t\t_fields: [\n\t\t\t\t\t\t...new Set( [\n\t\t\t\t\t\t\t...( getNormalizedCommaSeparable( query._fields ) ||\n\t\t\t\t\t\t\t\t[] ),\n\t\t\t\t\t\t\tentityConfig.key || DEFAULT_ENTITY_KEY,\n\t\t\t\t\t\t] ),\n\t\t\t\t\t].join(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst path = addQueryArgs( entityConfig.baseURL, {\n\t\t\t\t...entityConfig.baseURLParams,\n\t\t\t\t...query,\n\t\t\t} );\n\n\t\t\tlet records = Object.values( await apiFetch( { path } ) );\n\t\t\t// If we request fields but the result doesn't contain the fields,\n\t\t\t// explicitly set these fields as \"undefined\"\n\t\t\t// that way we consider the query \"fullfilled\".\n\t\t\tif ( query._fields ) {\n\t\t\t\trecords = records.map( ( record ) => {\n\t\t\t\t\tquery._fields.split( ',' ).forEach( ( field ) => {\n\t\t\t\t\t\tif ( ! record.hasOwnProperty( field ) ) {\n\t\t\t\t\t\t\trecord[ field ] = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn record;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch.receiveEntityRecords( kind, name, records, query );\n\n\t\t\t// When requesting all fields, the list of results can be used to\n\t\t\t// resolve the `getEntityRecord` selector in addition to `getEntityRecords`.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/26575\n\t\t\tif ( ! query?._fields && ! query.context ) {\n\t\t\t\tconst key = entityConfig.key || DEFAULT_ENTITY_KEY;\n\t\t\t\tconst resolutionsArgs = records\n\t\t\t\t\t.filter( ( record ) => record[ key ] )\n\t\t\t\t\t.map( ( record ) => [ kind, name, record[ key ] ] );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'START_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: 'FINISH_RESOLUTIONS',\n\t\t\t\t\tselectorName: 'getEntityRecord',\n\t\t\t\t\targs: resolutionsArgs,\n\t\t\t\t} );\n\t\t\t}\n\t\t} finally {\n\t\t\tdispatch.__unstableReleaseStoreLock( lock );\n\t\t}\n\t};\n\ngetEntityRecords.shouldInvalidate = ( action, kind, name ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\tkind === action.kind &&\n\t\tname === action.name\n\t);\n};\n\n/**\n * Requests the current theme.\n */\nexport const getCurrentTheme =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\n\t\tdispatch.receiveCurrentTheme( activeThemes[ 0 ] );\n\t};\n\n/**\n * Requests theme supports data from the index.\n */\nexport const getThemeSupports = forwardResolver( 'getCurrentTheme' );\n\n/**\n * Requests a preview from the from the Embed API.\n *\n * @param {string} url URL to get the preview for.\n */\nexport const getEmbedPreview =\n\t( url ) =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst embedProxyResponse = await apiFetch( {\n\t\t\t\tpath: addQueryArgs( '/oembed/1.0/proxy', { url } ),\n\t\t\t} );\n\t\t\tdispatch.receiveEmbedPreview( url, embedProxyResponse );\n\t\t} catch ( error ) {\n\t\t\t// Embed API 404s if the URL cannot be embedded, so we have to catch the error from the apiRequest here.\n\t\t\tdispatch.receiveEmbedPreview( url, false );\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} requestedAction Action to check. One of: 'create', 'read', 'update',\n * 'delete'.\n * @param {string} resource REST resource to check, e.g. 'media' or 'posts'.\n * @param {?string} id ID of the rest resource to check.\n */\nexport const canUser =\n\t( requestedAction, resource, id ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst { hasStartedResolution } = registry.select( STORE_NAME );\n\n\t\tconst resourcePath = id ? `${ resource }/${ id }` : resource;\n\t\tconst retrievedActions = [ 'create', 'read', 'update', 'delete' ];\n\n\t\tif ( ! retrievedActions.includes( requestedAction ) ) {\n\t\t\tthrow new Error( `'${ requestedAction }' is not a valid action.` );\n\t\t}\n\n\t\t// Prevent resolving the same resource twice.\n\t\tfor ( const relatedAction of retrievedActions ) {\n\t\t\tif ( relatedAction === requestedAction ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isAlreadyResolving = hasStartedResolution( 'canUser', [\n\t\t\t\trelatedAction,\n\t\t\t\tresource,\n\t\t\t\tid,\n\t\t\t] );\n\t\t\tif ( isAlreadyResolving ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await apiFetch( {\n\t\t\t\tpath: `/wp/v2/${ resourcePath }`,\n\t\t\t\tmethod: 'OPTIONS',\n\t\t\t\tparse: false,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Do nothing if our OPTIONS request comes back with an API error (4xx or\n\t\t\t// 5xx). The previously determined isAllowed value will remain in the store.\n\t\t\treturn;\n\t\t}\n\n\t\t// Optional chaining operator is used here because the API requests don't\n\t\t// return the expected result in the native version. Instead, API requests\n\t\t// only return the result, without including response properties like the headers.\n\t\tconst allowHeader = response.headers?.get( 'allow' );\n\t\tconst allowedMethods = allowHeader?.allow || allowHeader || '';\n\n\t\tconst permissions = {};\n\t\tconst methods = {\n\t\t\tcreate: 'POST',\n\t\t\tread: 'GET',\n\t\t\tupdate: 'PUT',\n\t\t\tdelete: 'DELETE',\n\t\t};\n\t\tfor ( const [ actionName, methodName ] of Object.entries( methods ) ) {\n\t\t\tpermissions[ actionName ] = allowedMethods.includes( methodName );\n\t\t}\n\n\t\tfor ( const action of retrievedActions ) {\n\t\t\tdispatch.receiveUserPermission(\n\t\t\t\t`${ action }/${ resourcePath }`,\n\t\t\t\tpermissions[ action ]\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Checks whether the current user can perform the given action on the given\n * REST resource.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport const canUserEditEntityRecord =\n\t( kind, name, recordId ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst configs = await dispatch( getOrLoadEntitiesConfig( kind ) );\n\t\tconst entityConfig = configs.find(\n\t\t\t( config ) => config.name === name && config.kind === kind\n\t\t);\n\t\tif ( ! entityConfig ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resource = entityConfig.__unstable_rest_base;\n\t\tawait dispatch( canUser( 'update', resource, recordId ) );\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosaves =\n\t( postType, postId ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst { rest_base: restBase, rest_namespace: restNamespace = 'wp/v2' } =\n\t\t\tawait resolveSelect.getPostType( postType );\n\t\tconst autosaves = await apiFetch( {\n\t\t\tpath: `/${ restNamespace }/${ restBase }/${ postId }/autosaves?context=edit`,\n\t\t} );\n\n\t\tif ( autosaves && autosaves.length ) {\n\t\t\tdispatch.receiveAutosaves( postId, autosaves );\n\t\t}\n\t};\n\n/**\n * Request autosave data from the REST API.\n *\n * This resolver exists to ensure the underlying autosaves are fetched via\n * `getAutosaves` when a call to the `getAutosave` selector is made.\n *\n * @param {string} postType The type of the parent post.\n * @param {number} postId The id of the parent post.\n */\nexport const getAutosave =\n\t( postType, postId ) =>\n\tasync ( { resolveSelect } ) => {\n\t\tawait resolveSelect.getAutosaves( postType, postId );\n\t};\n\n/**\n * Retrieve the frontend template used for a given link.\n *\n * @param {string} link Link.\n */\nexport const __experimentalGetTemplateForLink =\n\t( link ) =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tlet template;\n\t\ttry {\n\t\t\t// This is NOT calling a REST endpoint but rather ends up with a response from\n\t\t\t// an Ajax function which has a different shape from a WP_REST_Response.\n\t\t\ttemplate = await apiFetch( {\n\t\t\t\turl: addQueryArgs( link, {\n\t\t\t\t\t'_wp-find-template': true,\n\t\t\t\t} ),\n\t\t\t} ).then( ( { data } ) => data );\n\t\t} catch ( e ) {\n\t\t\t// For non-FSE themes, it is possible that this request returns an error.\n\t\t}\n\n\t\tif ( ! template ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst record = await resolveSelect.getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\ttemplate.id\n\t\t);\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t[ record ],\n\t\t\t\t{\n\t\t\t\t\t'find-template': link,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n__experimentalGetTemplateForLink.shouldInvalidate = ( action ) => {\n\treturn (\n\t\t( action.type === 'RECEIVE_ITEMS' || action.type === 'REMOVE_ITEMS' ) &&\n\t\taction.invalidateCache &&\n\t\taction.kind === 'postType' &&\n\t\taction.name === 'wp_template'\n\t);\n};\n\nexport const __experimentalGetCurrentGlobalStylesId =\n\t() =>\n\tasync ( { dispatch, resolveSelect } ) => {\n\t\tconst activeThemes = await resolveSelect.getEntityRecords(\n\t\t\t'root',\n\t\t\t'theme',\n\t\t\t{ status: 'active' }\n\t\t);\n\t\tconst globalStylesURL =\n\t\t\tactiveThemes?.[ 0 ]?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]\n\t\t\t\t?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\tconst globalStylesObject = await apiFetch( {\n\t\t\t\turl: globalStylesURL,\n\t\t\t} );\n\t\t\tdispatch.__experimentalReceiveCurrentGlobalStylesId(\n\t\t\t\tglobalStylesObject.id\n\t\t\t);\n\t\t}\n\t};\n\nexport const __experimentalGetCurrentThemeBaseGlobalStyles =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst themeGlobalStyles = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeBaseGlobalStyles(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tthemeGlobalStyles\n\t\t);\n\t};\n\nexport const __experimentalGetCurrentThemeGlobalStylesVariations =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst currentTheme = await resolveSelect.getCurrentTheme();\n\t\tconst variations = await apiFetch( {\n\t\t\tpath: `/wp/v2/global-styles/themes/${ currentTheme.stylesheet }/variations`,\n\t\t} );\n\t\tdispatch.__experimentalReceiveThemeGlobalStyleVariations(\n\t\t\tcurrentTheme.stylesheet,\n\t\t\tvariations\n\t\t);\n\t};\n\n/**\n * Fetches and returns the revisions of the current global styles theme.\n */\nexport const getCurrentThemeGlobalStylesRevisions =\n\t() =>\n\tasync ( { resolveSelect, dispatch } ) => {\n\t\tconst globalStylesId =\n\t\t\tawait resolveSelect.__experimentalGetCurrentGlobalStylesId();\n\t\tconst record = globalStylesId\n\t\t\t? await resolveSelect.getEntityRecord(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId\n\t\t\t )\n\t\t\t: undefined;\n\t\tconst revisionsURL = record?._links?.[ 'version-history' ]?.[ 0 ]?.href;\n\n\t\tif ( revisionsURL ) {\n\t\t\tconst resetRevisions = await apiFetch( {\n\t\t\t\turl: revisionsURL,\n\t\t\t} );\n\t\t\tconst revisions = resetRevisions?.map( ( revision ) =>\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries( revision ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t] )\n\t\t\t\t)\n\t\t\t);\n\t\t\tdispatch.receiveThemeGlobalStyleRevisions(\n\t\t\t\tglobalStylesId,\n\t\t\t\trevisions\n\t\t\t);\n\t\t}\n\t};\n\ngetCurrentThemeGlobalStylesRevisions.shouldInvalidate = ( action ) => {\n\treturn (\n\t\taction.type === 'SAVE_ENTITY_RECORD_FINISH' &&\n\t\taction.kind === 'root' &&\n\t\t! action.error &&\n\t\taction.name === 'globalStyles'\n\t);\n};\n\nexport const getBlockPatterns =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst restPatterns = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/patterns',\n\t\t} );\n\t\tconst patterns = restPatterns?.map( ( pattern ) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( pattern ).map( ( [ key, value ] ) => [\n\t\t\t\t\tcamelCase( key ),\n\t\t\t\t\tvalue,\n\t\t\t\t] )\n\t\t\t)\n\t\t);\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERNS', patterns } );\n\t};\n\nexport const getBlockPatternCategories =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst categories = await apiFetch( {\n\t\t\tpath: '/wp/v2/block-patterns/categories',\n\t\t} );\n\t\tdispatch( { type: 'RECEIVE_BLOCK_PATTERN_CATEGORIES', categories } );\n\t};\n\nexport const getNavigationFallbackId =\n\t() =>\n\tasync ( { dispatch } ) => {\n\t\tconst fallback = await apiFetch( {\n\t\t\tpath: addQueryArgs( '/wp-block-editor/v1/navigation-fallback', {\n\t\t\t\t_embed: true,\n\t\t\t} ),\n\t\t} );\n\n\t\tconst record = fallback?._embedded?.self;\n\n\t\tdispatch.receiveNavigationFallbackId( fallback?.id );\n\n\t\tif ( record ) {\n\t\t\tdispatch.receiveEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\n\t\t\t);\n\n\t\t\t// Resolve to avoid further network requests.\n\t\t\tdispatch.finishResolution( 'getEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tfallback?.id,\n\t\t\t] );\n\t\t}\n\t};\n"]}
@@ -66,6 +66,8 @@ var _entities = require("./entities");
66
66
 
67
67
  var _utils = require("./utils");
68
68
 
69
+ var _privateSelectors = require("./private-selectors");
70
+
69
71
  /**
70
72
  * External dependencies
71
73
  */
@@ -211,9 +213,7 @@ function getEntity(state, kind, name) {
211
213
 
212
214
 
213
215
  function getEntityConfig(state, kind, name) {
214
- var _state$entities$confi;
215
-
216
- return (_state$entities$confi = state.entities.config) === null || _state$entities$confi === void 0 ? void 0 : _state$entities$confi.find(config => config.kind === kind && config.name === name);
216
+ return state.entities.config?.find(config => config.kind === kind && config.name === name);
217
217
  }
218
218
  /**
219
219
  * GetEntityRecord is declared as a *callable interface* with
@@ -256,28 +256,26 @@ function getEntityConfig(state, kind, name) {
256
256
  * @return Record.
257
257
  */
258
258
  const getEntityRecord = (0, _rememo.default)((state, kind, name, key, query) => {
259
- var _state$entities$recor, _state$entities$recor2, _state$entities$recor3, _query$context, _queriedState$items$c;
259
+ var _query$context;
260
260
 
261
- const queriedState = (_state$entities$recor = state.entities.records) === null || _state$entities$recor === void 0 ? void 0 : (_state$entities$recor2 = _state$entities$recor[kind]) === null || _state$entities$recor2 === void 0 ? void 0 : (_state$entities$recor3 = _state$entities$recor2[name]) === null || _state$entities$recor3 === void 0 ? void 0 : _state$entities$recor3.queriedData;
261
+ const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
262
262
 
263
263
  if (!queriedState) {
264
264
  return undefined;
265
265
  }
266
266
 
267
- const context = (_query$context = query === null || query === void 0 ? void 0 : query.context) !== null && _query$context !== void 0 ? _query$context : 'default';
267
+ const context = (_query$context = query?.context) !== null && _query$context !== void 0 ? _query$context : 'default';
268
268
 
269
269
  if (query === undefined) {
270
- var _queriedState$itemIsC;
271
-
272
270
  // If expecting a complete item, validate that completeness.
273
- if (!((_queriedState$itemIsC = queriedState.itemIsComplete[context]) !== null && _queriedState$itemIsC !== void 0 && _queriedState$itemIsC[key])) {
271
+ if (!queriedState.itemIsComplete[context]?.[key]) {
274
272
  return undefined;
275
273
  }
276
274
 
277
275
  return queriedState.items[context][key];
278
276
  }
279
277
 
280
- const item = (_queriedState$items$c = queriedState.items[context]) === null || _queriedState$items$c === void 0 ? void 0 : _queriedState$items$c[key];
278
+ const item = queriedState.items[context]?.[key];
281
279
 
282
280
  if (item && query._fields) {
283
281
  var _getNormalizedCommaSe;
@@ -299,10 +297,10 @@ const getEntityRecord = (0, _rememo.default)((state, kind, name, key, query) =>
299
297
 
300
298
  return item;
301
299
  }, (state, kind, name, recordId, query) => {
302
- var _query$context2, _state$entities$recor4, _state$entities$recor5, _state$entities$recor6, _state$entities$recor7, _state$entities$recor8, _state$entities$recor9, _state$entities$recor10, _state$entities$recor11, _state$entities$recor12, _state$entities$recor13;
300
+ var _query$context2;
303
301
 
304
- const context = (_query$context2 = query === null || query === void 0 ? void 0 : query.context) !== null && _query$context2 !== void 0 ? _query$context2 : 'default';
305
- return [(_state$entities$recor4 = state.entities.records) === null || _state$entities$recor4 === void 0 ? void 0 : (_state$entities$recor5 = _state$entities$recor4[kind]) === null || _state$entities$recor5 === void 0 ? void 0 : (_state$entities$recor6 = _state$entities$recor5[name]) === null || _state$entities$recor6 === void 0 ? void 0 : (_state$entities$recor7 = _state$entities$recor6.queriedData) === null || _state$entities$recor7 === void 0 ? void 0 : (_state$entities$recor8 = _state$entities$recor7.items[context]) === null || _state$entities$recor8 === void 0 ? void 0 : _state$entities$recor8[recordId], (_state$entities$recor9 = state.entities.records) === null || _state$entities$recor9 === void 0 ? void 0 : (_state$entities$recor10 = _state$entities$recor9[kind]) === null || _state$entities$recor10 === void 0 ? void 0 : (_state$entities$recor11 = _state$entities$recor10[name]) === null || _state$entities$recor11 === void 0 ? void 0 : (_state$entities$recor12 = _state$entities$recor11.queriedData) === null || _state$entities$recor12 === void 0 ? void 0 : (_state$entities$recor13 = _state$entities$recor12.itemIsComplete[context]) === null || _state$entities$recor13 === void 0 ? void 0 : _state$entities$recor13[recordId]];
302
+ const context = (_query$context2 = query?.context) !== null && _query$context2 !== void 0 ? _query$context2 : 'default';
303
+ return [state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
306
304
  });
307
305
  /**
308
306
  * Returns the Entity's record object by key. Doesn't trigger a resolver nor requests the entity records from the API if the entity record isn't available in the local state.
@@ -337,12 +335,12 @@ const getRawEntityRecord = (0, _rememo.default)((state, kind, name, key) => {
337
335
  const record = getEntityRecord(state, kind, name, key);
338
336
  return record && Object.keys(record).reduce((accumulator, _key) => {
339
337
  if ((0, _utils.isRawAttribute)(getEntityConfig(state, kind, name), _key)) {
340
- var _record$_key$raw, _record$_key;
338
+ var _record$_key$raw;
341
339
 
342
340
  // Because edits are the "raw" attribute values,
343
341
  // we return those from record selectors to make rendering,
344
342
  // comparisons, and joins with edits easier.
345
- accumulator[_key] = (_record$_key$raw = (_record$_key = record[_key]) === null || _record$_key === void 0 ? void 0 : _record$_key.raw) !== null && _record$_key$raw !== void 0 ? _record$_key$raw : record[_key];
343
+ accumulator[_key] = (_record$_key$raw = record[_key]?.raw) !== null && _record$_key$raw !== void 0 ? _record$_key$raw : record[_key];
346
344
  } else {
347
345
  accumulator[_key] = record[_key];
348
346
  }
@@ -350,10 +348,10 @@ const getRawEntityRecord = (0, _rememo.default)((state, kind, name, key) => {
350
348
  return accumulator;
351
349
  }, {});
352
350
  }, (state, kind, name, recordId, query) => {
353
- var _query$context3, _state$entities$recor14, _state$entities$recor15, _state$entities$recor16, _state$entities$recor17, _state$entities$recor18, _state$entities$recor19, _state$entities$recor20, _state$entities$recor21, _state$entities$recor22, _state$entities$recor23;
351
+ var _query$context3;
354
352
 
355
- const context = (_query$context3 = query === null || query === void 0 ? void 0 : query.context) !== null && _query$context3 !== void 0 ? _query$context3 : 'default';
356
- return [state.entities.config, (_state$entities$recor14 = state.entities.records) === null || _state$entities$recor14 === void 0 ? void 0 : (_state$entities$recor15 = _state$entities$recor14[kind]) === null || _state$entities$recor15 === void 0 ? void 0 : (_state$entities$recor16 = _state$entities$recor15[name]) === null || _state$entities$recor16 === void 0 ? void 0 : (_state$entities$recor17 = _state$entities$recor16.queriedData) === null || _state$entities$recor17 === void 0 ? void 0 : (_state$entities$recor18 = _state$entities$recor17.items[context]) === null || _state$entities$recor18 === void 0 ? void 0 : _state$entities$recor18[recordId], (_state$entities$recor19 = state.entities.records) === null || _state$entities$recor19 === void 0 ? void 0 : (_state$entities$recor20 = _state$entities$recor19[kind]) === null || _state$entities$recor20 === void 0 ? void 0 : (_state$entities$recor21 = _state$entities$recor20[name]) === null || _state$entities$recor21 === void 0 ? void 0 : (_state$entities$recor22 = _state$entities$recor21.queriedData) === null || _state$entities$recor22 === void 0 ? void 0 : (_state$entities$recor23 = _state$entities$recor22.itemIsComplete[context]) === null || _state$entities$recor23 === void 0 ? void 0 : _state$entities$recor23[recordId]];
353
+ const context = (_query$context3 = query?.context) !== null && _query$context3 !== void 0 ? _query$context3 : 'default';
354
+ return [state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId]];
357
355
  });
358
356
  /**
359
357
  * Returns true if records have been received for the given set of parameters,
@@ -394,11 +392,9 @@ function hasEntityRecords(state, kind, name, query) {
394
392
  * @return Records.
395
393
  */
396
394
  const getEntityRecords = (state, kind, name, query) => {
397
- var _state$entities$recor24, _state$entities$recor25, _state$entities$recor26;
398
-
399
395
  // Queried data state is prepopulated for all known entities. If this is not
400
396
  // assigned for the given parameters, then it is known to not exist.
401
- const queriedState = (_state$entities$recor24 = state.entities.records) === null || _state$entities$recor24 === void 0 ? void 0 : (_state$entities$recor25 = _state$entities$recor24[kind]) === null || _state$entities$recor25 === void 0 ? void 0 : (_state$entities$recor26 = _state$entities$recor25[name]) === null || _state$entities$recor26 === void 0 ? void 0 : _state$entities$recor26.queriedData;
397
+ const queriedState = state.entities.records?.[kind]?.[name]?.queriedData;
402
398
 
403
399
  if (!queriedState) {
404
400
  return null;
@@ -432,14 +428,12 @@ const __experimentalGetDirtyEntityRecords = (0, _rememo.default)(state => {
432
428
  if (primaryKeys.length) {
433
429
  const entityConfig = getEntityConfig(state, kind, name);
434
430
  primaryKeys.forEach(primaryKey => {
435
- var _entityConfig$getTitl;
436
-
437
431
  const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
438
432
  dirtyRecords.push({
439
433
  // We avoid using primaryKey because it's transformed into a string
440
434
  // when it's used as an object key.
441
435
  key: entityRecord ? entityRecord[entityConfig.key || _entities.DEFAULT_ENTITY_KEY] : undefined,
442
- title: (entityConfig === null || entityConfig === void 0 ? void 0 : (_entityConfig$getTitl = entityConfig.getTitle) === null || _entityConfig$getTitl === void 0 ? void 0 : _entityConfig$getTitl.call(entityConfig, entityRecord)) || '',
436
+ title: entityConfig?.getTitle?.(entityRecord) || '',
443
437
  name,
444
438
  kind
445
439
  });
@@ -474,14 +468,12 @@ const __experimentalGetEntitiesBeingSaved = (0, _rememo.default)(state => {
474
468
  if (primaryKeys.length) {
475
469
  const entityConfig = getEntityConfig(state, kind, name);
476
470
  primaryKeys.forEach(primaryKey => {
477
- var _entityConfig$getTitl2;
478
-
479
471
  const entityRecord = getEditedEntityRecord(state, kind, name, primaryKey);
480
472
  recordsBeingSaved.push({
481
473
  // We avoid using primaryKey because it's transformed into a string
482
474
  // when it's used as an object key.
483
475
  key: entityRecord ? entityRecord[entityConfig.key || _entities.DEFAULT_ENTITY_KEY] : undefined,
484
- title: (entityConfig === null || entityConfig === void 0 ? void 0 : (_entityConfig$getTitl2 = entityConfig.getTitle) === null || _entityConfig$getTitl2 === void 0 ? void 0 : _entityConfig$getTitl2.call(entityConfig, entityRecord)) || '',
476
+ title: entityConfig?.getTitle?.(entityRecord) || '',
485
477
  name,
486
478
  kind
487
479
  });
@@ -506,9 +498,7 @@ const __experimentalGetEntitiesBeingSaved = (0, _rememo.default)(state => {
506
498
  exports.__experimentalGetEntitiesBeingSaved = __experimentalGetEntitiesBeingSaved;
507
499
 
508
500
  function getEntityRecordEdits(state, kind, name, recordId) {
509
- var _state$entities$recor27, _state$entities$recor28, _state$entities$recor29, _state$entities$recor30;
510
-
511
- return (_state$entities$recor27 = state.entities.records) === null || _state$entities$recor27 === void 0 ? void 0 : (_state$entities$recor28 = _state$entities$recor27[kind]) === null || _state$entities$recor28 === void 0 ? void 0 : (_state$entities$recor29 = _state$entities$recor28[name]) === null || _state$entities$recor29 === void 0 ? void 0 : (_state$entities$recor30 = _state$entities$recor29.edits) === null || _state$entities$recor30 === void 0 ? void 0 : _state$entities$recor30[recordId];
501
+ return state.entities.records?.[kind]?.[name]?.edits?.[recordId];
512
502
  }
513
503
  /**
514
504
  * Returns the specified entity record's non transient edits.
@@ -543,11 +533,7 @@ const getEntityRecordNonTransientEdits = (0, _rememo.default)((state, kind, name
543
533
 
544
534
  return acc;
545
535
  }, {});
546
- }, (state, kind, name, recordId) => {
547
- var _state$entities$recor31, _state$entities$recor32, _state$entities$recor33, _state$entities$recor34;
548
-
549
- return [state.entities.config, (_state$entities$recor31 = state.entities.records) === null || _state$entities$recor31 === void 0 ? void 0 : (_state$entities$recor32 = _state$entities$recor31[kind]) === null || _state$entities$recor32 === void 0 ? void 0 : (_state$entities$recor33 = _state$entities$recor32[name]) === null || _state$entities$recor33 === void 0 ? void 0 : (_state$entities$recor34 = _state$entities$recor33.edits) === null || _state$entities$recor34 === void 0 ? void 0 : _state$entities$recor34[recordId]];
550
- });
536
+ }, (state, kind, name, recordId) => [state.entities.config, state.entities.records?.[kind]?.[name]?.edits?.[recordId]]);
551
537
  /**
552
538
  * Returns true if the specified entity record has edits,
553
539
  * and false otherwise.
@@ -580,10 +566,10 @@ function hasEditsForEntityRecord(state, kind, name, recordId) {
580
566
  const getEditedEntityRecord = (0, _rememo.default)((state, kind, name, recordId) => ({ ...getRawEntityRecord(state, kind, name, recordId),
581
567
  ...getEntityRecordEdits(state, kind, name, recordId)
582
568
  }), (state, kind, name, recordId, query) => {
583
- var _query$context4, _state$entities$recor35, _state$entities$recor36, _state$entities$recor37, _state$entities$recor38, _state$entities$recor39, _state$entities$recor40, _state$entities$recor41, _state$entities$recor42, _state$entities$recor43, _state$entities$recor44, _state$entities$recor45, _state$entities$recor46;
569
+ var _query$context4;
584
570
 
585
- const context = (_query$context4 = query === null || query === void 0 ? void 0 : query.context) !== null && _query$context4 !== void 0 ? _query$context4 : 'default';
586
- return [state.entities.config, (_state$entities$recor35 = state.entities.records) === null || _state$entities$recor35 === void 0 ? void 0 : (_state$entities$recor36 = _state$entities$recor35[kind]) === null || _state$entities$recor36 === void 0 ? void 0 : (_state$entities$recor37 = _state$entities$recor36[name]) === null || _state$entities$recor37 === void 0 ? void 0 : (_state$entities$recor38 = _state$entities$recor37.queriedData.items[context]) === null || _state$entities$recor38 === void 0 ? void 0 : _state$entities$recor38[recordId], (_state$entities$recor39 = state.entities.records) === null || _state$entities$recor39 === void 0 ? void 0 : (_state$entities$recor40 = _state$entities$recor39[kind]) === null || _state$entities$recor40 === void 0 ? void 0 : (_state$entities$recor41 = _state$entities$recor40[name]) === null || _state$entities$recor41 === void 0 ? void 0 : (_state$entities$recor42 = _state$entities$recor41.queriedData.itemIsComplete[context]) === null || _state$entities$recor42 === void 0 ? void 0 : _state$entities$recor42[recordId], (_state$entities$recor43 = state.entities.records) === null || _state$entities$recor43 === void 0 ? void 0 : (_state$entities$recor44 = _state$entities$recor43[kind]) === null || _state$entities$recor44 === void 0 ? void 0 : (_state$entities$recor45 = _state$entities$recor44[name]) === null || _state$entities$recor45 === void 0 ? void 0 : (_state$entities$recor46 = _state$entities$recor45.edits) === null || _state$entities$recor46 === void 0 ? void 0 : _state$entities$recor46[recordId]];
571
+ const context = (_query$context4 = query?.context) !== null && _query$context4 !== void 0 ? _query$context4 : 'default';
572
+ return [state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData.itemIsComplete[context]?.[recordId], state.entities.records?.[kind]?.[name]?.edits?.[recordId]];
587
573
  });
588
574
  /**
589
575
  * Returns true if the specified entity record is autosaving, and false otherwise.
@@ -599,12 +585,12 @@ const getEditedEntityRecord = (0, _rememo.default)((state, kind, name, recordId)
599
585
  exports.getEditedEntityRecord = getEditedEntityRecord;
600
586
 
601
587
  function isAutosavingEntityRecord(state, kind, name, recordId) {
602
- var _state$entities$recor47, _state$entities$recor48, _state$entities$recor49, _state$entities$recor50, _state$entities$recor51;
588
+ var _state$entities$recor;
603
589
 
604
590
  const {
605
591
  pending,
606
592
  isAutosave
607
- } = (_state$entities$recor47 = (_state$entities$recor48 = state.entities.records) === null || _state$entities$recor48 === void 0 ? void 0 : (_state$entities$recor49 = _state$entities$recor48[kind]) === null || _state$entities$recor49 === void 0 ? void 0 : (_state$entities$recor50 = _state$entities$recor49[name]) === null || _state$entities$recor50 === void 0 ? void 0 : (_state$entities$recor51 = _state$entities$recor50.saving) === null || _state$entities$recor51 === void 0 ? void 0 : _state$entities$recor51[recordId]) !== null && _state$entities$recor47 !== void 0 ? _state$entities$recor47 : {};
593
+ } = (_state$entities$recor = state.entities.records?.[kind]?.[name]?.saving?.[recordId]) !== null && _state$entities$recor !== void 0 ? _state$entities$recor : {};
608
594
  return Boolean(pending && isAutosave);
609
595
  }
610
596
  /**
@@ -620,9 +606,9 @@ function isAutosavingEntityRecord(state, kind, name, recordId) {
620
606
 
621
607
 
622
608
  function isSavingEntityRecord(state, kind, name, recordId) {
623
- var _state$entities$recor52, _state$entities$recor53, _state$entities$recor54, _state$entities$recor55, _state$entities$recor56, _state$entities$recor57;
609
+ var _state$entities$recor2;
624
610
 
625
- return (_state$entities$recor52 = (_state$entities$recor53 = state.entities.records) === null || _state$entities$recor53 === void 0 ? void 0 : (_state$entities$recor54 = _state$entities$recor53[kind]) === null || _state$entities$recor54 === void 0 ? void 0 : (_state$entities$recor55 = _state$entities$recor54[name]) === null || _state$entities$recor55 === void 0 ? void 0 : (_state$entities$recor56 = _state$entities$recor55.saving) === null || _state$entities$recor56 === void 0 ? void 0 : (_state$entities$recor57 = _state$entities$recor56[recordId]) === null || _state$entities$recor57 === void 0 ? void 0 : _state$entities$recor57.pending) !== null && _state$entities$recor52 !== void 0 ? _state$entities$recor52 : false;
611
+ return (_state$entities$recor2 = state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.pending) !== null && _state$entities$recor2 !== void 0 ? _state$entities$recor2 : false;
626
612
  }
627
613
  /**
628
614
  * Returns true if the specified entity record is deleting, and false otherwise.
@@ -637,9 +623,9 @@ function isSavingEntityRecord(state, kind, name, recordId) {
637
623
 
638
624
 
639
625
  function isDeletingEntityRecord(state, kind, name, recordId) {
640
- var _state$entities$recor58, _state$entities$recor59, _state$entities$recor60, _state$entities$recor61, _state$entities$recor62, _state$entities$recor63;
626
+ var _state$entities$recor3;
641
627
 
642
- return (_state$entities$recor58 = (_state$entities$recor59 = state.entities.records) === null || _state$entities$recor59 === void 0 ? void 0 : (_state$entities$recor60 = _state$entities$recor59[kind]) === null || _state$entities$recor60 === void 0 ? void 0 : (_state$entities$recor61 = _state$entities$recor60[name]) === null || _state$entities$recor61 === void 0 ? void 0 : (_state$entities$recor62 = _state$entities$recor61.deleting) === null || _state$entities$recor62 === void 0 ? void 0 : (_state$entities$recor63 = _state$entities$recor62[recordId]) === null || _state$entities$recor63 === void 0 ? void 0 : _state$entities$recor63.pending) !== null && _state$entities$recor58 !== void 0 ? _state$entities$recor58 : false;
628
+ return (_state$entities$recor3 = state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.pending) !== null && _state$entities$recor3 !== void 0 ? _state$entities$recor3 : false;
643
629
  }
644
630
  /**
645
631
  * Returns the specified entity record's last save error.
@@ -654,9 +640,7 @@ function isDeletingEntityRecord(state, kind, name, recordId) {
654
640
 
655
641
 
656
642
  function getLastEntitySaveError(state, kind, name, recordId) {
657
- var _state$entities$recor64, _state$entities$recor65, _state$entities$recor66, _state$entities$recor67, _state$entities$recor68;
658
-
659
- return (_state$entities$recor64 = state.entities.records) === null || _state$entities$recor64 === void 0 ? void 0 : (_state$entities$recor65 = _state$entities$recor64[kind]) === null || _state$entities$recor65 === void 0 ? void 0 : (_state$entities$recor66 = _state$entities$recor65[name]) === null || _state$entities$recor66 === void 0 ? void 0 : (_state$entities$recor67 = _state$entities$recor66.saving) === null || _state$entities$recor67 === void 0 ? void 0 : (_state$entities$recor68 = _state$entities$recor67[recordId]) === null || _state$entities$recor68 === void 0 ? void 0 : _state$entities$recor68.error;
643
+ return state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.error;
660
644
  }
661
645
  /**
662
646
  * Returns the specified entity record's last delete error.
@@ -671,9 +655,7 @@ function getLastEntitySaveError(state, kind, name, recordId) {
671
655
 
672
656
 
673
657
  function getLastEntityDeleteError(state, kind, name, recordId) {
674
- var _state$entities$recor69, _state$entities$recor70, _state$entities$recor71, _state$entities$recor72, _state$entities$recor73;
675
-
676
- return (_state$entities$recor69 = state.entities.records) === null || _state$entities$recor69 === void 0 ? void 0 : (_state$entities$recor70 = _state$entities$recor69[kind]) === null || _state$entities$recor70 === void 0 ? void 0 : (_state$entities$recor71 = _state$entities$recor70[name]) === null || _state$entities$recor71 === void 0 ? void 0 : (_state$entities$recor72 = _state$entities$recor71.deleting) === null || _state$entities$recor72 === void 0 ? void 0 : (_state$entities$recor73 = _state$entities$recor72[recordId]) === null || _state$entities$recor73 === void 0 ? void 0 : _state$entities$recor73.error;
658
+ return state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.error;
677
659
  }
678
660
  /**
679
661
  * Returns the current undo offset for the
@@ -695,27 +677,37 @@ function getCurrentUndoOffset(state) {
695
677
  * Returns the previous edit from the current undo offset
696
678
  * for the entity records edits history, if any.
697
679
  *
698
- * @param state State tree.
680
+ * @deprecated since 6.3
681
+ *
682
+ * @param state State tree.
699
683
  *
700
684
  * @return The edit.
701
685
  */
702
686
 
703
687
 
704
688
  function getUndoEdit(state) {
705
- return state.undo[state.undo.length - 2 + getCurrentUndoOffset(state)];
689
+ (0, _deprecated.default)("select( 'core' ).getUndoEdit()", {
690
+ since: '6.3'
691
+ });
692
+ return state.undo.list[state.undo.list.length - 2 + getCurrentUndoOffset(state)]?.[0];
706
693
  }
707
694
  /**
708
695
  * Returns the next edit from the current undo offset
709
696
  * for the entity records edits history, if any.
710
697
  *
711
- * @param state State tree.
698
+ * @deprecated since 6.3
699
+ *
700
+ * @param state State tree.
712
701
  *
713
702
  * @return The edit.
714
703
  */
715
704
 
716
705
 
717
706
  function getRedoEdit(state) {
718
- return state.undo[state.undo.length + getCurrentUndoOffset(state)];
707
+ (0, _deprecated.default)("select( 'core' ).getRedoEdit()", {
708
+ since: '6.3'
709
+ });
710
+ return state.undo.list[state.undo.list.length + getCurrentUndoOffset(state)]?.[0];
719
711
  }
720
712
  /**
721
713
  * Returns true if there is a previous edit from the current undo offset
@@ -728,7 +720,7 @@ function getRedoEdit(state) {
728
720
 
729
721
 
730
722
  function hasUndo(state) {
731
- return Boolean(getUndoEdit(state));
723
+ return Boolean((0, _privateSelectors.getUndoEdits)(state));
732
724
  }
733
725
  /**
734
726
  * Returns true if there is a next edit from the current undo offset
@@ -741,7 +733,7 @@ function hasUndo(state) {
741
733
 
742
734
 
743
735
  function hasRedo(state) {
744
- return Boolean(getRedoEdit(state));
736
+ return Boolean((0, _privateSelectors.getRedoEdits)(state));
745
737
  }
746
738
  /**
747
739
  * Return the current theme.
@@ -777,9 +769,9 @@ function __experimentalGetCurrentGlobalStylesId(state) {
777
769
 
778
770
 
779
771
  function getThemeSupports(state) {
780
- var _getCurrentTheme$them, _getCurrentTheme;
772
+ var _getCurrentTheme$them;
781
773
 
782
- return (_getCurrentTheme$them = (_getCurrentTheme = getCurrentTheme(state)) === null || _getCurrentTheme === void 0 ? void 0 : _getCurrentTheme.theme_supports) !== null && _getCurrentTheme$them !== void 0 ? _getCurrentTheme$them : EMPTY_OBJECT;
774
+ return (_getCurrentTheme$them = getCurrentTheme(state)?.theme_supports) !== null && _getCurrentTheme$them !== void 0 ? _getCurrentTheme$them : EMPTY_OBJECT;
783
775
  }
784
776
  /**
785
777
  * Returns the embed preview for the given URL.
@@ -903,7 +895,7 @@ function getAutosave(state, postType, postId, authorId) {
903
895
  }
904
896
 
905
897
  const autosaves = state.autosaves[postId];
906
- return autosaves === null || autosaves === void 0 ? void 0 : autosaves.find(autosave => autosave.author === authorId);
898
+ return autosaves?.find(autosave => autosave.author === authorId);
907
899
  }
908
900
  /**
909
901
  * Returns true if the REST request for autosaves has completed.
@@ -940,7 +932,7 @@ const hasFetchedAutosaves = (0, _data.createRegistrySelector)(select => (state,
940
932
 
941
933
  exports.hasFetchedAutosaves = hasFetchedAutosaves;
942
934
  const getReferenceByDistinctEdits = (0, _rememo.default)( // This unused state argument is listed here for the documentation generating tool (docgen).
943
- state => [], state => [state.undo.length, state.undo.offset, state.undo.flattenedUndo]);
935
+ state => [], state => [state.undo.list.length, state.undo.offset]);
944
936
  /**
945
937
  * Retrieve the frontend template used for a given link.
946
938
  *
@@ -957,7 +949,7 @@ function __experimentalGetTemplateForLink(state, link) {
957
949
  'find-template': link
958
950
  });
959
951
 
960
- if (records !== null && records !== void 0 && records.length) {
952
+ if (records?.length) {
961
953
  return getEditedEntityRecord(state, 'postType', 'wp_template', records[0].id);
962
954
  }
963
955