@strapi/admin 4.21.0 → 4.21.1

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 (249) hide show
  1. package/dist/_chunks/{AdminSeatInfo-0cO28eY4.js → AdminSeatInfo-MibiuVe3.js} +9 -8
  2. package/dist/_chunks/{AdminSeatInfo-0cO28eY4.js.map → AdminSeatInfo-MibiuVe3.js.map} +1 -1
  3. package/dist/_chunks/{AdminSeatInfo-mjxcHmrg.mjs → AdminSeatInfo-hYZ8eUpF.mjs} +9 -8
  4. package/dist/_chunks/{AdminSeatInfo-mjxcHmrg.mjs.map → AdminSeatInfo-hYZ8eUpF.mjs.map} +1 -1
  5. package/dist/_chunks/{AuthenticatedApp-YqvHVjWe.js → AuthenticatedApp-2mUijYOI.js} +21 -21
  6. package/dist/_chunks/{AuthenticatedApp-YqvHVjWe.js.map → AuthenticatedApp-2mUijYOI.js.map} +1 -1
  7. package/dist/_chunks/{AuthenticatedApp-kwdjs_S0.mjs → AuthenticatedApp-nvm4fRcu.mjs} +21 -21
  8. package/dist/_chunks/{AuthenticatedApp-kwdjs_S0.mjs.map → AuthenticatedApp-nvm4fRcu.mjs.map} +1 -1
  9. package/dist/_chunks/{CreateActionEE-_uYlQhyX.mjs → CreateActionEE-28yZAU6X.mjs} +8 -7
  10. package/dist/_chunks/{CreateActionEE-_uYlQhyX.mjs.map → CreateActionEE-28yZAU6X.mjs.map} +1 -1
  11. package/dist/_chunks/{CreateActionEE-W6-7uSGv.js → CreateActionEE-u_QUOWRr.js} +8 -7
  12. package/dist/_chunks/{CreateActionEE-W6-7uSGv.js.map → CreateActionEE-u_QUOWRr.js.map} +1 -1
  13. package/dist/_chunks/{CreatePage-hZTEAj3p.js → CreatePage-Cqqvxnxa.js} +13 -12
  14. package/dist/_chunks/{CreatePage-hZTEAj3p.js.map → CreatePage-Cqqvxnxa.js.map} +1 -1
  15. package/dist/_chunks/{CreatePage-d-1uabiQ.mjs → CreatePage-ObDt4GbK.mjs} +9 -8
  16. package/dist/_chunks/{CreatePage-d-1uabiQ.mjs.map → CreatePage-ObDt4GbK.mjs.map} +1 -1
  17. package/dist/_chunks/{CreatePage-80fIYaTs.mjs → CreatePage-bPmBTOep.mjs} +13 -12
  18. package/dist/_chunks/{CreatePage-80fIYaTs.mjs.map → CreatePage-bPmBTOep.mjs.map} +1 -1
  19. package/dist/_chunks/{CreatePage-gkLnzJM5.mjs → CreatePage-ed7j4RJV.mjs} +12 -11
  20. package/dist/_chunks/{CreatePage-gkLnzJM5.mjs.map → CreatePage-ed7j4RJV.mjs.map} +1 -1
  21. package/dist/_chunks/{CreatePage-AJOrHWAz.js → CreatePage-hacPLJKo.js} +9 -8
  22. package/dist/_chunks/{CreatePage-AJOrHWAz.js.map → CreatePage-hacPLJKo.js.map} +1 -1
  23. package/dist/_chunks/{CreatePage-nk4rR_Lo.js → CreatePage-mBRa_iNg.js} +12 -11
  24. package/dist/_chunks/{CreatePage-nk4rR_Lo.js.map → CreatePage-mBRa_iNg.js.map} +1 -1
  25. package/dist/_chunks/{CreateView-rsZvKS7A.mjs → CreateView--GAlOvKq.mjs} +12 -11
  26. package/dist/_chunks/{CreateView-rsZvKS7A.mjs.map → CreateView--GAlOvKq.mjs.map} +1 -1
  27. package/dist/_chunks/{CreateView-8BCw7Olc.js → CreateView-3jGheoI1.js} +12 -11
  28. package/dist/_chunks/{CreateView-8BCw7Olc.js.map → CreateView-3jGheoI1.js.map} +1 -1
  29. package/dist/_chunks/{CreateView-IJFkZ9ya.js → CreateView-VPheqVVt.js} +12 -11
  30. package/dist/_chunks/{CreateView-IJFkZ9ya.js.map → CreateView-VPheqVVt.js.map} +1 -1
  31. package/dist/_chunks/{CreateView-fD5On04e.mjs → CreateView-pVkFTxKp.mjs} +12 -11
  32. package/dist/_chunks/{CreateView-fD5On04e.mjs.map → CreateView-pVkFTxKp.mjs.map} +1 -1
  33. package/dist/_chunks/{EditPage-yMvPm2Nx.mjs → EditPage-0awwE3Ot.mjs} +14 -13
  34. package/dist/_chunks/{EditPage-yMvPm2Nx.mjs.map → EditPage-0awwE3Ot.mjs.map} +1 -1
  35. package/dist/_chunks/{EditPage-_PINxFhm.js → EditPage-33i7ujZ8.js} +6 -6
  36. package/dist/_chunks/{EditPage-_PINxFhm.js.map → EditPage-33i7ujZ8.js.map} +1 -1
  37. package/dist/_chunks/{EditPage-J6zVHasr.js → EditPage-7Ct3E98b.js} +12 -11
  38. package/dist/_chunks/{EditPage-J6zVHasr.js.map → EditPage-7Ct3E98b.js.map} +1 -1
  39. package/dist/_chunks/{EditPage-tdmuOKSb.mjs → EditPage-MeydsvUK.mjs} +12 -11
  40. package/dist/_chunks/{EditPage-tdmuOKSb.mjs.map → EditPage-MeydsvUK.mjs.map} +1 -1
  41. package/dist/_chunks/{EditPage-7scuwbPj.js → EditPage-TpJ6dyZw.js} +10 -9
  42. package/dist/_chunks/{EditPage-7scuwbPj.js.map → EditPage-TpJ6dyZw.js.map} +1 -1
  43. package/dist/_chunks/{EditPage-Fpm69oEe.js → EditPage-VALeceJX.js} +14 -13
  44. package/dist/_chunks/{EditPage-Fpm69oEe.js.map → EditPage-VALeceJX.js.map} +1 -1
  45. package/dist/_chunks/{EditPage-pgD1DzOE.mjs → EditPage-ZTvR20S6.mjs} +6 -6
  46. package/dist/_chunks/{EditPage-pgD1DzOE.mjs.map → EditPage-ZTvR20S6.mjs.map} +1 -1
  47. package/dist/_chunks/{EditPage-d2rOG_1W.mjs → EditPage-yKqM0bST.mjs} +10 -9
  48. package/dist/_chunks/{EditPage-d2rOG_1W.mjs.map → EditPage-yKqM0bST.mjs.map} +1 -1
  49. package/dist/_chunks/{EditView-g7WobiS9.js → EditView-4N0l1pQE.js} +10 -9
  50. package/dist/_chunks/{EditView-g7WobiS9.js.map → EditView-4N0l1pQE.js.map} +1 -1
  51. package/dist/_chunks/{EditView-_am4shhk.mjs → EditView-CsBrOadn.mjs} +10 -9
  52. package/dist/_chunks/{EditView-_am4shhk.mjs.map → EditView-CsBrOadn.mjs.map} +1 -1
  53. package/dist/_chunks/{EditViewPage-v2VcQV_Y.mjs → EditViewPage-I4t8PYvh.mjs} +10 -9
  54. package/dist/_chunks/{EditViewPage-v2VcQV_Y.mjs.map → EditViewPage-I4t8PYvh.mjs.map} +1 -1
  55. package/dist/_chunks/{EditViewPage-Vkd1qJui.js → EditViewPage-fepB7pKP.js} +10 -9
  56. package/dist/_chunks/{EditViewPage-Vkd1qJui.js.map → EditViewPage-fepB7pKP.js.map} +1 -1
  57. package/dist/_chunks/{EventsTable-7jWjBOCM.js → EventsTable-1uoHb_3J.js} +12 -11
  58. package/dist/_chunks/{EventsTable-7jWjBOCM.js.map → EventsTable-1uoHb_3J.js.map} +1 -1
  59. package/dist/_chunks/{EventsTable-8U1cTmXv.mjs → EventsTable-uqU4ebwR.mjs} +12 -11
  60. package/dist/_chunks/{EventsTable-8U1cTmXv.mjs.map → EventsTable-uqU4ebwR.mjs.map} +1 -1
  61. package/dist/_chunks/{HomePage-u73HVyVG.js → HomePage-UQWsRrI5.js} +11 -10
  62. package/dist/_chunks/{HomePage-u73HVyVG.js.map → HomePage-UQWsRrI5.js.map} +1 -1
  63. package/dist/_chunks/{HomePage-r-Q_KO54.mjs → HomePage-q365diV4.mjs} +12 -11
  64. package/dist/_chunks/{HomePage-r-Q_KO54.mjs.map → HomePage-q365diV4.mjs.map} +1 -1
  65. package/dist/_chunks/{HomePage-YUUf2m0i.js → HomePage-uCLCPqBp.js} +12 -11
  66. package/dist/_chunks/{HomePage-YUUf2m0i.js.map → HomePage-uCLCPqBp.js.map} +1 -1
  67. package/dist/_chunks/{HomePage-KVErLS68.mjs → HomePage-zpdV3R_J.mjs} +11 -10
  68. package/dist/_chunks/{HomePage-KVErLS68.mjs.map → HomePage-zpdV3R_J.mjs.map} +1 -1
  69. package/dist/_chunks/{InformationBoxEE-WzZx0xfC.mjs → InformationBoxEE-FcEBL8Fl.mjs} +9 -8
  70. package/dist/_chunks/{InformationBoxEE-WzZx0xfC.mjs.map → InformationBoxEE-FcEBL8Fl.mjs.map} +1 -1
  71. package/dist/_chunks/{InformationBoxEE-vGk1T9_V.js → InformationBoxEE-ZTOhi2sn.js} +9 -8
  72. package/dist/_chunks/{InformationBoxEE-vGk1T9_V.js.map → InformationBoxEE-ZTOhi2sn.js.map} +1 -1
  73. package/dist/_chunks/{InstalledPluginsPage-eNyidkBW.js → InstalledPluginsPage-CsNrEWNA.js} +9 -8
  74. package/dist/_chunks/{InstalledPluginsPage-eNyidkBW.js.map → InstalledPluginsPage-CsNrEWNA.js.map} +1 -1
  75. package/dist/_chunks/{InstalledPluginsPage-4ekFFFnc.mjs → InstalledPluginsPage-QxMzZSAA.mjs} +9 -8
  76. package/dist/_chunks/{InstalledPluginsPage-4ekFFFnc.mjs.map → InstalledPluginsPage-QxMzZSAA.mjs.map} +1 -1
  77. package/dist/_chunks/{Layout-m03mlKAn.js → Layout-BfXkf1tg.js} +2 -2
  78. package/dist/_chunks/{Layout-m03mlKAn.js.map → Layout-BfXkf1tg.js.map} +1 -1
  79. package/dist/_chunks/{Layout-B87oCQCm.mjs → Layout-BquZQAb2.mjs} +2 -2
  80. package/dist/_chunks/{Layout-B87oCQCm.mjs.map → Layout-BquZQAb2.mjs.map} +1 -1
  81. package/dist/_chunks/{ListPage-mNR6sIt1.mjs → ListPage-4xBsXFzo.mjs} +12 -11
  82. package/dist/_chunks/{ListPage-mNR6sIt1.mjs.map → ListPage-4xBsXFzo.mjs.map} +1 -1
  83. package/dist/_chunks/{ListPage-xdRLSoa6.mjs → ListPage-FEAgz6nH.mjs} +8 -7
  84. package/dist/_chunks/{ListPage-xdRLSoa6.mjs.map → ListPage-FEAgz6nH.mjs.map} +1 -1
  85. package/dist/_chunks/{ListPage-BHozpI7e.js → ListPage-LOriRfBq.js} +8 -7
  86. package/dist/_chunks/{ListPage-BHozpI7e.js.map → ListPage-LOriRfBq.js.map} +1 -1
  87. package/dist/_chunks/{ListPage-7DYIHq-E.js → ListPage-NrSchY-X.js} +10 -9
  88. package/dist/_chunks/{ListPage-7DYIHq-E.js.map → ListPage-NrSchY-X.js.map} +1 -1
  89. package/dist/_chunks/{ListPage-81zGxguD.js → ListPage-iL3qGB-7.js} +12 -11
  90. package/dist/_chunks/{ListPage-81zGxguD.js.map → ListPage-iL3qGB-7.js.map} +1 -1
  91. package/dist/_chunks/{ListPage-XSy4U_Wx.js → ListPage-l9uLwOUs.js} +14 -13
  92. package/dist/_chunks/{ListPage-XSy4U_Wx.js.map → ListPage-l9uLwOUs.js.map} +1 -1
  93. package/dist/_chunks/{ListPage-aXOKmOXc.mjs → ListPage-qafrcs26.mjs} +9 -8
  94. package/dist/_chunks/{ListPage-aXOKmOXc.mjs.map → ListPage-qafrcs26.mjs.map} +1 -1
  95. package/dist/_chunks/{ListPage-Zl1MvQPk.mjs → ListPage-wfXHUaaw.mjs} +10 -9
  96. package/dist/_chunks/{ListPage-Zl1MvQPk.mjs.map → ListPage-wfXHUaaw.mjs.map} +1 -1
  97. package/dist/_chunks/{ListPage-yUSPSU5S.mjs → ListPage-wz4r1cje.mjs} +13 -12
  98. package/dist/_chunks/{ListPage-yUSPSU5S.mjs.map → ListPage-wz4r1cje.mjs.map} +1 -1
  99. package/dist/_chunks/{ListPage-8UEc6X8O.mjs → ListPage-xannISFa.mjs} +14 -13
  100. package/dist/_chunks/{ListPage-8UEc6X8O.mjs.map → ListPage-xannISFa.mjs.map} +1 -1
  101. package/dist/_chunks/{ListPage-rLn1O-6J.js → ListPage-y0INhiFO.js} +9 -8
  102. package/dist/_chunks/{ListPage-rLn1O-6J.js.map → ListPage-y0INhiFO.js.map} +1 -1
  103. package/dist/_chunks/{ListPage-rB8_0NLu.js → ListPage-ydOBPR53.js} +13 -12
  104. package/dist/_chunks/{ListPage-rB8_0NLu.js.map → ListPage-ydOBPR53.js.map} +1 -1
  105. package/dist/_chunks/{ListView-YA5QXiq4.mjs → ListView-BCc3qmYg.mjs} +9 -8
  106. package/dist/_chunks/{ListView-YA5QXiq4.mjs.map → ListView-BCc3qmYg.mjs.map} +1 -1
  107. package/dist/_chunks/{ListView-RLPQGwfo.mjs → ListView-CBlwwUD_.mjs} +9 -8
  108. package/dist/_chunks/{ListView-RLPQGwfo.mjs.map → ListView-CBlwwUD_.mjs.map} +1 -1
  109. package/dist/_chunks/{ListView-ehfFWy27.js → ListView-CD7jHNFH.js} +9 -8
  110. package/dist/_chunks/{ListView-ehfFWy27.js.map → ListView-CD7jHNFH.js.map} +1 -1
  111. package/dist/_chunks/{ListView-OTSwUf1i.js → ListView-mY1VfCWs.js} +9 -8
  112. package/dist/_chunks/{ListView-OTSwUf1i.js.map → ListView-mY1VfCWs.js.map} +1 -1
  113. package/dist/_chunks/{Login-e1_GFndv.mjs → Login-JfsOEES0.mjs} +8 -7
  114. package/dist/_chunks/{Login-e1_GFndv.mjs.map → Login-JfsOEES0.mjs.map} +1 -1
  115. package/dist/_chunks/{Login-NBWPTGii.js → Login-x6cjYspM.js} +8 -7
  116. package/dist/_chunks/{Login-NBWPTGii.js.map → Login-x6cjYspM.js.map} +1 -1
  117. package/dist/_chunks/{MagicLinkEE-LwIotwLh.js → MagicLinkEE-faQF742D.js} +10 -9
  118. package/dist/_chunks/{MagicLinkEE-LwIotwLh.js.map → MagicLinkEE-faQF742D.js.map} +1 -1
  119. package/dist/_chunks/{MagicLinkEE-KOvooF20.mjs → MagicLinkEE-s7jLtjiz.mjs} +10 -9
  120. package/dist/_chunks/{MagicLinkEE-KOvooF20.mjs.map → MagicLinkEE-s7jLtjiz.mjs.map} +1 -1
  121. package/dist/_chunks/{MarketplacePage-Kqg4doOi.js → MarketplacePage-1mCa5BDJ.js} +9 -8
  122. package/dist/_chunks/{MarketplacePage-Kqg4doOi.js.map → MarketplacePage-1mCa5BDJ.js.map} +1 -1
  123. package/dist/_chunks/{MarketplacePage-3SjeOIl9.mjs → MarketplacePage-wtul_pNK.mjs} +9 -8
  124. package/dist/_chunks/{MarketplacePage-3SjeOIl9.mjs.map → MarketplacePage-wtul_pNK.mjs.map} +1 -1
  125. package/dist/_chunks/{Permissions-9D-OrmKB.js → Permissions--a4GyuI7.js} +2 -2
  126. package/dist/_chunks/{Permissions-9D-OrmKB.js.map → Permissions--a4GyuI7.js.map} +1 -1
  127. package/dist/_chunks/{Permissions-RQidBUvg.mjs → Permissions-M9xmouDR.mjs} +2 -2
  128. package/dist/_chunks/{Permissions-RQidBUvg.mjs.map → Permissions-M9xmouDR.mjs.map} +1 -1
  129. package/dist/_chunks/{ProfilePage-NHYSDob0.js → ProfilePage-I8K2wpuC.js} +9 -8
  130. package/dist/_chunks/{ProfilePage-NHYSDob0.js.map → ProfilePage-I8K2wpuC.js.map} +1 -1
  131. package/dist/_chunks/{ProfilePage-p-ihQgkq.mjs → ProfilePage-fzPpJZLL.mjs} +9 -8
  132. package/dist/_chunks/{ProfilePage-p-ihQgkq.mjs.map → ProfilePage-fzPpJZLL.mjs.map} +1 -1
  133. package/dist/_chunks/{PurchaseAuditLogs-zQio54Q3.mjs → PurchaseAuditLogs-KILCZp5x.mjs} +2 -2
  134. package/dist/_chunks/PurchaseAuditLogs-KILCZp5x.mjs.map +1 -0
  135. package/dist/_chunks/{PurchaseAuditLogs--hjsKHHW.js → PurchaseAuditLogs-bs-tiD4M.js} +2 -2
  136. package/dist/_chunks/PurchaseAuditLogs-bs-tiD4M.js.map +1 -0
  137. package/dist/_chunks/{PurchaseReviewWorkflows-P-FACd5s.js → PurchaseReviewWorkflows-cdGh-HED.js} +2 -2
  138. package/dist/_chunks/PurchaseReviewWorkflows-cdGh-HED.js.map +1 -0
  139. package/dist/_chunks/{PurchaseReviewWorkflows-zGnRRqrC.mjs → PurchaseReviewWorkflows-rVcCufNv.mjs} +2 -2
  140. package/dist/_chunks/PurchaseReviewWorkflows-rVcCufNv.mjs.map +1 -0
  141. package/dist/_chunks/{PurchaseSingleSignOn-BQ5PU-6E.mjs → PurchaseSingleSignOn-H8KWtk1K.mjs} +2 -2
  142. package/dist/_chunks/PurchaseSingleSignOn-H8KWtk1K.mjs.map +1 -0
  143. package/dist/_chunks/{PurchaseSingleSignOn-m2pnP9Ou.js → PurchaseSingleSignOn-OqlM4WkQ.js} +2 -2
  144. package/dist/_chunks/PurchaseSingleSignOn-OqlM4WkQ.js.map +1 -0
  145. package/dist/_chunks/{ReviewWorkflowsColumn-tao-_Nrx.js → ReviewWorkflowsColumn-K_K8J7hl.js} +8 -7
  146. package/dist/_chunks/{ReviewWorkflowsColumn-tao-_Nrx.js.map → ReviewWorkflowsColumn-K_K8J7hl.js.map} +1 -1
  147. package/dist/_chunks/{ReviewWorkflowsColumn-fV_jrZaM.mjs → ReviewWorkflowsColumn-_MYDc8Ry.mjs} +8 -7
  148. package/dist/_chunks/{ReviewWorkflowsColumn-fV_jrZaM.mjs.map → ReviewWorkflowsColumn-_MYDc8Ry.mjs.map} +1 -1
  149. package/dist/_chunks/{SelectRoles-3M7Lm8IQ.mjs → SelectRoles-5dhVQuV2.mjs} +3 -3
  150. package/dist/_chunks/{SelectRoles-3M7Lm8IQ.mjs.map → SelectRoles-5dhVQuV2.mjs.map} +1 -1
  151. package/dist/_chunks/{SelectRoles-I4YcfYDL.js → SelectRoles-Gyf7Ze1D.js} +3 -3
  152. package/dist/_chunks/{SelectRoles-I4YcfYDL.js.map → SelectRoles-Gyf7Ze1D.js.map} +1 -1
  153. package/dist/_chunks/{SettingsPage-uZJ0TQ2j.js → SettingsPage-jUSxQ0ho.js} +30 -29
  154. package/dist/_chunks/{SettingsPage-uZJ0TQ2j.js.map → SettingsPage-jUSxQ0ho.js.map} +1 -1
  155. package/dist/_chunks/{SettingsPage-Ib7N7CWP.mjs → SettingsPage-s5Dj-61C.mjs} +30 -29
  156. package/dist/_chunks/{SettingsPage-Ib7N7CWP.mjs.map → SettingsPage-s5Dj-61C.mjs.map} +1 -1
  157. package/dist/_chunks/{SingleSignOnPage-haO4QYIZ.mjs → SingleSignOnPage-TT4oryGn.mjs} +9 -8
  158. package/dist/_chunks/{SingleSignOnPage-haO4QYIZ.mjs.map → SingleSignOnPage-TT4oryGn.mjs.map} +1 -1
  159. package/dist/_chunks/{SingleSignOnPage-9shy4b5V.js → SingleSignOnPage-b0O5egmz.js} +9 -8
  160. package/dist/_chunks/{SingleSignOnPage-9shy4b5V.js.map → SingleSignOnPage-b0O5egmz.js.map} +1 -1
  161. package/dist/_chunks/{TokenTypeSelect-6dKaAxNw.js → TokenTypeSelect-6njzWQeV.js} +2 -2
  162. package/dist/_chunks/{TokenTypeSelect-6dKaAxNw.js.map → TokenTypeSelect-6njzWQeV.js.map} +1 -1
  163. package/dist/_chunks/{TokenTypeSelect-vW7D0ueA.mjs → TokenTypeSelect-gkAdWU2y.mjs} +2 -2
  164. package/dist/_chunks/{TokenTypeSelect-vW7D0ueA.mjs.map → TokenTypeSelect-gkAdWU2y.mjs.map} +1 -1
  165. package/dist/_chunks/{apiTokens-OFJ2wELt.js → apiTokens-UtJ8rJCr.js} +2 -2
  166. package/dist/_chunks/{apiTokens-OFJ2wELt.js.map → apiTokens-UtJ8rJCr.js.map} +1 -1
  167. package/dist/_chunks/{apiTokens-MX89ShkN.mjs → apiTokens-h0AaRihg.mjs} +2 -2
  168. package/dist/_chunks/{apiTokens-MX89ShkN.mjs.map → apiTokens-h0AaRihg.mjs.map} +1 -1
  169. package/dist/_chunks/{constants-QP7CzvHM.js → constants--ce1rwK1.js} +6 -6
  170. package/dist/_chunks/{constants-QP7CzvHM.js.map → constants--ce1rwK1.js.map} +1 -1
  171. package/dist/_chunks/{constants-dP7nNukG.mjs → constants-3oj946tc.mjs} +6 -6
  172. package/dist/_chunks/{constants-dP7nNukG.mjs.map → constants-3oj946tc.mjs.map} +1 -1
  173. package/dist/_chunks/{constants-ERzqKCqP.js → constants-6LdQgFgh.js} +8 -7
  174. package/dist/_chunks/{constants-ERzqKCqP.js.map → constants-6LdQgFgh.js.map} +1 -1
  175. package/dist/_chunks/{constants-phoWsshc.js → constants-P-KABNaY.js} +10 -9
  176. package/dist/_chunks/{constants-phoWsshc.js.map → constants-P-KABNaY.js.map} +1 -1
  177. package/dist/_chunks/{constants-VvofwTIc.mjs → constants-PCBjswmE.mjs} +8 -7
  178. package/dist/_chunks/{constants-VvofwTIc.mjs.map → constants-PCBjswmE.mjs.map} +1 -1
  179. package/dist/_chunks/{constants-d_g76JgI.mjs → constants-cOPVDhHQ.mjs} +10 -9
  180. package/dist/_chunks/{constants-d_g76JgI.mjs.map → constants-cOPVDhHQ.mjs.map} +1 -1
  181. package/dist/_chunks/{constants-Hbt2Ap8U.js → constants-ctzjEs9Q.js} +8 -7
  182. package/dist/_chunks/{constants-Hbt2Ap8U.js.map → constants-ctzjEs9Q.js.map} +1 -1
  183. package/dist/_chunks/{constants-Dc5jQV8s.mjs → constants-i_FIHwfG.mjs} +8 -7
  184. package/dist/_chunks/{constants-Dc5jQV8s.mjs.map → constants-i_FIHwfG.mjs.map} +1 -1
  185. package/dist/_chunks/{en-ZBAy2GQ0.mjs → en-ZwaF4t5c.mjs} +4 -4
  186. package/dist/_chunks/{en-ZBAy2GQ0.mjs.map → en-ZwaF4t5c.mjs.map} +1 -1
  187. package/dist/_chunks/{en-l5S8Gv-y.js → en-sP8T18rk.js} +4 -4
  188. package/dist/_chunks/{en-l5S8Gv-y.js.map → en-sP8T18rk.js.map} +1 -1
  189. package/dist/_chunks/{index-pLv4RVFT.js → index-5bHZZ1bQ.js} +13590 -13280
  190. package/dist/_chunks/index-5bHZZ1bQ.js.map +1 -0
  191. package/dist/_chunks/{index-XBOTBNuC.mjs → index-pisKLsr8.mjs} +13592 -13283
  192. package/dist/_chunks/index-pisKLsr8.mjs.map +1 -0
  193. package/dist/_chunks/{reviewWorkflows-t1LyvpuK.mjs → reviewWorkflows-_QwFJdPf.mjs} +2 -2
  194. package/dist/_chunks/{reviewWorkflows-t1LyvpuK.mjs.map → reviewWorkflows-_QwFJdPf.mjs.map} +1 -1
  195. package/dist/_chunks/{reviewWorkflows-sIRrdSIc.js → reviewWorkflows-qY9w_Srd.js} +2 -2
  196. package/dist/_chunks/{reviewWorkflows-sIRrdSIc.js.map → reviewWorkflows-qY9w_Srd.js.map} +1 -1
  197. package/dist/_chunks/{transferTokens-UY0XTF15.mjs → transferTokens-SaRdrMx_.mjs} +2 -2
  198. package/dist/_chunks/{transferTokens-UY0XTF15.mjs.map → transferTokens-SaRdrMx_.mjs.map} +1 -1
  199. package/dist/_chunks/{transferTokens-WEaXK93i.js → transferTokens-xykSY8aM.js} +2 -2
  200. package/dist/_chunks/{transferTokens-WEaXK93i.js.map → transferTokens-xykSY8aM.js.map} +1 -1
  201. package/dist/_chunks/{useAdminRoles-IiHPVeUo.js → useAdminRoles-2_gv0THe.js} +2 -2
  202. package/dist/_chunks/{useAdminRoles-IiHPVeUo.js.map → useAdminRoles-2_gv0THe.js.map} +1 -1
  203. package/dist/_chunks/{useAdminRoles-8j_Rc44Z.mjs → useAdminRoles-3IFEVyaA.mjs} +2 -2
  204. package/dist/_chunks/{useAdminRoles-8j_Rc44Z.mjs.map → useAdminRoles-3IFEVyaA.mjs.map} +1 -1
  205. package/dist/_chunks/{useContentTypes-Bk1Y2UmU.js → useContentTypes-9PaxXISe.js} +2 -2
  206. package/dist/_chunks/{useContentTypes-Bk1Y2UmU.js.map → useContentTypes-9PaxXISe.js.map} +1 -1
  207. package/dist/_chunks/{useContentTypes-Madr3L1H.mjs → useContentTypes-rYXD3ohE.mjs} +2 -2
  208. package/dist/_chunks/{useContentTypes-Madr3L1H.mjs.map → useContentTypes-rYXD3ohE.mjs.map} +1 -1
  209. package/dist/_chunks/{useLicenseLimitNotification-rN5MNuOy.mjs → useLicenseLimitNotification-O_Ayr57V.mjs} +2 -2
  210. package/dist/_chunks/{useLicenseLimitNotification-rN5MNuOy.mjs.map → useLicenseLimitNotification-O_Ayr57V.mjs.map} +1 -1
  211. package/dist/_chunks/{useLicenseLimitNotification-lU6tLg8T.js → useLicenseLimitNotification-buPAIxAM.js} +2 -2
  212. package/dist/_chunks/{useLicenseLimitNotification-lU6tLg8T.js.map → useLicenseLimitNotification-buPAIxAM.js.map} +1 -1
  213. package/dist/_chunks/{useReviewWorkflows-bzq0E6aV.js → useReviewWorkflows-UoegtQMR.js} +2 -2
  214. package/dist/_chunks/{useReviewWorkflows-bzq0E6aV.js.map → useReviewWorkflows-UoegtQMR.js.map} +1 -1
  215. package/dist/_chunks/{useReviewWorkflows-zEtut4MA.mjs → useReviewWorkflows-rZwsjTIf.mjs} +2 -2
  216. package/dist/_chunks/{useReviewWorkflows-zEtut4MA.mjs.map → useReviewWorkflows-rZwsjTIf.mjs.map} +1 -1
  217. package/dist/_chunks/{useWebhooks-0L1K3yUR.mjs → useWebhooks-g4gI6Wxf.mjs} +2 -2
  218. package/dist/_chunks/{useWebhooks-0L1K3yUR.mjs.map → useWebhooks-g4gI6Wxf.mjs.map} +1 -1
  219. package/dist/_chunks/{useWebhooks--d-jYykj.js → useWebhooks-hX8Kb83I.js} +2 -2
  220. package/dist/_chunks/{useWebhooks--d-jYykj.js.map → useWebhooks-hX8Kb83I.js.map} +1 -1
  221. package/dist/_chunks/{validateWorkflow-2FnomUH9.mjs → validateWorkflow-l4Zr41nC.mjs} +2 -2
  222. package/dist/_chunks/{validateWorkflow-2FnomUH9.mjs.map → validateWorkflow-l4Zr41nC.mjs.map} +1 -1
  223. package/dist/_chunks/{validateWorkflow-qMNO_vCC.js → validateWorkflow-s4PVrbQP.js} +2 -2
  224. package/dist/_chunks/{validateWorkflow-qMNO_vCC.js.map → validateWorkflow-s4PVrbQP.js.map} +1 -1
  225. package/dist/admin/index.js +7 -6
  226. package/dist/admin/index.js.map +1 -1
  227. package/dist/admin/index.mjs +7 -6
  228. package/dist/admin/index.mjs.map +1 -1
  229. package/dist/admin/src/StrapiApp.d.ts +4 -0
  230. package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +31 -0
  231. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Actions.d.ts +51 -0
  232. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/{SelectedEntriesModal.d.ts → PublishAction.d.ts} +10 -10
  233. package/dist/admin/src/content-manager/pages/ListView/hooks/useAllowedActions.d.ts +2 -0
  234. package/dist/admin/src/core/apis/Plugin.d.ts +7 -6
  235. package/dist/admin/src/core/apis/content-manager.d.ts +58 -0
  236. package/dist/admin/src/hooks/useForceUpdate.d.ts +7 -0
  237. package/dist/admin/src/hooks/useIsMounted.d.ts +3 -0
  238. package/dist/admin/src/hooks/useThrottledCallback.d.ts +22 -0
  239. package/dist/admin/src/utils/shims.d.ts +4 -0
  240. package/package.json +13 -13
  241. package/dist/_chunks/PurchaseAuditLogs--hjsKHHW.js.map +0 -1
  242. package/dist/_chunks/PurchaseAuditLogs-zQio54Q3.mjs.map +0 -1
  243. package/dist/_chunks/PurchaseReviewWorkflows-P-FACd5s.js.map +0 -1
  244. package/dist/_chunks/PurchaseReviewWorkflows-zGnRRqrC.mjs.map +0 -1
  245. package/dist/_chunks/PurchaseSingleSignOn-BQ5PU-6E.mjs.map +0 -1
  246. package/dist/_chunks/PurchaseSingleSignOn-m2pnP9Ou.js.map +0 -1
  247. package/dist/_chunks/index-XBOTBNuC.mjs.map +0 -1
  248. package/dist/_chunks/index-pLv4RVFT.js.map +0 -1
  249. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Buttons.d.ts +0 -27
@@ -9,14 +9,14 @@ const formik = require("formik");
9
9
  const reactIntl = require("react-intl");
10
10
  const reactRedux = require("react-redux");
11
11
  const reactRouterDom = require("react-router-dom");
12
- const useAdminRoles = require("./useAdminRoles-IiHPVeUo.js");
13
- const useContentTypes = require("./useContentTypes-Bk1Y2UmU.js");
14
- const validateWorkflow = require("./validateWorkflow-qMNO_vCC.js");
15
- const index = require("./index-pLv4RVFT.js");
16
- const Layout = require("./Layout-m03mlKAn.js");
12
+ const useAdminRoles = require("./useAdminRoles-2_gv0THe.js");
13
+ const useContentTypes = require("./useContentTypes-9PaxXISe.js");
14
+ const validateWorkflow = require("./validateWorkflow-s4PVrbQP.js");
15
+ const index = require("./index-5bHZZ1bQ.js");
16
+ const Layout = require("./Layout-BfXkf1tg.js");
17
17
  const LimitsModal = require("./LimitsModal-gq7jwfap.js");
18
18
  const constants = require("./constants-L1I-Y-RJ.js");
19
- const useReviewWorkflows = require("./useReviewWorkflows-bzq0E6aV.js");
19
+ const useReviewWorkflows = require("./useReviewWorkflows-UoegtQMR.js");
20
20
  require("styled-components");
21
21
  require("prop-types");
22
22
  require("@strapi/design-system/v2");
@@ -43,12 +43,16 @@ require("qs");
43
43
  require("react-query");
44
44
  require("lodash/get");
45
45
  require("lodash/defaultsDeep");
46
+ require("lodash/throttle");
47
+ require("lodash/isBoolean");
48
+ require("lodash/isEmpty");
49
+ require("lodash/isNaN");
50
+ require("lodash/toNumber");
46
51
  require("react-dnd");
47
52
  require("react-window");
48
53
  require("lodash/cloneDeep");
49
54
  require("lodash/upperFirst");
50
55
  require("lodash/fp");
51
- require("lodash/isNaN");
52
56
  require("lodash/take");
53
57
  require("slate");
54
58
  require("slate-history");
@@ -70,16 +74,13 @@ require("markdown-it-sup");
70
74
  require("highlight.js/styles/solarized-dark.css");
71
75
  require("codemirror5/addon/display/placeholder");
72
76
  require("lodash/toString");
73
- require("lodash/isEmpty");
74
77
  require("react-dom");
75
- require("lodash/isBoolean");
76
- require("lodash/toNumber");
77
78
  require("fractional-indexing");
78
79
  require("lodash/uniqBy");
79
80
  require("lodash/unset");
80
81
  require("lodash/isArray");
81
82
  require("date-fns/parseISO");
82
- require("./reviewWorkflows-sIRrdSIc.js");
83
+ require("./reviewWorkflows-qY9w_Srd.js");
83
84
  function _interopNamespace(e) {
84
85
  if (e && e.__esModule)
85
86
  return e;
@@ -330,4 +331,4 @@ const ReviewWorkflowsCreatePage = () => {
330
331
  ] });
331
332
  };
332
333
  exports.ReviewWorkflowsCreatePage = ReviewWorkflowsCreatePage;
333
- //# sourceMappingURL=CreatePage-hZTEAj3p.js.map
334
+ //# sourceMappingURL=CreatePage-Cqqvxnxa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-hZTEAj3p.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n },\n });\n\n push(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["useIntl","useHistory","useAPIErrorHandler","useDispatch","useNotification","useContentTypes","useReviewWorkflows","useAdminRoles","useSelector","selectIsLoading","selectIsWorkflowDirty","selectCurrentWorkflow","selectRoles","React","useLicenseLimits","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","isBaseQueryError","formik","useFormik","validateWorkflow","useInjectReducer","REDUX_NAMESPACE","reducer","resetWorkflow","setWorkflows","setContentTypes","setRoles","setIsLoading","addStage","jsxs","Fragment","jsx","Layout.DragLayerRendered","FormikProvider","Form","Layout.Header","Layout.Back","Button","Check","Layout.Root","Flex","Loader","WorkflowAttributes","Stages","ConfirmDialog","Typography","LimitsModal"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage-Cqqvxnxa.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n },\n });\n\n push(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["useIntl","useHistory","useAPIErrorHandler","useDispatch","useNotification","useContentTypes","useReviewWorkflows","useAdminRoles","useSelector","selectIsLoading","selectIsWorkflowDirty","selectCurrentWorkflow","selectRoles","React","useLicenseLimits","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","isBaseQueryError","formik","useFormik","validateWorkflow","useInjectReducer","REDUX_NAMESPACE","reducer","resetWorkflow","setWorkflows","setContentTypes","setRoles","setIsLoading","addStage","jsxs","Fragment","jsx","Layout.DragLayerRendered","FormikProvider","Form","Layout.Header","Layout.Back","Button","Check","Layout.Root","Flex","Loader","WorkflowAttributes","Stages","ConfirmDialog","Typography","LimitsModal"],"mappings":"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"}
@@ -10,8 +10,8 @@ import { useIntl } from "react-intl";
10
10
  import { useRouteMatch, useHistory, NavLink } from "react-router-dom";
11
11
  import styled from "styled-components";
12
12
  import * as yup from "yup";
13
- import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, D as useCreateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-XBOTBNuC.mjs";
14
- import { P as Permissions } from "./Permissions-RQidBUvg.mjs";
13
+ import { j as useTypedSelector, A as useGetRolePermissionLayoutQuery, B as useGetRolePermissionsQuery, D as useCreateRoleMutation, E as useUpdateRolePermissionsMutation, x as isBaseQueryError } from "./index-pisKLsr8.mjs";
14
+ import { P as Permissions } from "./Permissions-M9xmouDR.mjs";
15
15
  import "react-dom/client";
16
16
  import "invariant";
17
17
  import "lodash/isFunction";
@@ -32,15 +32,19 @@ import "immer";
32
32
  import "lodash/get";
33
33
  import "lodash/set";
34
34
  import "lodash/defaultsDeep";
35
+ import "lodash/isEqual";
36
+ import "lodash/throttle";
37
+ import "lodash/isBoolean";
38
+ import "lodash/isEmpty";
39
+ import "lodash/isNaN";
40
+ import "lodash/toNumber";
35
41
  import "react-dnd";
36
42
  import "react-dnd-html5-backend";
37
43
  import "react-window";
38
44
  import "lodash/cloneDeep";
39
- import "lodash/isEqual";
40
45
  import "lodash/upperFirst";
41
46
  import "prop-types";
42
47
  import "lodash/fp";
43
- import "lodash/isNaN";
44
48
  import "lodash/take";
45
49
  import "slate";
46
50
  import "slate-history";
@@ -62,10 +66,7 @@ import "markdown-it-sup";
62
66
  import "highlight.js/styles/solarized-dark.css";
63
67
  import "codemirror5/addon/display/placeholder";
64
68
  import "lodash/toString";
65
- import "lodash/isEmpty";
66
69
  import "react-dom";
67
- import "lodash/isBoolean";
68
- import "lodash/toNumber";
69
70
  import "fractional-indexing";
70
71
  import "lodash/uniqBy";
71
72
  import "lodash/unset";
@@ -302,4 +303,4 @@ export {
302
303
  CreatePage,
303
304
  ProtectedCreatePage
304
305
  };
305
- //# sourceMappingURL=CreatePage-d-1uabiQ.mjs.map
306
+ //# sourceMappingURL=CreatePage-ObDt4GbK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-d-1uabiQ.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useAPIErrorHandler,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useRouteMatch<{ id: string }>('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const { replace } = useHistory();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – fixed in V5\n lockApp();\n\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\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 const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n\n replace(`/settings/roles/${res.data.id}`);\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – fixed in V5\n unlockApp();\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole && permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <CreatePage />\n </CheckPagePermissions>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage-ObDt4GbK.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Textarea,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n CheckPagePermissions,\n Form,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useNotification,\n useOverlayBlocker,\n useTracking,\n translatedErrors,\n useAPIErrorHandler,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft } from '@strapi/icons';\nimport { format } from 'date-fns';\nimport { Formik, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport {\n useCreateRoleMutation,\n useGetRolePermissionLayoutQuery,\n useGetRolePermissionsQuery,\n useUpdateRolePermissionsMutation,\n} from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { Permissions, PermissionsAPI } from './components/Permissions';\n\n/* -------------------------------------------------------------------------------------------------\n * CreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst CREATE_SCHEMA = yup.object().shape({\n name: yup.string().required(translatedErrors.required),\n description: yup.string().required(translatedErrors.required),\n});\n\n/**\n * TODO: be nice if we could just infer this from the schema\n */\ninterface CreateRoleFormValues {\n name: string;\n description: string;\n}\n\n/**\n * TODO: this whole section of the app needs refactoring. Using a ref to\n * manage the state of the child is nonsensical.\n */\nconst CreatePage = () => {\n const match = useRouteMatch<{ id: string }>('/settings/roles/duplicate/:id');\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { formatMessage } = useIntl();\n const { replace } = useHistory();\n const permissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const id = match?.params.id ?? null;\n\n const { isLoading: isLoadingPermissionsLayout, data: permissionsLayout } =\n useGetRolePermissionLayoutQuery({\n /**\n * Role here is a query param so if there's no role we pass an empty string\n * which returns us a default layout.\n */\n role: id ?? '',\n });\n\n /**\n * We need this so if we're cloning a role, we can fetch\n * the current permissions that role has.\n */\n const { data: rolePermissions, isLoading: isLoadingRole } = useGetRolePermissionsQuery(\n {\n id: id!,\n },\n {\n skip: !id,\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [createRole] = useCreateRoleMutation();\n const [updateRolePermissions] = useUpdateRolePermissionsMutation();\n\n const handleCreateRoleSubmit = async (\n data: CreateRoleFormValues,\n formik: FormikHelpers<CreateRoleFormValues>\n ) => {\n try {\n // @ts-expect-error – fixed in V5\n lockApp();\n\n if (id) {\n trackUsage('willDuplicateRole');\n } else {\n trackUsage('willCreateNewRole');\n }\n\n const res = await createRole(data);\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 const { permissionsToSend } = permissionsRef.current?.getPermissions() ?? {};\n\n if (res.data.id && Array.isArray(permissionsToSend) && permissionsToSend.length > 0) {\n const updateRes = await updateRolePermissions({\n id: res.data.id,\n permissions: permissionsToSend,\n });\n\n if ('error' in updateRes) {\n if (isBaseQueryError(updateRes.error) && updateRes.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(updateRes.error));\n } else {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(updateRes.error),\n });\n }\n\n return;\n }\n }\n\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.roles.created', defaultMessage: 'created' },\n });\n\n replace(`/settings/roles/${res.data.id}`);\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error' },\n });\n } finally {\n // @ts-expect-error – fixed in V5\n unlockApp();\n }\n };\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <Formik\n initialValues={\n {\n name: '',\n description: `${formatMessage({\n id: 'Settings.roles.form.created',\n defaultMessage: 'Created',\n })} ${format(new Date(), 'PPP')}`,\n } satisfies CreateRoleFormValues\n }\n onSubmit={handleCreateRoleSubmit}\n validationSchema={CREATE_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleReset, handleChange, isSubmitting }) => (\n <Form>\n <>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => {\n handleReset();\n permissionsRef.current?.resetForm();\n }}\n size=\"L\"\n >\n {formatMessage({\n id: 'app.components.Button.reset',\n defaultMessage: 'Reset',\n })}\n </Button>\n <Button type=\"submit\" loading={isSubmitting} size=\"L\">\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={formatMessage({\n id: 'Settings.roles.create.title',\n defaultMessage: 'Create a role',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.create.description',\n defaultMessage: 'Define the rights given to the role',\n })}\n navigationAction={\n // @ts-expect-error – the props from the component passed as `as` are not correctly inferred.\n <Link as={NavLink} startIcon={<ArrowLeft />} to=\"/settings/roles\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex justifyContent=\"space-between\">\n <Box>\n <Box>\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n </Box>\n <Box>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.roles.form.description',\n defaultMessage: 'Name and description of the role',\n })}\n </Typography>\n </Box>\n </Box>\n <UsersRoleNumber>\n {formatMessage(\n {\n id: 'Settings.roles.form.button.users-with-role',\n defaultMessage:\n '{number, plural, =0 {# users} one {# user} other {# users}} with this role',\n },\n { number: 0 }\n )}\n </UsersRoleNumber>\n </Flex>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"name\"\n error={errors.name && formatMessage({ id: errors.name })}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n onChange={handleChange}\n required\n value={values.name}\n />\n </GridItem>\n <GridItem col={6}>\n <Textarea\n label={formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n id=\"description\"\n error={errors.description && formatMessage({ id: errors.description })}\n onChange={handleChange}\n >\n {values.description}\n </Textarea>\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n {!isLoadingPermissionsLayout && !isLoadingRole && permissionsLayout ? (\n <Box shadow=\"filterShadow\" hasRadius>\n <Permissions\n isFormDisabled={false}\n ref={permissionsRef}\n permissions={rolePermissions}\n layout={permissionsLayout}\n />\n </Box>\n ) : (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <LoadingIndicatorPage />\n </Box>\n )}\n </Flex>\n </ContentLayout>\n </>\n </Form>\n )}\n </Formik>\n </Main>\n );\n};\n\nconst UsersRoleNumber = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n color: ${({ theme }) => theme.colors.primary600};\n border-radius: ${({ theme }) => theme.borderRadius};\n font-size: ${12 / 16}rem;\n font-weight: bold;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedCreatePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.roles.create\n );\n\n return (\n <CheckPagePermissions permissions={permissions}>\n <CreatePage />\n </CheckPagePermissions>\n );\n};\n\nexport { CreatePage, ProtectedCreatePage };\n"],"names":[],"mappings":"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"}
@@ -7,14 +7,14 @@ import { useFormik, FormikProvider, Form } from "formik";
7
7
  import { useIntl } from "react-intl";
8
8
  import { useDispatch, useSelector } from "react-redux";
9
9
  import { useHistory } from "react-router-dom";
10
- import { u as useAdminRoles } from "./useAdminRoles-8j_Rc44Z.mjs";
11
- import { u as useContentTypes } from "./useContentTypes-Madr3L1H.mjs";
12
- import { s as selectIsLoading, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, c as selectRoles, v as validateWorkflow, u as useInjectReducer, r as resetWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, h as addStage, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-2FnomUH9.mjs";
13
- import { m as useLicenseLimits, x as isBaseQueryError } from "./index-XBOTBNuC.mjs";
14
- import { D as DragLayerRendered, H as Header, B as Back, R as Root } from "./Layout-B87oCQCm.mjs";
10
+ import { u as useAdminRoles } from "./useAdminRoles-3IFEVyaA.mjs";
11
+ import { u as useContentTypes } from "./useContentTypes-rYXD3ohE.mjs";
12
+ import { s as selectIsLoading, a as selectIsWorkflowDirty, b as selectCurrentWorkflow, c as selectRoles, v as validateWorkflow, u as useInjectReducer, r as resetWorkflow, d as setWorkflows, e as setContentTypes, f as setRoles, g as setIsLoading, h as addStage, W as WorkflowAttributes, S as Stages, i as reducer } from "./validateWorkflow-l4Zr41nC.mjs";
13
+ import { m as useLicenseLimits, x as isBaseQueryError } from "./index-pisKLsr8.mjs";
14
+ import { D as DragLayerRendered, H as Header, B as Back, R as Root } from "./Layout-BquZQAb2.mjs";
15
15
  import { L as LimitsModal } from "./LimitsModal-slvRtty7.mjs";
16
16
  import { C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, a as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, R as REDUX_NAMESPACE } from "./constants-8sAt6dKz.mjs";
17
- import { u as useReviewWorkflows } from "./useReviewWorkflows-zEtut4MA.mjs";
17
+ import { u as useReviewWorkflows } from "./useReviewWorkflows-rZwsjTIf.mjs";
18
18
  import "styled-components";
19
19
  import "prop-types";
20
20
  import "@strapi/design-system/v2";
@@ -41,12 +41,16 @@ import "qs";
41
41
  import "react-query";
42
42
  import "lodash/get";
43
43
  import "lodash/defaultsDeep";
44
+ import "lodash/throttle";
45
+ import "lodash/isBoolean";
46
+ import "lodash/isEmpty";
47
+ import "lodash/isNaN";
48
+ import "lodash/toNumber";
44
49
  import "react-dnd";
45
50
  import "react-window";
46
51
  import "lodash/cloneDeep";
47
52
  import "lodash/upperFirst";
48
53
  import "lodash/fp";
49
- import "lodash/isNaN";
50
54
  import "lodash/take";
51
55
  import "slate";
52
56
  import "slate-history";
@@ -68,16 +72,13 @@ import "markdown-it-sup";
68
72
  import "highlight.js/styles/solarized-dark.css";
69
73
  import "codemirror5/addon/display/placeholder";
70
74
  import "lodash/toString";
71
- import "lodash/isEmpty";
72
75
  import "react-dom";
73
- import "lodash/isBoolean";
74
- import "lodash/toNumber";
75
76
  import "fractional-indexing";
76
77
  import "lodash/uniqBy";
77
78
  import "lodash/unset";
78
79
  import "lodash/isArray";
79
80
  import "date-fns/parseISO";
80
- import "./reviewWorkflows-t1LyvpuK.mjs";
81
+ import "./reviewWorkflows-_QwFJdPf.mjs";
81
82
  const ReviewWorkflowsCreatePage = () => {
82
83
  const { formatMessage } = useIntl();
83
84
  const { push } = useHistory();
@@ -311,4 +312,4 @@ const ReviewWorkflowsCreatePage = () => {
311
312
  export {
312
313
  ReviewWorkflowsCreatePage
313
314
  };
314
- //# sourceMappingURL=CreatePage-80fIYaTs.mjs.map
315
+ //# sourceMappingURL=CreatePage-bPmBTOep.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-80fIYaTs.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n },\n });\n\n push(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePage-bPmBTOep.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Loader, Typography } from '@strapi/design-system';\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { useFormik, Form, FormikProvider, FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../../../admin/src/hooks/useAdminRoles';\nimport { useContentTypes } from '../../../../../../../admin/src/hooks/useContentTypes';\nimport { useInjectReducer } from '../../../../../../../admin/src/hooks/useInjectReducer';\nimport { isBaseQueryError } from '../../../../../../../admin/src/utils/baseQuery';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\n\nimport {\n addStage,\n resetWorkflow,\n setContentTypes,\n setIsLoading,\n setRoles,\n setWorkflows,\n} from './actions';\nimport * as Layout from './components/Layout';\nimport { LimitsModal } from './components/LimitsModal';\nimport { Stages } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n REDUX_NAMESPACE,\n} from './constants';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\nimport { CurrentWorkflow, reducer } from './reducer';\nimport {\n selectIsLoading,\n selectIsWorkflowDirty,\n selectCurrentWorkflow,\n selectRoles,\n} from './selectors';\nimport { validateWorkflow } from './utils/validateWorkflow';\n\nexport const ReviewWorkflowsCreatePage = () => {\n const { formatMessage } = useIntl();\n const { push } = useHistory();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const dispatch = useDispatch();\n const toggleNotification = useNotification();\n const { collectionTypes, singleTypes, isLoading: isLoadingContentTypes } = useContentTypes();\n const { isLoading: isLoadingWorkflow, meta, workflows, createWorkflow } = useReviewWorkflows();\n const { isLoading: isLoadingRoles, roles: serverRoles } = useAdminRoles();\n const isLoading = useSelector(selectIsLoading);\n const currentWorkflowIsDirty = useSelector(selectIsWorkflowDirty);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const roles = useSelector(selectRoles);\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n const { isLoading: isLicenseLoading, getFeature } = useLicenseLimits();\n const [initialErrors, setInitialErrors] = React.useState<FormikErrors<CurrentWorkflow>>();\n const [savePrompts, setSavePrompts] = React.useState<{ hasReassignedContentTypes?: boolean }>({});\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n const contentTypesFromOtherWorkflows = workflows?.flatMap((workflow) => workflow.contentTypes);\n\n const submitForm = async () => {\n setSavePrompts({});\n\n try {\n const res = await createWorkflow({\n // @ts-expect-error – currentWorkflow will have already been validated by formik before it gets here.\n data: currentWorkflow,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setInitialErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'warning',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Settings.review-workflows.create.page.notification.success',\n defaultMessage: 'Workflow successfully created',\n },\n });\n\n push(`/settings/review-workflows/${res.data.id}`);\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: {\n id: 'Settings.review-workflows.create.page.notification.error',\n defaultMessage: 'An error occurred',\n },\n });\n }\n };\n\n const handleConfirmDeleteDialog = async () => {\n await submitForm();\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const formik = useFormik({\n enableReinitialize: true,\n initialErrors,\n initialValues: currentWorkflow,\n async onSubmit() {\n const isContentTypeReassignment = currentWorkflow.contentTypes?.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n\n if (meta && numberOfWorkflows && meta?.workflowCount >= parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n } else {\n submitForm();\n }\n },\n validate(values) {\n return validateWorkflow({ values, formatMessage });\n },\n });\n\n useInjectReducer(REDUX_NAMESPACE, reducer);\n\n React.useEffect(() => {\n dispatch(resetWorkflow());\n\n if (!isLoadingWorkflow && workflows) {\n dispatch(setWorkflows({ workflows }));\n }\n\n if (!isLoadingContentTypes) {\n dispatch(setContentTypes({ collectionTypes, singleTypes }));\n }\n\n if (!isLoadingRoles) {\n dispatch(setRoles(serverRoles));\n }\n\n dispatch(setIsLoading(isLoadingContentTypes || isLoadingRoles));\n\n // Create an empty default stage\n dispatch(\n addStage({\n name: '',\n })\n );\n }, [\n collectionTypes,\n dispatch,\n isLoadingContentTypes,\n isLoadingRoles,\n isLoadingWorkflow,\n serverRoles,\n singleTypes,\n workflows,\n ]);\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (\n currentWorkflow.stages &&\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length >= parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [isLicenseLoading, isLoadingWorkflow, limits, currentWorkflow.stages, stagesPerWorkflow]);\n\n React.useEffect(() => {\n if (!isLoading && roles?.length === 0) {\n toggleNotification({\n blockTransition: true,\n type: 'warning',\n message: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification]);\n\n return (\n <>\n <Layout.DragLayerRendered />\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <Layout.Header\n navigationAction={<Layout.Back href=\"/settings/review-workflows\" />}\n primaryAction={\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"M\"\n disabled={!currentWorkflowIsDirty}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })}\n subtitle={formatMessage(\n {\n id: 'Settings.review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n {isLoading ? (\n <Loader>\n {formatMessage({\n id: 'Settings.review-workflows.page.isLoading',\n defaultMessage: 'Workflow is loading',\n })}\n </Loader>\n ) : (\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes />\n <Stages stages={formik.values?.stages} />\n </Flex>\n )}\n </Flex>\n </Layout.Root>\n </Form>\n </FormikProvider>\n\n <ConfirmDialog.Root\n isConfirmButtonLoading={isLoading}\n isOpen={Object.keys(savePrompts).length > 0}\n onToggleDialog={handleConfirmClose}\n onConfirm={handleConfirmDeleteDialog}\n >\n <ConfirmDialog.Body>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'Settings.review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count: contentTypesFromOtherWorkflows?.filter((contentType) =>\n currentWorkflow.contentTypes?.includes(contentType)\n ).length,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'Settings.review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog.Body>\n </ConfirmDialog.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'Settings.review-workflows.create.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n"],"names":["Layout.DragLayerRendered","Layout.Header","Layout.Back","Layout.Root"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,MAAM,4BAA4B,MAAM;AACvC,QAAA,EAAE,kBAAkB;AACpB,QAAA,EAAE,SAAS;AACX,QAAA;AAAA,IACJ,yBAAyB;AAAA,IACzB,iCAAiC;AAAA,MAC/B,mBAAmB;AACvB,QAAM,WAAW;AACjB,QAAM,qBAAqB;AAC3B,QAAM,EAAE,iBAAiB,aAAa,WAAW,sBAAA,IAA0B;AAC3E,QAAM,EAAE,WAAW,mBAAmB,MAAM,WAAW,eAAA,IAAmB;AAC1E,QAAM,EAAE,WAAW,gBAAgB,OAAO,YAAA,IAAgB;AACpD,QAAA,YAAY,YAAY,eAAe;AACvC,QAAA,yBAAyB,YAAY,qBAAqB;AAC1D,QAAA,kBAAkB,YAAY,qBAAqB;AACnD,QAAA,QAAQ,YAAY,WAAW;AACrC,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAsC,IAAI;AAC5F,QAAM,EAAE,WAAW,kBAAkB,eAAe,iBAAiB;AACrE,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAwC;AACxF,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAkD,CAAA,CAAE;AAE1F,QAAA,SAAS,WAAmB,kBAAkB;AAC9C,QAAA,oBAAoB,SAAS,mCAAmC;AAChE,QAAA,oBAAoB,SAAS,8CAA8C;AACjF,QAAM,iCAAiC,WAAW,QAAQ,CAAC,aAAa,SAAS,YAAY;AAE7F,QAAM,aAAa,YAAY;AAC7B,mBAAe,CAAE,CAAA;AAEb,QAAA;AACI,YAAA,MAAM,MAAM,eAAe;AAAA;AAAA,QAE/B,MAAM;AAAA,MAAA,CACP;AAED,UAAI,WAAW,KAAK;AAClB,YAAI,iBAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,SAAS,mBAAmB;AACtD,2BAAA,uBAAuB,IAAI,KAAK,CAAC;AAAA,QACpD;AAEmB,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,IAAI,KAAK;AAAA,QAAA,CAClC;AAED;AAAA,MACF;AAEmB,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,MAAA,CACD;AAED,WAAK,8BAA8B,IAAI,KAAK,EAAE,EAAE;AAAA,aACzC,OAAO;AACK,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EAAA;AAGF,QAAM,4BAA4B,YAAY;AAC5C,UAAM,WAAW;AAAA,EAAA;AAGnB,QAAM,qBAAqB,MAAM;AAC/B,mBAAe,CAAE,CAAA;AAAA,EAAA;AAGnB,QAAM,SAAS,UAAU;AAAA,IACvB,oBAAoB;AAAA,IACpB;AAAA,IACA,eAAe;AAAA,IACf,MAAM,WAAW;AACT,YAAA,4BAA4B,gBAAgB,cAAc;AAAA,QAAK,CAAC,gBACpE,gCAAgC,SAAS,WAAW;AAAA,MAAA;AAStD,UAAI,QAAQ,qBAAqB,MAAM,iBAAiB,SAAS,mBAAmB,EAAE,GAAG;AACvF,0BAAkB,UAAU;AAAA,MAO9B,WACE,gBAAgB,UAChB,qBACA,gBAAgB,OAAO,UAAU,SAAS,mBAAmB,EAAE,GAC/D;AACA,0BAAkB,OAAO;AAAA,iBAChB,2BAA2B;AACpC,uBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,2BAA2B,KAAO,EAAA;AAAA,MAAA,OAClE;AACM;MACb;AAAA,IACF;AAAA,IACA,SAAS,QAAQ;AACf,aAAO,iBAAiB,EAAE,QAAQ,cAAe,CAAA;AAAA,IACnD;AAAA,EAAA,CACD;AAED,mBAAiB,iBAAiB,OAAO;AAEzC,QAAM,UAAU,MAAM;AACpB,aAAS,eAAe;AAEpB,QAAA,CAAC,qBAAqB,WAAW;AACnC,eAAS,aAAa,EAAE,UAAU,CAAC,CAAC;AAAA,IACtC;AAEA,QAAI,CAAC,uBAAuB;AAC1B,eAAS,gBAAgB,EAAE,iBAAiB,YAAA,CAAa,CAAC;AAAA,IAC5D;AAEA,QAAI,CAAC,gBAAgB;AACV,eAAA,SAAS,WAAW,CAAC;AAAA,IAChC;AAES,aAAA,aAAa,yBAAyB,cAAc,CAAC;AAG9D;AAAA,MACE,SAAS;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EACH,GACC;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAcD,QAAM,UAAU,MAAM;AAChB,QAAA,CAAC,qBAAqB,CAAC,kBAAkB;AAC3C,UACE,gBAAgB,UAChB,SAAS,8CAA8C,KACvD,qBACA,gBAAgB,OAAO,UAAU,SAAS,mBAAmB,EAAE,GAC/D;AACA,0BAAkB,OAAO;AAAA,MAC3B;AAAA,IACF;AAAA,EAAA,GACC,CAAC,kBAAkB,mBAAmB,QAAQ,gBAAgB,QAAQ,iBAAiB,CAAC;AAE3F,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,aAAa,OAAO,WAAW,GAAG;AAClB,yBAAA;AAAA,QACjB,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA,CACF;AAAA,IACH;AAAA,KACC,CAAC,eAAe,WAAW,OAAO,kBAAkB,CAAC;AAExD,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAC,oBAAAA,mBAAA,EAAyB;AAAA,IAC1B,oBAAC,kBAAe,OAAO,QACrB,+BAAC,MAAK,EAAA,UAAU,OAAO,cACrB,UAAA;AAAA,MAAA;AAAA,QAACC;AAAAA,QAAA;AAAA,UACC,kBAAmB,oBAAAC,MAAA,EAAY,MAAK,6BAA6B,CAAA;AAAA,UACjE,eACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,+BAAY,OAAM,EAAA;AAAA,cAClB,MAAK;AAAA,cACL,MAAK;AAAA,cACL,UAAU,CAAC;AAAA,cAEV,UAAc,cAAA;AAAA,gBACb,IAAI;AAAA,gBACJ,gBAAgB;AAAA,cAAA,CACjB;AAAA,YAAA;AAAA,UACH;AAAA,UAEF,OAAO,cAAc;AAAA,YACnB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UACD,UAAU;AAAA,YACR;AAAA,cACE,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAClB;AAAA,YACA,EAAE,OAAO,iBAAiB,QAAQ,UAAU,EAAE;AAAA,UAChD;AAAA,QAAA;AAAA,MACF;AAAA,MACC,oBAAAC,MAAA,EACC,8BAAC,MAAK,EAAA,YAAW,WAAU,WAAU,UAAS,KAAK,GAChD,UACC,YAAA,oBAAC,UACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACjB,CAAA,GACH,IAEC,qBAAA,MAAA,EAAK,YAAW,WAAU,WAAU,UAAS,KAAK,GACjD,UAAA;AAAA,QAAA,oBAAC,oBAAmB,EAAA;AAAA,QACnB,oBAAA,QAAA,EAAO,QAAQ,OAAO,QAAQ,QAAQ;AAAA,MAAA,EACzC,CAAA,EAEJ,CAAA,GACF;AAAA,IAAA,EAAA,CACF,EACF,CAAA;AAAA,IAEA;AAAA,MAAC,cAAc;AAAA,MAAd;AAAA,QACC,wBAAwB;AAAA,QACxB,QAAQ,OAAO,KAAK,WAAW,EAAE,SAAS;AAAA,QAC1C,gBAAgB;AAAA,QAChB,WAAW;AAAA,QAEX,UAAA,oBAAC,cAAc,MAAd,EACC,+BAAC,MAAK,EAAA,WAAU,UAAS,KAAK,GAC3B,UAAA;AAAA,UAAA,YAAY,6BACV,oBAAA,YAAA,EAAW,WAAU,UAAS,SAAQ,SACpC,UAAA;AAAA,YACC;AAAA,cACE,IAAI;AAAA,cACJ,gBACE;AAAA,YACJ;AAAA,YACA;AAAA,cACE,OAAO,gCAAgC;AAAA,gBAAO,CAAC,gBAC7C,gBAAgB,cAAc,SAAS,WAAW;AAAA,cAAA,EAClD;AAAA,YACJ;AAAA,UAAA,GAEJ;AAAA,8BAGD,YAAW,EAAA,WAAU,UAAS,SAAQ,SACpC,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,QAAA,EAAA,CACF,EACF,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,IAEA;AAAA,MAAC,YAAY;AAAA,MAAZ;AAAA,QACC,QAAQ,mBAAmB;AAAA,QAC3B,SAAS,MAAM,kBAAkB,IAAI;AAAA,QAErC,UAAA;AAAA,UAAC,oBAAA,YAAY,OAAZ,EACE,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,UAEC,oBAAA,YAAY,MAAZ,EACE,UAAc,cAAA;AAAA,YACb,IAAI;AAAA,YACJ,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IAEA,qBAAC,YAAY,MAAZ,EAAiB,QAAQ,mBAAmB,SAAS,SAAS,MAAM,kBAAkB,IAAI,GACzF,UAAA;AAAA,MAAC,oBAAA,YAAY,OAAZ,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACjB,CAAA,GACH;AAAA,MAEC,oBAAA,YAAY,MAAZ,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACjB,CAAA,GACH;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { CheckPagePermissions } from "@strapi/helper-plugin";
3
- import { j as useTypedSelector } from "./index-XBOTBNuC.mjs";
4
- import { s as selectAdminPermissions } from "./AuthenticatedApp-kwdjs_S0.mjs";
5
- import { E as EditPage } from "./EditPage-pgD1DzOE.mjs";
3
+ import { j as useTypedSelector } from "./index-pisKLsr8.mjs";
4
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-nvm4fRcu.mjs";
5
+ import { E as EditPage } from "./EditPage-ZTvR20S6.mjs";
6
6
  import "react-dom/client";
7
7
  import "@strapi/design-system";
8
8
  import "invariant";
@@ -32,15 +32,19 @@ import "immer";
32
32
  import "lodash/get";
33
33
  import "lodash/set";
34
34
  import "lodash/defaultsDeep";
35
+ import "lodash/isEqual";
36
+ import "lodash/throttle";
37
+ import "lodash/isBoolean";
38
+ import "lodash/isEmpty";
39
+ import "lodash/isNaN";
40
+ import "lodash/toNumber";
35
41
  import "react-dnd";
36
42
  import "react-dnd-html5-backend";
37
43
  import "react-window";
38
44
  import "lodash/cloneDeep";
39
- import "lodash/isEqual";
40
45
  import "lodash/upperFirst";
41
46
  import "prop-types";
42
47
  import "lodash/fp";
43
- import "lodash/isNaN";
44
48
  import "lodash/take";
45
49
  import "slate";
46
50
  import "slate-history";
@@ -62,10 +66,7 @@ import "markdown-it-sup";
62
66
  import "highlight.js/styles/solarized-dark.css";
63
67
  import "codemirror5/addon/display/placeholder";
64
68
  import "lodash/toString";
65
- import "lodash/isEmpty";
66
69
  import "react-dom";
67
- import "lodash/isBoolean";
68
- import "lodash/toNumber";
69
70
  import "fractional-indexing";
70
71
  import "lodash/uniqBy";
71
72
  import "lodash/unset";
@@ -73,8 +74,8 @@ import "lodash/isArray";
73
74
  import "date-fns/parseISO";
74
75
  import "semver/functions/lt";
75
76
  import "semver/functions/valid";
76
- import "./useContentTypes-Madr3L1H.mjs";
77
- import "./useWebhooks-0L1K3yUR.mjs";
77
+ import "./useContentTypes-rYXD3ohE.mjs";
78
+ import "./useWebhooks-g4gI6Wxf.mjs";
78
79
  const ProtectedCreatePage = () => {
79
80
  const permissions = useTypedSelector(selectAdminPermissions);
80
81
  return /* @__PURE__ */ jsx(CheckPagePermissions, { permissions: permissions.settings?.webhooks.create, children: /* @__PURE__ */ jsx(EditPage, {}) });
@@ -83,4 +84,4 @@ export {
83
84
  EditPage as CreatePage,
84
85
  ProtectedCreatePage
85
86
  };
86
- //# sourceMappingURL=CreatePage-gkLnzJM5.mjs.map
87
+ //# sourceMappingURL=CreatePage-ed7j4RJV.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePage-gkLnzJM5.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { CheckPagePermissions } from '@strapi/helper-plugin';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.webhooks.create}>\n <EditPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,sBAAsB,MAAM;AAC1B,QAAA,cAAc,iBAAiB,sBAAsB;AAGzD,SAAA,oBAAC,wBAAqB,aAAa,YAAY,UAAU,SAAS,QAChE,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
1
+ {"version":3,"file":"CreatePage-ed7j4RJV.mjs","sources":["../../admin/src/pages/Settings/pages/Webhooks/CreatePage.tsx"],"sourcesContent":["import { CheckPagePermissions } from '@strapi/helper-plugin';\n\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { EditPage } from './EditPage';\n\nconst ProtectedCreatePage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings?.webhooks.create}>\n <EditPage />\n </CheckPagePermissions>\n );\n};\n\nexport { ProtectedCreatePage, EditPage as CreatePage };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,sBAAsB,MAAM;AAC1B,QAAA,cAAc,iBAAiB,sBAAsB;AAGzD,SAAA,oBAAC,wBAAqB,aAAa,YAAY,UAAU,SAAS,QAChE,UAAC,oBAAA,UAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;"}
@@ -12,8 +12,8 @@ const reactIntl = require("react-intl");
12
12
  const reactRouterDom = require("react-router-dom");
13
13
  const styled = require("styled-components");
14
14
  const yup = require("yup");
15
- const index = require("./index-pLv4RVFT.js");
16
- const Permissions = require("./Permissions-9D-OrmKB.js");
15
+ const index = require("./index-5bHZZ1bQ.js");
16
+ const Permissions = require("./Permissions--a4GyuI7.js");
17
17
  require("react-dom/client");
18
18
  require("invariant");
19
19
  require("lodash/isFunction");
@@ -34,15 +34,19 @@ require("immer");
34
34
  require("lodash/get");
35
35
  require("lodash/set");
36
36
  require("lodash/defaultsDeep");
37
+ require("lodash/isEqual");
38
+ require("lodash/throttle");
39
+ require("lodash/isBoolean");
40
+ require("lodash/isEmpty");
41
+ require("lodash/isNaN");
42
+ require("lodash/toNumber");
37
43
  require("react-dnd");
38
44
  require("react-dnd-html5-backend");
39
45
  require("react-window");
40
46
  require("lodash/cloneDeep");
41
- require("lodash/isEqual");
42
47
  require("lodash/upperFirst");
43
48
  require("prop-types");
44
49
  require("lodash/fp");
45
- require("lodash/isNaN");
46
50
  require("lodash/take");
47
51
  require("slate");
48
52
  require("slate-history");
@@ -64,10 +68,7 @@ require("markdown-it-sup");
64
68
  require("highlight.js/styles/solarized-dark.css");
65
69
  require("codemirror5/addon/display/placeholder");
66
70
  require("lodash/toString");
67
- require("lodash/isEmpty");
68
71
  require("react-dom");
69
- require("lodash/isBoolean");
70
- require("lodash/toNumber");
71
72
  require("fractional-indexing");
72
73
  require("lodash/uniqBy");
73
74
  require("lodash/unset");
@@ -324,4 +325,4 @@ const ProtectedCreatePage = () => {
324
325
  };
325
326
  exports.CreatePage = CreatePage;
326
327
  exports.ProtectedCreatePage = ProtectedCreatePage;
327
- //# sourceMappingURL=CreatePage-AJOrHWAz.js.map
328
+ //# sourceMappingURL=CreatePage-hacPLJKo.js.map