@strapi/admin 4.20.2 → 4.20.4

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 (232) hide show
  1. package/dist/_chunks/{AdminSeatInfo-zkOV49A8.js → AdminSeatInfo-9cSpeWWp.js} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-zkOV49A8.js.map → AdminSeatInfo-9cSpeWWp.js.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-VkSqB0Dg.mjs → AdminSeatInfo-IZMiKB-_.mjs} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-VkSqB0Dg.mjs.map → AdminSeatInfo-IZMiKB-_.mjs.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-3CV5_xCk.mjs → AuthenticatedApp-FKtpxGn5.mjs} +23 -23
  6. package/dist/_chunks/{AuthenticatedApp-3CV5_xCk.mjs.map → AuthenticatedApp-FKtpxGn5.mjs.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-ejf761Rx.js → AuthenticatedApp-VMottKnI.js} +23 -23
  8. package/dist/_chunks/{AuthenticatedApp-ejf761Rx.js.map → AuthenticatedApp-VMottKnI.js.map} +1 -1
  9. package/dist/_chunks/{CreateActionEE-Ho3OwfvE.mjs → CreateActionEE-oYq0Ptw4.mjs} +2 -2
  10. package/dist/_chunks/{CreateActionEE-Ho3OwfvE.mjs.map → CreateActionEE-oYq0Ptw4.mjs.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE-dhaq5sbW.js → CreateActionEE-saIAShnR.js} +2 -2
  12. package/dist/_chunks/{CreateActionEE-dhaq5sbW.js.map → CreateActionEE-saIAShnR.js.map} +1 -1
  13. package/dist/_chunks/{CreatePage-nN8IugS8.js → CreatePage-5SwBLUfK.js} +3 -3
  14. package/dist/_chunks/{CreatePage-nN8IugS8.js.map → CreatePage-5SwBLUfK.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-P61DuWG4.mjs → CreatePage-8azm2joF.mjs} +6 -6
  16. package/dist/_chunks/{CreatePage-P61DuWG4.mjs.map → CreatePage-8azm2joF.mjs.map} +1 -1
  17. package/dist/_chunks/{CreatePage-GzdH4LbW.js → CreatePage-MACIPS8o.js} +8 -8
  18. package/dist/_chunks/{CreatePage-GzdH4LbW.js.map → CreatePage-MACIPS8o.js.map} +1 -1
  19. package/dist/_chunks/{CreatePage-N1PnEsIi.mjs → CreatePage-U5i8fNmY.mjs} +3 -3
  20. package/dist/_chunks/{CreatePage-N1PnEsIi.mjs.map → CreatePage-U5i8fNmY.mjs.map} +1 -1
  21. package/dist/_chunks/{CreatePage-cBK-eOPh.mjs → CreatePage-Ygam32G2.mjs} +8 -8
  22. package/dist/_chunks/{CreatePage-cBK-eOPh.mjs.map → CreatePage-Ygam32G2.mjs.map} +1 -1
  23. package/dist/_chunks/{CreatePage-1jL64Mb6.js → CreatePage-c5fVtthX.js} +6 -6
  24. package/dist/_chunks/{CreatePage-1jL64Mb6.js.map → CreatePage-c5fVtthX.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-UlLxS0SX.mjs → CreateView-BZiXWQwU.mjs} +6 -6
  26. package/dist/_chunks/{CreateView-UlLxS0SX.mjs.map → CreateView-BZiXWQwU.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-OtqjuCLO.mjs → CreateView-_ROGDfSe.mjs} +6 -6
  28. package/dist/_chunks/{CreateView-OtqjuCLO.mjs.map → CreateView-_ROGDfSe.mjs.map} +1 -1
  29. package/dist/_chunks/{CreateView-E885m_yD.js → CreateView-my4tNhs8.js} +6 -6
  30. package/dist/_chunks/{CreateView-E885m_yD.js.map → CreateView-my4tNhs8.js.map} +1 -1
  31. package/dist/_chunks/{CreateView-G5U_zViI.js → CreateView-y5qpDsf7.js} +6 -6
  32. package/dist/_chunks/{CreateView-G5U_zViI.js.map → CreateView-y5qpDsf7.js.map} +1 -1
  33. package/dist/_chunks/{EditPage-v8aj7VWT.mjs → EditPage-2dZ7Didb.mjs} +6 -6
  34. package/dist/_chunks/{EditPage-v8aj7VWT.mjs.map → EditPage-2dZ7Didb.mjs.map} +1 -1
  35. package/dist/_chunks/{EditPage-SV0aTUxB.js → EditPage-5JMBEHOq.js} +6 -6
  36. package/dist/_chunks/{EditPage-SV0aTUxB.js.map → EditPage-5JMBEHOq.js.map} +1 -1
  37. package/dist/_chunks/{EditPage-6kwStQrU.mjs → EditPage-A5pZLHyM.mjs} +4 -4
  38. package/dist/_chunks/{EditPage-6kwStQrU.mjs.map → EditPage-A5pZLHyM.mjs.map} +1 -1
  39. package/dist/_chunks/{EditPage-WSsPZ1Z8.mjs → EditPage-PXkhvYbn.mjs} +6 -6
  40. package/dist/_chunks/{EditPage-WSsPZ1Z8.mjs.map → EditPage-PXkhvYbn.mjs.map} +1 -1
  41. package/dist/_chunks/{EditPage-bVTACdA1.js → EditPage-Qu27zt5G.js} +9 -9
  42. package/dist/_chunks/{EditPage-bVTACdA1.js.map → EditPage-Qu27zt5G.js.map} +1 -1
  43. package/dist/_chunks/{EditPage-lVhEDrOc.mjs → EditPage-lD4OQN1_.mjs} +9 -9
  44. package/dist/_chunks/{EditPage-lVhEDrOc.mjs.map → EditPage-lD4OQN1_.mjs.map} +1 -1
  45. package/dist/_chunks/{EditPage-0gYeskSg.js → EditPage-sFUIJLxL.js} +4 -4
  46. package/dist/_chunks/{EditPage-0gYeskSg.js.map → EditPage-sFUIJLxL.js.map} +1 -1
  47. package/dist/_chunks/{EditPage-eW3Cczmp.js → EditPage-xD9UGfCa.js} +6 -6
  48. package/dist/_chunks/{EditPage-eW3Cczmp.js.map → EditPage-xD9UGfCa.js.map} +1 -1
  49. package/dist/_chunks/{EditView-9LzBDlKi.mjs → EditView-ArtwB2hE.mjs} +7 -5
  50. package/dist/_chunks/EditView-ArtwB2hE.mjs.map +1 -0
  51. package/dist/_chunks/{EditView-LfuDLid0.js → EditView-x-J2N1ej.js} +7 -5
  52. package/dist/_chunks/EditView-x-J2N1ej.js.map +1 -0
  53. package/dist/_chunks/{EditViewPage-8n2AZ7YX.mjs → EditViewPage-7rQGA5pS.mjs} +7 -7
  54. package/dist/_chunks/{EditViewPage-8n2AZ7YX.mjs.map → EditViewPage-7rQGA5pS.mjs.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-FpEY5mPY.js → EditViewPage-kioXXfuP.js} +7 -7
  56. package/dist/_chunks/{EditViewPage-FpEY5mPY.js.map → EditViewPage-kioXXfuP.js.map} +1 -1
  57. package/dist/_chunks/{EventsTable-O66id4Eg.js → EventsTable-tQN7Kxkg.js} +24 -12
  58. package/dist/_chunks/EventsTable-tQN7Kxkg.js.map +1 -0
  59. package/dist/_chunks/{EventsTable-hwwD5TyQ.mjs → EventsTable-yJP3KCo9.mjs} +25 -13
  60. package/dist/_chunks/EventsTable-yJP3KCo9.mjs.map +1 -0
  61. package/dist/_chunks/{HomePage-6_B1jj3V.mjs → HomePage-6Ua7KUdf.mjs} +6 -6
  62. package/dist/_chunks/{HomePage-6_B1jj3V.mjs.map → HomePage-6Ua7KUdf.mjs.map} +1 -1
  63. package/dist/_chunks/{HomePage-H0PM_ncf.js → HomePage-Rhag1CPK.js} +6 -6
  64. package/dist/_chunks/{HomePage-H0PM_ncf.js.map → HomePage-Rhag1CPK.js.map} +1 -1
  65. package/dist/_chunks/{HomePage-QusuS2eI.js → HomePage-gFS-q0IU.js} +5 -5
  66. package/dist/_chunks/{HomePage-QusuS2eI.js.map → HomePage-gFS-q0IU.js.map} +1 -1
  67. package/dist/_chunks/{HomePage-qAFOalu_.mjs → HomePage-xDNIroqJ.mjs} +5 -5
  68. package/dist/_chunks/{HomePage-qAFOalu_.mjs.map → HomePage-xDNIroqJ.mjs.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-vn_u-K8I.mjs → InformationBoxEE-FT-zOby4.mjs} +3 -3
  70. package/dist/_chunks/{InformationBoxEE-vn_u-K8I.mjs.map → InformationBoxEE-FT-zOby4.mjs.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-xK3NdlR6.js → InformationBoxEE-LXF_HZCc.js} +3 -3
  72. package/dist/_chunks/{InformationBoxEE-xK3NdlR6.js.map → InformationBoxEE-LXF_HZCc.js.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage-3kMUuR6W.js → InstalledPluginsPage-86OzWsBR.js} +3 -3
  74. package/dist/_chunks/{InstalledPluginsPage-3kMUuR6W.js.map → InstalledPluginsPage-86OzWsBR.js.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-ussdZ2v_.mjs → InstalledPluginsPage-PxcyuL3K.mjs} +3 -3
  76. package/dist/_chunks/{InstalledPluginsPage-ussdZ2v_.mjs.map → InstalledPluginsPage-PxcyuL3K.mjs.map} +1 -1
  77. package/dist/_chunks/{Layout-B0-H9OuC.js → Layout-wbTGXdLJ.js} +2 -2
  78. package/dist/_chunks/{Layout-B0-H9OuC.js.map → Layout-wbTGXdLJ.js.map} +1 -1
  79. package/dist/_chunks/{Layout-yxE0n8WS.mjs → Layout-wyY8eyNA.mjs} +2 -2
  80. package/dist/_chunks/{Layout-yxE0n8WS.mjs.map → Layout-wyY8eyNA.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-yUsCF8ZV.js → ListPage-9mrFiaQm.js} +6 -6
  82. package/dist/_chunks/{ListPage-yUsCF8ZV.js.map → ListPage-9mrFiaQm.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-7K1X0pX6.mjs → ListPage-By4B7n1l.mjs} +7 -7
  84. package/dist/_chunks/{ListPage-7K1X0pX6.mjs.map → ListPage-By4B7n1l.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-IYnn3ati.mjs → ListPage-IgWMe693.mjs} +2 -2
  86. package/dist/_chunks/{ListPage-IYnn3ati.mjs.map → ListPage-IgWMe693.mjs.map} +1 -1
  87. package/dist/_chunks/{ListPage-dFBewK6l.mjs → ListPage-XqGIbYt6.mjs} +8 -8
  88. package/dist/_chunks/{ListPage-dFBewK6l.mjs.map → ListPage-XqGIbYt6.mjs.map} +1 -1
  89. package/dist/_chunks/{ListPage-yB1N85Sy.js → ListPage-ZVGJxWN_.js} +3 -3
  90. package/dist/_chunks/{ListPage-yB1N85Sy.js.map → ListPage-ZVGJxWN_.js.map} +1 -1
  91. package/dist/_chunks/{ListPage-ObcNzrqu.js → ListPage-cqCdPKED.js} +7 -7
  92. package/dist/_chunks/{ListPage-ObcNzrqu.js.map → ListPage-cqCdPKED.js.map} +1 -1
  93. package/dist/_chunks/{ListPage-gXAXkKs7.mjs → ListPage-iIZOJJjA.mjs} +4 -4
  94. package/dist/_chunks/{ListPage-gXAXkKs7.mjs.map → ListPage-iIZOJJjA.mjs.map} +1 -1
  95. package/dist/_chunks/{ListPage-Li-qQ_Az.js → ListPage-kpat6sMn.js} +4 -4
  96. package/dist/_chunks/{ListPage-Li-qQ_Az.js.map → ListPage-kpat6sMn.js.map} +1 -1
  97. package/dist/_chunks/{ListPage-_xv5sj1P.mjs → ListPage-q0rdi9bm.mjs} +3 -3
  98. package/dist/_chunks/{ListPage-_xv5sj1P.mjs.map → ListPage-q0rdi9bm.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-_49KJ63c.js → ListPage-qXBhxPx4.js} +2 -2
  100. package/dist/_chunks/{ListPage-_49KJ63c.js.map → ListPage-qXBhxPx4.js.map} +1 -1
  101. package/dist/_chunks/{ListPage-1Suvn_gX.js → ListPage-sYLIB3vd.js} +8 -8
  102. package/dist/_chunks/{ListPage-1Suvn_gX.js.map → ListPage-sYLIB3vd.js.map} +1 -1
  103. package/dist/_chunks/{ListPage-DRXhn5QO.mjs → ListPage-yzNNJ5yr.mjs} +6 -6
  104. package/dist/_chunks/{ListPage-DRXhn5QO.mjs.map → ListPage-yzNNJ5yr.mjs.map} +1 -1
  105. package/dist/_chunks/{ListView-9yeqZz0_.mjs → ListView-415zGylf.mjs} +3 -3
  106. package/dist/_chunks/{ListView-9yeqZz0_.mjs.map → ListView-415zGylf.mjs.map} +1 -1
  107. package/dist/_chunks/{ListView-TeeSjfsJ.js → ListView-Wsc3wuC5.js} +3 -3
  108. package/dist/_chunks/{ListView-TeeSjfsJ.js.map → ListView-Wsc3wuC5.js.map} +1 -1
  109. package/dist/_chunks/{ListView-G_KtoKW3.mjs → ListView-hm684P4o.mjs} +3 -3
  110. package/dist/_chunks/{ListView-G_KtoKW3.mjs.map → ListView-hm684P4o.mjs.map} +1 -1
  111. package/dist/_chunks/{ListView-P-N6xcZ9.js → ListView-xfceGGWI.js} +3 -3
  112. package/dist/_chunks/{ListView-P-N6xcZ9.js.map → ListView-xfceGGWI.js.map} +1 -1
  113. package/dist/_chunks/{Login-3jiby8MZ.mjs → Login-fV4bsRFM.mjs} +2 -2
  114. package/dist/_chunks/{Login-3jiby8MZ.mjs.map → Login-fV4bsRFM.mjs.map} +1 -1
  115. package/dist/_chunks/{Login-JPCycboU.js → Login-viM76hOb.js} +2 -2
  116. package/dist/_chunks/{Login-JPCycboU.js.map → Login-viM76hOb.js.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-ZnqFvBBH.mjs → MagicLinkEE-EtaFlZcG.mjs} +4 -4
  118. package/dist/_chunks/{MagicLinkEE-ZnqFvBBH.mjs.map → MagicLinkEE-EtaFlZcG.mjs.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-9TDtAXSL.js → MagicLinkEE-F_2xYiNa.js} +4 -4
  120. package/dist/_chunks/{MagicLinkEE-9TDtAXSL.js.map → MagicLinkEE-F_2xYiNa.js.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-FPfkKYfJ.js → MarketplacePage-3VoQKeo4.js} +3 -3
  122. package/dist/_chunks/{MarketplacePage-FPfkKYfJ.js.map → MarketplacePage-3VoQKeo4.js.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-2meU0W44.mjs → MarketplacePage-jFLa-9Tv.mjs} +3 -3
  124. package/dist/_chunks/{MarketplacePage-2meU0W44.mjs.map → MarketplacePage-jFLa-9Tv.mjs.map} +1 -1
  125. package/dist/_chunks/{Permissions-bu1M85v6.mjs → Permissions-9WfQZ8_F.mjs} +2 -2
  126. package/dist/_chunks/{Permissions-bu1M85v6.mjs.map → Permissions-9WfQZ8_F.mjs.map} +1 -1
  127. package/dist/_chunks/{Permissions-ZdV2SxPi.js → Permissions-F2PDn9xj.js} +2 -2
  128. package/dist/_chunks/{Permissions-ZdV2SxPi.js.map → Permissions-F2PDn9xj.js.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-t39GrAP0.js → ProfilePage-ZUob15tz.js} +3 -3
  130. package/dist/_chunks/{ProfilePage-t39GrAP0.js.map → ProfilePage-ZUob15tz.js.map} +1 -1
  131. package/dist/_chunks/{ProfilePage-fULMhF5t.mjs → ProfilePage-rqXKHHyl.mjs} +3 -3
  132. package/dist/_chunks/{ProfilePage-fULMhF5t.mjs.map → ProfilePage-rqXKHHyl.mjs.map} +1 -1
  133. package/dist/_chunks/{ReviewWorkflowsColumn-MQf4q8iG.mjs → ReviewWorkflowsColumn-bazWGZp9.mjs} +2 -2
  134. package/dist/_chunks/{ReviewWorkflowsColumn-MQf4q8iG.mjs.map → ReviewWorkflowsColumn-bazWGZp9.mjs.map} +1 -1
  135. package/dist/_chunks/{ReviewWorkflowsColumn-6jWqKkzr.js → ReviewWorkflowsColumn-p4XT5o2U.js} +2 -2
  136. package/dist/_chunks/{ReviewWorkflowsColumn-6jWqKkzr.js.map → ReviewWorkflowsColumn-p4XT5o2U.js.map} +1 -1
  137. package/dist/_chunks/{SelectRoles-KfyB7RvW.js → SelectRoles-ZOi4rQNz.js} +3 -3
  138. package/dist/_chunks/{SelectRoles-KfyB7RvW.js.map → SelectRoles-ZOi4rQNz.js.map} +1 -1
  139. package/dist/_chunks/{SelectRoles-lPpmNTlf.mjs → SelectRoles-gwJ489xE.mjs} +3 -3
  140. package/dist/_chunks/{SelectRoles-lPpmNTlf.mjs.map → SelectRoles-gwJ489xE.mjs.map} +1 -1
  141. package/dist/_chunks/{SettingsPage-bkHKMPzo.mjs → SettingsPage-FmUuUwzq.mjs} +21 -21
  142. package/dist/_chunks/{SettingsPage-bkHKMPzo.mjs.map → SettingsPage-FmUuUwzq.mjs.map} +1 -1
  143. package/dist/_chunks/{SettingsPage-xk4okCzu.js → SettingsPage-gVcDV5ak.js} +21 -21
  144. package/dist/_chunks/{SettingsPage-xk4okCzu.js.map → SettingsPage-gVcDV5ak.js.map} +1 -1
  145. package/dist/_chunks/{SingleSignOnPage-MuZ70ps0.js → SingleSignOnPage-MgEcw5vB.js} +3 -3
  146. package/dist/_chunks/{SingleSignOnPage-MuZ70ps0.js.map → SingleSignOnPage-MgEcw5vB.js.map} +1 -1
  147. package/dist/_chunks/{SingleSignOnPage-WlXv_0dv.mjs → SingleSignOnPage-WbZZR0tX.mjs} +3 -3
  148. package/dist/_chunks/{SingleSignOnPage-WlXv_0dv.mjs.map → SingleSignOnPage-WbZZR0tX.mjs.map} +1 -1
  149. package/dist/_chunks/{TokenTypeSelect-FQxzMIdN.mjs → TokenTypeSelect-5Ftt7gUK.mjs} +2 -2
  150. package/dist/_chunks/{TokenTypeSelect-FQxzMIdN.mjs.map → TokenTypeSelect-5Ftt7gUK.mjs.map} +1 -1
  151. package/dist/_chunks/{TokenTypeSelect-PEZjki-x.js → TokenTypeSelect-YXOIDDGa.js} +2 -2
  152. package/dist/_chunks/{TokenTypeSelect-PEZjki-x.js.map → TokenTypeSelect-YXOIDDGa.js.map} +1 -1
  153. package/dist/_chunks/{apiTokens-OV2CZdTf.js → apiTokens-7DkHvpGO.js} +2 -2
  154. package/dist/_chunks/{apiTokens-OV2CZdTf.js.map → apiTokens-7DkHvpGO.js.map} +1 -1
  155. package/dist/_chunks/{apiTokens-gx8gea11.mjs → apiTokens-irhyMv7m.mjs} +2 -2
  156. package/dist/_chunks/{apiTokens-gx8gea11.mjs.map → apiTokens-irhyMv7m.mjs.map} +1 -1
  157. package/dist/_chunks/{constants-MNFms9Q8.js → constants-6iCQwI-9.js} +2 -2
  158. package/dist/_chunks/{constants-MNFms9Q8.js.map → constants-6iCQwI-9.js.map} +1 -1
  159. package/dist/_chunks/{constants-vMqDjbVk.mjs → constants-8-320B44.mjs} +2 -2
  160. package/dist/_chunks/{constants-vMqDjbVk.mjs.map → constants-8-320B44.mjs.map} +1 -1
  161. package/dist/_chunks/{constants-85hctDLn.js → constants-GARR3cYH.js} +6 -6
  162. package/dist/_chunks/{constants-85hctDLn.js.map → constants-GARR3cYH.js.map} +1 -1
  163. package/dist/_chunks/{constants-ud210-tv.mjs → constants-TZ6t2aUw.mjs} +4 -4
  164. package/dist/_chunks/{constants-ud210-tv.mjs.map → constants-TZ6t2aUw.mjs.map} +1 -1
  165. package/dist/_chunks/{constants-Zb3s9JFR.js → constants-Y8nh5K2J.js} +2 -2
  166. package/dist/_chunks/{constants-Zb3s9JFR.js.map → constants-Y8nh5K2J.js.map} +1 -1
  167. package/dist/_chunks/{constants-GugydtTv.mjs → constants-cWopus7R.mjs} +2 -2
  168. package/dist/_chunks/{constants-GugydtTv.mjs.map → constants-cWopus7R.mjs.map} +1 -1
  169. package/dist/_chunks/{constants-8fSObLqU.mjs → constants-ci91UBPw.mjs} +6 -6
  170. package/dist/_chunks/{constants-8fSObLqU.mjs.map → constants-ci91UBPw.mjs.map} +1 -1
  171. package/dist/_chunks/{constants-Fb7UtSFw.js → constants-yy0XD177.js} +4 -4
  172. package/dist/_chunks/{constants-Fb7UtSFw.js.map → constants-yy0XD177.js.map} +1 -1
  173. package/dist/_chunks/{index-o73uUVeI.js → index-FHnaHjSM.js} +14 -11
  174. package/dist/_chunks/index-FHnaHjSM.js.map +1 -0
  175. package/dist/_chunks/{index-4xPDm1sd.mjs → index-Sr5PWLEf.mjs} +14 -11
  176. package/dist/_chunks/index-Sr5PWLEf.mjs.map +1 -0
  177. package/dist/_chunks/{reviewWorkflows-oDNsMMFz.mjs → reviewWorkflows-Lf__WK8E.mjs} +2 -2
  178. package/dist/_chunks/{reviewWorkflows-oDNsMMFz.mjs.map → reviewWorkflows-Lf__WK8E.mjs.map} +1 -1
  179. package/dist/_chunks/{reviewWorkflows-Qjqtzijf.js → reviewWorkflows-csFsWJYs.js} +2 -2
  180. package/dist/_chunks/{reviewWorkflows-Qjqtzijf.js.map → reviewWorkflows-csFsWJYs.js.map} +1 -1
  181. package/dist/_chunks/{transferTokens-t04ovaFa.js → transferTokens-Wn5Ixusu.js} +2 -2
  182. package/dist/_chunks/{transferTokens-t04ovaFa.js.map → transferTokens-Wn5Ixusu.js.map} +1 -1
  183. package/dist/_chunks/{transferTokens-L_oQLixd.mjs → transferTokens-nVplpXze.mjs} +2 -2
  184. package/dist/_chunks/{transferTokens-L_oQLixd.mjs.map → transferTokens-nVplpXze.mjs.map} +1 -1
  185. package/dist/_chunks/{useAdminRoles-knOHLRBm.mjs → useAdminRoles-DlSzAd-1.mjs} +2 -2
  186. package/dist/_chunks/{useAdminRoles-knOHLRBm.mjs.map → useAdminRoles-DlSzAd-1.mjs.map} +1 -1
  187. package/dist/_chunks/{useAdminRoles-yLVXT42V.js → useAdminRoles-ganYae89.js} +2 -2
  188. package/dist/_chunks/{useAdminRoles-yLVXT42V.js.map → useAdminRoles-ganYae89.js.map} +1 -1
  189. package/dist/_chunks/{useContentTypes-95SN-dF8.js → useContentTypes-DTqkkGy_.js} +2 -2
  190. package/dist/_chunks/{useContentTypes-95SN-dF8.js.map → useContentTypes-DTqkkGy_.js.map} +1 -1
  191. package/dist/_chunks/{useContentTypes-L8J6b7Nz.mjs → useContentTypes-qmvH8G01.mjs} +2 -2
  192. package/dist/_chunks/{useContentTypes-L8J6b7Nz.mjs.map → useContentTypes-qmvH8G01.mjs.map} +1 -1
  193. package/dist/_chunks/{useLicenseLimitNotification-dyhTFMP9.js → useLicenseLimitNotification-4e6mQbbM.js} +2 -2
  194. package/dist/_chunks/{useLicenseLimitNotification-dyhTFMP9.js.map → useLicenseLimitNotification-4e6mQbbM.js.map} +1 -1
  195. package/dist/_chunks/{useLicenseLimitNotification-CC3T0E1n.mjs → useLicenseLimitNotification-A_JEdOP4.mjs} +2 -2
  196. package/dist/_chunks/{useLicenseLimitNotification-CC3T0E1n.mjs.map → useLicenseLimitNotification-A_JEdOP4.mjs.map} +1 -1
  197. package/dist/_chunks/{useReviewWorkflows-Qy5riNG2.js → useReviewWorkflows-6jJL-HLH.js} +2 -2
  198. package/dist/_chunks/{useReviewWorkflows-Qy5riNG2.js.map → useReviewWorkflows-6jJL-HLH.js.map} +1 -1
  199. package/dist/_chunks/{useReviewWorkflows-xNAKv8as.mjs → useReviewWorkflows-sodMM24w.mjs} +2 -2
  200. package/dist/_chunks/{useReviewWorkflows-xNAKv8as.mjs.map → useReviewWorkflows-sodMM24w.mjs.map} +1 -1
  201. package/dist/_chunks/{useWebhooks-_teNEb-d.mjs → useWebhooks-854ZWFz4.mjs} +2 -2
  202. package/dist/_chunks/{useWebhooks-_teNEb-d.mjs.map → useWebhooks-854ZWFz4.mjs.map} +1 -1
  203. package/dist/_chunks/{useWebhooks-Q3t4mJdN.js → useWebhooks-I5pui8ds.js} +2 -2
  204. package/dist/_chunks/{useWebhooks-Q3t4mJdN.js.map → useWebhooks-I5pui8ds.js.map} +1 -1
  205. package/dist/_chunks/{validateWorkflow-uxUzrJnR.mjs → validateWorkflow-Y1LKUNt8.mjs} +2 -2
  206. package/dist/_chunks/{validateWorkflow-uxUzrJnR.mjs.map → validateWorkflow-Y1LKUNt8.mjs.map} +1 -1
  207. package/dist/_chunks/{validateWorkflow-dHek9T6e.js → validateWorkflow-qc34E4Tb.js} +2 -2
  208. package/dist/_chunks/{validateWorkflow-dHek9T6e.js.map → validateWorkflow-qc34E4Tb.js.map} +1 -1
  209. package/dist/admin/index.js +1 -1
  210. package/dist/admin/index.mjs +1 -1
  211. package/dist/ee/server/index.js +63 -18
  212. package/dist/ee/server/index.js.map +1 -1
  213. package/dist/ee/server/index.mjs +64 -19
  214. package/dist/ee/server/index.mjs.map +1 -1
  215. package/dist/server/index.js +23 -10
  216. package/dist/server/index.js.map +1 -1
  217. package/dist/server/index.mjs +24 -11
  218. package/dist/server/index.mjs.map +1 -1
  219. package/dist/server/src/bootstrap.d.ts.map +1 -1
  220. package/dist/server/src/services/api-token.d.ts.map +1 -1
  221. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  222. package/dist/shared/contracts/api-token.d.ts +1 -1
  223. package/dist/shared/contracts/api-token.d.ts.map +1 -1
  224. package/dist/shared/contracts/transfer.d.ts +2 -2
  225. package/dist/shared/contracts/transfer.d.ts.map +1 -1
  226. package/package.json +15 -15
  227. package/dist/_chunks/EditView-9LzBDlKi.mjs.map +0 -1
  228. package/dist/_chunks/EditView-LfuDLid0.js.map +0 -1
  229. package/dist/_chunks/EventsTable-O66id4Eg.js.map +0 -1
  230. package/dist/_chunks/EventsTable-hwwD5TyQ.mjs.map +0 -1
  231. package/dist/_chunks/index-4xPDm1sd.mjs.map +0 -1
  232. package/dist/_chunks/index-o73uUVeI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EditViewPage-FpEY5mPY.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // in case a token has a lifespan of \"unlimited\" the API only accepts zero as a number\n lifespan: body.lifespan === '0' ? parseInt(body.lifespan) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan ? apiToken.lifespan.toString() : apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","React","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","yup","translatedErrors","produce","pull","useNotification","useOverlayBlocker","useLocation","useTypedSelector","state","useTracking","useGuidedTour","useRBAC","useRouteMatch","useAPIErrorHandler","useHistory","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","formik","isBaseQueryError","Formik","Form","FormHead","TokenBox","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"EditViewPage-kioXXfuP.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/LoadingView.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollabsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </GridItem>\n <GridItem key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </GridItem>\n\n <GridItem key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n );\n};\n","import { Button, ContentLayout, HeaderLayout, Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useFocusWhenNavigate,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface LoadingViewProps {\n apiTokenName?: string | null;\n}\n\nexport const LoadingView = ({ apiTokenName = null }: LoadingViewProps) => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle name=\"API Tokens\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={\n apiTokenName ||\n formatMessage({\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n })\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n};\n","import React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport styled, { DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n &nbsp;\n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Flex, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <GridItem\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </GridItem>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport styled, { css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled(Box)<{ isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n onExpanded?: (orderNumber: number) => void;\n indexExpandendCollapsedContent: number | null;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n onExpanded = () => null,\n indexExpandendCollapsedContent = null,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const [expanded, setExpanded] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const handleExpandedAccordion = () => {\n setExpanded((s) => !s);\n onExpanded(orderNumber);\n };\n\n React.useEffect(() => {\n if (\n indexExpandendCollapsedContent !== null &&\n indexExpandendCollapsedContent !== orderNumber &&\n expanded\n ) {\n setExpanded(false);\n }\n }, [indexExpandendCollapsedContent, orderNumber, expanded]);\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion\n expanded={expanded}\n onToggle={handleExpandedAccordion}\n variant={orderNumber % 2 ? 'primary' : 'secondary'}\n >\n <AccordionToggle title={capitalize(label)} />\n <AccordionContent>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n value={allActionsSelected}\n indeterminate={!allActionsSelected && someActionsSelected}\n onValueChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <GridItem col={6} key={action.actionId}>\n <CheckboxWrapper\n isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n value={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onValueChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n </Box>\n );\n })}\n </AccordionContent>\n </Accordion>\n );\n};\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollabsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n const [indexExpandedCollpsedContent, setIndexExpandedCollpsedContent] = React.useState<\n null | number\n >(null);\n const handleExpandedCollpsedContentIndex = (index: number) =>\n setIndexExpandedCollpsedContent(index);\n\n return (\n <Box padding={4} background=\"neutral0\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n indexExpandendCollapsedContent={indexExpandedCollpsedContent}\n onExpanded={handleExpandedCollpsedContentIndex}\n {...props}\n />\n ))}\n </Box>\n );\n};\n","import { Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <GridItem col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </GridItem>\n <ActionBoundRoutes />\n </Grid>\n );\n};\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { ContentLayout, Flex, Main } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useGuidedTour,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { LoadingView } from './components/LoadingView';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n useFocusWhenNavigate();\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { state: locationState } = useLocation<{ apiToken: ApiToken }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const { setCurrentStep } = useGuidedTour();\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useRouteMatch<{ id: string }>('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const history = useHistory();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n // @ts-expect-error context assertation\n lockApp();\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan: body?.lifespan || null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n history.replace(`/settings/api-tokens/${res.data.id}`, { apiToken: res.data });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n // @ts-expect-error context assertation\n unlockApp();\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <LoadingView apiTokenName={apiToken?.name} />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Main>\n <SettingsPageTitle name=\"API Tokens\" />\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n backUrl=\"/settings/api-tokens\"\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","GridItem","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","useFocusWhenNavigate","Main","SettingsPageTitle","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","styled","tail","css","React","Accordion","AccordionToggle","capitalize","AccordionContent","Checkbox","Cog","index","yup","translatedErrors","produce","pull","useNotification","useOverlayBlocker","useLocation","useTypedSelector","state","useTracking","useGuidedTour","useRBAC","useRouteMatch","useAPIErrorHandler","useHistory","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","formik","isBaseQueryError","Formik","Form","FormHead","TokenBox","CheckPagePermissions"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const EditPage = require("./EditPage-SV0aTUxB.js");
4
+ const EditPage = require("./EditPage-5JMBEHOq.js");
5
5
  require("react");
6
6
  require("@strapi/design-system");
7
7
  require("@strapi/helper-plugin");
8
8
  require("react-router-dom");
9
- require("./index-o73uUVeI.js");
9
+ require("./index-FHnaHjSM.js");
10
10
  require("react-dom/client");
11
11
  require("invariant");
12
12
  require("lodash/isFunction");
@@ -72,24 +72,36 @@ require("lodash/uniqBy");
72
72
  require("lodash/unset");
73
73
  require("lodash/isArray");
74
74
  require("date-fns/parseISO");
75
- require("./useContentTypes-95SN-dF8.js");
76
- require("./AuthenticatedApp-ejf761Rx.js");
75
+ require("./useContentTypes-DTqkkGy_.js");
76
+ require("./AuthenticatedApp-VMottKnI.js");
77
77
  require("semver/functions/lt");
78
78
  require("semver/functions/valid");
79
- require("./useWebhooks-Q3t4mJdN.js");
80
- const events = {
81
- "review-workflows": ["review-workflows.updateEntryStage"]
79
+ require("./useWebhooks-I5pui8ds.js");
80
+ const eeTables = {
81
+ "review-workflows": {
82
+ "review-workflows": ["review-workflows.updateEntryStage"]
83
+ },
84
+ releases: {
85
+ releases: ["releases.publish"]
86
+ }
82
87
  };
83
- const getHeaders = () => {
84
- return [{ id: "review-workflows.updateEntryStage", defaultMessage: "Stage Change" }];
88
+ const getHeaders = (table) => {
89
+ switch (table) {
90
+ case "review-workflows":
91
+ return () => [{ id: "review-workflows.updateEntryStage", defaultMessage: "Stage Change" }];
92
+ case "releases":
93
+ return () => [{ id: "releases.publish", defaultMessage: "Publish" }];
94
+ }
85
95
  };
86
96
  const EventsTableEE = () => {
87
97
  return /* @__PURE__ */ jsxRuntime.jsxs(EditPage.Events.Root, { children: [
88
98
  /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Headers, {}),
89
99
  /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Body, {}),
90
- /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Headers, { getHeaders }),
91
- /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Body, { providedEvents: events })
100
+ Object.keys(eeTables).map((table) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
101
+ /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Headers, { getHeaders: getHeaders(table) }),
102
+ /* @__PURE__ */ jsxRuntime.jsx(EditPage.Events.Body, { providedEvents: eeTables[table] })
103
+ ] }))
92
104
  ] });
93
105
  };
94
106
  exports.EventsTableEE = EventsTableEE;
95
- //# sourceMappingURL=EventsTable-O66id4Eg.js.map
107
+ //# sourceMappingURL=EventsTable-tQN7Kxkg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsTable-tQN7Kxkg.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst eeTables = {\n 'review-workflows': {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n },\n releases: {\n releases: ['releases.publish'],\n },\n};\n\nconst getHeaders = (table: keyof typeof eeTables) => {\n switch (table) {\n case 'review-workflows':\n return () => [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n case 'releases':\n return () => [{ id: 'releases.publish', defaultMessage: 'Publish' }];\n }\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n {(Object.keys(eeTables) as Array<keyof typeof eeTables>).map((table) => (\n <>\n <Events.Headers getHeaders={getHeaders(table)} />\n <Events.Body providedEvents={eeTables[table]} />\n </>\n ))}\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":["jsxs","Events","jsx","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,WAAW;AAAA,EACf,oBAAoB;AAAA,IAClB,oBAAoB,CAAC,mCAAmC;AAAA,EAC1D;AAAA,EACA,UAAU;AAAA,IACR,UAAU,CAAC,kBAAkB;AAAA,EAC/B;AACF;AAEA,MAAM,aAAa,CAAC,UAAiC;AACnD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,gBAAgB;AAAA,IAC3F,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,oBAAoB,gBAAgB,WAAW;AAAA,EACvE;AACF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAAA,gCAACC,SAAAA,OAAO,MAAP,EACC,UAAA;AAAA,IAACC,+BAAAD,SAAAA,OAAO,SAAP,EAAe;AAAA,IAChBC,+BAACD,SAAAA,OAAO,MAAP,EAAY;AAAA,IACX,OAAO,KAAK,QAAQ,EAAmC,IAAI,CAAC,UAE1DD,2BAAA,KAAAG,qBAAA,EAAA,UAAA;AAAA,MAAAD,2BAAA,IAACD,gBAAO,SAAP,EAAe,YAAY,WAAW,KAAK,GAAG;AAAA,qCAC9CA,SAAO,OAAA,MAAP,EAAY,gBAAgB,SAAS,KAAK,GAAG;AAAA,IAAA,EAAA,CAChD,CACD;AAAA,EACH,EAAA,CAAA;AAEJ;;"}
@@ -1,10 +1,10 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { a as Events } from "./EditPage-WSsPZ1Z8.mjs";
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { a as Events } from "./EditPage-PXkhvYbn.mjs";
3
3
  import "react";
4
4
  import "@strapi/design-system";
5
5
  import "@strapi/helper-plugin";
6
6
  import "react-router-dom";
7
- import "./index-4xPDm1sd.mjs";
7
+ import "./index-Sr5PWLEf.mjs";
8
8
  import "react-dom/client";
9
9
  import "invariant";
10
10
  import "lodash/isFunction";
@@ -70,26 +70,38 @@ import "lodash/uniqBy";
70
70
  import "lodash/unset";
71
71
  import "lodash/isArray";
72
72
  import "date-fns/parseISO";
73
- import "./useContentTypes-L8J6b7Nz.mjs";
74
- import "./AuthenticatedApp-3CV5_xCk.mjs";
73
+ import "./useContentTypes-qmvH8G01.mjs";
74
+ import "./AuthenticatedApp-FKtpxGn5.mjs";
75
75
  import "semver/functions/lt";
76
76
  import "semver/functions/valid";
77
- import "./useWebhooks-_teNEb-d.mjs";
78
- const events = {
79
- "review-workflows": ["review-workflows.updateEntryStage"]
77
+ import "./useWebhooks-854ZWFz4.mjs";
78
+ const eeTables = {
79
+ "review-workflows": {
80
+ "review-workflows": ["review-workflows.updateEntryStage"]
81
+ },
82
+ releases: {
83
+ releases: ["releases.publish"]
84
+ }
80
85
  };
81
- const getHeaders = () => {
82
- return [{ id: "review-workflows.updateEntryStage", defaultMessage: "Stage Change" }];
86
+ const getHeaders = (table) => {
87
+ switch (table) {
88
+ case "review-workflows":
89
+ return () => [{ id: "review-workflows.updateEntryStage", defaultMessage: "Stage Change" }];
90
+ case "releases":
91
+ return () => [{ id: "releases.publish", defaultMessage: "Publish" }];
92
+ }
83
93
  };
84
94
  const EventsTableEE = () => {
85
95
  return /* @__PURE__ */ jsxs(Events.Root, { children: [
86
96
  /* @__PURE__ */ jsx(Events.Headers, {}),
87
97
  /* @__PURE__ */ jsx(Events.Body, {}),
88
- /* @__PURE__ */ jsx(Events.Headers, { getHeaders }),
89
- /* @__PURE__ */ jsx(Events.Body, { providedEvents: events })
98
+ Object.keys(eeTables).map((table) => /* @__PURE__ */ jsxs(Fragment, { children: [
99
+ /* @__PURE__ */ jsx(Events.Headers, { getHeaders: getHeaders(table) }),
100
+ /* @__PURE__ */ jsx(Events.Body, { providedEvents: eeTables[table] })
101
+ ] }))
90
102
  ] });
91
103
  };
92
104
  export {
93
105
  EventsTableEE
94
106
  };
95
- //# sourceMappingURL=EventsTable-hwwD5TyQ.mjs.map
107
+ //# sourceMappingURL=EventsTable-yJP3KCo9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsTable-yJP3KCo9.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.tsx"],"sourcesContent":["import { Events } from '../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/Events';\n\nconst eeTables = {\n 'review-workflows': {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n },\n releases: {\n releases: ['releases.publish'],\n },\n};\n\nconst getHeaders = (table: keyof typeof eeTables) => {\n switch (table) {\n case 'review-workflows':\n return () => [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n case 'releases':\n return () => [{ id: 'releases.publish', defaultMessage: 'Publish' }];\n }\n};\n\nconst EventsTableEE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n {(Object.keys(eeTables) as Array<keyof typeof eeTables>).map((table) => (\n <>\n <Events.Headers getHeaders={getHeaders(table)} />\n <Events.Body providedEvents={eeTables[table]} />\n </>\n ))}\n </Events.Root>\n );\n};\n\nexport { EventsTableEE };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,WAAW;AAAA,EACf,oBAAoB;AAAA,IAClB,oBAAoB,CAAC,mCAAmC;AAAA,EAC1D;AAAA,EACA,UAAU;AAAA,IACR,UAAU,CAAC,kBAAkB;AAAA,EAC/B;AACF;AAEA,MAAM,aAAa,CAAC,UAAiC;AACnD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,gBAAgB;AAAA,IAC3F,KAAK;AACH,aAAO,MAAM,CAAC,EAAE,IAAI,oBAAoB,gBAAgB,WAAW;AAAA,EACvE;AACF;AAEA,MAAM,gBAAgB,MAAM;AAExB,SAAA,qBAAC,OAAO,MAAP,EACC,UAAA;AAAA,IAAC,oBAAA,OAAO,SAAP,EAAe;AAAA,IAChB,oBAAC,OAAO,MAAP,EAAY;AAAA,IACX,OAAO,KAAK,QAAQ,EAAmC,IAAI,CAAC,UAE1D,qBAAA,UAAA,EAAA,UAAA;AAAA,MAAA,oBAAC,OAAO,SAAP,EAAe,YAAY,WAAW,KAAK,GAAG;AAAA,0BAC9C,OAAO,MAAP,EAAY,gBAAgB,SAAS,KAAK,GAAG;AAAA,IAAA,EAAA,CAChD,CACD;AAAA,EACH,EAAA,CAAA;AAEJ;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { HomePageCE } from "./HomePage-qAFOalu_.mjs";
3
- import { u as useLicenseLimitNotification } from "./useLicenseLimitNotification-CC3T0E1n.mjs";
2
+ import { HomePageCE } from "./HomePage-xDNIroqJ.mjs";
3
+ import { u as useLicenseLimitNotification } from "./useLicenseLimitNotification-A_JEdOP4.mjs";
4
4
  import "react";
5
5
  import "@strapi/design-system";
6
6
  import "@strapi/design-system/v2";
@@ -10,10 +10,10 @@ import "react-helmet";
10
10
  import "react-intl";
11
11
  import "react-router-dom";
12
12
  import "styled-components";
13
- import "./AuthenticatedApp-3CV5_xCk.mjs";
13
+ import "./AuthenticatedApp-FKtpxGn5.mjs";
14
14
  import "semver/functions/lt";
15
15
  import "semver/functions/valid";
16
- import "./index-4xPDm1sd.mjs";
16
+ import "./index-Sr5PWLEf.mjs";
17
17
  import "react-dom/client";
18
18
  import "invariant";
19
19
  import "lodash/isFunction";
@@ -74,7 +74,7 @@ import "lodash/uniqBy";
74
74
  import "lodash/unset";
75
75
  import "lodash/isArray";
76
76
  import "date-fns/parseISO";
77
- import "./useContentTypes-L8J6b7Nz.mjs";
77
+ import "./useContentTypes-qmvH8G01.mjs";
78
78
  import "lodash/isNil";
79
79
  const HomePageEE = () => {
80
80
  useLicenseLimitNotification();
@@ -83,4 +83,4 @@ const HomePageEE = () => {
83
83
  export {
84
84
  HomePageEE
85
85
  };
86
- //# sourceMappingURL=HomePage-6_B1jj3V.mjs.map
86
+ //# sourceMappingURL=HomePage-6Ua7KUdf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage-6_B1jj3V.mjs","sources":["../../ee/admin/src/pages/HomePage.tsx"],"sourcesContent":["import { HomePageCE } from '../../../../admin/src/pages/HomePage';\nimport { useLicenseLimitNotification } from '../hooks/useLicenseLimitNotification';\n\nexport const HomePageEE = () => {\n useLicenseLimitNotification();\n\n return <HomePageCE />;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,aAAa,MAAM;AACF;AAE5B,6BAAQ,YAAW,CAAA,CAAA;AACrB;"}
1
+ {"version":3,"file":"HomePage-6Ua7KUdf.mjs","sources":["../../ee/admin/src/pages/HomePage.tsx"],"sourcesContent":["import { HomePageCE } from '../../../../admin/src/pages/HomePage';\nimport { useLicenseLimitNotification } from '../hooks/useLicenseLimitNotification';\n\nexport const HomePageEE = () => {\n useLicenseLimitNotification();\n\n return <HomePageCE />;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,aAAa,MAAM;AACF;AAE5B,6BAAQ,YAAW,CAAA,CAAA;AACrB;"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const HomePage = require("./HomePage-QusuS2eI.js");
5
- const useLicenseLimitNotification = require("./useLicenseLimitNotification-dyhTFMP9.js");
4
+ const HomePage = require("./HomePage-gFS-q0IU.js");
5
+ const useLicenseLimitNotification = require("./useLicenseLimitNotification-4e6mQbbM.js");
6
6
  require("react");
7
7
  require("@strapi/design-system");
8
8
  require("@strapi/design-system/v2");
@@ -12,10 +12,10 @@ require("react-helmet");
12
12
  require("react-intl");
13
13
  require("react-router-dom");
14
14
  require("styled-components");
15
- require("./AuthenticatedApp-ejf761Rx.js");
15
+ require("./AuthenticatedApp-VMottKnI.js");
16
16
  require("semver/functions/lt");
17
17
  require("semver/functions/valid");
18
- require("./index-o73uUVeI.js");
18
+ require("./index-FHnaHjSM.js");
19
19
  require("react-dom/client");
20
20
  require("invariant");
21
21
  require("lodash/isFunction");
@@ -76,11 +76,11 @@ require("lodash/uniqBy");
76
76
  require("lodash/unset");
77
77
  require("lodash/isArray");
78
78
  require("date-fns/parseISO");
79
- require("./useContentTypes-95SN-dF8.js");
79
+ require("./useContentTypes-DTqkkGy_.js");
80
80
  require("lodash/isNil");
81
81
  const HomePageEE = () => {
82
82
  useLicenseLimitNotification.useLicenseLimitNotification();
83
83
  return /* @__PURE__ */ jsxRuntime.jsx(HomePage.HomePageCE, {});
84
84
  };
85
85
  exports.HomePageEE = HomePageEE;
86
- //# sourceMappingURL=HomePage-H0PM_ncf.js.map
86
+ //# sourceMappingURL=HomePage-Rhag1CPK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage-H0PM_ncf.js","sources":["../../ee/admin/src/pages/HomePage.tsx"],"sourcesContent":["import { HomePageCE } from '../../../../admin/src/pages/HomePage';\nimport { useLicenseLimitNotification } from '../hooks/useLicenseLimitNotification';\n\nexport const HomePageEE = () => {\n useLicenseLimitNotification();\n\n return <HomePageCE />;\n};\n"],"names":["useLicenseLimitNotification","HomePageCE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,aAAa,MAAM;AACFA,8BAAAA;AAE5B,wCAAQC,qBAAW,CAAA,CAAA;AACrB;;"}
1
+ {"version":3,"file":"HomePage-Rhag1CPK.js","sources":["../../ee/admin/src/pages/HomePage.tsx"],"sourcesContent":["import { HomePageCE } from '../../../../admin/src/pages/HomePage';\nimport { useLicenseLimitNotification } from '../hooks/useLicenseLimitNotification';\n\nexport const HomePageEE = () => {\n useLicenseLimitNotification();\n\n return <HomePageCE />;\n};\n"],"names":["useLicenseLimitNotification","HomePageCE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,aAAa,MAAM;AACFA,8BAAAA;AAE5B,wCAAQC,qBAAW,CAAA,CAAA;AACrB;;"}
@@ -10,9 +10,9 @@ const reactHelmet = require("react-helmet");
10
10
  const reactIntl = require("react-intl");
11
11
  const reactRouterDom = require("react-router-dom");
12
12
  const styled = require("styled-components");
13
- const AuthenticatedApp = require("./AuthenticatedApp-ejf761Rx.js");
14
- const useContentTypes = require("./useContentTypes-95SN-dF8.js");
15
- const index = require("./index-o73uUVeI.js");
13
+ const AuthenticatedApp = require("./AuthenticatedApp-VMottKnI.js");
14
+ const useContentTypes = require("./useContentTypes-DTqkkGy_.js");
15
+ const index = require("./index-FHnaHjSM.js");
16
16
  require("semver/functions/lt");
17
17
  require("semver/functions/valid");
18
18
  require("immer");
@@ -588,7 +588,7 @@ const HomePage = () => {
588
588
  const Page = index.useEnterprise(
589
589
  HomePageCE,
590
590
  // eslint-disable-next-line import/no-cycle
591
- async () => (await Promise.resolve().then(() => require("./HomePage-H0PM_ncf.js"))).HomePageEE
591
+ async () => (await Promise.resolve().then(() => require("./HomePage-Rhag1CPK.js"))).HomePageEE
592
592
  );
593
593
  if (!Page) {
594
594
  return null;
@@ -597,4 +597,4 @@ const HomePage = () => {
597
597
  };
598
598
  exports.HomePage = HomePage;
599
599
  exports.HomePageCE = HomePageCE;
600
- //# sourceMappingURL=HomePage-QusuS2eI.js.map
600
+ //# sourceMappingURL=HomePage-gFS-q0IU.js.map