@strapi/admin 5.0.0-beta.14 → 5.0.0-beta.16
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-bN561B3v.js → AdminSeatInfo--6CF5KmZ.js} +3 -3
- package/dist/admin/{AdminSeatInfo-bN561B3v.js.map → AdminSeatInfo--6CF5KmZ.js.map} +1 -1
- package/dist/admin/{AdminSeatInfo-88MFOtJf.mjs → AdminSeatInfo-qof08cHD.mjs} +3 -3
- package/dist/admin/{AdminSeatInfo-88MFOtJf.mjs.map → AdminSeatInfo-qof08cHD.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-wbM7lUA1.mjs → ApplicationInfoPage-7KPzyZX-.mjs} +102 -87
- package/dist/admin/ApplicationInfoPage-7KPzyZX-.mjs.map +1 -0
- package/dist/admin/{ApplicationInfoPage-xNNMcZi9.js → ApplicationInfoPage-7OmisqKU.js} +102 -87
- package/dist/admin/ApplicationInfoPage-7OmisqKU.js.map +1 -0
- package/dist/admin/{AuthResponse-PxLid1A-.js → AuthResponse-LGLqHDJ8.js} +9 -5
- package/dist/admin/AuthResponse-LGLqHDJ8.js.map +1 -0
- package/dist/admin/{AuthResponse-pxi-Fo2T.mjs → AuthResponse-w9sLaK77.mjs} +9 -5
- package/dist/admin/AuthResponse-w9sLaK77.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-OYxkbi9J.js → AuthenticatedLayout-a4QO4f2R.js} +16 -13
- package/dist/admin/{AuthenticatedLayout-OYxkbi9J.js.map → AuthenticatedLayout-a4QO4f2R.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-sfukig9h.mjs → AuthenticatedLayout-aqNxYphH.mjs} +16 -13
- package/dist/admin/{AuthenticatedLayout-sfukig9h.mjs.map → AuthenticatedLayout-aqNxYphH.mjs.map} +1 -1
- package/dist/admin/{CreatePage-wIEUvVoT.mjs → CreatePage-BGjnH82B.mjs} +8 -9
- package/dist/admin/CreatePage-BGjnH82B.mjs.map +1 -0
- package/dist/admin/{CreatePage-5iwkDlyg.js → CreatePage-iSGC18gN.js} +3 -3
- package/dist/admin/{CreatePage-5iwkDlyg.js.map → CreatePage-iSGC18gN.js.map} +1 -1
- package/dist/admin/{CreatePage-HR-X4o8O.mjs → CreatePage-rzPvQ7ae.mjs} +3 -3
- package/dist/admin/{CreatePage-HR-X4o8O.mjs.map → CreatePage-rzPvQ7ae.mjs.map} +1 -1
- package/dist/admin/{CreatePage-w05sR-tr.js → CreatePage-xWsNDYvx.js} +7 -8
- package/dist/admin/CreatePage-xWsNDYvx.js.map +1 -0
- package/dist/admin/{CreateView-CBKxYeXK.mjs → CreateView-0WQg_fQZ.mjs} +3 -3
- package/dist/admin/{CreateView-CBKxYeXK.mjs.map → CreateView-0WQg_fQZ.mjs.map} +1 -1
- package/dist/admin/{CreateView-_61QqZgM.js → CreateView-9QlN4b17.js} +3 -3
- package/dist/admin/{CreateView-_61QqZgM.js.map → CreateView-9QlN4b17.js.map} +1 -1
- package/dist/admin/{CreateView-XYAPG5p4.js → CreateView-oFEGIOMA.js} +3 -3
- package/dist/admin/{CreateView-XYAPG5p4.js.map → CreateView-oFEGIOMA.js.map} +1 -1
- package/dist/admin/{CreateView-oVQplM-A.mjs → CreateView-vCM4rnNp.mjs} +3 -3
- package/dist/admin/{CreateView-oVQplM-A.mjs.map → CreateView-vCM4rnNp.mjs.map} +1 -1
- package/dist/admin/{EditPage-YTX5vPhf.js → EditPage-DZ2RTmjX.js} +7 -7
- package/dist/admin/EditPage-DZ2RTmjX.js.map +1 -0
- package/dist/admin/{EditPage-azTfLOy9.js → EditPage-HUIlXspE.js} +5 -5
- package/dist/admin/{EditPage-azTfLOy9.js.map → EditPage-HUIlXspE.js.map} +1 -1
- package/dist/admin/{EditPage-sJIiBC0u.mjs → EditPage-JbHTkqIB.mjs} +7 -7
- package/dist/admin/EditPage-JbHTkqIB.mjs.map +1 -0
- package/dist/admin/{EditPage-QmWK5wLi.mjs → EditPage-_qf6gtWs.mjs} +9 -8
- package/dist/admin/{EditPage-QmWK5wLi.mjs.map → EditPage-_qf6gtWs.mjs.map} +1 -1
- package/dist/admin/{EditPage-wLLM8f2f.js → EditPage-ak7v8O1J.js} +9 -8
- package/dist/admin/{EditPage-wLLM8f2f.js.map → EditPage-ak7v8O1J.js.map} +1 -1
- package/dist/admin/{EditPage-ZDNie54Y.mjs → EditPage-h4bLbsiC.mjs} +5 -5
- package/dist/admin/{EditPage-ZDNie54Y.mjs.map → EditPage-h4bLbsiC.mjs.map} +1 -1
- package/dist/admin/{EditView-1-JFc3uR.js → EditView-5jYdR19u.js} +4 -4
- package/dist/admin/{EditView-1-JFc3uR.js.map → EditView-5jYdR19u.js.map} +1 -1
- package/dist/admin/{EditView-1xLnZamy.mjs → EditView-8FHw8DOi.mjs} +4 -4
- package/dist/admin/{EditView-1xLnZamy.mjs.map → EditView-8FHw8DOi.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-Swq1Yta9.mjs → EditViewPage-6X0T10v1.mjs} +8 -7
- package/dist/admin/EditViewPage-6X0T10v1.mjs.map +1 -0
- package/dist/admin/{EditViewPage-BDKPoyIy.js → EditViewPage-NHbqLrW5.js} +8 -7
- package/dist/admin/EditViewPage-NHbqLrW5.js.map +1 -0
- package/dist/admin/{EventsTable-Jpg8f7d8.mjs → EventsTable-gYl-pCF9.mjs} +2 -2
- package/dist/admin/{EventsTable-Jpg8f7d8.mjs.map → EventsTable-gYl-pCF9.mjs.map} +1 -1
- package/dist/admin/{EventsTable-_Q772Mht.js → EventsTable-ysizwU05.js} +2 -2
- package/dist/admin/{EventsTable-_Q772Mht.js.map → EventsTable-ysizwU05.js.map} +1 -1
- package/dist/admin/{HomePage-03CDfbwR.js → HomePage--pHk_B3A.js} +3 -3
- package/dist/admin/{HomePage-03CDfbwR.js.map → HomePage--pHk_B3A.js.map} +1 -1
- package/dist/admin/{HomePage-BLhvGztr.js → HomePage-IzN9roUV.js} +4 -4
- package/dist/admin/{HomePage-BLhvGztr.js.map → HomePage-IzN9roUV.js.map} +1 -1
- package/dist/admin/{HomePage-8r_eQl5-.mjs → HomePage-XJXSYYwD.mjs} +4 -4
- package/dist/admin/{HomePage-8r_eQl5-.mjs.map → HomePage-XJXSYYwD.mjs.map} +1 -1
- package/dist/admin/{HomePage-CitC_zyC.mjs → HomePage-ZslCfH_4.mjs} +3 -3
- package/dist/admin/{HomePage-CitC_zyC.mjs.map → HomePage-ZslCfH_4.mjs.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-0-3jg-QA.mjs → InstalledPluginsPage-aVU8nvIH.mjs} +4 -4
- package/dist/admin/{InstalledPluginsPage-0-3jg-QA.mjs.map → InstalledPluginsPage-aVU8nvIH.mjs.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-4wGljedn.js → InstalledPluginsPage-sOBZcaYE.js} +4 -4
- package/dist/admin/{InstalledPluginsPage-4wGljedn.js.map → InstalledPluginsPage-sOBZcaYE.js.map} +1 -1
- package/dist/admin/{Layout-9uved2Bb.js → Layout-E2k-GMSH.js} +5 -5
- package/dist/admin/{Layout-9uved2Bb.js.map → Layout-E2k-GMSH.js.map} +1 -1
- package/dist/admin/{Layout-qATi5QbL.mjs → Layout-uWnmGiwe.mjs} +5 -5
- package/dist/admin/{Layout-qATi5QbL.mjs.map → Layout-uWnmGiwe.mjs.map} +1 -1
- package/dist/admin/{ListPage-man6fhdQ.js → ListPage-24lGH9Qz.js} +4 -4
- package/dist/admin/{ListPage-man6fhdQ.js.map → ListPage-24lGH9Qz.js.map} +1 -1
- package/dist/admin/{ListPage-nltl67SB.js → ListPage-901sitz-.js} +19 -15
- package/dist/admin/ListPage-901sitz-.js.map +1 -0
- package/dist/admin/{ListPage-1vSH-0tL.mjs → ListPage-Fk--jjUO.mjs} +4 -4
- package/dist/admin/{ListPage-1vSH-0tL.mjs.map → ListPage-Fk--jjUO.mjs.map} +1 -1
- package/dist/admin/{ListPage-iAFAGaPV.js → ListPage-IjiklzlN.js} +3 -3
- package/dist/admin/{ListPage-iAFAGaPV.js.map → ListPage-IjiklzlN.js.map} +1 -1
- package/dist/admin/{ListPage-IWfd9RMp.mjs → ListPage-LZh46JzH.mjs} +3 -3
- package/dist/admin/{ListPage-IWfd9RMp.mjs.map → ListPage-LZh46JzH.mjs.map} +1 -1
- package/dist/admin/{ListPage-KWjrKqby.js → ListPage-SomiQrLq.js} +5 -5
- package/dist/admin/{ListPage-KWjrKqby.js.map → ListPage-SomiQrLq.js.map} +1 -1
- package/dist/admin/{ListPage-O4MoV8Bq.mjs → ListPage-TFJDRhqk.mjs} +3 -3
- package/dist/admin/{ListPage-O4MoV8Bq.mjs.map → ListPage-TFJDRhqk.mjs.map} +1 -1
- package/dist/admin/{ListPage-BHmEVvOx.js → ListPage-htBIA-qN.js} +3 -3
- package/dist/admin/{ListPage-BHmEVvOx.js.map → ListPage-htBIA-qN.js.map} +1 -1
- package/dist/admin/{ListPage-YKB_zcjy.mjs → ListPage-ng57DLN1.mjs} +5 -5
- package/dist/admin/{ListPage-YKB_zcjy.mjs.map → ListPage-ng57DLN1.mjs.map} +1 -1
- package/dist/admin/{ListPage-JkbzV3H0.mjs → ListPage-sOKYT2xY.mjs} +20 -16
- package/dist/admin/ListPage-sOKYT2xY.mjs.map +1 -0
- package/dist/admin/{ListView-EnLlNZo9.mjs → ListView-_6sz5Ios.mjs} +4 -4
- package/dist/admin/{ListView-EnLlNZo9.mjs.map → ListView-_6sz5Ios.mjs.map} +1 -1
- package/dist/admin/{ListView-5P2kUAuu.js → ListView-hIfAzokC.js} +4 -4
- package/dist/admin/{ListView-5P2kUAuu.js.map → ListView-hIfAzokC.js.map} +1 -1
- package/dist/admin/{ListView-jegQTO3T.js → ListView-mNqhUwTp.js} +4 -4
- package/dist/admin/{ListView-jegQTO3T.js.map → ListView-mNqhUwTp.js.map} +1 -1
- package/dist/admin/{ListView-yM90pzvE.mjs → ListView-n5_FFcEb.mjs} +4 -4
- package/dist/admin/{ListView-yM90pzvE.mjs.map → ListView-n5_FFcEb.mjs.map} +1 -1
- package/dist/admin/{Login-MvCT693q.js → Login-0_8g2Rk7.js} +3 -3
- package/dist/admin/{Login-MvCT693q.js.map → Login-0_8g2Rk7.js.map} +1 -1
- package/dist/admin/{Login-_xZOQXkQ.mjs → Login-RavDpZGV.mjs} +3 -3
- package/dist/admin/{Login-_xZOQXkQ.mjs.map → Login-RavDpZGV.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-RzDXADSQ.js → MagicLinkEE-5HcR72Be.js} +3 -3
- package/dist/admin/{MagicLinkEE-RzDXADSQ.js.map → MagicLinkEE-5HcR72Be.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-vxadXP8z.mjs → MagicLinkEE-OTLJbbRm.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-vxadXP8z.mjs.map → MagicLinkEE-OTLJbbRm.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-kb5_FJJA.mjs → MarketplacePage-4ofrjo-D.mjs} +3 -3
- package/dist/admin/{MarketplacePage-kb5_FJJA.mjs.map → MarketplacePage-4ofrjo-D.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-QLNjMmn-.js → MarketplacePage-wYC6JG-k.js} +3 -3
- package/dist/admin/{MarketplacePage-QLNjMmn-.js.map → MarketplacePage-wYC6JG-k.js.map} +1 -1
- package/dist/admin/{Permissions-ZJfz77Ys.mjs → Permissions-7t-Lns0S.mjs} +124 -92
- package/dist/admin/Permissions-7t-Lns0S.mjs.map +1 -0
- package/dist/admin/{Permissions-d8-I2wcO.js → Permissions-qgk7SdYP.js} +124 -92
- package/dist/admin/Permissions-qgk7SdYP.js.map +1 -0
- package/dist/admin/{PrivateRoute-nUWu4Q7I.mjs → PrivateRoute-7NWp-Izz.mjs} +2 -2
- package/dist/admin/{PrivateRoute-nUWu4Q7I.mjs.map → PrivateRoute-7NWp-Izz.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-SKQvazOx.js → PrivateRoute-DmuSS2Sg.js} +2 -2
- package/dist/admin/{PrivateRoute-SKQvazOx.js.map → PrivateRoute-DmuSS2Sg.js.map} +1 -1
- package/dist/admin/{ProfilePage-ayp8uhe5.mjs → ProfilePage-MpmLSqmz.mjs} +4 -4
- package/dist/admin/{ProfilePage-ayp8uhe5.mjs.map → ProfilePage-MpmLSqmz.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-re3qYdaQ.js → ProfilePage-o2rknWPE.js} +4 -4
- package/dist/admin/{ProfilePage-re3qYdaQ.js.map → ProfilePage-o2rknWPE.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-k6UN3jqJ.js → PurchaseAuditLogs-4NkZKJpj.js} +2 -2
- package/dist/admin/{PurchaseAuditLogs-k6UN3jqJ.js.map → PurchaseAuditLogs-4NkZKJpj.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-Whcj8VHz.mjs → PurchaseAuditLogs-f9QiYMKE.mjs} +2 -2
- package/dist/admin/{PurchaseAuditLogs-Whcj8VHz.mjs.map → PurchaseAuditLogs-f9QiYMKE.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-912fzYBP.mjs → PurchaseSingleSignOn-JC0Yqkwq.mjs} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-912fzYBP.mjs.map → PurchaseSingleSignOn-JC0Yqkwq.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-LbDVmYRg.js → PurchaseSingleSignOn-savndqqq.js} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-LbDVmYRg.js.map → PurchaseSingleSignOn-savndqqq.js.map} +1 -1
- package/dist/admin/{SelectRoles-2Wg-lV_P.js → SelectRoles-BIE-2KnO.js} +4 -4
- package/dist/admin/{SelectRoles-2Wg-lV_P.js.map → SelectRoles-BIE-2KnO.js.map} +1 -1
- package/dist/admin/{SelectRoles-QBFFeBbK.mjs → SelectRoles-OQ2aeVdM.mjs} +4 -4
- package/dist/admin/{SelectRoles-QBFFeBbK.mjs.map → SelectRoles-OQ2aeVdM.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-vu0ozC6a.js → SingleSignOnPage-YJSSvlcS.js} +4 -4
- package/dist/admin/{SingleSignOnPage-vu0ozC6a.js.map → SingleSignOnPage-YJSSvlcS.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-8H9BXwum.mjs → SingleSignOnPage-g2us1854.mjs} +4 -4
- package/dist/admin/{SingleSignOnPage-8H9BXwum.mjs.map → SingleSignOnPage-g2us1854.mjs.map} +1 -1
- package/dist/admin/{Table-X7w_HVaN.js → Table-e2qth8Ii.js} +3 -3
- package/dist/admin/{Table-X7w_HVaN.js.map → Table-e2qth8Ii.js.map} +1 -1
- package/dist/admin/{Table-ue-m7HWb.mjs → Table-s2jnmbZ5.mjs} +3 -3
- package/dist/admin/{Table-ue-m7HWb.mjs.map → Table-s2jnmbZ5.mjs.map} +1 -1
- package/dist/admin/{Theme-QO8ntQqL.js → Theme-KfX2lO_d.js} +73 -51
- package/dist/admin/Theme-KfX2lO_d.js.map +1 -0
- package/dist/admin/{Theme-vNSAMTAv.mjs → Theme-PSeDjw5h.mjs} +71 -52
- package/dist/admin/Theme-PSeDjw5h.mjs.map +1 -0
- package/dist/admin/{TokenTypeSelect-Loy-xbd7.js → TokenTypeSelect-K7qWjM3D.js} +3 -3
- package/dist/admin/{TokenTypeSelect-Loy-xbd7.js.map → TokenTypeSelect-K7qWjM3D.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-Fkk_8lR1.mjs → TokenTypeSelect-yb2HCSAC.mjs} +3 -3
- package/dist/admin/{TokenTypeSelect-Fkk_8lR1.mjs.map → TokenTypeSelect-yb2HCSAC.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-JfWTrvVI.js → UseCasePage-bligWS9U.js} +4 -4
- package/dist/admin/{UseCasePage-JfWTrvVI.js.map → UseCasePage-bligWS9U.js.map} +1 -1
- package/dist/admin/{UseCasePage-coK2qEQ8.mjs → UseCasePage-rTlZa08q.mjs} +4 -4
- package/dist/admin/{UseCasePage-coK2qEQ8.mjs.map → UseCasePage-rTlZa08q.mjs.map} +1 -1
- package/dist/admin/{constants-dII8qFln.js → constants-eyTM8z_-.js} +3 -3
- package/dist/admin/{constants-dII8qFln.js.map → constants-eyTM8z_-.js.map} +1 -1
- package/dist/admin/{constants-ju1heEre.mjs → constants-pAKoJYRR.mjs} +3 -3
- package/dist/admin/{constants-ju1heEre.mjs.map → constants-pAKoJYRR.mjs.map} +1 -1
- package/dist/admin/{index-YkJQv7zr.mjs → index-3zwKJbP6.mjs} +67 -49
- package/dist/admin/index-3zwKJbP6.mjs.map +1 -0
- package/dist/admin/{index-PMooPfic.js → index-dEjaesKw.js} +66 -48
- package/dist/admin/index-dEjaesKw.js.map +1 -0
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.mjs +2 -2
- package/dist/admin/{selectors-RspXIUtJ.js → selectors-a5J4vc0Q.js} +2 -2
- package/dist/admin/{selectors-RspXIUtJ.js.map → selectors-a5J4vc0Q.js.map} +1 -1
- package/dist/admin/{selectors-jiFpk43E.mjs → selectors-hDBXHrNC.mjs} +2 -2
- package/dist/admin/{selectors-jiFpk43E.mjs.map → selectors-hDBXHrNC.mjs.map} +1 -1
- package/dist/admin/src/features/Auth.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +0 -6
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +2 -1
- package/dist/admin/src/reducer.d.ts +7 -2
- package/dist/admin/test.js +10 -9
- package/dist/admin/test.js.map +1 -1
- package/dist/admin/test.mjs +10 -9
- package/dist/admin/test.mjs.map +1 -1
- package/dist/admin/tests/store.d.ts +2 -1
- package/dist/admin/tests/utils.d.ts +2 -1
- package/dist/admin/{useAdminRoles-7-wc0xzd.js → useAdminRoles-67b27Ofl.js} +2 -2
- package/dist/admin/{useAdminRoles-7-wc0xzd.js.map → useAdminRoles-67b27Ofl.js.map} +1 -1
- package/dist/admin/{useAdminRoles-UsV_fhnq.mjs → useAdminRoles-zfTuIZ-u.mjs} +2 -2
- package/dist/admin/{useAdminRoles-UsV_fhnq.mjs.map → useAdminRoles-zfTuIZ-u.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-ZwMojvCa.js → useLicenseLimitNotification-Cb2QXH60.js} +2 -2
- package/dist/admin/{useLicenseLimitNotification-ZwMojvCa.js.map → useLicenseLimitNotification-Cb2QXH60.js.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-Nh_v-hN2.mjs → useLicenseLimitNotification-KZDZu_7z.mjs} +2 -2
- package/dist/admin/{useLicenseLimitNotification-Nh_v-hN2.mjs.map → useLicenseLimitNotification-KZDZu_7z.mjs.map} +1 -1
- package/dist/admin/{useWebhooks-opYGugiT.js → useWebhooks-0RUEkKAV.js} +4 -4
- package/dist/admin/{useWebhooks-opYGugiT.js.map → useWebhooks-0RUEkKAV.js.map} +1 -1
- package/dist/admin/{useWebhooks-bgdpL7W6.mjs → useWebhooks-7thg-d57.mjs} +4 -4
- package/dist/admin/{useWebhooks-bgdpL7W6.mjs.map → useWebhooks-7thg-d57.mjs.map} +1 -1
- package/dist/admin/{validation-GmkrMIwS.js → validation-AbOmGVzv.js} +2 -2
- package/dist/admin/{validation-GmkrMIwS.js.map → validation-AbOmGVzv.js.map} +1 -1
- package/dist/admin/{validation-b8AaACO4.mjs → validation-iHh54434.mjs} +2 -2
- package/dist/admin/{validation-b8AaACO4.mjs.map → validation-iHh54434.mjs.map} +1 -1
- package/dist/package.json.d.ts +10 -7
- package/dist/server/index.js +20 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +18 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
- package/package.json +11 -8
- package/dist/admin/ApplicationInfoPage-wbM7lUA1.mjs.map +0 -1
- package/dist/admin/ApplicationInfoPage-xNNMcZi9.js.map +0 -1
- package/dist/admin/AuthResponse-PxLid1A-.js.map +0 -1
- package/dist/admin/AuthResponse-pxi-Fo2T.mjs.map +0 -1
- package/dist/admin/CreatePage-w05sR-tr.js.map +0 -1
- package/dist/admin/CreatePage-wIEUvVoT.mjs.map +0 -1
- package/dist/admin/EditPage-YTX5vPhf.js.map +0 -1
- package/dist/admin/EditPage-sJIiBC0u.mjs.map +0 -1
- package/dist/admin/EditViewPage-BDKPoyIy.js.map +0 -1
- package/dist/admin/EditViewPage-Swq1Yta9.mjs.map +0 -1
- package/dist/admin/ListPage-JkbzV3H0.mjs.map +0 -1
- package/dist/admin/ListPage-nltl67SB.js.map +0 -1
- package/dist/admin/Permissions-ZJfz77Ys.mjs.map +0 -1
- package/dist/admin/Permissions-d8-I2wcO.js.map +0 -1
- package/dist/admin/Theme-QO8ntQqL.js.map +0 -1
- package/dist/admin/Theme-vNSAMTAv.mjs.map +0 -1
- package/dist/admin/index-PMooPfic.js.map +0 -1
- package/dist/admin/index-YkJQv7zr.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage-sJIiBC0u.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 use 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 key={field.name} col={size}>\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}>\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":"EditViewPage-BDKPoyIy.js","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n <Grid.Item key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n","import { Accordion, Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollapsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n return (\n <Box padding={4} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n {...props}\n />\n ))}\n </Accordion.Root>\n </Box>\n );\n};\n","import { Flex, Grid, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <Grid.Item col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </Grid.Item>\n <ActionBoundRoutes />\n </Grid.Root>\n );\n};\n","import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../../components/GuidedTour/Provider';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const setCurrentStep = useGuidedTour('EditView', (state) => state.setCurrentStep);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useMatch('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0' ? parseInt(body.lifespan.toString(), 10) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n navigate(`../api-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["adminApi","createContext","jsx","useIntl","Box","Flex","Typography","jsxs","Grid","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","styled","tail","css","Accordion","capitalize","Checkbox","Cog","yup","translatedErrors","produce","pull","useNotification","useLocation","useTypedSelector","state","React","useTracking","useGuidedTour","useRBAC","useMatch","useAPIErrorHandler","useNavigate","API_TOKEN_TYPE","useGetAPITokenQuery","useCreateAPITokenMutation","useUpdateAPITokenMutation","isBaseQueryError","Page","Formik","Form","FormHead","Layouts","TokenBox"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditViewPage-Swq1Yta9.mjs","sources":["../../admin/src/services/contentApi.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.tsx","../../admin/src/pages/Settings/pages/ApiTokens/EditView/constants.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import { adminApi } from './api';\n\nimport type { List as ListContentApiPermissions } from '../../../shared/contracts/content-api/permissions';\nimport type { List as ListContentApiRoutes } from '../../../shared/contracts/content-api/routes';\n\nconst contentApiService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getPermissions: builder.query<ListContentApiPermissions.Response['data'], void>({\n query: () => '/admin/content-api/permissions',\n transformResponse: (response: ListContentApiPermissions.Response) => response.data,\n }),\n getRoutes: builder.query<ListContentApiRoutes.Response['data'], void>({\n query: () => '/admin/content-api/routes',\n transformResponse: (response: ListContentApiRoutes.Response) => response.data,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetPermissionsQuery, useGetRoutesQuery } = contentApiService;\n\nexport { useGetPermissionsQuery, useGetRoutesQuery };\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { List as ListContentApiPermissions } from '../../../../../../../shared/contracts/content-api/permissions';\nimport { List as ListContentApiRoutes } from '../../../../../../../shared/contracts/content-api/routes';\n\nexport interface PseudoEvent {\n target: { value: string };\n}\n\ninterface ApiTokenPermissionsContextValue {\n value: {\n selectedAction: string | null;\n routes: ListContentApiRoutes.Response['data'];\n selectedActions: string[];\n data: {\n allActionsIds: string[];\n permissions: ListContentApiPermissions.Response['data'][];\n };\n onChange: ({ target: { value } }: PseudoEvent) => void;\n onChangeSelectAll: ({\n target: { value },\n }: {\n target: { value: { action: string; actionId: string }[] };\n }) => void;\n setSelectedAction: ({ target: { value } }: PseudoEvent) => void;\n };\n}\n\ninterface ApiTokenPermissionsContextProviderProps extends ApiTokenPermissionsContextValue {\n children: React.ReactNode | React.ReactNode[];\n}\n\nconst [ApiTokenPermissionsContextProvider, useApiTokenPermissionsContext] =\n createContext<ApiTokenPermissionsContextValue>('ApiTokenPermissionsContext');\n\nconst ApiTokenPermissionsProvider = ({\n children,\n ...rest\n}: ApiTokenPermissionsContextProviderProps) => {\n return (\n <ApiTokenPermissionsContextProvider {...rest}>{children}</ApiTokenPermissionsContextProvider>\n );\n};\n\nconst useApiTokenPermissions = () => useApiTokenPermissionsContext('useApiTokenPermissions');\n\nexport { ApiTokenPermissionsProvider, useApiTokenPermissions };\nexport type { ApiTokenPermissionsContextValue, ApiTokenPermissionsContextProviderProps };\n","import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput';\nimport { TokenDescription } from '../../../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect';\n\nimport type { ApiToken } from '../../../../../../../../shared/contracts/api-token';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n onDispatch: React.Dispatch<any>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12}>\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12}>\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12}>\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n <Grid.Item key=\"type\" col={6} xs={12}>\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n handleChangeSelectApiTokenType({ target: { value } });\n\n // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2\n onChange({ target: { name: 'type', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n","import React from 'react';\n\nimport { Box, BoxComponent, Flex, Typography } from '@strapi/design-system';\nimport map from 'lodash/map';\nimport tail from 'lodash/tail';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\ntype HttpVerb = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\ntype MethodColor = {\n text: keyof DefaultTheme['colors'];\n border: keyof DefaultTheme['colors'];\n background: keyof DefaultTheme['colors'];\n};\n\nconst getMethodColor = (verb: HttpVerb): MethodColor => {\n switch (verb) {\n case 'POST': {\n return {\n text: 'success600',\n border: 'success200',\n background: 'success100',\n };\n }\n case 'GET': {\n return {\n text: 'secondary600',\n border: 'secondary200',\n background: 'secondary100',\n };\n }\n case 'PUT': {\n return {\n text: 'warning600',\n border: 'warning200',\n background: 'warning100',\n };\n }\n case 'DELETE': {\n return {\n text: 'danger600',\n border: 'danger200',\n background: 'danger100',\n };\n }\n default: {\n return {\n text: 'neutral600',\n border: 'neutral200',\n background: 'neutral100',\n };\n }\n }\n};\n\nconst MethodBox = styled<BoxComponent>(Box)`\n margin: -1px;\n border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};\n`;\n\ninterface BoundRouteProps {\n route: {\n handler: string;\n method: HttpVerb;\n path: string;\n };\n}\n\nexport const BoundRoute = ({\n route = {\n handler: 'Nocontroller.error',\n method: 'GET',\n path: '/there-is-no-path',\n },\n}: BoundRouteProps) => {\n const { formatMessage } = useIntl();\n\n const { method, handler: title, path } = route;\n const formattedRoute = path ? tail(path.split('/')) : [];\n const [controller = '', action = ''] = title ? title.split('.') : [];\n const colors = getMethodColor(route.method);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.BoundRoute.title',\n defaultMessage: 'Bound route to',\n })}\n \n <span>{controller}</span>\n <Typography variant=\"delta\" textColor=\"primary600\">\n .{action}\n </Typography>\n </Typography>\n <Flex hasRadius background=\"neutral0\" borderColor=\"neutral200\" gap={0}>\n <MethodBox background={colors.background} borderColor={colors.border} padding={2}>\n <Typography fontWeight=\"bold\" textColor={colors.text}>\n {method}\n </Typography>\n </MethodBox>\n <Box paddingLeft={2} paddingRight={2}>\n {map(formattedRoute, (value) => (\n <Typography key={value} textColor={value.includes(':') ? 'neutral600' : 'neutral900'}>\n /{value}\n </Typography>\n ))}\n </Box>\n </Flex>\n </Flex>\n );\n};\n","import { Grid, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { BoundRoute } from './BoundRoute';\n\nexport const ActionBoundRoutes = () => {\n const {\n value: { selectedAction, routes },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n const actionSection = selectedAction?.split('.')[0];\n\n return (\n <Grid.Item\n col={5}\n background=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n style={{ minHeight: '100%' }}\n >\n {selectedAction ? (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {actionSection &&\n actionSection in routes &&\n routes[actionSection].map((route) => {\n return route.config.auth?.scope?.includes(selectedAction) ||\n route.handler === selectedAction ? (\n <BoundRoute key={route.handler} route={route} />\n ) : null;\n })}\n </Flex>\n ) : (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.title',\n defaultMessage: 'Advanced settings',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.header.hint',\n defaultMessage:\n \"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route\",\n })}\n </Typography>\n </Flex>\n )}\n </Grid.Item>\n );\n};\n","import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Typography,\n} from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport capitalize from 'lodash/capitalize';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nconst activeCheckboxWrapperStyles = css`\n background: ${(props) => props.theme.colors.primary100};\n svg {\n opacity: 1;\n }\n`;\n\nconst CheckboxWrapper = styled<BoxComponent>(Box)<{ $isActive: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n opacity: 0;\n path {\n fill: ${(props) => props.theme.colors.primary600};\n }\n }\n\n /* Show active style both on hover and when the action is selected */\n ${(props) => props.$isActive && activeCheckboxWrapperStyles}\n &:hover {\n ${activeCheckboxWrapperStyles}\n }\n`;\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsableContentTypeProps {\n controllers?: ContentApiPermission['controllers'];\n label: ContentApiPermission['label'];\n orderNumber?: number;\n disabled?: boolean;\n}\n\nexport const CollapsableContentType = ({\n controllers = [],\n label,\n orderNumber = 0,\n disabled = false,\n}: CollapsableContentTypeProps) => {\n const {\n value: { onChangeSelectAll, onChange, selectedActions, setSelectedAction, selectedAction },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n const isActionSelected = (actionId: string) => actionId === selectedAction;\n\n return (\n <Accordion.Item value={`${label}-${orderNumber}`}>\n <Accordion.Header variant={orderNumber % 2 ? 'primary' : 'secondary'}>\n <Accordion.Trigger>{capitalize(label)}</Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n {controllers?.map((controller) => {\n const allActionsSelected = controller.actions.every((action) =>\n selectedActions.includes(action.actionId)\n );\n\n const someActionsSelected = controller.actions.some((action) =>\n selectedActions.includes(action.actionId)\n );\n\n return (\n <Box key={`${label}.${controller?.controller}`}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {controller?.controller}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n checked={\n !allActionsSelected && someActionsSelected\n ? 'indeterminate'\n : allActionsSelected\n }\n onCheckedChange={() => {\n onChangeSelectAll({ target: { value: [...controller.actions] } });\n }}\n disabled={disabled}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Grid.Root gap={4} padding={4}>\n {controller?.actions &&\n controller?.actions.map((action) => {\n return (\n <Grid.Item col={6} key={action.actionId}>\n <CheckboxWrapper\n $isActive={isActionSelected(action.actionId)}\n padding={2}\n hasRadius\n >\n <Checkbox\n checked={selectedActions.includes(action.actionId)}\n name={action.actionId}\n onCheckedChange={() => {\n onChange({ target: { value: action.actionId } });\n }}\n disabled={disabled}\n >\n {action.action}\n </Checkbox>\n <button\n type=\"button\"\n data-testid=\"action-cog\"\n onClick={() =>\n setSelectedAction({ target: { value: action.actionId } })\n }\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Cog />\n </button>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n","import { Accordion, Box } from '@strapi/design-system';\n\nimport { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\nimport { CollapsableContentType } from './CollapsableContentType';\n\ninterface ContentTypesSectionProps {\n section: ContentApiPermission[] | null;\n}\n\nexport const ContentTypesSection = ({ section = null, ...props }: ContentTypesSectionProps) => {\n return (\n <Box padding={4} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {section &&\n section.map((api, index) => (\n <CollapsableContentType\n key={api.apiId}\n label={api.label}\n controllers={api.controllers}\n orderNumber={index}\n {...props}\n />\n ))}\n </Accordion.Root>\n </Box>\n );\n};\n","import { Flex, Grid, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useApiTokenPermissions } from '../apiTokenPermissions';\n\nimport { ActionBoundRoutes } from './ActionBoundRoutes';\nimport { ContentTypesSection } from './ContentTypesSection';\n\nexport const Permissions = ({ ...props }) => {\n const {\n value: { data },\n } = useApiTokenPermissions();\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root gap={0} shadow=\"filterShadow\" hasRadius background=\"neutral0\">\n <Grid.Item col={7} paddingTop={6} paddingBottom={6} paddingLeft={7} paddingRight={7}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.title',\n defaultMessage: 'Permissions',\n })}\n </Typography>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.apiTokens.createPage.permissions.description',\n defaultMessage: 'Only actions bound by a route are listed below.',\n })}\n </Typography>\n </Flex>\n {data?.permissions && <ContentTypesSection section={data?.permissions} {...props} />}\n </Grid.Item>\n <ActionBoundRoutes />\n </Grid.Root>\n );\n};\n","import * as yup from 'yup';\n\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nexport const schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n type: yup\n .string()\n .oneOf(['read-only', 'full-access', 'custom'])\n .required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n});\n","import { ContentApiPermission } from '../../../../../../../../shared/contracts/content-api/permissions';\n\ninterface Layout {\n allActionsIds: string[];\n permissions: {\n apiId: string;\n label: string;\n controllers: { controller: string; actions: { action: string; actionId: string }[] }[];\n }[];\n}\n\nexport const transformPermissionsData = (data: ContentApiPermission) => {\n const layout: Layout = {\n allActionsIds: [],\n permissions: [],\n };\n\n layout.permissions = Object.entries(data).map(([apiId, permission]) => ({\n apiId,\n label: apiId.split('::')[1],\n controllers: Object.keys(permission.controllers)\n .map((controller) => ({\n controller,\n actions:\n controller in permission.controllers\n ? permission.controllers[controller]\n .map((action: ContentApiPermission['controllers']) => {\n const actionId = `${apiId}.${controller}.${action}`;\n\n if (apiId.includes('api::')) {\n layout.allActionsIds.push(actionId);\n }\n\n return {\n action,\n actionId,\n };\n })\n .flat()\n : [],\n }))\n .flat(),\n }));\n\n return layout;\n};\n","/* eslint-disable consistent-return */\nimport { produce } from 'immer';\nimport pull from 'lodash/pull';\n\nimport { ContentApiPermission } from '../../../../../../../shared/contracts/content-api/permissions';\n\nimport { ApiTokenPermissionsContextValue } from './apiTokenPermissions';\nimport { transformPermissionsData } from './utils/transformPermissionsData';\n\ntype InitialState = Pick<\n ApiTokenPermissionsContextValue['value'],\n 'data' | 'routes' | 'selectedAction' | 'selectedActions'\n>;\n\ninterface ActionOnChange {\n type: 'ON_CHANGE';\n value: string;\n}\n\ninterface ActionSelectAllInPermission {\n type: 'SELECT_ALL_IN_PERMISSION';\n value: { action: string; actionId: string }[];\n}\n\ninterface ActionSelectAllActions {\n type: 'SELECT_ALL_ACTIONS';\n}\n\ninterface ActionOnChangeReadOnly {\n type: 'ON_CHANGE_READ_ONLY';\n}\n\ninterface ActionUpdatePermissionsLayout {\n type: 'UPDATE_PERMISSIONS_LAYOUT';\n value: ContentApiPermission;\n}\n\ninterface ActionUpdateRoutes {\n type: 'UPDATE_ROUTES';\n value: ApiTokenPermissionsContextValue['value']['routes'] | undefined;\n}\n\ninterface ActionUpdatePermissions {\n type: 'UPDATE_PERMISSIONS';\n value: any[];\n}\n\ninterface ActionSetSelectedAction {\n type: 'SET_SELECTED_ACTION';\n value: string;\n}\n\ntype Action =\n | ActionOnChange\n | ActionSelectAllInPermission\n | ActionSelectAllActions\n | ActionOnChangeReadOnly\n | ActionUpdatePermissionsLayout\n | ActionUpdateRoutes\n | ActionUpdatePermissions\n | ActionSetSelectedAction;\n\nexport const initialState: InitialState = {\n data: {\n allActionsIds: [],\n permissions: [],\n },\n routes: {},\n selectedAction: '',\n selectedActions: [],\n};\n\nexport const reducer = (state: InitialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE': {\n if (draftState.selectedActions.includes(action.value)) {\n pull(draftState.selectedActions, action.value);\n } else {\n draftState.selectedActions.push(action.value);\n }\n break;\n }\n case 'SELECT_ALL_IN_PERMISSION': {\n const areAllSelected = action.value.every((item) =>\n draftState.selectedActions.includes(item.actionId)\n );\n\n if (areAllSelected) {\n action.value.forEach((item) => {\n pull(draftState.selectedActions, item.actionId);\n });\n } else {\n action.value.forEach((item) => {\n draftState.selectedActions.push(item.actionId);\n });\n }\n break;\n }\n\n case 'SELECT_ALL_ACTIONS': {\n draftState.selectedActions = [...draftState.data.allActionsIds];\n\n break;\n }\n case 'ON_CHANGE_READ_ONLY': {\n const onlyReadOnlyActions = draftState.data.allActionsIds.filter(\n (actionId) => actionId.includes('find') || actionId.includes('findOne')\n );\n draftState.selectedActions = [...onlyReadOnlyActions];\n break;\n }\n case 'UPDATE_PERMISSIONS_LAYOUT': {\n draftState.data = transformPermissionsData(action.value);\n break;\n }\n case 'UPDATE_ROUTES': {\n draftState.routes = { ...action.value };\n break;\n }\n case 'UPDATE_PERMISSIONS': {\n draftState.selectedActions = [...action.value];\n break;\n }\n case 'SET_SELECTED_ACTION': {\n draftState.selectedAction = action.value;\n break;\n }\n default:\n return draftState;\n }\n });\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../../components/GuidedTour/Provider';\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAPITokenMutation,\n useGetAPITokenQuery,\n useUpdateAPITokenMutation,\n} from '../../../../../services/apiTokens';\nimport { useGetPermissionsQuery, useGetRoutesQuery } from '../../../../../services/contentApi';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE } from '../../../components/Tokens/constants';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { TokenBox } from '../../../components/Tokens/TokenBox';\n\nimport {\n ApiTokenPermissionsContextValue,\n ApiTokenPermissionsProvider,\n} from './apiTokenPermissions';\nimport { FormApiTokenContainer } from './components/FormApiTokenContainer';\nimport { Permissions } from './components/Permissions';\nimport { schema } from './constants';\nimport { initialState, reducer } from './reducer';\n\nimport type { Get, ApiToken } from '../../../../../../../shared/contracts/api-token';\n\n/**\n * TODO: this could definitely be refactored to avoid using redux and instead just use the\n * server response as the source of the truth for the data.\n */\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey\n ? {\n ...locationState.apiToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const setCurrentStep = useGuidedTour('EditView', (state) => state.setCurrentStep);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['api-tokens']);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const match = useMatch('/settings/api-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidtionErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n const contentAPIPermissionsQuery = useGetPermissionsQuery();\n const contentAPIRoutesQuery = useGetRoutesQuery();\n\n /**\n * Separate effects otherwise we could end\n * up duplicating the same notification.\n */\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIPermissionsQuery.error),\n });\n }\n }, [contentAPIPermissionsQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentAPIRoutesQuery.error),\n });\n }\n }, [contentAPIRoutesQuery.error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (contentAPIPermissionsQuery.data) {\n dispatch({\n type: 'UPDATE_PERMISSIONS_LAYOUT',\n value: contentAPIPermissionsQuery.data,\n });\n }\n }, [contentAPIPermissionsQuery.data]);\n\n React.useEffect(() => {\n if (contentAPIRoutesQuery.data) {\n dispatch({\n type: 'UPDATE_ROUTES',\n value: contentAPIRoutesQuery.data,\n });\n }\n }, [contentAPIRoutesQuery.data]);\n\n React.useEffect(() => {\n if (apiToken) {\n if (apiToken.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (apiToken.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (apiToken.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: apiToken?.permissions,\n });\n }\n }\n }, [apiToken]);\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAPITokenQuery(id!, {\n skip: !id || isCreating || !!apiToken,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n\n if (data.type === 'read-only') {\n dispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n if (data.type === 'full-access') {\n dispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (data.type === 'custom') {\n dispatch({\n type: 'UPDATE_PERMISSIONS',\n value: data?.permissions,\n });\n }\n }\n }, [data]);\n\n const [createToken] = useCreateAPITokenMutation();\n const [updateToken] = useUpdateAPITokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: Get.Response['data']['type'] | undefined;\n }\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0' ? parseInt(body.lifespan.toString(), 10) : null,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokencreated',\n defaultMessage: 'API Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n\n navigate(`../api-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n setCurrentStep('apiTokens.success');\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n type: body.type,\n permissions: body.type === 'custom' ? state.selectedActions : null,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidtionErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.apitokenedited',\n defaultMessage: 'API Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: res.data.type,\n tokenType: API_TOKEN_TYPE,\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const [hasChangedPermissions, setHasChangedPermissions] = React.useState(false);\n\n const handleChangeCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChange']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'ON_CHANGE',\n value,\n });\n };\n\n const handleChangeSelectAllCheckbox = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['onChangeSelectAll']>[0]) => {\n setHasChangedPermissions(true);\n dispatch({\n type: 'SELECT_ALL_IN_PERMISSION',\n value,\n });\n };\n\n const setSelectedAction = ({\n target: { value },\n }: Parameters<ApiTokenPermissionsContextValue['value']['setSelectedAction']>[0]) => {\n dispatch({\n type: 'SET_SELECTED_ACTION',\n value,\n });\n };\n\n const providerValue = {\n ...state,\n onChange: handleChangeCheckbox,\n onChangeSelectAll: handleChangeSelectAllCheckbox,\n setSelectedAction,\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ApiTokenPermissionsProvider value={providerValue}>\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: apiToken?.type,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values, setFieldValue }) => {\n if (hasChangedPermissions && values?.type !== 'custom') {\n setFieldValue('type', 'custom');\n }\n\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.apiTokens.createPage.title',\n defaultMessage: 'Create API Token',\n }}\n token={apiToken}\n setToken={setApiToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/api-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {Boolean(apiToken?.name) && (\n <TokenBox token={apiToken?.accessKey} tokenType={API_TOKEN_TYPE} />\n )}\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n onDispatch={dispatch}\n setHasChangedPermissions={setHasChangedPermissions}\n />\n <Permissions\n disabled={\n !canEditInputs ||\n values?.type === 'read-only' ||\n values?.type === 'full-access'\n }\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n </ApiTokenPermissionsProvider>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["translatedErrors","state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,iBAAA,GAAoB,SAAS,eAAgB,CAAA;AAAA,EACjD,SAAA,EAAW,CAAC,OAAa,MAAA;AAAA,IACvB,cAAA,EAAgB,QAAQ,KAAwD,CAAA;AAAA,MAC9E,OAAO,MAAM,gCAAA;AAAA,MACb,iBAAA,EAAmB,CAAC,QAAA,KAAiD,QAAS,CAAA,IAAA;AAAA,KAC/E,CAAA;AAAA,IACD,SAAA,EAAW,QAAQ,KAAmD,CAAA;AAAA,MACpE,OAAO,MAAM,2BAAA;AAAA,MACb,iBAAA,EAAmB,CAAC,QAAA,KAA4C,QAAS,CAAA,IAAA;AAAA,KAC1E,CAAA;AAAA,GACH,CAAA;AAAA,EACA,gBAAkB,EAAA,KAAA;AACpB,CAAC,CAAA,CAAA;AAED,MAAM,EAAE,sBAAwB,EAAA,iBAAA,EAAsB,GAAA,iBAAA;;ACiBtD,MAAM,CAAC,kCAAA,EAAoC,6BAA6B,CAAA,GACtE,cAA+C,4BAA4B,CAAA,CAAA;AAE7E,MAAM,8BAA8B,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA+C,KAAA;AAC7C,EAAA,uBACG,GAAA,CAAA,kCAAA,EAAA,EAAoC,GAAG,IAAA,EAAO,QAAS,EAAA,CAAA,CAAA;AAE5D,CAAA,CAAA;AAEA,MAAM,sBAAA,GAAyB,MAAM,6BAAA,CAA8B,wBAAwB,CAAA;;ACxBpF,MAAM,wBAAwB,CAAC;AAAA,EACpC,SAAS,EAAC;AAAA,EACV,QAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,WAAW,EAAC;AAAA,EACZ,UAAA;AAAA,EACA,wBAAA;AACF,CAAkC,KAAA;AAChC,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAElC,EAAA,MAAM,iCAAiC,CAAC,EAAE,QAAQ,EAAE,KAAA,IAA6C,KAAA;AAC/F,IAAA,wBAAA,CAAyB,KAAK,CAAA,CAAA;AAE9B,IAAA,IAAI,UAAU,aAAe,EAAA;AAC3B,MAAW,UAAA,CAAA;AAAA,QACT,IAAM,EAAA,oBAAA;AAAA,OACP,CAAA,CAAA;AAAA,KACH;AACA,IAAA,IAAI,UAAU,WAAa,EAAA;AACzB,MAAW,UAAA,CAAA;AAAA,QACT,IAAM,EAAA,qBAAA;AAAA,OACP,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB;AAAA,MACE,KAAO,EAAA,WAAA;AAAA,MACP,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,iCAAA;AAAA,QACJ,cAAgB,EAAA,WAAA;AAAA,OAClB;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAO,EAAA,aAAA;AAAA,MACP,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,mCAAA;AAAA,QACJ,cAAgB,EAAA,aAAA;AAAA,OAClB;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAO,EAAA,QAAA;AAAA,MACP,KAAO,EAAA;AAAA,QACL,EAAI,EAAA,8BAAA;AAAA,QACJ,cAAgB,EAAA,QAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,UAAA;AAAA,MACX,SAAS,EAAA,IAAA;AAAA,MACT,MAAO,EAAA,cAAA;AAAA,MACP,UAAY,EAAA,CAAA;AAAA,MACZ,aAAe,EAAA,CAAA;AAAA,MACf,WAAa,EAAA,CAAA;AAAA,MACb,YAAc,EAAA,CAAA;AAAA,MAEd,+BAAC,IAAK,EAAA,EAAA,SAAA,EAAU,UAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,MAC7B,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,gBAAA;AAAA,UACJ,cAAgB,EAAA,SAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,wBACC,IAAA,CAAA,IAAA,CAAK,IAAL,EAAA,EAAU,KAAK,CACd,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAK,IAAL,EAAA,EAAqB,GAAK,EAAA,CAAA,EAAG,IAAI,EAChC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,cACpB,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,cACpB,aAAA;AAAA,cACA,QAAA;AAAA,aAAA;AAAA,eALW,MAOf,CAAA;AAAA,8BACC,IAAK,CAAA,IAAA,EAAL,EAA4B,GAAK,EAAA,CAAA,EAAG,IAAI,EACvC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,aAAa,CAAA;AAAA,cAC3B,KAAA,EAAO,OAAO,aAAa,CAAA;AAAA,cAC3B,aAAA;AAAA,cACA,QAAA;AAAA,aAAA;AAAA,eALW,aAOf,CAAA;AAAA,8BACC,IAAK,CAAA,IAAA,EAAL,EAAyB,GAAK,EAAA,CAAA,EAAG,IAAI,EACpC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,UAAA;AAAA,cACA,KAAA,EAAO,OAAO,UAAU,CAAA;AAAA,cACxB,KAAA,EAAO,OAAO,UAAU,CAAA;AAAA,cACxB,QAAA;AAAA,cACA,KAAO,EAAA,QAAA;AAAA,aAAA;AAAA,eANI,UAQf,CAAA;AAAA,8BAEC,IAAK,CAAA,IAAA,EAAL,EAAqB,GAAK,EAAA,CAAA,EAAG,IAAI,EAChC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,cACpB,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,cACpB,KAAO,EAAA;AAAA,gBACL,EAAI,EAAA,2BAAA;AAAA,gBACJ,cAAgB,EAAA,YAAA;AAAA,eAClB;AAAA,cACA,QAAA,EAAU,CAAC,KAAU,KAAA;AAEnB,gBAAA,8BAAA,CAA+B,EAAE,MAAA,EAAQ,EAAE,KAAA,IAAS,CAAA,CAAA;AAGpD,gBAAA,QAAA,CAAS,EAAE,MAAQ,EAAA,EAAE,MAAM,MAAQ,EAAA,KAAA,IAAS,CAAA,CAAA;AAAA,eAC9C;AAAA,cACA,OAAS,EAAA,WAAA;AAAA,cACT,aAAA;AAAA,aAAA;AAAA,eAhBW,MAkBf,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,OACF,EAAA,CAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA;;AC9HA,MAAM,cAAA,GAAiB,CAAC,IAAgC,KAAA;AACtD,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,MAAQ,EAAA;AACX,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,YAAA;AAAA,QACN,MAAQ,EAAA,YAAA;AAAA,QACR,UAAY,EAAA,YAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,IACA,KAAK,KAAO,EAAA;AACV,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,cAAA;AAAA,QACN,MAAQ,EAAA,cAAA;AAAA,QACR,UAAY,EAAA,cAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,IACA,KAAK,KAAO,EAAA;AACV,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,YAAA;AAAA,QACN,MAAQ,EAAA,YAAA;AAAA,QACR,UAAY,EAAA,YAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,IACA,KAAK,QAAU,EAAA;AACb,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,WAAA;AAAA,QACN,MAAQ,EAAA,WAAA;AAAA,QACR,UAAY,EAAA,WAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,IACA,SAAS;AACP,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,YAAA;AAAA,QACN,MAAQ,EAAA,YAAA;AAAA,QACR,UAAY,EAAA,YAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AAEA,MAAM,SAAA,GAAY,OAAqB,GAAG,CAAA,CAAA;AAAA;AAAA,iBAAA,EAEvB,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,OAAO,CAAC,CAAC,CAAQ,KAAA,EAAA,CAAC,EAAE,KAAM,EAAA,KAAM,KAAM,CAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,CAAA,CAAA;AAWhF,MAAM,aAAa,CAAC;AAAA,EACzB,KAAQ,GAAA;AAAA,IACN,OAAS,EAAA,oBAAA;AAAA,IACT,MAAQ,EAAA,KAAA;AAAA,IACR,IAAM,EAAA,mBAAA;AAAA,GACR;AACF,CAAuB,KAAA;AACrB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAElC,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAS,EAAA,KAAA,EAAO,MAAS,GAAA,KAAA,CAAA;AACzC,EAAM,MAAA,cAAA,GAAiB,OAAO,IAAK,CAAA,IAAA,CAAK,MAAM,GAAG,CAAC,IAAI,EAAC,CAAA;AACvD,EAAM,MAAA,CAAC,UAAa,GAAA,EAAA,EAAI,MAAS,GAAA,EAAE,CAAI,GAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA,GAAI,EAAC,CAAA;AACnE,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAE1C,EAAA,4BACG,IAAK,EAAA,EAAA,SAAA,EAAU,UAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,IAC7B,EAAA,QAAA,EAAA;AAAA,MAAc,aAAA,CAAA;AAAA,QACb,EAAI,EAAA,gDAAA;AAAA,QACJ,cAAgB,EAAA,gBAAA;AAAA,OACjB,CAAA;AAAA,MAAE,GAAA;AAAA,sBAEH,GAAA,CAAC,UAAM,QAAW,EAAA,UAAA,EAAA,CAAA;AAAA,sBACjB,IAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAQ,WAAU,YAAa,EAAA,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAC/C,MAAA;AAAA,OACJ,EAAA,CAAA;AAAA,KACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,QAAK,SAAS,EAAA,IAAA,EAAC,YAAW,UAAW,EAAA,WAAA,EAAY,YAAa,EAAA,GAAA,EAAK,CAClE,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aAAU,UAAY,EAAA,MAAA,CAAO,UAAY,EAAA,WAAA,EAAa,OAAO,MAAQ,EAAA,OAAA,EAAS,CAC7E,EAAA,QAAA,kBAAA,GAAA,CAAC,cAAW,UAAW,EAAA,MAAA,EAAO,WAAW,MAAO,CAAA,IAAA,EAC7C,kBACH,CACF,EAAA,CAAA;AAAA,0BACC,GAAI,EAAA,EAAA,WAAA,EAAa,GAAG,YAAc,EAAA,CAAA,EAChC,cAAI,cAAgB,EAAA,CAAC,KACpB,qBAAA,IAAA,CAAC,cAAuB,SAAW,EAAA,KAAA,CAAM,SAAS,GAAG,CAAA,GAAI,eAAe,YAAc,EAAA,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAClF,KAAA;AAAA,OADa,EAAA,EAAA,KAEjB,CACD,CACH,EAAA,CAAA;AAAA,KACF,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACzGO,MAAM,oBAAoB,MAAM;AACrC,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAO,EAAA;AAAA,MAC9B,sBAAuB,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,aAAgB,GAAA,cAAA,EAAgB,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AAElD,EACE,uBAAA,GAAA;AAAA,IAAC,IAAK,CAAA,IAAA;AAAA,IAAL;AAAA,MACC,GAAK,EAAA,CAAA;AAAA,MACL,UAAW,EAAA,YAAA;AAAA,MACX,UAAY,EAAA,CAAA;AAAA,MACZ,aAAe,EAAA,CAAA;AAAA,MACf,WAAa,EAAA,CAAA;AAAA,MACb,YAAc,EAAA,CAAA;AAAA,MACd,KAAA,EAAO,EAAE,SAAA,EAAW,MAAO,EAAA;AAAA,MAE1B,2CACE,GAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,QAAA,EAAS,YAAW,SAAU,EAAA,GAAA,EAAK,CAChD,EAAA,QAAA,EAAA,aAAA,IACC,iBAAiB,MACjB,IAAA,MAAA,CAAO,aAAa,CAAE,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACnC,QAAA,OAAO,KAAM,CAAA,MAAA,CAAO,IAAM,EAAA,KAAA,EAAO,SAAS,cAAc,CAAA,IACtD,KAAM,CAAA,OAAA,KAAY,iCACjB,GAAA,CAAA,UAAA,EAAA,EAA+B,KAAf,EAAA,EAAA,KAAA,CAAM,OAAuB,CAC5C,GAAA,IAAA,CAAA;AAAA,OACL,CACL,EAAA,CAAA,mBAEC,IAAA,CAAA,IAAA,EAAA,EAAK,WAAU,QAAS,EAAA,UAAA,EAAW,SAAU,EAAA,GAAA,EAAK,CACjD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,MAC7B,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,wDAAA;AAAA,UACJ,cAAgB,EAAA,mBAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,4BACC,UAAW,EAAA,EAAA,GAAA,EAAI,GAAI,EAAA,SAAA,EAAU,cAC3B,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,uDAAA;AAAA,UACJ,cACE,EAAA,+GAAA;AAAA,SACH,CACH,EAAA,CAAA;AAAA,OACF,EAAA,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA;AAEJ,CAAA;;ACnCA,MAAM,2BAA8B,GAAA,GAAA,CAAA;AAAA,cAAA,EACpB,CAAC,KAAA,KAAU,KAAM,CAAA,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMxD,MAAM,eAAA,GAAkB,OAAqB,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA,EAQlC,CAAC,KAAA,KAAU,KAAM,CAAA,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAKlD,CAAC,KAAA,KAAU,KAAM,CAAA,SAAA,IAAa,2BAA2B,CAAA;AAAA;AAAA,IAAA,EAEvD,2BAA2B,CAAA;AAAA;AAAA,CAAA,CAAA;AAIjC,MAAM,SAAS,MAAO,CAAA,GAAA,CAAA;AAAA;AAAA;AAAA,wBAAA,EAGI,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA,CAAA,CAAA;AAUzD,MAAM,yBAAyB,CAAC;AAAA,EACrC,cAAc,EAAC;AAAA,EACf,KAAA;AAAA,EACA,WAAc,GAAA,CAAA;AAAA,EACd,QAAW,GAAA,KAAA;AACb,CAAmC,KAAA;AACjC,EAAM,MAAA;AAAA,IACJ,OAAO,EAAE,iBAAA,EAAmB,QAAU,EAAA,eAAA,EAAiB,mBAAmB,cAAe,EAAA;AAAA,MACvF,sBAAuB,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAElC,EAAM,MAAA,gBAAA,GAAmB,CAAC,QAAA,KAAqB,QAAa,KAAA,cAAA,CAAA;AAE5D,EACE,uBAAA,IAAA,CAAC,UAAU,IAAV,EAAA,EAAe,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,WAAW,CAC5C,CAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAU,CAAA,MAAA,EAAV,EAAiB,OAAA,EAAS,cAAc,CAAI,GAAA,SAAA,GAAY,WACvD,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAU,OAAV,EAAA,EAAmB,QAAW,EAAA,UAAA,CAAA,KAAK,GAAE,CACxC,EAAA,CAAA;AAAA,wBACC,SAAU,CAAA,OAAA,EAAV,EACE,QAAa,EAAA,WAAA,EAAA,GAAA,CAAI,CAAC,UAAe,KAAA;AAChC,MAAM,MAAA,kBAAA,GAAqB,WAAW,OAAQ,CAAA,KAAA;AAAA,QAAM,CAAC,MAAA,KACnD,eAAgB,CAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA,OAC1C,CAAA;AAEA,MAAM,MAAA,mBAAA,GAAsB,WAAW,OAAQ,CAAA,IAAA;AAAA,QAAK,CAAC,MAAA,KACnD,eAAgB,CAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA,OAC1C,CAAA;AAEA,MAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,QAAK,cAAe,EAAA,eAAA,EAAgB,UAAW,EAAA,QAAA,EAAS,SAAS,CAChE,EAAA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,GAAA,EAAA,EAAI,YAAc,EAAA,CAAA,EACjB,QAAC,kBAAA,GAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAQ,SAAU,EAAA,YAAA,EACnC,QAAY,EAAA,UAAA,EAAA,UAAA,EACf,CACF,EAAA,CAAA;AAAA,8BACC,MAAO,EAAA,EAAA,CAAA;AAAA,0BACR,GAAA,CAAC,GAAI,EAAA,EAAA,WAAA,EAAa,CAChB,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OACE,EAAA,CAAC,kBAAsB,IAAA,mBAAA,GACnB,eACA,GAAA,kBAAA;AAAA,cAEN,iBAAiB,MAAM;AACrB,gBAAkB,iBAAA,CAAA,EAAE,MAAQ,EAAA,EAAE,KAAO,EAAA,CAAC,GAAG,UAAW,CAAA,OAAO,CAAE,EAAA,EAAG,CAAA,CAAA;AAAA,eAClE;AAAA,cACA,QAAA;AAAA,cAEC,wBAAc,EAAE,EAAA,EAAI,sBAAwB,EAAA,cAAA,EAAgB,cAAc,CAAA;AAAA,aAAA;AAAA,WAE/E,EAAA,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,IAAA,CAAK,IAAL,EAAA,EAAU,KAAK,CAAG,EAAA,OAAA,EAAS,CACzB,EAAA,QAAA,EAAA,UAAA,EAAY,OACX,IAAA,UAAA,EAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AAClC,UAAA,uBACG,GAAA,CAAA,IAAA,CAAK,IAAL,EAAA,EAAU,KAAK,CACd,EAAA,QAAA,kBAAA,IAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,gBAAiB,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,cAC3C,OAAS,EAAA,CAAA;AAAA,cACT,SAAS,EAAA,IAAA;AAAA,cAET,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,OAAS,EAAA,eAAA,CAAgB,QAAS,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,oBACjD,MAAM,MAAO,CAAA,QAAA;AAAA,oBACb,iBAAiB,MAAM;AACrB,sBAAA,QAAA,CAAS,EAAE,MAAQ,EAAA,EAAE,OAAO,MAAO,CAAA,QAAA,IAAY,CAAA,CAAA;AAAA,qBACjD;AAAA,oBACA,QAAA;AAAA,oBAEC,QAAO,EAAA,MAAA,CAAA,MAAA;AAAA,mBAAA;AAAA,iBACV;AAAA,gCACA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAK,EAAA,QAAA;AAAA,oBACL,aAAY,EAAA,YAAA;AAAA,oBACZ,OAAA,EAAS,MACP,iBAAA,CAAkB,EAAE,MAAA,EAAQ,EAAE,KAAO,EAAA,MAAA,CAAO,QAAS,EAAA,EAAG,CAAA;AAAA,oBAE1D,KAAO,EAAA,EAAE,OAAS,EAAA,aAAA,EAAe,YAAY,QAAS,EAAA;AAAA,oBAEtD,8BAAC,GAAI,EAAA,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACP;AAAA,eAAA;AAAA,aAAA;AAAA,WACF,EAAA,EA1BsB,OAAO,QA2B/B,CAAA,CAAA;AAAA,SAEH,CACL,EAAA,CAAA;AAAA,OAAA,EAAA,EA1DQ,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,UAAA,EAAY,UAAU,CA2D5C,CAAA,CAAA,CAAA;AAAA,KAEH,CACH,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;AC9IO,MAAM,sBAAsB,CAAC,EAAE,UAAU,IAAM,EAAA,GAAG,OAAsC,KAAA;AAC7F,EAAA,2BACG,GAAI,EAAA,EAAA,OAAA,EAAS,CAAG,EAAA,UAAA,EAAW,YAC1B,QAAC,kBAAA,GAAA,CAAA,SAAA,CAAU,IAAV,EAAA,EAAe,MAAK,GAClB,EAAA,QAAA,EAAA,OAAA,IACC,QAAQ,GAAI,CAAA,CAAC,KAAK,KAChB,qBAAA,GAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MAEC,OAAO,GAAI,CAAA,KAAA;AAAA,MACX,aAAa,GAAI,CAAA,WAAA;AAAA,MACjB,WAAa,EAAA,KAAA;AAAA,MACZ,GAAG,KAAA;AAAA,KAAA;AAAA,IAJC,GAAI,CAAA,KAAA;AAAA,GAMZ,GACL,CACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACnBO,MAAM,WAAc,GAAA,CAAC,EAAE,GAAG,OAAY,KAAA;AAC3C,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,IAAK,EAAA;AAAA,MACZ,sBAAuB,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAElC,EACE,uBAAA,IAAA,CAAC,IAAK,CAAA,IAAA,EAAL,EAAU,GAAA,EAAK,CAAG,EAAA,MAAA,EAAO,cAAe,EAAA,SAAA,EAAS,IAAC,EAAA,UAAA,EAAW,UAC5D,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,IAAK,CAAA,IAAA,EAAL,EAAU,GAAA,EAAK,CAAG,EAAA,UAAA,EAAY,CAAG,EAAA,aAAA,EAAe,CAAG,EAAA,WAAA,EAAa,CAAG,EAAA,YAAA,EAAc,CAChF,EAAA,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,QAAK,SAAU,EAAA,QAAA,EAAS,UAAW,EAAA,SAAA,EAAU,KAAK,CACjD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,GAAA,EAAI,MAC7B,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,iDAAA;AAAA,UACJ,cAAgB,EAAA,aAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,4BACC,UAAW,EAAA,EAAA,GAAA,EAAI,GAAI,EAAA,SAAA,EAAU,cAC3B,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,uDAAA;AAAA,UACJ,cAAgB,EAAA,iDAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,OACF,EAAA,CAAA;AAAA,MACC,IAAA,EAAM,+BAAgB,GAAA,CAAA,mBAAA,EAAA,EAAoB,SAAS,IAAM,EAAA,WAAA,EAAc,GAAG,KAAO,EAAA,CAAA;AAAA,KACpF,EAAA,CAAA;AAAA,wBACC,iBAAkB,EAAA,EAAA,CAAA;AAAA,GACrB,EAAA,CAAA,CAAA;AAEJ,CAAA;;AChCO,MAAM,MAAS,GAAA,GAAA,CAAI,MAAO,EAAA,CAAE,KAAM,CAAA;AAAA,EACvC,IAAA,EAAM,GAAI,CAAA,MAAA,EAAS,CAAA,GAAA,CAAI,GAAG,CAAE,CAAA,QAAA,CAASA,WAAiB,CAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACjE,IAAM,EAAA,GAAA,CACH,MAAO,EAAA,CACP,MAAM,CAAC,WAAA,EAAa,aAAe,EAAA,QAAQ,CAAC,CAAA,CAC5C,QAAS,CAAAA,WAAA,CAAiB,SAAS,EAAE,CAAA;AAAA,EACxC,WAAa,EAAA,GAAA,CAAI,MAAO,EAAA,CAAE,QAAS,EAAA;AAAA,EACnC,QAAU,EAAA,GAAA,CAAI,MAAO,EAAA,CAAE,SAAU,CAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAS,EAAA,CAAE,OAAQ,CAAAA,WAAA,CAAiB,SAAS,EAAE,CAAA;AACzF,CAAC,CAAA;;ACDY,MAAA,wBAAA,GAA2B,CAAC,IAA+B,KAAA;AACtE,EAAA,MAAM,MAAiB,GAAA;AAAA,IACrB,eAAe,EAAC;AAAA,IAChB,aAAa,EAAC;AAAA,GAChB,CAAA;AAEA,EAAO,MAAA,CAAA,WAAA,GAAc,MAAO,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,KAAO,EAAA,UAAU,CAAO,MAAA;AAAA,IACtE,KAAA;AAAA,IACA,KAAO,EAAA,KAAA,CAAM,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AAAA,IAC1B,WAAA,EAAa,OAAO,IAAK,CAAA,UAAA,CAAW,WAAW,CAC5C,CAAA,GAAA,CAAI,CAAC,UAAgB,MAAA;AAAA,MACpB,UAAA;AAAA,MACA,OAAA,EACE,UAAc,IAAA,UAAA,CAAW,WACrB,GAAA,UAAA,CAAW,YAAY,UAAU,CAAA,CAC9B,GAAI,CAAA,CAAC,MAAgD,KAAA;AACpD,QAAA,MAAM,WAAW,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,UAAU,IAAI,MAAM,CAAA,CAAA,CAAA;AAEjD,QAAI,IAAA,KAAA,CAAM,QAAS,CAAA,OAAO,CAAG,EAAA;AAC3B,UAAO,MAAA,CAAA,aAAA,CAAc,KAAK,QAAQ,CAAA,CAAA;AAAA,SACpC;AAEA,QAAO,OAAA;AAAA,UACL,MAAA;AAAA,UACA,QAAA;AAAA,SACF,CAAA;AAAA,OACD,CAAA,CACA,IAAK,EAAA,GACR,EAAC;AAAA,KACT,CAAE,EACD,IAAK,EAAA;AAAA,GACR,CAAA,CAAA,CAAA;AAEF,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;;ACiBO,MAAM,YAA6B,GAAA;AAAA,EACxC,IAAM,EAAA;AAAA,IACJ,eAAe,EAAC;AAAA,IAChB,aAAa,EAAC;AAAA,GAChB;AAAA,EACA,QAAQ,EAAC;AAAA,EACT,cAAgB,EAAA,EAAA;AAAA,EAChB,iBAAiB,EAAC;AACpB,CAAA,CAAA;AAEO,MAAM,UAAU,CAAC,KAAA,EAAqB,WAC3C,OAAQ,CAAA,KAAA,EAAO,CAAC,UAAe,KAAA;AAC7B,EAAA,QAAQ,OAAO,IAAM;AAAA,IACnB,KAAK,WAAa,EAAA;AAChB,MAAA,IAAI,UAAW,CAAA,eAAA,CAAgB,QAAS,CAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACrD,QAAK,IAAA,CAAA,UAAA,CAAW,eAAiB,EAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,OACxC,MAAA;AACL,QAAW,UAAA,CAAA,eAAA,CAAgB,IAAK,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,OAC9C;AACA,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,0BAA4B,EAAA;AAC/B,MAAM,MAAA,cAAA,GAAiB,OAAO,KAAM,CAAA,KAAA;AAAA,QAAM,CAAC,IACzC,KAAA,UAAA,CAAW,eAAgB,CAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AAAA,OACnD,CAAA;AAEA,MAAA,IAAI,cAAgB,EAAA;AAClB,QAAO,MAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,IAAS,KAAA;AAC7B,UAAK,IAAA,CAAA,UAAA,CAAW,eAAiB,EAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,SAC/C,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAO,MAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,IAAS,KAAA;AAC7B,UAAW,UAAA,CAAA,eAAA,CAAgB,IAAK,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,SAC9C,CAAA,CAAA;AAAA,OACH;AACA,MAAA,MAAA;AAAA,KACF;AAAA,IAEA,KAAK,oBAAsB,EAAA;AACzB,MAAA,UAAA,CAAW,eAAkB,GAAA,CAAC,GAAG,UAAA,CAAW,KAAK,aAAa,CAAA,CAAA;AAE9D,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,qBAAuB,EAAA;AAC1B,MAAM,MAAA,mBAAA,GAAsB,UAAW,CAAA,IAAA,CAAK,aAAc,CAAA,MAAA;AAAA,QACxD,CAAC,aAAa,QAAS,CAAA,QAAA,CAAS,MAAM,CAAK,IAAA,QAAA,CAAS,SAAS,SAAS,CAAA;AAAA,OACxE,CAAA;AACA,MAAW,UAAA,CAAA,eAAA,GAAkB,CAAC,GAAG,mBAAmB,CAAA,CAAA;AACpD,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,2BAA6B,EAAA;AAChC,MAAW,UAAA,CAAA,IAAA,GAAO,wBAAyB,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACvD,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,eAAiB,EAAA;AACpB,MAAA,UAAA,CAAW,MAAS,GAAA,EAAE,GAAG,MAAA,CAAO,KAAM,EAAA,CAAA;AACtC,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,oBAAsB,EAAA;AACzB,MAAA,UAAA,CAAW,eAAkB,GAAA,CAAC,GAAG,MAAA,CAAO,KAAK,CAAA,CAAA;AAC7C,MAAA,MAAA;AAAA,KACF;AAAA,IACA,KAAK,qBAAuB,EAAA;AAC1B,MAAA,UAAA,CAAW,iBAAiB,MAAO,CAAA,KAAA,CAAA;AACnC,MAAA,MAAA;AAAA,KACF;AAAA,IACA;AACE,MAAO,OAAA,UAAA,CAAA;AAAA,GACX;AACF,CAAC,CAAA;;AC1FI,MAAM,WAAW,MAAM;AAC5B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,eAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,KAAA,EAAO,aAAc,EAAA,GAAI,WAAY,EAAA,CAAA;AAC7C,EAAA,MAAM,cAAc,gBAAiB,CAAA,CAACC,MAAUA,KAAAA,MAAAA,CAAM,UAAU,WAAW,CAAA,CAAA;AAC3E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACpC,aAAA,EAAe,UAAU,SACrB,GAAA;AAAA,MACE,GAAG,aAAc,CAAA,QAAA;AAAA,KAEnB,GAAA,IAAA;AAAA,GACN,CAAA;AACA,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,WAAY,EAAA,CAAA;AACnC,EAAA,MAAM,iBAAiB,aAAc,CAAA,UAAA,EAAY,CAACA,MAAAA,KAAUA,OAAM,cAAc,CAAA,CAAA;AAChF,EAAM,MAAA;AAAA,IACJ,cAAgB,EAAA,EAAE,SAAW,EAAA,SAAA,EAAW,aAAc,EAAA;AAAA,GACpD,GAAA,OAAA,CAAQ,WAAY,CAAA,QAAA,GAAW,YAAY,CAAC,CAAA,CAAA;AAChD,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,IAAI,KAAM,CAAA,UAAA,CAAW,SAAS,YAAY,CAAA,CAAA;AAChE,EAAM,MAAA,KAAA,GAAQ,SAAS,0BAA0B,CAAA,CAAA;AACjD,EAAM,MAAA,EAAA,GAAK,OAAO,MAAQ,EAAA,EAAA,CAAA;AAC1B,EAAA,MAAM,aAAa,EAAO,KAAA,QAAA,CAAA;AAC1B,EAAM,MAAA;AAAA,IACJ,uBAAyB,EAAA,cAAA;AAAA,IACzB,+BAAiC,EAAA,qBAAA;AAAA,MAC/B,kBAAmB,EAAA,CAAA;AAEvB,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAE7B,EAAA,MAAM,6BAA6B,sBAAuB,EAAA,CAAA;AAC1D,EAAA,MAAM,wBAAwB,iBAAkB,EAAA,CAAA;AAMhD,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,2BAA2B,KAAO,EAAA;AACpC,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,cAAe,CAAA,0BAAA,CAA2B,KAAK,CAAA;AAAA,OACzD,CAAA,CAAA;AAAA,KACH;AAAA,KACC,CAAC,0BAAA,CAA2B,KAAO,EAAA,cAAA,EAAgB,kBAAkB,CAAC,CAAA,CAAA;AAEzE,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,sBAAsB,KAAO,EAAA;AAC/B,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,cAAe,CAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,OACpD,CAAA,CAAA;AAAA,KACH;AAAA,KACC,CAAC,qBAAA,CAAsB,KAAO,EAAA,cAAA,EAAgB,kBAAkB,CAAC,CAAA,CAAA;AAEpE,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,2BAA2B,IAAM,EAAA;AACnC,MAAS,QAAA,CAAA;AAAA,QACP,IAAM,EAAA,2BAAA;AAAA,QACN,OAAO,0BAA2B,CAAA,IAAA;AAAA,OACnC,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,0BAA2B,CAAA,IAAI,CAAC,CAAA,CAAA;AAEpC,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,sBAAsB,IAAM,EAAA;AAC9B,MAAS,QAAA,CAAA;AAAA,QACP,IAAM,EAAA,eAAA;AAAA,QACN,OAAO,qBAAsB,CAAA,IAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,qBAAsB,CAAA,IAAI,CAAC,CAAA,CAAA;AAE/B,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAI,IAAA,QAAA,CAAS,SAAS,WAAa,EAAA;AACjC,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,qBAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AACA,MAAI,IAAA,QAAA,CAAS,SAAS,aAAe,EAAA;AACnC,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,oBAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AACA,MAAI,IAAA,QAAA,CAAS,SAAS,QAAU,EAAA;AAC9B,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,oBAAA;AAAA,UACN,OAAO,QAAU,EAAA,WAAA;AAAA,SAClB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACF,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAEb,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAW,UAAA,CAAA,UAAA,GAAa,wBAAwB,sBAAwB,EAAA;AAAA,MACtE,SAAW,EAAA,cAAA;AAAA,KACZ,CAAA,CAAA;AAAA,GACA,EAAA,CAAC,UAAY,EAAA,UAAU,CAAC,CAAA,CAAA;AAE3B,EAAA,MAAM,EAAE,IAAM,EAAA,KAAA,EAAO,SAAU,EAAA,GAAI,oBAAoB,EAAK,EAAA;AAAA,IAC1D,IAAM,EAAA,CAAC,EAAM,IAAA,UAAA,IAAc,CAAC,CAAC,QAAA;AAAA,GAC9B,CAAA,CAAA;AAED,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,KAAO,EAAA;AACT,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,eAAe,KAAK,CAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,cAAA,EAAgB,kBAAkB,CAAC,CAAA,CAAA;AAE9C,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAEhB,MAAI,IAAA,IAAA,CAAK,SAAS,WAAa,EAAA;AAC7B,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,qBAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AACA,MAAI,IAAA,IAAA,CAAK,SAAS,aAAe,EAAA;AAC/B,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,oBAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACH;AACA,MAAI,IAAA,IAAA,CAAK,SAAS,QAAU,EAAA;AAC1B,QAAS,QAAA,CAAA;AAAA,UACP,IAAM,EAAA,oBAAA;AAAA,UACN,OAAO,IAAM,EAAA,WAAA;AAAA,SACd,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EAAM,MAAA,CAAC,WAAW,CAAA,GAAI,yBAA0B,EAAA,CAAA;AAChD,EAAM,MAAA,CAAC,WAAW,CAAA,GAAI,yBAA0B,EAAA,CAAA;AAOhD,EAAM,MAAA,YAAA,GAAe,OAAO,IAAA,EAAkB,MAAsC,KAAA;AAClF,IAAW,UAAA,CAAA,UAAA,GAAa,oBAAoB,eAAiB,EAAA;AAAA,MAC3D,SAAW,EAAA,cAAA;AAAA,KACZ,CAAA,CAAA;AAED,IAAI,IAAA;AACF,MAAA,IAAI,UAAY,EAAA;AACd,QAAM,MAAA,GAAA,GAAM,MAAM,WAAY,CAAA;AAAA,UAC5B,GAAG,IAAA;AAAA;AAAA,UAEH,QACE,EAAA,IAAA,EAAM,QAAY,IAAA,IAAA,CAAK,QAAa,KAAA,GAAA,GAAM,QAAS,CAAA,IAAA,CAAK,QAAS,CAAA,QAAA,EAAY,EAAA,EAAE,CAAI,GAAA,IAAA;AAAA,UACrF,WAAa,EAAA,IAAA,CAAK,IAAS,KAAA,QAAA,GAAW,MAAM,eAAkB,GAAA,IAAA;AAAA,SAC/D,CAAA,CAAA;AAED,QAAA,IAAI,WAAW,GAAK,EAAA;AAClB,UAAA,IAAI,iBAAiB,GAAI,CAAA,KAAK,KAAK,GAAI,CAAA,KAAA,CAAM,SAAS,iBAAmB,EAAA;AACvE,YAAA,MAAA,CAAO,SAAU,CAAA,qBAAA,CAAsB,GAAI,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,WAC5C,MAAA;AACL,YAAmB,kBAAA,CAAA;AAAA,cACjB,IAAM,EAAA,QAAA;AAAA,cACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,aAClC,CAAA,CAAA;AAAA,WACH;AAEA,UAAA,OAAA;AAAA,SACF;AAEA,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,SAAA;AAAA,UACN,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,sCAAA;AAAA,YACJ,cAAgB,EAAA,gCAAA;AAAA,WACjB,CAAA;AAAA,SACF,CAAA,CAAA;AAED,QAAA,UAAA,CAAW,gBAAkB,EAAA;AAAA,UAC3B,IAAA,EAAM,IAAI,IAAK,CAAA,IAAA;AAAA,UACf,SAAW,EAAA,cAAA;AAAA,SACZ,CAAA,CAAA;AAED,QAAA,QAAA,CAAS,iBAAiB,GAAI,CAAA,IAAA,CAAK,EAAG,CAAA,QAAA,EAAU,CAAI,CAAA,EAAA;AAAA,UAClD,KAAO,EAAA,EAAE,QAAU,EAAA,GAAA,CAAI,IAAK,EAAA;AAAA,UAC5B,OAAS,EAAA,IAAA;AAAA,SACV,CAAA,CAAA;AACD,QAAA,cAAA,CAAe,mBAAmB,CAAA,CAAA;AAAA,OAC7B,MAAA;AACL,QAAM,MAAA,GAAA,GAAM,MAAM,WAAY,CAAA;AAAA,UAC5B,EAAA;AAAA,UACA,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,aAAa,IAAK,CAAA,WAAA;AAAA,UAClB,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,WAAa,EAAA,IAAA,CAAK,IAAS,KAAA,QAAA,GAAW,MAAM,eAAkB,GAAA,IAAA;AAAA,SAC/D,CAAA,CAAA;AAED,QAAA,IAAI,WAAW,GAAK,EAAA;AAClB,UAAA,IAAI,iBAAiB,GAAI,CAAA,KAAK,KAAK,GAAI,CAAA,KAAA,CAAM,SAAS,iBAAmB,EAAA;AACvE,YAAA,MAAA,CAAO,SAAU,CAAA,qBAAA,CAAsB,GAAI,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,WAC5C,MAAA;AACL,YAAmB,kBAAA,CAAA;AAAA,cACjB,IAAM,EAAA,QAAA;AAAA,cACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,aAClC,CAAA,CAAA;AAAA,WACH;AAEA,UAAA,OAAA;AAAA,SACF;AAEA,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,SAAA;AAAA,UACN,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,qCAAA;AAAA,YACJ,cAAgB,EAAA,+BAAA;AAAA,WACjB,CAAA;AAAA,SACF,CAAA,CAAA;AAED,QAAA,UAAA,CAAW,cAAgB,EAAA;AAAA,UACzB,IAAA,EAAM,IAAI,IAAK,CAAA,IAAA;AAAA,UACf,SAAW,EAAA,cAAA;AAAA,SACZ,CAAA,CAAA;AAAA,OACH;AAAA,KACM,CAAA,MAAA;AACN,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,oBAAA;AAAA,UACJ,cAAgB,EAAA,sBAAA;AAAA,SACjB,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,CAAC,qBAAuB,EAAA,wBAAwB,CAAI,GAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAE9E,EAAA,MAAM,uBAAuB,CAAC;AAAA,IAC5B,MAAA,EAAQ,EAAE,KAAM,EAAA;AAAA,GACyD,KAAA;AACzE,IAAA,wBAAA,CAAyB,IAAI,CAAA,CAAA;AAC7B,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,WAAA;AAAA,MACN,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,gCAAgC,CAAC;AAAA,IACrC,MAAA,EAAQ,EAAE,KAAM,EAAA;AAAA,GACkE,KAAA;AAClF,IAAA,wBAAA,CAAyB,IAAI,CAAA,CAAA;AAC7B,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,0BAAA;AAAA,MACN,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,oBAAoB,CAAC;AAAA,IACzB,MAAA,EAAQ,EAAE,KAAM,EAAA;AAAA,GACkE,KAAA;AAClF,IAAS,QAAA,CAAA;AAAA,MACP,IAAM,EAAA,qBAAA;AAAA,MACN,KAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,aAAgB,GAAA;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,QAAU,EAAA,oBAAA;AAAA,IACV,iBAAmB,EAAA,6BAAA;AAAA,IACnB,iBAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,aAAiB,GAAA,SAAA,IAAa,CAAC,UAAA,IAAgB,SAAa,IAAA,UAAA,CAAA;AAElE,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,uBAAA,GAAA,CAAC,IAAK,CAAA,OAAA,EAAL,EAAa,CAAA,CAAA;AAAA,GACvB;AAEA,EAAA,2BACG,2BAA4B,EAAA,EAAA,KAAA,EAAO,eAClC,QAAC,kBAAA,IAAA,CAAA,IAAA,CAAK,MAAL,EACC,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,IAAA,CAAK,OAAL,EACE,QAAA,EAAA,aAAA;AAAA,MACC,EAAE,EAAA,EAAI,oBAAsB,EAAA,cAAA,EAAgB,mBAAoB,EAAA;AAAA,MAChE,EAAE,MAAM,YAAa,EAAA;AAAA,KAEzB,EAAA,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,gBAAkB,EAAA,MAAA;AAAA,QAClB,gBAAkB,EAAA,KAAA;AAAA,QAClB,aAAe,EAAA;AAAA,UACb,IAAA,EAAM,UAAU,IAAQ,IAAA,EAAA;AAAA,UACxB,WAAA,EAAa,UAAU,WAAe,IAAA,EAAA;AAAA,UACtC,MAAM,QAAU,EAAA,IAAA;AAAA,UAChB,UAAU,QAAU,EAAA,QAAA;AAAA,SACtB;AAAA,QACA,kBAAkB,EAAA,IAAA;AAAA,QAClB,UAAU,CAAC,IAAA,EAAM,OAAY,KAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAAA,QAEtD,WAAC,EAAE,MAAA,EAAQ,cAAc,YAAc,EAAA,MAAA,EAAQ,eAAoB,KAAA;AAClE,UAAI,IAAA,qBAAA,IAAyB,MAAQ,EAAA,IAAA,KAAS,QAAU,EAAA;AACtD,YAAA,aAAA,CAAc,QAAQ,QAAQ,CAAA,CAAA;AAAA,WAChC;AAEA,UAAA,4BACG,IACC,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,KAAO,EAAA;AAAA,kBACL,EAAI,EAAA,qCAAA;AAAA,kBACJ,cAAgB,EAAA,kBAAA;AAAA,iBAClB;AAAA,gBACA,KAAO,EAAA,QAAA;AAAA,gBACP,QAAU,EAAA,WAAA;AAAA,gBACV,aAAA;AAAA,gBACA,aAAA;AAAA,gBACA,YAAA;AAAA,gBACA,aAAc,EAAA,oBAAA;AAAA,eAAA;AAAA,aAChB;AAAA,4BAEA,GAAA,CAAC,OAAQ,CAAA,OAAA,EAAR,EACC,QAAA,kBAAA,IAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAU,QAAS,EAAA,UAAA,EAAW,SAAU,EAAA,GAAA,EAAK,CAChD,EAAA,QAAA,EAAA;AAAA,cAAQ,OAAA,CAAA,QAAA,EAAU,IAAI,CACrB,oBAAA,GAAA,CAAC,YAAS,KAAO,EAAA,QAAA,EAAU,SAAW,EAAA,SAAA,EAAW,cAAgB,EAAA,CAAA;AAAA,8BAEnE,GAAA;AAAA,gBAAC,qBAAA;AAAA,gBAAA;AAAA,kBACC,MAAA;AAAA,kBACA,QAAU,EAAA,YAAA;AAAA,kBACV,aAAA;AAAA,kBACA,UAAA;AAAA,kBACA,MAAA;AAAA,kBACA,QAAA;AAAA,kBACA,UAAY,EAAA,QAAA;AAAA,kBACZ,wBAAA;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,UACE,CAAC,aAAA,IACD,QAAQ,IAAS,KAAA,WAAA,IACjB,QAAQ,IAAS,KAAA,aAAA;AAAA,iBAAA;AAAA,eAErB;AAAA,aAAA,EACF,CACF,EAAA,CAAA;AAAA,WACF,EAAA,CAAA,CAAA;AAAA,SAEJ;AAAA,OAAA;AAAA,KACF;AAAA,GAAA,EACF,CACF,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEO,MAAM,oBAAoB,MAAM;AACrC,EAAA,MAAM,WAAc,GAAA,gBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,UAAU,WAAY,CAAA,QAAA,GAAW,YAAY,CAAE,CAAA,IAAA;AAAA,GAClE,CAAA;AAEA,EAAA,2BACG,IAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAA,GAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListPage-JkbzV3H0.mjs","sources":["../../admin/src/pages/Settings/pages/Users/components/CreateActionCE.tsx","../../admin/src/pages/Settings/pages/Users/components/NewUserForm.tsx","../../admin/src/pages/Settings/pages/Users/ListPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, ButtonProps } from '@strapi/design-system';\nimport { Mail } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\ninterface CreateActionCEProps extends Pick<ButtonProps, 'onClick'> {}\n\nconst CreateActionCE = React.forwardRef<HTMLButtonElement, CreateActionCEProps>((props, ref) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button ref={ref} startIcon={<Mail />} size=\"S\" {...props}>\n {formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n })}\n </Button>\n );\n});\n\nexport { CreateActionCE };\nexport type { CreateActionCEProps };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Grid,\n Modal,\n Typography,\n Breadcrumbs,\n Crumb,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, type FormHelpers } from '../../../../../components/Form';\nimport { InputRenderer } from '../../../../../components/FormInputs/Renderer';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { useCreateUserMutation } from '../../../../../services/users';\nimport { FormLayoutInputProps } from '../../../../../types/forms';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../../utils/translatedErrors';\n\nimport { MagicLinkCE } from './MagicLinkCE';\nimport { SelectRoles } from './SelectRoles';\n\nimport type { Data } from '@strapi/types';\n\ninterface ModalFormProps {\n onToggle: () => void;\n}\n\ntype FormLayout = FormLayoutInputProps[][];\n\nconst ModalForm = ({ onToggle }: ModalFormProps) => {\n const [currentStep, setStep] = React.useState<keyof typeof STEPPER>('create');\n const [registrationToken, setRegistrationToken] = React.useState('');\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const roleLayout = useEnterprise<FormLayout, FormLayout, FormLayout>(\n ROLE_LAYOUT,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).ROLE_LAYOUT,\n {\n combine(ceRoles, eeRoles) {\n return [...ceRoles, ...eeRoles];\n },\n\n defaultValue: [],\n }\n );\n\n const initialValues = useEnterprise<InitialData>(\n FORM_INITIAL_VALUES,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm'\n )\n ).FORM_INITIAL_VALUES,\n {\n combine(ceValues, eeValues) {\n return {\n ...ceValues,\n ...eeValues,\n };\n },\n\n defaultValue: FORM_INITIAL_VALUES,\n }\n );\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\n const [createUser] = useCreateUserMutation();\n\n const headerTitle = formatMessage({\n id: 'Settings.permissions.users.create',\n defaultMessage: 'Invite new user',\n });\n\n const handleSubmit = async (body: InitialData, { setErrors }: FormHelpers<InitialData>) => {\n const res = await createUser({\n ...body,\n roles: body.roles ?? [],\n });\n\n if ('data' in res) {\n if (res.data.registrationToken) {\n setRegistrationToken(res.data.registrationToken);\n\n goNext();\n } else {\n // This shouldn't happen, but just incase.\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n }\n }\n };\n\n const goNext = () => {\n if (next) {\n setStep(next);\n } else {\n onToggle();\n }\n };\n\n const { buttonSubmitLabel, isDisabled, next } = STEPPER[currentStep];\n\n // block rendering until the EE component is fully loaded\n if (!MagicLink) {\n return null;\n }\n\n return (\n <Modal.Root defaultOpen onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={headerTitle}>\n <Crumb isCurrent>{headerTitle}</Crumb>\n </Breadcrumbs>\n </Modal.Header>\n <Form\n method={currentStep === 'create' ? 'POST' : 'PUT'}\n initialValues={initialValues ?? {}}\n onSubmit={handleSubmit}\n validationSchema={FORM_SCHEMA}\n >\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {currentStep !== 'create' && (\n <MagicLink registrationToken={registrationToken} />\n )}\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'User details',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={5}>\n {FORM_LAYOUT.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={formatMessage(field.placeholder)}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Flex>\n </Box>\n </Box>\n <Box>\n <Typography variant=\"beta\" tag=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Box paddingTop={4}>\n <Grid.Root gap={5}>\n <Grid.Item col={6} xs={12}>\n <SelectRoles disabled={isDisabled} />\n </Grid.Item>\n {roleLayout.map((row) => {\n return row.map(({ size, ...field }) => {\n return (\n <Grid.Item key={field.name} col={size}>\n <InputRenderer\n {...field}\n disabled={isDisabled}\n label={formatMessage(field.label)}\n placeholder={\n field.placeholder\n ? formatMessage(field.placeholder)\n : undefined\n }\n hint={field.hint ? formatMessage(field.hint) : undefined}\n />\n </Grid.Item>\n );\n });\n })}\n </Grid.Root>\n </Box>\n </Box>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n {currentStep === 'create' ? (\n <Button type=\"submit\" loading={isSubmitting}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n ) : (\n <Button type=\"button\" loading={isSubmitting} onClick={onToggle}>\n {formatMessage(buttonSubmitLabel)}\n </Button>\n )}\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\ninterface InitialData {\n firstname?: string;\n lastname?: string;\n email?: string;\n roles?: Data.ID[];\n useSSORegistration?: boolean;\n}\n\nconst FORM_INITIAL_VALUES = {\n firstname: '',\n lastname: '',\n email: '',\n roles: [],\n};\n\nconst ROLE_LAYOUT: FormLayout = [];\n\nconst FORM_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] satisfies FormLayout;\n\nconst FORM_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\n lastname: yup.string(),\n email: yup.string().email(translatedErrors.email).required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n }),\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 STEPPER = {\n create: {\n buttonSubmitLabel: {\n id: 'app.containers.Users.ModalForm.footer.button-success',\n defaultMessage: 'Invite user',\n },\n isDisabled: false,\n next: 'magic-link',\n },\n 'magic-link': {\n buttonSubmitLabel: { id: 'global.finish', defaultMessage: 'Finish' },\n isDisabled: true,\n next: null,\n },\n} as const;\n\nexport { ModalForm };\nexport type { InitialData };\n","import * as React from 'react';\n\nimport { Flex, Typography, Status, IconButton } from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport * as qs from 'qs';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { SanitizedAdminUser } from '../../../../../../shared/contracts/shared';\nimport { Filters } from '../../../../components/Filters';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { Pagination } from '../../../../components/Pagination';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { Table } from '../../../../components/Table';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useAdminUsers, useDeleteManyUsersMutation } from '../../../../services/users';\nimport { getDisplayName } from '../../../../utils/users';\n\nimport { CreateActionCE } from './components/CreateActionCE';\nimport { ModalForm } from './components/NewUserForm';\n\n/* -------------------------------------------------------------------------------------------------\n * ListPageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListPageCE = () => {\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const [isModalOpened, setIsModalOpen] = React.useState(false);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const {\n allowedActions: { canCreate, canDelete, canRead },\n } = useRBAC(permissions.settings?.users);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { search } = useLocation();\n const { data, isError, isLoading } = useAdminUsers(qs.parse(search, { ignoreQueryPrefix: true }));\n\n const { pagination, users = [] } = data ?? {};\n\n const CreateAction = useEnterprise(\n CreateActionCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE'\n )\n ).CreateActionEE\n );\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const title = formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n });\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const [deleteAll] = useDeleteManyUsersMutation();\n const handleDeleteAll = async (ids: Array<SanitizedAdminUser['id']>) => {\n try {\n const res = await deleteAll({ ids });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch (err) {\n console.error(err);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'global.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n };\n\n const handleRowClick = (id: SanitizedAdminUser['id']) => () => {\n if (canRead) {\n navigate(id.toString());\n }\n };\n\n const handleDeleteClick = (id: SanitizedAdminUser['id']) => async () =>\n await handleDeleteAll([id]);\n\n // block rendering until the EE component is fully loaded\n if (!CreateAction) {\n return null;\n }\n\n if (isError) {\n return <Page.Error />;\n }\n\n return (\n <Page.Main aria-busy={isLoading}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Users',\n }\n )}\n </Page.Title>\n <Layouts.Header\n primaryAction={canCreate && <CreateAction onClick={handleToggle} />}\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.users.listview.header.subtitle',\n defaultMessage: 'All the users who have access to the Strapi admin panel',\n })}\n />\n <Layouts.Action\n startActions={\n <>\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n <Filters.Root options={FILTERS}>\n <Filters.Trigger />\n <Filters.Popover />\n <Filters.List />\n </Filters.Root>\n </>\n }\n />\n <Layouts.Content>\n <Table.Root rows={users} headers={headers}>\n <Table.ActionBar />\n <Table.Content>\n <Table.Head>\n {canDelete ? <Table.HeaderCheckboxCell /> : null}\n {headers.map((header) => (\n <Table.HeaderCell key={header.name} {...header} />\n ))}\n </Table.Head>\n <Table.Empty />\n <Table.Loading />\n <Table.Body>\n {users.map((user) => (\n <Table.Row\n key={user.id}\n onClick={handleRowClick(user.id)}\n cursor={canRead ? 'pointer' : 'default'}\n >\n {canDelete ? <Table.CheckboxCell id={user.id} /> : null}\n {headers.map(({ cellFormatter, name, ...rest }) => {\n return (\n <Table.Cell key={name}>\n {typeof cellFormatter === 'function' ? (\n cellFormatter(user, { name, ...rest })\n ) : (\n // @ts-expect-error – name === \"roles\" has the data value of `AdminRole[]` but the header has a cellFormatter value so this shouldn't be called.\n <Typography textColor=\"neutral800\">{user[name] || '-'}</Typography>\n )}\n </Table.Cell>\n );\n })}\n {canRead || canDelete ? (\n <Table.Cell onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"end\">\n {canRead ? (\n <IconButton\n tag={NavLink}\n to={user.id.toString()}\n label={formatMessage(\n { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },\n { target: getDisplayName(user) }\n )}\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n ) : null}\n {canDelete ? (\n <IconButton\n onClick={handleDeleteClick(user.id)}\n label={formatMessage(\n { id: 'global.delete-target', defaultMessage: 'Delete {target}' },\n { target: getDisplayName(user) }\n )}\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n ) : null}\n </Flex>\n </Table.Cell>\n ) : null}\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n </Table.Root>\n <Pagination.Root {...pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n {isModalOpened && <ModalForm onToggle={handleToggle} />}\n </Page.Main>\n );\n};\n\nconst TABLE_HEADERS: Array<\n Omit<Table.Header<SanitizedAdminUser, any>, 'label'> & { label: MessageDescriptor }\n> = [\n {\n name: 'firstname',\n label: {\n id: 'Settings.permissions.users.firstname',\n defaultMessage: 'Firstname',\n },\n sortable: true,\n },\n {\n name: 'lastname',\n label: {\n id: 'Settings.permissions.users.lastname',\n defaultMessage: 'Lastname',\n },\n sortable: true,\n },\n {\n name: 'email',\n label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },\n sortable: true,\n },\n {\n name: 'roles',\n label: {\n id: 'Settings.permissions.users.roles',\n defaultMessage: 'Roles',\n },\n sortable: false,\n cellFormatter({ roles }) {\n return (\n <Typography textColor=\"neutral800\">{roles.map((role) => role.name).join(',\\n')}</Typography>\n );\n },\n },\n {\n name: 'username',\n label: {\n id: 'Settings.permissions.users.username',\n defaultMessage: 'Username',\n },\n sortable: true,\n },\n {\n name: 'isActive',\n label: {\n id: 'Settings.permissions.users.user-status',\n defaultMessage: 'User status',\n },\n sortable: false,\n cellFormatter({ isActive }) {\n return (\n <Flex>\n <Status\n size=\"S\"\n borderWidth={0}\n background=\"transparent\"\n color=\"neutral800\"\n variant={isActive ? 'success' : 'danger'}\n >\n <Typography>{isActive ? 'Active' : 'Inactive'}</Typography>\n </Status>\n </Flex>\n );\n },\n },\n];\n\nconst FILTERS = [\n {\n name: 'firstname',\n label: 'Firstname',\n type: 'string',\n },\n {\n name: 'lastname',\n label: 'Lastname',\n type: 'string',\n },\n {\n name: 'email',\n label: 'Email',\n type: 'email',\n },\n {\n name: 'username',\n label: 'Username',\n type: 'string',\n },\n {\n name: 'isActive',\n label: 'Active user',\n type: 'boolean',\n },\n] satisfies Filters.Filter[];\n\n/* -------------------------------------------------------------------------------------------------\n * ListPage\n * -----------------------------------------------------------------------------------------------*/\n\n// component which determines whether this page should render the CE or EE page\nconst ListPage = () => {\n const UsersListPage = useEnterprise(\n ListPageCE,\n async () =>\n // eslint-disable-next-line import/no-cycle\n (await import('../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/ListPage'))\n .UserListPageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!UsersListPage) {\n return null;\n }\n\n return <UsersListPage />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.users.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage, ListPageCE };\n"],"names":["InputRenderer","translatedErrors"],"mappings":"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"}
|