@strapi/admin 4.20.5 → 4.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/_chunks/{AdminSeatInfo-VeqDpwGV.js → AdminSeatInfo-0cO28eY4.js} +3 -3
  2. package/dist/_chunks/{AdminSeatInfo-VeqDpwGV.js.map → AdminSeatInfo-0cO28eY4.js.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-0PZPHqsd.mjs → AdminSeatInfo-mjxcHmrg.mjs} +3 -3
  4. package/dist/_chunks/{AdminSeatInfo-0PZPHqsd.mjs.map → AdminSeatInfo-mjxcHmrg.mjs.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-3loM1zPQ.js → AuthenticatedApp-YqvHVjWe.js} +21 -21
  6. package/dist/_chunks/{AuthenticatedApp-3loM1zPQ.js.map → AuthenticatedApp-YqvHVjWe.js.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-p_Hoz4w0.mjs → AuthenticatedApp-kwdjs_S0.mjs} +21 -21
  8. package/dist/_chunks/{AuthenticatedApp-p_Hoz4w0.mjs.map → AuthenticatedApp-kwdjs_S0.mjs.map} +1 -1
  9. package/dist/_chunks/{CreateActionEE-msdEHH2t.js → CreateActionEE-W6-7uSGv.js} +2 -2
  10. package/dist/_chunks/{CreateActionEE-msdEHH2t.js.map → CreateActionEE-W6-7uSGv.js.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE-BvBzN3ej.mjs → CreateActionEE-_uYlQhyX.mjs} +2 -2
  12. package/dist/_chunks/{CreateActionEE-BvBzN3ej.mjs.map → CreateActionEE-_uYlQhyX.mjs.map} +1 -1
  13. package/dist/_chunks/{CreatePage-DvbIy_jN.mjs → CreatePage-80fIYaTs.mjs} +8 -8
  14. package/dist/_chunks/{CreatePage-DvbIy_jN.mjs.map → CreatePage-80fIYaTs.mjs.map} +1 -1
  15. package/dist/_chunks/{CreatePage-TnWHEKrd.js → CreatePage-AJOrHWAz.js} +3 -3
  16. package/dist/_chunks/{CreatePage-TnWHEKrd.js.map → CreatePage-AJOrHWAz.js.map} +1 -1
  17. package/dist/_chunks/{CreatePage-eh67IoKV.mjs → CreatePage-d-1uabiQ.mjs} +3 -3
  18. package/dist/_chunks/{CreatePage-eh67IoKV.mjs.map → CreatePage-d-1uabiQ.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-CXHGEXMF.mjs → CreatePage-gkLnzJM5.mjs} +6 -6
  20. package/dist/_chunks/{CreatePage-CXHGEXMF.mjs.map → CreatePage-gkLnzJM5.mjs.map} +1 -1
  21. package/dist/_chunks/{CreatePage-tYv61v1J.js → CreatePage-hZTEAj3p.js} +8 -8
  22. package/dist/_chunks/{CreatePage-tYv61v1J.js.map → CreatePage-hZTEAj3p.js.map} +1 -1
  23. package/dist/_chunks/{CreatePage-0a6OdLKp.js → CreatePage-nk4rR_Lo.js} +6 -6
  24. package/dist/_chunks/{CreatePage-0a6OdLKp.js.map → CreatePage-nk4rR_Lo.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-37DEWWCT.js → CreateView-8BCw7Olc.js} +6 -6
  26. package/dist/_chunks/{CreateView-37DEWWCT.js.map → CreateView-8BCw7Olc.js.map} +1 -1
  27. package/dist/_chunks/{CreateView-lQqp9igR.js → CreateView-IJFkZ9ya.js} +6 -6
  28. package/dist/_chunks/{CreateView-lQqp9igR.js.map → CreateView-IJFkZ9ya.js.map} +1 -1
  29. package/dist/_chunks/{CreateView-8a8sE0PN.mjs → CreateView-fD5On04e.mjs} +6 -6
  30. package/dist/_chunks/{CreateView-8a8sE0PN.mjs.map → CreateView-fD5On04e.mjs.map} +1 -1
  31. package/dist/_chunks/{CreateView-hFjKdwYu.mjs → CreateView-rsZvKS7A.mjs} +6 -6
  32. package/dist/_chunks/{CreateView-hFjKdwYu.mjs.map → CreateView-rsZvKS7A.mjs.map} +1 -1
  33. package/dist/_chunks/{EditPage-D0i2YdDb.js → EditPage-7scuwbPj.js} +4 -4
  34. package/dist/_chunks/{EditPage-D0i2YdDb.js.map → EditPage-7scuwbPj.js.map} +1 -1
  35. package/dist/_chunks/{EditPage-fVWNx5Oh.js → EditPage-Fpm69oEe.js} +9 -9
  36. package/dist/_chunks/{EditPage-fVWNx5Oh.js.map → EditPage-Fpm69oEe.js.map} +1 -1
  37. package/dist/_chunks/{EditPage-fOldhH6r.js → EditPage-J6zVHasr.js} +6 -6
  38. package/dist/_chunks/{EditPage-fOldhH6r.js.map → EditPage-J6zVHasr.js.map} +1 -1
  39. package/dist/_chunks/{EditPage-EFPGPMV_.js → EditPage-_PINxFhm.js} +6 -6
  40. package/dist/_chunks/{EditPage-EFPGPMV_.js.map → EditPage-_PINxFhm.js.map} +1 -1
  41. package/dist/_chunks/{EditPage-CbpEmXk3.mjs → EditPage-d2rOG_1W.mjs} +4 -4
  42. package/dist/_chunks/{EditPage-CbpEmXk3.mjs.map → EditPage-d2rOG_1W.mjs.map} +1 -1
  43. package/dist/_chunks/{EditPage-H51hPwcO.mjs → EditPage-pgD1DzOE.mjs} +6 -6
  44. package/dist/_chunks/{EditPage-H51hPwcO.mjs.map → EditPage-pgD1DzOE.mjs.map} +1 -1
  45. package/dist/_chunks/{EditPage-JS93HO0g.mjs → EditPage-tdmuOKSb.mjs} +6 -6
  46. package/dist/_chunks/{EditPage-JS93HO0g.mjs.map → EditPage-tdmuOKSb.mjs.map} +1 -1
  47. package/dist/_chunks/{EditPage-RrSgOYln.mjs → EditPage-yMvPm2Nx.mjs} +9 -9
  48. package/dist/_chunks/{EditPage-RrSgOYln.mjs.map → EditPage-yMvPm2Nx.mjs.map} +1 -1
  49. package/dist/_chunks/{EditView-lgBWjHOT.mjs → EditView-_am4shhk.mjs} +4 -4
  50. package/dist/_chunks/{EditView-lgBWjHOT.mjs.map → EditView-_am4shhk.mjs.map} +1 -1
  51. package/dist/_chunks/{EditView-o4vADGcb.js → EditView-g7WobiS9.js} +4 -4
  52. package/dist/_chunks/{EditView-o4vADGcb.js.map → EditView-g7WobiS9.js.map} +1 -1
  53. package/dist/_chunks/{EditViewPage-mqbskolf.js → EditViewPage-Vkd1qJui.js} +4 -4
  54. package/dist/_chunks/{EditViewPage-mqbskolf.js.map → EditViewPage-Vkd1qJui.js.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-qJ7nFINE.mjs → EditViewPage-v2VcQV_Y.mjs} +4 -4
  56. package/dist/_chunks/{EditViewPage-qJ7nFINE.mjs.map → EditViewPage-v2VcQV_Y.mjs.map} +1 -1
  57. package/dist/_chunks/{EventsTable--TwAHLZA.js → EventsTable-7jWjBOCM.js} +6 -6
  58. package/dist/_chunks/{EventsTable--TwAHLZA.js.map → EventsTable-7jWjBOCM.js.map} +1 -1
  59. package/dist/_chunks/{EventsTable-Fvc-JpRm.mjs → EventsTable-8U1cTmXv.mjs} +6 -6
  60. package/dist/_chunks/{EventsTable-Fvc-JpRm.mjs.map → EventsTable-8U1cTmXv.mjs.map} +1 -1
  61. package/dist/_chunks/{HomePage-a1vOU1ul.mjs → HomePage-KVErLS68.mjs} +5 -5
  62. package/dist/_chunks/{HomePage-a1vOU1ul.mjs.map → HomePage-KVErLS68.mjs.map} +1 -1
  63. package/dist/_chunks/{HomePage-uLq-MN1K.js → HomePage-YUUf2m0i.js} +6 -6
  64. package/dist/_chunks/{HomePage-uLq-MN1K.js.map → HomePage-YUUf2m0i.js.map} +1 -1
  65. package/dist/_chunks/{HomePage-nOmgQyML.mjs → HomePage-r-Q_KO54.mjs} +6 -6
  66. package/dist/_chunks/{HomePage-nOmgQyML.mjs.map → HomePage-r-Q_KO54.mjs.map} +1 -1
  67. package/dist/_chunks/{HomePage-uF97iLvr.js → HomePage-u73HVyVG.js} +5 -5
  68. package/dist/_chunks/{HomePage-uF97iLvr.js.map → HomePage-u73HVyVG.js.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-zr8UNPkv.mjs → InformationBoxEE-WzZx0xfC.mjs} +3 -3
  70. package/dist/_chunks/{InformationBoxEE-zr8UNPkv.mjs.map → InformationBoxEE-WzZx0xfC.mjs.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-rompvdum.js → InformationBoxEE-vGk1T9_V.js} +3 -3
  72. package/dist/_chunks/{InformationBoxEE-rompvdum.js.map → InformationBoxEE-vGk1T9_V.js.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage-swMYXqyB.mjs → InstalledPluginsPage-4ekFFFnc.mjs} +3 -3
  74. package/dist/_chunks/{InstalledPluginsPage-swMYXqyB.mjs.map → InstalledPluginsPage-4ekFFFnc.mjs.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-fCay7xDO.js → InstalledPluginsPage-eNyidkBW.js} +3 -3
  76. package/dist/_chunks/{InstalledPluginsPage-fCay7xDO.js.map → InstalledPluginsPage-eNyidkBW.js.map} +1 -1
  77. package/dist/_chunks/{Layout-vuQrq1Uu.mjs → Layout-B87oCQCm.mjs} +2 -2
  78. package/dist/_chunks/{Layout-vuQrq1Uu.mjs.map → Layout-B87oCQCm.mjs.map} +1 -1
  79. package/dist/_chunks/{Layout-BcpbdKNS.js → Layout-m03mlKAn.js} +2 -2
  80. package/dist/_chunks/{Layout-BcpbdKNS.js.map → Layout-m03mlKAn.js.map} +1 -1
  81. package/dist/_chunks/{ListPage-bxulds-R.js → ListPage-7DYIHq-E.js} +4 -4
  82. package/dist/_chunks/{ListPage-bxulds-R.js.map → ListPage-7DYIHq-E.js.map} +1 -1
  83. package/dist/_chunks/{ListPage-8ZPXoi72.js → ListPage-81zGxguD.js} +6 -6
  84. package/dist/_chunks/{ListPage-8ZPXoi72.js.map → ListPage-81zGxguD.js.map} +1 -1
  85. package/dist/_chunks/{ListPage-JIwwNmac.mjs → ListPage-8UEc6X8O.mjs} +8 -8
  86. package/dist/_chunks/{ListPage-JIwwNmac.mjs.map → ListPage-8UEc6X8O.mjs.map} +1 -1
  87. package/dist/_chunks/{ListPage-2GK03p5D.js → ListPage-BHozpI7e.js} +2 -2
  88. package/dist/_chunks/{ListPage-2GK03p5D.js.map → ListPage-BHozpI7e.js.map} +1 -1
  89. package/dist/_chunks/{ListPage-txDe-JTh.js → ListPage-XSy4U_Wx.js} +8 -8
  90. package/dist/_chunks/{ListPage-txDe-JTh.js.map → ListPage-XSy4U_Wx.js.map} +1 -1
  91. package/dist/_chunks/{ListPage-oOPktA3S.mjs → ListPage-Zl1MvQPk.mjs} +4 -4
  92. package/dist/_chunks/{ListPage-oOPktA3S.mjs.map → ListPage-Zl1MvQPk.mjs.map} +1 -1
  93. package/dist/_chunks/{ListPage-hFe-nYXL.mjs → ListPage-aXOKmOXc.mjs} +3 -3
  94. package/dist/_chunks/{ListPage-hFe-nYXL.mjs.map → ListPage-aXOKmOXc.mjs.map} +1 -1
  95. package/dist/_chunks/{ListPage-G5KMMFsZ.mjs → ListPage-mNR6sIt1.mjs} +6 -6
  96. package/dist/_chunks/{ListPage-G5KMMFsZ.mjs.map → ListPage-mNR6sIt1.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-LA0lT654.js → ListPage-rB8_0NLu.js} +7 -7
  98. package/dist/_chunks/{ListPage-LA0lT654.js.map → ListPage-rB8_0NLu.js.map} +1 -1
  99. package/dist/_chunks/{ListPage-IqEVyyyf.js → ListPage-rLn1O-6J.js} +3 -3
  100. package/dist/_chunks/{ListPage-IqEVyyyf.js.map → ListPage-rLn1O-6J.js.map} +1 -1
  101. package/dist/_chunks/{ListPage-AKGBR4U_.mjs → ListPage-xdRLSoa6.mjs} +2 -2
  102. package/dist/_chunks/{ListPage-AKGBR4U_.mjs.map → ListPage-xdRLSoa6.mjs.map} +1 -1
  103. package/dist/_chunks/{ListPage-Tebxu06N.mjs → ListPage-yUSPSU5S.mjs} +7 -7
  104. package/dist/_chunks/{ListPage-Tebxu06N.mjs.map → ListPage-yUSPSU5S.mjs.map} +1 -1
  105. package/dist/_chunks/{ListView-qaE8Vcb3.js → ListView-OTSwUf1i.js} +3 -3
  106. package/dist/_chunks/{ListView-qaE8Vcb3.js.map → ListView-OTSwUf1i.js.map} +1 -1
  107. package/dist/_chunks/{ListView-BHlcoKKy.mjs → ListView-RLPQGwfo.mjs} +3 -3
  108. package/dist/_chunks/{ListView-BHlcoKKy.mjs.map → ListView-RLPQGwfo.mjs.map} +1 -1
  109. package/dist/_chunks/{ListView-07uZxF2i.mjs → ListView-YA5QXiq4.mjs} +3 -3
  110. package/dist/_chunks/{ListView-07uZxF2i.mjs.map → ListView-YA5QXiq4.mjs.map} +1 -1
  111. package/dist/_chunks/{ListView-ESH3o0Lu.js → ListView-ehfFWy27.js} +3 -3
  112. package/dist/_chunks/{ListView-ESH3o0Lu.js.map → ListView-ehfFWy27.js.map} +1 -1
  113. package/dist/_chunks/{Login-POtw5QbC.js → Login-NBWPTGii.js} +2 -2
  114. package/dist/_chunks/{Login-POtw5QbC.js.map → Login-NBWPTGii.js.map} +1 -1
  115. package/dist/_chunks/{Login-ZETxeuNn.mjs → Login-e1_GFndv.mjs} +2 -2
  116. package/dist/_chunks/{Login-ZETxeuNn.mjs.map → Login-e1_GFndv.mjs.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-HMr2D5cP.mjs → MagicLinkEE-KOvooF20.mjs} +4 -4
  118. package/dist/_chunks/{MagicLinkEE-HMr2D5cP.mjs.map → MagicLinkEE-KOvooF20.mjs.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-VHh9i6gc.js → MagicLinkEE-LwIotwLh.js} +4 -4
  120. package/dist/_chunks/{MagicLinkEE-VHh9i6gc.js.map → MagicLinkEE-LwIotwLh.js.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-ZRMsVYJZ.mjs → MarketplacePage-3SjeOIl9.mjs} +3 -3
  122. package/dist/_chunks/{MarketplacePage-ZRMsVYJZ.mjs.map → MarketplacePage-3SjeOIl9.mjs.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-h7hniYgx.js → MarketplacePage-Kqg4doOi.js} +3 -3
  124. package/dist/_chunks/{MarketplacePage-h7hniYgx.js.map → MarketplacePage-Kqg4doOi.js.map} +1 -1
  125. package/dist/_chunks/{Permissions-0WY1QWWe.js → Permissions-9D-OrmKB.js} +2 -2
  126. package/dist/_chunks/{Permissions-0WY1QWWe.js.map → Permissions-9D-OrmKB.js.map} +1 -1
  127. package/dist/_chunks/{Permissions-ZU9ueRGQ.mjs → Permissions-RQidBUvg.mjs} +2 -2
  128. package/dist/_chunks/{Permissions-ZU9ueRGQ.mjs.map → Permissions-RQidBUvg.mjs.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-1Lw2oTjj.js → ProfilePage-NHYSDob0.js} +3 -3
  130. package/dist/_chunks/{ProfilePage-1Lw2oTjj.js.map → ProfilePage-NHYSDob0.js.map} +1 -1
  131. package/dist/_chunks/{ProfilePage-nhuFpc-j.mjs → ProfilePage-p-ihQgkq.mjs} +3 -3
  132. package/dist/_chunks/{ProfilePage-nhuFpc-j.mjs.map → ProfilePage-p-ihQgkq.mjs.map} +1 -1
  133. package/dist/_chunks/{ReviewWorkflowsColumn-chpd_GQz.mjs → ReviewWorkflowsColumn-fV_jrZaM.mjs} +2 -2
  134. package/dist/_chunks/{ReviewWorkflowsColumn-chpd_GQz.mjs.map → ReviewWorkflowsColumn-fV_jrZaM.mjs.map} +1 -1
  135. package/dist/_chunks/{ReviewWorkflowsColumn-RLBHKpSx.js → ReviewWorkflowsColumn-tao-_Nrx.js} +2 -2
  136. package/dist/_chunks/{ReviewWorkflowsColumn-RLBHKpSx.js.map → ReviewWorkflowsColumn-tao-_Nrx.js.map} +1 -1
  137. package/dist/_chunks/{SelectRoles-J-cOmNPg.mjs → SelectRoles-3M7Lm8IQ.mjs} +3 -3
  138. package/dist/_chunks/{SelectRoles-J-cOmNPg.mjs.map → SelectRoles-3M7Lm8IQ.mjs.map} +1 -1
  139. package/dist/_chunks/{SelectRoles-G7h5eMx7.js → SelectRoles-I4YcfYDL.js} +3 -3
  140. package/dist/_chunks/{SelectRoles-G7h5eMx7.js.map → SelectRoles-I4YcfYDL.js.map} +1 -1
  141. package/dist/_chunks/{SettingsPage-LJF4HQu3.mjs → SettingsPage-Ib7N7CWP.mjs} +21 -21
  142. package/dist/_chunks/{SettingsPage-LJF4HQu3.mjs.map → SettingsPage-Ib7N7CWP.mjs.map} +1 -1
  143. package/dist/_chunks/{SettingsPage-RxG0zNmi.js → SettingsPage-uZJ0TQ2j.js} +21 -21
  144. package/dist/_chunks/{SettingsPage-RxG0zNmi.js.map → SettingsPage-uZJ0TQ2j.js.map} +1 -1
  145. package/dist/_chunks/{SingleSignOnPage-5tR5Di3-.js → SingleSignOnPage-9shy4b5V.js} +3 -3
  146. package/dist/_chunks/{SingleSignOnPage-5tR5Di3-.js.map → SingleSignOnPage-9shy4b5V.js.map} +1 -1
  147. package/dist/_chunks/{SingleSignOnPage-mUWnhmYK.mjs → SingleSignOnPage-haO4QYIZ.mjs} +3 -3
  148. package/dist/_chunks/{SingleSignOnPage-mUWnhmYK.mjs.map → SingleSignOnPage-haO4QYIZ.mjs.map} +1 -1
  149. package/dist/_chunks/{TokenTypeSelect-Pu2u4u60.js → TokenTypeSelect-6dKaAxNw.js} +2 -2
  150. package/dist/_chunks/{TokenTypeSelect-Pu2u4u60.js.map → TokenTypeSelect-6dKaAxNw.js.map} +1 -1
  151. package/dist/_chunks/{TokenTypeSelect--jNeSLmd.mjs → TokenTypeSelect-vW7D0ueA.mjs} +2 -2
  152. package/dist/_chunks/{TokenTypeSelect--jNeSLmd.mjs.map → TokenTypeSelect-vW7D0ueA.mjs.map} +1 -1
  153. package/dist/_chunks/{apiTokens-kqDQ_zpb.mjs → apiTokens-MX89ShkN.mjs} +2 -2
  154. package/dist/_chunks/{apiTokens-kqDQ_zpb.mjs.map → apiTokens-MX89ShkN.mjs.map} +1 -1
  155. package/dist/_chunks/{apiTokens--6uAVPWd.js → apiTokens-OFJ2wELt.js} +2 -2
  156. package/dist/_chunks/{apiTokens--6uAVPWd.js.map → apiTokens-OFJ2wELt.js.map} +1 -1
  157. package/dist/_chunks/{constants-wqvQZos7.mjs → constants-Dc5jQV8s.mjs} +2 -2
  158. package/dist/_chunks/{constants-wqvQZos7.mjs.map → constants-Dc5jQV8s.mjs.map} +1 -1
  159. package/dist/_chunks/{constants-pDLet6IX.js → constants-ERzqKCqP.js} +2 -2
  160. package/dist/_chunks/{constants-pDLet6IX.js.map → constants-ERzqKCqP.js.map} +1 -1
  161. package/dist/_chunks/{constants-I89xL90x.js → constants-Hbt2Ap8U.js} +2 -2
  162. package/dist/_chunks/{constants-I89xL90x.js.map → constants-Hbt2Ap8U.js.map} +1 -1
  163. package/dist/_chunks/{constants-7tUiUGm7.js → constants-QP7CzvHM.js} +6 -6
  164. package/dist/_chunks/{constants-7tUiUGm7.js.map → constants-QP7CzvHM.js.map} +1 -1
  165. package/dist/_chunks/{constants-qrsi70P9.mjs → constants-VvofwTIc.mjs} +2 -2
  166. package/dist/_chunks/{constants-qrsi70P9.mjs.map → constants-VvofwTIc.mjs.map} +1 -1
  167. package/dist/_chunks/{constants-oGpvjQcC.mjs → constants-dP7nNukG.mjs} +6 -6
  168. package/dist/_chunks/{constants-oGpvjQcC.mjs.map → constants-dP7nNukG.mjs.map} +1 -1
  169. package/dist/_chunks/{constants-8R4e_wL4.mjs → constants-d_g76JgI.mjs} +4 -4
  170. package/dist/_chunks/{constants-8R4e_wL4.mjs.map → constants-d_g76JgI.mjs.map} +1 -1
  171. package/dist/_chunks/{constants-jbMn10wi.js → constants-phoWsshc.js} +4 -4
  172. package/dist/_chunks/{constants-jbMn10wi.js.map → constants-phoWsshc.js.map} +1 -1
  173. package/dist/_chunks/{index-yRyOfi01.mjs → index-XBOTBNuC.mjs} +10 -10
  174. package/dist/_chunks/{index-yRyOfi01.mjs.map → index-XBOTBNuC.mjs.map} +1 -1
  175. package/dist/_chunks/{index-ydPzLfs7.js → index-pLv4RVFT.js} +10 -10
  176. package/dist/_chunks/{index-ydPzLfs7.js.map → index-pLv4RVFT.js.map} +1 -1
  177. package/dist/_chunks/{reviewWorkflows-qkvwfbFl.js → reviewWorkflows-sIRrdSIc.js} +2 -2
  178. package/dist/_chunks/{reviewWorkflows-qkvwfbFl.js.map → reviewWorkflows-sIRrdSIc.js.map} +1 -1
  179. package/dist/_chunks/{reviewWorkflows-zkQBDTm_.mjs → reviewWorkflows-t1LyvpuK.mjs} +2 -2
  180. package/dist/_chunks/{reviewWorkflows-zkQBDTm_.mjs.map → reviewWorkflows-t1LyvpuK.mjs.map} +1 -1
  181. package/dist/_chunks/{transferTokens-8RJcRrF7.mjs → transferTokens-UY0XTF15.mjs} +2 -2
  182. package/dist/_chunks/{transferTokens-8RJcRrF7.mjs.map → transferTokens-UY0XTF15.mjs.map} +1 -1
  183. package/dist/_chunks/{transferTokens-mBIXwjnE.js → transferTokens-WEaXK93i.js} +2 -2
  184. package/dist/_chunks/{transferTokens-mBIXwjnE.js.map → transferTokens-WEaXK93i.js.map} +1 -1
  185. package/dist/_chunks/{useAdminRoles-0FSsVVVF.mjs → useAdminRoles-8j_Rc44Z.mjs} +2 -2
  186. package/dist/_chunks/{useAdminRoles-0FSsVVVF.mjs.map → useAdminRoles-8j_Rc44Z.mjs.map} +1 -1
  187. package/dist/_chunks/{useAdminRoles-2lOWH8Kw.js → useAdminRoles-IiHPVeUo.js} +2 -2
  188. package/dist/_chunks/{useAdminRoles-2lOWH8Kw.js.map → useAdminRoles-IiHPVeUo.js.map} +1 -1
  189. package/dist/_chunks/{useContentTypes-JzGTxjad.js → useContentTypes-Bk1Y2UmU.js} +2 -2
  190. package/dist/_chunks/{useContentTypes-JzGTxjad.js.map → useContentTypes-Bk1Y2UmU.js.map} +1 -1
  191. package/dist/_chunks/{useContentTypes-GOmCpezl.mjs → useContentTypes-Madr3L1H.mjs} +2 -2
  192. package/dist/_chunks/{useContentTypes-GOmCpezl.mjs.map → useContentTypes-Madr3L1H.mjs.map} +1 -1
  193. package/dist/_chunks/{useLicenseLimitNotification-MeYE7YEx.js → useLicenseLimitNotification-lU6tLg8T.js} +2 -2
  194. package/dist/_chunks/{useLicenseLimitNotification-MeYE7YEx.js.map → useLicenseLimitNotification-lU6tLg8T.js.map} +1 -1
  195. package/dist/_chunks/{useLicenseLimitNotification-U_gpKHX2.mjs → useLicenseLimitNotification-rN5MNuOy.mjs} +2 -2
  196. package/dist/_chunks/{useLicenseLimitNotification-U_gpKHX2.mjs.map → useLicenseLimitNotification-rN5MNuOy.mjs.map} +1 -1
  197. package/dist/_chunks/{useReviewWorkflows--Q0J_Ge3.js → useReviewWorkflows-bzq0E6aV.js} +2 -2
  198. package/dist/_chunks/{useReviewWorkflows--Q0J_Ge3.js.map → useReviewWorkflows-bzq0E6aV.js.map} +1 -1
  199. package/dist/_chunks/{useReviewWorkflows-JseCtS_K.mjs → useReviewWorkflows-zEtut4MA.mjs} +2 -2
  200. package/dist/_chunks/{useReviewWorkflows-JseCtS_K.mjs.map → useReviewWorkflows-zEtut4MA.mjs.map} +1 -1
  201. package/dist/_chunks/{useWebhooks-rkAK3kK5.js → useWebhooks--d-jYykj.js} +2 -2
  202. package/dist/_chunks/{useWebhooks-rkAK3kK5.js.map → useWebhooks--d-jYykj.js.map} +1 -1
  203. package/dist/_chunks/{useWebhooks-GBt4UUQt.mjs → useWebhooks-0L1K3yUR.mjs} +2 -2
  204. package/dist/_chunks/{useWebhooks-GBt4UUQt.mjs.map → useWebhooks-0L1K3yUR.mjs.map} +1 -1
  205. package/dist/_chunks/{validateWorkflow-Owsa2rpu.mjs → validateWorkflow-2FnomUH9.mjs} +2 -2
  206. package/dist/_chunks/{validateWorkflow-Owsa2rpu.mjs.map → validateWorkflow-2FnomUH9.mjs.map} +1 -1
  207. package/dist/_chunks/{validateWorkflow-K0uDqmsX.js → validateWorkflow-qMNO_vCC.js} +2 -2
  208. package/dist/_chunks/{validateWorkflow-K0uDqmsX.js.map → validateWorkflow-qMNO_vCC.js.map} +1 -1
  209. package/dist/admin/index.js +1 -1
  210. package/dist/admin/index.mjs +1 -1
  211. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSignOnPage-5tR5Di3-.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(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: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useTypedSelector","useOverlayBlocker","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","formik","isBaseQueryError","Layout","jsx","SettingsPageTitle","Main","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"SingleSignOnPage-9shy4b5V.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(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: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":["yup","translatedErrors","useFocusWhenNavigate","useIntl","useTypedSelector","useOverlayBlocker","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","formik","isBaseQueryError","Layout","jsx","SettingsPageTitle","Main","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","LoadingIndicatorPage","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption","CheckPagePermissions"],"mappings":"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"}
@@ -5,8 +5,8 @@ import { Check } from "@strapi/icons";
5
5
  import { Formik } from "formik";
6
6
  import { useIntl } from "react-intl";
7
7
  import * as yup from "yup";
8
- import { j as useTypedSelector, W as useGetProviderOptionsQuery, X as useUpdateProviderOptionsMutation, x as isBaseQueryError } from "./index-yRyOfi01.mjs";
9
- import { u as useAdminRoles } from "./useAdminRoles-0FSsVVVF.mjs";
8
+ import { j as useTypedSelector, W as useGetProviderOptionsQuery, X as useUpdateProviderOptionsMutation, x as isBaseQueryError } from "./index-XBOTBNuC.mjs";
9
+ import { u as useAdminRoles } from "./useAdminRoles-8j_Rc44Z.mjs";
10
10
  import "react-dom/client";
11
11
  import "invariant";
12
12
  import "lodash/isFunction";
@@ -294,4 +294,4 @@ export {
294
294
  ProtectedSSO,
295
295
  SingleSignOnPage
296
296
  };
297
- //# sourceMappingURL=SingleSignOnPage-mUWnhmYK.mjs.map
297
+ //# sourceMappingURL=SingleSignOnPage-haO4QYIZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSignOnPage-mUWnhmYK.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(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: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SingleSignOnPage-haO4QYIZ.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n Main,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n translatedErrors,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n useFocusWhenNavigate();\n\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { lockApp, unlockApp } = useOverlayBlocker();\n const toggleNotification = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n // @ts-expect-error - context assertation\n lockApp();\n\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(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: { id: 'notification.success.saved' },\n });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n },\n });\n } finally {\n // @ts-expect-error - context assertation\n unlockApp();\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <SettingsPageTitle name=\"SSO\" />\n <Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <LoadingIndicatorPage />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <SingleSignOnPage />\n </CheckPagePermissions>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ const helperPlugin = require("@strapi/helper-plugin");
7
7
  const Icons = require("@strapi/icons");
8
8
  const reactIntl = require("react-intl");
9
9
  const reactRouterDom = require("react-router-dom");
10
- const index = require("./index-ydPzLfs7.js");
10
+ const index = require("./index-pLv4RVFT.js");
11
11
  const dateFns = require("date-fns");
12
12
  const locales = require("date-fns/locale");
13
13
  function _interopNamespace(e) {
@@ -369,4 +369,4 @@ exports.TokenBox = TokenBox;
369
369
  exports.TokenDescription = TokenDescription;
370
370
  exports.TokenName = TokenName;
371
371
  exports.TokenTypeSelect = TokenTypeSelect;
372
- //# sourceMappingURL=TokenTypeSelect-Pu2u4u60.js.map
372
+ //# sourceMappingURL=TokenTypeSelect-6dKaAxNw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenTypeSelect-Pu2u4u60.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","Link","NavLink","ArrowLeft","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","format","addDays","locales","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
1
+ {"version":3,"file":"TokenTypeSelect-6dKaAxNw.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","jsxs","Fragment","jsx","Button","Refresh","ConfirmDialog","HeaderLayout","Flex","Check","Link","NavLink","ArrowLeft","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","format","addDays","locales","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { useNotification, useAPIErrorHandler, ConfirmDialog, useTracking, useCli
6
6
  import { Check, ArrowLeft, Refresh, Duplicate, Key } from "@strapi/icons";
7
7
  import { useIntl } from "react-intl";
8
8
  import { NavLink } from "react-router-dom";
9
- import { O as useRegenerateTokenMutation } from "./index-yRyOfi01.mjs";
9
+ import { O as useRegenerateTokenMutation } from "./index-XBOTBNuC.mjs";
10
10
  import { format, addDays } from "date-fns";
11
11
  import * as locales from "date-fns/locale";
12
12
  const Regenerate = ({ onRegenerate, url }) => {
@@ -350,4 +350,4 @@ export {
350
350
  TokenTypeSelect as b,
351
351
  TokenBox as c
352
352
  };
353
- //# sourceMappingURL=TokenTypeSelect--jNeSLmd.mjs.map
353
+ //# sourceMappingURL=TokenTypeSelect-vW7D0ueA.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenTypeSelect--jNeSLmd.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
1
+ {"version":3,"file":"TokenTypeSelect-vW7D0ueA.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, HeaderLayout } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Refresh } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useRegenerateTokenMutation } from '../../../../services/api';\n\nimport type { Entity } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const toggleNotification = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n },\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <>\n <Button\n startIcon={<Refresh />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n\n <ConfirmDialog\n bodyText={{\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n }}\n iconRightButton={<Refresh />}\n isConfirmButtonLoading={isLoadingConfirmation}\n isOpen={showConfirmDialog}\n onToggleDialog={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRegeneration}\n leftButtonText={{\n id: 'Settings.tokens.Button.cancel',\n defaultMessage: 'Cancel',\n }}\n rightButtonText={{\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n }}\n title={{\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n }}\n />\n </>\n );\n};\n\ninterface Token {\n id: Entity.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n backUrl: string;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n backUrl,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <HeaderLayout\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n <>\n {/* @ts-expect-error polymorphic */}\n <Link as={NavLink} startIcon={<ArrowLeft />} to={backUrl}>\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n </>\n }\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { ContentBox, useClipboard, useNotification, useTracking } from '@strapi/helper-plugin';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.tokens.notification.copied' },\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n icon={<Duplicate />}\n style={{ padding: 0, height: '1rem' }}\n />\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n // @ts-expect-error I don't know how to fix this\n locale: locales[language],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <SingleSelect\n name=\"lifespan\"\n label={formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n required\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Textarea\n label={formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n onChange={onChange}\n disabled={!canEditInputs}\n >\n {value}\n </Textarea>\n );\n};\n","import { TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <TextInput\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n label={formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n onChange={onChange}\n value={value}\n disabled={!canEditInputs}\n required\n />\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n name={name}\n label={formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n value={value}\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n onChange={onChange}\n placeholder=\"Select\"\n required\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as adminApi } from "./index-yRyOfi01.mjs";
1
+ import { n as adminApi } from "./index-XBOTBNuC.mjs";
2
2
  const transferTokenService = adminApi.injectEndpoints({
3
3
  endpoints: (builder) => ({
4
4
  getAPITokens: builder.query({
@@ -57,4 +57,4 @@ export {
57
57
  useUpdateAPITokenMutation as d,
58
58
  useGetAPITokensQuery as u
59
59
  };
60
- //# sourceMappingURL=apiTokens-kqDQ_zpb.mjs.map
60
+ //# sourceMappingURL=apiTokens-MX89ShkN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiTokens-kqDQ_zpb.mjs","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":[],"mappings":";AAIA,MAAM,uBAAuB,SAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;"}
1
+ {"version":3,"file":"apiTokens-MX89ShkN.mjs","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":[],"mappings":";AAIA,MAAM,uBAAuB,SAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const index = require("./index-ydPzLfs7.js");
2
+ const index = require("./index-pLv4RVFT.js");
3
3
  const transferTokenService = index.adminApi.injectEndpoints({
4
4
  endpoints: (builder) => ({
5
5
  getAPITokens: builder.query({
@@ -56,4 +56,4 @@ exports.useDeleteAPITokenMutation = useDeleteAPITokenMutation;
56
56
  exports.useGetAPITokenQuery = useGetAPITokenQuery;
57
57
  exports.useGetAPITokensQuery = useGetAPITokensQuery;
58
58
  exports.useUpdateAPITokenMutation = useUpdateAPITokenMutation;
59
- //# sourceMappingURL=apiTokens--6uAVPWd.js.map
59
+ //# sourceMappingURL=apiTokens-OFJ2wELt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiTokens--6uAVPWd.js","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":["adminApi"],"mappings":";;AAIA,MAAM,uBAAuBA,eAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;;;;;;"}
1
+ {"version":3,"file":"apiTokens-OFJ2wELt.js","sources":["../../admin/src/services/apiTokens.ts"],"sourcesContent":["import * as ApiToken from '../../../shared/contracts/api-token';\n\nimport { adminApi } from './api';\n\nconst transferTokenService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAPITokens: builder.query<ApiToken.List.Response['data'], void>({\n query: () => '/admin/api-tokens',\n transformResponse: (response: ApiToken.List.Response) => response.data,\n providesTags: (res, _err) => [\n ...(res?.map(({ id }) => ({ type: 'ApiToken' as const, id })) ?? []),\n { type: 'ApiToken' as const, id: 'LIST' },\n ],\n }),\n getAPIToken: builder.query<ApiToken.Get.Response['data'], ApiToken.Get.Params['id']>({\n query: (id) => `/admin/api-tokens/${id}`,\n transformResponse: (response: ApiToken.Get.Response) => response.data,\n providesTags: (res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n createAPIToken: builder.mutation<\n ApiToken.Create.Response['data'],\n ApiToken.Create.Request['body']\n >({\n query: (body) => ({\n url: '/admin/api-tokens',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: ApiToken.Create.Response) => response.data,\n invalidatesTags: [{ type: 'ApiToken' as const, id: 'LIST' }],\n }),\n deleteAPIToken: builder.mutation<\n ApiToken.Revoke.Response['data'],\n ApiToken.Revoke.Params['id']\n >({\n query: (id) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (response: ApiToken.Revoke.Response) => response.data,\n invalidatesTags: (_res, _err, id) => [{ type: 'ApiToken' as const, id }],\n }),\n updateAPIToken: builder.mutation<\n ApiToken.Update.Response['data'],\n ApiToken.Update.Params & ApiToken.Update.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/api-tokens/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: ApiToken.Update.Response) => response.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'ApiToken' as const, id }],\n }),\n }),\n overrideExisting: false,\n});\n\nconst {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n} = transferTokenService;\n\nexport {\n useGetAPITokensQuery,\n useGetAPITokenQuery,\n useCreateAPITokenMutation,\n useDeleteAPITokenMutation,\n useUpdateAPITokenMutation,\n};\n"],"names":["adminApi"],"mappings":";;AAIA,MAAM,uBAAuBA,eAAS,gBAAgB;AAAA,EACpD,WAAW,CAAC,aAAa;AAAA,IACvB,cAAc,QAAQ,MAA4C;AAAA,MAChE,OAAO,MAAM;AAAA,MACb,mBAAmB,CAAC,aAAqC,SAAS;AAAA,MAClE,cAAc,CAAC,KAAK,SAAS;AAAA,QAC3B,GAAI,KAAK,IAAI,CAAC,EAAE,GAAU,OAAA,EAAE,MAAM,YAAqB,KAAK,KAAK,CAAC;AAAA,QAClE,EAAE,MAAM,YAAqB,IAAI,OAAO;AAAA,MAC1C;AAAA,IAAA,CACD;AAAA,IACD,aAAa,QAAQ,MAAgE;AAAA,MACnF,OAAO,CAAC,OAAO,qBAAqB,EAAE;AAAA,MACtC,mBAAmB,CAAC,aAAoC,SAAS;AAAA,MACjE,cAAc,CAAC,KAAK,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACpE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,EAAE,MAAM,YAAqB,IAAI,QAAQ;AAAA,IAAA,CAC5D;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,QAAQ;AAAA,QACd,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,MAAA;AAAA,MAEV,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,OAAO,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CACxE;AAAA,IACD,gBAAgB,QAAQ,SAGtB;AAAA,MACA,OAAO,CAAC,EAAE,IAAI,GAAG,YAAY;AAAA,QAC3B,KAAK,qBAAqB,EAAE;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,MAER,mBAAmB,CAAC,aAAuC,SAAS;AAAA,MACpE,iBAAiB,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,YAAqB,IAAI;AAAA,IAAA,CAC5E;AAAA,EAAA;AAAA,EAEH,kBAAkB;AACpB,CAAC;AAEK,MAAA;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;;;;;;"}
@@ -4,7 +4,7 @@ import { LoadingIndicatorPage } from "@strapi/helper-plugin";
4
4
  import Cookies from "js-cookie";
5
5
  import { useIntl } from "react-intl";
6
6
  import { useRouteMatch, useHistory } from "react-router-dom";
7
- import { a as useAuth } from "./index-yRyOfi01.mjs";
7
+ import { a as useAuth } from "./index-XBOTBNuC.mjs";
8
8
  import "react-dom/client";
9
9
  import "@strapi/design-system";
10
10
  import "invariant";
@@ -165,4 +165,4 @@ export {
165
165
  ROUTES_EE,
166
166
  SETTINGS_LINKS_EE
167
167
  };
168
- //# sourceMappingURL=constants-wqvQZos7.mjs.map
168
+ //# sourceMappingURL=constants-Dc5jQV8s.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-wqvQZos7.mjs","sources":["../../ee/admin/src/pages/AuthResponse.tsx","../../ee/admin/src/constants.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { LoadingIndicatorPage } from '@strapi/helper-plugin';\nimport Cookies from 'js-cookie';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../../../admin/src/features/Auth';\n\nconst AuthResponse = () => {\n const match = useRouteMatch<{ authResponse: string }>('/auth/login/:authResponse');\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n\n const redirectToOops = React.useCallback(() => {\n push(\n `/auth/oops?info=${encodeURIComponent(\n formatMessage({\n id: 'Auth.form.button.login.providers.error',\n defaultMessage: 'We cannot connect you through the selected provider.',\n })\n )}`\n );\n }, [push, formatMessage]);\n\n const setToken = useAuth('AuthResponse', (state) => state.setToken);\n\n React.useEffect(() => {\n if (match?.params.authResponse === 'error') {\n redirectToOops();\n }\n\n if (match?.params.authResponse === 'success') {\n const jwtToken = Cookies.get('jwtToken');\n\n if (jwtToken) {\n setToken(jwtToken);\n\n Cookies.remove('jwtToken');\n\n push('/auth/login');\n } else {\n redirectToOops();\n }\n }\n }, [match, redirectToOops, setToken, push]);\n\n return <LoadingIndicatorPage />;\n};\n\nexport { AuthResponse };\n","import { AuthResponse } from './pages/AuthResponse';\n\nimport type { SettingsMenu } from '../../../admin/src/constants';\nimport type { PermissionMap } from '../../../admin/src/types/permissions';\n\nexport const ADMIN_PERMISSIONS_EE = {\n settings: {\n auditLogs: {\n main: [{ action: 'admin::audit-logs.read', subject: null }],\n read: [{ action: 'admin::audit-logs.read', subject: null }],\n update: [{ action: 'admin::audit-logs.update', subject: null }],\n },\n 'review-workflows': {\n main: [{ action: 'admin::review-workflows.read', subject: null }],\n read: [{ action: 'admin::review-workflows.read', subject: null }],\n create: [{ action: 'admin::review-workflows.create', subject: null }],\n delete: [{ action: 'admin::review-workflows.delete', subject: null }],\n update: [{ action: 'admin::review-workflows.update', subject: null }],\n },\n sso: {\n main: [{ action: 'admin::provider-login.read', subject: null }],\n read: [{ action: 'admin::provider-login.read', subject: null }],\n update: [{ action: 'admin::provider-login.update', subject: null }],\n },\n },\n} satisfies {\n settings: Pick<PermissionMap['settings'], 'auditLogs' | 'review-workflows' | 'sso'>;\n};\n\nexport const ROUTES_EE = [\n {\n Component: () => ({ default: AuthResponse }),\n to: '/auth/login/:authResponse',\n exact: true,\n },\n];\n\n// TODO: the constants.js file is imported before the React application is setup and\n// therefore `window.strapi` might not exist at import-time. We should probably define\n// which constant is available at which stage of the application lifecycle.\nexport const SETTINGS_LINKS_EE = (): SettingsMenu => ({\n global: [\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/single-sign-on',\n id: 'sso',\n },\n ]\n : []),\n\n ...(window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS)\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/review-workflows',\n id: 'review-workflows',\n },\n ]\n : []),\n ],\n\n admin: [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/audit-logs?pageSize=50&page=1&sort=date:DESC',\n id: 'auditLogs',\n },\n ]\n : []),\n ],\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants-Dc5jQV8s.mjs","sources":["../../ee/admin/src/pages/AuthResponse.tsx","../../ee/admin/src/constants.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { LoadingIndicatorPage } from '@strapi/helper-plugin';\nimport Cookies from 'js-cookie';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../../../admin/src/features/Auth';\n\nconst AuthResponse = () => {\n const match = useRouteMatch<{ authResponse: string }>('/auth/login/:authResponse');\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n\n const redirectToOops = React.useCallback(() => {\n push(\n `/auth/oops?info=${encodeURIComponent(\n formatMessage({\n id: 'Auth.form.button.login.providers.error',\n defaultMessage: 'We cannot connect you through the selected provider.',\n })\n )}`\n );\n }, [push, formatMessage]);\n\n const setToken = useAuth('AuthResponse', (state) => state.setToken);\n\n React.useEffect(() => {\n if (match?.params.authResponse === 'error') {\n redirectToOops();\n }\n\n if (match?.params.authResponse === 'success') {\n const jwtToken = Cookies.get('jwtToken');\n\n if (jwtToken) {\n setToken(jwtToken);\n\n Cookies.remove('jwtToken');\n\n push('/auth/login');\n } else {\n redirectToOops();\n }\n }\n }, [match, redirectToOops, setToken, push]);\n\n return <LoadingIndicatorPage />;\n};\n\nexport { AuthResponse };\n","import { AuthResponse } from './pages/AuthResponse';\n\nimport type { SettingsMenu } from '../../../admin/src/constants';\nimport type { PermissionMap } from '../../../admin/src/types/permissions';\n\nexport const ADMIN_PERMISSIONS_EE = {\n settings: {\n auditLogs: {\n main: [{ action: 'admin::audit-logs.read', subject: null }],\n read: [{ action: 'admin::audit-logs.read', subject: null }],\n update: [{ action: 'admin::audit-logs.update', subject: null }],\n },\n 'review-workflows': {\n main: [{ action: 'admin::review-workflows.read', subject: null }],\n read: [{ action: 'admin::review-workflows.read', subject: null }],\n create: [{ action: 'admin::review-workflows.create', subject: null }],\n delete: [{ action: 'admin::review-workflows.delete', subject: null }],\n update: [{ action: 'admin::review-workflows.update', subject: null }],\n },\n sso: {\n main: [{ action: 'admin::provider-login.read', subject: null }],\n read: [{ action: 'admin::provider-login.read', subject: null }],\n update: [{ action: 'admin::provider-login.update', subject: null }],\n },\n },\n} satisfies {\n settings: Pick<PermissionMap['settings'], 'auditLogs' | 'review-workflows' | 'sso'>;\n};\n\nexport const ROUTES_EE = [\n {\n Component: () => ({ default: AuthResponse }),\n to: '/auth/login/:authResponse',\n exact: true,\n },\n];\n\n// TODO: the constants.js file is imported before the React application is setup and\n// therefore `window.strapi` might not exist at import-time. We should probably define\n// which constant is available at which stage of the application lifecycle.\nexport const SETTINGS_LINKS_EE = (): SettingsMenu => ({\n global: [\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/single-sign-on',\n id: 'sso',\n },\n ]\n : []),\n\n ...(window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS)\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/review-workflows',\n id: 'review-workflows',\n },\n ]\n : []),\n ],\n\n admin: [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/audit-logs?pageSize=50&page=1&sort=date:DESC',\n id: 'auditLogs',\n },\n ]\n : []),\n ],\n});\n"],"names":[],"mappings":"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"}