@strapi/admin 5.0.6 → 5.1.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.
- package/dist/admin/{AdminSeatInfo-qIgh5-QA.mjs → AdminSeatInfo-BtXH5sC-.mjs} +4 -4
- package/dist/admin/{AdminSeatInfo-qIgh5-QA.mjs.map → AdminSeatInfo-BtXH5sC-.mjs.map} +1 -1
- package/dist/admin/{AdminSeatInfo-8vtNB3ck.js → AdminSeatInfo-DJpF8PS1.js} +4 -4
- package/dist/admin/{AdminSeatInfo-8vtNB3ck.js.map → AdminSeatInfo-DJpF8PS1.js.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-hY4yez-z.js → ApplicationInfoPage-D2x6RCUg.js} +6 -6
- package/dist/admin/{ApplicationInfoPage-hY4yez-z.js.map → ApplicationInfoPage-D2x6RCUg.js.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-FPcBalFr.mjs → ApplicationInfoPage-c8V4gWUT.mjs} +6 -6
- package/dist/admin/{ApplicationInfoPage-FPcBalFr.mjs.map → ApplicationInfoPage-c8V4gWUT.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-HYXVuTDF.mjs → AuthResponse-BKpQdQAD.mjs} +2 -2
- package/dist/admin/{AuthResponse-HYXVuTDF.mjs.map → AuthResponse-BKpQdQAD.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-R8kR_yqS.js → AuthResponse-tnFAm9fD.js} +2 -2
- package/dist/admin/{AuthResponse-R8kR_yqS.js.map → AuthResponse-tnFAm9fD.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-WfWtk2vt.mjs → AuthenticatedLayout-BkakBAYX.mjs} +13 -13
- package/dist/admin/AuthenticatedLayout-BkakBAYX.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-_fHeS86w.js → AuthenticatedLayout-fYA4z_Ty.js} +13 -13
- package/dist/admin/AuthenticatedLayout-fYA4z_Ty.js.map +1 -0
- package/dist/admin/{CreateActionEE-X2nnG2dm.mjs → CreateActionEE-1i1Hn9yC.mjs} +2 -2
- package/dist/admin/{CreateActionEE-X2nnG2dm.mjs.map → CreateActionEE-1i1Hn9yC.mjs.map} +1 -1
- package/dist/admin/{CreateActionEE-uqyKLxwI.js → CreateActionEE-BAbsDj_W.js} +2 -2
- package/dist/admin/{CreateActionEE-uqyKLxwI.js.map → CreateActionEE-BAbsDj_W.js.map} +1 -1
- package/dist/admin/{CreatePage-2iQ7FkkX.js → CreatePage-BM4OLyiS.js} +3 -3
- package/dist/admin/{CreatePage-2iQ7FkkX.js.map → CreatePage-BM4OLyiS.js.map} +1 -1
- package/dist/admin/{CreatePage-z6N1v5X5.mjs → CreatePage-CT6B2UaY.mjs} +3 -3
- package/dist/admin/{CreatePage-z6N1v5X5.mjs.map → CreatePage-CT6B2UaY.mjs.map} +1 -1
- package/dist/admin/{CreatePage-pPnHpatu.mjs → CreatePage-CYBo7KG0.mjs} +7 -7
- package/dist/admin/CreatePage-CYBo7KG0.mjs.map +1 -0
- package/dist/admin/{CreatePage-60fNdNfa.js → CreatePage-CxTM2PWx.js} +7 -7
- package/dist/admin/CreatePage-CxTM2PWx.js.map +1 -0
- package/dist/admin/{CreateView-8k0KvpoK.mjs → CreateView-B2l6L1kx.mjs} +3 -3
- package/dist/admin/{CreateView-8k0KvpoK.mjs.map → CreateView-B2l6L1kx.mjs.map} +1 -1
- package/dist/admin/{CreateView-YbqcAK_f.js → CreateView-B8Vo8B5O.js} +3 -3
- package/dist/admin/{CreateView-YbqcAK_f.js.map → CreateView-B8Vo8B5O.js.map} +1 -1
- package/dist/admin/{CreateView-18WQPz4-.js → CreateView-DJi8YSzx.js} +3 -3
- package/dist/admin/{CreateView-18WQPz4-.js.map → CreateView-DJi8YSzx.js.map} +1 -1
- package/dist/admin/{CreateView-4UcrE6vq.mjs → CreateView-EhEkE9hX.mjs} +3 -3
- package/dist/admin/{CreateView-4UcrE6vq.mjs.map → CreateView-EhEkE9hX.mjs.map} +1 -1
- package/dist/admin/{EditPage-Fu5aqX9h.mjs → EditPage-BKTTAzFe.mjs} +8 -7
- package/dist/admin/EditPage-BKTTAzFe.mjs.map +1 -0
- package/dist/admin/{EditPage-H3D08t-N.js → EditPage-C2lIAiLO.js} +8 -7
- package/dist/admin/EditPage-C2lIAiLO.js.map +1 -0
- package/dist/admin/{EditPage-dZLyVDGx.mjs → EditPage-CAa3zskZ.mjs} +10 -11
- package/dist/admin/EditPage-CAa3zskZ.mjs.map +1 -0
- package/dist/admin/{EditPage-ewduoYpT.js → EditPage-CQuord7B.js} +8 -10
- package/dist/admin/EditPage-CQuord7B.js.map +1 -0
- package/dist/admin/{EditPage-U4UN4MeE.js → EditPage-DHN8FWYg.js} +10 -11
- package/dist/admin/EditPage-DHN8FWYg.js.map +1 -0
- package/dist/admin/{EditPage-K8aawKOf.mjs → EditPage-I7369p1U.mjs} +8 -10
- package/dist/admin/EditPage-I7369p1U.mjs.map +1 -0
- package/dist/admin/{EditView-xgk-lEu1.mjs → EditView-Bva2gj-4.mjs} +7 -7
- package/dist/admin/{EditView-xgk-lEu1.mjs.map → EditView-Bva2gj-4.mjs.map} +1 -1
- package/dist/admin/{EditView-1TEk6oaL.js → EditView-hHDIoTz_.js} +7 -7
- package/dist/admin/{EditView-1TEk6oaL.js.map → EditView-hHDIoTz_.js.map} +1 -1
- package/dist/admin/{EditViewPage-R2kud83M.js → EditViewPage-Bwbau2ZW.js} +7 -7
- package/dist/admin/{EditViewPage-R2kud83M.js.map → EditViewPage-Bwbau2ZW.js.map} +1 -1
- package/dist/admin/{EditViewPage-2CHLYZlY.mjs → EditViewPage-C8bRDHt4.mjs} +7 -7
- package/dist/admin/{EditViewPage-2CHLYZlY.mjs.map → EditViewPage-C8bRDHt4.mjs.map} +1 -1
- package/dist/admin/{EventsTable-JJ16vr2h.mjs → EventsTable-BblW5sFL.mjs} +2 -2
- package/dist/admin/{EventsTable-JJ16vr2h.mjs.map → EventsTable-BblW5sFL.mjs.map} +1 -1
- package/dist/admin/{EventsTable-fzeOe9NB.js → EventsTable-CUAvBhI8.js} +2 -2
- package/dist/admin/{EventsTable-fzeOe9NB.js.map → EventsTable-CUAvBhI8.js.map} +1 -1
- package/dist/admin/{HomePage-DB00H9y5.js → HomePage-1oVOuySD.js} +8 -8
- package/dist/admin/{HomePage-DB00H9y5.js.map → HomePage-1oVOuySD.js.map} +1 -1
- package/dist/admin/{HomePage-oz8OSt1B.mjs → HomePage-C5tCXSq0.mjs} +8 -8
- package/dist/admin/{HomePage-oz8OSt1B.mjs.map → HomePage-C5tCXSq0.mjs.map} +1 -1
- package/dist/admin/{HomePage-EDHzBAy8.mjs → HomePage-DiSRXi3j.mjs} +3 -3
- package/dist/admin/{HomePage-EDHzBAy8.mjs.map → HomePage-DiSRXi3j.mjs.map} +1 -1
- package/dist/admin/{HomePage-GsLJ4j4f.js → HomePage-gvvI6Wx7.js} +3 -3
- package/dist/admin/{HomePage-GsLJ4j4f.js.map → HomePage-gvvI6Wx7.js.map} +1 -1
- package/dist/admin/{InstalledPlugins-ngsQKZBi.mjs → InstalledPlugins-1IZ4jSk3.mjs} +4 -4
- package/dist/admin/{InstalledPlugins-ngsQKZBi.mjs.map → InstalledPlugins-1IZ4jSk3.mjs.map} +1 -1
- package/dist/admin/{InstalledPlugins-T0ds5aOe.js → InstalledPlugins-D57iILyB.js} +4 -4
- package/dist/admin/{InstalledPlugins-T0ds5aOe.js.map → InstalledPlugins-D57iILyB.js.map} +1 -1
- package/dist/admin/{Layout-LTVvoQIP.js → Layout-Ccw8atbJ.js} +6 -6
- package/dist/admin/{Layout-LTVvoQIP.js.map → Layout-Ccw8atbJ.js.map} +1 -1
- package/dist/admin/{Layout-dlsF2jYh.mjs → Layout-xl28NI_3.mjs} +6 -6
- package/dist/admin/{Layout-dlsF2jYh.mjs.map → Layout-xl28NI_3.mjs.map} +1 -1
- package/dist/admin/{ListPage-CAAa_iYD.mjs → ListPage-4GUN057p.mjs} +6 -6
- package/dist/admin/{ListPage-CAAa_iYD.mjs.map → ListPage-4GUN057p.mjs.map} +1 -1
- package/dist/admin/{ListPage-J_zameoY.js → ListPage-Bv5Jk0Vb.js} +4 -4
- package/dist/admin/{ListPage-J_zameoY.js.map → ListPage-Bv5Jk0Vb.js.map} +1 -1
- package/dist/admin/{ListPage-HjeCNXIL.mjs → ListPage-BvMpZMuS.mjs} +3 -3
- package/dist/admin/{ListPage-HjeCNXIL.mjs.map → ListPage-BvMpZMuS.mjs.map} +1 -1
- package/dist/admin/{ListPage-e_XhqWy-.js → ListPage-C06vdG7e.js} +6 -6
- package/dist/admin/{ListPage-e_XhqWy-.js.map → ListPage-C06vdG7e.js.map} +1 -1
- package/dist/admin/{ListPage-cMqf3hxn.mjs → ListPage-CjXIyY75.mjs} +12 -12
- package/dist/admin/{ListPage-cMqf3hxn.mjs.map → ListPage-CjXIyY75.mjs.map} +1 -1
- package/dist/admin/{ListPage-fE9R8ZE1.mjs → ListPage-D4GCjMaa.mjs} +5 -5
- package/dist/admin/{ListPage-fE9R8ZE1.mjs.map → ListPage-D4GCjMaa.mjs.map} +1 -1
- package/dist/admin/{ListPage-qj3M7V0W.js → ListPage-DGY7EWog.js} +12 -12
- package/dist/admin/{ListPage-qj3M7V0W.js.map → ListPage-DGY7EWog.js.map} +1 -1
- package/dist/admin/{ListPage-W_j2UV6e.js → ListPage-DS7f3azJ.js} +3 -3
- package/dist/admin/{ListPage-W_j2UV6e.js.map → ListPage-DS7f3azJ.js.map} +1 -1
- package/dist/admin/{ListPage-4VAaMuov.mjs → ListPage-UDaQQjp8.mjs} +4 -4
- package/dist/admin/{ListPage-4VAaMuov.mjs.map → ListPage-UDaQQjp8.mjs.map} +1 -1
- package/dist/admin/{ListPage-kv14w7sy.js → ListPage-fRuuD-oV.js} +5 -5
- package/dist/admin/{ListPage-kv14w7sy.js.map → ListPage-fRuuD-oV.js.map} +1 -1
- package/dist/admin/{ListView-J3Bd1ZAj.js → ListView-BVQ_0aE9.js} +7 -7
- package/dist/admin/{ListView-J3Bd1ZAj.js.map → ListView-BVQ_0aE9.js.map} +1 -1
- package/dist/admin/{ListView-ziItL2Hn.mjs → ListView-BnWkBqnM.mjs} +7 -7
- package/dist/admin/{ListView-ziItL2Hn.mjs.map → ListView-BnWkBqnM.mjs.map} +1 -1
- package/dist/admin/{ListView-JTtPuayE.mjs → ListView-DJsrjLUo.mjs} +7 -7
- package/dist/admin/{ListView-JTtPuayE.mjs.map → ListView-DJsrjLUo.mjs.map} +1 -1
- package/dist/admin/{ListView-e_rZH3km.js → ListView-UIHrT9sw.js} +7 -7
- package/dist/admin/{ListView-e_rZH3km.js.map → ListView-UIHrT9sw.js.map} +1 -1
- package/dist/admin/{Login-B5mc1U2m.js → Login-CscDrept.js} +4 -4
- package/dist/admin/{Login-B5mc1U2m.js.map → Login-CscDrept.js.map} +1 -1
- package/dist/admin/{Login-STwy4gIQ.mjs → Login-FqOvVmuO.mjs} +4 -4
- package/dist/admin/{Login-STwy4gIQ.mjs.map → Login-FqOvVmuO.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-oXcvyO9m.mjs → MagicLinkEE-DQ4PIMyF.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-oXcvyO9m.mjs.map → MagicLinkEE-DQ4PIMyF.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-3PSvKNEX.js → MagicLinkEE-xN58qOBE.js} +3 -3
- package/dist/admin/{MagicLinkEE-3PSvKNEX.js.map → MagicLinkEE-xN58qOBE.js.map} +1 -1
- package/dist/admin/{MarketplacePage-s3TgP0pj.mjs → MarketplacePage-DYAdkw8-.mjs} +5 -11
- package/dist/admin/MarketplacePage-DYAdkw8-.mjs.map +1 -0
- package/dist/admin/{MarketplacePage-XkcAwVQL.js → MarketplacePage-PQgF0kiP.js} +5 -11
- package/dist/admin/MarketplacePage-PQgF0kiP.js.map +1 -0
- package/dist/admin/{ModalForm-Gh2063zZ.mjs → ModalForm-B9SUkQ1l.mjs} +1 -1
- package/dist/admin/{ModalForm-Gh2063zZ.mjs.map → ModalForm-B9SUkQ1l.mjs.map} +1 -1
- package/dist/admin/{ModalForm-wXXenEdW.js → ModalForm-DukjfMMw.js} +1 -1
- package/dist/admin/{ModalForm-wXXenEdW.js.map → ModalForm-DukjfMMw.js.map} +1 -1
- package/dist/admin/{Ornaments-jAwgQeK0.mjs → Ornaments-BFThxr2U.mjs} +1 -1
- package/dist/admin/{Ornaments-jAwgQeK0.mjs.map → Ornaments-BFThxr2U.mjs.map} +1 -1
- package/dist/admin/{Ornaments-sFPQPOtb.js → Ornaments-CID1aaLv.js} +1 -1
- package/dist/admin/{Ornaments-sFPQPOtb.js.map → Ornaments-CID1aaLv.js.map} +1 -1
- package/dist/admin/{Permissions-bmMBmcv7.js → Permissions-DvL1ZCzq.js} +2 -2
- package/dist/admin/{Permissions-bmMBmcv7.js.map → Permissions-DvL1ZCzq.js.map} +1 -1
- package/dist/admin/{Permissions-aSGK8VGG.mjs → Permissions-p_cREK0b.mjs} +2 -2
- package/dist/admin/{Permissions-aSGK8VGG.mjs.map → Permissions-p_cREK0b.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-LO9G_pCJ.js → PrivateRoute-C1dP5ye6.js} +2 -2
- package/dist/admin/{PrivateRoute-LO9G_pCJ.js.map → PrivateRoute-C1dP5ye6.js.map} +1 -1
- package/dist/admin/{PrivateRoute-S4Lol0B9.mjs → PrivateRoute-gjOsMUaF.mjs} +2 -2
- package/dist/admin/{PrivateRoute-S4Lol0B9.mjs.map → PrivateRoute-gjOsMUaF.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-EPvpBxko.mjs → ProfilePage-CHJDagAZ.mjs} +6 -6
- package/dist/admin/{ProfilePage-EPvpBxko.mjs.map → ProfilePage-CHJDagAZ.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-TMGpOFkt.js → ProfilePage-CZaA9sIh.js} +6 -6
- package/dist/admin/{ProfilePage-TMGpOFkt.js.map → ProfilePage-CZaA9sIh.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-HcdrHEM2.js → PurchaseAuditLogs-BrEqMAsG.js} +2 -2
- package/dist/admin/{PurchaseAuditLogs-HcdrHEM2.js.map → PurchaseAuditLogs-BrEqMAsG.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-K2YmR4Il.mjs → PurchaseAuditLogs-xm9tWaZ2.mjs} +2 -2
- package/dist/admin/{PurchaseAuditLogs-K2YmR4Il.mjs.map → PurchaseAuditLogs-xm9tWaZ2.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-sxd54apY.mjs → PurchaseSingleSignOn-BNwcGRQX.mjs} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-sxd54apY.mjs.map → PurchaseSingleSignOn-BNwcGRQX.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-y7p3yZ-b.js → PurchaseSingleSignOn-D0lhH8FK.js} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-y7p3yZ-b.js.map → PurchaseSingleSignOn-D0lhH8FK.js.map} +1 -1
- package/dist/admin/{SSOProviders-sy3Xon2A.mjs → SSOProviders-BD7LHrkI.mjs} +1 -1
- package/dist/admin/{SSOProviders-sy3Xon2A.mjs.map → SSOProviders-BD7LHrkI.mjs.map} +1 -1
- package/dist/admin/{SSOProviders-9-d1vYXb.js → SSOProviders-nCeEldEQ.js} +1 -1
- package/dist/admin/{SSOProviders-9-d1vYXb.js.map → SSOProviders-nCeEldEQ.js.map} +1 -1
- package/dist/admin/{SelectRoles-L8dRONb-.js → SelectRoles-BGjdvDUX.js} +4 -4
- package/dist/admin/{SelectRoles-L8dRONb-.js.map → SelectRoles-BGjdvDUX.js.map} +1 -1
- package/dist/admin/{SelectRoles-esk6LySb.mjs → SelectRoles-BHtBf0U4.mjs} +4 -4
- package/dist/admin/{SelectRoles-esk6LySb.mjs.map → SelectRoles-BHtBf0U4.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-cih5-oBZ.js → SingleSignOnPage-B0vApJpk.js} +5 -6
- package/dist/admin/SingleSignOnPage-B0vApJpk.js.map +1 -0
- package/dist/admin/{SingleSignOnPage-idMTZOuN.mjs → SingleSignOnPage-uJomNtdV.mjs} +5 -6
- package/dist/admin/SingleSignOnPage-uJomNtdV.mjs.map +1 -0
- package/dist/admin/{Table-wZgpqMG3.mjs → Table-DPgTncRX.mjs} +3 -3
- package/dist/admin/{Table-wZgpqMG3.mjs.map → Table-DPgTncRX.mjs.map} +1 -1
- package/dist/admin/{Table-1mVE67Cd.js → Table-IcPabA9G.js} +3 -3
- package/dist/admin/{Table-1mVE67Cd.js.map → Table-IcPabA9G.js.map} +1 -1
- package/dist/admin/{Theme-y_rWTknM.js → Theme-K6zNL3JT.js} +2 -2
- package/dist/admin/Theme-K6zNL3JT.js.map +1 -0
- package/dist/admin/{Theme-frC82ceE.mjs → Theme-NAd2H4cV.mjs} +2 -2
- package/dist/admin/Theme-NAd2H4cV.mjs.map +1 -0
- package/dist/admin/{TokenTypeSelect-Itk7isiz.js → TokenTypeSelect-C2TuK8Z1.js} +4 -4
- package/dist/admin/{TokenTypeSelect-Itk7isiz.js.map → TokenTypeSelect-C2TuK8Z1.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-GplqVrbt.mjs → TokenTypeSelect-ClRjNveB.mjs} +4 -4
- package/dist/admin/{TokenTypeSelect-GplqVrbt.mjs.map → TokenTypeSelect-ClRjNveB.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-1SuyjC6w.js → UseCasePage-Do3fM2cD.js} +4 -4
- package/dist/admin/{UseCasePage-1SuyjC6w.js.map → UseCasePage-Do3fM2cD.js.map} +1 -1
- package/dist/admin/{UseCasePage-QPnZOFrC.mjs → UseCasePage-fTdfaFhk.mjs} +4 -4
- package/dist/admin/{UseCasePage-QPnZOFrC.mjs.map → UseCasePage-fTdfaFhk.mjs.map} +1 -1
- package/dist/admin/{admin-p0djr5G6.js → admin-3FVGSNUT.js} +1 -1
- package/dist/admin/{admin-p0djr5G6.js.map → admin-3FVGSNUT.js.map} +1 -1
- package/dist/admin/{admin-GZ-AP2T0.mjs → admin-DIy_Bn_0.mjs} +1 -1
- package/dist/admin/{admin-GZ-AP2T0.mjs.map → admin-DIy_Bn_0.mjs.map} +1 -1
- package/dist/admin/{apiTokens-GQe-GqwZ.mjs → apiTokens-BOJ6JDtg.mjs} +2 -2
- package/dist/admin/{apiTokens-GQe-GqwZ.mjs.map → apiTokens-BOJ6JDtg.mjs.map} +1 -1
- package/dist/admin/{apiTokens-YxfAnO7_.js → apiTokens-CcgEvJ9L.js} +2 -2
- package/dist/admin/{apiTokens-YxfAnO7_.js.map → apiTokens-CcgEvJ9L.js.map} +1 -1
- package/dist/admin/{ar-gTQs8p7A.mjs → ar-7vbwrPth.mjs} +1 -1
- package/dist/admin/{ar-gTQs8p7A.mjs.map → ar-7vbwrPth.mjs.map} +1 -1
- package/dist/admin/{ar-74XpZHjA.js → ar-BX4l-gGG.js} +1 -1
- package/dist/admin/{ar-74XpZHjA.js.map → ar-BX4l-gGG.js.map} +1 -1
- package/dist/admin/{ca-A-U5stlG.mjs → ca-f06Q0InB.mjs} +1 -1
- package/dist/admin/{ca-A-U5stlG.mjs.map → ca-f06Q0InB.mjs.map} +1 -1
- package/dist/admin/{ca-tfhzbe_0.js → ca-lypqY0nt.js} +1 -1
- package/dist/admin/{ca-tfhzbe_0.js.map → ca-lypqY0nt.js.map} +1 -1
- package/dist/admin/{constants-K5ARNpfV.js → constants-BD_zOSB6.js} +4 -4
- package/dist/admin/{constants-K5ARNpfV.js.map → constants-BD_zOSB6.js.map} +1 -1
- package/dist/admin/{constants-EoEtSd4i.mjs → constants-CRj0ViV1.mjs} +1 -1
- package/dist/admin/{constants-EoEtSd4i.mjs.map → constants-CRj0ViV1.mjs.map} +1 -1
- package/dist/admin/{constants-8PhEUZTR.js → constants-DF68OPrs.js} +1 -1
- package/dist/admin/{constants-8PhEUZTR.js.map → constants-DF68OPrs.js.map} +1 -1
- package/dist/admin/{constants-T5y8alpG.mjs → constants-Y2wYjc8P.mjs} +4 -4
- package/dist/admin/{constants-T5y8alpG.mjs.map → constants-Y2wYjc8P.mjs.map} +1 -1
- package/dist/admin/{cs-sS-228vY.js → cs-DeS9DzIq.js} +1 -1
- package/dist/admin/{cs-sS-228vY.js.map → cs-DeS9DzIq.js.map} +1 -1
- package/dist/admin/{cs-iYqoHUVt.mjs → cs-DrRkodPD.mjs} +1 -1
- package/dist/admin/{cs-iYqoHUVt.mjs.map → cs-DrRkodPD.mjs.map} +1 -1
- package/dist/admin/{de-og0YSnla.js → de-CxVS71Os.js} +1 -1
- package/dist/admin/{de-og0YSnla.js.map → de-CxVS71Os.js.map} +1 -1
- package/dist/admin/{de-uZBjRd6a.mjs → de-D0NA2abW.mjs} +1 -1
- package/dist/admin/{de-uZBjRd6a.mjs.map → de-D0NA2abW.mjs.map} +1 -1
- package/dist/admin/{dk-nXAO32DE.mjs → dk-Cv0jDfcZ.mjs} +1 -1
- package/dist/admin/{dk-nXAO32DE.mjs.map → dk-Cv0jDfcZ.mjs.map} +1 -1
- package/dist/admin/{dk-GtDhDxRc.js → dk-Dy9JFy9v.js} +1 -1
- package/dist/admin/{dk-GtDhDxRc.js.map → dk-Dy9JFy9v.js.map} +1 -1
- package/dist/admin/ee.js +2 -2
- package/dist/admin/ee.mjs +2 -2
- package/dist/admin/{en-_1-Nn7iH.js → en-B_M3cPYZ.js} +1 -1
- package/dist/admin/{en-_1-Nn7iH.js.map → en-B_M3cPYZ.js.map} +1 -1
- package/dist/admin/{en-lDO5lPD0.mjs → en-BwH0BITJ.mjs} +1 -1
- package/dist/admin/{en-lDO5lPD0.mjs.map → en-BwH0BITJ.mjs.map} +1 -1
- package/dist/admin/{en-GB-vRfq_FQ3.js → en-GB-CemeJNao.js} +2 -2
- package/dist/admin/en-GB-CemeJNao.js.map +1 -0
- package/dist/admin/en-GB-D81NWpkp.mjs +6 -0
- package/dist/admin/en-GB-D81NWpkp.mjs.map +1 -0
- package/dist/admin/{es-TQtY4G8X.js → es-C-MB13Am.js} +1 -1
- package/dist/admin/{es-TQtY4G8X.js.map → es-C-MB13Am.js.map} +1 -1
- package/dist/admin/{es-i0dEHPPQ.mjs → es-t8XFZqIM.mjs} +1 -1
- package/dist/admin/{es-i0dEHPPQ.mjs.map → es-t8XFZqIM.mjs.map} +1 -1
- package/dist/admin/{eu-wFmYHERY.mjs → eu-CDMMTSys.mjs} +1 -1
- package/dist/admin/{hu-O1FJoY8c.mjs.map → eu-CDMMTSys.mjs.map} +1 -1
- package/dist/admin/{eu-SRdPRyQu.js → eu-CTGdmY94.js} +1 -1
- package/dist/admin/{hu-VxIqV1X0.js.map → eu-CTGdmY94.js.map} +1 -1
- package/dist/admin/{fr-OI7VyC_k.mjs → fr-CKlZ-5Zr.mjs} +1 -1
- package/dist/admin/{fr-OI7VyC_k.mjs.map → fr-CKlZ-5Zr.mjs.map} +1 -1
- package/dist/admin/{fr-GW5-kEO9.js → fr-ClHlHI4r.js} +1 -1
- package/dist/admin/{fr-GW5-kEO9.js.map → fr-ClHlHI4r.js.map} +1 -1
- package/dist/admin/{gu-zSaMc-a6.mjs → gu-CSS25C49.mjs} +1 -1
- package/dist/admin/{gu-zSaMc-a6.mjs.map → gu-CSS25C49.mjs.map} +1 -1
- package/dist/admin/{gu-z6qqOLRh.js → gu-Hc5YzUuw.js} +1 -1
- package/dist/admin/{gu-z6qqOLRh.js.map → gu-Hc5YzUuw.js.map} +1 -1
- package/dist/admin/{he-YzAGShlQ.mjs → he-C3w9omDw.mjs} +1 -1
- package/dist/admin/{he-YzAGShlQ.mjs.map → he-C3w9omDw.mjs.map} +1 -1
- package/dist/admin/{he-CLdZZ_n1.js → he-kuscdOPI.js} +1 -1
- package/dist/admin/{he-CLdZZ_n1.js.map → he-kuscdOPI.js.map} +1 -1
- package/dist/admin/{hi-3pMoYe6q.js → hi-ChZ-xy57.js} +1 -1
- package/dist/admin/{hi-3pMoYe6q.js.map → hi-ChZ-xy57.js.map} +1 -1
- package/dist/admin/{hi-ZQ4t6UdY.mjs → hi-DW2CutdA.mjs} +1 -1
- package/dist/admin/{hi-ZQ4t6UdY.mjs.map → hi-DW2CutdA.mjs.map} +1 -1
- package/dist/admin/{hu-O1FJoY8c.mjs → hu-DaDd6FHR.mjs} +1 -1
- package/dist/admin/{eu-wFmYHERY.mjs.map → hu-DaDd6FHR.mjs.map} +1 -1
- package/dist/admin/{hu-VxIqV1X0.js → hu-lwp6bYbA.js} +1 -1
- package/dist/admin/{eu-SRdPRyQu.js.map → hu-lwp6bYbA.js.map} +1 -1
- package/dist/admin/{id-cUUpuxZO.js → id-BX77nhRG.js} +1 -1
- package/dist/admin/{id-cUUpuxZO.js.map → id-BX77nhRG.js.map} +1 -1
- package/dist/admin/{id-Lb_0kPQU.mjs → id-cH3Ovozx.mjs} +1 -1
- package/dist/admin/{id-Lb_0kPQU.mjs.map → id-cH3Ovozx.mjs.map} +1 -1
- package/dist/admin/{index-QPUYgtlo.mjs → index-D3MhJ11W.mjs} +43 -39
- package/dist/admin/{index-QPUYgtlo.mjs.map → index-D3MhJ11W.mjs.map} +1 -1
- package/dist/admin/{index-YMz7KziV.js → index-vcn_qFdc.js} +43 -39
- package/dist/admin/{index-YMz7KziV.js.map → index-vcn_qFdc.js.map} +1 -1
- package/dist/admin/index.js +4 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{it-m8H0rXTP.js → it-Br3eqqDa.js} +1 -1
- package/dist/admin/{it-m8H0rXTP.js.map → it-Br3eqqDa.js.map} +1 -1
- package/dist/admin/{it-136monzD.mjs → it-T1rZP3NX.mjs} +1 -1
- package/dist/admin/{it-136monzD.mjs.map → it-T1rZP3NX.mjs.map} +1 -1
- package/dist/admin/{ja-0-FUC0T4.mjs → ja-Cc9Dg_QK.mjs} +1 -1
- package/dist/admin/{ja-0-FUC0T4.mjs.map → ja-Cc9Dg_QK.mjs.map} +1 -1
- package/dist/admin/{ja-jhqUhh7F.js → ja-CmifbkZD.js} +1 -1
- package/dist/admin/{ja-jhqUhh7F.js.map → ja-CmifbkZD.js.map} +1 -1
- package/dist/admin/{ko-Fq49QS3z.js → ko-CS08pZ0z.js} +1 -1
- package/dist/admin/{ko-Fq49QS3z.js.map → ko-CS08pZ0z.js.map} +1 -1
- package/dist/admin/{ko-H3Y8GpnD.mjs → ko-D1e-SMHS.mjs} +1 -1
- package/dist/admin/{ko-H3Y8GpnD.mjs.map → ko-D1e-SMHS.mjs.map} +1 -1
- package/dist/admin/{ml-mLJM4sQP.js → ml-CzFKbt9H.js} +1 -1
- package/dist/admin/{ml-mLJM4sQP.js.map → ml-CzFKbt9H.js.map} +1 -1
- package/dist/admin/{ml-NPdcpJoN.mjs → ml-FLft_QIc.mjs} +1 -1
- package/dist/admin/{pl-Id5YX-Pw.mjs.map → ml-FLft_QIc.mjs.map} +1 -1
- package/dist/admin/{ms-NDmpSkMY.js → ms-C-JB0-h1.js} +1 -1
- package/dist/admin/{ms-NDmpSkMY.js.map → ms-C-JB0-h1.js.map} +1 -1
- package/dist/admin/{ms-v9c434YI.mjs → ms-eMDSLvhl.mjs} +1 -1
- package/dist/admin/{pt-f52AXrxz.mjs.map → ms-eMDSLvhl.mjs.map} +1 -1
- package/dist/admin/{nl-qHmOt3d1.mjs → nl-CubaFTJw.mjs} +1 -1
- package/dist/admin/{nl-qHmOt3d1.mjs.map → nl-CubaFTJw.mjs.map} +1 -1
- package/dist/admin/{nl-RREi1JAg.js → nl-gUEC_dKT.js} +1 -1
- package/dist/admin/{nl-RREi1JAg.js.map → nl-gUEC_dKT.js.map} +1 -1
- package/dist/admin/{no-XGZQN-Ji.mjs → no-9TbSG07o.mjs} +1 -1
- package/dist/admin/{no-XGZQN-Ji.mjs.map → no-9TbSG07o.mjs.map} +1 -1
- package/dist/admin/{no-2wT9Jd9n.js → no-DU4xtEmk.js} +1 -1
- package/dist/admin/{no-2wT9Jd9n.js.map → no-DU4xtEmk.js.map} +1 -1
- package/dist/admin/{pl-Id5YX-Pw.mjs → pl-B0hZgHvQ.mjs} +1 -1
- package/dist/admin/{ml-NPdcpJoN.mjs.map → pl-B0hZgHvQ.mjs.map} +1 -1
- package/dist/admin/{pl-kU2npCRO.js → pl-Bf4D5Q8_.js} +1 -1
- package/dist/admin/{pl-kU2npCRO.js.map → pl-Bf4D5Q8_.js.map} +1 -1
- package/dist/admin/{pt-f52AXrxz.mjs → pt-8dwKSOn3.mjs} +1 -1
- package/dist/admin/{ms-v9c434YI.mjs.map → pt-8dwKSOn3.mjs.map} +1 -1
- package/dist/admin/{pt-BR-0o0Gf-P8.mjs → pt-BR-BDpWvCrQ.mjs} +1 -1
- package/dist/admin/{pt-BR-0o0Gf-P8.mjs.map → pt-BR-BDpWvCrQ.mjs.map} +1 -1
- package/dist/admin/{pt-BR-R-dMJxPL.js → pt-BR-BFq-a8-C.js} +1 -1
- package/dist/admin/{pt-BR-R-dMJxPL.js.map → pt-BR-BFq-a8-C.js.map} +1 -1
- package/dist/admin/{pt-IygqsPYv.js → pt-CEcd6cjN.js} +1 -1
- package/dist/admin/{pt-IygqsPYv.js.map → pt-CEcd6cjN.js.map} +1 -1
- package/dist/admin/{ru-FpmG9SEf.mjs → ru-C34i9wJx.mjs} +1 -1
- package/dist/admin/{ru-FpmG9SEf.mjs.map → ru-C34i9wJx.mjs.map} +1 -1
- package/dist/admin/{ru-5TBoMH_2.js → ru-Dwf09uUc.js} +1 -1
- package/dist/admin/{ru-5TBoMH_2.js.map → ru-Dwf09uUc.js.map} +1 -1
- package/dist/admin/{sa-KmwTiEO5.js → sa--UlKNdfY.js} +1 -1
- package/dist/admin/sa--UlKNdfY.js.map +1 -0
- package/dist/admin/{sa-KUwV8aRB.mjs → sa-CHD-r_h-.mjs} +1 -1
- package/dist/admin/sa-CHD-r_h-.mjs.map +1 -0
- package/dist/admin/{selectors-1ySxKbos.js → selectors-DYNXQ1tD.js} +2 -2
- package/dist/admin/{selectors-1ySxKbos.js.map → selectors-DYNXQ1tD.js.map} +1 -1
- package/dist/admin/{selectors--muHmKGe.mjs → selectors-ZSFBgSp8.mjs} +2 -2
- package/dist/admin/{selectors--muHmKGe.mjs.map → selectors-ZSFBgSp8.mjs.map} +1 -1
- package/dist/admin/{sk-IV2uPmXo.js → sk-CbJVofN-.js} +1 -1
- package/dist/admin/{sk-IV2uPmXo.js.map → sk-CbJVofN-.js.map} +1 -1
- package/dist/admin/{sk-g_1C955P.mjs → sk-DQ2qpsG2.mjs} +1 -1
- package/dist/admin/{sk-g_1C955P.mjs.map → sk-DQ2qpsG2.mjs.map} +1 -1
- package/dist/admin/src/features/Tracking.d.ts +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/{sv-Uv9nW9cN.js → sv-BqRXfruc.js} +1 -1
- package/dist/admin/{sv-Uv9nW9cN.js.map → sv-BqRXfruc.js.map} +1 -1
- package/dist/admin/{sv-lzyY1dsz.mjs → sv-D0vPVUAT.mjs} +1 -1
- package/dist/admin/{sv-lzyY1dsz.mjs.map → sv-D0vPVUAT.mjs.map} +1 -1
- package/dist/admin/test.js +2 -2
- package/dist/admin/test.mjs +2 -2
- package/dist/admin/{th-7LJ9Y8EL.mjs → th-BG3IOCqV.mjs} +1 -1
- package/dist/admin/{th-7LJ9Y8EL.mjs.map → th-BG3IOCqV.mjs.map} +1 -1
- package/dist/admin/{th-SXQwWjv6.js → th-CPx6wf0M.js} +1 -1
- package/dist/admin/{th-SXQwWjv6.js.map → th-CPx6wf0M.js.map} +1 -1
- package/dist/admin/{tr-09v-DLMg.mjs → tr-Dq45DRRZ.mjs} +1 -1
- package/dist/admin/{tr-09v-DLMg.mjs.map → tr-Dq45DRRZ.mjs.map} +1 -1
- package/dist/admin/{tr-RBQM-Vq5.js → tr-hC_m0V8Q.js} +1 -1
- package/dist/admin/{tr-RBQM-Vq5.js.map → tr-hC_m0V8Q.js.map} +1 -1
- package/dist/admin/{transferTokens-HcVXmOrq.js → transferTokens-CTsVFvMK.js} +2 -2
- package/dist/admin/{transferTokens-HcVXmOrq.js.map → transferTokens-CTsVFvMK.js.map} +1 -1
- package/dist/admin/{transferTokens-v8tNpI_l.mjs → transferTokens-CXTFej3W.mjs} +2 -2
- package/dist/admin/{transferTokens-v8tNpI_l.mjs.map → transferTokens-CXTFej3W.mjs.map} +1 -1
- package/dist/admin/{uk-5T4XFIKm.js → uk-DHmepDW6.js} +1 -1
- package/dist/admin/{uk-5T4XFIKm.js.map → uk-DHmepDW6.js.map} +1 -1
- package/dist/admin/{uk-38IblmOr.mjs → uk-Ud9QNfkB.mjs} +1 -1
- package/dist/admin/{uk-38IblmOr.mjs.map → uk-Ud9QNfkB.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-nNC9r0dz.js → useAdminRoles-CF5OrgF1.js} +2 -2
- package/dist/admin/{useAdminRoles-nNC9r0dz.js.map → useAdminRoles-CF5OrgF1.js.map} +1 -1
- package/dist/admin/{useAdminRoles-DX1MOKC9.mjs → useAdminRoles-Cn_iUwaJ.mjs} +2 -2
- package/dist/admin/{useAdminRoles-DX1MOKC9.mjs.map → useAdminRoles-Cn_iUwaJ.mjs.map} +1 -1
- package/dist/admin/{useEnterprise-jpsYZWzn.mjs → useEnterprise-BGzVPL4w.mjs} +1 -1
- package/dist/admin/{useEnterprise-jpsYZWzn.mjs.map → useEnterprise-BGzVPL4w.mjs.map} +1 -1
- package/dist/admin/{useEnterprise-DUs6BYlP.js → useEnterprise-ijNnK53J.js} +1 -1
- package/dist/admin/{useEnterprise-DUs6BYlP.js.map → useEnterprise-ijNnK53J.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-eau4ja6h.js → useLicenseLimitNotification-BJ69x-oH.js} +3 -3
- package/dist/admin/{useLicenseLimitNotification-eau4ja6h.js.map → useLicenseLimitNotification-BJ69x-oH.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-Qx_rSpUQ.mjs → useLicenseLimitNotification-J4qdwz19.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-Qx_rSpUQ.mjs.map → useLicenseLimitNotification-J4qdwz19.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimits-FtmLXkwK.js → useLicenseLimits-D1oogU-K.js} +2 -2
- package/dist/admin/{useLicenseLimits-FtmLXkwK.js.map → useLicenseLimits-D1oogU-K.js.map} +1 -1
- package/dist/admin/{useLicenseLimits-j5znikzW.mjs → useLicenseLimits-D_SDg_6i.mjs} +2 -2
- package/dist/admin/{useLicenseLimits-j5znikzW.mjs.map → useLicenseLimits-D_SDg_6i.mjs.map} +1 -1
- package/dist/admin/{useOnce--ZSbXFh3.js → useOnce-C7EQufL3.js} +1 -1
- package/dist/admin/{useOnce--ZSbXFh3.js.map → useOnce-C7EQufL3.js.map} +1 -1
- package/dist/admin/{useOnce-GJ2Ta2mZ.mjs → useOnce-NHeEacbN.mjs} +1 -1
- package/dist/admin/{useOnce-GJ2Ta2mZ.mjs.map → useOnce-NHeEacbN.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-upF7mgdZ.mjs → useWebhooks-C2yEtiSU.mjs} +2 -2
- package/dist/admin/{useWebhooks-upF7mgdZ.mjs.map → useWebhooks-C2yEtiSU.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-0RUEkKAV.js → useWebhooks-CkRHgTl_.js} +2 -2
- package/dist/admin/{useWebhooks-0RUEkKAV.js.map → useWebhooks-CkRHgTl_.js.map} +1 -1
- package/dist/admin/{users-a4KTyEyc.mjs → users-8N93LH7R.mjs} +1 -1
- package/dist/admin/{users-a4KTyEyc.mjs.map → users-8N93LH7R.mjs.map} +1 -1
- package/dist/admin/{users-R5A0kUOV.js → users-DaPfjlwf.js} +1 -1
- package/dist/admin/{users-R5A0kUOV.js.map → users-DaPfjlwf.js.map} +1 -1
- package/dist/admin/{validation-AQCTfU6y.js → validation-I30U5XT_.js} +2 -2
- package/dist/admin/{validation-AQCTfU6y.js.map → validation-I30U5XT_.js.map} +1 -1
- package/dist/admin/{validation-tnv2QISi.mjs → validation-gtxeljFv.mjs} +2 -2
- package/dist/admin/{validation-tnv2QISi.mjs.map → validation-gtxeljFv.mjs.map} +1 -1
- package/dist/admin/{vi-ryNZtXtk.mjs → vi-CGrr4ioy.mjs} +1 -1
- package/dist/admin/{vi-ryNZtXtk.mjs.map → vi-CGrr4ioy.mjs.map} +1 -1
- package/dist/admin/{vi-mj-Smy3d.js → vi-UeRpPdvI.js} +1 -1
- package/dist/admin/{vi-mj-Smy3d.js.map → vi-UeRpPdvI.js.map} +1 -1
- package/dist/admin/{zh-6qF5HCOo.js → zh-Bhpup4vu.js} +1 -1
- package/dist/admin/{zh-6qF5HCOo.js.map → zh-Bhpup4vu.js.map} +1 -1
- package/dist/admin/{zh-Hans-eWSoi9-X.js → zh-Hans-BlfT-iYf.js} +1 -1
- package/dist/admin/{zh-Hans-eWSoi9-X.js.map → zh-Hans-BlfT-iYf.js.map} +1 -1
- package/dist/admin/{zh-Hans-HlxDUeVA.mjs → zh-Hans-C44LvcXE.mjs} +1 -1
- package/dist/admin/{zh-Hans-HlxDUeVA.mjs.map → zh-Hans-C44LvcXE.mjs.map} +1 -1
- package/dist/admin/{zh-WEteLuNm.mjs → zh-LqPg8hbL.mjs} +1 -1
- package/dist/admin/{zh-WEteLuNm.mjs.map → zh-LqPg8hbL.mjs.map} +1 -1
- package/dist/package.json.d.ts +3 -3
- package/dist/server/src/domain/action/index.d.ts +71 -6
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +23 -3
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/admin/AuthenticatedLayout-WfWtk2vt.mjs.map +0 -1
- package/dist/admin/AuthenticatedLayout-_fHeS86w.js.map +0 -1
- package/dist/admin/CreatePage-60fNdNfa.js.map +0 -1
- package/dist/admin/CreatePage-pPnHpatu.mjs.map +0 -1
- package/dist/admin/EditPage-Fu5aqX9h.mjs.map +0 -1
- package/dist/admin/EditPage-H3D08t-N.js.map +0 -1
- package/dist/admin/EditPage-K8aawKOf.mjs.map +0 -1
- package/dist/admin/EditPage-U4UN4MeE.js.map +0 -1
- package/dist/admin/EditPage-dZLyVDGx.mjs.map +0 -1
- package/dist/admin/EditPage-ewduoYpT.js.map +0 -1
- package/dist/admin/MarketplacePage-XkcAwVQL.js.map +0 -1
- package/dist/admin/MarketplacePage-s3TgP0pj.mjs.map +0 -1
- package/dist/admin/SingleSignOnPage-cih5-oBZ.js.map +0 -1
- package/dist/admin/SingleSignOnPage-idMTZOuN.mjs.map +0 -1
- package/dist/admin/Theme-frC82ceE.mjs.map +0 -1
- package/dist/admin/Theme-y_rWTknM.js.map +0 -1
- package/dist/admin/en-GB-8ipWI3xp.mjs +0 -6
- package/dist/admin/en-GB-8ipWI3xp.mjs.map +0 -1
- package/dist/admin/en-GB-vRfq_FQ3.js.map +0 -1
- package/dist/admin/sa-KUwV8aRB.mjs.map +0 -1
- package/dist/admin/sa-KmwTiEO5.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-U4UN4MeE.js","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["yup","COMMON_USER_SCHEMA","translatedErrors","useIntl","useMatch","useNavigate","useNotification","useEnterprise","MagicLinkCE","useAPIErrorHandler","useTypedSelector","selectAdminPermissions","useRBAC","useUpdateUserMutation","useAdminUsers","React","jsx","Page","pick","id","isBaseQueryError","jsxs","Form","Fragment","Layouts","Button","Check","getDisplayName","BackButton","Box","Flex","Typography","Grid","InputRenderer","SelectRoles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,sBAAyB,GAAAA,cAAA,CAAI,MAAO,EAAA,CAAE,KAAM,CAAA;AAAA,EAChD,GAAGC,6BAAA;AAAA,EACH,QAAA,EAAUD,eAAI,IAAK,EAAA;AAAA,EACnB,KAAO,EAAAA,cAAA,CACJ,KAAM,EAAA,CACN,IAAI,CAAG,EAAA;AAAA,IACN,EAAA,EAAIE,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA,wBAAA;AAAA,GACjB,EACA,QAAS,CAAA;AAAA,IACR,EAAA,EAAIA,kBAAiB,QAAS,CAAA,EAAA;AAAA,IAC9B,cAAgB,EAAA,wBAAA;AAAA,GACjB,CAAA;AACL,CAAC,CAAA,CAAA;AAED,MAAM,eAAe,CAAC,OAAA,EAAS,aAAa,UAAY,EAAA,UAAA,EAAY,YAAY,OAAO,CAAA,CAAA;AAMvF,MAAM,WAAW,MAAM;AACrB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIC,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQC,wBAAS,qBAAqB,CAAA,CAAA;AAC5C,EAAM,MAAA,EAAA,GAAK,KAAO,EAAA,MAAA,EAAQ,EAAM,IAAA,EAAA,CAAA;AAChC,EAAA,MAAM,WAAWC,0BAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,qBAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,SAAY,GAAAC,2BAAA;AAAA,IAChBC,uBAAA;AAAA,IACA,YAEI,CAAA,MAAM,qCACJ,2BACF,EACA,EAAA,WAAA;AAAA,GACN,CAAA;AACA,EAAM,MAAA;AAAA,IACJ,uBAAyB,EAAA,cAAA;AAAA,IACzB,+BAAiC,EAAA,sBAAA;AAAA,MAC/BC,wBAAmB,EAAA,CAAA;AAEvB,EAAM,MAAA,WAAA,GAAcC,uBAAiBC,gCAAsB,CAAA,CAAA;AAE3D,EAAM,MAAA;AAAA,IACJ,SAAW,EAAA,aAAA;AAAA,IACX,cAAA,EAAgB,EAAE,SAAU,EAAA;AAAA,MAC1BC,aAAQ,CAAA;AAAA,IACV,IAAM,EAAA,WAAA,CAAY,QAAU,EAAA,KAAA,CAAM,QAAQ,EAAC;AAAA,IAC3C,MAAQ,EAAA,WAAA,CAAY,QAAU,EAAA,KAAA,CAAM,UAAU,EAAC;AAAA,GAChD,CAAA,CAAA;AAED,EAAM,MAAA,CAAC,UAAU,CAAA,GAAIC,2BAAsB,EAAA,CAAA;AAE3C,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAW,EAAA,mBAAA;AAAA,GACT,GAAAC,mBAAA;AAAA,IACF,EAAE,EAAG,EAAA;AAAA,IACL;AAAA,MACE,yBAA2B,EAAA,IAAA;AAAA,KAC7B;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,CAAC,IAAI,CAAI,GAAA,IAAA,EAAM,SAAS,EAAC,CAAA;AAE/B,EAAAC,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,KAAO,EAAA;AAET,MAAI,IAAA,KAAA,CAAM,SAAS,mBAAqB,EAAA;AACtC,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,MAAA;AAAA,UACN,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,0CAAA;AAAA,YACJ,cAAgB,EAAA,0CAAA;AAAA,WACjB,CAAA;AAAA,SACF,CAAA,CAAA;AAED,QAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAAA,OACP,MAAA;AACL,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,eAAe,KAAK,CAAA;AAAA,SAC9B,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,KACC,CAAC,KAAA,EAAO,gBAAgB,aAAe,EAAA,QAAA,EAAU,kBAAkB,CAAC,CAAA,CAAA;AAEvE,EAAM,MAAA,SAAA,GAAY,mBAAuB,IAAA,CAAC,SAAa,IAAA,aAAA,CAAA;AAEvD,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,uBAAAC,cAAA,CAACC,UAAK,CAAA,OAAA,EAAL,EAAa,CAAA,CAAA;AAAA,GACvB;AAOA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,GAAGC,qBAAK,CAAA,IAAA,EAAM,YAAY,CAAA;AAAA,IAC1B,KAAA,EAAO,KAAK,KAAM,CAAA,GAAA,CAAI,CAAC,EAAE,EAAA,EAAAC,GAAG,EAAA,KAAMA,GAAE,CAAA;AAAA,IACpC,QAAU,EAAA,EAAA;AAAA,IACV,eAAiB,EAAA,EAAA;AAAA,GACnB,CAAA;AAEA,EAAM,MAAA,YAAA,GAAe,OAAO,IAAA,EAAmB,OAAsC,KAAA;AACnF,IAAA,MAAM,EAAE,eAAA,EAAiB,gBAAkB,EAAA,GAAG,UAAa,GAAA,IAAA,CAAA;AAE3D,IAAM,MAAA,GAAA,GAAM,MAAM,UAAW,CAAA;AAAA,MAC3B,EAAA;AAAA,MACA,GAAG,QAAA;AAAA,KACJ,CAAA,CAAA;AAED,IAAA,IAAI,OAAW,IAAA,GAAA,IAAOC,sBAAiB,CAAA,GAAA,CAAI,KAAK,CAAG,EAAA;AACjD,MAAI,IAAA,GAAA,CAAI,KAAM,CAAA,IAAA,KAAS,iBAAmB,EAAA;AACxC,QAAA,OAAA,CAAQ,SAAU,CAAA,sBAAA,CAAuB,GAAI,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,OACrD;AAEA,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,OAClC,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,SAAA;AAAA,QACN,SAAS,aAAc,CAAA,EAAE,IAAI,4BAA8B,EAAA,cAAA,EAAgB,SAAS,CAAA;AAAA,OACrF,CAAA,CAAA;AAED,MAAA,OAAA,CAAQ,SAAU,CAAA;AAAA,QAChB,GAAGF,qBAAK,CAAA,IAAA,EAAM,YAAY,CAAA;AAAA,QAC1B,QAAU,EAAA,EAAA;AAAA,QACV,eAAiB,EAAA,EAAA;AAAA,OAClB,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EACE,uBAAAG,eAAA,CAACJ,UAAK,CAAA,IAAA,EAAL,EACC,QAAA,EAAA;AAAA,oBAACD,cAAA,CAAAC,UAAA,CAAK,OAAL,EACE,QAAA,EAAA,aAAA;AAAA,MACC,EAAE,EAAA,EAAI,oBAAsB,EAAA,cAAA,EAAgB,mBAAoB,EAAA;AAAA,MAChE;AAAA,QACE,IAAM,EAAA,OAAA;AAAA,OACR;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACAD,cAAA;AAAA,MAACM,UAAA;AAAA,MAAA;AAAA,QACC,MAAO,EAAA,KAAA;AAAA,QACP,QAAU,EAAA,YAAA;AAAA,QACV,aAAe,EAAA,WAAA;AAAA,QACf,gBAAkB,EAAA,sBAAA;AAAA,QAEjB,QAAC,EAAA,CAAA,EAAE,YAAc,EAAA,QAAA,EAAe,KAAA;AAC/B,UAAA,uBAEID,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAAP,cAAA;AAAA,cAACQ,aAAQ,CAAA,MAAA;AAAA,cAAR;AAAA,gBACC,aACE,kBAAAR,cAAA;AAAA,kBAACS,mBAAA;AAAA,kBAAA;AAAA,oBACC,QAAU,EAAA,YAAA,IAAgB,CAAC,SAAA,IAAa,CAAC,QAAA;AAAA,oBACzC,SAAA,iCAAYC,WAAM,EAAA,EAAA,CAAA;AAAA,oBAClB,OAAS,EAAA,YAAA;AAAA,oBACT,IAAK,EAAA,QAAA;AAAA,oBACL,IAAK,EAAA,GAAA;AAAA,oBAEJ,wBAAc,EAAE,EAAA,EAAI,aAAe,EAAA,cAAA,EAAgB,QAAQ,CAAA;AAAA,mBAAA;AAAA,iBAC9D;AAAA,gBAEF,KAAO,EAAA,aAAA;AAAA,kBACL;AAAA,oBACE,EAAI,EAAA,4CAAA;AAAA,oBACJ,cAAgB,EAAA,aAAA;AAAA,mBAClB;AAAA,kBACA;AAAA;AAAA,oBAEE,IAAA,EAAMC,qBAAe,WAAW,CAAA;AAAA,mBAClC;AAAA,iBACF;AAAA,gBACA,gBAAA,iCAAmBC,gBAAW,EAAA,EAAA,CAAA;AAAA,eAAA;AAAA,aAChC;AAAA,4BACAP,eAAA,CAACG,aAAQ,CAAA,OAAA,EAAR,EACE,QAAA,EAAA;AAAA,cAAM,IAAA,EAAA,iBAAA,oBACJR,cAAA,CAAAa,gBAAA,EAAA,EAAI,aAAe,EAAA,CAAA,EAClB,yCAAC,SAAU,EAAA,EAAA,iBAAA,EAAmB,IAAK,CAAA,iBAAA,EAAmB,CACxD,EAAA,CAAA;AAAA,8CAEDC,iBAAK,EAAA,EAAA,SAAA,EAAU,UAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,gCAAAd,cAAA;AAAA,kBAACa,gBAAA;AAAA,kBAAA;AAAA,oBACC,UAAW,EAAA,UAAA;AAAA,oBACX,SAAS,EAAA,IAAA;AAAA,oBACT,MAAO,EAAA,cAAA;AAAA,oBACP,UAAY,EAAA,CAAA;AAAA,oBACZ,aAAe,EAAA,CAAA;AAAA,oBACf,WAAa,EAAA,CAAA;AAAA,oBACb,YAAc,EAAA,CAAA;AAAA,oBAEd,0CAACC,iBAAK,EAAA,EAAA,SAAA,EAAU,UAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,sCAAAd,cAAA,CAACe,uBAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,MAC7B,QAAc,EAAA,aAAA,CAAA;AAAA,wBACb,EAAI,EAAA,0DAAA;AAAA,wBACJ,cAAgB,EAAA,SAAA;AAAA,uBACjB,CACH,EAAA,CAAA;AAAA,qDACCC,iBAAK,CAAA,IAAA,EAAL,EAAU,GAAA,EAAK,GACb,QAAO,EAAA,MAAA,CAAA,GAAA;AAAA,wBAAI,CAAC,GACX,KAAA,GAAA,CAAI,GAAI,CAAA,CAAC,EAAE,IAAM,EAAA,KAAA,EAAO,GAAG,KAAA,EAAY,KAAA;AACrC,0BACE,uBAAAhB,cAAA;AAAA,4BAACgB,iBAAK,CAAA,IAAA;AAAA,4BAAL;AAAA,8BAEC,GAAK,EAAA,IAAA;AAAA,8BACL,SAAU,EAAA,QAAA;AAAA,8BACV,UAAW,EAAA,SAAA;AAAA,8BAEX,QAAA,kBAAAhB,cAAA;AAAA,gCAACiB,2BAAA;AAAA,gCAAA;AAAA,kCACE,GAAG,KAAA;AAAA,kCACJ,UAAU,CAAC,SAAA;AAAA,kCACX,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,kCAC1B,aACE,aAAiB,IAAA,KAAA,GACb,aAAc,CAAA,KAAA,CAAM,WAAW,CAC/B,GAAA,KAAA,CAAA;AAAA,iCAAA;AAAA,+BAER;AAAA,6BAAA;AAAA,4BAdK,KAAM,CAAA,IAAA;AAAA,2BAeb,CAAA;AAAA,yBAEH,CAAA;AAAA,uBAEL,EAAA,CAAA;AAAA,qBACF,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACF;AAAA,gCACAjB,cAAA;AAAA,kBAACa,gBAAA;AAAA,kBAAA;AAAA,oBACC,UAAW,EAAA,UAAA;AAAA,oBACX,SAAS,EAAA,IAAA;AAAA,oBACT,MAAO,EAAA,cAAA;AAAA,oBACP,UAAY,EAAA,CAAA;AAAA,oBACZ,aAAe,EAAA,CAAA;AAAA,oBACf,WAAa,EAAA,CAAA;AAAA,oBACb,YAAc,EAAA,CAAA;AAAA,oBAEd,0CAACC,iBAAK,EAAA,EAAA,SAAA,EAAU,UAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,sCAAAd,cAAA,CAACe,uBAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,MAC7B,QAAc,EAAA,aAAA,CAAA;AAAA,wBACb,EAAI,EAAA,cAAA;AAAA,wBACJ,cAAgB,EAAA,aAAA;AAAA,uBACjB,CACH,EAAA,CAAA;AAAA,sCACAf,cAAA,CAACgB,iBAAK,CAAA,IAAA,EAAL,EAAU,GAAA,EAAK,GACd,QAAC,kBAAAhB,cAAA,CAAAgB,iBAAA,CAAK,IAAL,EAAA,EAAU,GAAK,EAAA,CAAA,EAAG,IAAI,EAAI,EAAA,SAAA,EAAU,QAAS,EAAA,UAAA,EAAW,SACvD,EAAA,QAAA,kBAAAhB,cAAA,CAACkB,2BAAY,QAAU,EAAA,CAAC,SAAW,EAAA,CAAA,EACrC,CACF,EAAA,CAAA;AAAA,qBACF,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACF;AAAA,eACF,EAAA,CAAA;AAAA,aACF,EAAA,CAAA;AAAA,WACF,EAAA,CAAA,CAAA;AAAA,SAEJ;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,EAAA;AAMA,MAAM,MAAS,GAAA;AAAA,EACb;AAAA,IACE;AAAA,MACE,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,2BAAA;AAAA,QACJ,cAAgB,EAAA,YAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,WAAA;AAAA,MACN,WAAa,EAAA;AAAA,QACX,EAAI,EAAA,iCAAA;AAAA,QACJ,cAAgB,EAAA,UAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA;AAAA,MACE,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,0BAAA;AAAA,QACJ,cAAgB,EAAA,WAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,UAAA;AAAA,MACN,WAAa,EAAA;AAAA,QACX,EAAI,EAAA,gCAAA;AAAA,QACJ,cAAgB,EAAA,UAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,KACR;AAAA,GACF;AAAA,EACA;AAAA,IACE;AAAA,MACE,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,uBAAA;AAAA,QACJ,cAAgB,EAAA,OAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA;AAAA,QACX,EAAI,EAAA,6BAAA;AAAA,QACJ,cAAgB,EAAA,wBAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA;AAAA,MACE,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,0BAAA;AAAA,QACJ,cAAgB,EAAA,UAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,UAAA;AAAA,MACN,WAAa,EAAA;AAAA,QACX,EAAI,EAAA,gCAAA;AAAA,QACJ,cAAgB,EAAA,cAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,KACR;AAAA,GACF;AAAA,EACA;AAAA,IACE;AAAA,MACE,YAAc,EAAA,cAAA;AAAA,MACd,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,iBAAA;AAAA,QACJ,cAAgB,EAAA,UAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,KACR;AAAA,IACA;AAAA,MACE,YAAc,EAAA,cAAA;AAAA,MACd,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,iCAAA;AAAA,QACJ,cAAgB,EAAA,uBAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,iBAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,KACR;AAAA,GACF;AAAA,EACA;AAAA,IACE;AAAA,MACE,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,wBAAA;AAAA,QACJ,cAAgB,EAAA,QAAA;AAAA,OAClB;AAAA,MACA,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,CAAA;AAAA,KACR;AAAA,GACF;AACF,CAAA,CAAA;AAEA,MAAM,oBAAoB,MAAM;AAC9B,EAAM,MAAA,WAAA,GAAcxB,uBAAiB,CAAC,KAAA,KAAU,MAAM,SAAU,CAAA,WAAA,CAAY,QAAU,EAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAEhG,EAAA,sCACGO,UAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAAD,cAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-dZLyVDGx.mjs","sources":["../../admin/src/pages/Settings/pages/Users/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport pick from 'lodash/pick';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Update } from '../../../../../../shared/contracts/user';\nimport { Form, FormHelpers } from '../../../../components/Form';\nimport { InputRenderer } from '../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { useAdminUsers, useUpdateUserMutation } from '../../../../services/users';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { MagicLinkCE } from './components/MagicLinkCE';\nimport { SelectRoles } from './components/SelectRoles';\nimport { COMMON_USER_SCHEMA } from './utils/validation';\n\nconst EDIT_VALIDATION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n isActive: yup.bool(),\n roles: yup\n .array()\n .min(1, {\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n});\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/users/:id');\n const id = match?.params?.id ?? '';\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE'\n )\n ).MagicLinkEE\n );\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const permissions = useTypedSelector(selectAdminPermissions);\n\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canUpdate },\n } = useRBAC({\n read: permissions.settings?.users.read ?? [],\n update: permissions.settings?.users.update ?? [],\n });\n\n const [updateUser] = useUpdateUserMutation();\n\n const {\n data,\n error,\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n const [user] = data?.users ?? [];\n\n React.useEffect(() => {\n if (error) {\n // Redirect the user to the homepage if is not allowed to read\n if (error.name === 'UnauthorizedError') {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n }),\n });\n\n navigate('/');\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n }, [error, formatAPIError, formatMessage, navigate, toggleNotification]);\n\n const isLoading = isLoadingAdminUsers || !MagicLink || isLoadingRBAC;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n type InitialData = Pick<Update.Request['body'], (typeof fieldsToPick)[number]> & {\n confirmPassword: string;\n password: string;\n };\n\n const initialData = {\n ...pick(user, fieldsToPick),\n roles: user.roles.map(({ id }) => id),\n password: '',\n confirmPassword: '',\n } satisfies InitialData;\n\n const handleSubmit = async (body: InitialData, actions: FormHelpers<InitialData>) => {\n const { confirmPassword: _confirmPassword, ...bodyRest } = body;\n\n const res = await updateUser({\n id,\n ...bodyRest,\n });\n\n if ('error' in res && isBaseQueryError(res.error)) {\n if (res.error.name === 'ValidationError') {\n actions.setErrors(formatValidationErrors(res.error));\n }\n\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n } else {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n actions.setValues({\n ...pick(body, fieldsToPick),\n password: '',\n confirmPassword: '',\n });\n }\n };\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={EDIT_VALIDATION_SCHEMA}\n >\n {({ isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate || !modified}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={formatMessage(\n {\n id: 'app.containers.Users.EditPage.header.label',\n defaultMessage: 'Edit {name}',\n },\n {\n // @ts-expect-error – issues with the Entity ID type, still.\n name: getDisplayName(initialData),\n }\n )}\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {LAYOUT.map((row) =>\n row.map(({ size, label, ...field }) => {\n return (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={!canUpdate}\n label={formatMessage(label)}\n placeholder={\n 'placeholder' in field\n ? formatMessage(field.placeholder)\n : undefined\n }\n />\n </Grid.Item>\n );\n })\n )}\n </Grid.Root>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <SelectRoles disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage LAYOUT\n * -----------------------------------------------------------------------------------------------*/\n\nconst LAYOUT = [\n [\n {\n label: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'string' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email' as const,\n size: 6,\n required: true,\n },\n {\n label: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'string' as const,\n size: 6,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password' as const,\n size: 6,\n },\n {\n autoComplete: 'new-password',\n label: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password' as const,\n size: 6,\n },\n ],\n [\n {\n label: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n];\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { EditPage, ProtectedEditPage };\n"],"names":["translatedErrors","id","InputRenderer"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-ewduoYpT.js","sources":["../../admin/src/pages/Settings/pages/Webhooks/components/Events.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/EventsTable.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.tsx","../../admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.tsx","../../admin/src/pages/Settings/pages/Webhooks/EditPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Checkbox,\n Flex,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n Field,\n CheckboxProps,\n} from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField } from '../../../../../components/Form';\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRoot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRootProps {\n children: React.ReactNode;\n}\n\nconst EventsRoot = ({ children }: EventsRootProps) => {\n const { formatMessage } = useIntl();\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label aria-hidden>{label}</Field.Label>\n {/* @ts-expect-error – TODO: add colCount & rowCount */}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n );\n};\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 6%;\n vertical-align: middle;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EventsHeaders\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsHeadersProps {\n getHeaders?: typeof getCEHeaders;\n}\n\nconst getCEHeaders = (): MessageDescriptor[] => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n { id: 'app.utils.publish', defaultMessage: 'Publish' },\n { id: 'app.utils.unpublish', defaultMessage: 'Unpublish' },\n ];\n\n return headers;\n};\n\nconst EventsHeaders = ({ getHeaders = getCEHeaders }: EventsHeadersProps) => {\n const { formatMessage } = useIntl();\n const headers = getHeaders();\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header?.id ?? '')) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsBody\n * -----------------------------------------------------------------------------------------------*/\ninterface FormikContextValue {\n events: string[];\n}\n\ninterface EventsBodyProps {\n providedEvents?: Record<string, FormikContextValue['events']>;\n}\n\nconst EventsBody = ({ providedEvents }: EventsBodyProps) => {\n const events = providedEvents || getCEEvents();\n const { value = [], onChange } = useField<string[]>('events');\n\n const inputName = 'events';\n const inputValue = value;\n const disabledEvents: string[] = [];\n\n const formattedValue = inputValue.reduce<Record<string, string[]>>((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n const handleSelect: EventsRowProps['handleSelect'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n\n onChange(inputName, Array.from(set));\n };\n\n const handleSelectAll: EventsRowProps['handleSelectAll'] = (name, value) => {\n const set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n\n onChange(inputName, Array.from(set));\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventsRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nconst getCEEvents = (): Required<Pick<EventsBodyProps, 'providedEvents'>>['providedEvents'] => {\n const entryEvents: FormikContextValue['events'] = [\n 'entry.create',\n 'entry.update',\n 'entry.delete',\n 'entry.publish',\n 'entry.unpublish',\n ];\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EventsRow\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EventsRowProps {\n disabledEvents?: string[];\n events?: string[];\n inputValue?: string[];\n handleSelect: (name: string, value: boolean) => void;\n handleSelectAll: (name: string, value: boolean) => void;\n name: string;\n}\n\nconst EventsRow = ({\n disabledEvents = [],\n name,\n events = [],\n inputValue = [],\n handleSelect,\n handleSelectAll,\n}: EventsRowProps) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll: CheckboxProps['onCheckedChange'] = () => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll(name, valueToSet);\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n checked={\n hasSomeCheckboxSelected && !areAllCheckboxesSelected\n ? 'indeterminate'\n : areAllCheckboxesSelected\n }\n onCheckedChange={onChangeAll}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event} textAlign=\"center\">\n <Flex width=\"100%\" justifyContent=\"center\">\n <Checkbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n checked={inputValue.includes(event)}\n onCheckedChange={(value) => handleSelect(event, !!value)}\n />\n </Flex>\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n */\nconst removeHyphensAndTitleCase = (str: string): string =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst Events = { Root: EventsRoot, Headers: EventsHeaders, Body: EventsBody, Row: EventsRow };\n\nexport { Events };\nexport type { EventsRowProps, EventsHeadersProps, EventsRootProps, EventsBodyProps };\n","import { Events } from './Events';\n\nconst EventTableCE = () => {\n return (\n <Events.Root>\n <Events.Headers />\n <Events.Body />\n </Events.Root>\n );\n};\n\nexport { EventTableCE };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n","import { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * TriggerContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TriggerContainerProps extends Pick<StatusProps, 'isPending'> {\n onCancel: () => void;\n response?: {\n statusCode: number;\n message?: string;\n };\n}\n\nconst TriggerContainer = ({ isPending, onCancel, response }: TriggerContainerProps) => {\n const { statusCode, message } = response ?? {};\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid.Root gap={4} style={{ alignItems: 'center' }}>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </Grid.Item>\n <Grid.Item col={3} direction=\"column\" alignItems=\"stretch\">\n <Status isPending={isPending} statusCode={statusCode} />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({\n id: 'Settings.webhooks.trigger.cancel',\n defaultMessage: 'cancel',\n })}\n </Typography>\n <Cross fill=\"neutral400\" height=\"1.2rem\" width=\"1.2rem\" />\n </Flex>\n </button>\n </Flex>\n )}\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\ninterface StatusProps {\n isPending: boolean;\n statusCode?: number;\n}\n\nconst Status = ({ isPending, statusCode }: StatusProps) => {\n const { formatMessage } = useIntl();\n\n if (isPending || !statusCode) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Loader height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Check fill=\"success700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Cross fill=\"danger700\" height=\"1.2rem\" width=\"1.2rem\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Message\n * -----------------------------------------------------------------------------------------------*/\n\ninterface MessageProps {\n statusCode?: number;\n message?: string;\n}\n\nconst Message = ({ statusCode, message }: MessageProps) => {\n const { formatMessage } = useIntl();\n\n if (!statusCode) {\n return null;\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={`25rem`} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\n\nexport { TriggerContainer };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, TextInput } from '@strapi/design-system';\nimport { Check, Play as Publish } from '@strapi/icons';\nimport { IntlShape, useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { TriggerWebhook } from '../../../../../../../shared/contracts/webhooks';\nimport { Form, FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../../features/BackButton';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\n\nimport { EventTableCE } from './EventsTable';\nimport { HeadersInput } from './HeadersInput';\nimport { TriggerContainer } from './TriggerContainer';\n\nimport type { Modules } from '@strapi/types';\n\ninterface WebhookFormValues {\n name: Modules.WebhookStore.Webhook['name'];\n url: Modules.WebhookStore.Webhook['url'];\n headers: Array<{ key: string; value: string }>;\n events: Modules.WebhookStore.Webhook['events'];\n}\n\ninterface WebhookFormProps {\n data?: Modules.WebhookStore.Webhook;\n handleSubmit: (\n values: WebhookFormValues,\n helpers: FormHelpers<WebhookFormValues>\n ) => Promise<void>;\n isCreating: boolean;\n isTriggering: boolean;\n triggerWebhook: () => void;\n triggerResponse?: TriggerWebhook.Response['data'];\n}\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}: WebhookFormProps) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = React.useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable'\n )\n ).EventsTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n */\n const mapHeaders = (headers: Modules.WebhookStore.Webhook['headers']) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <Form\n initialValues={{\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n }}\n method={isCreating ? 'POST' : 'PUT'}\n onSubmit={handleSubmit}\n validationSchema={makeWebhookValidationSchema({ formatMessage })}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!modified}\n loading={isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={<BackButton />}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid.Root gap={6}>\n {[\n {\n label: formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n }),\n name: 'name',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n }),\n name: 'url',\n required: true,\n size: 12,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </Layouts.Content>\n </>\n )}\n </Form>\n );\n};\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nconst makeWebhookValidationSchema = ({ formatMessage }: Pick<IntlShape, 'formatMessage'>) =>\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .nullable()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n const baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n )\n .nullable(),\n value: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n )\n .nullable(),\n })\n );\n }),\n events: yup.array(),\n });\n\nexport { WebhookForm };\nexport type { WebhookFormValues, WebhookFormProps };\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport { Modules } from '@strapi/types';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useMatch } from 'react-router-dom';\n\nimport { CreateWebhook, TriggerWebhook } from '../../../../../../shared/contracts/webhooks';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { selectAdminPermissions } from '../../../../selectors';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\n\nimport { WebhookForm, WebhookFormProps, WebhookFormValues } from './components/WebhookForm';\nimport { useWebhooks } from './hooks/useWebhooks';\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst cleanData = (\n data: WebhookFormValues\n): Omit<CreateWebhook.Request['body'], 'id' | 'isEnabled'> => ({\n ...data,\n headers: data.headers.reduce<Modules.WebhookStore.Webhook['headers']>((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditPage = () => {\n const { formatMessage } = useIntl();\n const match = useMatch('/settings/webhooks/:id');\n const id = match?.params.id;\n const isCreating = id === 'create';\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n /**\n * Prevents the notifications from showing up twice because the function identity\n * coming from the helper plugin is not stable\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const stableFormatAPIError = React.useCallback(formatAPIError, []);\n const [isTriggering, setIsTriggering] = React.useState(false);\n const [triggerResponse, setTriggerResponse] = React.useState<TriggerWebhook.Response['data']>();\n\n const { isLoading, webhooks, error, createWebhook, updateWebhook, triggerWebhook } = useWebhooks(\n { id: id! },\n {\n skip: isCreating,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: stableFormatAPIError(error),\n });\n }\n }, [error, toggleNotification, stableFormatAPIError]);\n\n const handleTriggerWebhook = async () => {\n try {\n setIsTriggering(true);\n\n const res = await triggerWebhook(id!);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n setTriggerResponse(res.data);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n } finally {\n setIsTriggering(false);\n }\n };\n\n const handleSubmit: WebhookFormProps['handleSubmit'] = async (data, helpers) => {\n try {\n if (isCreating) {\n const res = await createWebhook(cleanData(data));\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.webhooks.created' }),\n });\n\n navigate(`../webhooks/${res.data.id}`, { replace: true });\n } else {\n const res = await updateWebhook({ id: id!, ...cleanData(data) });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const [webhook] = webhooks ?? [];\n\n return (\n <Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Webhooks',\n }\n )}\n </Page.Title>\n <WebhookForm\n data={webhook}\n handleSubmit={handleSubmit}\n triggerWebhook={handleTriggerWebhook}\n isCreating={isCreating}\n isTriggering={isTriggering}\n triggerResponse={triggerResponse}\n />\n </Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector(selectAdminPermissions);\n\n return (\n <Page.Protect permissions={permissions.settings?.webhooks.update}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage, EditPage };\n"],"names":["useIntl","Flex","jsx","Field","styled","Table","Thead","jsxs","Tr","Th","VisuallyHidden","Typography","useField","value","Tbody","Td","Checkbox","TextButton","useForm","DSField","Box","index","Grid","StringInput","IconButton","Minus","Plus","React","Combobox","ComboboxOption","Cross","Loader","Check","useEnterprise","Form","Fragment","Layouts","Button","Publish","BackButton","InputRenderer","yup","useMatch","useNavigate","useNotification","useAPIErrorHandler","useWebhooks","isBaseQueryError","Page","Main","useTypedSelector","selectAdminPermissions"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplacePage-XkcAwVQL.js","sources":["../../admin/src/hooks/useDebounce.ts","../../admin/src/pages/Marketplace/components/NpmPackagesFilters.tsx","../../admin/src/pages/Marketplace/components/NpmPackageCard.tsx","../../admin/src/pages/Marketplace/components/NpmPackagesGrid.tsx","../../admin/src/pages/Marketplace/components/PageHeader.tsx","../../admin/src/pages/Marketplace/components/OfflineLayout.tsx","../../admin/src/pages/Marketplace/components/SortSelect.tsx","../../admin/src/pages/Marketplace/hooks/useMarketplaceData.ts","../../admin/src/pages/Marketplace/hooks/useNavigatorOnline.ts","../../admin/src/pages/Marketplace/MarketplacePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Tag,\n MultiSelect,\n MultiSelectOption,\n MultiSelectProps,\n Popover,\n Flex,\n} from '@strapi/design-system';\nimport { Cross, Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { Categories, Collections, FilterTypes } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType, MarketplacePageQuery } from '../MarketplacePage';\n\ninterface NpmPackagesFiltersProps {\n handleSelectClear: (type: FilterTypes) => void;\n handleSelectChange: (update: Partial<MarketplacePageQuery>) => void;\n npmPackageType: NpmPackageType;\n possibleCategories: Partial<Record<Categories, number>>;\n possibleCollections: Partial<Record<Collections, number>>;\n query: MarketplacePageQuery;\n}\n\nconst NpmPackagesFilters = ({\n handleSelectClear,\n handleSelectChange,\n npmPackageType,\n possibleCategories,\n possibleCollections,\n query,\n}: NpmPackagesFiltersProps) => {\n const { formatMessage } = useIntl();\n\n const handleTagRemove = (tagToRemove: string, filterType: FilterTypes) => {\n const update = {\n [filterType]: (query[filterType] ?? []).filter((previousTag) => previousTag !== tagToRemove),\n };\n\n handleSelectChange(update);\n };\n\n return (\n <Popover.Root>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />}>\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <Popover.Content sideOffset={4}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.collections',\n defaultMessage: 'Collections',\n })}\n value={query?.collections || []}\n onChange={(newCollections) => {\n const update = { collections: newCollections };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('collections')}\n possibleFilters={possibleCollections}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.collectionsSelected',\n defaultMessage:\n '{count, plural, =0 {No collections} one {# collection} other {# collections}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n {npmPackageType === 'plugin' && (\n <FilterSelect\n message={formatMessage({\n id: 'admin.pages.MarketPlacePage.filters.categories',\n defaultMessage: 'Categories',\n })}\n value={query?.categories || []}\n onChange={(newCategories) => {\n const update = { categories: newCategories };\n handleSelectChange(update);\n }}\n onClear={() => handleSelectClear('categories')}\n possibleFilters={possibleCategories}\n customizeContent={(values) =>\n formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.filters.categoriesSelected',\n defaultMessage:\n '{count, plural, =0 {No categories} one {# category} other {# categories}} selected',\n },\n { count: values?.length ?? 0 }\n )\n }\n />\n )}\n </Flex>\n </Popover.Content>\n\n {query.collections?.map((collection) => (\n <Box key={collection} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(collection, 'collections')}>\n {collection}\n </Tag>\n </Box>\n ))}\n {npmPackageType === 'plugin' &&\n query.categories?.map((category) => (\n <Box key={category} padding={1}>\n <Tag icon={<Cross />} onClick={() => handleTagRemove(category, 'categories')}>\n {category}\n </Tag>\n </Box>\n ))}\n </Popover.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FilterSelect\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterSelectProps\n extends Pick<MultiSelectProps, 'customizeContent' | 'onClear' | 'onChange' | 'value'> {\n message: string;\n possibleFilters:\n | NpmPackagesFiltersProps['possibleCategories']\n | NpmPackagesFiltersProps['possibleCollections'];\n}\n\nconst FilterSelect = ({\n message,\n value,\n onChange,\n possibleFilters,\n onClear,\n customizeContent,\n}: FilterSelectProps) => {\n return (\n <MultiSelect\n data-testid={`${message}-button`}\n aria-label={message}\n placeholder={message}\n onChange={onChange}\n onClear={onClear}\n value={value}\n customizeContent={customizeContent}\n >\n {Object.entries(possibleFilters).map(([filterName, count]) => {\n return (\n <MultiSelectOption\n data-testid={`${filterName}-${count}`}\n key={filterName}\n value={filterName}\n >\n {`${filterName} (${count})`}\n </MultiSelectOption>\n );\n })}\n </MultiSelect>\n );\n};\n\nexport { NpmPackagesFilters };\nexport type { NpmPackagesFiltersProps };\n","import {\n Box,\n Flex,\n Tooltip,\n Typography,\n Divider,\n Button,\n LinkButton,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { CheckCircle, ExternalLink, Download, Star, Check, Duplicate } from '@strapi/icons';\nimport { GitHub } from '@strapi/icons/symbols';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\nimport * as semver from 'semver';\nimport { styled } from 'styled-components';\n\nimport StrapiLogo from '../../../assets/images/logo-strapi-2022.svg';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useClipboard } from '../../../hooks/useClipboard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\nimport type { NpmPackageType } from '../MarketplacePage';\n\n// Custom component to have an ellipsis after the 2nd line\nconst EllipsisText = styled<TypographyComponent<'p'>>(Typography)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n`;\n\ninterface NpmPackageCardProps extends Pick<AppInfoContextValue, 'useYarn'> {\n npmPackage: Plugin | Provider;\n isInstalled: boolean;\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackageType: NpmPackageType;\n strapiAppVersion: AppInfoContextValue['strapiVersion'];\n}\n\nconst NpmPackageCard = ({\n npmPackage,\n isInstalled,\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n}: NpmPackageCardProps) => {\n const { attributes } = npmPackage;\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const commandToCopy = useYarn\n ? `yarn add ${attributes.npmPackageName}`\n : `npm install ${attributes.npmPackageName}`;\n\n const madeByStrapiMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi',\n defaultMessage: 'Made by Strapi',\n });\n\n const npmPackageHref = `https://market.strapi.io/${pluralize.plural(npmPackageType)}/${\n attributes.slug\n }`;\n\n const versionRange = semver.validRange(attributes.strapiVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n return (\n <Flex\n direction=\"column\"\n justifyContent=\"space-between\"\n paddingTop={4}\n paddingRight={4}\n paddingBottom={4}\n paddingLeft={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n height=\"100%\"\n alignItems=\"normal\"\n data-testid=\"npm-package-card\"\n >\n <Box>\n <Flex direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box\n tag=\"img\"\n src={attributes.logo.url}\n alt={`${attributes.name} logo`}\n hasRadius\n width={11}\n height={11}\n />\n <PackageStats\n githubStars={attributes.githubStars}\n npmDownloads={attributes.npmDownloads}\n npmPackageType={npmPackageType}\n />\n </Flex>\n <Box paddingTop={4}>\n <Typography tag=\"h3\" variant=\"delta\">\n <Flex\n alignItems=\"center\"\n gap={attributes.validated && !attributes.madeByStrapi ? 2 : 1}\n >\n {attributes.name}\n {attributes.validated && !attributes.madeByStrapi && (\n <Tooltip\n description={formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.tooltip.verified',\n defaultMessage: 'Plugin verified by Strapi',\n })}\n >\n <CheckCircle fill=\"success600\" />\n </Tooltip>\n )}\n {attributes.madeByStrapi && (\n <Tooltip description={madeByStrapiMessage}>\n <Box\n tag=\"img\"\n src={StrapiLogo}\n alt={madeByStrapiMessage}\n width={6}\n height=\"auto\"\n />\n </Tooltip>\n )}\n </Flex>\n </Typography>\n </Box>\n <Box paddingTop={2}>\n <EllipsisText tag=\"p\" variant=\"omega\" textColor=\"neutral600\">\n {attributes.description}\n </EllipsisText>\n </Box>\n </Box>\n\n <Flex gap={2} style={{ alignSelf: 'flex-end' }} paddingTop={6}>\n <LinkButton\n size=\"S\"\n href={npmPackageHref}\n isExternal\n endIcon={<ExternalLink />}\n aria-label={formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.info.label',\n defaultMessage: 'Learn more about {pluginName}',\n },\n { pluginName: attributes.name }\n )}\n variant=\"tertiary\"\n onClick={() => trackUsage('didPluginLearnMore')}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.info.text',\n defaultMessage: 'More',\n })}\n </LinkButton>\n <InstallPluginButton\n isInstalled={isInstalled}\n isInDevelopmentMode={isInDevelopmentMode}\n isCompatible={isCompatible}\n commandToCopy={commandToCopy}\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={attributes.strapiVersion}\n pluginName={attributes.name}\n />\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstallPluginButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstallPluginButtonProps\n extends Pick<NpmPackageCardProps, 'isInstalled' | 'isInDevelopmentMode' | 'strapiAppVersion'> {\n commandToCopy: string;\n pluginName: string;\n strapiPeerDepVersion?: string;\n isCompatible?: boolean;\n}\n\nconst InstallPluginButton = ({\n isInstalled,\n isInDevelopmentMode,\n isCompatible,\n commandToCopy,\n strapiAppVersion,\n strapiPeerDepVersion,\n pluginName,\n}: InstallPluginButtonProps) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { copy } = useClipboard();\n\n const handleCopy = async () => {\n const didCopy = await copy(commandToCopy);\n\n if (didCopy) {\n trackUsage('willInstallPlugin');\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'admin.pages.MarketPlacePage.plugin.copy.success' }),\n });\n }\n };\n\n // Already installed\n if (isInstalled) {\n return (\n <Flex gap={2} paddingLeft={4}>\n <Check width=\"1.2rem\" height=\"1.2rem\" color=\"success600\" />\n <Typography variant=\"omega\" textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.installed',\n defaultMessage: 'Installed',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // In development, show install button\n if (isInDevelopmentMode && isCompatible !== false) {\n return (\n <CardButton\n strapiAppVersion={strapiAppVersion}\n strapiPeerDepVersion={strapiPeerDepVersion}\n handleCopy={handleCopy}\n pluginName={pluginName}\n />\n );\n }\n\n // Not in development and plugin not installed already. Show nothing\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CardButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CardButtonProps\n extends Pick<NpmPackageCardProps, 'strapiAppVersion'>,\n Pick<InstallPluginButtonProps, 'strapiPeerDepVersion' | 'pluginName'> {\n handleCopy: () => void;\n}\n\nconst CardButton = ({\n strapiPeerDepVersion,\n strapiAppVersion,\n handleCopy,\n pluginName,\n}: CardButtonProps) => {\n const { formatMessage } = useIntl();\n const versionRange = semver.validRange(strapiPeerDepVersion);\n const isCompatible = semver.satisfies(strapiAppVersion ?? '', versionRange ?? '');\n\n const installMessage = formatMessage({\n id: 'admin.pages.MarketPlacePage.plugin.copy',\n defaultMessage: 'Copy install command',\n });\n\n // Only plugins receive a strapiAppVersion\n if (strapiAppVersion) {\n if (!versionRange || !isCompatible) {\n return (\n <Tooltip\n data-testid={`tooltip-${pluginName}`}\n label={\n !versionRange\n ? formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version.null',\n defaultMessage:\n 'Unable to verify compatibility with your Strapi version: \"{strapiAppVersion}\"',\n },\n { strapiAppVersion }\n )\n : formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.plugin.version',\n defaultMessage:\n 'Update your Strapi version: \"{strapiAppVersion}\" to: \"{versionRange}\"',\n },\n {\n strapiAppVersion,\n versionRange,\n }\n )\n }\n >\n <span>\n <Button\n size=\"S\"\n startIcon={<Duplicate />}\n variant=\"secondary\"\n onClick={handleCopy}\n disabled={!isCompatible}\n >\n {installMessage}\n </Button>\n </span>\n </Tooltip>\n );\n }\n }\n\n return (\n <Button size=\"S\" startIcon={<Duplicate />} variant=\"secondary\" onClick={handleCopy}>\n {installMessage}\n </Button>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PackageStats\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PackageStatsProps {\n githubStars?: number;\n npmDownloads?: number;\n npmPackageType: NpmPackageType;\n}\n\nconst PackageStats = ({ githubStars = 0, npmDownloads = 0, npmPackageType }: PackageStatsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={1}>\n {!!githubStars && (\n <>\n <GitHub height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <Star height=\"1.2rem\" width=\"1.2rem\" fill=\"warning500\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.githubStars`,\n defaultMessage: `This {package} was starred {starsCount} on GitHub`,\n },\n {\n starsCount: githubStars,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {githubStars}\n </Typography>\n </p>\n <VerticalDivider />\n </>\n )}\n <Download height=\"1.2rem\" width=\"1.2rem\" aria-hidden />\n <p\n aria-label={formatMessage(\n {\n id: `admin.pages.MarketPlacePage.${npmPackageType}.downloads`,\n defaultMessage: `This {package} has {downloadsCount} weekly downloads`,\n },\n {\n downloadsCount: npmDownloads,\n package: npmPackageType,\n }\n )}\n >\n <Typography variant=\"pi\" textColor=\"neutral800\">\n {npmDownloads}\n </Typography>\n </p>\n </Flex>\n );\n};\n\nconst VerticalDivider = styled(Divider)`\n width: 1.2rem;\n transform: rotate(90deg);\n`;\n\nexport { NpmPackageCard };\nexport type { NpmPackageCardProps };\n","import { Box, BoxComponent, Flex, Grid, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { AppInfoContextValue } from '../../../features/AppInfo';\n\nimport { NpmPackageCard, NpmPackageCardProps } from './NpmPackageCard';\n\nimport type { Plugin, Provider } from '../hooks/useMarketplaceData';\n\ninterface NpmPackagesGridProps extends Pick<NpmPackageCardProps, 'npmPackageType' | 'useYarn'> {\n debouncedSearch: string;\n installedPackageNames: string[];\n isInDevelopmentMode: AppInfoContextValue['autoReload'];\n npmPackages?: Array<Plugin | Provider>;\n status: 'idle' | 'loading' | 'error' | 'success';\n strapiAppVersion?: NpmPackageCardProps['strapiAppVersion'];\n}\n\nconst NpmPackagesGrid = ({\n status,\n npmPackages = [],\n installedPackageNames = [],\n useYarn,\n isInDevelopmentMode,\n npmPackageType,\n strapiAppVersion,\n debouncedSearch,\n}: NpmPackagesGridProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return <Page.Error />;\n }\n\n if (status === 'loading') {\n return <Page.Loading />;\n }\n\n const emptySearchMessage = formatMessage(\n {\n id: 'admin.pages.MarketPlacePage.search.empty',\n defaultMessage: 'No result for \"{target}\"',\n },\n { target: debouncedSearch }\n );\n\n if (npmPackages.length === 0) {\n return (\n <Box position=\"relative\">\n <Layouts.Grid size=\"M\">\n {Array(12)\n .fill(null)\n .map((_, idx) => (\n <EmptyPluginCard key={idx} height=\"234px\" hasRadius />\n ))}\n </Layouts.Grid>\n <Box position=\"absolute\" top={11} width=\"100%\">\n <Flex alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n <EmptyDocuments width=\"160px\" height=\"88px\" />\n <Box paddingTop={6}>\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {emptySearchMessage}\n </Typography>\n </Box>\n </Flex>\n </Box>\n </Box>\n );\n }\n\n return (\n <Grid.Root gap={4}>\n {npmPackages.map((npmPackage) => (\n <Grid.Item\n col={4}\n s={6}\n xs={12}\n style={{ height: '100%' }}\n key={npmPackage.id}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <NpmPackageCard\n npmPackage={npmPackage}\n isInstalled={installedPackageNames.includes(npmPackage.attributes.npmPackageName)}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType={npmPackageType}\n strapiAppVersion={strapiAppVersion}\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n );\n};\n\nconst EmptyPluginCard = styled<BoxComponent>(Box)`\n background: ${({ theme }) =>\n `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};\n opacity: 0.33;\n`;\n\nexport { NpmPackagesGrid };\n","import { LinkButton } from '@strapi/design-system';\nimport { Upload } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { useTracking } from '../../../features/Tracking';\n\nimport type { NpmPackageType } from '../MarketplacePage';\n\ninterface PageHeaderProps {\n isOnline?: boolean;\n npmPackageType?: NpmPackageType;\n}\n\nconst PageHeader = ({ isOnline, npmPackageType = 'plugin' }: PageHeaderProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tracking = npmPackageType === 'provider' ? 'didSubmitProvider' : 'didSubmitPlugin';\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.subtitle',\n defaultMessage: 'Get more out of Strapi',\n })}\n primaryAction={\n isOnline && (\n <LinkButton\n startIcon={<Upload />}\n variant=\"tertiary\"\n href={`https://market.strapi.io/submit-${npmPackageType}`}\n onClick={() => trackUsage(tracking)}\n isExternal\n >\n {formatMessage({\n id: `admin.pages.MarketPlacePage.submit.${npmPackageType}.link`,\n defaultMessage: `Submit ${npmPackageType}`,\n })}\n </LinkButton>\n )\n }\n />\n );\n};\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\n\nimport { PageHeader } from './PageHeader';\n\nconst OfflineLayout = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Layouts.Root>\n <Main>\n <PageHeader />\n <Flex\n width=\"100%\"\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n paddingTop={`12rem`}\n >\n <Box paddingBottom={2}>\n <Typography textColor=\"neutral700\" variant=\"alpha\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.offline.title',\n defaultMessage: 'You are offline',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={6}>\n <Typography textColor=\"neutral700\" variant=\"epsilon\">\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.offline.subtitle',\n defaultMessage: 'You need to be connected to the Internet to access Strapi Market.',\n })}\n </Typography>\n </Box>\n <svg\n width=\"88\"\n height=\"88\"\n viewBox=\"0 0 88 88\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\".5\" y=\".5\" width=\"87\" height=\"87\" rx=\"43.5\" fill=\"#F0F0FF\" />\n <path\n d=\"M34 39.3h-4c-2.6 0-4.7 1-6.6 2.8a9 9 0 0 0-2.7 6.6 9 9 0 0 0 2.7 6.6A9 9 0 0 0 30 58h22.8L34 39.3Zm-11-11 3-3 39 39-3 3-4.7-4.6H30a13.8 13.8 0 0 1-14-14c0-3.8 1.3-7 4-9.7 2.6-2.7 5.7-4.2 9.5-4.3L23 28.2Zm38.2 11.1c3 .2 5.5 1.5 7.6 3.7A11 11 0 0 1 72 51c0 4-1.6 7.2-5 9.5l-3.3-3.4a6.5 6.5 0 0 0 3.6-6.1c0-1.9-.7-3.5-2-5-1.5-1.3-3.1-2-5-2h-3.5v-1.2c0-3.6-1.2-6.6-3.7-9a13 13 0 0 0-15-2.3L34.6 28a17 17 0 0 1 20.3 1.5c3.5 2.7 5.5 6 6.3 10Z\"\n fill=\"#4945FF\"\n />\n <rect x=\".5\" y=\".5\" width=\"87\" height=\"87\" rx=\"43.5\" stroke=\"#D9D8FF\" />\n </svg>\n </Flex>\n </Main>\n </Layouts.Root>\n );\n};\n\nexport { OfflineLayout };\n","import { Box, SingleSelectOption, SingleSelect, BoxComponent } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nconst SORT_TYPES = {\n 'name:asc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical.selected',\n defaultMessage: 'Sort by alphabetical order',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.alphabetical',\n defaultMessage: 'Alphabetical order',\n },\n },\n 'submissionDate:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.newest.selected',\n defaultMessage: 'Sort by newest',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.newest',\n defaultMessage: 'Newest',\n },\n },\n 'githubStars:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars.selected',\n defaultMessage: 'Sort by GitHub stars',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.githubStars',\n defaultMessage: 'Number of GitHub stars',\n },\n },\n 'npmDownloads:desc': {\n selected: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads.selected',\n defaultMessage: 'Sort by npm downloads',\n },\n option: {\n id: 'admin.pages.MarketPlacePage.sort.npmDownloads',\n defaultMessage: 'Number of downloads',\n },\n },\n} as const;\n\ninterface SortSelectProps {\n sortQuery: keyof typeof SORT_TYPES;\n handleSelectChange: (payload: { sort: string }) => void;\n}\n\nconst SortSelect = ({ sortQuery, handleSelectChange }: SortSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SelectWrapper>\n <SingleSelect\n value={sortQuery}\n customizeContent={() => formatMessage(SORT_TYPES[sortQuery].selected)}\n onChange={(sortName) => {\n // @ts-expect-error – in V2 design-system we'll only ever return strings.\n handleSelectChange({ sort: sortName });\n }}\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.sort.label',\n defaultMessage: 'Sort by',\n })}\n size=\"S\"\n >\n {Object.entries(SORT_TYPES).map(([sortName, messages]) => {\n return (\n <SingleSelectOption key={sortName} value={sortName}>\n {formatMessage(messages.option)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </SelectWrapper>\n );\n};\n\nconst SelectWrapper = styled<BoxComponent>(Box)`\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n span {\n font-size: ${({ theme }) => theme.fontSizes[1]};\n }\n`;\n\nexport { SortSelect };\nexport type { SortSelectProps };\n","import { useNotifyAT } from '@strapi/design-system';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { useNotification } from '../../../features/Notifications';\n\nimport type { MarketplacePageQuery, NpmPackageType, TabQuery } from '../MarketplacePage';\n\nconst MARKETPLACE_API_URL = 'https://market-api.strapi.io';\n\ninterface UseMarketplaceDataParams {\n npmPackageType: NpmPackageType;\n debouncedSearch: string;\n query?: MarketplacePageQuery;\n tabQuery: TabQuery;\n strapiVersion?: string | null;\n}\n\ntype Collections =\n | 'Verified'\n | 'Made by the community'\n | 'Made by Strapi'\n | 'Made by official partners';\n\ntype Categories = 'Custom fields' | 'Deployment' | 'Monitoring';\n\ntype FilterTypes = 'categories' | 'collections';\n\ninterface Plugin {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n submissionDate: string;\n collections: Collections[];\n categories: Categories[];\n strapiVersion: string;\n screenshots: Array<{\n url: string;\n }>;\n };\n}\n\ninterface Provider {\n id: string;\n attributes: {\n name: string;\n description: string;\n slug: string;\n npmPackageName: string;\n npmPackageUrl: string;\n npmDownloads: number;\n repositoryUrl: string;\n githubStars: number;\n pluginName: string;\n logo: {\n url: string;\n };\n developerName: string;\n validated: boolean;\n madeByStrapi: boolean;\n strapiCompatibility: string;\n strapiVersion?: never;\n submissionDate: string;\n collections: Collections[];\n };\n}\n\ninterface MarketplaceMeta {\n collections: Record<Collections, number>;\n pagination: {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n };\n}\n\ninterface MarketplaceResponse<TData extends Plugin | Provider> {\n data: TData[];\n meta: TData extends Provider\n ? MarketplaceMeta\n : MarketplaceMeta & { categories: Record<Categories, number> };\n}\n\nfunction useMarketplaceData({\n npmPackageType,\n debouncedSearch,\n query,\n tabQuery,\n strapiVersion,\n}: UseMarketplaceDataParams) {\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const marketplaceTitle = formatMessage({\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n });\n\n const notifyMarketplaceLoad = () => {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n { target: marketplaceTitle }\n )\n );\n };\n\n const paginationParams = {\n page: query?.page || 1,\n pageSize: query?.pageSize || 24,\n };\n\n const pluginParams = {\n ...tabQuery.plugin,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: pluginsResponse, status: pluginsStatus } = useQuery(\n ['marketplace', 'plugins', pluginParams],\n async () => {\n try {\n const queryString = qs.stringify(pluginParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/plugins?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace plugins.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Plugin>;\n return data;\n } catch (error) {\n // silence\n }\n\n return null;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const providerParams = {\n ...tabQuery.provider,\n pagination: paginationParams,\n search: debouncedSearch,\n version: strapiVersion,\n };\n\n const { data: providersResponse, status: providersStatus } = useQuery(\n ['marketplace', 'providers', providerParams],\n async () => {\n const queryString = qs.stringify(providerParams);\n const res = await fetch(`${MARKETPLACE_API_URL}/providers?${queryString}`);\n\n if (!res.ok) {\n throw new Error('Failed to fetch marketplace providers.');\n }\n\n const data = (await res.json()) as MarketplaceResponse<Provider>;\n\n return data;\n },\n {\n onSuccess() {\n notifyMarketplaceLoad();\n },\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n },\n }\n );\n\n const npmPackageTypeResponse = npmPackageType === 'plugin' ? pluginsResponse : providersResponse;\n\n const possibleCollections = npmPackageTypeResponse?.meta.collections ?? {};\n const possibleCategories = pluginsResponse?.meta.categories ?? {};\n\n const { pagination } = npmPackageTypeResponse?.meta ?? {};\n\n return {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n };\n}\n\nexport { useMarketplaceData };\nexport type {\n MarketplaceResponse,\n Plugin,\n Provider,\n MarketplaceMeta,\n Collections,\n Categories,\n FilterTypes,\n UseMarketplaceDataParams,\n};\n","import * as React from 'react';\n\n/**\n * For more details about this hook see:\n * https://www.30secondsofcode.org/react/s/use-navigator-on-line\n */\nexport const useNavigatorOnline = (): boolean => {\n const onlineStatus =\n typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'\n ? navigator.onLine\n : true;\n\n const [isOnline, setIsOnline] = React.useState(onlineStatus);\n\n const setOnline = () => setIsOnline(true);\n const setOffline = () => setIsOnline(false);\n\n React.useEffect(() => {\n window.addEventListener('online', setOnline);\n window.addEventListener('offline', setOffline);\n\n return () => {\n window.removeEventListener('online', setOnline);\n window.removeEventListener('offline', setOffline);\n };\n }, []);\n\n return isOnline;\n};\n","import * as React from 'react';\n\nimport { Box, Flex, Searchbar, Tabs } from '@strapi/design-system';\nimport { ExternalLink } from '@strapi/icons';\nimport { GlassesSquare } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../components/ContentBox';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { Pagination } from '../../components/Pagination';\nimport { useTypedSelector } from '../../core/store/hooks';\nimport { useAppInfo } from '../../features/AppInfo';\nimport { useNotification } from '../../features/Notifications';\nimport { useTracking } from '../../features/Tracking';\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useQueryParams } from '../../hooks/useQueryParams';\n\nimport { NpmPackagesFilters } from './components/NpmPackagesFilters';\nimport { NpmPackagesGrid } from './components/NpmPackagesGrid';\nimport { OfflineLayout } from './components/OfflineLayout';\nimport { PageHeader } from './components/PageHeader';\nimport { SortSelect, SortSelectProps } from './components/SortSelect';\nimport { FilterTypes, useMarketplaceData } from './hooks/useMarketplaceData';\nimport { useNavigatorOnline } from './hooks/useNavigatorOnline';\n\ntype NpmPackageType = 'plugin' | 'provider';\n\ninterface MarketplacePageQuery {\n collections?: string[];\n categories?: string[];\n npmPackageType?: NpmPackageType;\n page?: number;\n pageSize?: number;\n search?: string;\n sort?: SortSelectProps['sortQuery'];\n}\n\ninterface TabQuery {\n plugin: MarketplacePageQuery;\n provider: MarketplacePageQuery;\n}\n\nconst PLUGIN = 'plugin';\nconst PROVIDER = 'provider';\n\nconst MarketplacePage = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }, setQuery] = useQueryParams<MarketplacePageQuery>();\n const debouncedSearch = useDebounce(query?.search, 500) || '';\n\n const {\n autoReload: isInDevelopmentMode,\n dependencies,\n useYarn,\n strapiVersion,\n } = useAppInfo('MarketplacePage', (state) => state);\n const isOnline = useNavigatorOnline();\n\n const npmPackageType = query?.npmPackageType || PLUGIN;\n\n const [tabQuery, setTabQuery] = React.useState<TabQuery>({\n plugin: npmPackageType === PLUGIN ? { ...query } : {},\n provider: npmPackageType === PROVIDER ? { ...query } : {},\n });\n\n React.useEffect(() => {\n trackUsage('didGoToMarketplace');\n }, [trackUsage]);\n\n React.useEffect(() => {\n if (!isInDevelopmentMode) {\n toggleNotification({\n type: 'info',\n message: formatMessage({\n id: 'admin.pages.MarketPlacePage.production',\n defaultMessage: 'Manage plugins from the development environment',\n }),\n });\n }\n }, [toggleNotification, isInDevelopmentMode, formatMessage]);\n\n const {\n pluginsResponse,\n providersResponse,\n pluginsStatus,\n providersStatus,\n possibleCollections,\n possibleCategories,\n pagination,\n } = useMarketplaceData({ npmPackageType, debouncedSearch, query, tabQuery, strapiVersion });\n\n if (!isOnline) {\n return <OfflineLayout />;\n }\n\n const handleTabChange = (tab: string) => {\n const selectedTab = tab === PLUGIN || tab === PROVIDER ? tab : PLUGIN;\n\n const hasTabQuery = tabQuery[selectedTab] && Object.keys(tabQuery[selectedTab]).length;\n\n if (hasTabQuery) {\n setQuery({\n // Keep filters and search\n ...tabQuery[selectedTab],\n search: query?.search || '',\n // Set tab and reset page\n npmPackageType: selectedTab,\n page: 1,\n });\n } else {\n setQuery({\n // Set tab\n npmPackageType: selectedTab,\n // Clear filters\n collections: [],\n categories: [],\n sort: 'name:asc',\n page: 1,\n // Keep search\n search: query?.search || '',\n });\n }\n };\n\n const handleSelectChange = (update: Partial<MarketplacePageQuery>) => {\n setQuery({ ...update, page: 1 });\n setTabQuery((prev) => ({\n ...prev,\n [npmPackageType]: { ...prev[npmPackageType], ...update },\n }));\n };\n\n const handleSelectClear = (filterType: FilterTypes) => {\n setQuery({ [filterType]: [], page: undefined }, 'remove');\n setTabQuery((prev) => ({ ...prev, [npmPackageType]: {} }));\n };\n\n const handleSortSelectChange: SortSelectProps['handleSelectChange'] = ({ sort }) =>\n // @ts-expect-error - this is a narrowing issue.\n handleSelectChange({ sort });\n\n // Check if plugins and providers are installed already\n const installedPackageNames = Object.keys(dependencies ?? {});\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Page.Title>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.head',\n defaultMessage: 'Marketplace - Plugins',\n })}\n </Page.Title>\n <PageHeader isOnline={isOnline} npmPackageType={npmPackageType} />\n <Layouts.Content>\n <Tabs.Root variant=\"simple\" onValueChange={handleTabChange} value={npmPackageType}>\n <Flex justifyContent=\"space-between\" paddingBottom={4}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'admin.pages.MarketPlacePage.tab-group.label',\n defaultMessage: 'Plugins and Providers for Strapi',\n })}\n >\n <Tabs.Trigger value={PLUGIN}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.plugins',\n defaultMessage: 'Plugins',\n })}{' '}\n {pluginsResponse ? `(${pluginsResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n <Tabs.Trigger value={PROVIDER}>\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.providers',\n defaultMessage: 'Providers',\n })}{' '}\n {providersResponse ? `(${providersResponse.meta.pagination.total})` : '...'}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Box width=\"25%\">\n <Searchbar\n name=\"searchbar\"\n onClear={() => setQuery({ search: '', page: 1 })}\n value={query?.search}\n onChange={(e) => setQuery({ search: e.target.value, page: 1 })}\n clearLabel={formatMessage({\n id: 'admin.pages.MarketPlacePage.search.clear',\n defaultMessage: 'Clear the search',\n })}\n placeholder={formatMessage({\n id: 'admin.pages.MarketPlacePage.search.placeholder',\n defaultMessage: 'Search',\n })}\n >\n {formatMessage({\n id: 'admin.pages.MarketPlacePage.search.placeholder',\n defaultMessage: 'Search',\n })}\n </Searchbar>\n </Box>\n </Flex>\n <Flex paddingBottom={4} gap={2}>\n <SortSelect\n sortQuery={query?.sort || 'name:asc'}\n handleSelectChange={handleSortSelectChange}\n />\n <NpmPackagesFilters\n npmPackageType={npmPackageType}\n possibleCollections={possibleCollections}\n possibleCategories={possibleCategories}\n query={query || {}}\n handleSelectChange={handleSelectChange}\n handleSelectClear={handleSelectClear}\n />\n </Flex>\n <Tabs.Content value={PLUGIN}>\n <NpmPackagesGrid\n npmPackages={pluginsResponse?.data}\n status={pluginsStatus}\n installedPackageNames={installedPackageNames}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType=\"plugin\"\n strapiAppVersion={strapiVersion}\n debouncedSearch={debouncedSearch}\n />\n </Tabs.Content>\n <Tabs.Content value={PROVIDER}>\n <NpmPackagesGrid\n npmPackages={providersResponse?.data}\n status={providersStatus}\n installedPackageNames={installedPackageNames}\n useYarn={useYarn}\n isInDevelopmentMode={isInDevelopmentMode}\n npmPackageType=\"provider\"\n debouncedSearch={debouncedSearch}\n />\n </Tabs.Content>\n <Pagination.Root {...pagination} defaultPageSize={24}>\n <Pagination.PageSize options={['12', '24', '50', '100']} />\n <Pagination.Links />\n </Pagination.Root>\n <Box paddingTop={8}>\n <a\n href=\"https://strapi.canny.io/plugin-requests\"\n target=\"_blank\"\n rel=\"noopener noreferrer nofollow\"\n style={{ textDecoration: 'none' }}\n onClick={() => trackUsage('didMissMarketplacePlugin')}\n >\n <ContentBox\n title={formatMessage({\n id: 'admin.pages.MarketPlacePage.missingPlugin.title',\n defaultMessage: 'Documentation',\n })}\n subtitle={formatMessage({\n id: 'admin.pages.MarketPlacePage.missingPlugin.description',\n defaultMessage:\n \"Tell us what plugin you are looking for and we'll let our community plugin developers know in case they are in search for inspiration!\",\n })}\n icon={<GlassesSquare />}\n iconBackground=\"alternative100\"\n endAction={\n <ExternalLink\n fill=\"neutral600\"\n width=\"1.2rem\"\n height=\"1.2rem\"\n style={{ marginLeft: '0.8rem' }}\n />\n }\n />\n </a>\n </Box>\n </Tabs.Root>\n </Layouts.Content>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nconst ProtectedMarketplacePage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.marketplace?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <MarketplacePage />\n </Page.Protect>\n );\n};\n\nexport { MarketplacePage, ProtectedMarketplacePage };\nexport type { NpmPackageType, MarketplacePageQuery, TabQuery };\n"],"names":["React","useIntl","jsxs","Popover","jsx","Button","Filter","Flex","Box","Tag","Cross","MultiSelect","MultiSelectOption","styled","Typography","useTracking","pluralize","semver","Tooltip","CheckCircle","StrapiLogo","LinkButton","ExternalLink","useNotification","useClipboard","Check","Duplicate","Fragment","GitHub","Star","Download","Divider","Page","Layouts","EmptyDocuments","Grid","Upload","Main","SingleSelect","SingleSelectOption","useNotifyAT","useQuery","qs","useQueryParams","useAppInfo","Tabs","Searchbar","Pagination","ContentBox","GlassesSquare","useTypedSelector"],"mappings":"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"}
|