@strapi/admin 5.0.0-beta.1 → 5.0.0-beta.3

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 (1022) hide show
  1. package/dist/admin/AdminSeatInfo-H5eNy3Gq.js +105 -0
  2. package/dist/admin/AdminSeatInfo-H5eNy3Gq.js.map +1 -0
  3. package/dist/admin/AdminSeatInfo-jPH1stsB.mjs +101 -0
  4. package/dist/admin/AdminSeatInfo-jPH1stsB.mjs.map +1 -0
  5. package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs +664 -0
  6. package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs.map +1 -0
  7. package/dist/admin/ApplicationInfoPage-leY1AEgo.js +692 -0
  8. package/dist/admin/ApplicationInfoPage-leY1AEgo.js.map +1 -0
  9. package/dist/admin/AuthResponse-5G-7aJDM.mjs +43 -0
  10. package/dist/admin/AuthResponse-5G-7aJDM.mjs.map +1 -0
  11. package/dist/admin/AuthResponse-kdo9DYPT.js +70 -0
  12. package/dist/admin/AuthResponse-kdo9DYPT.js.map +1 -0
  13. package/dist/admin/AuthenticatedLayout-1x0WC6c6.js +1121 -0
  14. package/dist/admin/AuthenticatedLayout-1x0WC6c6.js.map +1 -0
  15. package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs +1088 -0
  16. package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs.map +1 -0
  17. package/dist/admin/CreateActionEE-2DKYzbq_.js +61 -0
  18. package/dist/admin/CreateActionEE-2DKYzbq_.js.map +1 -0
  19. package/dist/admin/CreateActionEE-TcGdWjIN.mjs +53 -0
  20. package/dist/admin/CreateActionEE-TcGdWjIN.mjs.map +1 -0
  21. package/dist/admin/CreatePage-J84OUqE4.js +269 -0
  22. package/dist/admin/CreatePage-J84OUqE4.js.map +1 -0
  23. package/dist/admin/CreatePage-gSoe3n8A.mjs +13 -0
  24. package/dist/admin/CreatePage-gSoe3n8A.mjs.map +1 -0
  25. package/dist/admin/CreatePage-pniatTP-.mjs +240 -0
  26. package/dist/admin/CreatePage-pniatTP-.mjs.map +1 -0
  27. package/dist/admin/CreatePage-z4ERqv1R.js +18 -0
  28. package/dist/admin/CreatePage-z4ERqv1R.js.map +1 -0
  29. package/dist/admin/CreateView-BdO0Pvex.mjs +13 -0
  30. package/dist/admin/CreateView-BdO0Pvex.mjs.map +1 -0
  31. package/dist/admin/CreateView-JNmfRawb.js +17 -0
  32. package/dist/admin/CreateView-JNmfRawb.js.map +1 -0
  33. package/dist/admin/CreateView-NwMXZjDh.js +17 -0
  34. package/dist/admin/CreateView-NwMXZjDh.js.map +1 -0
  35. package/dist/admin/CreateView-sFb3ySEj.mjs +13 -0
  36. package/dist/admin/CreateView-sFb3ySEj.mjs.map +1 -0
  37. package/dist/admin/EditPage-3wx6NJgA.mjs +790 -0
  38. package/dist/admin/EditPage-3wx6NJgA.mjs.map +1 -0
  39. package/dist/admin/EditPage-IQRLHMer.mjs +322 -0
  40. package/dist/admin/EditPage-IQRLHMer.mjs.map +1 -0
  41. package/dist/admin/EditPage-dAyJwJfs.js +351 -0
  42. package/dist/admin/EditPage-dAyJwJfs.js.map +1 -0
  43. package/dist/admin/EditPage-eR6riBsR.js +818 -0
  44. package/dist/admin/EditPage-eR6riBsR.js.map +1 -0
  45. package/dist/admin/EditPage-rdOE18EC.js +281 -0
  46. package/dist/admin/EditPage-rdOE18EC.js.map +1 -0
  47. package/dist/admin/EditPage-yztdPcnM.mjs +255 -0
  48. package/dist/admin/EditPage-yztdPcnM.mjs.map +1 -0
  49. package/dist/admin/EditView-fbzip_S8.mjs +332 -0
  50. package/dist/admin/EditView-fbzip_S8.mjs.map +1 -0
  51. package/dist/admin/EditView-oyHNBKvL.js +358 -0
  52. package/dist/admin/EditView-oyHNBKvL.js.map +1 -0
  53. package/dist/admin/EditViewPage-LdDGNi6d.js +875 -0
  54. package/dist/admin/EditViewPage-LdDGNi6d.js.map +1 -0
  55. package/dist/admin/EditViewPage-rDgxiutd.mjs +842 -0
  56. package/dist/admin/EditViewPage-rDgxiutd.mjs.map +1 -0
  57. package/dist/admin/EventsTable--peC0Geq.js +36 -0
  58. package/dist/admin/EventsTable--peC0Geq.js.map +1 -0
  59. package/dist/admin/EventsTable-rNMPq-X1.mjs +32 -0
  60. package/dist/admin/EventsTable-rNMPq-X1.mjs.map +1 -0
  61. package/dist/admin/HomePage-14WM2hIE.js +15 -0
  62. package/dist/admin/HomePage-14WM2hIE.js.map +1 -0
  63. package/dist/admin/HomePage-e2Bs6Kar.js +591 -0
  64. package/dist/admin/HomePage-e2Bs6Kar.js.map +1 -0
  65. package/dist/admin/HomePage-qgAro8dS.mjs +563 -0
  66. package/dist/admin/HomePage-qgAro8dS.mjs.map +1 -0
  67. package/dist/admin/HomePage-zQ7HL9y6.mjs +11 -0
  68. package/dist/admin/HomePage-zQ7HL9y6.mjs.map +1 -0
  69. package/dist/admin/InstalledPluginsPage-ZIPyDrzh.js +121 -0
  70. package/dist/admin/InstalledPluginsPage-ZIPyDrzh.js.map +1 -0
  71. package/dist/admin/InstalledPluginsPage-s_PGIc3_.mjs +96 -0
  72. package/dist/admin/InstalledPluginsPage-s_PGIc3_.mjs.map +1 -0
  73. package/dist/admin/Layout-KAX2c8wc.js +232 -0
  74. package/dist/admin/Layout-KAX2c8wc.js.map +1 -0
  75. package/dist/admin/Layout-mEj5c1Bi.mjs +204 -0
  76. package/dist/admin/Layout-mEj5c1Bi.mjs.map +1 -0
  77. package/dist/admin/ListPage-AI8neqxV.mjs +332 -0
  78. package/dist/admin/ListPage-AI8neqxV.mjs.map +1 -0
  79. package/dist/admin/ListPage-ARW72ceH.js +357 -0
  80. package/dist/admin/ListPage-ARW72ceH.js.map +1 -0
  81. package/dist/admin/ListPage-AUimd0cK.js +563 -0
  82. package/dist/admin/ListPage-AUimd0cK.js.map +1 -0
  83. package/dist/admin/ListPage-BIpKdUdv.mjs +486 -0
  84. package/dist/admin/ListPage-BIpKdUdv.mjs.map +1 -0
  85. package/dist/admin/ListPage-DxI49fdQ.js +307 -0
  86. package/dist/admin/ListPage-DxI49fdQ.js.map +1 -0
  87. package/dist/admin/ListPage-MvgbZlgc.js +15 -0
  88. package/dist/admin/ListPage-MvgbZlgc.js.map +1 -0
  89. package/dist/admin/ListPage-ZDEeaYvm.mjs +11 -0
  90. package/dist/admin/ListPage-ZDEeaYvm.mjs.map +1 -0
  91. package/dist/admin/ListPage-asZ9aDzG.mjs +282 -0
  92. package/dist/admin/ListPage-asZ9aDzG.mjs.map +1 -0
  93. package/dist/admin/ListPage-romICg1Z.js +514 -0
  94. package/dist/admin/ListPage-romICg1Z.js.map +1 -0
  95. package/dist/admin/ListPage-tniramRN.mjs +535 -0
  96. package/dist/admin/ListPage-tniramRN.mjs.map +1 -0
  97. package/dist/admin/ListView-1VRmjfh8.js +232 -0
  98. package/dist/admin/ListView-1VRmjfh8.js.map +1 -0
  99. package/dist/admin/ListView-6hlTFx5H.mjs +197 -0
  100. package/dist/admin/ListView-6hlTFx5H.mjs.map +1 -0
  101. package/dist/admin/ListView-GYuN24HV.mjs +206 -0
  102. package/dist/admin/ListView-GYuN24HV.mjs.map +1 -0
  103. package/dist/admin/ListView-ph55AtDF.js +223 -0
  104. package/dist/admin/ListView-ph55AtDF.js.map +1 -0
  105. package/dist/admin/Login-LxE58baP.mjs +31 -0
  106. package/dist/admin/Login-LxE58baP.mjs.map +1 -0
  107. package/dist/admin/Login-WeDT3kAj.js +39 -0
  108. package/dist/admin/Login-WeDT3kAj.js.map +1 -0
  109. package/dist/admin/MagicLinkEE-AO_SBYi5.mjs +27 -0
  110. package/dist/admin/MagicLinkEE-AO_SBYi5.mjs.map +1 -0
  111. package/dist/admin/MagicLinkEE-_fUwHKdf.js +31 -0
  112. package/dist/admin/MagicLinkEE-_fUwHKdf.js.map +1 -0
  113. package/dist/admin/MarketplacePage-26cUn4e5.mjs +1020 -0
  114. package/dist/admin/MarketplacePage-26cUn4e5.mjs.map +1 -0
  115. package/dist/admin/MarketplacePage-m8Lf3adM.js +1051 -0
  116. package/dist/admin/MarketplacePage-m8Lf3adM.js.map +1 -0
  117. package/dist/admin/Ornaments-RhzFP9rf.js +214 -0
  118. package/dist/admin/Ornaments-RhzFP9rf.js.map +1 -0
  119. package/dist/admin/Permissions-NRzJqZEr.js +2086 -0
  120. package/dist/admin/Permissions-NRzJqZEr.js.map +1 -0
  121. package/dist/admin/Permissions-VzklM1ie.mjs +2050 -0
  122. package/dist/admin/Permissions-VzklM1ie.mjs.map +1 -0
  123. package/dist/admin/PrivateRoute-KAM10GGM.js +22 -0
  124. package/dist/admin/PrivateRoute-KAM10GGM.js.map +1 -0
  125. package/dist/admin/PrivateRoute-wDu6Vo0N.mjs +20 -0
  126. package/dist/admin/PrivateRoute-wDu6Vo0N.mjs.map +1 -0
  127. package/dist/admin/ProfilePage-0d-k7mtP.mjs +387 -0
  128. package/dist/admin/ProfilePage-0d-k7mtP.mjs.map +1 -0
  129. package/dist/admin/ProfilePage-oSih4pcL.js +415 -0
  130. package/dist/admin/ProfilePage-oSih4pcL.js.map +1 -0
  131. package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs +48 -0
  132. package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs.map +1 -0
  133. package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js +52 -0
  134. package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js.map +1 -0
  135. package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs +51 -0
  136. package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs.map +1 -0
  137. package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js +55 -0
  138. package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js.map +1 -0
  139. package/dist/admin/SelectRoles-V_PZUtVT.mjs +106 -0
  140. package/dist/admin/SelectRoles-V_PZUtVT.mjs.map +1 -0
  141. package/dist/admin/SelectRoles-ZsRUnSdr.js +114 -0
  142. package/dist/admin/SelectRoles-ZsRUnSdr.js.map +1 -0
  143. package/dist/admin/SingleSignOnPage-jtjy4_4U.js +259 -0
  144. package/dist/admin/SingleSignOnPage-jtjy4_4U.js.map +1 -0
  145. package/dist/admin/SingleSignOnPage-kbLz1A_y.mjs +234 -0
  146. package/dist/admin/SingleSignOnPage-kbLz1A_y.mjs.map +1 -0
  147. package/dist/admin/Table-ZFyORhH3.mjs +196 -0
  148. package/dist/admin/Table-ZFyORhH3.mjs.map +1 -0
  149. package/dist/admin/Table-kMt3jQ2g.js +221 -0
  150. package/dist/admin/Table-kMt3jQ2g.js.map +1 -0
  151. package/dist/admin/TokenTypeSelect-Ngz4ONEL.js +386 -0
  152. package/dist/admin/TokenTypeSelect-Ngz4ONEL.js.map +1 -0
  153. package/dist/admin/TokenTypeSelect-oOKwvsQ2.mjs +358 -0
  154. package/dist/admin/TokenTypeSelect-oOKwvsQ2.mjs.map +1 -0
  155. package/dist/admin/UseCasePage-2wum_xzS.mjs +146 -0
  156. package/dist/admin/UseCasePage-2wum_xzS.mjs.map +1 -0
  157. package/dist/admin/UseCasePage-qrhHiF5S.js +175 -0
  158. package/dist/admin/UseCasePage-qrhHiF5S.js.map +1 -0
  159. package/dist/admin/admin-DUKhYsmP.mjs +256 -0
  160. package/dist/admin/admin-DUKhYsmP.mjs.map +1 -0
  161. package/dist/admin/admin-vlKSOeHB.js +274 -0
  162. package/dist/admin/admin-vlKSOeHB.js.map +1 -0
  163. package/dist/admin/apiTokens-dBRuo1wd.mjs +56 -0
  164. package/dist/admin/apiTokens-dBRuo1wd.mjs.map +1 -0
  165. package/dist/admin/apiTokens-lXn03No3.js +62 -0
  166. package/dist/admin/apiTokens-lXn03No3.js.map +1 -0
  167. package/dist/admin/ar-74XpZHjA.js +853 -0
  168. package/dist/admin/ar-74XpZHjA.js.map +1 -0
  169. package/dist/admin/ar-gTQs8p7A.mjs +832 -0
  170. package/dist/admin/ar-gTQs8p7A.mjs.map +1 -0
  171. package/dist/admin/ca-A-U5stlG.mjs +520 -0
  172. package/dist/admin/ca-A-U5stlG.mjs.map +1 -0
  173. package/dist/admin/ca-tfhzbe_0.js +538 -0
  174. package/dist/admin/ca-tfhzbe_0.js.map +1 -0
  175. package/dist/admin/constants-enREoOEa.mjs +52 -0
  176. package/dist/admin/constants-enREoOEa.mjs.map +1 -0
  177. package/dist/admin/constants-jQFnBWVd.js +60 -0
  178. package/dist/admin/constants-jQFnBWVd.js.map +1 -0
  179. package/dist/admin/cs-iYqoHUVt.mjs +166 -0
  180. package/dist/admin/cs-iYqoHUVt.mjs.map +1 -0
  181. package/dist/admin/cs-sS-228vY.js +179 -0
  182. package/dist/admin/cs-sS-228vY.js.map +1 -0
  183. package/dist/admin/de-og0YSnla.js +532 -0
  184. package/dist/admin/de-og0YSnla.js.map +1 -0
  185. package/dist/admin/de-uZBjRd6a.mjs +514 -0
  186. package/dist/admin/de-uZBjRd6a.mjs.map +1 -0
  187. package/dist/admin/dk-GtDhDxRc.js +452 -0
  188. package/dist/admin/dk-GtDhDxRc.js.map +1 -0
  189. package/dist/admin/dk-nXAO32DE.mjs +434 -0
  190. package/dist/admin/dk-nXAO32DE.mjs.map +1 -0
  191. package/dist/admin/ee.js +12 -0
  192. package/dist/admin/ee.js.map +1 -0
  193. package/dist/admin/ee.mjs +3 -0
  194. package/dist/admin/ee.mjs.map +1 -0
  195. package/dist/admin/en-2FB7x9Rq.js +804 -0
  196. package/dist/admin/en-2FB7x9Rq.js.map +1 -0
  197. package/dist/admin/en-qvX6GTOD.mjs +783 -0
  198. package/dist/admin/en-qvX6GTOD.mjs.map +1 -0
  199. package/dist/admin/es-TQtY4G8X.js +615 -0
  200. package/dist/admin/es-TQtY4G8X.js.map +1 -0
  201. package/dist/admin/es-i0dEHPPQ.mjs +595 -0
  202. package/dist/admin/es-i0dEHPPQ.mjs.map +1 -0
  203. package/dist/admin/eu-SRdPRyQu.js +645 -0
  204. package/dist/admin/eu-SRdPRyQu.js.map +1 -0
  205. package/dist/admin/eu-wFmYHERY.mjs +625 -0
  206. package/dist/admin/eu-wFmYHERY.mjs.map +1 -0
  207. package/dist/admin/fr-GW5-kEO9.js +571 -0
  208. package/dist/admin/fr-GW5-kEO9.js.map +1 -0
  209. package/dist/admin/fr-OI7VyC_k.mjs +550 -0
  210. package/dist/admin/fr-OI7VyC_k.mjs.map +1 -0
  211. package/dist/admin/gu-z6qqOLRh.js +438 -0
  212. package/dist/admin/gu-z6qqOLRh.js.map +1 -0
  213. package/dist/admin/gu-zSaMc-a6.mjs +429 -0
  214. package/dist/admin/gu-zSaMc-a6.mjs.map +1 -0
  215. package/dist/admin/he-CLdZZ_n1.js +329 -0
  216. package/dist/admin/he-CLdZZ_n1.js.map +1 -0
  217. package/dist/admin/he-YzAGShlQ.mjs +315 -0
  218. package/dist/admin/he-YzAGShlQ.mjs.map +1 -0
  219. package/dist/admin/hi-3pMoYe6q.js +537 -0
  220. package/dist/admin/hi-3pMoYe6q.js.map +1 -0
  221. package/dist/admin/hi-ZQ4t6UdY.mjs +519 -0
  222. package/dist/admin/hi-ZQ4t6UdY.mjs.map +1 -0
  223. package/dist/admin/hu-O1FJoY8c.mjs +625 -0
  224. package/dist/admin/hu-O1FJoY8c.mjs.map +1 -0
  225. package/dist/admin/hu-VxIqV1X0.js +645 -0
  226. package/dist/admin/hu-VxIqV1X0.js.map +1 -0
  227. package/dist/admin/id-Lb_0kPQU.mjs +290 -0
  228. package/dist/admin/id-Lb_0kPQU.mjs.map +1 -0
  229. package/dist/admin/id-cUUpuxZO.js +303 -0
  230. package/dist/admin/id-cUUpuxZO.js.map +1 -0
  231. package/dist/admin/index-dcaxfEDi.js +5241 -0
  232. package/dist/admin/index-dcaxfEDi.js.map +1 -0
  233. package/dist/admin/index-oBxjGftZ.mjs +5163 -0
  234. package/dist/admin/index-oBxjGftZ.mjs.map +1 -0
  235. package/dist/admin/index.js +26 -27
  236. package/dist/admin/index.js.map +1 -1
  237. package/dist/admin/index.mjs +3 -3
  238. package/dist/admin/it-136monzD.mjs +299 -0
  239. package/dist/admin/it-136monzD.mjs.map +1 -0
  240. package/dist/admin/it-m8H0rXTP.js +312 -0
  241. package/dist/admin/it-m8H0rXTP.js.map +1 -0
  242. package/dist/admin/ja-0-FUC0T4.mjs +434 -0
  243. package/dist/admin/ja-0-FUC0T4.mjs.map +1 -0
  244. package/dist/admin/ja-jhqUhh7F.js +452 -0
  245. package/dist/admin/ja-jhqUhh7F.js.map +1 -0
  246. package/dist/admin/ko-Fq49QS3z.js +451 -0
  247. package/dist/admin/ko-Fq49QS3z.js.map +1 -0
  248. package/dist/admin/ko-H3Y8GpnD.mjs +433 -0
  249. package/dist/admin/ko-H3Y8GpnD.mjs.map +1 -0
  250. package/dist/admin/ml-NPdcpJoN.mjs +519 -0
  251. package/dist/admin/ml-NPdcpJoN.mjs.map +1 -0
  252. package/dist/admin/ml-mLJM4sQP.js +537 -0
  253. package/dist/admin/ml-mLJM4sQP.js.map +1 -0
  254. package/dist/admin/ms-NDmpSkMY.js +213 -0
  255. package/dist/admin/ms-NDmpSkMY.js.map +1 -0
  256. package/dist/admin/ms-v9c434YI.mjs +200 -0
  257. package/dist/admin/ms-v9c434YI.mjs.map +1 -0
  258. package/dist/admin/nl-RREi1JAg.js +641 -0
  259. package/dist/admin/nl-RREi1JAg.js.map +1 -0
  260. package/dist/admin/nl-qHmOt3d1.mjs +621 -0
  261. package/dist/admin/nl-qHmOt3d1.mjs.map +1 -0
  262. package/dist/admin/no-2wT9Jd9n.js +313 -0
  263. package/dist/admin/no-2wT9Jd9n.js.map +1 -0
  264. package/dist/admin/no-XGZQN-Ji.mjs +300 -0
  265. package/dist/admin/no-XGZQN-Ji.mjs.map +1 -0
  266. package/dist/admin/pl-Id5YX-Pw.mjs +519 -0
  267. package/dist/admin/pl-Id5YX-Pw.mjs.map +1 -0
  268. package/dist/admin/pl-kU2npCRO.js +537 -0
  269. package/dist/admin/pl-kU2npCRO.js.map +1 -0
  270. package/dist/admin/pt-BR-0o0Gf-P8.mjs +588 -0
  271. package/dist/admin/pt-BR-0o0Gf-P8.mjs.map +1 -0
  272. package/dist/admin/pt-BR-R-dMJxPL.js +608 -0
  273. package/dist/admin/pt-BR-R-dMJxPL.js.map +1 -0
  274. package/dist/admin/pt-IygqsPYv.js +212 -0
  275. package/dist/admin/pt-IygqsPYv.js.map +1 -0
  276. package/dist/admin/pt-f52AXrxz.mjs +200 -0
  277. package/dist/admin/pt-f52AXrxz.mjs.map +1 -0
  278. package/dist/admin/rbac-WZsv1761.js +1237 -0
  279. package/dist/admin/rbac-WZsv1761.js.map +1 -0
  280. package/dist/admin/rbac-sYT_mXH0.mjs +1171 -0
  281. package/dist/admin/rbac-sYT_mXH0.mjs.map +1 -0
  282. package/dist/admin/ru-5TBoMH_2.js +766 -0
  283. package/dist/admin/ru-5TBoMH_2.js.map +1 -0
  284. package/dist/admin/ru-FpmG9SEf.mjs +745 -0
  285. package/dist/admin/ru-FpmG9SEf.mjs.map +1 -0
  286. package/dist/admin/sa-KUwV8aRB.mjs +519 -0
  287. package/dist/admin/sa-KUwV8aRB.mjs.map +1 -0
  288. package/dist/admin/sa-KmwTiEO5.js +537 -0
  289. package/dist/admin/sa-KmwTiEO5.js.map +1 -0
  290. package/dist/admin/selectors-3gRe5pAj.mjs +6 -0
  291. package/dist/admin/selectors-3gRe5pAj.mjs.map +1 -0
  292. package/dist/admin/selectors-CiTVxP8O.js +8 -0
  293. package/dist/admin/selectors-CiTVxP8O.js.map +1 -0
  294. package/dist/admin/sk-IV2uPmXo.js +503 -0
  295. package/dist/admin/sk-IV2uPmXo.js.map +1 -0
  296. package/dist/admin/sk-g_1C955P.mjs +483 -0
  297. package/dist/admin/sk-g_1C955P.mjs.map +1 -0
  298. package/dist/admin/src/StrapiApp.d.ts +12 -41
  299. package/dist/admin/src/components/Context.d.ts +6 -0
  300. package/dist/admin/src/components/Filters.d.ts +6 -1
  301. package/dist/admin/src/components/Form.d.ts +10 -1
  302. package/dist/admin/src/components/PageHelpers.d.ts +4 -0
  303. package/dist/admin/src/core/apis/rbac.d.ts +24 -0
  304. package/dist/admin/src/core/store/configure.d.ts +7 -18
  305. package/dist/admin/src/core/store/hooks.d.ts +6 -21
  306. package/dist/admin/src/ee.d.ts +5 -0
  307. package/dist/admin/src/features/Auth.d.ts +14 -3
  308. package/dist/admin/src/features/StrapiApp.d.ts +3 -1
  309. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  310. package/dist/admin/src/hooks/useContentTypes.d.ts +3 -3
  311. package/dist/admin/src/hooks/useRBAC.d.ts +33 -1
  312. package/dist/admin/src/index.d.ts +8 -4
  313. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
  314. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +1 -1
  315. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  316. package/dist/admin/src/selectors.d.ts +4 -14
  317. package/dist/admin/src/services/admin.d.ts +5 -5
  318. package/dist/admin/src/services/api.d.ts +3 -3
  319. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  320. package/dist/admin/src/services/auth.d.ts +10 -10
  321. package/dist/admin/src/services/contentApi.d.ts +1 -1
  322. package/dist/admin/src/services/contentManager.d.ts +2 -2
  323. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  324. package/dist/admin/src/services/users.d.ts +8 -8
  325. package/dist/admin/src/services/webhooks.d.ts +2 -2
  326. package/dist/admin/src/utils/once.d.ts +1 -0
  327. package/dist/admin/src/utils/urls.d.ts +7 -1
  328. package/dist/admin/src/utils/users.d.ts +4 -4
  329. package/dist/admin/sv-Uv9nW9cN.js +640 -0
  330. package/dist/admin/sv-Uv9nW9cN.js.map +1 -0
  331. package/dist/admin/sv-lzyY1dsz.mjs +620 -0
  332. package/dist/admin/sv-lzyY1dsz.mjs.map +1 -0
  333. package/dist/admin/test.js +170 -2649
  334. package/dist/admin/test.js.map +1 -1
  335. package/dist/admin/test.mjs +166 -2645
  336. package/dist/admin/test.mjs.map +1 -1
  337. package/dist/admin/tests/mockData.d.ts +0 -1065
  338. package/dist/admin/tests/store.d.ts +0 -169
  339. package/dist/admin/tests/utils.d.ts +2 -176
  340. package/dist/admin/th-7LJ9Y8EL.mjs +284 -0
  341. package/dist/admin/th-7LJ9Y8EL.mjs.map +1 -0
  342. package/dist/admin/th-SXQwWjv6.js +297 -0
  343. package/dist/admin/th-SXQwWjv6.js.map +1 -0
  344. package/dist/admin/tr-09v-DLMg.mjs +581 -0
  345. package/dist/admin/tr-09v-DLMg.mjs.map +1 -0
  346. package/dist/admin/tr-RBQM-Vq5.js +601 -0
  347. package/dist/admin/tr-RBQM-Vq5.js.map +1 -0
  348. package/dist/admin/transferTokens-5qQjIKFd.js +65 -0
  349. package/dist/admin/transferTokens-5qQjIKFd.js.map +1 -0
  350. package/dist/admin/transferTokens-OLPKYcY_.mjs +59 -0
  351. package/dist/admin/transferTokens-OLPKYcY_.mjs.map +1 -0
  352. package/dist/admin/uk-38IblmOr.mjs +201 -0
  353. package/dist/admin/uk-38IblmOr.mjs.map +1 -0
  354. package/dist/admin/uk-5T4XFIKm.js +214 -0
  355. package/dist/admin/uk-5T4XFIKm.js.map +1 -0
  356. package/dist/admin/useAdminRoles-HWIbyk2Z.mjs +28 -0
  357. package/dist/admin/useAdminRoles-HWIbyk2Z.mjs.map +1 -0
  358. package/dist/admin/useAdminRoles-Q2BxHs4o.js +50 -0
  359. package/dist/admin/useAdminRoles-Q2BxHs4o.js.map +1 -0
  360. package/dist/admin/useEnterprise-DUs6BYlP.js +50 -0
  361. package/dist/admin/useEnterprise-DUs6BYlP.js.map +1 -0
  362. package/dist/admin/useEnterprise-jpsYZWzn.mjs +28 -0
  363. package/dist/admin/useEnterprise-jpsYZWzn.mjs.map +1 -0
  364. package/dist/admin/useLicenseLimitNotification-0UWeCY_u.js +105 -0
  365. package/dist/admin/useLicenseLimitNotification-0UWeCY_u.js.map +1 -0
  366. package/dist/admin/useLicenseLimitNotification-aTNbD3xK.mjs +80 -0
  367. package/dist/admin/useLicenseLimitNotification-aTNbD3xK.mjs.map +1 -0
  368. package/dist/admin/useLicenseLimits-F7K-YWAE.mjs +23 -0
  369. package/dist/admin/useLicenseLimits-F7K-YWAE.mjs.map +1 -0
  370. package/dist/admin/useLicenseLimits-m11DOu9p.js +45 -0
  371. package/dist/admin/useLicenseLimits-m11DOu9p.js.map +1 -0
  372. package/dist/admin/useWebhooks-7BXPSMHG.mjs +91 -0
  373. package/dist/admin/useWebhooks-7BXPSMHG.mjs.map +1 -0
  374. package/dist/admin/useWebhooks-oZ5DKtvz.js +93 -0
  375. package/dist/admin/useWebhooks-oZ5DKtvz.js.map +1 -0
  376. package/dist/admin/users-R5A0kUOV.js +33 -0
  377. package/dist/admin/users-R5A0kUOV.js.map +1 -0
  378. package/dist/admin/users-a4KTyEyc.mjs +30 -0
  379. package/dist/admin/users-a4KTyEyc.mjs.map +1 -0
  380. package/dist/admin/validation-2MGgF10o.js +65 -0
  381. package/dist/admin/validation-2MGgF10o.js.map +1 -0
  382. package/dist/admin/validation-gH-06ERZ.mjs +43 -0
  383. package/dist/admin/validation-gH-06ERZ.mjs.map +1 -0
  384. package/dist/admin/vi-mj-Smy3d.js +200 -0
  385. package/dist/admin/vi-mj-Smy3d.js.map +1 -0
  386. package/dist/admin/vi-ryNZtXtk.mjs +187 -0
  387. package/dist/admin/vi-ryNZtXtk.mjs.map +1 -0
  388. package/dist/admin/zh-6qF5HCOo.js +642 -0
  389. package/dist/admin/zh-6qF5HCOo.js.map +1 -0
  390. package/dist/admin/zh-Hans-HlxDUeVA.mjs +716 -0
  391. package/dist/admin/zh-Hans-HlxDUeVA.mjs.map +1 -0
  392. package/dist/admin/zh-Hans-eWSoi9-X.js +737 -0
  393. package/dist/admin/zh-Hans-eWSoi9-X.js.map +1 -0
  394. package/dist/admin/zh-WEteLuNm.mjs +622 -0
  395. package/dist/admin/zh-WEteLuNm.mjs.map +1 -0
  396. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +1 -1
  397. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  398. package/dist/ee/server/index.js +20 -31
  399. package/dist/ee/server/index.js.map +1 -1
  400. package/dist/ee/server/index.mjs +21 -32
  401. package/dist/ee/server/index.mjs.map +1 -1
  402. package/dist/package.json.d.ts +24 -33
  403. package/dist/server/index.js +51 -55
  404. package/dist/server/index.js.map +1 -1
  405. package/dist/server/index.mjs +52 -56
  406. package/dist/server/index.mjs.map +1 -1
  407. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  408. package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
  409. package/dist/server/src/services/passport.d.ts.map +1 -1
  410. package/dist/server/src/validation/project-settings.d.ts +52 -6
  411. package/dist/server/src/validation/project-settings.d.ts.map +1 -1
  412. package/dist/shared/contracts/content-types.d.ts +5 -0
  413. package/dist/shared/contracts/content-types.d.ts.map +1 -0
  414. package/package.json +25 -34
  415. package/dist/admin/AdminSeatInfo-Gp4BFR1_.js +0 -105
  416. package/dist/admin/AdminSeatInfo-Gp4BFR1_.js.map +0 -1
  417. package/dist/admin/AdminSeatInfo-dDgFBcLY.mjs +0 -101
  418. package/dist/admin/AdminSeatInfo-dDgFBcLY.mjs.map +0 -1
  419. package/dist/admin/ApplicationInfoPage-GQLKLk5T.mjs +0 -670
  420. package/dist/admin/ApplicationInfoPage-GQLKLk5T.mjs.map +0 -1
  421. package/dist/admin/ApplicationInfoPage-e_sOqQMh.js +0 -698
  422. package/dist/admin/ApplicationInfoPage-e_sOqQMh.js.map +0 -1
  423. package/dist/admin/AuthResponse-gf-zZkxm.mjs +0 -43
  424. package/dist/admin/AuthResponse-gf-zZkxm.mjs.map +0 -1
  425. package/dist/admin/AuthResponse-l5QiAAK7.js +0 -70
  426. package/dist/admin/AuthResponse-l5QiAAK7.js.map +0 -1
  427. package/dist/admin/AuthenticatedLayout-3fYM18Xy.mjs +0 -1115
  428. package/dist/admin/AuthenticatedLayout-3fYM18Xy.mjs.map +0 -1
  429. package/dist/admin/AuthenticatedLayout-gGQYIisy.js +0 -1148
  430. package/dist/admin/AuthenticatedLayout-gGQYIisy.js.map +0 -1
  431. package/dist/admin/ComponentConfigurationPage-0kf7a5LK.mjs +0 -237
  432. package/dist/admin/ComponentConfigurationPage-0kf7a5LK.mjs.map +0 -1
  433. package/dist/admin/ComponentConfigurationPage-U7RcNJFs.js +0 -262
  434. package/dist/admin/ComponentConfigurationPage-U7RcNJFs.js.map +0 -1
  435. package/dist/admin/ComponentIcon-AkrHxAkm.mjs +0 -158
  436. package/dist/admin/ComponentIcon-AkrHxAkm.mjs.map +0 -1
  437. package/dist/admin/ComponentIcon-wcNWpdCz.js +0 -180
  438. package/dist/admin/ComponentIcon-wcNWpdCz.js.map +0 -1
  439. package/dist/admin/CreateActionEE-HO-FmNjw.js +0 -61
  440. package/dist/admin/CreateActionEE-HO-FmNjw.js.map +0 -1
  441. package/dist/admin/CreateActionEE-OscS6KZj.mjs +0 -53
  442. package/dist/admin/CreateActionEE-OscS6KZj.mjs.map +0 -1
  443. package/dist/admin/CreatePage-1a_Nb-RK.mjs +0 -248
  444. package/dist/admin/CreatePage-1a_Nb-RK.mjs.map +0 -1
  445. package/dist/admin/CreatePage-8rG8fSZv.mjs +0 -245
  446. package/dist/admin/CreatePage-8rG8fSZv.mjs.map +0 -1
  447. package/dist/admin/CreatePage-B0kLot_Q.js +0 -18
  448. package/dist/admin/CreatePage-B0kLot_Q.js.map +0 -1
  449. package/dist/admin/CreatePage-c92hDTE3.mjs +0 -13
  450. package/dist/admin/CreatePage-c92hDTE3.mjs.map +0 -1
  451. package/dist/admin/CreatePage-h9gJgINE.js +0 -274
  452. package/dist/admin/CreatePage-h9gJgINE.js.map +0 -1
  453. package/dist/admin/CreatePage-pN8WcSWM.js +0 -272
  454. package/dist/admin/CreatePage-pN8WcSWM.js.map +0 -1
  455. package/dist/admin/CreateView-Gd7sLphf.js +0 -17
  456. package/dist/admin/CreateView-Gd7sLphf.js.map +0 -1
  457. package/dist/admin/CreateView-PIPvgwa8.mjs +0 -13
  458. package/dist/admin/CreateView-PIPvgwa8.mjs.map +0 -1
  459. package/dist/admin/CreateView-kVD9MjAf.js +0 -17
  460. package/dist/admin/CreateView-kVD9MjAf.js.map +0 -1
  461. package/dist/admin/CreateView-nXkGgZTO.mjs +0 -13
  462. package/dist/admin/CreateView-nXkGgZTO.mjs.map +0 -1
  463. package/dist/admin/EditConfigurationPage-YAS-MAtE.js +0 -155
  464. package/dist/admin/EditConfigurationPage-YAS-MAtE.js.map +0 -1
  465. package/dist/admin/EditConfigurationPage-jugWslla.mjs +0 -130
  466. package/dist/admin/EditConfigurationPage-jugWslla.mjs.map +0 -1
  467. package/dist/admin/EditPage-6pGLGlrZ.mjs +0 -794
  468. package/dist/admin/EditPage-6pGLGlrZ.mjs.map +0 -1
  469. package/dist/admin/EditPage-I99-ASjb.mjs +0 -325
  470. package/dist/admin/EditPage-I99-ASjb.mjs.map +0 -1
  471. package/dist/admin/EditPage-NrM8ZRAf.mjs +0 -303
  472. package/dist/admin/EditPage-NrM8ZRAf.mjs.map +0 -1
  473. package/dist/admin/EditPage-ci9fcWte.js +0 -327
  474. package/dist/admin/EditPage-ci9fcWte.js.map +0 -1
  475. package/dist/admin/EditPage-fT6nuOwT.mjs +0 -260
  476. package/dist/admin/EditPage-fT6nuOwT.mjs.map +0 -1
  477. package/dist/admin/EditPage-hEDFGDcC.js +0 -822
  478. package/dist/admin/EditPage-hEDFGDcC.js.map +0 -1
  479. package/dist/admin/EditPage-m5HVhxC-.js +0 -286
  480. package/dist/admin/EditPage-m5HVhxC-.js.map +0 -1
  481. package/dist/admin/EditPage-um8Yysr-.js +0 -354
  482. package/dist/admin/EditPage-um8Yysr-.js.map +0 -1
  483. package/dist/admin/EditView-79rujo0b.mjs +0 -336
  484. package/dist/admin/EditView-79rujo0b.mjs.map +0 -1
  485. package/dist/admin/EditView-zEf-a-YM.js +0 -362
  486. package/dist/admin/EditView-zEf-a-YM.js.map +0 -1
  487. package/dist/admin/EditViewPage-BJdNfzBZ.mjs +0 -198
  488. package/dist/admin/EditViewPage-BJdNfzBZ.mjs.map +0 -1
  489. package/dist/admin/EditViewPage-Y67V7K7l.js +0 -226
  490. package/dist/admin/EditViewPage-Y67V7K7l.js.map +0 -1
  491. package/dist/admin/EditViewPage-iuq_KY3C.mjs +0 -846
  492. package/dist/admin/EditViewPage-iuq_KY3C.mjs.map +0 -1
  493. package/dist/admin/EditViewPage-vrE8FNb1.js +0 -879
  494. package/dist/admin/EditViewPage-vrE8FNb1.js.map +0 -1
  495. package/dist/admin/EventsTable-LOh2EX0N.mjs +0 -32
  496. package/dist/admin/EventsTable-LOh2EX0N.mjs.map +0 -1
  497. package/dist/admin/EventsTable-bm16Pj4a.js +0 -36
  498. package/dist/admin/EventsTable-bm16Pj4a.js.map +0 -1
  499. package/dist/admin/FieldTypeIcon-SCwhXPf6.mjs +0 -50
  500. package/dist/admin/FieldTypeIcon-SCwhXPf6.mjs.map +0 -1
  501. package/dist/admin/FieldTypeIcon-u9dTaLwb.js +0 -52
  502. package/dist/admin/FieldTypeIcon-u9dTaLwb.js.map +0 -1
  503. package/dist/admin/Filters-5FAHd62q.js +0 -511
  504. package/dist/admin/Filters-5FAHd62q.js.map +0 -1
  505. package/dist/admin/Filters-hYfcsahl.mjs +0 -489
  506. package/dist/admin/Filters-hYfcsahl.mjs.map +0 -1
  507. package/dist/admin/Form-7gccxUtH.mjs +0 -739
  508. package/dist/admin/Form-7gccxUtH.mjs.map +0 -1
  509. package/dist/admin/Form-m0qUJusG.js +0 -767
  510. package/dist/admin/Form-m0qUJusG.js.map +0 -1
  511. package/dist/admin/History-UVk6YZaL.js +0 -456
  512. package/dist/admin/History-UVk6YZaL.js.map +0 -1
  513. package/dist/admin/History-gNttF1-u.mjs +0 -430
  514. package/dist/admin/History-gNttF1-u.mjs.map +0 -1
  515. package/dist/admin/HomePage-2q7ngwX4.mjs +0 -11
  516. package/dist/admin/HomePage-2q7ngwX4.mjs.map +0 -1
  517. package/dist/admin/HomePage-_eHszm7N.mjs +0 -521
  518. package/dist/admin/HomePage-_eHszm7N.mjs.map +0 -1
  519. package/dist/admin/HomePage-jwm3AAzI.js +0 -530
  520. package/dist/admin/HomePage-jwm3AAzI.js.map +0 -1
  521. package/dist/admin/HomePage-ozwWqZdZ.js +0 -15
  522. package/dist/admin/HomePage-ozwWqZdZ.js.map +0 -1
  523. package/dist/admin/InputRenderer-tdeZayqM.js +0 -5345
  524. package/dist/admin/InputRenderer-tdeZayqM.js.map +0 -1
  525. package/dist/admin/InputRenderer-uXGu-VvL.mjs +0 -5304
  526. package/dist/admin/InputRenderer-uXGu-VvL.mjs.map +0 -1
  527. package/dist/admin/InstalledPluginsPage-rGp1BINi.mjs +0 -101
  528. package/dist/admin/InstalledPluginsPage-rGp1BINi.mjs.map +0 -1
  529. package/dist/admin/InstalledPluginsPage-relNbZiA.js +0 -126
  530. package/dist/admin/InstalledPluginsPage-relNbZiA.js.map +0 -1
  531. package/dist/admin/Layout-JSg7Wwnx.mjs +0 -89
  532. package/dist/admin/Layout-JSg7Wwnx.mjs.map +0 -1
  533. package/dist/admin/Layout-gqm-mRb2.mjs +0 -209
  534. package/dist/admin/Layout-gqm-mRb2.mjs.map +0 -1
  535. package/dist/admin/Layout-rp7YlCuF.js +0 -237
  536. package/dist/admin/Layout-rp7YlCuF.js.map +0 -1
  537. package/dist/admin/Layout-tPXv8ts4.js +0 -97
  538. package/dist/admin/Layout-tPXv8ts4.js.map +0 -1
  539. package/dist/admin/ListConfigurationPage-1JkDop6y.mjs +0 -651
  540. package/dist/admin/ListConfigurationPage-1JkDop6y.mjs.map +0 -1
  541. package/dist/admin/ListConfigurationPage-egv99PTx.js +0 -679
  542. package/dist/admin/ListConfigurationPage-egv99PTx.js.map +0 -1
  543. package/dist/admin/ListPage-5VIwPlnG.js +0 -520
  544. package/dist/admin/ListPage-5VIwPlnG.js.map +0 -1
  545. package/dist/admin/ListPage-85XB15gk.js +0 -305
  546. package/dist/admin/ListPage-85XB15gk.js.map +0 -1
  547. package/dist/admin/ListPage-NG7c9Zx-.js +0 -313
  548. package/dist/admin/ListPage-NG7c9Zx-.js.map +0 -1
  549. package/dist/admin/ListPage-Wf8HxliA.js +0 -15
  550. package/dist/admin/ListPage-Wf8HxliA.js.map +0 -1
  551. package/dist/admin/ListPage-Y0vGfxO1.mjs +0 -492
  552. package/dist/admin/ListPage-Y0vGfxO1.mjs.map +0 -1
  553. package/dist/admin/ListPage-_1MCPNWC.mjs +0 -11
  554. package/dist/admin/ListPage-_1MCPNWC.mjs.map +0 -1
  555. package/dist/admin/ListPage-bdblB4wE.mjs +0 -338
  556. package/dist/admin/ListPage-bdblB4wE.mjs.map +0 -1
  557. package/dist/admin/ListPage-d0uTS6lH.js +0 -363
  558. package/dist/admin/ListPage-d0uTS6lH.js.map +0 -1
  559. package/dist/admin/ListPage-e0975Wh-.js +0 -568
  560. package/dist/admin/ListPage-e0975Wh-.js.map +0 -1
  561. package/dist/admin/ListPage-eMKRFxzM.mjs +0 -288
  562. package/dist/admin/ListPage-eMKRFxzM.mjs.map +0 -1
  563. package/dist/admin/ListPage-tFqx6zb_.mjs +0 -540
  564. package/dist/admin/ListPage-tFqx6zb_.mjs.map +0 -1
  565. package/dist/admin/ListPage-v07yRAHk.mjs +0 -277
  566. package/dist/admin/ListPage-v07yRAHk.mjs.map +0 -1
  567. package/dist/admin/ListView-9shnR2xp.mjs +0 -212
  568. package/dist/admin/ListView-9shnR2xp.mjs.map +0 -1
  569. package/dist/admin/ListView-IaEe1_Uy.js +0 -238
  570. package/dist/admin/ListView-IaEe1_Uy.js.map +0 -1
  571. package/dist/admin/ListView-_EZZ571X.js +0 -228
  572. package/dist/admin/ListView-_EZZ571X.js.map +0 -1
  573. package/dist/admin/ListView-z9G1Eash.mjs +0 -202
  574. package/dist/admin/ListView-z9G1Eash.mjs.map +0 -1
  575. package/dist/admin/ListViewPage-FE12IpwT.mjs +0 -925
  576. package/dist/admin/ListViewPage-FE12IpwT.mjs.map +0 -1
  577. package/dist/admin/ListViewPage-u5WSF93L.js +0 -957
  578. package/dist/admin/ListViewPage-u5WSF93L.js.map +0 -1
  579. package/dist/admin/Login-9iKNSYCJ.mjs +0 -31
  580. package/dist/admin/Login-9iKNSYCJ.mjs.map +0 -1
  581. package/dist/admin/Login-ug0ICazL.js +0 -39
  582. package/dist/admin/Login-ug0ICazL.js.map +0 -1
  583. package/dist/admin/MagicLinkEE-3a4aj5bM.mjs +0 -27
  584. package/dist/admin/MagicLinkEE-3a4aj5bM.mjs.map +0 -1
  585. package/dist/admin/MagicLinkEE-TlpYCgSF.js +0 -31
  586. package/dist/admin/MagicLinkEE-TlpYCgSF.js.map +0 -1
  587. package/dist/admin/MarketplacePage-BBs4GMeX.mjs +0 -1014
  588. package/dist/admin/MarketplacePage-BBs4GMeX.mjs.map +0 -1
  589. package/dist/admin/MarketplacePage-GuZItQkJ.js +0 -1045
  590. package/dist/admin/MarketplacePage-GuZItQkJ.js.map +0 -1
  591. package/dist/admin/NoContentTypePage-MI-TNgDm.mjs +0 -50
  592. package/dist/admin/NoContentTypePage-MI-TNgDm.mjs.map +0 -1
  593. package/dist/admin/NoContentTypePage-WM9PSeKc.js +0 -54
  594. package/dist/admin/NoContentTypePage-WM9PSeKc.js.map +0 -1
  595. package/dist/admin/NoPermissionsPage-K6eIf5zl.mjs +0 -23
  596. package/dist/admin/NoPermissionsPage-K6eIf5zl.mjs.map +0 -1
  597. package/dist/admin/NoPermissionsPage-PP92ItBk.js +0 -27
  598. package/dist/admin/NoPermissionsPage-PP92ItBk.js.map +0 -1
  599. package/dist/admin/NotAllowed-9d8xvtvI.mjs +0 -36
  600. package/dist/admin/NotAllowed-9d8xvtvI.mjs.map +0 -1
  601. package/dist/admin/NotAllowed-FmDlK9I3.js +0 -42
  602. package/dist/admin/NotAllowed-FmDlK9I3.js.map +0 -1
  603. package/dist/admin/Ornaments-fHu7120M.js +0 -214
  604. package/dist/admin/Ornaments-fHu7120M.js.map +0 -1
  605. package/dist/admin/Permissions-jsl-R7bI.js +0 -2082
  606. package/dist/admin/Permissions-jsl-R7bI.js.map +0 -1
  607. package/dist/admin/Permissions-v99MLjbi.mjs +0 -2046
  608. package/dist/admin/Permissions-v99MLjbi.mjs.map +0 -1
  609. package/dist/admin/PrivateRoute-AFoVG5Bk.js +0 -22
  610. package/dist/admin/PrivateRoute-AFoVG5Bk.js.map +0 -1
  611. package/dist/admin/PrivateRoute-XiRz2oSq.mjs +0 -20
  612. package/dist/admin/PrivateRoute-XiRz2oSq.mjs.map +0 -1
  613. package/dist/admin/ProfilePage-HjJiMiTt.mjs +0 -391
  614. package/dist/admin/ProfilePage-HjJiMiTt.mjs.map +0 -1
  615. package/dist/admin/ProfilePage-wGM1mvXn.js +0 -419
  616. package/dist/admin/ProfilePage-wGM1mvXn.js.map +0 -1
  617. package/dist/admin/PurchaseAuditLogs-Rrl9r1j8.mjs +0 -48
  618. package/dist/admin/PurchaseAuditLogs-Rrl9r1j8.mjs.map +0 -1
  619. package/dist/admin/PurchaseAuditLogs-couRts7-.js +0 -52
  620. package/dist/admin/PurchaseAuditLogs-couRts7-.js.map +0 -1
  621. package/dist/admin/PurchaseReviewWorkflows--btlOW_J.mjs +0 -51
  622. package/dist/admin/PurchaseReviewWorkflows--btlOW_J.mjs.map +0 -1
  623. package/dist/admin/PurchaseReviewWorkflows-iyB5BJRO.js +0 -55
  624. package/dist/admin/PurchaseReviewWorkflows-iyB5BJRO.js.map +0 -1
  625. package/dist/admin/PurchaseSingleSignOn-L8l1HqSb.mjs +0 -51
  626. package/dist/admin/PurchaseSingleSignOn-L8l1HqSb.mjs.map +0 -1
  627. package/dist/admin/PurchaseSingleSignOn-oXrB5aDz.js +0 -55
  628. package/dist/admin/PurchaseSingleSignOn-oXrB5aDz.js.map +0 -1
  629. package/dist/admin/ReviewWorkflowsColumn-NUu47oVz.mjs +0 -34
  630. package/dist/admin/ReviewWorkflowsColumn-NUu47oVz.mjs.map +0 -1
  631. package/dist/admin/ReviewWorkflowsColumn-uIqJfjyd.js +0 -39
  632. package/dist/admin/ReviewWorkflowsColumn-uIqJfjyd.js.map +0 -1
  633. package/dist/admin/SelectRoles-5vr-vXOm.js +0 -114
  634. package/dist/admin/SelectRoles-5vr-vXOm.js.map +0 -1
  635. package/dist/admin/SelectRoles-ytHc3di2.mjs +0 -106
  636. package/dist/admin/SelectRoles-ytHc3di2.mjs.map +0 -1
  637. package/dist/admin/SingleSignOnPage-1Wqj_7y-.js +0 -263
  638. package/dist/admin/SingleSignOnPage-1Wqj_7y-.js.map +0 -1
  639. package/dist/admin/SingleSignOnPage-7oJES3UH.mjs +0 -238
  640. package/dist/admin/SingleSignOnPage-7oJES3UH.mjs.map +0 -1
  641. package/dist/admin/Table-LQhGojNx.mjs +0 -165
  642. package/dist/admin/Table-LQhGojNx.mjs.map +0 -1
  643. package/dist/admin/Table-M5UsBfFs.js +0 -190
  644. package/dist/admin/Table-M5UsBfFs.js.map +0 -1
  645. package/dist/admin/TokenTypeSelect-5o9mvFd7.mjs +0 -357
  646. package/dist/admin/TokenTypeSelect-5o9mvFd7.mjs.map +0 -1
  647. package/dist/admin/TokenTypeSelect-ZBDI26vJ.js +0 -385
  648. package/dist/admin/TokenTypeSelect-ZBDI26vJ.js.map +0 -1
  649. package/dist/admin/UseCasePage-e7rn-aW-.mjs +0 -146
  650. package/dist/admin/UseCasePage-e7rn-aW-.mjs.map +0 -1
  651. package/dist/admin/UseCasePage-q3u-xs7F.js +0 -175
  652. package/dist/admin/UseCasePage-q3u-xs7F.js.map +0 -1
  653. package/dist/admin/apiTokens-_gKUBKPQ.js +0 -62
  654. package/dist/admin/apiTokens-_gKUBKPQ.js.map +0 -1
  655. package/dist/admin/apiTokens-nD8zbNlc.mjs +0 -56
  656. package/dist/admin/apiTokens-nD8zbNlc.mjs.map +0 -1
  657. package/dist/admin/ar-i6ait0_Z.js +0 -939
  658. package/dist/admin/ar-i6ait0_Z.js.map +0 -1
  659. package/dist/admin/ar-lYsknZVT.mjs +0 -918
  660. package/dist/admin/ar-lYsknZVT.mjs.map +0 -1
  661. package/dist/admin/ca-1Cl4eOmr.js +0 -727
  662. package/dist/admin/ca-1Cl4eOmr.js.map +0 -1
  663. package/dist/admin/ca-ruPjUw52.mjs +0 -709
  664. package/dist/admin/ca-ruPjUw52.mjs.map +0 -1
  665. package/dist/admin/constants-6E1OwHx7.js +0 -197
  666. package/dist/admin/constants-6E1OwHx7.js.map +0 -1
  667. package/dist/admin/constants-AdKxCt0x.mjs +0 -52
  668. package/dist/admin/constants-AdKxCt0x.mjs.map +0 -1
  669. package/dist/admin/constants-D6NLEhwu.mjs +0 -172
  670. package/dist/admin/constants-D6NLEhwu.mjs.map +0 -1
  671. package/dist/admin/constants-DxpaZFhM.mjs +0 -10
  672. package/dist/admin/constants-DxpaZFhM.mjs.map +0 -1
  673. package/dist/admin/constants-ZZWbRAQT.js +0 -60
  674. package/dist/admin/constants-ZZWbRAQT.js.map +0 -1
  675. package/dist/admin/constants-wsN7Fj5H.js +0 -14
  676. package/dist/admin/constants-wsN7Fj5H.js.map +0 -1
  677. package/dist/admin/cs-MneRs5g8.js +0 -294
  678. package/dist/admin/cs-MneRs5g8.js.map +0 -1
  679. package/dist/admin/cs-cEW7Jgll.mjs +0 -281
  680. package/dist/admin/cs-cEW7Jgll.mjs.map +0 -1
  681. package/dist/admin/de-vPJQw5Tm.js +0 -719
  682. package/dist/admin/de-vPJQw5Tm.js.map +0 -1
  683. package/dist/admin/de-xZr3TXsT.mjs +0 -701
  684. package/dist/admin/de-xZr3TXsT.mjs.map +0 -1
  685. package/dist/admin/dk-_Fh6kypZ.js +0 -637
  686. package/dist/admin/dk-_Fh6kypZ.js.map +0 -1
  687. package/dist/admin/dk-nqK-ugFb.mjs +0 -619
  688. package/dist/admin/dk-nqK-ugFb.mjs.map +0 -1
  689. package/dist/admin/en-X84kQxpg.js +0 -1068
  690. package/dist/admin/en-X84kQxpg.js.map +0 -1
  691. package/dist/admin/en-qxG24n4z.mjs +0 -1047
  692. package/dist/admin/en-qxG24n4z.mjs.map +0 -1
  693. package/dist/admin/es-6dicYJQA.mjs +0 -779
  694. package/dist/admin/es-6dicYJQA.mjs.map +0 -1
  695. package/dist/admin/es-FC_8jlK7.js +0 -799
  696. package/dist/admin/es-FC_8jlK7.js.map +0 -1
  697. package/dist/admin/eu-Pzqod2VF.js +0 -835
  698. package/dist/admin/eu-Pzqod2VF.js.map +0 -1
  699. package/dist/admin/eu-l9nvfvQj.mjs +0 -815
  700. package/dist/admin/eu-l9nvfvQj.mjs.map +0 -1
  701. package/dist/admin/fr-8h2tzs3Z.js +0 -765
  702. package/dist/admin/fr-8h2tzs3Z.js.map +0 -1
  703. package/dist/admin/fr-97oVHDGZ.mjs +0 -744
  704. package/dist/admin/fr-97oVHDGZ.mjs.map +0 -1
  705. package/dist/admin/gu-YXP9LW1p.mjs +0 -617
  706. package/dist/admin/gu-YXP9LW1p.mjs.map +0 -1
  707. package/dist/admin/gu-fkXeW5oU.js +0 -626
  708. package/dist/admin/gu-fkXeW5oU.js.map +0 -1
  709. package/dist/admin/he-Rnd0orlz.mjs +0 -315
  710. package/dist/admin/he-Rnd0orlz.mjs.map +0 -1
  711. package/dist/admin/he-YNZzVWgP.js +0 -329
  712. package/dist/admin/he-YNZzVWgP.js.map +0 -1
  713. package/dist/admin/hi-42LJgJV1.mjs +0 -707
  714. package/dist/admin/hi-42LJgJV1.mjs.map +0 -1
  715. package/dist/admin/hi-ubgoUzQ0.js +0 -725
  716. package/dist/admin/hi-ubgoUzQ0.js.map +0 -1
  717. package/dist/admin/hu-oHJgjivB.js +0 -835
  718. package/dist/admin/hu-oHJgjivB.js.map +0 -1
  719. package/dist/admin/hu-xsansjmF.mjs +0 -815
  720. package/dist/admin/hu-xsansjmF.mjs.map +0 -1
  721. package/dist/admin/id-JurRr0gC.mjs +0 -438
  722. package/dist/admin/id-JurRr0gC.mjs.map +0 -1
  723. package/dist/admin/id-T2ge96wh.js +0 -451
  724. package/dist/admin/id-T2ge96wh.js.map +0 -1
  725. package/dist/admin/index-1NFAbkxM.mjs +0 -5927
  726. package/dist/admin/index-1NFAbkxM.mjs.map +0 -1
  727. package/dist/admin/index-mQQPK-ix.js +0 -6023
  728. package/dist/admin/index-mQQPK-ix.js.map +0 -1
  729. package/dist/admin/it-890_w-P3.mjs +0 -449
  730. package/dist/admin/it-890_w-P3.mjs.map +0 -1
  731. package/dist/admin/it-uWPMs24z.js +0 -462
  732. package/dist/admin/it-uWPMs24z.js.map +0 -1
  733. package/dist/admin/ja-F61alnK1.mjs +0 -618
  734. package/dist/admin/ja-F61alnK1.mjs.map +0 -1
  735. package/dist/admin/ja-pw-zE8MH.js +0 -636
  736. package/dist/admin/ja-pw-zE8MH.js.map +0 -1
  737. package/dist/admin/ko-DfQWK5T3.mjs +0 -616
  738. package/dist/admin/ko-DfQWK5T3.mjs.map +0 -1
  739. package/dist/admin/ko-XhK2FY3_.js +0 -634
  740. package/dist/admin/ko-XhK2FY3_.js.map +0 -1
  741. package/dist/admin/ml-EVaVYywL.mjs +0 -707
  742. package/dist/admin/ml-EVaVYywL.mjs.map +0 -1
  743. package/dist/admin/ml-hT2VI8JA.js +0 -725
  744. package/dist/admin/ml-hT2VI8JA.js.map +0 -1
  745. package/dist/admin/ms-CzgcVrsY.mjs +0 -332
  746. package/dist/admin/ms-CzgcVrsY.mjs.map +0 -1
  747. package/dist/admin/ms-DoMJCZ42.js +0 -345
  748. package/dist/admin/ms-DoMJCZ42.js.map +0 -1
  749. package/dist/admin/nl-LLi_sx9P.js +0 -831
  750. package/dist/admin/nl-LLi_sx9P.js.map +0 -1
  751. package/dist/admin/nl-XNqQYx_K.mjs +0 -811
  752. package/dist/admin/nl-XNqQYx_K.mjs.map +0 -1
  753. package/dist/admin/no-JwA1Lt4Y.mjs +0 -300
  754. package/dist/admin/no-JwA1Lt4Y.mjs.map +0 -1
  755. package/dist/admin/no-wmtVIVuz.js +0 -313
  756. package/dist/admin/no-wmtVIVuz.js.map +0 -1
  757. package/dist/admin/pl-05ncDTwZ.js +0 -724
  758. package/dist/admin/pl-05ncDTwZ.js.map +0 -1
  759. package/dist/admin/pl-euPz4n1g.mjs +0 -706
  760. package/dist/admin/pl-euPz4n1g.mjs.map +0 -1
  761. package/dist/admin/pt-BR-vpbGYSYw.mjs +0 -777
  762. package/dist/admin/pt-BR-vpbGYSYw.mjs.map +0 -1
  763. package/dist/admin/pt-BR-xA4J5pi2.js +0 -797
  764. package/dist/admin/pt-BR-xA4J5pi2.js.map +0 -1
  765. package/dist/admin/pt-RlnkaSdF.mjs +0 -287
  766. package/dist/admin/pt-RlnkaSdF.mjs.map +0 -1
  767. package/dist/admin/pt-yArB6nEx.js +0 -299
  768. package/dist/admin/pt-yArB6nEx.js.map +0 -1
  769. package/dist/admin/reducers-IQWvK_9L.mjs +0 -4617
  770. package/dist/admin/reducers-IQWvK_9L.mjs.map +0 -1
  771. package/dist/admin/reducers-wZUQqmNX.js +0 -4764
  772. package/dist/admin/reducers-wZUQqmNX.js.map +0 -1
  773. package/dist/admin/ru-4bDDGI3o.js +0 -996
  774. package/dist/admin/ru-4bDDGI3o.js.map +0 -1
  775. package/dist/admin/ru-tyoEF5X6.mjs +0 -975
  776. package/dist/admin/ru-tyoEF5X6.mjs.map +0 -1
  777. package/dist/admin/sa-OOEUNg5o.js +0 -725
  778. package/dist/admin/sa-OOEUNg5o.js.map +0 -1
  779. package/dist/admin/sa-s-WVHU-Y.mjs +0 -707
  780. package/dist/admin/sa-s-WVHU-Y.mjs.map +0 -1
  781. package/dist/admin/selectors-PTHjHMQi.js +0 -8
  782. package/dist/admin/selectors-PTHjHMQi.js.map +0 -1
  783. package/dist/admin/selectors-nn3C3YKE.mjs +0 -6
  784. package/dist/admin/selectors-nn3C3YKE.mjs.map +0 -1
  785. package/dist/admin/sk-1sQSF-r2.js +0 -693
  786. package/dist/admin/sk-1sQSF-r2.js.map +0 -1
  787. package/dist/admin/sk-5bIrjuCN.mjs +0 -673
  788. package/dist/admin/sk-5bIrjuCN.mjs.map +0 -1
  789. package/dist/admin/src/components/InjectionZone.d.ts +0 -59
  790. package/dist/admin/src/content-manager/components/ComponentIcon.d.ts +0 -8
  791. package/dist/admin/src/content-manager/components/ConfigurationForm/EditFieldForm.d.ts +0 -9
  792. package/dist/admin/src/content-manager/components/ConfigurationForm/Fields.d.ts +0 -21
  793. package/dist/admin/src/content-manager/components/ConfigurationForm/Form.d.ts +0 -32
  794. package/dist/admin/src/content-manager/components/DragPreviews/CardDragPreview.d.ts +0 -7
  795. package/dist/admin/src/content-manager/components/DragPreviews/ComponentDragPreview.d.ts +0 -6
  796. package/dist/admin/src/content-manager/components/DragPreviews/RelationDragPreview.d.ts +0 -11
  797. package/dist/admin/src/content-manager/components/FieldTypeIcon.d.ts +0 -9
  798. package/dist/admin/src/content-manager/components/LeftMenu.d.ts +0 -2
  799. package/dist/admin/src/content-manager/constants/attributes.d.ts +0 -14
  800. package/dist/admin/src/content-manager/constants/collections.d.ts +0 -3
  801. package/dist/admin/src/content-manager/constants/dragAndDrop.d.ts +0 -8
  802. package/dist/admin/src/content-manager/exports.d.ts +0 -10
  803. package/dist/admin/src/content-manager/features/DocumentRBAC.d.ts +0 -36
  804. package/dist/admin/src/content-manager/history/components/HistoryAction.d.ts +0 -3
  805. package/dist/admin/src/content-manager/history/components/VersionContent.d.ts +0 -2
  806. package/dist/admin/src/content-manager/history/components/VersionHeader.d.ts +0 -5
  807. package/dist/admin/src/content-manager/history/components/VersionsList.d.ts +0 -2
  808. package/dist/admin/src/content-manager/history/pages/History.d.ts +0 -25
  809. package/dist/admin/src/content-manager/history/routes.d.ts +0 -11
  810. package/dist/admin/src/content-manager/history/services/historyVersion.d.ts +0 -7
  811. package/dist/admin/src/content-manager/hooks/useContentManagerInitData.d.ts +0 -15
  812. package/dist/admin/src/content-manager/hooks/useContentTypeSchema.d.ts +0 -24
  813. package/dist/admin/src/content-manager/hooks/useDocument.d.ts +0 -89
  814. package/dist/admin/src/content-manager/hooks/useDocumentActions.d.ts +0 -102
  815. package/dist/admin/src/content-manager/hooks/useDocumentLayout.d.ts +0 -138
  816. package/dist/admin/src/content-manager/hooks/useDragAndDrop.d.ts +0 -51
  817. package/dist/admin/src/content-manager/hooks/useKeyboardDragAndDrop.d.ts +0 -14
  818. package/dist/admin/src/content-manager/hooks/useLazyComponents.d.ts +0 -13
  819. package/dist/admin/src/content-manager/hooks/useSyncRbac.d.ts +0 -15
  820. package/dist/admin/src/content-manager/layout.d.ts +0 -16
  821. package/dist/admin/src/content-manager/modules/rbac.d.ts +0 -14
  822. package/dist/admin/src/content-manager/modules/reducers.d.ts +0 -4
  823. package/dist/admin/src/content-manager/pages/ComponentConfigurationPage.d.ts +0 -3
  824. package/dist/admin/src/content-manager/pages/EditConfigurationPage.d.ts +0 -3
  825. package/dist/admin/src/content-manager/pages/EditView/EditViewPage.d.ts +0 -3
  826. package/dist/admin/src/content-manager/pages/EditView/components/DocumentActions.d.ts +0 -69
  827. package/dist/admin/src/content-manager/pages/EditView/components/DocumentStatus.d.ts +0 -16
  828. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +0 -3
  829. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.d.ts +0 -3
  830. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.d.ts +0 -3
  831. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.d.ts +0 -3
  832. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.d.ts +0 -3
  833. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.d.ts +0 -3
  834. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.d.ts +0 -3
  835. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.d.ts +0 -6
  836. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +0 -61
  837. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +0 -10
  838. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.d.ts +0 -10
  839. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +0 -10
  840. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Modifiers.d.ts +0 -16
  841. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts +0 -11
  842. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts +0 -9
  843. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.d.ts +0 -8
  844. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +0 -13
  845. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.d.ts +0 -6
  846. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +0 -10
  847. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/types.d.ts +0 -10
  848. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Initializer.d.ts +0 -9
  849. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Input.d.ts +0 -9
  850. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/NonRepeatable.d.ts +0 -6
  851. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Repeatable.d.ts +0 -6
  852. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/ComponentContext.d.ts +0 -42
  853. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.d.ts +0 -11
  854. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentCard.d.ts +0 -9
  855. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +0 -17
  856. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.d.ts +0 -9
  857. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +0 -14
  858. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.d.ts +0 -12
  859. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +0 -13
  860. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/NotAllowed.d.ts +0 -7
  861. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Relations.d.ts +0 -26
  862. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/UID.d.ts +0 -9
  863. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/Editor.d.ts +0 -18
  864. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +0 -59
  865. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/Field.d.ts +0 -11
  866. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.d.ts +0 -5
  867. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +0 -7
  868. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +0 -17
  869. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +0 -54
  870. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.d.ts +0 -5
  871. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.d.ts +0 -4
  872. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.d.ts +0 -16
  873. package/dist/admin/src/content-manager/pages/EditView/components/FormLayout.d.ts +0 -5
  874. package/dist/admin/src/content-manager/pages/EditView/components/Header.d.ts +0 -35
  875. package/dist/admin/src/content-manager/pages/EditView/components/InputRenderer.d.ts +0 -14
  876. package/dist/admin/src/content-manager/pages/EditView/components/Panels.d.ts +0 -10
  877. package/dist/admin/src/content-manager/pages/EditView/utils/data.d.ts +0 -20
  878. package/dist/admin/src/content-manager/pages/EditView/utils/forms.d.ts +0 -9
  879. package/dist/admin/src/content-manager/pages/ListConfiguration/ListConfigurationPage.d.ts +0 -10
  880. package/dist/admin/src/content-manager/pages/ListConfiguration/components/DraggableCard.d.ts +0 -12
  881. package/dist/admin/src/content-manager/pages/ListConfiguration/components/EditFieldForm.d.ts +0 -8
  882. package/dist/admin/src/content-manager/pages/ListConfiguration/components/Header.d.ts +0 -8
  883. package/dist/admin/src/content-manager/pages/ListConfiguration/components/Settings.d.ts +0 -5
  884. package/dist/admin/src/content-manager/pages/ListConfiguration/components/SortDisplayedFields.d.ts +0 -6
  885. package/dist/admin/src/content-manager/pages/ListView/ListViewPage.d.ts +0 -3
  886. package/dist/admin/src/content-manager/pages/ListView/components/AutoCloneFailureModal.d.ts +0 -8
  887. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Actions.d.ts +0 -52
  888. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +0 -15
  889. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/PublishAction.d.ts +0 -31
  890. package/dist/admin/src/content-manager/pages/ListView/components/Filters.d.ts +0 -8
  891. package/dist/admin/src/content-manager/pages/ListView/components/InjectionZoneList.d.ts +0 -7
  892. package/dist/admin/src/content-manager/pages/ListView/components/TableActions.d.ts +0 -8
  893. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellContent.d.ts +0 -9
  894. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellValue.d.ts +0 -8
  895. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Components.d.ts +0 -12
  896. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Media.d.ts +0 -23
  897. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Relations.d.ts +0 -12
  898. package/dist/admin/src/content-manager/pages/ListView/components/ViewSettingsMenu.d.ts +0 -10
  899. package/dist/admin/src/content-manager/pages/NoContentTypePage.d.ts +0 -2
  900. package/dist/admin/src/content-manager/pages/NoPermissionsPage.d.ts +0 -2
  901. package/dist/admin/src/content-manager/router.d.ts +0 -5
  902. package/dist/admin/src/content-manager/services/api.d.ts +0 -3
  903. package/dist/admin/src/content-manager/services/components.d.ts +0 -6
  904. package/dist/admin/src/content-manager/services/contentTypes.d.ts +0 -18
  905. package/dist/admin/src/content-manager/services/documents.d.ts +0 -94
  906. package/dist/admin/src/content-manager/services/init.d.ts +0 -10
  907. package/dist/admin/src/content-manager/services/relations.d.ts +0 -49
  908. package/dist/admin/src/content-manager/services/uid.d.ts +0 -32
  909. package/dist/admin/src/content-manager/utils/api.d.ts +0 -19
  910. package/dist/admin/src/content-manager/utils/attributes.d.ts +0 -19
  911. package/dist/admin/src/content-manager/utils/relations.d.ts +0 -12
  912. package/dist/admin/src/content-manager/utils/translations.d.ts +0 -2
  913. package/dist/admin/src/content-manager/utils/validation.d.ts +0 -7
  914. package/dist/admin/src/core/apis/content-manager.d.ts +0 -126
  915. package/dist/admin/src/hooks/useInjectionZone.d.ts +0 -2
  916. package/dist/admin/src/pages/Settings/pages/PurchaseReviewWorkflows.d.ts +0 -2
  917. package/dist/admin/src/utils/getYupInnerErrors.d.ts +0 -7
  918. package/dist/admin/src/utils/hashAdminUserEmail.d.ts +0 -6
  919. package/dist/admin/sv-JVgQU2PS.mjs +0 -810
  920. package/dist/admin/sv-JVgQU2PS.mjs.map +0 -1
  921. package/dist/admin/sv-d0rqYiHZ.js +0 -830
  922. package/dist/admin/sv-d0rqYiHZ.js.map +0 -1
  923. package/dist/admin/th-er8qvbeL.mjs +0 -420
  924. package/dist/admin/th-er8qvbeL.mjs.map +0 -1
  925. package/dist/admin/th-mqExIzdv.js +0 -433
  926. package/dist/admin/th-mqExIzdv.js.map +0 -1
  927. package/dist/admin/tr-aYPucbUC.js +0 -788
  928. package/dist/admin/tr-aYPucbUC.js.map +0 -1
  929. package/dist/admin/tr-b2vrBJ49.mjs +0 -768
  930. package/dist/admin/tr-b2vrBJ49.mjs.map +0 -1
  931. package/dist/admin/transferTokens-P5z1yVh2.js +0 -65
  932. package/dist/admin/transferTokens-P5z1yVh2.js.map +0 -1
  933. package/dist/admin/transferTokens-PlBVZdw3.mjs +0 -59
  934. package/dist/admin/transferTokens-PlBVZdw3.mjs.map +0 -1
  935. package/dist/admin/uk-1c7KIaI6.js +0 -346
  936. package/dist/admin/uk-1c7KIaI6.js.map +0 -1
  937. package/dist/admin/uk-RfkbT49M.mjs +0 -333
  938. package/dist/admin/uk-RfkbT49M.mjs.map +0 -1
  939. package/dist/admin/useAdminRoles-BG7b996L.mjs +0 -28
  940. package/dist/admin/useAdminRoles-BG7b996L.mjs.map +0 -1
  941. package/dist/admin/useAdminRoles-THWXour6.js +0 -50
  942. package/dist/admin/useAdminRoles-THWXour6.js.map +0 -1
  943. package/dist/admin/useContentTypes-PEGh0Cg-.mjs +0 -51
  944. package/dist/admin/useContentTypes-PEGh0Cg-.mjs.map +0 -1
  945. package/dist/admin/useContentTypes-RoSvxizj.js +0 -73
  946. package/dist/admin/useContentTypes-RoSvxizj.js.map +0 -1
  947. package/dist/admin/useDebounce-OnUygPz6.mjs +0 -17
  948. package/dist/admin/useDebounce-OnUygPz6.mjs.map +0 -1
  949. package/dist/admin/useDebounce-tz5EMJbt.js +0 -39
  950. package/dist/admin/useDebounce-tz5EMJbt.js.map +0 -1
  951. package/dist/admin/useDocumentLayout-4trWL6Jz.mjs +0 -732
  952. package/dist/admin/useDocumentLayout-4trWL6Jz.mjs.map +0 -1
  953. package/dist/admin/useDocumentLayout-V_N5dUwQ.js +0 -764
  954. package/dist/admin/useDocumentLayout-V_N5dUwQ.js.map +0 -1
  955. package/dist/admin/useLicenseLimitNotification-9DqSZuyc.mjs +0 -80
  956. package/dist/admin/useLicenseLimitNotification-9DqSZuyc.mjs.map +0 -1
  957. package/dist/admin/useLicenseLimitNotification-SiWQ5LGo.js +0 -105
  958. package/dist/admin/useLicenseLimitNotification-SiWQ5LGo.js.map +0 -1
  959. package/dist/admin/useReviewWorkflows-0ty4mwQd.js +0 -29
  960. package/dist/admin/useReviewWorkflows-0ty4mwQd.js.map +0 -1
  961. package/dist/admin/useReviewWorkflows-HwyFyit7.mjs +0 -27
  962. package/dist/admin/useReviewWorkflows-HwyFyit7.mjs.map +0 -1
  963. package/dist/admin/useSyncRbac-LNOzRXJ5.mjs +0 -45
  964. package/dist/admin/useSyncRbac-LNOzRXJ5.mjs.map +0 -1
  965. package/dist/admin/useSyncRbac-vkWgDJTE.js +0 -67
  966. package/dist/admin/useSyncRbac-vkWgDJTE.js.map +0 -1
  967. package/dist/admin/useWebhooks-DmGNXCdi.js +0 -93
  968. package/dist/admin/useWebhooks-DmGNXCdi.js.map +0 -1
  969. package/dist/admin/useWebhooks-dOVyaYlw.mjs +0 -91
  970. package/dist/admin/useWebhooks-dOVyaYlw.mjs.map +0 -1
  971. package/dist/admin/validateWorkflow-99y3bkNx.js +0 -1077
  972. package/dist/admin/validateWorkflow-99y3bkNx.js.map +0 -1
  973. package/dist/admin/validateWorkflow-ubLwZqCK.mjs +0 -1033
  974. package/dist/admin/validateWorkflow-ubLwZqCK.mjs.map +0 -1
  975. package/dist/admin/validation-cpJKCQz1.mjs +0 -43
  976. package/dist/admin/validation-cpJKCQz1.mjs.map +0 -1
  977. package/dist/admin/validation-lIVymZ0n.js +0 -65
  978. package/dist/admin/validation-lIVymZ0n.js.map +0 -1
  979. package/dist/admin/vi-Rg9es0FD.js +0 -301
  980. package/dist/admin/vi-Rg9es0FD.js.map +0 -1
  981. package/dist/admin/vi-pyngavdo.mjs +0 -288
  982. package/dist/admin/vi-pyngavdo.mjs.map +0 -1
  983. package/dist/admin/zh-Hans-Gbpdme1Q.mjs +0 -939
  984. package/dist/admin/zh-Hans-Gbpdme1Q.mjs.map +0 -1
  985. package/dist/admin/zh-Hans-SgnidiuG.js +0 -960
  986. package/dist/admin/zh-Hans-SgnidiuG.js.map +0 -1
  987. package/dist/admin/zh-ONWhjzCj.js +0 -839
  988. package/dist/admin/zh-ONWhjzCj.js.map +0 -1
  989. package/dist/admin/zh-fMjW2qMl.mjs +0 -819
  990. package/dist/admin/zh-fMjW2qMl.mjs.map +0 -1
  991. package/dist/ee/admin/src/content-manager/pages/EditView/components/AssigneeSelect.d.ts +0 -2
  992. package/dist/ee/admin/src/content-manager/pages/EditView/components/ReviewWorkflowsPanel.d.ts +0 -3
  993. package/dist/ee/admin/src/content-manager/pages/EditView/components/StageSelect.d.ts +0 -1
  994. package/dist/ee/admin/src/content-manager/pages/EditView/components/constants.d.ts +0 -2
  995. package/dist/ee/admin/src/content-manager/pages/ListSettingsView/constants.d.ts +0 -7
  996. package/dist/ee/admin/src/content-manager/pages/ListView/components/AssigneeFilter.d.ts +0 -7
  997. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsAssigneeEE.d.ts +0 -7
  998. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsColumn.d.ts +0 -2
  999. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsStageEE.d.ts +0 -7
  1000. package/dist/ee/admin/src/content-manager/pages/ListView/components/StageFilter.d.ts +0 -8
  1001. package/dist/ee/admin/src/content-manager/pages/ListView/constants.d.ts +0 -69
  1002. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.d.ts +0 -1
  1003. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/EditPage.d.ts +0 -1
  1004. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/ListPage.d.ts +0 -2
  1005. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions.d.ts +0 -86
  1006. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage.d.ts +0 -2
  1007. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Layout.d.ts +0 -12
  1008. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal.d.ts +0 -15
  1009. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stage.d.ts +0 -10
  1010. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview.d.ts +0 -4
  1011. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages.d.ts +0 -7
  1012. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes.d.ts +0 -4
  1013. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/constants.d.ts +0 -20
  1014. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.d.ts +0 -15
  1015. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer.d.ts +0 -38
  1016. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.d.ts +0 -62
  1017. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/colors.d.ts +0 -8
  1018. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.d.ts +0 -5
  1019. package/dist/ee/admin/src/services/reviewWorkflows.d.ts +0 -39
  1020. package/dist/shared/contracts/review-workflows.d.ts +0 -83
  1021. package/dist/shared/contracts/review-workflows.d.ts.map +0 -1
  1022. /package/dist/admin/src/{content-manager/hooks → hooks}/usePrev.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"reducers-IQWvK_9L.mjs","sources":["../../admin/src/components/Context.tsx","../../admin/src/core/store/hooks.ts","../../admin/src/reducer.ts","../../admin/src/utils/getFetchClient.ts","../../admin/src/utils/baseQuery.ts","../../admin/src/services/api.ts","../../admin/src/services/auth.ts","../../admin/src/features/Auth.tsx","../../admin/src/features/Notifications.tsx","../../admin/src/utils/getPrefixedId.ts","../../admin/src/utils/normalizeAPIError.ts","../../admin/src/hooks/useAPIErrorHandler.ts","../../admin/src/components/PageHelpers.tsx","../../admin/src/content-manager/hooks/usePrev.ts","../../admin/src/utils/strings.ts","../../admin/src/hooks/useRBAC.ts","../../admin/src/utils/urls.ts","../../admin/src/services/admin.ts","../../admin/src/features/AppInfo.tsx","../../admin/src/features/Tracking.tsx","../../admin/src/features/Configuration.tsx","../../admin/src/features/StrapiApp.tsx","../../admin/src/components/GuidedTour/Provider.tsx","../../admin/src/components/LanguageProvider.tsx","../../admin/src/components/Theme.tsx","../../admin/src/constants.ts","../../admin/src/content-manager/constants/collections.ts","../../admin/src/content-manager/history/routes.tsx","../../admin/src/hooks/useQueryParams.ts","../../admin/src/utils/getYupInnerErrors.ts","../../admin/src/content-manager/services/api.ts","../../admin/src/content-manager/services/documents.ts","../../admin/src/content-manager/utils/api.ts","../../admin/src/utils/translatedErrors.ts","../../admin/src/content-manager/constants/attributes.ts","../../admin/src/content-manager/utils/validation.ts","../../admin/src/content-manager/services/init.ts","../../admin/src/content-manager/hooks/useContentTypeSchema.ts","../../admin/src/content-manager/hooks/useDocument.ts","../../admin/src/utils/objects.ts","../../admin/src/components/Form.tsx","../../admin/src/content-manager/utils/translations.ts","../../admin/src/content-manager/pages/EditView/components/DocumentStatus.tsx","../../admin/src/components/DragLayer.tsx","../../admin/src/content-manager/components/DragPreviews/CardDragPreview.tsx","../../admin/src/content-manager/components/DragPreviews/ComponentDragPreview.tsx","../../admin/src/hooks/useFocusInputField.ts","../../admin/src/content-manager/constants/dragAndDrop.ts","../../admin/src/content-manager/hooks/useKeyboardDragAndDrop.ts","../../admin/src/content-manager/hooks/useDragAndDrop.ts","../../admin/src/content-manager/services/relations.ts","../../admin/src/content-manager/utils/relations.ts","../../admin/src/content-manager/pages/EditView/components/FormInputs/ComponentContext.tsx","../../admin/src/content-manager/pages/EditView/components/FormInputs/Relations.tsx","../../admin/src/content-manager/components/DragPreviews/RelationDragPreview.tsx","../../admin/src/content-manager/components/LeftMenu.tsx","../../admin/src/content-manager/services/contentTypes.ts","../../admin/src/content-manager/hooks/useContentManagerInitData.ts","../../admin/src/content-manager/layout.tsx","../../admin/src/content-manager/modules/rbac.ts","../../admin/src/content-manager/modules/reducers.ts"],"sourcesContent":["import * as React from 'react';\n\nimport * as ContextSelector from 'use-context-selector';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = ContextSelector.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider = (props: ContextValueType & { children: React.ReactNode }) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n const useContext = <Selected,>(\n consumerName: string,\n selector: (value: ContextValueType) => Selected\n ): Selected =>\n ContextSelector.useContextSelector(Context, (ctx) => {\n if (ctx) return selector(ctx);\n // it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n });\n\n Provider.displayName = rootComponentName + 'Provider';\n\n return [Provider, useContext] as const;\n}\n\nexport { createContext };\n","import { createSelector, Selector } from '@reduxjs/toolkit';\nimport { useDispatch, useStore, TypedUseSelectorHook, useSelector } from 'react-redux';\n\nimport type { RootState, Store } from './configure';\n\ntype AppDispatch = Store['dispatch'];\n\nconst useTypedDispatch: () => AppDispatch = useDispatch;\nconst useTypedStore = useStore as () => Store;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nconst createTypedSelector = <TResult>(selector: Selector<RootState, TResult>) =>\n createSelector((state: RootState) => state, selector);\n\nexport { useTypedDispatch, useTypedStore, useTypedSelector, createTypedSelector };\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { PermissionMap } from './types/permissions';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\ntype ThemeName = 'light' | 'dark' | 'system';\n\ninterface AppState {\n language: {\n locale: string;\n localeNames: Record<string, string>;\n };\n permissions: Partial<PermissionMap>;\n theme: {\n currentTheme: ThemeName;\n availableThemes: string[];\n };\n}\n\nconst THEME_LOCAL_STORAGE_KEY = 'STRAPI_THEME';\nconst LANGUAGE_LOCAL_STORAGE_KEY = 'strapi-admin-language';\n\nconst adminSlice = createSlice({\n name: 'admin',\n initialState: () => {\n return {\n language: {\n locale: 'en',\n localeNames: { en: 'English' },\n },\n permissions: {},\n theme: {\n availableThemes: [],\n currentTheme: localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system',\n },\n } as AppState;\n },\n reducers: {\n setAppTheme(state, action: PayloadAction<ThemeName>) {\n state.theme.currentTheme = action.payload;\n window.localStorage.setItem(THEME_LOCAL_STORAGE_KEY, action.payload);\n },\n setAvailableThemes(state, action: PayloadAction<AppState['theme']['availableThemes']>) {\n state.theme.availableThemes = action.payload;\n },\n setLocale(state, action: PayloadAction<string>) {\n state.language.locale = action.payload;\n\n window.localStorage.setItem(LANGUAGE_LOCAL_STORAGE_KEY, action.payload);\n document.documentElement.setAttribute('lang', action.payload);\n },\n },\n});\n\nconst reducer = adminSlice.reducer;\n\nconst { setAppTheme, setAvailableThemes, setLocale } = adminSlice.actions;\n\nexport {\n reducer,\n setAppTheme,\n setAvailableThemes,\n setLocale,\n THEME_LOCAL_STORAGE_KEY,\n LANGUAGE_LOCAL_STORAGE_KEY,\n};\nexport type { AppState, ThemeName };\n","import axios, { AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios';\nimport qs from 'qs';\n\nimport { STORAGE_KEYS } from '../features/Auth';\n\nconst fetchClient = (): AxiosInstance => {\n const instance = axios.create({\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n paramsSerializer: (params) => {\n return qs.stringify(params, { encode: false });\n },\n });\n\n // Add a request interceptor to add authorization token to headers, rejects errors\n instance.interceptors.request.use(\n async (config) => {\n config.headers.Authorization = `Bearer ${getToken()}`;\n\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n // Add a response interceptor to return the response or handle the error\n instance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error?.response?.status === 401) {\n clearItem(STORAGE_KEYS.TOKEN);\n clearItem(STORAGE_KEYS.USER);\n\n window.location.reload();\n }\n\n throw error;\n }\n );\n\n return instance;\n};\n\nconst clearItem = (key: string) => {\n if (window.localStorage.getItem(key)) {\n return window.localStorage.removeItem(key);\n }\n\n if (window.sessionStorage.getItem(key)) {\n return window.sessionStorage.removeItem(key);\n }\n};\n\nconst getToken = () =>\n JSON.parse(\n localStorage.getItem(STORAGE_KEYS.TOKEN) ?? sessionStorage.getItem(STORAGE_KEYS.TOKEN) ?? '\"\"'\n );\n\nconst instance = fetchClient();\n\nconst addPrependingSlash = (url: string) => (url.charAt(0) !== '/' ? `/${url}` : url);\n\n// This regular expression matches a string that starts with either \"http://\" or \"https://\" or any other protocol name in lower case letters, followed by \"://\" and ends with anything else\nconst hasProtocol = (url: string) => new RegExp('^(?:[a-z+]+:)?//', 'i').test(url);\n\n// Check if the url has a prepending slash, if not add a slash\nconst normalizeUrl = (url: string) => (hasProtocol(url) ? url : addPrependingSlash(url));\n\ntype FetchClient = {\n get: <TData = any, R = AxiosResponse<TData>, TSend = any>(\n url: string,\n config?: AxiosRequestConfig<TSend>\n ) => Promise<R>;\n put: <TData = any, R = AxiosResponse<TData>, TSend = any>(\n url: string,\n data?: TSend,\n config?: AxiosRequestConfig<TSend>\n ) => Promise<R>;\n post: <TData = any, R = AxiosResponse<TData>, TSend = any>(\n url: string,\n data?: TSend,\n config?: AxiosRequestConfig<TSend>\n ) => Promise<R>;\n del: <TData = any, R = AxiosResponse<TData>, TSend = any>(\n url: string,\n config?: AxiosRequestConfig<TSend>\n ) => Promise<R>;\n};\n\n/**\n * @public\n * @param {AxiosRequestConfig} [defaultOptions={}] - Default options for Axios requests.\n * @returns {FetchClient} A fetch client object with methods for making HTTP requests.\n * @description This is an abstraction around the axios instance exposed by a function. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * @example\n * ```tsx\n * import { getFetchClient } from '@strapi/admin/admin';\n *\n * const myFunct = () => {\n * const { get } = getFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const { data } = await get(requestURL);\n *\n * return data;\n * };\n * ```\n */\nconst getFetchClient = (defaultOptions: AxiosRequestConfig = {}): FetchClient => {\n instance.defaults.baseURL = window.strapi.backendURL;\n return {\n get: (url, config) =>\n instance.get(normalizeUrl(url), {\n ...defaultOptions,\n ...config,\n }),\n put: (url, data, config) =>\n instance.put(normalizeUrl(url), data, { ...defaultOptions, ...config }),\n post: (url, data, config) =>\n instance.post(normalizeUrl(url), data, { ...defaultOptions, ...config }),\n del: (url, config) => instance.delete(normalizeUrl(url), { ...defaultOptions, ...config }),\n };\n};\n\nexport { instance, getFetchClient };\n","import { SerializedError } from '@reduxjs/toolkit';\nimport { BaseQueryFn } from '@reduxjs/toolkit/query';\nimport { isAxiosError, type AxiosRequestConfig } from 'axios';\n\nimport { getFetchClient } from '../utils/getFetchClient';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\n\n/* -------------------------------------------------------------------------------------------------\n * Axios data\n * -----------------------------------------------------------------------------------------------*/\nexport interface QueryArguments {\n url: string;\n method?: AxiosRequestConfig['method'];\n data?: AxiosRequestConfig['data'];\n config?: AxiosRequestConfig;\n}\n\nexport interface UnknownApiError {\n name: 'UnknownError';\n message: string;\n details?: unknown;\n status?: number;\n}\n\nexport type BaseQueryError = ApiError | UnknownApiError;\n\nconst axiosBaseQuery =\n (): BaseQueryFn<string | QueryArguments, unknown, BaseQueryError> =>\n async (query, { signal }) => {\n try {\n const { get, post, del, put } = getFetchClient();\n\n if (typeof query === 'string') {\n const result = await get(query, { signal });\n return { data: result.data };\n } else {\n const { url, method = 'GET', data, config } = query;\n\n if (method === 'POST') {\n const result = await post(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'DELETE') {\n const result = await del(url, { ...config, signal });\n return { data: result.data };\n }\n\n if (method === 'PUT') {\n const result = await put(url, data, { ...config, signal });\n return { data: result.data };\n }\n\n /**\n * Default is GET.\n */\n const result = await get(url, { ...config, signal });\n return { data: result.data };\n }\n } catch (err) {\n /**\n * Handle error of type AxiosError\n *\n * This format mimics what we want from an AxiosError which is what the\n * rest of the app works with, except this format is \"serializable\" since\n * it goes into the redux store.\n *\n * NOTE – passing the whole response will highlight this \"serializability\" issue.\n */\n\n if (isAxiosError(err)) {\n if (\n typeof err.response?.data === 'object' &&\n err.response?.data !== null &&\n 'error' in err.response?.data\n ) {\n /**\n * This will most likely be ApiError\n */\n return { data: undefined, error: err.response?.data.error };\n } else {\n return {\n data: undefined,\n error: {\n name: 'UnknownError',\n message: 'There was an unknown error response from the API',\n details: err.response?.data,\n status: err.response?.status,\n } as UnknownApiError,\n };\n }\n }\n\n const error = err as Error;\n return {\n data: undefined,\n error: {\n name: error.name,\n message: error.message,\n stack: error.stack,\n } satisfies SerializedError,\n };\n }\n };\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { axiosBaseQuery, isBaseQueryError };\n","import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { TokenRegenerate } from '../../../shared/contracts/transfer';\nimport { axiosBaseQuery, type UnknownApiError } from '../utils/baseQuery';\n\nconst adminApi = createApi({\n reducerPath: 'adminApi',\n baseQuery: axiosBaseQuery(),\n tagTypes: [\n 'ApiToken',\n 'LicenseLimits',\n 'Me',\n 'ProjectSettings',\n 'ProvidersOptions',\n 'ReviewWorkflow',\n 'ReviewWorkflowStage',\n 'Role',\n 'RolePermissions',\n 'TransferToken',\n 'User',\n 'Webhook',\n ],\n endpoints: (builder) => ({\n /**\n * This is here because it's shared between the transfer-token routes & the api-tokens.\n */\n regenerateToken: builder.mutation<TokenRegenerate.Response['data'], string>({\n query: (url) => ({\n method: 'POST',\n url: `${url}/regenerate`,\n }),\n transformResponse: (response: TokenRegenerate.Response) => response.data,\n }),\n }),\n});\n\nconst { useRegenerateTokenMutation } = adminApi;\n\nexport { adminApi, type UnknownApiError, useRegenerateTokenMutation };\n","import { ProvidersOptions } from '../../../shared/contracts/admin';\nimport {\n type RenewToken,\n type Login,\n type ResetPassword,\n type RegisterAdmin,\n type Register,\n type RegistrationInfo,\n ForgotPassword,\n} from '../../../shared/contracts/authentication';\nimport { Check } from '../../../shared/contracts/permissions';\nimport { GetProviders, IsSSOLocked } from '../../../shared/contracts/providers';\nimport { type GetOwnPermissions, type GetMe, type UpdateMe } from '../../../shared/contracts/users';\n\nimport { adminApi } from './api';\n\nconst authService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n /**\n * ME\n */\n getMe: builder.query<GetMe.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/users/me',\n }),\n transformResponse(res: GetMe.Response) {\n return res.data;\n },\n providesTags: (res) => (res ? ['Me', { type: 'User', id: res.id }] : ['Me']),\n }),\n getMyPermissions: builder.query<GetOwnPermissions.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/users/me/permissions',\n }),\n transformResponse(res: GetOwnPermissions.Response) {\n return res.data;\n },\n }),\n updateMe: builder.mutation<UpdateMe.Response['data'], UpdateMe.Request['body']>({\n query: (body) => ({\n method: 'PUT',\n url: '/admin/users/me',\n data: body,\n }),\n transformResponse(res: UpdateMe.Response) {\n return res.data;\n },\n invalidatesTags: ['Me'],\n }),\n /**\n * Permissions\n */\n checkPermissions: builder.query<Check.Response, Check.Request['body']>({\n query: (permissions) => ({\n method: 'POST',\n url: '/admin/permissions/check',\n data: permissions,\n }),\n }),\n /**\n * Auth methods\n */\n login: builder.mutation<Login.Response['data'], Login.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/login',\n data: body,\n }),\n transformResponse(res: Login.Response) {\n return res.data;\n },\n invalidatesTags: ['Me'],\n }),\n logout: builder.mutation<void, void>({\n query: () => ({\n method: 'POST',\n url: '/admin/logout',\n }),\n }),\n resetPassword: builder.mutation<ResetPassword.Response['data'], ResetPassword.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/reset-password',\n data: body,\n }),\n transformResponse(res: ResetPassword.Response) {\n return res.data;\n },\n }),\n renewToken: builder.mutation<RenewToken.Response['data'], RenewToken.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/renew-token',\n data: body,\n }),\n transformResponse(res: RenewToken.Response) {\n return res.data;\n },\n }),\n getRegistrationInfo: builder.query<\n RegistrationInfo.Response['data'],\n RegistrationInfo.Request['query']['registrationToken']\n >({\n query: (registrationToken) => ({\n url: '/admin/registration-info',\n method: 'GET',\n config: {\n params: {\n registrationToken,\n },\n },\n }),\n transformResponse(res: RegistrationInfo.Response) {\n return res.data;\n },\n }),\n registerAdmin: builder.mutation<RegisterAdmin.Response['data'], RegisterAdmin.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/register-admin',\n data: body,\n }),\n transformResponse(res: RegisterAdmin.Response) {\n return res.data;\n },\n }),\n registerUser: builder.mutation<Register.Response['data'], Register.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/register',\n data: body,\n }),\n transformResponse(res: Register.Response) {\n return res.data;\n },\n }),\n forgotPassword: builder.mutation<ForgotPassword.Response, ForgotPassword.Request['body']>({\n query: (body) => ({\n url: '/admin/forgot-password',\n method: 'POST',\n data: body,\n }),\n }),\n isSSOLocked: builder.query<IsSSOLocked.Response['data'], void>({\n query: () => ({\n url: '/admin/providers/isSSOLocked',\n method: 'GET',\n }),\n transformResponse(res: IsSSOLocked.Response) {\n return res.data;\n },\n }),\n getProviders: builder.query<GetProviders.Response, void>({\n query: () => ({\n url: '/admin/providers',\n method: 'GET',\n }),\n }),\n getProviderOptions: builder.query<ProvidersOptions.Response['data'], void>({\n query: () => ({\n url: '/admin/providers/options',\n method: 'GET',\n }),\n transformResponse(res: ProvidersOptions.Response) {\n return res.data;\n },\n providesTags: ['ProvidersOptions'],\n }),\n updateProviderOptions: builder.mutation<\n ProvidersOptions.Response['data'],\n ProvidersOptions.Request['body']\n >({\n query: (body) => ({\n url: '/admin/providers/options',\n method: 'PUT',\n data: body,\n }),\n transformResponse(res: ProvidersOptions.Response) {\n return res.data;\n },\n invalidatesTags: ['ProvidersOptions'],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useCheckPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useGetMeQuery,\n useLoginMutation,\n useRenewTokenMutation,\n useLogoutMutation,\n useUpdateMeMutation,\n useResetPasswordMutation,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n useGetRegistrationInfoQuery,\n useForgotPasswordMutation,\n useGetMyPermissionsQuery,\n useIsSSOLockedQuery,\n useGetProvidersQuery,\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} = authService;\n\nexport {\n useCheckPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useGetMeQuery,\n useLoginMutation,\n useRenewTokenMutation,\n useLogoutMutation,\n useUpdateMeMutation,\n useResetPasswordMutation,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n useGetRegistrationInfoQuery,\n useForgotPasswordMutation,\n useGetMyPermissionsQuery,\n useIsSSOLockedQuery,\n useGetProvidersQuery,\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n};\n","import * as React from 'react';\n\nimport { useNavigate } from 'react-router-dom';\n\nimport { Login } from '../../../shared/contracts/authentication';\nimport { createContext } from '../components/Context';\nimport { useTypedDispatch } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\nimport {\n useGetMeQuery,\n useGetMyPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useLoginMutation,\n useLogoutMutation,\n useRenewTokenMutation,\n} from '../services/auth';\n\nimport type {\n Permission as PermissionContract,\n SanitizedAdminUser,\n} from '../../../shared/contracts/shared';\n\ninterface Permission\n extends Pick<PermissionContract, 'action' | 'subject'>,\n Partial<Omit<PermissionContract, 'action' | 'subject'>> {}\n\ninterface AuthContextValue {\n login: (\n body: Login.Request['body'] & { rememberMe: boolean }\n ) => Promise<Awaited<ReturnType<ReturnType<typeof useLoginMutation>[0]>>>;\n logout: () => Promise<void>;\n checkUserHasPermissions: (\n permissions: Permission[],\n passedPermissions?: Permission[]\n ) => Promise<boolean>;\n permissions: Permission[];\n refetchPermissions: () => Promise<void>;\n setToken: (token: string | null) => void;\n token: string | null;\n user?: SanitizedAdminUser;\n}\n\nconst [Provider, useAuth] = createContext<AuthContextValue>('Auth');\n\ninterface AuthProviderProps {\n children: React.ReactNode;\n /**\n * @internal could be removed at any time.\n */\n _defaultPermissions?: Permission[];\n}\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\nconst AuthProvider = ({ children, _defaultPermissions = [] }: AuthProviderProps) => {\n const dispatch = useTypedDispatch();\n const [token, setToken] = React.useState<string | null>(() => {\n const token =\n localStorage.getItem(STORAGE_KEYS.TOKEN) ?? sessionStorage.getItem(STORAGE_KEYS.TOKEN);\n\n if (typeof token === 'string') {\n return JSON.parse(token);\n }\n\n return null;\n });\n\n const { data: user } = useGetMeQuery(undefined, {\n /**\n * If there's no token, we don't try to fetch\n * the user data because it will fail.\n */\n skip: !token,\n });\n const {\n data: userPermissions = _defaultPermissions,\n refetch,\n isUninitialized,\n } = useGetMyPermissionsQuery(undefined, {\n skip: !token,\n });\n\n const navigate = useNavigate();\n\n const [loginMutation] = useLoginMutation();\n const [renewTokenMutation] = useRenewTokenMutation();\n const [logoutMutation] = useLogoutMutation();\n\n const clearStorage = React.useCallback(() => {\n localStorage.removeItem(STORAGE_KEYS.TOKEN);\n localStorage.removeItem(STORAGE_KEYS.USER);\n sessionStorage.removeItem(STORAGE_KEYS.TOKEN);\n sessionStorage.removeItem(STORAGE_KEYS.USER);\n setToken(null);\n }, []);\n\n /**\n * Fetch data from storages on mount and store it in our state.\n * It's not normally stored in session storage unless the user\n * does click \"remember me\" when they login. We also need to renew the token.\n */\n React.useEffect(() => {\n const token =\n localStorage.getItem(STORAGE_KEYS.TOKEN) ?? sessionStorage.getItem(STORAGE_KEYS.TOKEN);\n\n if (token) {\n renewTokenMutation({ token: JSON.parse(token) }).then((res) => {\n if ('data' in res) {\n setToken(res.data.token);\n } else {\n clearStorage();\n navigate('/auth/login');\n }\n });\n }\n }, [renewTokenMutation, clearStorage, navigate]);\n\n React.useEffect(() => {\n if (user) {\n if (user.preferedLanguage) {\n dispatch(setLocale(user.preferedLanguage));\n }\n }\n }, [dispatch, user]);\n\n React.useEffect(() => {\n if (token) {\n storeToken(token, false);\n }\n }, [token]);\n\n React.useEffect(() => {\n /**\n * This will log a user out of all tabs if they log out in one tab.\n */\n const handleUserStorageChange = (event: StorageEvent) => {\n if (event.key === STORAGE_KEYS.USER && event.newValue === null) {\n clearStorage();\n navigate('/auth/login');\n }\n };\n\n window.addEventListener('storage', handleUserStorageChange);\n\n return () => {\n window.removeEventListener('storage', handleUserStorageChange);\n };\n });\n\n const login = React.useCallback<AuthContextValue['login']>(\n async ({ rememberMe, ...body }) => {\n const res = await loginMutation(body);\n\n /**\n * There will always be a `data` key in the response\n * because if something fails, it will throw an error.\n */\n if ('data' in res) {\n const { token } = res.data;\n\n storeToken(token, rememberMe);\n setToken(token);\n }\n\n return res;\n },\n [loginMutation]\n );\n\n const logout = React.useCallback(async () => {\n await logoutMutation();\n clearStorage();\n navigate('/auth/login');\n }, [clearStorage, logoutMutation, navigate]);\n\n const refetchPermissions = React.useCallback(async () => {\n if (!isUninitialized) {\n await refetch();\n }\n }, [isUninitialized, refetch]);\n\n const [checkPermissions] = useLazyCheckPermissionsQuery();\n const checkUserHasPermissions: AuthContextValue['checkUserHasPermissions'] = React.useCallback(\n async (permissions, passedPermissions) => {\n if (!permissions || !permissions.length) {\n return true;\n }\n\n const matchingPermissions = permissions.filter(\n (permission) =>\n (passedPermissions || userPermissions).findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const shouldCheckConditions = matchingPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n if (!shouldCheckConditions) {\n return matchingPermissions.length > 0;\n }\n\n const { data, error } = await checkPermissions({\n permissions: matchingPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n });\n\n if (error) {\n throw error;\n } else {\n return data?.data.every((v) => v === true) ?? false;\n }\n },\n [checkPermissions, userPermissions]\n );\n\n return (\n <Provider\n token={token}\n user={user}\n login={login}\n logout={logout}\n permissions={userPermissions}\n checkUserHasPermissions={checkUserHasPermissions}\n refetchPermissions={refetchPermissions}\n setToken={setToken}\n >\n {children}\n </Provider>\n );\n};\n\nconst storeToken = (token: string, persist?: boolean) => {\n if (!persist) {\n return window.sessionStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n }\n return window.localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n};\n\nexport { AuthProvider, useAuth, STORAGE_KEYS };\nexport type { AuthContextValue, Permission };\n","import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`${46 / 16}rem`}\n width={`${500 / 16}rem`}\n zIndex={10}\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n let variant: AlertVariant;\n let alertTitle: string;\n\n if (type === 'info') {\n variant = 'default';\n alertTitle = formatMessage({\n id: 'notification.default.title',\n defaultMessage: 'Information:',\n });\n } else if (type === 'danger') {\n variant = 'danger';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else if (type === 'warning') {\n variant = 'warning';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else {\n variant = 'success';\n alertTitle = formatMessage({\n id: 'notification.success.title',\n defaultMessage: 'Success:',\n });\n }\n\n if (title) {\n alertTitle = title;\n }\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={alertTitle}\n variant={variant}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n","/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n","import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { errors } from '@strapi/utils';\nimport type { AxiosError } from 'axios';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: AxiosError<{ error: ApiError }>,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n","import * as React from 'react';\n\nimport { AxiosError } from 'axios';\nimport { IntlFormatters, useIntl } from 'react-intl';\n\nimport { getPrefixedId } from '../utils/getPrefixedId';\nimport { NormalizeErrorOptions, normalizeAPIError } from '../utils/normalizeAPIError';\n\nimport type { errors } from '@strapi/utils';\n\ntype ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\ninterface UnknownApiError {\n /**\n * The name of the ApiError, is always a static value.\n */\n name: 'UnknownError';\n /**\n * The error message.\n */\n message: string;\n /**\n * The error details.\n */\n details?: unknown;\n /**\n * The HTTP status code of the error.\n */\n status?: number;\n}\n\n/**\n * The last item is the fallback error SerializedError which\n * typically comes from redux-toolkit itself.\n */\ninterface SerializedError {\n /**\n * The name of the error.\n */\n name?: string;\n /**\n * The error message that explains what went wrong.\n */\n message?: string;\n /**\n * The stack trace of the error.\n */\n stack?: string;\n /**\n * A specific error code associated with the error.\n */\n code?: string;\n}\n\n/**\n * These are the types or errors we return\n * from the redux-toolkit data-fetching setup.\n */\ntype BaseQueryError = ApiError | UnknownApiError | SerializedError;\n\ninterface YupFormattedError {\n /**\n * An array representing the path to the field where the validation error occurred.\n */\n path: string[];\n /**\n * The error message describing the validation failure.\n */\n message: string;\n /**\n * The name of the error, typically identifies the type of validation error that occurred.\n */\n name: string;\n}\n\n/**\n * @public\n * @description The purpose of this hook is to offer a unified way to handle errors thrown by API endpoints, regardless of the type of error (`ValidationError`, `ApplicationErrror` ...)\nthat has been thrown.\n * @example\n * ```tsx\n * import * as React from 'react';\n * import { useFetchClient, useAPIErrorHandler, useNotification } from '@strapi/admin/admin';\n *\n * const MyComponent = () => {\n * const { get } = useFetchClient();\n * const { formatAPIError } = useAPIErrorHandler(getTrad);\n * const { toggleNotification } = useNotification();\n * \n * const handleDeleteItem = async () => {\n * try {\n * return await get('/admin');\n * } catch (error) {\n * toggleNotification({\n * type: 'danger',\n * message: formatAPIError(error),\n * });\n * }\n * };\n * return <button onClick={handleDeleteItem}>Delete item</button>;\n * };\n * ```\n */\nexport function useAPIErrorHandler(\n intlMessagePrefixCallback?: FormatAPIErrorOptions['intlMessagePrefixCallback']\n) {\n const { formatMessage } = useIntl();\n\n /**\n * @description This method try to normalize the passed error\n * and then call formatAPIError to stringify the ResponseObject\n * into a string. If it fails it will call formatAxiosError and\n * return the error message.\n */\n const formatError = React.useCallback(\n (error: AxiosError<{ error: ApiError }>) => {\n // Try to normalize the passed error first. This will fail for e.g. network\n // errors which are thrown by Axios directly.\n try {\n const formattedErr = formatAPIError(error, { intlMessagePrefixCallback, formatMessage });\n\n if (!formattedErr) {\n return formatAxiosError(error, { intlMessagePrefixCallback, formatMessage });\n }\n\n return formattedErr;\n } catch (_) {\n throw new Error('formatAPIError: Unknown error:', error);\n }\n },\n [formatMessage, intlMessagePrefixCallback]\n );\n\n return {\n /**\n * @alpha\n * Convert ValidationErrors from the API into an object that can be used by forms.\n */\n _unstableFormatValidationErrors: React.useCallback(\n (error: Extract<BaseQueryError, { name: 'ValidationError' }>): Record<string, string> => {\n if (typeof error.details === 'object' && error.details !== null) {\n if ('errors' in error.details && Array.isArray(error.details.errors)) {\n const validationErrors = error.details.errors as YupFormattedError[];\n\n return validationErrors.reduce((acc, err) => {\n const { path, message } = err;\n\n return {\n ...acc,\n [path.join('.')]: message,\n };\n }, {});\n } else {\n const details = error.details as Record<string, string[]>;\n\n return Object.keys(details).reduce((acc, key) => {\n const messages = details[key];\n\n return {\n ...acc,\n [key]: messages.join(', '),\n };\n }, {});\n }\n } else {\n return {};\n }\n },\n []\n ),\n /**\n * @alpha\n * This handles the errors given from `redux-toolkit`'s axios based baseQuery function.\n */\n _unstableFormatAPIError: React.useCallback(\n (error: BaseQueryError) => {\n const err = {\n response: {\n data: {\n error,\n },\n },\n } as AxiosError<{ error: BaseQueryError }>;\n\n /**\n * There's a chance with SerializedErrors that the message is not set.\n * In that case we return a generic error message.\n */\n if (!error.message) {\n return 'Unknown error occured.';\n }\n\n // @ts-expect-error – UnknownApiError is in the same shape as ApiError, but we don't want to expose this to users yet.\n return formatError(err);\n },\n [formatError]\n ),\n formatAPIError: formatError,\n };\n}\n\nfunction formatAxiosError(\n error: AxiosError<unknown>,\n { intlMessagePrefixCallback, formatMessage }: FormatAPIErrorOptions\n) {\n const { code, message } = error;\n\n return formatMessage(\n {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n },\n {\n code,\n }\n );\n}\n\ntype FormatAPIErrorOptions = Partial<Pick<NormalizeErrorOptions, 'intlMessagePrefixCallback'>> &\n Pick<IntlFormatters, 'formatMessage'>;\n\n/**\n * @description This method stringifies the `ResponseObject` into\n * a string. If multiple errors are thrown by the API, which\n * happens e.g.in the case of a `ValidationError`, all errors\n * will bo concatenated into a single string.\n */\nfunction formatAPIError(\n error: AxiosError<{ error: ApiError }>,\n { formatMessage, intlMessagePrefixCallback }: FormatAPIErrorOptions\n) {\n if (!formatMessage) {\n throw new Error('The formatMessage callback is a mandatory argument.');\n }\n\n const normalizedError = normalizeAPIError(error, intlMessagePrefixCallback);\n\n if (!normalizedError) {\n return null;\n }\n\n if ('message' in normalizedError && normalizedError.message !== null) {\n return normalizedError.message;\n }\n\n // stringify multiple errors\n if ('errors' in normalizedError) {\n return normalizedError.errors\n .map(({ id, defaultMessage, values }) => formatMessage({ id, defaultMessage }, values))\n .join('\\n');\n }\n\n return formatMessage(normalizedError);\n}\n\nexport type { ApiError };\n","import * as React from 'react';\n\nimport {\n Box,\n EmptyStateLayout,\n type EmptyStateLayoutProps,\n Flex,\n Icon,\n Loader,\n Main,\n MainProps,\n} from '@strapi/design-system';\nimport { EmptyPermissions, ExclamationMarkCircle, EmptyDocuments } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useCheckPermissionsQuery } from '../services/auth';\n\n/* -------------------------------------------------------------------------------------------------\n * Main\n * -----------------------------------------------------------------------------------------------*/\ninterface PageMainProps extends MainProps {\n children: React.ReactNode;\n}\n\nconst PageMain = ({ children, ...restProps }: PageMainProps) => {\n return <Main {...restProps}>{children}</Main>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Loading\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingProps {\n /**\n * @default 'Loading content.'\n */\n children?: React.ReactNode;\n}\n\n/**\n * @public\n * @description A loading component that should be rendered as the page\n * whilst you load the content for the aforementioned page.\n */\nconst Loading = ({ children = 'Loading content.' }: LoadingProps) => {\n return (\n <PageMain height=\"100vh\" aria-busy={true}>\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Loader>{children}</Loader>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Error\n * -----------------------------------------------------------------------------------------------*/\ninterface ErrorProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description An error component that should be rendered as the page\n * when an error occurs.\n */\nconst Error = (props: ErrorProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<Icon as={ExclamationMarkCircle} width=\"10rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Woops! Something went wrong. Please, try again.',\n })}\n {...props}\n />\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoPermissions\n * -----------------------------------------------------------------------------------------------*/\ninterface NoPermissionsProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when the user does not have the permissions to access the content.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoPermissions = (props: NoPermissionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyPermissions width=\"10rem\" />}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-permissions',\n defaultMessage: \"You don't have the permissions to access that content\",\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoData\n * -----------------------------------------------------------------------------------------------*/\ninterface NoDataProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when there is no data available to display.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoData = (props: NoDataProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" width=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Protect\n * -----------------------------------------------------------------------------------------------*/\nexport interface ProtectProps {\n /**\n * The children to render if the user has the required permissions.\n * If providing a function, it will be called with an object containing\n * the permissions the user has based on the array you passed to the component.\n */\n children: React.ReactNode | ((args: { permissions: Permission[] }) => React.ReactNode);\n /**\n * The permissions the user needs to have to access the content.\n */\n permissions?: Array<Omit<Partial<Permission>, 'action'> & Pick<Permission, 'action'>>;\n}\n\n/**\n * @public\n * @description A wrapper component that should be used to protect a page. It will check the permissions\n * you pass to it and render the children if the user has the required permissions. If a user does not have ALL\n * the required permissions, it will redirect the user to the home page. Whilst these checks happen it will render\n * the loading component and should the check fail it will render the error component with a notification.\n */\nconst Protect = ({ permissions = [], children }: ProtectProps) => {\n const userPermissions = useAuth('Protect', (state) => state.permissions);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const matchingPermissions = userPermissions.filter(\n (permission) =>\n permissions.findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const shouldCheckConditions = matchingPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n const { isLoading, error, data } = useCheckPermissionsQuery(\n {\n permissions: matchingPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n },\n {\n skip: !shouldCheckConditions,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (isLoading) {\n return <Loading />;\n }\n\n if (error) {\n return <Error />;\n }\n\n const { data: permissionsData } = data || {};\n\n const canAccess =\n shouldCheckConditions && permissionsData\n ? !permissionsData.includes(false)\n : matchingPermissions.length > 0;\n\n if (!canAccess) {\n return <NoPermissions />;\n }\n\n return typeof children === 'function' ? children({ permissions: matchingPermissions }) : children;\n};\n\nconst Page = {\n Error,\n Loading,\n NoPermissions,\n Protect,\n NoData,\n Main: PageMain,\n};\n\nexport { Page };\nexport type { ErrorProps, LoadingProps, NoPermissionsProps, PageMainProps as MainProps };\n","import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n","const capitalise = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalise };\n","import { useEffect, useMemo, useState } from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { usePrev } from '../content-manager/hooks/usePrev';\nimport { useAuth, Permission } from '../features/Auth';\nimport { capitalise } from '../utils/strings';\n\ntype AllowedActions = Record<string, boolean>;\n\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> = {},\n passedPermissions?: Permission[]\n): { allowedActions: AllowedActions; isLoading: boolean; error?: unknown } => {\n const userPermissions = useAuth('useRBAC', (state) => state.permissions);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n const [data, setData] = useState<Record<string, boolean>>();\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = useMemo(\n () =>\n Object.keys(permissionsToCheck).reduce<Record<string, boolean>>(\n (acc, name) => ({\n ...acc,\n [name]: false,\n }),\n {}\n ),\n [permissionsToCheck]\n );\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(permissionsToCheck);\n useEffect(() => {\n if (!isEqual(permssionsChecked, permissionsToCheck)) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n const permissionEntries = Object.entries(permissionsToCheck);\n\n for (const [name, permissions] of permissionEntries) {\n checkUserHasPermissions(permissions, passedPermissions)\n .then((res) => {\n if (res) {\n setData((s) => ({\n ...s,\n [name]: res,\n }));\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }\n }, [checkUserHasPermissions, passedPermissions, permissionsToCheck, permssionsChecked]);\n\n const actions = {\n ...defaultAllowedActions,\n ...data,\n };\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries(actions).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return { allowedActions, isLoading: isLoading || userPermissions.length === 0, error };\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n","const prefixFileUrlWithBackendUrl = (fileURL?: string): string | undefined => {\n return !!fileURL && fileURL.startsWith('/') ? `${window.strapi.backendURL}${fileURL}` : fileURL;\n};\n\nexport { prefixFileUrlWithBackendUrl };\n","import {\n type TelemetryProperties,\n type Init,\n type Information,\n type GetProjectSettings,\n type UpdateProjectSettings,\n type Plugins,\n type GetLicenseLimitInformation,\n} from '../../../shared/contracts/admin';\nimport { prefixFileUrlWithBackendUrl } from '../utils/urls';\n\nimport { adminApi } from './api';\n\ninterface ConfigurationLogo {\n custom?: {\n name?: string;\n url?: string;\n };\n default: string;\n}\n\nconst admin = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n init: builder.query<Init.Response['data'], void>({\n query: () => ({\n url: '/admin/init',\n method: 'GET',\n }),\n transformResponse(res: Init.Response) {\n return res.data;\n },\n }),\n information: builder.query<Information.Response['data'], void>({\n query: () => ({\n url: '/admin/information',\n method: 'GET',\n }),\n transformResponse(res: Information.Response) {\n return res.data;\n },\n }),\n telemetryProperties: builder.query<TelemetryProperties.Response['data'], void>({\n query: () => ({\n url: '/admin/telemetry-properties',\n method: 'GET',\n config: {\n validateStatus: (status) => status < 500,\n },\n }),\n transformResponse(res: TelemetryProperties.Response) {\n return res.data;\n },\n }),\n projectSettings: builder.query<\n { authLogo?: ConfigurationLogo['custom']; menuLogo?: ConfigurationLogo['custom'] },\n void\n >({\n query: () => ({\n url: '/admin/project-settings',\n method: 'GET',\n }),\n providesTags: ['ProjectSettings'],\n transformResponse(data: GetProjectSettings.Response) {\n return {\n authLogo: data.authLogo\n ? {\n name: data.authLogo.name,\n url: prefixFileUrlWithBackendUrl(data.authLogo.url),\n }\n : undefined,\n menuLogo: data.menuLogo\n ? {\n name: data.menuLogo.name,\n url: prefixFileUrlWithBackendUrl(data.menuLogo.url),\n }\n : undefined,\n };\n },\n }),\n updateProjectSettings: builder.mutation<UpdateProjectSettings.Response, FormData>({\n query: (data) => ({\n url: '/admin/project-settings',\n method: 'POST',\n data,\n config: {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n },\n }),\n invalidatesTags: ['ProjectSettings'],\n }),\n getPlugins: builder.query<Plugins.Response, void>({\n query: () => ({\n url: '/admin/plugins',\n method: 'GET',\n }),\n }),\n getLicenseLimits: builder.query<GetLicenseLimitInformation.Response, void>({\n query: () => ({\n url: '/admin/license-limit-information',\n method: 'GET',\n }),\n providesTags: ['LicenseLimits'],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n} = admin;\n\nexport {\n useInitQuery,\n useTelemetryPropertiesQuery,\n useInformationQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n useGetPluginsQuery,\n useGetLicenseLimitsQuery,\n};\n\nexport type { ConfigurationLogo };\n","import { createContext } from '../components/Context';\n\ninterface AppInfoContextValue {\n autoReload?: boolean;\n communityEdition?: boolean;\n currentEnvironment?: string;\n dependencies?: Record<string, string>;\n latestStrapiReleaseTag?: string;\n nodeVersion?: string;\n projectId?: string | null;\n shouldUpdateStrapi?: boolean;\n strapiVersion?: string | null;\n useYarn?: boolean;\n userId?: string;\n}\n\nconst [AppInfoProvider, useAppInfo] = createContext<AppInfoContextValue>('AppInfo', {});\n\nexport { AppInfoProvider, useAppInfo };\n\nexport type { AppInfoContextValue };\n","import * as React from 'react';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { useInitQuery, useTelemetryPropertiesQuery } from '../services/admin';\n\nimport { useAppInfo } from './AppInfo';\nimport { useAuth } from './Auth';\n\nexport interface TelemetryProperties {\n useTypescriptOnServer?: boolean;\n useTypescriptOnAdmin?: boolean;\n isHostedOnStrapiCloud?: boolean;\n numberOfAllContentTypes?: number;\n numberOfComponents?: number;\n numberOfDynamicZones?: number;\n}\n\nexport interface TrackingContextValue {\n uuid?: string | boolean;\n telemetryProperties?: TelemetryProperties;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nconst TrackingContext = React.createContext<TrackingContextValue>({\n uuid: false,\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface TrackingProviderProps {\n children: React.ReactNode;\n}\n\nconst TrackingProvider = ({ children }: TrackingProviderProps) => {\n const token = useAuth('App', (state) => state.token);\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const { data } = useTelemetryPropertiesQuery(undefined, {\n skip: !initData?.uuid || !token,\n });\n\n React.useEffect(() => {\n if (uuid && data) {\n const event = 'didInitializeAdministration';\n try {\n fetch('https://analytics.strapi.io/api/v2/track', {\n method: 'POST',\n body: JSON.stringify({\n // This event is anonymous\n event,\n userId: '',\n eventPropeties: {},\n groupProperties: { ...data, projectId: uuid },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch {\n // silence is golden\n }\n }\n }, [data, uuid]);\n\n const value = React.useMemo(\n () => ({\n uuid,\n telemetryProperties: data,\n }),\n [uuid, data]\n );\n\n return <TrackingContext.Provider value={value}>{children}</TrackingContext.Provider>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * We can group these events together because none have properties so there's no benefit\n * to having them as separate types.\n *\n * Meanwhile those with properties have different property shapes corresponding to the specific\n * event so understanding which properties go with which event is very helpful.\n */\ninterface EventWithoutProperties {\n name:\n | 'changeComponentsOrder'\n | 'didAccessAuthenticatedAdministration'\n | 'didAddComponentToDynamicZone'\n | 'didBulkDeleteEntries'\n | 'didChangeDisplayedFields'\n | 'didCheckDraftRelations'\n | 'didClickGuidedTourHomepageApiTokens'\n | 'didClickGuidedTourHomepageContentManager'\n | 'didClickGuidedTourHomepageContentTypeBuilder'\n | 'didClickGuidedTourStep1CollectionType'\n | 'didClickGuidedTourStep2ContentManager'\n | 'didClickGuidedTourStep3ApiTokens'\n | 'didClickonBlogSection'\n | 'didClickonCodeExampleSection'\n | 'didClickonReadTheDocumentationSection'\n | 'didClickOnTryStrapiCloudSection'\n | 'didClickonTutorialSection'\n | 'didCreateGuidedTourCollectionType'\n | 'didCreateGuidedTourEntry'\n | 'didCreateNewRole'\n | 'didCreateRole'\n | 'didDeleteToken'\n | 'didDuplicateRole'\n | 'didEditEditSettings'\n | 'didEditEmailTemplates'\n | 'didEditFieldNameOnContentType'\n | 'didEditListSettings'\n | 'didEditMediaLibraryConfig'\n | 'didEditNameOfContentType'\n | 'didGenerateGuidedTourApiTokens'\n | 'didGoToMarketplace'\n | 'didLaunchGuidedtour'\n | 'didMissMarketplacePlugin'\n | 'didNotCreateFirstAdmin'\n | 'didNotSaveComponent'\n | 'didPluginLearnMore'\n | 'didPublishEntry'\n | 'didUnpublishEntry'\n | 'didSaveComponent'\n | 'didSaveContentType'\n | 'didSearch'\n | 'didSkipGuidedtour'\n | 'didSubmitPlugin'\n | 'didSubmitProvider'\n | 'didUpdateConditions'\n | 'didSelectAllMediaLibraryElements'\n | 'didSelectContentTypeFieldSettings'\n | 'didSelectContentTypeSettings'\n | 'didEditAuthenticationProvider'\n | 'hasClickedCTBAddFieldBanner'\n | 'removeComponentFromDynamicZone'\n | 'willAddMoreFieldToContentType'\n | 'willBulkDeleteEntries'\n | 'willBulkUnpublishEntries'\n | 'willChangeNumberOfEntriesPerPage'\n | 'willCheckDraftRelations'\n | 'willCreateComponent'\n | 'willCreateComponentFromAttributesModal'\n | 'willCreateContentType'\n | 'willCreateFirstAdmin'\n | 'willCreateNewRole'\n | 'willCreateRole'\n | 'willCreateSingleType'\n | 'willCreateStage'\n | 'willCreateWorkflow'\n | 'willDeleteEntryFromList'\n | 'willDeleteFieldOfContentType'\n | 'willDuplicateRole'\n | 'willEditEditLayout'\n | 'willEditEmailTemplates'\n | 'willEditEntryFromButton'\n | 'willEditEntryFromList'\n | 'willEditFieldOfContentType'\n | 'willEditMediaLibraryConfig'\n | 'willEditNameOfContentType'\n | 'willEditNameOfSingleType'\n | 'willEditAuthenticationProvider'\n | 'willEditFieldNameOnContentType'\n | 'willEditStage'\n | 'willFilterEntries'\n | 'willInstallPlugin'\n | 'willPublishEntry'\n | 'willUnpublishEntry'\n | 'willSaveComponent'\n | 'willSaveContentType'\n | 'willSaveContentTypeLayout'\n | 'didEditFieldNameOnContentType'\n | 'didCreateRelease';\n properties?: never;\n}\n\ninterface DidFilterMediaLibraryElementsEvent {\n name: 'didFilterMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n filter: string;\n };\n}\n\ninterface DidSortMediaLibraryElementsEvent {\n name: 'didSortMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n sort: string;\n };\n}\n\ninterface DidCropFileEvent {\n name: 'didCropFile';\n properties: MediaEvents['properties'] & {\n duplicatedFile: null | boolean;\n };\n}\n\ninterface DidSelectFile {\n name: 'didSelectFile';\n properties: MediaEvents['properties'] & {\n source: 'url' | 'computer';\n };\n}\n\ninterface DidEditMediaLibraryElementsEvent {\n name: 'didEditMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n type: string;\n changeLocation: string;\n };\n}\n\ninterface MediaEvents {\n name:\n | 'didSearchMediaLibraryElements'\n | 'didReplaceMedia'\n | 'didAddMediaLibraryFolders'\n | 'willAddMediaLibraryAssets';\n properties: {\n location: string;\n };\n}\n\ninterface DidSelectContentTypeFieldTypeEvent {\n name: 'didSelectContentTypeFieldType';\n properties: {\n type?: string;\n };\n}\n\ninterface DidChangeModeEvent {\n name: 'didChangeMode';\n properties: {\n newMode: string;\n };\n}\ninterface DidSubmitWithErrorsFirstAdminEvent {\n name: 'didSubmitWithErrorsFirstAdmin';\n properties: {\n count: string;\n };\n}\n\ninterface WillNavigateEvent {\n name: 'willNavigate';\n properties: {\n from: string;\n to: string;\n };\n}\n\ninterface DidAccessTokenListEvent {\n name: 'didAccessTokenList';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n number: number;\n };\n}\ninterface LogoEvent {\n name: 'didChangeLogo' | 'didClickResetLogo';\n properties: {\n logo: 'menu' | 'auth';\n };\n}\n\ninterface TokenEvents {\n name:\n | 'didCopyTokenKey'\n | 'didAddTokenFromList'\n | 'didEditTokenFromList'\n | 'willAccessTokenList'\n | 'willAddTokenFromList'\n | 'willCreateToken'\n | 'willDeleteToken'\n | 'willEditToken'\n | 'willEditTokenFromList';\n properties: {\n tokenType: 'api-token' | 'transfer-token';\n };\n}\n\ninterface WillModifyTokenEvent {\n name: 'didCreateToken' | 'didEditToken';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n type: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;\n };\n}\n\ninterface DeleteEntryEvents {\n name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface CreateEntryEvents {\n name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface UpdateEntryEvents {\n name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface DidFilterEntriesEvent {\n name: 'didFilterEntries';\n properties: {\n useRelation: boolean;\n };\n}\n\ninterface DidPublishRelease {\n name: 'didPublishRelease';\n properties: {\n totalEntries: number;\n totalPublishedEntries: number;\n totalUnpublishedEntries: number;\n };\n}\n\ntype EventsWithProperties =\n | CreateEntryEvents\n | DidAccessTokenListEvent\n | DidChangeModeEvent\n | DidCropFileEvent\n | DeleteEntryEvents\n | DidEditMediaLibraryElementsEvent\n | DidFilterMediaLibraryElementsEvent\n | DidFilterEntriesEvent\n | DidSelectContentTypeFieldTypeEvent\n | DidSelectFile\n | DidSortMediaLibraryElementsEvent\n | DidSubmitWithErrorsFirstAdminEvent\n | LogoEvent\n | TokenEvents\n | UpdateEntryEvents\n | WillModifyTokenEvent\n | WillNavigateEvent\n | DidPublishRelease;\n\nexport type TrackingEvent = EventWithoutProperties | EventsWithProperties;\nexport interface UseTrackingReturn {\n /**\n * This type helps show all the available event names before you start typing,\n * however autocomplete isn't great.\n */\n trackUsage<TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n trackUsage<TEvent extends Extract<TrackingEvent, { properties?: never }>>(\n event: TEvent['name'],\n properties?: never\n ): Promise<null | AxiosResponse<string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackUsage<TEvent extends Extract<TrackingEvent, { properties: object }>>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n}\n\n/**\n * @description Used to send amplitude events to the Strapi Tracking hub.\n *\n * @example\n * ```tsx\n * import { useTracking } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { trackUsage } = useTracking();\n *\n * const handleClick = () => {\n * trackUsage('my-event', { myProperty: 'myValue' });\n * }\n *\n * return <button onClick={handleClick}>Send Event</button>\n * }\n * ```\n */\nconst useTracking = (): UseTrackingReturn => {\n const { uuid, telemetryProperties } = React.useContext(TrackingContext);\n const userId = useAppInfo('useTracking', (state) => state.userId);\n const trackUsage = React.useCallback(\n async <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n try {\n if (uuid && !window.strapi.telemetryDisabled) {\n const res = await axios.post<string>(\n 'https://analytics.strapi.io/api/v2/track',\n {\n event,\n userId,\n eventProperties: { ...properties },\n userProperties: {},\n groupProperties: {\n ...telemetryProperties,\n projectId: uuid,\n projectType: window.strapi.projectType,\n },\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }\n );\n\n return res;\n }\n } catch (err) {\n // Silence is golden\n }\n\n return null;\n },\n [telemetryProperties, userId, uuid]\n );\n\n return { trackUsage };\n};\n\nexport { TrackingProvider, useTracking };\n","import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport { useIntl } from 'react-intl';\n\nimport { UpdateProjectSettings } from '../../../shared/contracts/admin';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../hooks/useRBAC';\nimport {\n ConfigurationLogo,\n useInitQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n} from '../services/admin';\n\nimport { useAuth } from './Auth';\nimport { useNotification } from './Notifications';\nimport { useTracking } from './Tracking';\n\nimport type { StrapiApp } from '../StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UpdateProjectSettingsBody {\n authLogo:\n | ((UpdateProjectSettings.Request['body']['authLogo'] | ConfigurationLogo['custom']) & {\n rawFile?: File;\n })\n | null;\n menuLogo:\n | ((UpdateProjectSettings.Request['body']['menuLogo'] | ConfigurationLogo['custom']) & {\n rawFile?: File;\n })\n | null;\n}\n\ninterface ConfigurationContextValue {\n logos: {\n auth: ConfigurationLogo;\n menu: ConfigurationLogo;\n };\n showTutorials: boolean;\n showReleaseNotification: boolean;\n updateProjectSettings: (body: UpdateProjectSettingsBody) => Promise<void>;\n}\n\nconst [ConfigurationContextProvider, useConfiguration] =\n createContext<ConfigurationContextValue>('ConfigurationContext');\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationProviderProps {\n children: React.ReactNode;\n defaultAuthLogo: StrapiApp['configurations']['authLogo'];\n defaultMenuLogo: StrapiApp['configurations']['menuLogo'];\n showReleaseNotification?: boolean;\n showTutorials?: boolean;\n}\n\nconst ConfigurationProvider = ({\n children,\n defaultAuthLogo,\n defaultMenuLogo,\n showReleaseNotification = false,\n showTutorials = false,\n}: ConfigurationProviderProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['project-settings']\n );\n const token = useAuth('ConfigurationProvider', (state) => state.token);\n const {\n allowedActions: { canRead },\n } = useRBAC(permissions);\n\n const {\n data: { authLogo: customAuthLogo, menuLogo: customMenuLogo } = {},\n error,\n isLoading,\n } = useInitQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'app.containers.App.notification.error.init' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n const { data, isSuccess } = useProjectSettingsQuery(undefined, {\n skip: !token || !canRead,\n });\n\n const [updateProjectSettingsMutation] = useUpdateProjectSettingsMutation();\n\n const updateProjectSettings = React.useCallback(\n async (body: UpdateProjectSettingsBody) => {\n const formData = new FormData();\n\n /**\n * We either only send files or we send null values.\n * Null removes the logo. If you don't want to effect\n * an existing logo, don't send anything.\n */\n Object.entries(body).forEach(([key, value]) => {\n if (value?.rawFile) {\n formData.append(key, value.rawFile);\n } else if (value === null) {\n formData.append(key, JSON.stringify(value));\n }\n });\n\n const res = await updateProjectSettingsMutation(formData);\n\n if ('data' in res) {\n const updatedMenuLogo = !!res.data.menuLogo && !!body.menuLogo?.rawFile;\n const updatedAuthLogo = !!res.data.authLogo && !!body.authLogo?.rawFile;\n\n if (updatedMenuLogo) {\n trackUsage('didChangeLogo', {\n logo: 'menu',\n });\n }\n\n if (updatedAuthLogo) {\n trackUsage('didChangeLogo', {\n logo: 'auth',\n });\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'app', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n },\n [formatAPIError, formatMessage, toggleNotification, trackUsage, updateProjectSettingsMutation]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ConfigurationContextProvider\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n logos={{\n menu: {\n custom: isSuccess\n ? data?.menuLogo\n : {\n url: customMenuLogo ?? '',\n },\n default: defaultMenuLogo,\n },\n auth: {\n custom: isSuccess\n ? data?.authLogo\n : {\n url: customAuthLogo ?? '',\n },\n default: defaultAuthLogo,\n },\n }}\n updateProjectSettings={updateProjectSettings}\n >\n {children}\n </ConfigurationContextProvider>\n );\n};\n\nexport {\n ConfigurationContextProvider as _internalConfigurationContextProvider,\n ConfigurationProvider,\n useConfiguration,\n};\nexport type {\n ConfigurationProviderProps,\n ConfigurationContextValue,\n ConfigurationLogo,\n UpdateProjectSettingsBody,\n};\n","import { createContext } from '../components/Context';\n\nimport type { StrapiApp } from '../StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * StrapiApp\n * -----------------------------------------------------------------------------------------------*/\ninterface StrapiAppContextValue\n extends Pick<\n StrapiApp,\n | 'customFields'\n | 'menu'\n | 'getAdminInjectedComponents'\n | 'getPlugin'\n | 'plugins'\n | 'runHookParallel'\n | 'runHookSeries'\n | 'settings'\n > {\n components: StrapiApp['library']['components'];\n fields: StrapiApp['library']['fields'];\n runHookWaterfall: <TData>(\n name: Parameters<StrapiApp['runHookWaterfall']>[0],\n initialValue: TData\n ) => TData;\n}\n\nconst [StrapiAppProvider, useStrapiApp] = createContext<StrapiAppContextValue>('StrapiApp');\n\nexport { StrapiAppProvider, useStrapiApp };\nexport type { StrapiAppContextValue };\n","import * as React from 'react';\n\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nconst GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';\nconst GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';\nconst GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';\n\nconst GUIDED_TOUR_KEYS = {\n GUIDED_TOUR_COMPLETED_STEPS,\n GUIDED_TOUR_CURRENT_STEP,\n GUIDED_TOUR_SKIPPED,\n} as const;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\nimport { createContext } from '../Context';\n\ntype SectionKey = keyof GuidedTourContextValue['guidedTourState'];\ntype StepKey = keyof GuidedTourContextValue['guidedTourState'][SectionKey];\ntype Step = `${SectionKey}.${StepKey}`;\ninterface GuidedTourContextValue {\n currentStep: Step | null;\n guidedTourState: {\n contentTypeBuilder: {\n create: boolean;\n success: boolean;\n };\n contentManager: {\n create: boolean;\n success: boolean;\n };\n apiTokens: {\n create: boolean;\n success: boolean;\n };\n transferTokens: {\n create: boolean;\n success: boolean;\n };\n };\n isGuidedTourVisible: boolean;\n isSkipped: boolean;\n setCurrentStep: (step: Step | null) => void | null;\n setGuidedTourVisibility: (isVisible: boolean) => void;\n setSkipped: (isSkipped: boolean) => void;\n setStepState: (step: Step, state: boolean) => void;\n startSection: (section: SectionKey) => void;\n}\n\nconst [GuidedTourProviderImpl, useGuidedTour] = createContext<GuidedTourContextValue>('GuidedTour');\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [SectionKey, StepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: Step, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: SectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [StepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderImpl\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n isGuidedTourVisible={isGuidedTourVisible}\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderImpl>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n transferTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: Step | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: Step;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [SectionKey, StepKey];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]'\n );\n const currentStepLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null'\n );\n const skippedLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'false'\n );\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [SectionKey, StepKey];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as Step);\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: Step) => {\n const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n window.localStorage.setItem(\n GUIDED_TOUR_COMPLETED_STEPS,\n JSON.stringify([...currentSteps, completedStep])\n );\n};\n\nexport { GuidedTourProvider, useGuidedTour, GuidedTourContextValue, GUIDED_TOUR_KEYS };\n","import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n","import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n","import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './StrapiApp';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'lockIcon'> {\n lockIcon?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n // If the Enterprise feature is not enabled and if the config doesn't disable it, we promote the Enterprise feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso',\n lockIcon: true,\n },\n ]\n : []),\n\n ...(!window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/purchase-review-workflows',\n id: 'review-workflows',\n lockIcon: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs',\n lockIcon: true,\n },\n ]\n : []),\n ],\n});\n","const SINGLE_TYPES = 'single-types';\nconst COLLECTION_TYPES = 'collection-types';\n\nexport { SINGLE_TYPES, COLLECTION_TYPES };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { useLocation, type RouteObject, matchRoutes } from 'react-router-dom';\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: RouteObject[] = [\n {\n path: ':collectionType/:slug/:id/history',\n lazy: async () => {\n const { ProtectedHistoryPage } = await import('./pages/History');\n\n return {\n Component: ProtectedHistoryPage,\n };\n },\n },\n {\n path: ':collectionType/:slug/history',\n lazy: async () => {\n const { ProtectedHistoryPage } = await import('./pages/History');\n\n return {\n Component: ProtectedHistoryPage,\n };\n },\n },\n];\n\n/**\n * Used to determine if we're on a history route from the admin and the content manager,\n * so that we can hide the left menus on all history routes\n */\nfunction useIsHistoryRoute() {\n const location = useLocation();\n const historyRoutes = routes.map((route) => ({ path: `content-manager/${route.path}` }));\n const matches = matchRoutes(historyRoutes, location);\n\n return Boolean(matches);\n}\n\nexport { routes, useIsHistoryRoute };\n","import { useCallback, useMemo } from 'react';\n\nimport { parse, stringify } from 'qs';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nconst useQueryParams = <TQuery extends object>(initialParams?: TQuery) => {\n const { search } = useLocation();\n const navigate = useNavigate();\n\n const query = useMemo(() => {\n // TODO: investigate why sometimes we're getting the search with a leading `?` and sometimes not.\n const searchQuery = search.startsWith('?') ? search.slice(1) : search;\n if (!search && initialParams) {\n return initialParams;\n }\n\n return { ...initialParams, ...parse(searchQuery) } as TQuery;\n }, [search, initialParams]);\n\n const setQuery = useCallback(\n (nextParams: TQuery, method: 'push' | 'remove' = 'push', replace = false) => {\n let nextQuery = { ...query };\n\n if (method === 'remove') {\n Object.keys(nextParams).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(nextQuery, key)) {\n // @ts-expect-error – this is fine, if you want to fix it, please do.\n delete nextQuery[key];\n }\n });\n } else {\n nextQuery = { ...query, ...nextParams };\n }\n\n navigate({ search: stringify(nextQuery, { encode: false }) }, { replace });\n },\n [navigate, query]\n );\n\n return [{ query, rawQuery: search }, setQuery] as const;\n};\n\nexport { useQueryParams };\n","import type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { ValidationError } from 'yup';\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst extractValuesFromYupError = (\n errorType?: string | undefined,\n errorParams?: Record<string, any> | undefined\n) => {\n if (!errorType || !errorParams) {\n return {};\n }\n\n return {\n [errorType]: errorParams[errorType],\n };\n};\n\nconst getYupInnerErrors = (error: ValidationError) =>\n (error?.inner || []).reduce<Record<string, TranslationMessage>>((acc, currentError) => {\n if (currentError.path) {\n acc[currentError.path.split('[').join('.').split(']').join('')] = {\n id: currentError.message,\n defaultMessage: currentError.message,\n values: extractValuesFromYupError(currentError?.type, currentError?.params),\n };\n }\n\n return acc;\n }, {});\n\nexport { getYupInnerErrors };\n","import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { axiosBaseQuery, type UnknownApiError } from '../../utils/baseQuery';\n\nconst contentManagerApi = createApi({\n reducerPath: 'contentManagerApi',\n baseQuery: axiosBaseQuery(),\n tagTypes: [\n 'ComponentConfiguration',\n 'ContentTypesConfiguration',\n 'ContentTypeSettings',\n 'Document',\n 'InitialData',\n 'HistoryVersion',\n 'Relations',\n ],\n endpoints: () => ({}),\n});\n\nexport { contentManagerApi, type UnknownApiError };\n","/**\n * Related to fetching the actual content of a collection type or single type.\n */\n\nimport { SINGLE_TYPES } from '../constants/collections';\n\nimport { contentManagerApi } from './api';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nconst documentApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n autoCloneDocument: builder.mutation<\n Contracts.CollectionTypes.Clone.Response,\n Contracts.CollectionTypes.Clone.Params & { query?: string }\n >({\n query: ({ model, sourceId, query }) => ({\n url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n method: 'POST',\n config: {\n params: query,\n },\n }),\n invalidatesTags: (_result, _error, { model }) => [{ type: 'Document', id: `${model}_LIST` }],\n }),\n cloneDocument: builder.mutation<\n Contracts.CollectionTypes.Clone.Response,\n Contracts.CollectionTypes.Clone.Params & {\n data: Contracts.CollectionTypes.Clone.Request['body'];\n params?: Contracts.CollectionTypes.Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, data, params }) => ({\n url: `/content-manager/collection-types/${model}/clone/${sourceId}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { model }) => [{ type: 'Document', id: `${model}_LIST` }],\n }),\n /**\n * Creates a new collection-type document. This should ONLY be used for collection-types.\n * single-types should always be using `updateDocument` since they always exist.\n */\n createDocument: builder.mutation<\n Contracts.CollectionTypes.Create.Response,\n Contracts.CollectionTypes.Create.Params & {\n data: Contracts.CollectionTypes.Create.Request['body'];\n params?: Contracts.CollectionTypes.Create.Request['query'];\n }\n >({\n query: ({ model, data, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n ],\n }),\n deleteDocument: builder.mutation<\n Contracts.CollectionTypes.Delete.Response,\n Pick<Contracts.CollectionTypes.Delete.Params, 'model'> &\n Pick<Partial<Contracts.CollectionTypes.Delete.Params>, 'documentId'> & {\n collectionType: string;\n params?: Contracts.CollectionTypes.Find.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n collectionType !== SINGLE_TYPES && documentId ? `/${documentId}` : ''\n }`,\n method: 'DELETE',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model }) => [\n { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n ],\n }),\n deleteManyDocuments: builder.mutation<\n Contracts.CollectionTypes.BulkDelete.Response,\n Contracts.CollectionTypes.BulkDelete.Params &\n Contracts.CollectionTypes.BulkDelete.Request['body']\n >({\n query: ({ model, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkDelete`,\n method: 'POST',\n data: body,\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) =>\n documentIds.map((id) => ({ type: 'Document', id: `${model}_${id}` })),\n }),\n discardDocument: builder.mutation<\n Contracts.CollectionTypes.Discard.Response,\n Pick<Contracts.CollectionTypes.Discard.Params, 'model'> &\n Partial<Pick<Contracts.CollectionTypes.Discard.Params, 'documentId'>> & {\n collectionType: string;\n params?: Contracts.CollectionTypes.Find.Request['query'] & {\n [key: string]: any;\n };\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/discard`\n : `/content-manager/${collectionType}/${model}/actions/discard`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n ];\n },\n }),\n /**\n * Gets all documents of a collection type or single type.\n * By passing different params you can get different results e.g. only published documents or 'es' documents.\n */\n getAllDocuments: builder.query<\n Contracts.CollectionTypes.Find.Response,\n Contracts.CollectionTypes.Find.Params & {\n params?: Contracts.CollectionTypes.Find.Request['query'] & {\n [key: string]: any;\n };\n }\n >({\n query: ({ model, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n providesTags: (result, _error, arg) => {\n return [\n { type: 'Document', id: `${arg.model}_LIST` },\n ...(result?.results.map(({ documentId }) => ({\n type: 'Document' as const,\n id: `${arg.model}_${documentId}`,\n })) ?? []),\n ];\n },\n }),\n getDraftRelationCount: builder.query<\n Contracts.CollectionTypes.CountDraftRelations.Response,\n {\n collectionType: string;\n model: string;\n /**\n * You don't pass the documentId if the document is a single-type\n */\n documentId?: string;\n params?: Contracts.CollectionTypes.CountDraftRelations.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/countDraftRelations`\n : `/content-manager/${collectionType}/${model}/actions/countDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n }),\n getDocument: builder.query<\n Contracts.CollectionTypes.FindOne.Response,\n Pick<Contracts.CollectionTypes.FindOne.Params, 'model'> &\n Partial<Pick<Contracts.CollectionTypes.FindOne.Params, 'documentId'>> & {\n collectionType: string;\n params?: Contracts.CollectionTypes.FindOne.Request['query'];\n }\n >({\n // @ts-expect-error – TODO: fix ts error where data unknown doesn't work with response via an assertion?\n queryFn: async (\n { collectionType, model, documentId, params },\n _api,\n _extraOpts,\n baseQuery\n ) => {\n const res = await baseQuery({\n url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n method: 'GET',\n config: {\n params,\n },\n });\n\n /**\n * To stop the query from locking itself in multiple retries, we intercept the error here and manage correctly.\n * This is because single-types don't have a list view and fetching them with the route `/single-types/:model`\n * never returns a list, just a single document but this won't exist if you've not made one before.\n */\n if (res.error && res.error.name === 'NotFoundError' && collectionType === SINGLE_TYPES) {\n return { data: { document: undefined }, error: undefined };\n }\n\n return res;\n },\n providesTags: (result, _error, { collectionType, model, documentId }) => {\n return [\n // we prefer the result's id because we don't fetch single-types with an ID.\n {\n type: 'Document',\n id:\n collectionType !== SINGLE_TYPES\n ? `${model}_${result && 'documentId' in result ? result.documentId : documentId}`\n : model,\n },\n ];\n },\n }),\n getManyDraftRelationCount: builder.query<\n Contracts.CollectionTypes.CountManyEntriesDraftRelations.Response['data'],\n Contracts.CollectionTypes.CountManyEntriesDraftRelations.Request['query'] & {\n model: string;\n }\n >({\n query: ({ model, ...params }) => ({\n url: `/content-manager/collection-types/${model}/actions/countManyEntriesDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (\n response: Contracts.CollectionTypes.CountManyEntriesDraftRelations.Response\n ) => response.data,\n }),\n /**\n * This endpoint will either create or update documents at the same time as publishing.\n */\n publishDocument: builder.mutation<\n Contracts.CollectionTypes.Publish.Response,\n Pick<Contracts.CollectionTypes.Publish.Params, 'model'> &\n Partial<Pick<Contracts.CollectionTypes.Publish.Params, 'documentId'>> & {\n collectionType: string;\n data: Contracts.CollectionTypes.Publish.Request['body'];\n params?: Contracts.CollectionTypes.Publish.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/publish`\n : `/content-manager/${collectionType}/${model}/actions/publish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n ];\n },\n }),\n publishManyDocuments: builder.mutation<\n Contracts.CollectionTypes.BulkPublish.Response,\n Contracts.CollectionTypes.BulkPublish.Params &\n Contracts.CollectionTypes.BulkPublish.Request['body']\n >({\n query: ({ model, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkPublish`,\n method: 'POST',\n data: body,\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) =>\n documentIds.map((id) => ({ type: 'Document', id: `${model}_${id}` })),\n }),\n updateDocument: builder.mutation<\n Contracts.CollectionTypes.Update.Response,\n Pick<Contracts.CollectionTypes.Update.Params, 'model'> &\n Partial<Pick<Contracts.CollectionTypes.Update.Params, 'documentId'>> & {\n collectionType: string;\n data: Contracts.CollectionTypes.Update.Request['body'];\n params?: Contracts.CollectionTypes.Update.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, data, params }) => ({\n url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n method: 'PUT',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'Relations',\n ];\n },\n }),\n unpublishDocument: builder.mutation<\n Contracts.CollectionTypes.Unpublish.Response,\n Pick<Contracts.CollectionTypes.Unpublish.Params, 'model'> &\n Partial<Pick<Contracts.CollectionTypes.Unpublish.Params, 'documentId'>> & {\n collectionType: string;\n params?: Contracts.CollectionTypes.Unpublish.Request['query'];\n data: Contracts.CollectionTypes.Unpublish.Request['body'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/unpublish`\n : `/content-manager/${collectionType}/${model}/actions/unpublish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n ];\n },\n }),\n unpublishManyDocuments: builder.mutation<\n Contracts.CollectionTypes.BulkUnpublish.Response,\n Contracts.CollectionTypes.BulkUnpublish.Params &\n Contracts.CollectionTypes.BulkUnpublish.Request['body']\n >({\n query: ({ model, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkUnpublish`,\n method: 'POST',\n data: body,\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) =>\n documentIds.map((id) => ({ type: 'Document', id: `${model}_${id}` })),\n }),\n }),\n});\n\nconst {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n} = documentApi;\n\nexport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery as useGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n};\n","interface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n if ('_q' in validQueryParams) {\n // Encode the search query here since the paramsSerializer will not\n // @ts-expect-error – TODO: fix this type error\n validQueryParams._q = encodeURIComponent(validQueryParams._q);\n }\n\n return validQueryParams;\n};\n\nexport { buildValidParams };\n","/**\n * Object containing error messages for input validations.\n * @property {Object} email - Error message for invalid email.\n * @property {string} email.id - Identifier for the error message.\n * @property {string} email.defaultMessage - Default error message for invalid email.\n * @property {Object} json - Error message for invalid JSON format.\n * @property {string} json.id - Identifier for the error message.\n * @property {string} json.defaultMessage - Default error message for invalid JSON format.\n * @property {Object} lowercase - Error message for non-lowercase string.\n * @property {string} lowercase.id - Identifier for the error message.\n * @property {string} lowercase.defaultMessage - Default error message for non-lowercase string.\n * @property {Object} max - Error message for value exceeding maximum.\n * @property {string} max.id - Identifier for the error message.\n * @property {string} max.defaultMessage - Default error message for value exceeding maximum.\n * @property {Object} maxLength - Error message for string length exceeding maximum.\n * @property {string} maxLength.id - Identifier for the error message.\n * @property {string} maxLength.defaultMessage - Default error message for string length exceeding maximum.\n * @property {Object} min - Error message for value less than minimum.\n * @property {string} min.id - Identifier for the error message.\n * @property {string} min.defaultMessage - Default error message for value less than minimum.\n * @property {Object} minLength - Error message for string length less than minimum.\n * @property {string} minLength.id - Identifier for the error message.\n * @property {string} minLength.defaultMessage - Default error message for string length less than minimum.\n * @property {Object} regex - Error message for value not matching regex pattern.\n * @property {string} regex.id - Identifier for the error message.\n * @property {string} regex.defaultMessage - Default error message for value not matching regex pattern.\n * @property {Object} required - Error message for required value.\n * @property {string} required.id - Identifier for the error message.\n * @property {string} required.defaultMessage - Default error message for required value.\n * @property {Object} string - Error message for non-string value.\n * @property {string} string.id - Identifier for the error message.\n * @property {string} string.defaultMessage - Default error message for non-string value.\n * @property {Object} unique - Error message for non-unique value.\n * @property {string} unique.id - Identifier for the error message.\n * @property {string} unique.defaultMessage - Default error message for non-unique value.\n * @property {Object} integer - Error message for non-integer value.\n * @property {string} integer.id - Identifier for the error message.\n * @property {string} integer.defaultMessage - Default error message for non-integer value.\n */\n\nconst errorsTrads = {\n email: {\n id: 'components.Input.error.validation.email',\n defaultMessage: 'This is not a valid email.',\n },\n json: {\n id: 'components.Input.error.validation.json',\n defaultMessage: \"This doesn't match the JSON format\",\n },\n lowercase: {\n id: 'components.Input.error.validation.lowercase',\n defaultMessage: 'The value must be a lowercase string',\n },\n max: {\n id: 'components.Input.error.validation.max',\n defaultMessage: 'The value is too high (max: {max}).',\n },\n maxLength: {\n id: 'components.Input.error.validation.maxLength',\n defaultMessage: 'The value is too long (max: {max}).',\n },\n min: {\n id: 'components.Input.error.validation.min',\n defaultMessage: 'The value is too low (min: {min}).',\n },\n minLength: {\n id: 'components.Input.error.validation.minLength',\n defaultMessage: 'The value is too short (min: {min}).',\n },\n regex: {\n id: 'components.Input.error.validation.regex',\n defaultMessage: 'The value does not match the regex.',\n },\n required: {\n id: 'components.Input.error.validation.required',\n defaultMessage: 'This value is required.',\n },\n string: {\n id: 'components.Input.error.validation.string',\n defaultMessage: 'This is not a valid string.',\n },\n unique: {\n id: 'components.Input.error.validation.unique',\n defaultMessage: 'This value is already used.',\n },\n integer: {\n id: 'component.Input.error.validation.integer',\n defaultMessage: 'The value must be an integer',\n },\n} as const;\n\nexport { errorsTrads as translatedErrors };\n","const ID = 'id';\n\nconst CREATED_BY_ATTRIBUTE_NAME = 'createdBy';\nconst UPDATED_BY_ATTRIBUTE_NAME = 'updatedBy';\n\nconst CREATOR_FIELDS = [CREATED_BY_ATTRIBUTE_NAME, UPDATED_BY_ATTRIBUTE_NAME];\n\nconst PUBLISHED_BY_ATTRIBUTE_NAME = 'publishedBy';\nconst CREATED_AT_ATTRIBUTE_NAME = 'createdAt';\nconst UPDATED_AT_ATTRIBUTE_NAME = 'updatedAt';\nconst PUBLISHED_AT_ATTRIBUTE_NAME = 'publishedAt';\n\nconst DOCUMENT_META_FIELDS = [\n ID,\n ...CREATOR_FIELDS,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n CREATED_AT_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n];\n\n/**\n * List of attribute types that cannot be used as the main field.\n * Not sure the name could be any clearer.\n */\nconst ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD = [\n 'dynamiczone',\n 'json',\n 'text',\n 'relation',\n 'component',\n 'boolean',\n 'media',\n 'password',\n 'richtext',\n 'timestamp',\n 'blocks',\n];\n\nexport {\n ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD,\n CREATED_AT_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n CREATOR_FIELDS,\n DOCUMENT_META_FIELDS,\n};\n","import pipe from 'lodash/fp/pipe';\nimport * as yup from 'yup';\n\nimport { translatedErrors } from '../../utils/translatedErrors';\nimport { DOCUMENT_META_FIELDS } from '../constants/attributes';\n\nimport type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Schema as SchemaUtils } from '@strapi/types';\nimport type { ObjectShape } from 'yup/lib/object';\n\ntype AnySchema =\n | yup.StringSchema\n | yup.NumberSchema\n | yup.BooleanSchema\n | yup.DateSchema\n | yup.ArraySchema<any>\n | yup.ObjectSchema<any>;\n\n/* -------------------------------------------------------------------------------------------------\n * createYupSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: should we create a Map to store these based on the hash of the schema?\n */\nconst createYupSchema = (\n attributes: Schema['attributes'] = {},\n components: ComponentsDictionary = {}\n): yup.ObjectSchema<any> => {\n const createModelSchema = (attributes: Schema['attributes']): yup.ObjectSchema<any> =>\n yup\n .object()\n .shape(\n Object.entries(attributes).reduce<ObjectShape>((acc, [name, attribute]) => {\n if (DOCUMENT_META_FIELDS.includes(name)) {\n return acc;\n }\n\n /**\n * These validations won't apply to every attribute\n * and that's okay, in that case we just return the\n * schema as it was passed.\n */\n const validations = [\n addRequiredValidation,\n addMinLengthValidation,\n addMaxLengthValidation,\n addMinValidation,\n addMaxValidation,\n addRegexValidation,\n ].map((fn) => fn(attribute));\n\n const transformSchema = pipe(...validations);\n\n switch (attribute.type) {\n case 'component': {\n const { attributes } = components[attribute.component];\n\n if (attribute.repeatable) {\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(createModelSchema(attributes).nullable(false))\n ),\n };\n } else {\n return {\n ...acc,\n [name]: transformSchema(createModelSchema(attributes)),\n };\n }\n }\n case 'dynamiczone':\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(\n yup.lazy(\n (\n data: SchemaUtils.Attribute.Value<SchemaUtils.Attribute.DynamicZone>[number]\n ) => {\n const { attributes } = components[data.__component];\n\n return yup\n .object()\n .shape({\n __component: yup.string().required().oneOf(Object.keys(components)),\n })\n .nullable(false)\n .concat(createModelSchema(attributes));\n }\n ) as unknown as yup.ObjectSchema<any>\n )\n ),\n };\n case 'relation':\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(\n yup.object().shape({\n id: yup.string().required(),\n })\n )\n ),\n };\n default:\n return {\n ...acc,\n [name]: transformSchema(createAttributeSchema(attribute)),\n };\n }\n }, {})\n )\n /**\n * TODO: investigate why an undefined object fails a check of `nullable`.\n */\n .default(null);\n\n return createModelSchema(attributes);\n};\n\nconst createAttributeSchema = (\n attribute: Exclude<\n SchemaUtils.Attribute.AnyAttribute,\n { type: 'dynamiczone' } | { type: 'component' } | { type: 'relation' }\n >\n) => {\n switch (attribute.type) {\n case 'biginteger':\n return yup.string().matches(/^-?\\d*$/);\n case 'boolean':\n return yup.boolean();\n case 'blocks':\n return yup.mixed().test('isBlocks', translatedErrors.json, (value) => {\n if (!value || Array.isArray(value)) {\n return true;\n } else {\n return false;\n }\n });\n case 'decimal':\n case 'float':\n case 'integer':\n return yup.number();\n case 'email':\n return yup.string().email(translatedErrors.email);\n case 'enumeration':\n return yup.string().oneOf([...attribute.enum, null]);\n case 'json':\n return yup.mixed().test('isJSON', translatedErrors.json, (value) => {\n /**\n * We don't want to validate the JSON field if it's empty.\n */\n if (!value || (typeof value === 'string' && value.length === 0)) {\n return true;\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n });\n case 'password':\n case 'richtext':\n case 'string':\n case 'text':\n return yup.string();\n case 'uid':\n return yup.string().matches(/^[A-Za-z0-9-_.~]*$/);\n default:\n /**\n * This allows any value.\n */\n return yup.mixed();\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Validators\n * -----------------------------------------------------------------------------------------------*/\n/**\n * Our validator functions can be preped with the\n * attribute and then have the schema piped through them.\n */\ntype ValidationFn = (\n attribute: Schema['attributes'][string]\n) => <TSchema extends AnySchema>(schema: TSchema) => TSchema;\n\nconst addRequiredValidation: ValidationFn = (attribute) => (schema) => {\n if (attribute.required) {\n return schema.required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required.',\n });\n }\n\n return schema.nullable();\n};\n\nconst addMinLengthValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if (\n 'minLength' in attribute &&\n attribute.minLength &&\n Number.isInteger(attribute.minLength) &&\n 'min' in schema\n ) {\n return schema.min(attribute.minLength, {\n ...translatedErrors.minLength,\n values: {\n min: attribute.minLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMaxLengthValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if (\n 'maxLength' in attribute &&\n attribute.maxLength &&\n Number.isInteger(attribute.maxLength) &&\n 'max' in schema\n ) {\n return schema.max(attribute.maxLength, {\n ...translatedErrors.maxLength,\n values: {\n max: attribute.maxLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMinValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('min' in attribute) {\n const min = toInteger(attribute.min);\n\n if ('min' in schema && min) {\n return schema.min(min, {\n ...translatedErrors.min,\n values: {\n min,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst addMaxValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('max' in attribute) {\n const max = toInteger(attribute.max);\n\n if ('max' in schema && max) {\n return schema.max(max, {\n ...translatedErrors.max,\n values: {\n max,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst toInteger = (val?: string | number): number | undefined => {\n if (typeof val === 'number' || val === undefined) {\n return val;\n } else {\n const num = Number(val);\n return isNaN(num) ? undefined : num;\n }\n};\n\nconst addRegexValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('regex' in attribute && attribute.regex && 'matches' in schema) {\n return schema.matches(new RegExp(attribute.regex), {\n message: {\n id: translatedErrors.regex.id,\n defaultMessage: 'The value does not match the defined pattern.',\n },\n\n excludeEmptyString: !attribute.required,\n }) as TSchema;\n }\n\n return schema;\n };\n\nexport { createYupSchema };\n","import { contentManagerApi } from './api';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nconst initApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getInitialData: builder.query<Contracts.Init.GetInitData.Response['data'], void>({\n query: () => '/content-manager/init',\n transformResponse: (response: Contracts.Init.GetInitData.Response) => response.data,\n providesTags: ['InitialData'],\n }),\n }),\n});\n\nconst { useGetInitialDataQuery } = initApi;\n\nexport { useGetInitialDataQuery };\n","import * as React from 'react';\n\nimport { useNotification } from '../../features/Notifications';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Contracts.Components.Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { components, contentType, contentTypes, error, isLoading, isFetching } =\n useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const contentType = res.data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n isLoading: res.isLoading,\n isFetching: res.isFetching,\n error: res.error,\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: res.data?.contentTypes ?? [],\n };\n },\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: Contracts.ContentTypes.ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n","/**\n * This hook doesn't use a context provider because we fetch directly from the server,\n * this sounds expensive but actually, it's really not. Because we have redux-toolkit-query\n * being a cache layer so if nothing invalidates the cache, we don't fetch again.\n */\n\nimport * as React from 'react';\n\nimport { useParams } from 'react-router-dom';\nimport { ValidationError } from 'yup';\n\nimport { useNotification } from '../../features/Notifications';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { getYupInnerErrors } from '../../utils/getYupInnerErrors';\nimport { SINGLE_TYPES } from '../constants/collections';\nimport { useGetDocumentQuery } from '../services/documents';\nimport { buildValidParams } from '../utils/api';\nimport { createYupSchema } from '../utils/validation';\n\nimport { useContentTypeSchema, ComponentsDictionary } from './useContentTypeSchema';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ninterface UseDocumentArgs {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n}\n\ntype UseDocumentOpts = Parameters<typeof useGetDocumentQuery>[1];\n\ntype Document = Contracts.CollectionTypes.FindOne.Response['data'];\n\ntype Schema = Contracts.ContentTypes.ContentType;\n\ntype UseDocument = (\n args: UseDocumentArgs,\n opts?: UseDocumentOpts\n) => {\n /**\n * These are the schemas of the components used in the content type, organised\n * by their uid.\n */\n components: ComponentsDictionary;\n document?: Document;\n meta?: Contracts.CollectionTypes.FindOne.Response['meta'];\n isLoading: boolean;\n /**\n * This is the schema of the content type, it is not the same as the layout.\n */\n schema?: Schema;\n validate: (\n document: Document\n ) => null | Record<string, MessageDescriptor & { values?: Record<string, PrimitiveType> }>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocument\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha\n * @public\n * @description Returns a document based on the model, collection type & id passed as arguments.\n * Also extracts its schema from the redux cache to be used for creating a validation schema.\n * @example\n * ```tsx\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n *\n * if(!model || !collectionType) return null;\n *\n * const { document, isLoading, validate } = useDocument({ documentId: id, model, collectionType, params: { locale: 'en-GB' } })\n * const { update } = useDocumentActions()\n *\n * const onSubmit = async (document: Document) => {\n * const errors = validate(document);\n *\n * if(errors) {\n * // handle errors\n * }\n *\n * await update({ collectionType, model, id }, document)\n * }\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document} for more information\n */\nconst useDocument: UseDocument = (args, opts) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n currentData: data,\n isLoading: isLoadingDocument,\n isFetching: isFetchingDocument,\n error,\n } = useGetDocumentQuery(args, opts);\n\n const { components, schema, isLoading: isLoadingSchema } = useContentTypeSchema(args.model);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError, args.collectionType]);\n\n const validationSchema = React.useMemo(() => {\n if (!schema) {\n return null;\n }\n\n return createYupSchema(schema.attributes, components);\n }, [schema, components]);\n\n const validate = React.useCallback(\n (document: Document) => {\n if (!validationSchema) {\n throw new Error(\n 'There is no validation schema generated, this is likely due to the schema not being loaded yet.'\n );\n }\n\n try {\n validationSchema.validateSync(document, { abortEarly: false, strict: true });\n\n return null;\n } catch (error) {\n if (error instanceof ValidationError) {\n return getYupInnerErrors(error);\n }\n\n throw error;\n }\n },\n [validationSchema]\n );\n\n const isLoading = isLoadingDocument || isFetchingDocument || isLoadingSchema;\n\n return {\n components,\n document: data?.data,\n meta: data?.meta,\n isLoading,\n schema,\n validate,\n } satisfies ReturnType<UseDocument>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDoc\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal this hook uses the router to extract the model, collection type & id from the url.\n * therefore, it shouldn't be used outside of the content-manager because it won't work as intended.\n */\nconst useDoc = () => {\n const { id, slug, collectionType, origin } = useParams<{\n id: string;\n origin: string;\n slug: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!slug) {\n throw new Error('Could not find model in url params');\n }\n\n return {\n collectionType,\n model: slug,\n id: origin || id === 'create' ? undefined : id,\n ...useDocument(\n { documentId: origin || id, model: slug, collectionType, params },\n {\n skip: id === 'create' || (!origin && !id && collectionType !== SINGLE_TYPES),\n }\n ),\n };\n};\n\nexport { useDocument, useDoc };\nexport type { UseDocument, UseDocumentArgs, Document, Schema, ComponentsDictionary };\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n","import * as React from 'react';\n\nimport {\n Button,\n Dialog,\n DialogBody,\n DialogFooter,\n Flex,\n Icon,\n Typography,\n useCallbackRef,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { ExclamationMarkCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl, type MessageDescriptor, type PrimitiveType } from 'react-intl';\nimport { useBlocker } from 'react-router-dom';\n\nimport { getIn, setIn } from '../utils/objects';\n\nimport { createContext } from './Context';\n\nimport type {\n InputProps as InputPropsImpl,\n StringProps,\n EnumerationProps,\n} from './FormInputs/types';\nimport type * as Yup from 'yup';\n\n/* -------------------------------------------------------------------------------------------------\n * FormContext\n * -----------------------------------------------------------------------------------------------*/\ntype InputProps = InputPropsImpl | StringProps | EnumerationProps;\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface FormValues {\n [field: string]: any;\n}\n\ninterface FormContextValue<TFormValues extends FormValues = FormValues>\n extends FormState<TFormValues> {\n disabled: boolean;\n initialValues: TFormValues;\n modified: boolean;\n /**\n * The default behaviour is to add the row to the end of the array, if you want to add it to a\n * specific index you can pass the index.\n */\n addFieldRow: (field: string, value: any, addAtIndex?: number) => void;\n moveFieldRow: (field: string, fromIndex: number, toIndex: number) => void;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: any) => void;\n /*\n * The default behaviour is to remove the last row, if you want to remove a specific index you can\n * pass the index.\n */\n removeFieldRow: (field: string, removeAtIndex?: number) => void;\n resetForm: () => void;\n setErrors: (errors: FormErrors<TFormValues>) => void;\n setSubmitting: (isSubmitting: boolean) => void;\n setValues: (values: TFormValues) => void;\n validate: () => Promise<\n { data: TFormValues; errors?: never } | { data?: never; errors: FormErrors<TFormValues> }\n >;\n}\n\n/**\n * @internal\n * @description We use this just to warn people that they're using the useForm\n * methods outside of a Form component, but we don't want to throw an error\n * because otherwise the DocumentActions list cannot be rendered in our list-view.\n */\nconst ERR_MSG =\n 'The Form Component has not been initialised, ensure you are using this hook within a Form component';\n\nconst [FormProvider, useForm] = createContext<FormContextValue>('Form', {\n disabled: false,\n errors: {},\n initialValues: {},\n isSubmitting: false,\n modified: false,\n addFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n moveFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n onChange: () => {\n throw new Error(ERR_MSG);\n },\n removeFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n resetForm: () => {\n throw new Error(ERR_MSG);\n },\n setErrors: () => {\n throw new Error(ERR_MSG);\n },\n setValues: () => {\n throw new Error(ERR_MSG);\n },\n setSubmitting: () => {\n throw new Error(ERR_MSG);\n },\n validate: async () => {\n throw new Error(ERR_MSG);\n },\n values: {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormHelpers<TFormValues extends FormValues = FormValues>\n extends Pick<FormContextValue<TFormValues>, 'setErrors' | 'setValues' | 'resetForm'> {}\n\ninterface FormProps<TFormValues extends FormValues = FormValues>\n extends Partial<Pick<FormContextValue<TFormValues>, 'disabled' | 'initialValues'>> {\n children:\n | React.ReactNode\n | ((\n props: Pick<\n FormContextValue<TFormValues>,\n 'disabled' | 'errors' | 'isSubmitting' | 'modified' | 'values' | 'resetForm' | 'onChange'\n >\n ) => React.ReactNode);\n method: 'POST' | 'PUT';\n onSubmit?: (values: TFormValues, helpers: FormHelpers<TFormValues>) => Promise<void> | void;\n // TODO: type the return value for a validation schema func from Yup.\n validationSchema?: Yup.AnySchema;\n}\n\n/**\n * @alpha\n * @description A form component that handles form state, validation and submission.\n * It can additionally handle nested fields and arrays. To access the data you can either\n * use the generic useForm hook or the useField hook when providing the name of your field.\n */\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ disabled = false, method, onSubmit, ...props }, ref) => {\n const formRef = React.useRef<HTMLFormElement>(null!);\n const initialValues = React.useRef(props.initialValues ?? {});\n const [state, dispatch] = React.useReducer(reducer, {\n errors: {},\n isSubmitting: false,\n values: props.initialValues ?? {},\n });\n\n React.useEffect(() => {\n /**\n * ONLY update the initialValues if the prop has changed.\n */\n if (!isEqual(initialValues.current, props.initialValues)) {\n initialValues.current = props.initialValues ?? {};\n\n dispatch({\n type: 'SET_INITIAL_VALUES',\n payload: props.initialValues ?? {},\n });\n }\n }, [props.initialValues]);\n\n const setErrors = React.useCallback((errors: FormErrors) => {\n dispatch({\n type: 'SET_ERRORS',\n payload: errors,\n });\n }, []);\n\n const setValues = React.useCallback((values: FormValues) => {\n dispatch({\n type: 'SET_VALUES',\n payload: values,\n });\n }, []);\n\n React.useEffect(() => {\n if (Object.keys(state.errors).length === 0) return;\n\n /**\n * Small timeout to ensure the form has been\n * rendered before we try to focus on the first\n */\n const ref = setTimeout(() => {\n const [firstError] = formRef.current.querySelectorAll('[data-strapi-field-error]');\n\n if (firstError) {\n const errorId = firstError.getAttribute('id');\n const formElementInError = formRef.current.querySelector(\n `[aria-describedby=\"${errorId}\"]`\n );\n\n if (formElementInError && formElementInError instanceof HTMLElement) {\n formElementInError.focus();\n }\n }\n });\n\n return () => clearTimeout(ref);\n }, [state.errors]);\n\n /**\n * Uses the provided validation schema\n */\n const validate: FormContextValue['validate'] = React.useCallback(\n async (shouldSetErrors: boolean = true) => {\n setErrors({});\n\n if (!props.validationSchema) {\n return { data: state.values };\n }\n\n try {\n const data = await props.validationSchema.validate(state.values, { abortEarly: false });\n\n return { data };\n } catch (err) {\n if (isErrorYupValidationError(err)) {\n let errors: FormErrors = {};\n\n if (err.inner) {\n if (err.inner.length === 0) {\n return setIn(errors, err.path!, err.message);\n }\n for (const error of err.inner) {\n if (!getIn(errors, error.path!)) {\n errors = setIn(errors, error.path!, error.message);\n }\n }\n }\n\n if (shouldSetErrors) {\n setErrors(errors);\n }\n\n return { errors };\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n throw err;\n }\n }\n },\n [props, setErrors, state.values]\n );\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (!onSubmit) {\n return;\n }\n\n dispatch({\n type: 'SUBMIT_ATTEMPT',\n });\n\n try {\n const { data, errors } = await validate();\n\n if (errors) {\n setErrors(errors);\n\n throw new Error('Submission failed');\n }\n\n await onSubmit(data, {\n setErrors,\n setValues,\n resetForm,\n });\n\n dispatch({\n type: 'SUBMIT_SUCCESS',\n });\n } catch (err) {\n dispatch({\n type: 'SUBMIT_FAILURE',\n });\n\n if (err instanceof Error && err.message === 'Submission failed') {\n return;\n }\n }\n };\n\n const modified = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [state.values]\n );\n\n const handleChange: FormContextValue['onChange'] = useCallbackRef((eventOrPath, v) => {\n if (typeof eventOrPath === 'string') {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field: eventOrPath,\n value: v,\n },\n });\n\n return;\n }\n\n const target = eventOrPath.target || eventOrPath.currentTarget;\n\n const { type, name, id, value, options, multiple } = target;\n\n const field = name || id;\n\n if (!field && process.env.NODE_ENV !== 'production') {\n console.warn(\n `\\`onChange\\` was called with an event, but you forgot to pass a \\`name\\` or \\`id'\\` attribute to your input. The field to update cannot be determined`\n );\n }\n\n /**\n * Because we handle any field from this function, we run through a series\n * of checks to understand how to use the value.\n */\n let val;\n\n if (/number|range/.test(type)) {\n const parsed = parseFloat(value);\n // If the value isn't a number for whatever reason, don't let it through because that will break the API.\n val = isNaN(parsed) ? '' : parsed;\n } else if (/checkbox/.test(type)) {\n // Get & invert the current value of the checkbox.\n val = !getIn(state.values, field);\n } else if (options && multiple) {\n // This will handle native select elements incl. ones with mulitple options.\n val = Array.from<HTMLOptionElement>(options)\n .filter((el) => el.selected)\n .map((el) => el.value);\n } else {\n val = value;\n }\n\n if (field) {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value: val,\n },\n });\n }\n });\n\n const addFieldRow: FormContextValue['addFieldRow'] = React.useCallback(\n (field, value, addAtIndex) => {\n dispatch({\n type: 'ADD_FIELD_ROW',\n payload: {\n field,\n value,\n addAtIndex,\n },\n });\n },\n []\n );\n\n const removeFieldRow: FormContextValue['removeFieldRow'] = React.useCallback(\n (field, removeAtIndex) => {\n dispatch({\n type: 'REMOVE_FIELD_ROW',\n payload: {\n field,\n removeAtIndex,\n },\n });\n },\n []\n );\n\n const moveFieldRow: FormContextValue['moveFieldRow'] = React.useCallback(\n (field, fromIndex, toIndex) => {\n dispatch({\n type: 'MOVE_FIELD_ROW',\n payload: {\n field,\n fromIndex,\n toIndex,\n },\n });\n },\n []\n );\n\n const resetForm: FormContextValue['resetForm'] = React.useCallback(() => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n errors: {},\n isSubmitting: false,\n values: initialValues.current,\n },\n });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const composedRefs = useComposedRefs(formRef, ref);\n\n return (\n <form ref={composedRefs} method={method} noValidate onSubmit={handleSubmit}>\n <FormProvider\n disabled={disabled}\n onChange={handleChange}\n initialValues={initialValues}\n modified={modified}\n addFieldRow={addFieldRow}\n moveFieldRow={moveFieldRow}\n removeFieldRow={removeFieldRow}\n resetForm={resetForm}\n setErrors={setErrors}\n setValues={setValues}\n setSubmitting={setSubmitting}\n validate={validate}\n {...state}\n >\n {typeof props.children === 'function'\n ? props.children({\n modified,\n disabled,\n onChange: handleChange,\n ...state,\n resetForm,\n })\n : props.children}\n </FormProvider>\n </form>\n );\n }\n) as <TFormValues extends FormValues>(\n p: FormProps<TFormValues> & { ref?: React.Ref<HTMLFormElement> }\n) => React.ReactElement; // we've cast this because we need the generic to infer the type of the form values.\n\n/**\n * @internal\n * @description Checks if the error is a Yup validation error.\n */\nconst isErrorYupValidationError = (err: any): err is Yup.ValidationError =>\n typeof err === 'object' &&\n err !== null &&\n 'name' in err &&\n typeof err.name === 'string' &&\n err.name === 'ValidationError';\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ntype FormErrors<TFormValues extends FormValues = FormValues> = {\n // is it a repeatable component or dynamic zone?\n [Key in keyof TFormValues]?: TFormValues[Key] extends any[]\n ? TFormValues[Key][number] extends object\n ? FormErrors<TFormValues[Key][number]>[] | string | string[]\n : string // this would let us support errors for the dynamic zone or repeatable component not the components within.\n : TFormValues[Key] extends object // is it a regular component?\n ? FormErrors<TFormValues[Key]> // handles nested components\n : string; // otherwise its just a field.\n};\n\ninterface FormState<TFormValues extends FormValues = FormValues> {\n /**\n * TODO: make this a better type explaining errors could be nested because it follows the same\n * structure as the values.\n */\n errors: FormErrors<TFormValues>;\n isSubmitting: boolean;\n values: TFormValues;\n}\n\ntype FormActions<TFormValues extends FormValues = FormValues> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value: any } }\n | { type: 'ADD_FIELD_ROW'; payload: { field: string; value: any; addAtIndex?: number } }\n | { type: 'REMOVE_FIELD_ROW'; payload: { field: string; removeAtIndex?: number } }\n | { type: 'MOVE_FIELD_ROW'; payload: { field: string; fromIndex: number; toIndex: number } }\n | { type: 'SET_ERRORS'; payload: FormErrors<TFormValues> }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_INITIAL_VALUES'; payload: TFormValues }\n | { type: 'SET_VALUES'; payload: TFormValues }\n | { type: 'RESET_FORM'; payload: FormState<TFormValues> };\n\nconst reducer = <TFormValues extends FormValues = FormValues>(\n state: FormState<TFormValues>,\n action: FormActions<TFormValues>\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'SET_INITIAL_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SET_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SUBMIT_ATTEMPT':\n draft.isSubmitting = true;\n break;\n case 'SUBMIT_FAILURE':\n draft.isSubmitting = false;\n break;\n case 'SUBMIT_SUCCESS':\n draft.isSubmitting = false;\n break;\n case 'SET_FIELD_VALUE':\n draft.values = setIn(state.values, action.payload.field, action.payload.value);\n break;\n case 'ADD_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.addAtIndex;\n\n if (position === undefined) {\n position = currentField.length;\n } else if (position < 0) {\n position = 0;\n }\n\n const [key] = generateNKeysBetween(\n currentField.at(position - 1)?.__temp_key__,\n currentField.at(position)?.__temp_key__,\n 1\n );\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n setIn(currentField, position.toString(), { ...action.payload.value, __temp_key__: key })\n );\n\n break;\n }\n case 'MOVE_FIELD_ROW': {\n const { field, fromIndex, toIndex } = action.payload;\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = [...(getIn(state.values, field, []) as Array<any>)];\n const currentRow = currentField[fromIndex];\n\n const startKey =\n fromIndex > toIndex\n ? currentField[toIndex - 1]?.__temp_key__\n : currentField[toIndex]?.__temp_key__;\n const endKey =\n fromIndex > toIndex\n ? currentField[toIndex]?.__temp_key__\n : currentField[toIndex + 1]?.__temp_key__;\n const [newKey] = generateNKeysBetween(startKey, endKey, 1);\n\n currentField.splice(fromIndex, 1);\n currentField.splice(toIndex, 0, { ...currentRow, __temp_key__: newKey });\n\n draft.values = setIn(state.values, field, currentField);\n\n break;\n }\n case 'REMOVE_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.removeAtIndex;\n\n if (position === undefined) {\n position = currentField.length - 1;\n } else if (position < 0) {\n position = 0;\n }\n\n /**\n * filter out empty values from the array, the setIn function only deletes the value\n * when we pass undefined as opposed to \"removing\" it from said array.\n */\n const newValue = setIn(currentField, position.toString(), undefined).filter(\n (val: unknown) => val\n );\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n newValue.length > 0 ? newValue : undefined\n );\n\n break;\n }\n case 'SET_ERRORS':\n if (!isEqual(state.errors, action.payload)) {\n // @ts-expect-error – TODO: figure out why this fails a TS check.\n draft.errors = action.payload;\n }\n break;\n case 'SET_ISSUBMITTING':\n draft.isSubmitting = action.payload;\n break;\n case 'RESET_FORM':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload.values;\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.errors = action.payload.errors;\n draft.isSubmitting = action.payload.isSubmitting;\n break;\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * useField\n * -----------------------------------------------------------------------------------------------*/\ninterface FieldValue<TValue = any> {\n error?: string;\n initialValue: TValue;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: TValue) => void;\n value: TValue;\n}\n\nconst useField = <TValue = any,>(path: string): FieldValue<TValue | undefined> => {\n const { formatMessage } = useIntl();\n\n const initialValue = useForm(\n 'useField',\n (state) => getIn(state.initialValues, path) as FieldValue<TValue>['initialValue']\n );\n\n const value = useForm(\n 'useField',\n (state) => getIn(state.values, path) as FieldValue<TValue>['value']\n );\n\n const handleChange = useForm('useField', (state) => state.onChange);\n\n const error = useForm('useField', (state) => getIn(state.errors, path));\n\n return {\n initialValue,\n /**\n * Errors can be a string, or a MesaageDescriptor, so we need to handle both cases.\n * If it's anything else, we don't return it.\n */\n error: isErrorMessageDescriptor(error)\n ? formatMessage(\n {\n id: error.id,\n defaultMessage: error.defaultMessage,\n },\n error.values\n )\n : typeof error === 'string'\n ? error\n : undefined,\n onChange: handleChange,\n value: value,\n };\n};\n\nconst isErrorMessageDescriptor = (object?: string | object): object is TranslationMessage => {\n return (\n typeof object === 'object' && object !== null && 'id' in object && 'defaultMessage' in object\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Blocker\n * -----------------------------------------------------------------------------------------------*/\nconst Blocker = () => {\n const { formatMessage } = useIntl();\n const modified = useForm('Blocker', (state) => state.modified);\n const isSubmitting = useForm('Blocker', (state) => state.isSubmitting);\n\n const blocker = useBlocker(\n ({ currentLocation, nextLocation }) =>\n !isSubmitting && modified && currentLocation.pathname !== nextLocation.pathname\n );\n\n if (blocker.state === 'blocked') {\n return (\n <Dialog\n isOpen\n title={formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n onClose={() => blocker.reset()}\n >\n <DialogBody>\n <Flex direction=\"column\" gap={2}>\n <Icon as={ExclamationMarkCircle} width=\"24px\" height=\"24px\" color=\"danger600\" />\n <Typography as=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'global.prompt.unsaved',\n defaultMessage: 'You have unsaved changes, are you sure you want to leave?',\n })}\n </Typography>\n </Flex>\n </DialogBody>\n <DialogFooter\n startAction={\n <Button onClick={() => blocker.reset()} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endAction={\n <Button onClick={() => blocker.proceed()} variant=\"danger\">\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n }\n />\n </Dialog>\n );\n }\n\n return null;\n};\n\nexport { Form, Blocker, useField, useForm };\nexport type {\n FormHelpers,\n FormProps,\n FormValues,\n FormContextValue,\n FormState,\n FieldValue,\n InputProps,\n};\n","const getTranslation = (id: string) => `content-manager.${id}`;\n\nexport { getTranslation };\n","import { Status, StatusProps, Typography } from '@strapi/design-system';\n\nimport { capitalise } from '../../../../utils/strings';\n\ninterface DocumentStatusProps\n extends Omit<StatusProps, 'children' | 'showBullet' | 'size' | 'variant'> {\n /**\n * The status of the document (draft, published, etc.)\n * @default 'draft'\n */\n status?: string;\n}\n\n/**\n * @internal\n * @description Displays the status of a document (draft, published, etc.)\n * and automatically calculates the appropriate variant for the status.\n */\nconst DocumentStatus = ({ status = 'draft', ...restProps }: DocumentStatusProps) => {\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return (\n <Status {...restProps} showBullet={false} size={'S'} variant={statusVariant}>\n <Typography as=\"span\" variant=\"omega\" fontWeight=\"bold\">\n {capitalise(status)}\n </Typography>\n </Status>\n );\n};\n\nexport { DocumentStatus };\nexport type { DocumentStatusProps };\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, Typography } from '@strapi/design-system';\nimport { Cross, Drag, Pencil } from '@strapi/icons';\nimport styled from 'styled-components';\n\ninterface CardDragPreviewProps {\n label: string;\n isSibling?: boolean;\n}\n\nconst CardDragPreview = ({ label, isSibling = false }: CardDragPreviewProps) => {\n return (\n <FieldContainer\n background={isSibling ? 'neutral100' : 'primary100'}\n display=\"inline-flex\"\n gap={3}\n hasRadius\n justifyContent=\"space-between\"\n isSibling={isSibling}\n max-height={`${32 / 16}rem`}\n maxWidth=\"min-content\"\n >\n <Flex gap={3}>\n <DragButton alignItems=\"center\" cursor=\"all-scroll\" padding={3}>\n <Drag />\n </DragButton>\n\n <TypographyMaxWidth\n textColor={isSibling ? undefined : 'primary600'}\n fontWeight=\"bold\"\n ellipsis\n >\n {label}\n </TypographyMaxWidth>\n </Flex>\n\n <Flex>\n <ActionBox alignItems=\"center\">\n <Pencil />\n </ActionBox>\n\n <ActionBox alignItems=\"center\">\n <Cross />\n </ActionBox>\n </Flex>\n </FieldContainer>\n );\n};\n\nconst ActionBox = styled(Flex)`\n height: ${({ theme }) => theme.spaces[7]};\n\n &:last-child {\n padding: 0 ${({ theme }) => theme.spaces[3]};\n }\n`;\n\nconst DragButton = styled(ActionBox)`\n border-right: 1px solid ${({ theme }) => theme.colors.primary200};\n\n svg {\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n }\n`;\n\nconst FieldContainer = styled(Flex)<{ isSibling: boolean }>`\n border: 1px solid\n ${({ theme, isSibling }) => (isSibling ? theme.colors.neutral150 : theme.colors.primary200)};\n\n svg {\n width: ${10 / 16}rem;\n height: ${10 / 16}rem;\n\n path {\n fill: ${({ theme, isSibling }) => (isSibling ? undefined : theme.colors.primary600)};\n }\n }\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: ${72 / 16}rem;\n`;\n\nexport { CardDragPreview };\nexport type { CardDragPreviewProps };\n","import { Flex, IconButton, Typography } from '@strapi/design-system';\nimport { CarretDown, Drag, Trash } from '@strapi/icons';\nimport styled from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width={`${300 / 16}rem`}\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height={`${32 / 16}rem`}\n width={`${32 / 16}rem`}\n >\n <CarretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth={`${150 / 16}rem`}>\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton aria-label=\"\" borderWidth={0}>\n <Trash />\n </IconButton>\n\n <IconButton aria-label=\"\" borderWidth={0}>\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled(Flex)`\n border-radius: 50%;\n\n svg {\n height: ${6 / 16}rem;\n width: ${11 / 16}rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { MutableRefObject, useEffect, useMemo, useState } from 'react';\n\nimport { useLocation } from 'react-router-dom';\n\ntype InputFieldRefs<T extends HTMLElement> = T | { input: MutableRefObject<T> } | null;\n\n/**\n * @description Given the name of an input field (this does not need to be the name you pass as a prop to the DOM element),\n * when the query param `field` matches the name the field will be focused & scrolled into the center of the view.\n * Uses a callback ref to set the field to ensure asynchronous rendering of inputs does not cause issues e.g. CodeMirror.EditView\n *\n * @example\n * ```tsx\n * const fieldRef = useFocusInputField('name');\n *\n * return (\n * <input ref={fieldRef} />\n * );\n * ```\n */\nconst useFocusInputField = <T extends HTMLElement>(\n name: string\n): ((node: InputFieldRefs<T>) => void) => {\n const { search: searchString } = useLocation();\n const search = useMemo(() => new URLSearchParams(searchString), [searchString]);\n\n /**\n * TODO: remove union and just use `HTMLElement`\n *\n * Realistically, it will only be an `HTMLElement` but `TextInput` in the design-system\n * has an imperativeHandle we can't remove until v2 of the design-system.\n */\n const [field, setField] = useState<InputFieldRefs<T>>(null);\n\n useEffect(() => {\n if (search.has('field') && search.get('field') === name && field) {\n /**\n * TODO: simplify this when we use v2 of the design-system\n */\n if ('input' in field) {\n field.input.current.focus();\n field.input.current.scrollIntoView({\n block: 'center',\n });\n } else {\n field.focus();\n field.scrollIntoView({\n block: 'center',\n });\n }\n }\n }, [search, name, field]);\n\n return setField;\n};\n\nexport { useFocusInputField };\n","export const ItemTypes = {\n COMPONENT: 'component',\n EDIT_FIELD: 'editField',\n FIELD: 'field',\n DYNAMIC_ZONE: 'dynamicZone',\n RELATION: 'relation',\n BLOCKS: 'blocks',\n} as const;\n","import * as React from 'react';\n\nexport type UseKeyboardDragAndDropCallbacks<TIndex extends number | Array<number> = number> = {\n onCancel?: (index: TIndex) => void;\n onDropItem?: (currentIndex: TIndex, newIndex?: TIndex) => void;\n onGrabItem?: (index: TIndex) => void;\n onMoveItem?: (newIndex: TIndex, currentIndex: TIndex) => void;\n};\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n */\nexport const useKeyboardDragAndDrop = <TIndex extends number | Array<number> = number>(\n active: boolean,\n index: TIndex,\n { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>\n) => {\n const [isSelected, setIsSelected] = React.useState(false);\n\n const handleMove = (movement: 'UP' | 'DOWN') => {\n if (!isSelected) {\n return;\n }\n if (typeof index === 'number' && onMoveItem) {\n if (movement === 'UP') {\n onMoveItem((index - 1) as TIndex, index);\n } else if (movement === 'DOWN') {\n onMoveItem((index + 1) as TIndex, index);\n }\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLButtonElement> = (e) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import * as React from 'react';\n\nimport {\n useDrag,\n useDrop,\n type HandlerManager,\n type ConnectDragSource,\n type ConnectDropTarget,\n type ConnectDragPreview,\n type DragSourceMonitor,\n} from 'react-dnd';\n\nimport {\n useKeyboardDragAndDrop,\n type UseKeyboardDragAndDropCallbacks,\n} from './useKeyboardDragAndDrop';\n\nimport type { Data } from '@strapi/types';\n\nconst DIRECTIONS = {\n UPWARD: 'upward',\n DOWNWARD: 'downward',\n} as const;\n\nconst DROP_SENSITIVITY = {\n REGULAR: 'regular',\n IMMEDIATE: 'immediate',\n} as const;\n\ninterface UseDragAndDropOptions<\n TIndex extends number | Array<number> = number,\n TItem extends { index: TIndex } = { index: TIndex }\n> extends UseKeyboardDragAndDropCallbacks<TIndex> {\n type?: string;\n index: TIndex;\n item?: TItem;\n onStart?: () => void;\n onEnd?: () => void;\n dropSensitivity?: (typeof DROP_SENSITIVITY)[keyof typeof DROP_SENSITIVITY];\n}\n\ntype Identifier = ReturnType<HandlerManager['getHandlerId']>;\n\ntype UseDragAndDropReturn<Element extends HTMLElement = HTMLElement> = [\n props: {\n handlerId: Identifier;\n isDragging: boolean;\n handleKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => void;\n isOverDropTarget: boolean;\n direction: (typeof DIRECTIONS)[keyof typeof DIRECTIONS] | null;\n },\n objectRef: React.RefObject<Element>,\n dropRef: ConnectDropTarget,\n dragRef: ConnectDragSource,\n dragPreviewRef: ConnectDragPreview\n];\n\ntype DropCollectedProps = {\n handlerId: Identifier;\n isOver: boolean;\n};\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n */\nconst useDragAndDrop = <\n TIndex extends number | Array<number>,\n TItem extends { index: TIndex; id?: Data.ID; [key: string]: unknown } = {\n index: TIndex;\n [key: string]: unknown;\n },\n Element extends HTMLElement = HTMLElement\n>(\n active: boolean,\n {\n type = 'STRAPI_DND',\n index,\n item,\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = DROP_SENSITIVITY.REGULAR,\n }: UseDragAndDropOptions<TIndex, TItem>\n): UseDragAndDropReturn<Element> => {\n const objectRef = React.useRef<Element>(null);\n\n const [{ handlerId, isOver }, dropRef] = useDrop<TItem, void, DropCollectedProps>({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n isOver: monitor.isOver({ shallow: true }),\n };\n },\n drop(item) {\n const draggedIndex = item.index;\n const newIndex = index;\n\n if (isOver && onDropItem) {\n onDropItem(draggedIndex, newIndex);\n }\n },\n hover(item, monitor) {\n if (!objectRef.current || !onMoveItem) {\n return;\n }\n\n const dragIndex = item.index;\n const newIndex = index;\n\n const hoverBoundingRect = objectRef.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n if (!clientOffset) return;\n\n const hoverClientY = clientOffset && clientOffset.y - hoverBoundingRect.top;\n if (typeof dragIndex === 'number' && typeof newIndex === 'number') {\n if (dragIndex === newIndex) {\n // Don't replace items with themselves\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (dragIndex < newIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n } else {\n // Using numbers as indices doesn't work for nested list items with path like [1, 1, 0]\n if (Array.isArray(dragIndex) && Array.isArray(newIndex)) {\n // Indices comparison to find item position in nested list\n const minLength = Math.min(dragIndex.length, newIndex.length);\n let areEqual = true;\n let isLessThan = false;\n let isGreaterThan = false;\n\n for (let i = 0; i < minLength; i++) {\n if (dragIndex[i] < newIndex[i]) {\n isLessThan = true;\n areEqual = false;\n break;\n } else if (dragIndex[i] > newIndex[i]) {\n isGreaterThan = true;\n areEqual = false;\n break;\n }\n }\n\n // Don't replace items with themselves\n if (areEqual && dragIndex.length === newIndex.length) {\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (isLessThan && !isGreaterThan && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (isGreaterThan && !isLessThan && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n }\n\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n }\n },\n });\n\n const getDragDirection = (monitor: DragSourceMonitor<TItem, void>) => {\n if (\n monitor &&\n monitor.isDragging() &&\n !monitor.didDrop() &&\n monitor.getInitialClientOffset() &&\n monitor.getClientOffset()\n ) {\n const deltaY = monitor.getInitialClientOffset()!.y - monitor.getClientOffset()!.y;\n\n if (deltaY > 0) return DIRECTIONS.UPWARD;\n\n if (deltaY < 0) return DIRECTIONS.DOWNWARD;\n\n return null;\n }\n\n return null;\n };\n\n const [{ isDragging, direction }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item?.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n initialOffset: monitor.getInitialClientOffset(),\n currentOffset: monitor.getClientOffset(),\n direction: getDragDirection(monitor),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [\n { handlerId, isDragging, handleKeyDown, isOverDropTarget: isOver, direction },\n objectRef,\n dropRef,\n dragRef,\n dragPreviewRef,\n ];\n};\n\nexport {\n useDragAndDrop,\n UseDragAndDropReturn,\n UseDragAndDropOptions,\n DIRECTIONS,\n DROP_SENSITIVITY,\n};\n","import { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport { generateNKeysBetween } from 'fractional-indexing';\n\nimport { contentManagerApi } from './api';\n\nimport type { Modules } from '@strapi/types';\nimport type { errors } from '@strapi/utils';\n\ninterface RelationResult extends Contracts.Relations.RelationResult {\n __temp_key__: string;\n}\n\ntype GetRelationsResponse =\n | {\n results: Array<RelationResult>;\n pagination: {\n page: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['page']>;\n pageSize: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['pageSize']>;\n pageCount: number;\n total: number;\n } | null;\n error?: never;\n }\n | {\n results?: never;\n pagination?: never;\n error: errors.ApplicationError | errors.YupValidationError;\n };\n\nconst relationsApi = contentManagerApi.injectEndpoints({\n endpoints: (build) => ({\n getRelations: build.query<\n GetRelationsResponse,\n Contracts.Relations.FindExisting.Params & {\n params?: Contracts.Relations.FindExisting.Request['query'];\n }\n >({\n query: ({ model, id, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${id}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n id: queryArgs.id,\n targetField: queryArgs.targetField,\n locale: queryArgs.params?.locale,\n status: queryArgs.params?.status,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...prepareTempKeys(uniqueNewItems, currentCache.results));\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = prepareTempKeys(newItems.results);\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: Contracts.Relations.FindExisting.Response) => {\n if ('results' in response && response.results) {\n return {\n ...response,\n results: prepareTempKeys(response.results.toReversed()),\n };\n } else {\n return response;\n }\n },\n providesTags: ['Relations'],\n }),\n searchRelations: build.query<\n Contracts.Relations.FindAvailable.Response,\n Contracts.Relations.FindAvailable.Params & {\n params?: Contracts.Relations.FindAvailable.Request['query'];\n }\n >({\n query: ({ model, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n targetField: queryArgs.targetField,\n _q: queryArgs.params?._q,\n idsToOmit: queryArgs.params?.idsToOmit,\n idsToInclude: queryArgs.params?.idsToInclude,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...uniqueNewItems);\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = newItems.results;\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: Contracts.Relations.FindAvailable.Response) => {\n if (response.results) {\n return {\n ...response,\n results: response.results,\n };\n } else {\n return response;\n }\n },\n }),\n }),\n});\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each relation item. This gives us\n * a stable identifier regardless of it's ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = (\n relations: Contracts.Relations.RelationResult[],\n existingRelations: RelationResult[] = []\n) => {\n const [firstItem] = existingRelations.slice(0);\n\n const keys = generateNKeysBetween(null, firstItem?.__temp_key__ ?? null, relations.length);\n\n return relations.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\nconst { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;\n\nexport { useGetRelationsQuery, useLazySearchRelationsQuery };\nexport type { RelationResult };\n","import type { MainField } from './attributes';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\n/**\n * @internal\n * @description Get the label of a relation, the contract has [key: string]: unknown,\n * so we need to check if the mainFieldKey is defined and if the relation has a value\n * under that property. If it does, we then verify it's type of string and return it.\n *\n * We fallback to the documentId.\n */\nconst getRelationLabel = (\n relation: Contracts.Relations.RelationResult,\n mainField?: MainField\n): string => {\n const label = mainField && relation[mainField.name] ? relation[mainField.name] : null;\n\n if (typeof label === 'string') {\n return label;\n }\n\n return relation.documentId;\n};\n\nexport { getRelationLabel };\n","import { createContext } from '../../../../../components/Context';\n\ninterface ComponentContextValue {\n /**\n * The id of the component. It will be undefined if the component\n * has not been created in the database yet. This could be on a new\n * or existing entry.\n */\n id?: number;\n /**\n * The level of the component. This is used to determine the nesting\n * of the component. The default is set to -1 so that the base level is 0\n * for the top level component, and increases by 1 for each level of nesting.\n */\n level: number;\n /**\n * The uid of the component. This is used to determine the type of the\n * component. Within an attribute, it is normally the `component` value.\n * It will be undefined if the hook is not called within the confines\n * of a provider.\n */\n uid?: string;\n /**\n * The type of component parent. It will be undefined if the hook\n * is not called within the confines of a provider.\n */\n type?: 'dynamiczone' | 'repeatable' | 'component';\n}\n\n/**\n * We use this component to wrap any individual component field in the Edit View,\n * this could be a component field in a dynamic zone, a component within a repeatable space,\n * or even nested components.\n *\n * We primarily need this to provide the component id to the components so that they can\n * correctly fetch their relations.\n */\nconst [ComponentProvider, useComponent] = createContext<ComponentContextValue>('ComponentContext', {\n id: undefined,\n level: -1,\n uid: undefined,\n type: undefined,\n});\n\nexport { ComponentProvider, useComponent };\n","import * as React from 'react';\n\nimport {\n Box,\n Combobox,\n ComboboxOption,\n Flex,\n Icon,\n IconButton,\n TextButton,\n Tooltip,\n Typography,\n VisuallyHidden,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Cross, Drag, Refresh } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { FixedSizeList, ListChildComponentProps } from 'react-window';\nimport styled from 'styled-components';\n\nimport { type InputProps, useField, useForm } from '../../../../../components/Form';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useFocusInputField } from '../../../../../hooks/useFocusInputField';\nimport { useQueryParams } from '../../../../../hooks/useQueryParams';\nimport { RelationDragPreviewProps } from '../../../../components/DragPreviews/RelationDragPreview';\nimport { COLLECTION_TYPES } from '../../../../constants/collections';\nimport { ItemTypes } from '../../../../constants/dragAndDrop';\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { type EditFieldLayout } from '../../../../hooks/useDocumentLayout';\nimport {\n DROP_SENSITIVITY,\n UseDragAndDropOptions,\n useDragAndDrop,\n} from '../../../../hooks/useDragAndDrop';\nimport {\n useGetRelationsQuery,\n useLazySearchRelationsQuery,\n RelationResult,\n} from '../../../../services/relations';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getRelationLabel } from '../../../../utils/relations';\nimport { getTranslation } from '../../../../utils/translations';\nimport { DocumentStatus } from '../DocumentStatus';\n\nimport { useComponent } from './ComponentContext';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsField\n * -----------------------------------------------------------------------------------------------*/\nconst RELATIONS_TO_DISPLAY = 5;\nconst ONE_WAY_RELATIONS = ['oneWay', 'oneToOne', 'manyToOne', 'oneToManyMorph', 'oneToOneMorph'];\n\ntype RelationPosition =\n | (Pick<RelationResult, 'status' | 'locale'> & {\n before: string;\n end?: never;\n })\n | { end: boolean; before?: never; status?: never; locale?: never };\n\ninterface Relation extends Pick<RelationResult, 'documentId' | 'id' | 'locale' | 'status'> {\n href: string;\n label: string;\n position?: RelationPosition;\n __temp_key__: string;\n}\n\ninterface RelationsFieldProps\n extends Omit<Extract<EditFieldLayout, { type: 'relation' }>, 'size' | 'hint'>,\n Pick<InputProps, 'hint'> {}\n\ninterface RelationsFormValue {\n connect?: Relation[];\n disconnect?: Pick<Relation, 'id'>[];\n}\n\n/**\n * TODO: we get a rather ugly flash when we remove a single relation from the list leaving\n * no other relations when we press save. The initial relation re-renders, probably because\n * of the lag in the Form cleaning it's \"disconnect\" array, whilst our data has not been invalidated.\n *\n * Could we invalidate relation data on the document actions? Should we?\n */\n\n/**\n * @internal\n * @description The relations field holds a lot of domain logic for handling relations which is rather complicated\n * At present we do not expose this to plugin developers, however, they are able to overwrite it themselves should\n * they wish to do so.\n */\nconst RelationsField = React.forwardRef<HTMLDivElement, RelationsFieldProps>(\n ({ disabled, label, ...props }, ref) => {\n const [currentPage, setCurrentPage] = React.useState(1);\n const { document, model: documentModel } = useDoc();\n const documentId = document?.documentId;\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const params = buildValidParams(query);\n\n const isMorph = props.attribute.relation.toLowerCase().includes('morph');\n const isDisabled = isMorph || disabled;\n\n const { id: componentId, uid } = useComponent('RelationsField', ({ uid, id }) => ({ id, uid }));\n\n /**\n * We'll always have a documentId in a created entry, so we look for a componentId first.\n * Same with `uid` and `documentModel`.\n */\n const id = componentId ? componentId.toString() : documentId;\n const model = uid ?? documentModel;\n\n /**\n * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.\n * Where the above example would a nested field within two components, however\n * we only require the field on the component not the complete path since we query\n * individual components. Therefore we split the string and take the last item.\n */\n const [targetField] = props.name.split('.').slice(-1);\n\n const { data, isLoading, isFetching } = useGetRelationsQuery(\n {\n model,\n targetField,\n // below we don't run the query if there is no id.\n id: id!,\n params: {\n ...params,\n pageSize: RELATIONS_TO_DISPLAY,\n page: currentPage,\n },\n },\n {\n refetchOnMountOrArgChange: true,\n skip: !id,\n selectFromResult: (result) => {\n return {\n ...result,\n data: {\n ...result.data,\n results: result.data?.results ? result.data.results : [],\n },\n };\n },\n }\n );\n\n const handleLoadMore = () => {\n setCurrentPage((prev) => prev + 1);\n };\n\n const field = useField(props.name);\n\n const isFetchingMoreRelations = isLoading || isFetching;\n\n const realServerRelationsCount =\n 'pagination' in data && data.pagination ? data.pagination.total : 0;\n /**\n * Items that are already connected, but reordered would be in\n * this list, so to get an accurate figure, we remove them.\n */\n const relationsConnected =\n (field.value?.connect ?? []).filter(\n (rel: Relation) => data.results.findIndex((relation) => relation.id === rel.id) === -1\n ).length ?? 0;\n const relationsDisconnected = field.value?.disconnect?.length ?? 0;\n\n const relationsCount = realServerRelationsCount + relationsConnected - relationsDisconnected;\n\n /**\n * This is it, the source of truth for reordering in conjunction with partial loading & updating\n * of relations. Relations on load are given __temp_key__ when fetched, because we don't want to\n * create brand new keys everytime the data updates, just keep adding them onto the newly loaded ones.\n */\n const relations = React.useMemo(() => {\n const ctx = {\n field: field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}`,\n mainField: props.mainField,\n };\n\n /**\n * Tidy up our data.\n */\n const transformations = pipe(\n removeConnected(ctx),\n removeDisconnected(ctx),\n addLabelAndHref(ctx)\n );\n\n const transformedRels = transformations([...data.results]);\n\n /**\n * THIS IS CRUCIAL. If you don't sort by the __temp_key__ which comes from fractional indexing\n * then the list will be in the wrong order.\n */\n return [...transformedRels, ...(field.value?.connect ?? [])].sort((a, b) => {\n if (a.__temp_key__ < b.__temp_key__) return -1;\n if (a.__temp_key__ > b.__temp_key__) return 1;\n return 0;\n });\n }, [\n data.results,\n field.value,\n // @ts-expect-error – targetModel does exist on the attribute. But it's not typed.\n props.attribute.targetModel,\n props.mainField,\n ]);\n\n const handleConnect: RelationsInputProps['onChange'] = (relation) => {\n const [lastItemInList] = relations.slice(-1);\n\n const item = {\n id: relation.id,\n status: relation.status,\n /**\n * If there's a last item, that's the first key we use to generate out next one.\n */\n __temp_key__: generateNKeysBetween(lastItemInList?.__temp_key__ ?? null, null, 1)[0],\n // Fallback to `id` if there is no `mainField` value, which will overwrite the above `id` property with the exact same data.\n [props.mainField?.name ?? 'documentId']: relation[props.mainField?.name ?? 'documentId'],\n label: getRelationLabel(relation, props.mainField),\n // @ts-expect-error – targetModel does exist on the attribute, but it's not typed.\n href: `../${COLLECTION_TYPES}/${props.attribute.targetModel}/${relation.documentId}`,\n };\n\n if (ONE_WAY_RELATIONS.includes(props.attribute.relation)) {\n field.onChange(`${props.name}.connect`, [item]);\n } else {\n field.onChange(`${props.name}.connect`, [...(field.value?.connect ?? []), item]);\n }\n };\n\n return (\n <Flex\n ref={ref}\n direction=\"column\"\n gap={3}\n justifyContent=\"space-between\"\n alignItems=\"stretch\"\n wrap=\"wrap\"\n >\n <StyledFlex direction=\"column\" alignItems=\"start\" gap={2} width=\"100%\">\n <RelationsInput\n disabled={isDisabled}\n id={id}\n label={`${label} ${relationsCount > 0 ? `(${relationsCount})` : ''}`}\n model={model}\n onChange={handleConnect}\n {...props}\n />\n {'pagination' in data &&\n data.pagination &&\n data.pagination.pageCount > data.pagination.page ? (\n <TextButton\n disabled={isFetchingMoreRelations}\n onClick={handleLoadMore}\n loading={isFetchingMoreRelations}\n startIcon={<Refresh />}\n // prevent the label from line-wrapping\n shrink={0}\n >\n {formatMessage({\n id: getTranslation('relation.loadMore'),\n defaultMessage: 'Load More',\n })}\n </TextButton>\n ) : null}\n </StyledFlex>\n <RelationsList\n data={relations}\n serverData={data.results}\n disabled={isDisabled}\n name={props.name}\n isLoading={isFetchingMoreRelations}\n relationType={props.attribute.relation}\n />\n </Flex>\n );\n }\n);\n\n/**\n * TODO: this can be removed once we stop shipping Inputs with\n * labels wrapped round in DS@2.\n */\nconst StyledFlex = styled(Flex)`\n & > div {\n width: 100%;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Relation Transformations\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TransformationContext extends Pick<RelationsFieldProps, 'mainField'> {\n field?: RelationsFormValue;\n href: string;\n}\n\n/**\n * If it's in the connected array, it can get out of our data array,\n * we'll be putting it back in later and sorting it anyway.\n */\nconst removeConnected =\n ({ field }: TransformationContext) =>\n (relations: RelationResult[]) => {\n return relations.filter((relation) => {\n const connectedRelations = field?.connect ?? [];\n\n return connectedRelations.findIndex((rel) => rel.id === relation.id) === -1;\n });\n };\n\n/**\n * @description Removes relations that are in the `disconnect` array of the field\n */\nconst removeDisconnected =\n ({ field }: TransformationContext) =>\n (relations: RelationResult[]): RelationResult[] =>\n relations.filter((relation) => {\n const disconnectedRelations = field?.disconnect ?? [];\n\n return disconnectedRelations.findIndex((rel) => rel.id === relation.id) === -1;\n });\n\n/**\n * @description Adds a label and href to the relation object we use this to render\n * a better UI where we can link to the relation and display a human-readable label.\n */\nconst addLabelAndHref =\n ({ mainField, href }: TransformationContext) =>\n (relations: RelationResult[]): Relation[] =>\n relations.map((relation) => {\n return {\n ...relation,\n // Fallback to `id` if there is no `mainField` value, which will overwrite the above `documentId` property with the exact same data.\n [mainField?.name ?? 'documentId']: relation[mainField?.name ?? 'documentId'],\n label: getRelationLabel(relation, mainField),\n href: `${href}/${relation.documentId}`,\n };\n });\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RelationsInputProps extends Omit<RelationsFieldProps, 'type'> {\n id?: string;\n model: string;\n onChange: (\n relation: Pick<RelationResult, 'documentId' | 'id' | 'locale' | 'status'> & {\n [key: string]: any;\n }\n ) => void;\n}\n\n/**\n * @description Contains all the logic for the combobox that can search\n * for relations and then add them to the field's connect array.\n */\nconst RelationsInput = ({\n disabled,\n hint,\n id,\n label,\n model,\n name,\n mainField,\n placeholder,\n required,\n onChange,\n}: RelationsInputProps) => {\n const [textValue, setTextValue] = React.useState<string | undefined>('');\n const [searchParams, setSearchParams] = React.useState({\n _q: '',\n page: 1,\n });\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams();\n\n const { formatMessage } = useIntl();\n const fieldRef = useFocusInputField(name);\n const field = useField<RelationsFormValue>(name);\n\n const [searchForTrigger, { data, isLoading }] = useLazySearchRelationsQuery();\n\n /**\n * Because we're using a lazy query, we need to trigger the search\n * when the component mounts and when the search params change.\n * We also need to trigger the search when the field value changes\n * so that we can filter out the relations that are already connected.\n */\n React.useEffect(() => {\n /**\n * The `name` prop is a complete path to the field, e.g. `field1.field2.field3`.\n * Where the above example would a nested field within two components, however\n * we only require the field on the component not the complete path since we query\n * individual components. Therefore we split the string and take the last item.\n */\n const [targetField] = name.split('.').slice(-1);\n searchForTrigger({\n model,\n targetField,\n params: {\n ...buildValidParams(query),\n id: id ?? '',\n pageSize: 10,\n idsToInclude: field.value?.disconnect?.map((rel) => rel.id.toString()) ?? [],\n idsToOmit: field.value?.connect?.map((rel) => rel.id.toString()) ?? [],\n ...searchParams,\n },\n });\n }, [\n field.value?.connect,\n field.value?.disconnect,\n id,\n model,\n name,\n query,\n searchForTrigger,\n searchParams,\n ]);\n\n const handleSearch = async (search: string) => {\n setSearchParams((s) => ({ ...s, _q: search, page: 1 }));\n };\n\n const hasNextPage = data?.pagination ? data.pagination.page < data.pagination.pageCount : false;\n\n const options = data?.results ?? [];\n\n const handleChange = (relationId?: string) => {\n if (!relationId) {\n return;\n }\n\n const relation = options.find((opt) => opt.id.toString() === relationId);\n\n if (!relation) {\n // This is very unlikely to happen, but it ensures we don't have any data for.\n console.error(\n \"You've tried to add a relation with an id that does not exist in the options you can see, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('relation.error-adding-relation'),\n defaultMessage: 'An error occurred while trying to add the relation.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n /**\n * You need to give this relation a correct _temp_key_ but\n * this component doesn't know about those ones, you can't rely\n * on the connect array because that doesn't hold items that haven't\n * moved. So use a callback to fill in the gaps when connecting.\n *\n */\n onChange(relation);\n };\n\n const handleLoadMore = () => {\n if (!data || !data.pagination) {\n return;\n } else if (data.pagination.page < data.pagination.pageCount) {\n setSearchParams((s) => ({ ...s, page: s.page + 1 }));\n }\n };\n\n React.useLayoutEffect(() => {\n setTextValue('');\n }, [field.value]);\n\n return (\n <Combobox\n ref={fieldRef}\n autocomplete=\"none\"\n error={field.error}\n name={name}\n hint={hint}\n required={required}\n label={label}\n disabled={disabled}\n placeholder={\n placeholder ||\n formatMessage({\n id: getTranslation('relation.add'),\n defaultMessage: 'Add relation',\n })\n }\n hasMoreItems={hasNextPage}\n loading={isLoading}\n onOpenChange={() => {\n handleSearch(textValue ?? '');\n }}\n noOptionsMessage={() =>\n formatMessage({\n id: getTranslation('relation.notAvailable'),\n defaultMessage: 'No relations available',\n })\n }\n loadingMessage={formatMessage({\n id: getTranslation('relation.isLoading'),\n defaultMessage: 'Relations are loading',\n })}\n onLoadMore={handleLoadMore}\n textValue={textValue}\n onChange={handleChange}\n onTextValueChange={(text) => {\n setTextValue(text);\n }}\n onInputChange={(event) => {\n handleSearch(event.currentTarget.value);\n }}\n >\n {options.map((opt) => {\n const textValue = getRelationLabel(opt, mainField);\n\n return (\n <ComboboxOption key={opt.id} value={opt.id.toString()} textValue={textValue}>\n <Flex gap={2} justifyContent=\"space-between\">\n <Typography ellipsis>{textValue}</Typography>\n {opt.status ? <DocumentStatus status={opt.status} /> : null}\n </Flex>\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationsList\n * -----------------------------------------------------------------------------------------------*/\nconst RELATION_ITEM_HEIGHT = 50;\nconst RELATION_GUTTER = 4;\n\ninterface RelationsListProps extends Pick<RelationsFieldProps, 'disabled' | 'name'> {\n data: Relation[];\n isLoading?: boolean;\n relationType: Schema.Attribute.RelationKind.Any;\n /**\n * The existing relations connected on the server. We need these to diff against.\n */\n serverData: RelationResult[];\n}\n\nconst RelationsList = ({\n data,\n serverData,\n disabled,\n name,\n isLoading,\n relationType,\n}: RelationsListProps) => {\n const ariaDescriptionId = React.useId();\n const { formatMessage } = useIntl();\n const listRef = React.useRef<FixedSizeList>(null);\n const outerListRef = React.useRef<HTMLUListElement>(null);\n const [overflow, setOverflow] = React.useState<'top' | 'bottom' | 'top-bottom'>();\n const [liveText, setLiveText] = React.useState('');\n const field = useField(name);\n const removeFieldRow = useForm('RelationsList', (state) => state.removeFieldRow);\n const addFieldRow = useForm('RelationsList', (state) => state.addFieldRow);\n\n React.useEffect(() => {\n if (data.length <= RELATIONS_TO_DISPLAY) {\n return setOverflow(undefined);\n }\n\n const handleNativeScroll = (e: Event) => {\n const el = e.target as HTMLUListElement;\n const parentScrollContainerHeight = (el.parentNode as HTMLDivElement).scrollHeight;\n const maxScrollBottom = el.scrollHeight - el.scrollTop;\n\n if (el.scrollTop === 0) {\n return setOverflow('bottom');\n }\n\n if (maxScrollBottom === parentScrollContainerHeight) {\n return setOverflow('top');\n }\n\n return setOverflow('top-bottom');\n };\n\n const outerListRefCurrent = outerListRef?.current;\n\n if (!isLoading && data.length > 0 && outerListRefCurrent) {\n outerListRef.current.addEventListener('scroll', handleNativeScroll);\n }\n\n return () => {\n if (outerListRefCurrent) {\n outerListRefCurrent.removeEventListener('scroll', handleNativeScroll);\n }\n };\n }, [isLoading, data.length]);\n\n const getItemPos = (index: number) => `${index + 1} of ${data.length}`;\n\n const handleMoveItem: UseDragAndDropOptions['onMoveItem'] = (newIndex, oldIndex) => {\n const item = data[oldIndex];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.reorder'),\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(newIndex),\n }\n )\n );\n\n /**\n * Splicing mutates the array, so we need to create a new array\n */\n const newData = [...data];\n const currentRow = data[oldIndex];\n\n const startKey =\n oldIndex > newIndex ? newData[newIndex - 1]?.__temp_key__ : newData[newIndex]?.__temp_key__;\n const endKey =\n oldIndex > newIndex ? newData[newIndex]?.__temp_key__ : newData[newIndex + 1]?.__temp_key__;\n\n /**\n * We're moving the relation between two other relations, so\n * we need to generate a new key that keeps the order\n */\n const [newKey] = generateNKeysBetween(startKey, endKey, 1);\n\n newData.splice(oldIndex, 1);\n newData.splice(newIndex, 0, { ...currentRow, __temp_key__: newKey });\n\n /**\n * Now we diff against the server to understand what's different so we\n * can keep the connect array nice and tidy. It also needs reversing because\n * we reverse the relations from the server in the first place.\n */\n const connectedRelations = newData\n .reduce<Relation[]>((acc, relation, currentIndex, array) => {\n const relationOnServer = serverData.find(\n (oldRelation) => oldRelation.documentId === relation.documentId\n );\n\n const relationInFront = array[currentIndex + 1];\n\n if (!relationOnServer || relationOnServer.__temp_key__ !== relation.__temp_key__) {\n const position = relationInFront\n ? {\n before: relationInFront.documentId,\n locale: relationInFront.locale,\n status: relationInFront.status,\n }\n : { end: true };\n\n const relationWithPosition: Relation = { ...relation, position };\n\n return [...acc, relationWithPosition];\n }\n\n return acc;\n }, [])\n .toReversed();\n\n field.onChange(`${name}.connect`, connectedRelations);\n };\n\n const handleGrabItem: UseDragAndDropOptions['onGrabItem'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.grab-item'),\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: item.label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropItem: UseDragAndDropOptions['onDropItem'] = (index) => {\n const { href: _href, label, ...item } = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.drop-item'),\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: label ?? item.documentId,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancel: UseDragAndDropOptions['onCancel'] = (index) => {\n const item = data[index];\n\n setLiveText(\n formatMessage(\n {\n id: getTranslation('dnd.cancel-item'),\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: item.label ?? item.documentId,\n }\n )\n );\n };\n\n const handleDisconnect: ListItemProps['data']['handleDisconnect'] = (relation) => {\n if (field.value && field.value.connect) {\n /**\n * A relation will exist in the `connect` array _if_ it has\n * been added without saving. In this case, we just remove it\n * from the connect array\n */\n const indexOfRelationInConnectArray = field.value.connect.findIndex(\n (rel: NonNullable<RelationsFormValue['connect']>[number]) => rel.id === relation.id\n );\n\n if (indexOfRelationInConnectArray >= 0) {\n removeFieldRow(`${name}.connect`, indexOfRelationInConnectArray);\n return;\n }\n }\n\n addFieldRow(`${name}.disconnect`, { id: relation.id });\n };\n\n /**\n * These relation types will only ever have one item\n * in their list, so you can't reorder a single item!\n */\n const canReorder = !ONE_WAY_RELATIONS.includes(relationType);\n\n const dynamicListHeight =\n data.length > RELATIONS_TO_DISPLAY\n ? Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER) +\n RELATION_ITEM_HEIGHT / 2\n : Math.min(data.length, RELATIONS_TO_DISPLAY) * (RELATION_ITEM_HEIGHT + RELATION_GUTTER);\n\n return (\n <ShadowBox overflowDirection={overflow}>\n <VisuallyHidden id={ariaDescriptionId}>\n {formatMessage({\n id: getTranslation('dnd.instructions'),\n defaultMessage: `Press spacebar to grab and re-order`,\n })}\n </VisuallyHidden>\n <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>\n {/* @ts-expect-error – width is expected, but we've not needed to pass it before. */}\n <FixedSizeList\n height={dynamicListHeight}\n ref={listRef}\n outerRef={outerListRef}\n itemCount={data.length}\n itemSize={RELATION_ITEM_HEIGHT + RELATION_GUTTER}\n itemData={{\n ariaDescribedBy: ariaDescriptionId,\n canDrag: canReorder,\n disabled,\n handleCancel,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n handleDisconnect,\n relations: data,\n }}\n itemKey={(index) => data[index].id}\n innerElementType=\"ol\"\n >\n {ListItem}\n </FixedSizeList>\n </ShadowBox>\n );\n};\n\nconst ShadowBox = styled(Box)<{ overflowDirection?: 'top-bottom' | 'top' | 'bottom' }>`\n position: relative;\n overflow: hidden;\n flex: 1;\n\n &:before,\n &:after {\n position: absolute;\n width: 100%;\n height: 4px;\n z-index: 1;\n }\n\n &:before {\n /* TODO: as for DS Table component we would need this to be handled by the DS theme */\n content: '';\n background: linear-gradient(rgba(3, 3, 5, 0.2) 0%, rgba(0, 0, 0, 0) 100%);\n top: 0;\n opacity: ${({ overflowDirection }) =>\n overflowDirection === 'top-bottom' || overflowDirection === 'top' ? 1 : 0};\n transition: opacity 0.2s ease-in-out;\n }\n\n &:after {\n /* TODO: as for DS Table component we would need this to be handled by the DS theme */\n content: '';\n background: linear-gradient(0deg, rgba(3, 3, 5, 0.2) 0%, rgba(0, 0, 0, 0) 100%);\n bottom: 0;\n opacity: ${({ overflowDirection }) =>\n overflowDirection === 'top-bottom' || overflowDirection === 'bottom' ? 1 : 0};\n transition: opacity 0.2s ease-in-out;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ListItem\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ListItemProps extends Pick<ListChildComponentProps, 'style' | 'index'> {\n data: {\n ariaDescribedBy: string;\n canDrag?: boolean;\n disabled?: boolean;\n handleCancel: UseDragAndDropOptions['onCancel'];\n handleDropItem: UseDragAndDropOptions['onDropItem'];\n handleGrabItem: UseDragAndDropOptions['onGrabItem'];\n handleMoveItem: UseDragAndDropOptions['onMoveItem'];\n handleDisconnect: (relation: Relation) => void;\n name: string;\n relations: Relation[];\n };\n}\n\nconst ListItem = ({ data, index, style }: ListItemProps) => {\n const {\n ariaDescribedBy,\n canDrag = false,\n disabled = false,\n handleCancel,\n handleDisconnect,\n handleDropItem,\n handleGrabItem,\n handleMoveItem,\n name,\n relations,\n } = data;\n const { formatMessage } = useIntl();\n\n const { href, documentId, label, status } = relations[index];\n\n const [{ handlerId, isDragging, handleKeyDown }, relationRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop<number, Omit<RelationDragPreviewProps, 'width'>, HTMLDivElement>(\n canDrag && !disabled,\n {\n type: `${ItemTypes.RELATION}_${name}`,\n index,\n item: {\n displayedValue: label,\n status,\n id: documentId,\n index,\n },\n onMoveItem: handleMoveItem,\n onDropItem: handleDropItem,\n onGrabItem: handleGrabItem,\n onCancel: handleCancel,\n dropSensitivity: DROP_SENSITIVITY.REGULAR,\n }\n );\n\n const composedRefs = useComposedRefs<HTMLDivElement>(relationRef, dragRef);\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage());\n }, [dragPreviewRef]);\n\n return (\n <Box\n style={style}\n as=\"li\"\n ref={dropRef}\n aria-describedby={ariaDescribedBy}\n cursor={canDrag ? 'all-scroll' : 'default'}\n >\n {isDragging ? (\n <RelationItemPlaceholder />\n ) : (\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={canDrag ? 2 : 4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background={disabled ? 'neutral150' : 'neutral0'}\n justifyContent=\"space-between\"\n ref={composedRefs}\n data-handler-id={handlerId}\n >\n <FlexWrapper gap={1}>\n {canDrag ? (\n <IconButton\n forwardedAs=\"div\"\n role=\"button\"\n tabIndex={0}\n aria-label={formatMessage({\n id: getTranslation('components.RelationInput.icon-button-aria-label'),\n defaultMessage: 'Drag',\n })}\n borderWidth={0}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n >\n <Drag />\n </IconButton>\n ) : null}\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip description={label}>\n {href ? (\n <LinkEllipsis forwardedAs={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n ) : (\n <Typography textColor={disabled ? 'neutral600' : 'primary600'} ellipsis>\n {label}\n </Typography>\n )}\n </Tooltip>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <Box paddingLeft={4}>\n <DisconnectButton\n disabled={disabled}\n type=\"button\"\n onClick={() => handleDisconnect(relations[index])}\n aria-label={formatMessage({\n id: getTranslation('relation.disconnect'),\n defaultMessage: 'Remove',\n })}\n >\n <Icon width=\"12px\" as={Cross} />\n </DisconnectButton>\n </Box>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst FlexWrapper = styled(Flex)`\n width: 100%;\n /* Used to prevent endAction to be pushed out of container */\n min-width: 0;\n\n & > div[role='button'] {\n cursor: all-scroll;\n }\n`;\n\nconst DisconnectButton = styled.button`\n svg path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.neutral500};\n }\n\n &:hover svg path,\n &:focus svg path {\n fill: ${({ theme, disabled }) => !disabled && theme.colors.neutral600};\n }\n`;\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst RelationItemPlaceholder = () => (\n <Box\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n background=\"primary100\"\n height={`calc(100% - ${RELATION_GUTTER}px)`}\n />\n);\n\nexport { RelationsField as RelationsInput, FlexWrapper, DisconnectButton, LinkEllipsis };\nexport type { RelationsFieldProps };\n","import { Box, Flex, Icon, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n >\n <FlexWrapper gap={1}>\n <IconButton aria-label=\"\" borderWidth={0}>\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <Box paddingLeft={4}>\n <DisconnectButton type=\"button\">\n <Icon width=\"12px\" as={Cross} />\n </DisconnectButton>\n </Box>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport {\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system/v2';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../core/store/hooks';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { getTranslation } from '../utils/translations';\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager_app'].collectionTypeLinks\n );\n const singleTypeLinks = useTypedSelector((state) => state['content-manager_app'].singleTypeLinks);\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content',\n });\n\n return (\n <SubNav ariaLabel={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLink\n as={NavLink}\n key={link.uid}\n // @ts-expect-error – DS inference does not work with the `as` prop.\n to={{\n pathname: link.to,\n /**\n * We re-add the plugins query to the params available in the menu,\n * this means once you've changed the locale in the app, you continue\n * to see the same locale when changing content-type.\n *\n * NOTE: if you go to a content-type that does not have i18n enabled,\n * we return the default documents anyway.\n */\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: query.plugins,\n }),\n }}\n >\n {link.title}\n </SubNavLink>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nimport { contentManagerApi } from './api';\n\nconst contentTypesApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getContentTypeConfiguration: builder.query<\n Contracts.ContentTypes.FindContentTypeConfiguration.Response['data'],\n string\n >({\n query: (uid) => ({\n url: `/content-manager/content-types/${uid}/configuration`,\n method: 'GET',\n }),\n transformResponse: (response: Contracts.ContentTypes.FindContentTypeConfiguration.Response) =>\n response.data,\n providesTags: (_result, _error, uid) => [\n { type: 'ContentTypesConfiguration', id: uid },\n { type: 'ContentTypeSettings', id: 'LIST' },\n ],\n }),\n getAllContentTypeSettings: builder.query<\n Contracts.ContentTypes.FindContentTypesSettings.Response['data'],\n void\n >({\n query: () => '/content-manager/content-types-settings',\n transformResponse: (response: Contracts.ContentTypes.FindContentTypesSettings.Response) =>\n response.data,\n providesTags: [{ type: 'ContentTypeSettings', id: 'LIST' }],\n }),\n updateContentTypeConfiguration: builder.mutation<\n Contracts.ContentTypes.UpdateContentTypeConfiguration.Response['data'],\n Contracts.ContentTypes.UpdateContentTypeConfiguration.Request['body'] & {\n uid: string;\n }\n >({\n query: ({ uid, ...body }) => ({\n url: `/content-manager/content-types/${uid}/configuration`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (\n response: Contracts.ContentTypes.UpdateContentTypeConfiguration.Response\n ) => response.data,\n invalidatesTags: (_result, _error, { uid }) => [\n { type: 'ContentTypesConfiguration', id: uid },\n { type: 'ContentTypeSettings', id: 'LIST' },\n // Is this necessary?\n { type: 'InitialData' },\n ],\n }),\n }),\n});\n\nconst {\n useGetContentTypeConfigurationQuery,\n useGetAllContentTypeSettingsQuery,\n useUpdateContentTypeConfigurationMutation,\n} = contentTypesApi;\n\nexport {\n useGetContentTypeConfigurationQuery,\n useGetAllContentTypeSettingsQuery,\n useUpdateContentTypeConfigurationMutation,\n};\n","import { useEffect } from 'react';\n\nimport { useNotifyAT } from '@strapi/design-system';\nimport { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { HOOKS } from '../../constants';\nimport { useTypedDispatch, useTypedSelector } from '../../core/store/hooks';\nimport { useAuth, Permission } from '../../features/Auth';\nimport { useNotification } from '../../features/Notifications';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { ContentManagerAppState, SET_INIT_DATA } from '../layout';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): ContentManagerAppState => {\n const dispatch = useTypedDispatch();\n const { toggleNotification } = useNotification();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager_app']);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Contracts.Components.Component[],\n contentTypes: Contracts.ContentTypes.ContentType[],\n fieldSizes: Contracts.Init.GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: Contracts.ContentTypes.FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: Contracts.ContentTypes.ContentType[];\n singleType: Contracts.ContentTypes.ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index]\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index]\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch({\n type: SET_INIT_DATA,\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n contentTypeSchemas: contentTypes,\n components,\n fieldSizes,\n });\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: Contracts.ContentTypes.ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: Contracts.ContentTypes.FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { AnyAction } from '@reduxjs/toolkit';\nimport { Layout as DSLayout } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport { Helmet } from 'react-helmet';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from '../components/DragLayer';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { Page } from '../components/PageHelpers';\n\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useIsHistoryRoute } from './history/routes';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\nimport type { ContentManagerLink } from './hooks/useContentManagerInitData';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n // Check if we're on a history route to known if we should render the left menu\n const isHistoryRoute = useIsHistoryRoute();\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Helmet\n title={formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n />\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n />\n );\n }\n\n return (\n <>\n <Helmet\n title={formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n />\n {isHistoryRoute ? (\n <Outlet />\n ) : (\n <DSLayout sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </DSLayout>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SET_INIT_DATA = 'ContentManager/App/SET_INIT_DATA';\n\ninterface SetInitDataAction {\n type: typeof SET_INIT_DATA;\n authorizedCollectionTypeLinks: ContentManagerAppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: ContentManagerAppState['singleTypeLinks'];\n components: ContentManagerAppState['components'];\n contentTypeSchemas: ContentManagerAppState['models'];\n fieldSizes: ContentManagerAppState['fieldSizes'];\n}\n\ninterface ContentManagerAppState {\n collectionTypeLinks: ContentManagerLink[];\n components: Contracts.Init.GetInitData.Response['data']['components'];\n fieldSizes: Contracts.Init.GetInitData.Response['data']['fieldSizes'];\n models: Contracts.Init.GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n} satisfies ContentManagerAppState;\n\nconst reducer = (state: ContentManagerAppState = initialState, action: AnyAction) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case SET_INIT_DATA: {\n const initDataAction = action as SetInitDataAction;\n draftState.collectionTypeLinks = initDataAction.authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.singleTypeLinks = initDataAction.authorizedSingleTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.components = initDataAction.components;\n draftState.models = initDataAction.contentTypeSchemas;\n draftState.fieldSizes = initDataAction.fieldSizes;\n draftState.isLoading = false;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport { Layout, reducer };\nexport type { ContentManagerAppState };\n","import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport type { Permission } from '../../features/Auth';\n\ninterface SyncRbacState {\n permissions: Permission[] | undefined;\n}\n\nconst initialState: SyncRbacState = {\n permissions: undefined,\n};\n\nconst rbacSlice = createSlice({\n name: 'rbac',\n initialState,\n reducers: {\n setPermissions(\n state,\n action: PayloadAction<{\n permissions: Record<string, Permission[]>;\n __meta__?: {\n plugins?: object;\n containerName: string;\n };\n }>\n ) {\n state.permissions = Object.values(action.payload.permissions).reduce<\n NonNullable<SyncRbacState['permissions']>\n >((acc, current) => {\n return [...acc, ...current];\n }, []);\n },\n resetPermissions(state) {\n state.permissions = undefined;\n },\n },\n});\n\nconst { actions, reducer } = rbacSlice;\nconst { setPermissions, resetPermissions } = actions;\n\nexport { reducer, setPermissions, resetPermissions };\nexport type { SyncRbacState };\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as rbacReducer } from './rbac';\n\nconst reducer = combineReducers({\n rbac: rbacReducer,\n});\n\nexport { reducer };\n"],"names":["reducer","instance","qs","result","token","Error","createContext","initialState","currentStep","attributes","translatedErrors","contentType","components","error","ref","item","uid","id","textValue","state","DSLayout","rbacReducer"],"mappings":"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"}