@strapi/admin 5.0.0-alpha.4 → 5.0.0-alpha.7
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-jHCKfvy4.js → AdminSeatInfo-5S4b9ytt.js} +4 -4
- package/dist/admin/{AdminSeatInfo-jHCKfvy4.js.map → AdminSeatInfo-5S4b9ytt.js.map} +1 -1
- package/dist/admin/{AdminSeatInfo-G8sTB4TN.mjs → AdminSeatInfo-A6gxA301.mjs} +4 -4
- package/dist/admin/{AdminSeatInfo-G8sTB4TN.mjs.map → AdminSeatInfo-A6gxA301.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-DPcd8u-E.js → ApplicationInfoPage-Fxy6RARu.js} +5 -5
- package/dist/admin/{ApplicationInfoPage-DPcd8u-E.js.map → ApplicationInfoPage-Fxy6RARu.js.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-rYJxaeKG.mjs → ApplicationInfoPage-SaBco4KU.mjs} +5 -5
- package/dist/admin/{ApplicationInfoPage-rYJxaeKG.mjs.map → ApplicationInfoPage-SaBco4KU.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-829u1Bgr.mjs → AuthResponse-gf-zZkxm.mjs} +2 -2
- package/dist/admin/{AuthResponse-829u1Bgr.mjs.map → AuthResponse-gf-zZkxm.mjs.map} +1 -1
- package/dist/admin/{AuthResponse-jXbQnvQx.js → AuthResponse-l5QiAAK7.js} +2 -2
- package/dist/admin/{AuthResponse-jXbQnvQx.js.map → AuthResponse-l5QiAAK7.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-FJd0k59k.mjs → AuthenticatedLayout-Iyagtqob.mjs} +17 -17
- package/dist/admin/{AuthenticatedLayout-FJd0k59k.mjs.map → AuthenticatedLayout-Iyagtqob.mjs.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-C4p6uMXy.js → AuthenticatedLayout-tRi16L9c.js} +17 -17
- package/dist/admin/{AuthenticatedLayout-C4p6uMXy.js.map → AuthenticatedLayout-tRi16L9c.js.map} +1 -1
- package/dist/admin/{ComponentConfigurationPage-aH3eivWq.mjs → ComponentConfigurationPage-6CnnkE6E.mjs} +4 -4
- package/dist/admin/{ComponentConfigurationPage-aH3eivWq.mjs.map → ComponentConfigurationPage-6CnnkE6E.mjs.map} +1 -1
- package/dist/admin/{ComponentConfigurationPage-5UqUF73x.js → ComponentConfigurationPage-LpuZH_80.js} +4 -4
- package/dist/admin/{ComponentConfigurationPage-5UqUF73x.js.map → ComponentConfigurationPage-LpuZH_80.js.map} +1 -1
- package/dist/admin/ComponentIcon-AkrHxAkm.mjs.map +1 -1
- package/dist/admin/ComponentIcon-wcNWpdCz.js.map +1 -1
- package/dist/admin/{CreateActionEE-FShadq9j.js → CreateActionEE-9-R9hmOH.js} +2 -2
- package/dist/admin/{CreateActionEE-FShadq9j.js.map → CreateActionEE-9-R9hmOH.js.map} +1 -1
- package/dist/admin/{CreateActionEE-PeDYp0gX.mjs → CreateActionEE-fPOnLJuM.mjs} +2 -2
- package/dist/admin/{CreateActionEE-PeDYp0gX.mjs.map → CreateActionEE-fPOnLJuM.mjs.map} +1 -1
- package/dist/admin/{CreatePage-btStJe_p.js → CreatePage-Fu_8X4K8.js} +4 -4
- package/dist/admin/{CreatePage-btStJe_p.js.map → CreatePage-Fu_8X4K8.js.map} +1 -1
- package/dist/admin/{CreatePage--AtUMCaU.js → CreatePage-UjSB-dgp.js} +3 -3
- package/dist/admin/{CreatePage--AtUMCaU.js.map → CreatePage-UjSB-dgp.js.map} +1 -1
- package/dist/admin/{CreatePage-dQ2vPAka.js → CreatePage-ZPziliHk.js} +9 -9
- package/dist/admin/CreatePage-ZPziliHk.js.map +1 -0
- package/dist/admin/{CreatePage-ZExp8rHA.mjs → CreatePage-couIKeZQ.mjs} +3 -3
- package/dist/admin/{CreatePage-ZExp8rHA.mjs.map → CreatePage-couIKeZQ.mjs.map} +1 -1
- package/dist/admin/{CreatePage-vUR8c8Wi.mjs → CreatePage-k_yey8N_.mjs} +4 -4
- package/dist/admin/{CreatePage-vUR8c8Wi.mjs.map → CreatePage-k_yey8N_.mjs.map} +1 -1
- package/dist/admin/{CreatePage-XuobAWJK.mjs → CreatePage-t0FqkFrZ.mjs} +9 -9
- package/dist/admin/CreatePage-t0FqkFrZ.mjs.map +1 -0
- package/dist/admin/{CreateView-UAXKJ1XB.mjs → CreateView-3rY4Zptu.mjs} +3 -3
- package/dist/admin/{CreateView-UAXKJ1XB.mjs.map → CreateView-3rY4Zptu.mjs.map} +1 -1
- package/dist/admin/{CreateView-L98QJ908.js → CreateView-41To--31.js} +3 -3
- package/dist/admin/{CreateView-L98QJ908.js.map → CreateView-41To--31.js.map} +1 -1
- package/dist/admin/{CreateView-Ry0jxIm8.js → CreateView-Tg9Mh5T3.js} +3 -3
- package/dist/admin/{CreateView-Ry0jxIm8.js.map → CreateView-Tg9Mh5T3.js.map} +1 -1
- package/dist/admin/{CreateView-n-X-ip9A.mjs → CreateView-ePHsDH45.mjs} +3 -3
- package/dist/admin/{CreateView-n-X-ip9A.mjs.map → CreateView-ePHsDH45.mjs.map} +1 -1
- package/dist/admin/{EditConfigurationPage-7aqUfM-_.mjs → EditConfigurationPage-msmjy1KU.mjs} +4 -4
- package/dist/admin/{EditConfigurationPage-7aqUfM-_.mjs.map → EditConfigurationPage-msmjy1KU.mjs.map} +1 -1
- package/dist/admin/{EditConfigurationPage-9hpFgyVd.js → EditConfigurationPage-xUIWyyB3.js} +4 -4
- package/dist/admin/{EditConfigurationPage-9hpFgyVd.js.map → EditConfigurationPage-xUIWyyB3.js.map} +1 -1
- package/dist/admin/{EditPage-icpAlX0U.js → EditPage--MbF06mK.js} +6 -6
- package/dist/admin/EditPage--MbF06mK.js.map +1 -0
- package/dist/admin/{EditPage-zuPfy7bP.mjs → EditPage-3SBMJVop.mjs} +9 -9
- package/dist/admin/{EditPage-zuPfy7bP.mjs.map → EditPage-3SBMJVop.mjs.map} +1 -1
- package/dist/admin/{EditPage-PKgsIJsU.js → EditPage-GG3uO1tK.js} +5 -5
- package/dist/admin/{EditPage-PKgsIJsU.js.map → EditPage-GG3uO1tK.js.map} +1 -1
- package/dist/admin/{EditPage-T3344ZeF.mjs → EditPage-KuoEv50O.mjs} +6 -6
- package/dist/admin/EditPage-KuoEv50O.mjs.map +1 -0
- package/dist/admin/{EditPage-5_mPjbp1.mjs → EditPage-SySHhxVT.mjs} +8 -8
- package/dist/admin/{EditPage-5_mPjbp1.mjs.map → EditPage-SySHhxVT.mjs.map} +1 -1
- package/dist/admin/{EditPage-FfXtsX6I.js → EditPage-ZB_Kwtk6.js} +9 -9
- package/dist/admin/{EditPage-FfXtsX6I.js.map → EditPage-ZB_Kwtk6.js.map} +1 -1
- package/dist/admin/{EditPage-NIhP9MDK.mjs → EditPage-cCyAao8t.mjs} +5 -5
- package/dist/admin/{EditPage-NIhP9MDK.mjs.map → EditPage-cCyAao8t.mjs.map} +1 -1
- package/dist/admin/{EditPage-7p0wMhRr.js → EditPage-qUg5s7MV.js} +8 -8
- package/dist/admin/{EditPage-7p0wMhRr.js.map → EditPage-qUg5s7MV.js.map} +1 -1
- package/dist/admin/{EditView-6orvVYcs.js → EditView-NPoSYint.js} +4 -4
- package/dist/admin/{EditView-6orvVYcs.js.map → EditView-NPoSYint.js.map} +1 -1
- package/dist/admin/{EditView-Py-98_8F.mjs → EditView-uTB8aFye.mjs} +4 -4
- package/dist/admin/{EditView-Py-98_8F.mjs.map → EditView-uTB8aFye.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-taqlSy8-.mjs → EditViewPage-8eo8XEp-.mjs} +4 -4
- package/dist/admin/{EditViewPage-taqlSy8-.mjs.map → EditViewPage-8eo8XEp-.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-m8eq8b5B.mjs → EditViewPage-GUkP1rzn.mjs} +6 -6
- package/dist/admin/{EditViewPage-m8eq8b5B.mjs.map → EditViewPage-GUkP1rzn.mjs.map} +1 -1
- package/dist/admin/{EditViewPage-b8B7crGF.js → EditViewPage-K7ytzy_P.js} +4 -4
- package/dist/admin/{EditViewPage-b8B7crGF.js.map → EditViewPage-K7ytzy_P.js.map} +1 -1
- package/dist/admin/{EditViewPage-bvSm02vo.js → EditViewPage-aIpRJ8vJ.js} +6 -6
- package/dist/admin/{EditViewPage-bvSm02vo.js.map → EditViewPage-aIpRJ8vJ.js.map} +1 -1
- package/dist/admin/{EventsTable-PkxRHECw.js → EventsTable-LHOhvL6b.js} +2 -2
- package/dist/admin/{EventsTable-PkxRHECw.js.map → EventsTable-LHOhvL6b.js.map} +1 -1
- package/dist/admin/{EventsTable-nHKCiGbY.mjs → EventsTable-miLAex8G.mjs} +2 -2
- package/dist/admin/{EventsTable-nHKCiGbY.mjs.map → EventsTable-miLAex8G.mjs.map} +1 -1
- package/dist/admin/{FieldTypeIcon-AibcTcXN.mjs → FieldTypeIcon-SCwhXPf6.mjs} +2 -2
- package/dist/admin/FieldTypeIcon-SCwhXPf6.mjs.map +1 -0
- package/dist/admin/{FieldTypeIcon--WKPFDG2.js → FieldTypeIcon-u9dTaLwb.js} +2 -2
- package/dist/admin/FieldTypeIcon-u9dTaLwb.js.map +1 -0
- package/dist/admin/{Filters-8DH_AqD9.mjs → Filters-NuK9aAYl.mjs} +4 -4
- package/dist/admin/Filters-NuK9aAYl.mjs.map +1 -0
- package/dist/admin/{Filters-ogIU7Q6e.js → Filters-dwU8wA6T.js} +4 -4
- package/dist/admin/Filters-dwU8wA6T.js.map +1 -0
- package/dist/admin/{Form-ykqsO6fm.js → Form-QoOkjEjV.js} +5 -5
- package/dist/admin/Form-QoOkjEjV.js.map +1 -0
- package/dist/admin/{Form-qYMSW-OI.mjs → Form-y8gH26Xy.mjs} +5 -5
- package/dist/admin/Form-y8gH26Xy.mjs.map +1 -0
- package/dist/admin/{History-eZH2Aqa1.js → History-UVk6YZaL.js} +5 -5
- package/dist/admin/{History-eZH2Aqa1.js.map → History-UVk6YZaL.js.map} +1 -1
- package/dist/admin/{History-0MMslhUv.mjs → History-gNttF1-u.mjs} +5 -5
- package/dist/admin/{History-0MMslhUv.mjs.map → History-gNttF1-u.mjs.map} +1 -1
- package/dist/admin/{HomePage-3V4WbE7J.js → HomePage-33ElW8Xc.js} +3 -3
- package/dist/admin/{HomePage-3V4WbE7J.js.map → HomePage-33ElW8Xc.js.map} +1 -1
- package/dist/admin/{HomePage-1pjv0BI8.mjs → HomePage-89WRumlX.mjs} +5 -5
- package/dist/admin/{HomePage-1pjv0BI8.mjs.map → HomePage-89WRumlX.mjs.map} +1 -1
- package/dist/admin/{HomePage-Kc_uEvV-.mjs → HomePage-K72cOtYS.mjs} +3 -3
- package/dist/admin/{HomePage-Kc_uEvV-.mjs.map → HomePage-K72cOtYS.mjs.map} +1 -1
- package/dist/admin/{HomePage-OlYV50mz.js → HomePage-qj5mNY6J.js} +5 -5
- package/dist/admin/{HomePage-OlYV50mz.js.map → HomePage-qj5mNY6J.js.map} +1 -1
- package/dist/admin/{InputRenderer-89lhMw5B.js → InputRenderer-tdeZayqM.js} +4 -6
- package/dist/admin/InputRenderer-tdeZayqM.js.map +1 -0
- package/dist/admin/{InputRenderer-ddUokGFQ.mjs → InputRenderer-uXGu-VvL.mjs} +4 -6
- package/dist/admin/InputRenderer-uXGu-VvL.mjs.map +1 -0
- package/dist/admin/{InstalledPluginsPage-F_LdmUvc.mjs → InstalledPluginsPage-rGp1BINi.mjs} +3 -3
- package/dist/admin/{InstalledPluginsPage-F_LdmUvc.mjs.map → InstalledPluginsPage-rGp1BINi.mjs.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-4hUy0Kzu.js → InstalledPluginsPage-relNbZiA.js} +3 -3
- package/dist/admin/{InstalledPluginsPage-4hUy0Kzu.js.map → InstalledPluginsPage-relNbZiA.js.map} +1 -1
- package/dist/admin/{Layout-ipua3uHy.mjs → Layout-JxGSf9_Y.mjs} +3 -3
- package/dist/admin/{Layout-ipua3uHy.mjs.map → Layout-JxGSf9_Y.mjs.map} +1 -1
- package/dist/admin/{Layout-G57F6Yr1.js → Layout-T0g-F0J1.js} +3 -3
- package/dist/admin/{Layout-G57F6Yr1.js.map → Layout-T0g-F0J1.js.map} +1 -1
- package/dist/admin/{Layout-DpiBAhal.mjs → Layout-u3VVVTce.mjs} +5 -5
- package/dist/admin/{Layout-DpiBAhal.mjs.map → Layout-u3VVVTce.mjs.map} +1 -1
- package/dist/admin/{Layout-Drko3mHh.js → Layout-v-mkhXKv.js} +5 -5
- package/dist/admin/{Layout-Drko3mHh.js.map → Layout-v-mkhXKv.js.map} +1 -1
- package/dist/admin/{ListConfigurationPage-fR6bfJTF.js → ListConfigurationPage-MwlySSVK.js} +5 -5
- package/dist/admin/{ListConfigurationPage-fR6bfJTF.js.map → ListConfigurationPage-MwlySSVK.js.map} +1 -1
- package/dist/admin/{ListConfigurationPage-vJzC-kba.mjs → ListConfigurationPage-bltmUKBT.mjs} +5 -5
- package/dist/admin/{ListConfigurationPage-vJzC-kba.mjs.map → ListConfigurationPage-bltmUKBT.mjs.map} +1 -1
- package/dist/admin/{ListPage-q5CzNEts.mjs → ListPage-6TwMzZ42.mjs} +5 -5
- package/dist/admin/{ListPage-q5CzNEts.mjs.map → ListPage-6TwMzZ42.mjs.map} +1 -1
- package/dist/admin/{ListPage-eBRwQOBq.js → ListPage-L-_ih7Hh.js} +5 -5
- package/dist/admin/{ListPage-eBRwQOBq.js.map → ListPage-L-_ih7Hh.js.map} +1 -1
- package/dist/admin/{ListPage-k7Cm8qlS.mjs → ListPage-QKnSioEM.mjs} +9 -9
- package/dist/admin/ListPage-QKnSioEM.mjs.map +1 -0
- package/dist/admin/{ListPage-PF-K0vRV.js → ListPage-VNJqXKYM.js} +3 -3
- package/dist/admin/{ListPage-PF-K0vRV.js.map → ListPage-VNJqXKYM.js.map} +1 -1
- package/dist/admin/{ListPage-FY6b3WdF.mjs → ListPage-cB1S2S4t.mjs} +4 -4
- package/dist/admin/{ListPage-FY6b3WdF.mjs.map → ListPage-cB1S2S4t.mjs.map} +1 -1
- package/dist/admin/{ListPage-0ZSyBi8x.mjs → ListPage-ea3ZLj4B.mjs} +3 -3
- package/dist/admin/{ListPage-0ZSyBi8x.mjs.map → ListPage-ea3ZLj4B.mjs.map} +1 -1
- package/dist/admin/{ListPage-YhzdUuPY.js → ListPage-jUKAQtpH.js} +5 -5
- package/dist/admin/{ListPage-YhzdUuPY.js.map → ListPage-jUKAQtpH.js.map} +1 -1
- package/dist/admin/{ListPage-NfgDLiTv.js → ListPage-nvhOIoAg.js} +9 -9
- package/dist/admin/ListPage-nvhOIoAg.js.map +1 -0
- package/dist/admin/{ListPage-9heSiDbD.mjs → ListPage-pP9hYRl0.mjs} +5 -5
- package/dist/admin/{ListPage-9heSiDbD.mjs.map → ListPage-pP9hYRl0.mjs.map} +1 -1
- package/dist/admin/{ListPage-LLm7jeMJ.js → ListPage-t2yAStC4.js} +7 -6
- package/dist/admin/ListPage-t2yAStC4.js.map +1 -0
- package/dist/admin/{ListPage-u0H0CObE.mjs → ListPage-tR89wtOV.mjs} +8 -7
- package/dist/admin/ListPage-tR89wtOV.mjs.map +1 -0
- package/dist/admin/{ListPage-hyHTGust.js → ListPage-zMNnrnTB.js} +4 -4
- package/dist/admin/{ListPage-hyHTGust.js.map → ListPage-zMNnrnTB.js.map} +1 -1
- package/dist/admin/{ListView-5cUHtatI.js → ListView-I9Hfj5vj.js} +4 -4
- package/dist/admin/ListView-I9Hfj5vj.js.map +1 -0
- package/dist/admin/{ListView-he-cDEr8.mjs → ListView-MbnmLD5H.mjs} +4 -4
- package/dist/admin/ListView-MbnmLD5H.mjs.map +1 -0
- package/dist/admin/{ListView-wtrnAeIs.mjs → ListView-TAmGuKTG.mjs} +4 -4
- package/dist/admin/ListView-TAmGuKTG.mjs.map +1 -0
- package/dist/admin/{ListView-ZrssEOAH.js → ListView-mCiRJwrY.js} +4 -4
- package/dist/admin/ListView-mCiRJwrY.js.map +1 -0
- package/dist/admin/{ListViewPage-fcwyHB4o.mjs → ListViewPage-J4KUAgai.mjs} +9 -9
- package/dist/admin/ListViewPage-J4KUAgai.mjs.map +1 -0
- package/dist/admin/{ListViewPage--usbPNMW.js → ListViewPage-dluuhb-d.js} +9 -9
- package/dist/admin/ListViewPage-dluuhb-d.js.map +1 -0
- package/dist/admin/{Login-JhiQkX0g.mjs → Login-eWkr5rD0.mjs} +3 -3
- package/dist/admin/{Login-JhiQkX0g.mjs.map → Login-eWkr5rD0.mjs.map} +1 -1
- package/dist/admin/{Login-ge1q7Ao9.js → Login-xaRTR09T.js} +3 -3
- package/dist/admin/{Login-ge1q7Ao9.js.map → Login-xaRTR09T.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-HZRvA15-.js → MagicLinkEE-DdAnlnbT.js} +3 -3
- package/dist/admin/{MagicLinkEE-HZRvA15-.js.map → MagicLinkEE-DdAnlnbT.js.map} +1 -1
- package/dist/admin/{MagicLinkEE-6fksiP2N.mjs → MagicLinkEE-jSJRGswm.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-6fksiP2N.mjs.map → MagicLinkEE-jSJRGswm.mjs.map} +1 -1
- package/dist/admin/{MarketplacePage-jeaqEHfo.js → MarketplacePage-7R9OXLe5.js} +3 -3
- package/dist/admin/{MarketplacePage-jeaqEHfo.js.map → MarketplacePage-7R9OXLe5.js.map} +1 -1
- package/dist/admin/{MarketplacePage-BhzDMBT-.mjs → MarketplacePage-NuCSMXXA.mjs} +3 -3
- package/dist/admin/{MarketplacePage-BhzDMBT-.mjs.map → MarketplacePage-NuCSMXXA.mjs.map} +1 -1
- package/dist/admin/{NoContentTypePage-6mgFtik-.mjs → NoContentTypePage-MI-TNgDm.mjs} +2 -2
- package/dist/admin/{NoContentTypePage-6mgFtik-.mjs.map → NoContentTypePage-MI-TNgDm.mjs.map} +1 -1
- package/dist/admin/{NoContentTypePage-7GuJBa-V.js → NoContentTypePage-WM9PSeKc.js} +2 -2
- package/dist/admin/{NoContentTypePage-7GuJBa-V.js.map → NoContentTypePage-WM9PSeKc.js.map} +1 -1
- package/dist/admin/{NoPermissionsPage-6oZ4iqff.mjs → NoPermissionsPage-K6eIf5zl.mjs} +2 -2
- package/dist/admin/{NoPermissionsPage-6oZ4iqff.mjs.map → NoPermissionsPage-K6eIf5zl.mjs.map} +1 -1
- package/dist/admin/{NoPermissionsPage-E2ro9iCX.js → NoPermissionsPage-PP92ItBk.js} +2 -2
- package/dist/admin/{NoPermissionsPage-E2ro9iCX.js.map → NoPermissionsPage-PP92ItBk.js.map} +1 -1
- package/dist/admin/NotAllowed-9d8xvtvI.mjs.map +1 -1
- package/dist/admin/NotAllowed-FmDlK9I3.js.map +1 -1
- package/dist/admin/{Permissions-VR9Rnqkr.js → Permissions-jsl-R7bI.js} +2 -2
- package/dist/admin/{Permissions-VR9Rnqkr.js.map → Permissions-jsl-R7bI.js.map} +1 -1
- package/dist/admin/{Permissions-kvKR0BEy.mjs → Permissions-v99MLjbi.mjs} +2 -2
- package/dist/admin/{Permissions-kvKR0BEy.mjs.map → Permissions-v99MLjbi.mjs.map} +1 -1
- package/dist/admin/{PrivateRoute-dcpEjhVL.js → PrivateRoute-AFoVG5Bk.js} +2 -2
- package/dist/admin/{PrivateRoute-dcpEjhVL.js.map → PrivateRoute-AFoVG5Bk.js.map} +1 -1
- package/dist/admin/{PrivateRoute-jEzBQwGq.mjs → PrivateRoute-XiRz2oSq.mjs} +2 -2
- package/dist/admin/{PrivateRoute-jEzBQwGq.mjs.map → PrivateRoute-XiRz2oSq.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-vP1WwOSo.mjs → ProfilePage-HjJiMiTt.mjs} +4 -4
- package/dist/admin/{ProfilePage-vP1WwOSo.mjs.map → ProfilePage-HjJiMiTt.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-5zMiyfq8.js → ProfilePage-wGM1mvXn.js} +4 -4
- package/dist/admin/{ProfilePage-5zMiyfq8.js.map → ProfilePage-wGM1mvXn.js.map} +1 -1
- package/dist/admin/{ReviewWorkflowsColumn-BdkHPnDo.mjs → ReviewWorkflowsColumn-fFjISpV-.mjs} +3 -3
- package/dist/admin/{ReviewWorkflowsColumn-BdkHPnDo.mjs.map → ReviewWorkflowsColumn-fFjISpV-.mjs.map} +1 -1
- package/dist/admin/{ReviewWorkflowsColumn-xNjqgu-L.js → ReviewWorkflowsColumn-woA2SXEC.js} +3 -3
- package/dist/admin/{ReviewWorkflowsColumn-xNjqgu-L.js.map → ReviewWorkflowsColumn-woA2SXEC.js.map} +1 -1
- package/dist/admin/{SelectRoles-JxYKvga9.js → SelectRoles-IagtXRkz.js} +4 -4
- package/dist/admin/{SelectRoles-JxYKvga9.js.map → SelectRoles-IagtXRkz.js.map} +1 -1
- package/dist/admin/{SelectRoles--7dfmawm.mjs → SelectRoles-wkrG60gH.mjs} +4 -4
- package/dist/admin/{SelectRoles--7dfmawm.mjs.map → SelectRoles-wkrG60gH.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-rKeiHpGS.mjs → SingleSignOnPage-EnR7TNHn.mjs} +3 -3
- package/dist/admin/{SingleSignOnPage-rKeiHpGS.mjs.map → SingleSignOnPage-EnR7TNHn.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-APC1hAX2.js → SingleSignOnPage-QtJcKvz1.js} +3 -3
- package/dist/admin/{SingleSignOnPage-APC1hAX2.js.map → SingleSignOnPage-QtJcKvz1.js.map} +1 -1
- package/dist/admin/{Table-idNir8r9.mjs → Table--Lb2Jk8K.mjs} +4 -4
- package/dist/admin/Table--Lb2Jk8K.mjs.map +1 -0
- package/dist/admin/{Table-BKVants3.js → Table-EGrwI1DE.js} +4 -4
- package/dist/admin/Table-EGrwI1DE.js.map +1 -0
- package/dist/admin/{TokenTypeSelect-k_R6xVFw.mjs → TokenTypeSelect-Vsm3x9aT.mjs} +3 -3
- package/dist/admin/TokenTypeSelect-Vsm3x9aT.mjs.map +1 -0
- package/dist/admin/{TokenTypeSelect-Y6C3wEJm.js → TokenTypeSelect-nSM_sCJb.js} +3 -3
- package/dist/admin/TokenTypeSelect-nSM_sCJb.js.map +1 -0
- package/dist/admin/{UseCasePage-eOIMEIRP.mjs → UseCasePage-LDFlFUgh.mjs} +4 -4
- package/dist/admin/{UseCasePage-eOIMEIRP.mjs.map → UseCasePage-LDFlFUgh.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-63kprMhe.js → UseCasePage-lb8KTjmb.js} +4 -4
- package/dist/admin/{UseCasePage-63kprMhe.js.map → UseCasePage-lb8KTjmb.js.map} +1 -1
- package/dist/admin/{apiTokens-RqehzGhC.js → apiTokens-_gKUBKPQ.js} +2 -2
- package/dist/admin/{apiTokens-RqehzGhC.js.map → apiTokens-_gKUBKPQ.js.map} +1 -1
- package/dist/admin/{apiTokens-HBaRXE71.mjs → apiTokens-nD8zbNlc.mjs} +2 -2
- package/dist/admin/{apiTokens-HBaRXE71.mjs.map → apiTokens-nD8zbNlc.mjs.map} +1 -1
- package/dist/admin/{constants-OqgYP6sX.mjs → constants--6hi2sq7.mjs} +5 -5
- package/dist/admin/{constants-OqgYP6sX.mjs.map → constants--6hi2sq7.mjs.map} +1 -1
- package/dist/admin/{constants-X5ozLqHT.mjs → constants--TURFsEh.mjs} +3 -3
- package/dist/admin/{constants-X5ozLqHT.mjs.map → constants--TURFsEh.mjs.map} +1 -1
- package/dist/admin/{constants-zUoXz50h.js → constants-aUUP-q78.js} +5 -5
- package/dist/admin/{constants-zUoXz50h.js.map → constants-aUUP-q78.js.map} +1 -1
- package/dist/admin/{constants-GzcRsyWk.js → constants-yG6U1h1n.js} +3 -3
- package/dist/admin/{constants-GzcRsyWk.js.map → constants-yG6U1h1n.js.map} +1 -1
- package/dist/admin/{index-_fZT3TVe.js → index-lSQdx61-.js} +67 -48
- package/dist/admin/index-lSQdx61-.js.map +1 -0
- package/dist/admin/{index-Sd8uo7mE.mjs → index-oXhvt6Nv.mjs} +67 -48
- package/dist/admin/index-oXhvt6Nv.mjs.map +1 -0
- package/dist/admin/index.js +3 -3
- package/dist/admin/index.mjs +3 -3
- package/dist/admin/{reducers-TOuLOGw_.mjs → reducers-IQWvK_9L.mjs} +11 -9
- package/dist/admin/reducers-IQWvK_9L.mjs.map +1 -0
- package/dist/admin/{reducers-uDxSALD_.js → reducers-wZUQqmNX.js} +11 -9
- package/dist/admin/reducers-wZUQqmNX.js.map +1 -0
- package/dist/admin/{selectors-ka781RNf.js → selectors-PTHjHMQi.js} +2 -2
- package/dist/admin/{selectors-ka781RNf.js.map → selectors-PTHjHMQi.js.map} +1 -1
- package/dist/admin/{selectors-NvWWczps.mjs → selectors-nn3C3YKE.mjs} +2 -2
- package/dist/admin/{selectors-NvWWczps.mjs.map → selectors-nn3C3YKE.mjs.map} +1 -1
- package/dist/admin/src/components/FormInputs/types.d.ts +3 -3
- package/dist/admin/src/constants/filters.d.ts +2 -2
- package/dist/admin/src/content-manager/components/ComponentIcon.d.ts +2 -2
- package/dist/admin/src/content-manager/components/ConfigurationForm/EditFieldForm.d.ts +2 -2
- package/dist/admin/src/content-manager/components/DragPreviews/RelationDragPreview.d.ts +2 -2
- package/dist/admin/src/content-manager/components/FieldTypeIcon.d.ts +2 -2
- package/dist/admin/src/content-manager/features/DocumentRBAC.d.ts +2 -2
- package/dist/admin/src/content-manager/history/services/historyVersion.d.ts +2 -2
- package/dist/admin/src/content-manager/hooks/useDocumentLayout.d.ts +7 -7
- package/dist/admin/src/content-manager/hooks/useDragAndDrop.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +3 -3
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts +1 -1
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts +1 -1
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.d.ts +1 -1
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +1 -1
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/types.d.ts +4 -4
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/NotAllowed.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/UID.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/Field.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/EditView/utils/data.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Actions.d.ts +52 -0
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/PublishAction.d.ts +31 -0
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellContent.d.ts +3 -3
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellValue.d.ts +2 -2
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Components.d.ts +3 -3
- package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Media.d.ts +2 -2
- package/dist/admin/src/content-manager/services/documents.d.ts +5 -0
- package/dist/admin/src/content-manager/services/relations.d.ts +5 -5
- package/dist/admin/src/content-manager/services/uid.d.ts +2 -2
- package/dist/admin/src/content-manager/utils/attributes.d.ts +4 -4
- package/dist/admin/src/core/apis/content-manager.d.ts +33 -5
- package/dist/admin/src/index.d.ts +2 -1
- package/dist/admin/src/pages/Settings/components/Tokens/FormHead.d.ts +2 -2
- package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Users/components/NewUserForm.d.ts +2 -2
- package/dist/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.d.ts +5 -5
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +3 -3
- package/dist/admin/src/render.d.ts +2 -2
- package/dist/admin/src/services/apiTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +6 -6
- package/dist/admin/src/services/webhooks.d.ts +1 -1
- package/dist/admin/test.js +2606 -4
- package/dist/admin/test.js.map +1 -1
- package/dist/admin/test.mjs +2607 -5
- package/dist/admin/test.mjs.map +1 -1
- package/dist/admin/{transferTokens-HxKzbhZt.js → transferTokens-P5z1yVh2.js} +2 -2
- package/dist/admin/{transferTokens-HxKzbhZt.js.map → transferTokens-P5z1yVh2.js.map} +1 -1
- package/dist/admin/{transferTokens-QOZjk416.mjs → transferTokens-PlBVZdw3.mjs} +2 -2
- package/dist/admin/{transferTokens-QOZjk416.mjs.map → transferTokens-PlBVZdw3.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-YT1f2LGL.mjs → useAdminRoles-bTVTWj4N.mjs} +2 -2
- package/dist/admin/{useAdminRoles-YT1f2LGL.mjs.map → useAdminRoles-bTVTWj4N.mjs.map} +1 -1
- package/dist/admin/{useAdminRoles-pS_ZatAB.js → useAdminRoles-efJpe2jv.js} +2 -2
- package/dist/admin/{useAdminRoles-pS_ZatAB.js.map → useAdminRoles-efJpe2jv.js.map} +1 -1
- package/dist/admin/{useContentTypes-Or3rDVks.mjs → useContentTypes-PEGh0Cg-.mjs} +2 -2
- package/dist/admin/{useContentTypes-Or3rDVks.mjs.map → useContentTypes-PEGh0Cg-.mjs.map} +1 -1
- package/dist/admin/{useContentTypes-RJRHsheR.js → useContentTypes-RoSvxizj.js} +2 -2
- package/dist/admin/{useContentTypes-RJRHsheR.js.map → useContentTypes-RoSvxizj.js.map} +1 -1
- package/dist/admin/{useDocumentLayout-5UQF9Yls.mjs → useDocumentLayout-4trWL6Jz.mjs} +2 -2
- package/dist/admin/useDocumentLayout-4trWL6Jz.mjs.map +1 -0
- package/dist/admin/{useDocumentLayout-wBQQmFJL.js → useDocumentLayout-V_N5dUwQ.js} +2 -2
- package/dist/admin/useDocumentLayout-V_N5dUwQ.js.map +1 -0
- package/dist/admin/{useLicenseLimitNotification-EXzXTEr3.mjs → useLicenseLimitNotification-4B6SglGc.mjs} +3 -3
- package/dist/admin/{useLicenseLimitNotification-EXzXTEr3.mjs.map → useLicenseLimitNotification-4B6SglGc.mjs.map} +1 -1
- package/dist/admin/{useLicenseLimitNotification-KDK7jUFG.js → useLicenseLimitNotification-lLyTIkNR.js} +3 -3
- package/dist/admin/{useLicenseLimitNotification-KDK7jUFG.js.map → useLicenseLimitNotification-lLyTIkNR.js.map} +1 -1
- package/dist/admin/{useReviewWorkflows-vIYhJ1WA.mjs → useReviewWorkflows-1IXSO8ml.mjs} +2 -2
- package/dist/admin/{useReviewWorkflows-vIYhJ1WA.mjs.map → useReviewWorkflows-1IXSO8ml.mjs.map} +1 -1
- package/dist/admin/{useReviewWorkflows-2ubos26m.js → useReviewWorkflows-KJq-ld3U.js} +2 -2
- package/dist/admin/{useReviewWorkflows-2ubos26m.js.map → useReviewWorkflows-KJq-ld3U.js.map} +1 -1
- package/dist/admin/{useSyncRbac-Od0wrAnD.mjs → useSyncRbac-LNOzRXJ5.mjs} +2 -2
- package/dist/admin/{useSyncRbac-Od0wrAnD.mjs.map → useSyncRbac-LNOzRXJ5.mjs.map} +1 -1
- package/dist/admin/{useSyncRbac-fR63KADE.js → useSyncRbac-vkWgDJTE.js} +2 -2
- package/dist/admin/{useSyncRbac-fR63KADE.js.map → useSyncRbac-vkWgDJTE.js.map} +1 -1
- package/dist/admin/{useWebhooks-KtPvzcTB.js → useWebhooks-DmGNXCdi.js} +2 -2
- package/dist/admin/{useWebhooks-KtPvzcTB.js.map → useWebhooks-DmGNXCdi.js.map} +1 -1
- package/dist/admin/{useWebhooks-7Grr2wYu.mjs → useWebhooks-dOVyaYlw.mjs} +2 -2
- package/dist/admin/{useWebhooks-7Grr2wYu.mjs.map → useWebhooks-dOVyaYlw.mjs.map} +1 -1
- package/dist/admin/{validateWorkflow-dAaScNrW.js → validateWorkflow-1RnC2GKb.js} +3 -3
- package/dist/admin/validateWorkflow-1RnC2GKb.js.map +1 -0
- package/dist/admin/{validateWorkflow-KQMhiXda.mjs → validateWorkflow-BOHXHGsM.mjs} +3 -3
- package/dist/admin/validateWorkflow-BOHXHGsM.mjs.map +1 -0
- package/dist/admin/{validation-uxcqs4Uq.mjs → validation-cpJKCQz1.mjs} +2 -2
- package/dist/admin/{validation-uxcqs4Uq.mjs.map → validation-cpJKCQz1.mjs.map} +1 -1
- package/dist/admin/{validation-aKPvEh9F.js → validation-lIVymZ0n.js} +2 -2
- package/dist/admin/{validation-aKPvEh9F.js.map → validation-lIVymZ0n.js.map} +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions.d.ts +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer.d.ts +3 -3
- package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.d.ts +4 -4
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/admin/src/services/reviewWorkflows.d.ts +4 -4
- package/dist/ee/server/index.js +5 -5
- package/dist/ee/server/index.js.map +1 -1
- package/dist/ee/server/index.mjs +6 -6
- package/dist/ee/server/index.mjs.map +1 -1
- package/dist/package.json.d.ts +11 -11
- package/dist/server/index.js +80 -76
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +81 -77
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +2 -2
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
- package/dist/server/src/domain/action/index.d.ts +21 -8
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/domain/user.d.ts +1 -1
- package/dist/server/src/middlewares/index.d.ts +1 -1
- package/dist/server/src/middlewares/rateLimit.d.ts +2 -2
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
- package/dist/server/src/register.d.ts +2 -2
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts +2 -2
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts +5 -5
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +9 -9
- package/dist/server/src/services/metrics.d.ts +3 -3
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/passport/local-strategy.d.ts +2 -2
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts +5 -6
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +2 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +6 -2
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts +6 -6
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +5 -5
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/server/src/validation/api-tokens.d.ts +27 -4
- package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
- package/dist/server/src/validation/authentication/register.d.ts +8 -2
- package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
- package/dist/server/src/validation/permission.d.ts +53 -4
- package/dist/server/src/validation/permission.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +7 -2
- package/dist/server/src/validation/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts +23 -6
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/src/validation/transfer/token.d.ts +23 -4
- package/dist/server/src/validation/transfer/token.d.ts.map +1 -1
- package/dist/server/src/validation/user.d.ts +56 -8
- package/dist/server/src/validation/user.d.ts.map +1 -1
- package/dist/shared/contracts/api-token.d.ts +5 -5
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/dist/shared/contracts/content-api.d.ts +2 -2
- package/dist/shared/contracts/content-api.d.ts.map +1 -1
- package/dist/shared/contracts/review-workflows.d.ts +2 -2
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/dist/shared/contracts/roles.d.ts +3 -3
- package/dist/shared/contracts/roles.d.ts.map +1 -1
- package/dist/shared/contracts/shared.d.ts +4 -4
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/dist/shared/contracts/user.d.ts +6 -6
- package/dist/shared/contracts/user.d.ts.map +1 -1
- package/dist/shared/contracts/webhooks.d.ts +8 -8
- package/dist/shared/contracts/webhooks.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/admin/CreatePage-XuobAWJK.mjs.map +0 -1
- package/dist/admin/CreatePage-dQ2vPAka.js.map +0 -1
- package/dist/admin/EditPage-T3344ZeF.mjs.map +0 -1
- package/dist/admin/EditPage-icpAlX0U.js.map +0 -1
- package/dist/admin/FieldTypeIcon--WKPFDG2.js.map +0 -1
- package/dist/admin/FieldTypeIcon-AibcTcXN.mjs.map +0 -1
- package/dist/admin/Filters-8DH_AqD9.mjs.map +0 -1
- package/dist/admin/Filters-ogIU7Q6e.js.map +0 -1
- package/dist/admin/Form-qYMSW-OI.mjs.map +0 -1
- package/dist/admin/Form-ykqsO6fm.js.map +0 -1
- package/dist/admin/InputRenderer-89lhMw5B.js.map +0 -1
- package/dist/admin/InputRenderer-ddUokGFQ.mjs.map +0 -1
- package/dist/admin/ListPage-LLm7jeMJ.js.map +0 -1
- package/dist/admin/ListPage-NfgDLiTv.js.map +0 -1
- package/dist/admin/ListPage-k7Cm8qlS.mjs.map +0 -1
- package/dist/admin/ListPage-u0H0CObE.mjs.map +0 -1
- package/dist/admin/ListView-5cUHtatI.js.map +0 -1
- package/dist/admin/ListView-ZrssEOAH.js.map +0 -1
- package/dist/admin/ListView-he-cDEr8.mjs.map +0 -1
- package/dist/admin/ListView-wtrnAeIs.mjs.map +0 -1
- package/dist/admin/ListViewPage--usbPNMW.js.map +0 -1
- package/dist/admin/ListViewPage-fcwyHB4o.mjs.map +0 -1
- package/dist/admin/Table-BKVants3.js.map +0 -1
- package/dist/admin/Table-idNir8r9.mjs.map +0 -1
- package/dist/admin/TokenTypeSelect-Y6C3wEJm.js.map +0 -1
- package/dist/admin/TokenTypeSelect-k_R6xVFw.mjs.map +0 -1
- package/dist/admin/index-Sd8uo7mE.mjs.map +0 -1
- package/dist/admin/index-_fZT3TVe.js.map +0 -1
- package/dist/admin/reducers-TOuLOGw_.mjs.map +0 -1
- package/dist/admin/reducers-uDxSALD_.js.map +0 -1
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Buttons.d.ts +0 -12
- package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/SelectedEntriesModal.d.ts +0 -29
- package/dist/admin/useDocumentLayout-5UQF9Yls.mjs.map +0 -1
- package/dist/admin/useDocumentLayout-wBQQmFJL.js.map +0 -1
- package/dist/admin/validateWorkflow-KQMhiXda.mjs.map +0 -1
- package/dist/admin/validateWorkflow-dAaScNrW.js.map +0 -1
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Entity } from '@strapi/types';
|
|
2
|
-
import type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';
|
|
3
|
-
interface BulkActionButtonsProps {
|
|
4
|
-
data?: Contracts.CollectionTypes.Find.Response['results'];
|
|
5
|
-
refetchData: () => Promise<void>;
|
|
6
|
-
showPublish?: boolean;
|
|
7
|
-
showDelete?: boolean;
|
|
8
|
-
onConfirmDeleteAll: (ids: Entity.ID[]) => Promise<void>;
|
|
9
|
-
onConfirmUnpublishAll: (ids: Entity.ID[]) => Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
declare const BulkActionButtons: ({ showPublish, showDelete, onConfirmDeleteAll, onConfirmUnpublishAll, data, refetchData, }: BulkActionButtonsProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export { BulkActionButtons };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { Entity } from '@strapi/types';
|
|
3
|
-
import { MessageDescriptor } from 'react-intl';
|
|
4
|
-
import { ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';
|
|
5
|
-
interface EntryValidationTextProps {
|
|
6
|
-
validationErrors?: Record<string, MessageDescriptor>;
|
|
7
|
-
isPublished?: boolean;
|
|
8
|
-
}
|
|
9
|
-
interface SelectedEntriesTableContentProps {
|
|
10
|
-
isPublishing?: boolean;
|
|
11
|
-
rowsToDisplay?: TableRow[];
|
|
12
|
-
entriesToPublish?: Entity.ID[];
|
|
13
|
-
validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;
|
|
14
|
-
}
|
|
15
|
-
interface SelectedEntriesModalContentProps extends Pick<SelectedEntriesTableContentProps, 'validationErrors'> {
|
|
16
|
-
refetchModalData: React.MouseEventHandler<HTMLButtonElement>;
|
|
17
|
-
setEntriesToFetch: React.Dispatch<React.SetStateAction<Entity.ID[]>>;
|
|
18
|
-
setSelectedListViewEntries: React.Dispatch<React.SetStateAction<Entity.ID[]>>;
|
|
19
|
-
toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];
|
|
20
|
-
}
|
|
21
|
-
interface TableRow {
|
|
22
|
-
id: Entity.ID;
|
|
23
|
-
publishedAt: string | null;
|
|
24
|
-
}
|
|
25
|
-
interface SelectedEntriesModalProps {
|
|
26
|
-
onToggle: SelectedEntriesModalContentProps['toggleModal'];
|
|
27
|
-
}
|
|
28
|
-
declare const SelectedEntriesModal: ({ onToggle }: SelectedEntriesModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
-
export { SelectedEntriesModal };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentLayout-5UQF9Yls.mjs","sources":["../../admin/src/utils/users.ts","../../admin/src/content-manager/features/DocumentRBAC.tsx","../../admin/src/components/RelativeTime.tsx","../../admin/src/components/FormInputs/Boolean.tsx","../../admin/src/components/FormInputs/Checkbox.tsx","../../admin/src/components/FormInputs/Date.tsx","../../admin/src/components/FormInputs/DateTime.tsx","../../admin/src/components/FormInputs/Email.tsx","../../admin/src/components/FormInputs/Enumeration.tsx","../../admin/src/components/FormInputs/Json.tsx","../../admin/src/components/FormInputs/Number.tsx","../../admin/src/components/FormInputs/Password.tsx","../../admin/src/components/FormInputs/String.tsx","../../admin/src/components/FormInputs/Textarea.tsx","../../admin/src/components/FormInputs/Time.tsx","../../admin/src/components/FormInputs/Renderer.tsx","../../admin/src/content-manager/utils/attributes.ts","../../admin/src/content-manager/hooks/useDocumentLayout.ts"],"sourcesContent":["import type { SanitizedAdminUser } from '../../../shared/contracts/shared';\nimport type { IntlShape } from 'react-intl';\n\n/**\n * Retrieves the display name of an admin panel user\n */\nconst getDisplayName = (\n {\n firstname,\n lastname,\n username,\n email,\n }: Pick<SanitizedAdminUser, 'firstname' | 'lastname' | 'username' | 'email'> = {},\n formatMessage: IntlShape['formatMessage']\n): string => {\n if (username) {\n return username;\n }\n\n // firstname is not required if the user is created with a username\n if (firstname) {\n return formatMessage(\n {\n id: 'global.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname,\n lastname,\n }\n ).trim();\n }\n\n return email ?? '';\n};\n\nexport { getDisplayName };\n","import * as React from 'react';\n\nimport { useParams } from 'react-router-dom';\n\nimport { createContext } from '../../components/Context';\nimport { useAuth, type Permission } from '../../features/Auth';\nimport { useRBAC } from '../../hooks/useRBAC';\n\nimport type { Attribute } from '@strapi/types';\n\n/**\n * The boolean values indicate the global actions a user can perform on the document.\n * The `string[]` values tell us specifically which fields the actions can be performed on,\n * for example, if the `canReadFields` array is empty, than no fields can be read by the user.\n * This can happen even if the user can read the document.\n */\ninterface DocumentRBACContextValue {\n canCreate?: boolean;\n canCreateFields: string[];\n canDelete?: boolean;\n canPublish?: boolean;\n canRead?: boolean;\n canReadFields: string[];\n canUpdate?: boolean;\n canUpdateFields: string[];\n canUserAction: (\n fieldName: string,\n fieldsUserCanAction: string[],\n fieldType: Attribute.Kind\n ) => boolean;\n isLoading: boolean;\n}\n\nconst [DocumentRBACProvider, useDocumentRBAC] = createContext<DocumentRBACContextValue>(\n 'DocumentRBAC',\n {\n canCreate: false,\n canCreateFields: [],\n canDelete: false,\n canPublish: false,\n canRead: false,\n canReadFields: [],\n canUpdate: false,\n canUpdateFields: [],\n canUserAction: () => false,\n isLoading: false,\n }\n);\n\ninterface DocumentRBACProps {\n children: React.ReactNode;\n permissions: Permission[] | null;\n}\n\n/**\n * @internal This component is not meant to be used outside of the Content Manager plugin.\n * It depends on knowing the slug/model of the content-type using the params of the URL.\n * If you do use the hook outside of the context, we default to `false` for all actions.\n *\n * It then creates an list of `can{Action}` that are passed to the context for consumption\n * within the app to enforce RBAC.\n */\nconst DocumentRBAC = ({ children, permissions }: DocumentRBACProps) => {\n const { slug } = useParams<{ slug: string }>();\n\n if (!slug) {\n throw new Error('Cannot find the slug param in the URL');\n }\n\n const userPermissions = useAuth('DocumentRBAC', (state) => state.permissions);\n\n const contentTypePermissions = React.useMemo(() => {\n const contentTypePermissions = userPermissions.filter(\n (permission) => permission.subject === slug\n );\n return contentTypePermissions.reduce<Record<string, Permission[]>>((acc, permission) => {\n const [action] = permission.action.split('.').slice(-1);\n return { ...acc, [action]: [permission] };\n }, {});\n }, [slug, userPermissions]);\n\n const { isLoading, allowedActions } = useRBAC(contentTypePermissions, permissions ?? undefined);\n\n const canCreateFields =\n !isLoading && allowedActions.canCreate\n ? extractAndDedupeFields(contentTypePermissions.create)\n : [];\n\n const canReadFields =\n !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];\n\n const canUpdateFields =\n !isLoading && allowedActions.canUpdate\n ? extractAndDedupeFields(contentTypePermissions.update)\n : [];\n\n /**\n * @description Checks if the user can perform an action on a field based on the field names\n * provided as the second argument.\n */\n const canUserAction: DocumentRBACContextValue['canUserAction'] = React.useCallback(\n (fieldName, fieldsUserCanAction, fieldType) => {\n const name = removeNumericalStrings(fieldName.split('.'));\n\n const componentFieldNames = fieldsUserCanAction\n // filter out fields that aren't components (components are dot separated)\n .filter((field) => field.split('.').length > 1);\n\n if (fieldType === 'component') {\n const componentOrDynamicZoneFields = componentFieldNames\n // then map to give us the dot separate path as an array\n .map((field) => field.split('.'));\n // check if the field name is within any of those arrays\n return componentOrDynamicZoneFields.some((field) => {\n return field.includes(fieldName);\n });\n }\n\n /**\n * The field is within a component.\n */\n if (name.length > 1) {\n return componentFieldNames.includes(name.join('.'));\n }\n\n /**\n * just a regular field\n */\n return fieldsUserCanAction.includes(fieldName);\n },\n []\n );\n\n return (\n <DocumentRBACProvider\n isLoading={isLoading}\n canCreateFields={canCreateFields}\n canReadFields={canReadFields}\n canUpdateFields={canUpdateFields}\n canUserAction={canUserAction}\n {...allowedActions}\n >\n {children}\n </DocumentRBACProvider>\n );\n};\n\n/**\n * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.\n */\nconst extractAndDedupeFields = (permissions: Permission[] = []) =>\n permissions\n .flatMap((permission) => permission.properties?.fields)\n .filter(\n (field, index, arr): field is string =>\n arr.indexOf(field) === index && typeof field === 'string'\n );\n\n/**\n * @internal removes numerical strings from arrays.\n * @example\n * ```ts\n * const name = 'a.0.b';\n * const res = removeNumericalStrings(name.split('.'));\n * console.log(res); // ['a', 'b']\n * ```\n */\nconst removeNumericalStrings = (arr: string[]) => arr.filter((item) => isNaN(Number(item)));\n\nexport { DocumentRBAC, useDocumentRBAC, DocumentRBACContextValue, DocumentRBACProps };\n","import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n","import { forwardRef } from 'react';\n\nimport { ToggleInput, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <ToggleInput\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n error={field.error}\n /**\n * TODO: reintroduce labelActions\n */\n // labelAction={labelAction}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n onClear={() => {\n field.onChange(props.name, null);\n }}\n {...props}\n />\n );\n});\n\nexport { BooleanInput };\n","import { forwardRef } from 'react';\n\nimport { Checkbox, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst CheckboxInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const field = useField<boolean>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n <Checkbox\n onValueChange={(checked) => field.onChange(props.name, checked)}\n ref={composedRefs}\n value={field.value}\n {...props}\n >\n {props.label || props['aria-label']}\n </Checkbox>\n );\n});\n\nexport { CheckboxInput };\n","import { forwardRef } from 'react';\n\nimport { DatePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateInput = forwardRef<HTMLInputElement, InputProps>(({ type: _type, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DatePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n selectedDate={value}\n {...props}\n />\n );\n});\n\nexport { DateInput };\n","import { forwardRef } from 'react';\n\nimport { DateTimePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateTimeInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DateTimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={value}\n {...props}\n />\n );\n});\n\nexport { DateTimeInput };\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const EmailInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"email\"\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type=\"email\"\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { SingleSelect, SingleSelectOption, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { EnumerationProps } from './types';\n\nexport const EnumerationInput = forwardRef<any, EnumerationProps>(\n ({ options = [], ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <SingleSelect\n ref={composedRefs}\n error={field.error}\n onChange={(value) => {\n field.onChange(props.name, value);\n }}\n value={field.value}\n {...props}\n >\n {options.map(({ value, label, disabled, hidden }) => {\n return (\n <SingleSelectOption key={value} value={value} disabled={disabled} hidden={hidden}>\n {label ?? value}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { JSONInput as JSONInputImpl, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const JsonInput = forwardRef<any, InputProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <JSONInputImpl\n ref={composedRefs}\n value={field.value}\n error={field.error}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value = props.required && !json.length ? null : json;\n field.onChange(props.name, value);\n }}\n minHeight={`${252 / 16}rem`}\n maxHeight={`${504 / 16}rem`}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { NumberInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst NumberInputImpl = forwardRef<HTMLInputElement, InputProps>(({ type, ...props }, ref) => {\n const field = useField<number>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <NumberInput\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onValueChange={(value) => {\n field.onChange(props.name, value);\n }}\n step={type === 'float' || type == 'decimal' ? 0.01 : 1}\n value={field.value}\n {...props}\n />\n );\n});\n\nexport { NumberInputImpl as NumberInput };\n","import { forwardRef, useState } from 'react';\n\nimport { Icon, TextInput, useComposedRefs } from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const PasswordInput = forwardRef<any, StringProps>((props, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n const { formatMessage } = useIntl();\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"password\"\n error={field.error}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? (\n <Icon as={Eye} color=\"neutral500\" />\n ) : (\n <Icon as={EyeStriked} color=\"neutral500\" />\n )}\n </button>\n }\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type={showPassword ? 'text' : 'password'}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { type InputProps, useField } from '../Form';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const StringInput = forwardRef<any, InputProps>(({ ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n error={field.error}\n defaultValue={field.initialValue}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Textarea, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const TextareaInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <Textarea\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TimePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst TimeInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<string>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(time) => {\n field.onChange(props.name, time);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n\nexport { TimeInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { BooleanInput } from './Boolean';\nimport { CheckboxInput } from './Checkbox';\nimport { DateInput } from './Date';\nimport { DateTimeInput } from './DateTime';\nimport { EmailInput } from './Email';\nimport { EnumerationInput } from './Enumeration';\nimport { JsonInput } from './Json';\nimport { NumberInput } from './Number';\nimport { PasswordInput } from './Password';\nimport { StringInput } from './String';\nimport { TextareaInput } from './Textarea';\nimport { TimeInput } from './Time';\n\nimport type { InputProps } from '../Form';\n\n/* -------------------------------------------------------------------------------------------------\n * InputRenderer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal This needs to be tested before being exposed as a public API.\n * @experimental\n * @description A generic form renderer for Strapi forms. Similar to GenericInputs but with a different API.\n * The entire component is memoized to avoid re-renders in large forms.\n */\nconst InputRenderer = memo(\n forwardRef<any, InputProps>((props, forwardRef) => {\n switch (props.type) {\n case 'biginteger':\n case 'timestamp':\n case 'string':\n return <StringInput ref={forwardRef} {...props} />;\n case 'boolean':\n return <BooleanInput ref={forwardRef} {...props} />;\n case 'checkbox':\n return <CheckboxInput ref={forwardRef} {...props} />;\n case 'datetime':\n return <DateTimeInput ref={forwardRef} {...props} />;\n case 'date':\n return <DateInput ref={forwardRef} {...props} />;\n case 'decimal':\n case 'float':\n case 'integer':\n return <NumberInput ref={forwardRef} {...props} />;\n case 'json':\n return <JsonInput ref={forwardRef} {...props} />;\n case 'email':\n return <EmailInput ref={forwardRef} {...props} />;\n case 'enumeration':\n return <EnumerationInput ref={forwardRef} {...props} />;\n case 'password':\n return <PasswordInput ref={forwardRef} {...props} />;\n case 'text':\n return <TextareaInput ref={forwardRef} {...props} />;\n case 'time':\n return <TimeInput ref={forwardRef} {...props} />;\n default:\n // This is cast because this renderer tackles all the possibilities of the InputProps, but this is for runtime catches.\n return <NotSupportedField ref={forwardRef} {...(props as InputProps)} />;\n }\n })\n);\n\nconst NotSupportedField = forwardRef<any, InputProps>((props, ref) => {\n const { error } = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <TextInput\n ref={composedRefs}\n disabled\n error={error}\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n label={props.label}\n id={props.name}\n hint={props.hint}\n name={props.name}\n placeholder={`Unsupported field type: ${props.type}`}\n required={props.required}\n type=\"text\"\n value=\"\"\n />\n );\n});\n\nexport { InputRenderer };\n","import type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Attribute } from '@strapi/types';\n\nconst checkIfAttributeIsDisplayable = (attribute: Attribute.Any) => {\n const { type } = attribute;\n\n if (type === 'relation') {\n return !attribute.relation.toLowerCase().includes('morph');\n }\n\n return !['json', 'dynamiczone', 'richtext', 'password', 'blocks'].includes(type) && !!type;\n};\n\ninterface MainField {\n name: string;\n type: Attribute.Kind | 'custom';\n}\n\n/**\n * @internal\n * @description given an attribute, content-type schemas & component schemas, find the mainField name & type.\n * If the attribute does not need a `mainField` then we return undefined. If we do not find the type\n * of the field, we assume it's a string #sensible-defaults\n */\nconst getMainField = (\n attribute: Attribute.Any,\n mainFieldName: string | undefined,\n { schemas, components }: { schemas: Schema[]; components: ComponentsDictionary }\n): MainField | undefined => {\n if (!mainFieldName) {\n return undefined;\n }\n\n const mainFieldType =\n attribute.type === 'component'\n ? components[attribute.component].attributes[mainFieldName].type\n : // @ts-expect-error – `targetModel` does exist on the attribute for a relation.\n schemas.find((schema) => schema.uid === attribute.targetModel)?.attributes[mainFieldName]\n .type;\n\n return {\n name: mainFieldName,\n type: mainFieldType ?? 'string',\n };\n};\n\nexport { checkIfAttributeIsDisplayable, getMainField };\nexport type { MainField };\n","import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\n\nimport { HOOKS } from '../../constants';\nimport { useNotification } from '../../features/Notifications';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { BaseQueryError } from '../../utils/baseQuery';\nimport { useGetContentTypeConfigurationQuery } from '../services/contentTypes';\nimport { getMainField } from '../utils/attributes';\n\nimport { useContentTypeSchema } from './useContentTypeSchema';\nimport {\n type ComponentsDictionary,\n type Document,\n type Schema,\n useDoc,\n useDocument,\n} from './useDocument';\n\nimport type { Filters } from '../../components/Filters';\nimport type { InputProps } from '../../components/FormInputs/types';\nimport type { Table } from '../../components/Table';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport type { Attribute } from '@strapi/types';\n\ntype LayoutOptions = Schema['options'] & Schema['pluginOptions'] & object;\n\ninterface LayoutSettings extends Contracts.ContentTypes.Settings {\n displayName?: string;\n icon?: never;\n}\n\ninterface ListFieldLayout\n extends Table.Header<Document, ListFieldLayout>,\n Pick<Filters.Filter, 'mainField'> {\n attribute: Attribute.Any | { type: 'custom' };\n}\n\ninterface ListLayout {\n layout: ListFieldLayout[];\n components?: never;\n metadatas: {\n [K in keyof Contracts.ContentTypes.Metadatas]: Contracts.ContentTypes.Metadatas[K]['list'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\ninterface EditFieldSharedProps\n extends Omit<InputProps, 'hint' | 'label' | 'type'>,\n Pick<Filters.Filter, 'mainField'> {\n hint?: string;\n label: string;\n size: number;\n unique?: boolean;\n visible?: boolean;\n}\n\n/**\n * Map over all the types in Attribute Types and use that to create a union of new types where the attribute type\n * is under the property attribute and the type is under the property type.\n */\ntype EditFieldLayout = {\n [K in Attribute.Kind]: EditFieldSharedProps & {\n attribute: Extract<Attribute.Any, { type: K }>;\n type: K;\n };\n}[Attribute.Kind];\n\ninterface EditLayout {\n layout: Array<Array<EditFieldLayout[]>>;\n components: {\n [uid: string]: {\n layout: Array<EditFieldLayout[]>;\n settings: Contracts.Components.ComponentConfiguration['settings'] & {\n displayName?: string;\n icon?: string;\n };\n };\n };\n metadatas: {\n [K in keyof Contracts.ContentTypes.Metadatas]: Contracts.ContentTypes.Metadatas[K]['edit'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\n\ntype UseDocumentLayout = (model: string) => {\n error?: BaseQueryError | SerializedError;\n isLoading: boolean;\n /**\n * This is the layout for the edit view,\n */\n edit: EditLayout;\n list: ListLayout;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocumentLayout\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEFAULT_SETTINGS = {\n bulkable: false,\n filterable: false,\n searchable: false,\n pagination: false,\n defaultSortBy: '',\n defaultSortOrder: 'asc',\n mainField: 'id',\n pageSize: 10,\n};\n\n/**\n * @alpha\n * @description This hook is used to get the layouts for either the edit view or list view of a specific content-type\n * including the layouts for the components used in the content-type. It also runs the mutation hook waterfall so the data\n * is consistent wherever it is used. It's a light wrapper around the `useDocument` hook, but provides the `skip` option a document\n * is not fetched, however, it does fetch the schemas & components if they do not already exist in the cache.\n *\n * If the fetch fails, it will display a notification to the user.\n *\n * @example\n * ```tsx\n * const { model } = useParams<{ model: string }>();\n * const { edit: { schema: layout } } = useDocumentLayout(model);\n *\n * return layout.map(panel => panel.map(row => row.map(field => <Field {...field} />)))\n * ```\n *\n */\nconst useDocumentLayout: UseDocumentLayout = (model) => {\n const { schema, components } = useDocument({ model, collectionType: '' }, { skip: true });\n const [{ query }] = useQueryParams();\n const runHookWaterfall = useStrapiApp('useDocumentLayout', (state) => state.runHookWaterfall);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchemas, schemas } = useContentTypeSchema();\n\n const { data, isLoading: isLoadingConfigs, error } = useGetContentTypeConfigurationQuery(model);\n\n const isLoading = isLoadingSchemas || isLoadingConfigs;\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const editLayout = React.useMemo(\n () =>\n data\n ? formatEditLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, schema, components, schemas]\n );\n\n const listLayout = React.useMemo(() => {\n return data\n ? formatListLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as ListLayout);\n }, [data, schema, schemas, components]);\n\n const { layout: edit } = React.useMemo(\n () =>\n runHookWaterfall(HOOKS.MUTATE_EDIT_VIEW_LAYOUT, {\n layout: editLayout,\n query,\n }),\n [editLayout, query, runHookWaterfall]\n );\n\n return {\n error,\n isLoading,\n edit,\n list: listLayout,\n } satisfies ReturnType<UseDocumentLayout>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal this hook uses the internal useDoc hook, as such it shouldn't be used outside of the\n * content-manager because it won't work as intended.\n */\nconst useDocLayout = () => {\n const { model } = useDoc();\n return useDocumentLayout(model);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatEditLayout\n * -----------------------------------------------------------------------------------------------*/\ntype LayoutData = Contracts.ContentTypes.FindContentTypeConfiguration.Response['data'];\n\n/**\n * @internal\n * @description takes the configuration data, the schema & the components used in the schema and formats the edit view\n * vesions of the schema & components. This is then used to redner the edit view of the content-type.\n */\nconst formatEditLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): EditLayout => {\n let currentPanelIndex = 0;\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const panelledEditAttributes = convertEditLayoutToFieldLayouts(\n data.contentType.layouts.edit,\n schema?.attributes,\n data.contentType.metadatas,\n { configurations: data.components, schemas: components },\n schemas\n ).reduce<Array<EditFieldLayout[][]>>((panels, row) => {\n if (row.some((field) => field.type === 'dynamiczone')) {\n panels.push([row]);\n currentPanelIndex += 2;\n } else {\n if (!panels[currentPanelIndex]) {\n panels.push([]);\n }\n panels[currentPanelIndex].push(row);\n }\n\n return panels;\n }, []);\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.contentType.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: panelledEditAttributes,\n components: componentEditAttributes,\n metadatas: editMetadatas,\n settings: {\n ...data.contentType.settings,\n displayName: schema?.info.displayName,\n },\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertEditLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the edit layout from either a content-type or a component\n * and formats it into a generic object that can be used to correctly render\n * the form fields.\n */\nconst convertEditLayoutToFieldLayouts = (\n rows: LayoutData['contentType']['layouts']['edit'],\n attributes: Schema['attributes'] = {},\n metadatas: Contracts.ContentTypes.Metadatas,\n components?: {\n configurations: Record<string, Contracts.Components.ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return rows.map((row) =>\n row\n .map((field) => {\n const attribute = attributes[field.name];\n\n if (!attribute) {\n return null;\n }\n\n const { edit: metadata } = metadatas[field.name];\n\n const settings: Partial<Contracts.ContentTypes.Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n disabled: !metadata.editable,\n hint: metadata.description,\n label: metadata.label ?? '',\n name: field.name,\n // @ts-expect-error – mainField does exist on the metadata for a relation.\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n placeholder: metadata.placeholder ?? '',\n required: attribute.required ?? false,\n size: field.size,\n unique: 'unique' in attribute ? attribute.unique : false,\n visible: metadata.visible ?? true,\n type: attribute.type,\n };\n })\n .filter((field) => field !== null)\n ) as EditFieldLayout[][];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatListLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the complete configuration data, the schema & the components used in the schema and\n * formats a list view layout for the content-type. This is much simpler than the edit view layout as there\n * are less options to consider.\n */\nconst formatListLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): ListLayout => {\n const listMetadatas = Object.entries(data.contentType.metadatas).reduce<ListLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.list,\n };\n },\n {}\n );\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const listAttributes = convertListLayoutToFieldLayouts(\n data.contentType.layouts.list,\n schema?.attributes,\n listMetadatas,\n { configurations: data.components, schemas: components },\n schemas\n );\n\n return {\n layout: listAttributes,\n settings: { ...data.contentType.settings, displayName: schema?.info.displayName },\n metadatas: listMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertListLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the columns from the list view configuration and formats them into a generic object\n * combinining metadata and attribute data.\n *\n * @note We do use this to reformat the list of strings when updating the displayed headers for the list view.\n */\nconst convertListLayoutToFieldLayouts = (\n columns: LayoutData['contentType']['layouts']['list'],\n attributes: Schema['attributes'] = {},\n metadatas: ListLayout['metadatas'],\n components?: {\n configurations: Record<string, Contracts.Components.ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return columns\n .map((name) => {\n const attribute = attributes[name];\n\n if (!attribute) {\n return null;\n }\n\n const metadata = metadatas[name];\n\n const settings: Partial<Contracts.ContentTypes.Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n label: metadata.label ?? '',\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n name: name,\n searchable: metadata.searchable ?? true,\n sortable: metadata.sortable ?? true,\n } satisfies ListFieldLayout;\n })\n .filter((field) => field !== null) as ListFieldLayout[];\n};\n\nexport {\n useDocLayout,\n useDocumentLayout,\n convertListLayoutToFieldLayouts,\n convertEditLayoutToFieldLayouts,\n DEFAULT_SETTINGS,\n};\nexport type { EditLayout, EditFieldLayout, ListLayout, ListFieldLayout, UseDocumentLayout };\n"],"names":["contentTypePermissions","JSONInputImpl","forwardRef","NumberInput"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentLayout-wBQQmFJL.js","sources":["../../admin/src/utils/users.ts","../../admin/src/content-manager/features/DocumentRBAC.tsx","../../admin/src/components/RelativeTime.tsx","../../admin/src/components/FormInputs/Boolean.tsx","../../admin/src/components/FormInputs/Checkbox.tsx","../../admin/src/components/FormInputs/Date.tsx","../../admin/src/components/FormInputs/DateTime.tsx","../../admin/src/components/FormInputs/Email.tsx","../../admin/src/components/FormInputs/Enumeration.tsx","../../admin/src/components/FormInputs/Json.tsx","../../admin/src/components/FormInputs/Number.tsx","../../admin/src/components/FormInputs/Password.tsx","../../admin/src/components/FormInputs/String.tsx","../../admin/src/components/FormInputs/Textarea.tsx","../../admin/src/components/FormInputs/Time.tsx","../../admin/src/components/FormInputs/Renderer.tsx","../../admin/src/content-manager/utils/attributes.ts","../../admin/src/content-manager/hooks/useDocumentLayout.ts"],"sourcesContent":["import type { SanitizedAdminUser } from '../../../shared/contracts/shared';\nimport type { IntlShape } from 'react-intl';\n\n/**\n * Retrieves the display name of an admin panel user\n */\nconst getDisplayName = (\n {\n firstname,\n lastname,\n username,\n email,\n }: Pick<SanitizedAdminUser, 'firstname' | 'lastname' | 'username' | 'email'> = {},\n formatMessage: IntlShape['formatMessage']\n): string => {\n if (username) {\n return username;\n }\n\n // firstname is not required if the user is created with a username\n if (firstname) {\n return formatMessage(\n {\n id: 'global.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname,\n lastname,\n }\n ).trim();\n }\n\n return email ?? '';\n};\n\nexport { getDisplayName };\n","import * as React from 'react';\n\nimport { useParams } from 'react-router-dom';\n\nimport { createContext } from '../../components/Context';\nimport { useAuth, type Permission } from '../../features/Auth';\nimport { useRBAC } from '../../hooks/useRBAC';\n\nimport type { Attribute } from '@strapi/types';\n\n/**\n * The boolean values indicate the global actions a user can perform on the document.\n * The `string[]` values tell us specifically which fields the actions can be performed on,\n * for example, if the `canReadFields` array is empty, than no fields can be read by the user.\n * This can happen even if the user can read the document.\n */\ninterface DocumentRBACContextValue {\n canCreate?: boolean;\n canCreateFields: string[];\n canDelete?: boolean;\n canPublish?: boolean;\n canRead?: boolean;\n canReadFields: string[];\n canUpdate?: boolean;\n canUpdateFields: string[];\n canUserAction: (\n fieldName: string,\n fieldsUserCanAction: string[],\n fieldType: Attribute.Kind\n ) => boolean;\n isLoading: boolean;\n}\n\nconst [DocumentRBACProvider, useDocumentRBAC] = createContext<DocumentRBACContextValue>(\n 'DocumentRBAC',\n {\n canCreate: false,\n canCreateFields: [],\n canDelete: false,\n canPublish: false,\n canRead: false,\n canReadFields: [],\n canUpdate: false,\n canUpdateFields: [],\n canUserAction: () => false,\n isLoading: false,\n }\n);\n\ninterface DocumentRBACProps {\n children: React.ReactNode;\n permissions: Permission[] | null;\n}\n\n/**\n * @internal This component is not meant to be used outside of the Content Manager plugin.\n * It depends on knowing the slug/model of the content-type using the params of the URL.\n * If you do use the hook outside of the context, we default to `false` for all actions.\n *\n * It then creates an list of `can{Action}` that are passed to the context for consumption\n * within the app to enforce RBAC.\n */\nconst DocumentRBAC = ({ children, permissions }: DocumentRBACProps) => {\n const { slug } = useParams<{ slug: string }>();\n\n if (!slug) {\n throw new Error('Cannot find the slug param in the URL');\n }\n\n const userPermissions = useAuth('DocumentRBAC', (state) => state.permissions);\n\n const contentTypePermissions = React.useMemo(() => {\n const contentTypePermissions = userPermissions.filter(\n (permission) => permission.subject === slug\n );\n return contentTypePermissions.reduce<Record<string, Permission[]>>((acc, permission) => {\n const [action] = permission.action.split('.').slice(-1);\n return { ...acc, [action]: [permission] };\n }, {});\n }, [slug, userPermissions]);\n\n const { isLoading, allowedActions } = useRBAC(contentTypePermissions, permissions ?? undefined);\n\n const canCreateFields =\n !isLoading && allowedActions.canCreate\n ? extractAndDedupeFields(contentTypePermissions.create)\n : [];\n\n const canReadFields =\n !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];\n\n const canUpdateFields =\n !isLoading && allowedActions.canUpdate\n ? extractAndDedupeFields(contentTypePermissions.update)\n : [];\n\n /**\n * @description Checks if the user can perform an action on a field based on the field names\n * provided as the second argument.\n */\n const canUserAction: DocumentRBACContextValue['canUserAction'] = React.useCallback(\n (fieldName, fieldsUserCanAction, fieldType) => {\n const name = removeNumericalStrings(fieldName.split('.'));\n\n const componentFieldNames = fieldsUserCanAction\n // filter out fields that aren't components (components are dot separated)\n .filter((field) => field.split('.').length > 1);\n\n if (fieldType === 'component') {\n const componentOrDynamicZoneFields = componentFieldNames\n // then map to give us the dot separate path as an array\n .map((field) => field.split('.'));\n // check if the field name is within any of those arrays\n return componentOrDynamicZoneFields.some((field) => {\n return field.includes(fieldName);\n });\n }\n\n /**\n * The field is within a component.\n */\n if (name.length > 1) {\n return componentFieldNames.includes(name.join('.'));\n }\n\n /**\n * just a regular field\n */\n return fieldsUserCanAction.includes(fieldName);\n },\n []\n );\n\n return (\n <DocumentRBACProvider\n isLoading={isLoading}\n canCreateFields={canCreateFields}\n canReadFields={canReadFields}\n canUpdateFields={canUpdateFields}\n canUserAction={canUserAction}\n {...allowedActions}\n >\n {children}\n </DocumentRBACProvider>\n );\n};\n\n/**\n * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.\n */\nconst extractAndDedupeFields = (permissions: Permission[] = []) =>\n permissions\n .flatMap((permission) => permission.properties?.fields)\n .filter(\n (field, index, arr): field is string =>\n arr.indexOf(field) === index && typeof field === 'string'\n );\n\n/**\n * @internal removes numerical strings from arrays.\n * @example\n * ```ts\n * const name = 'a.0.b';\n * const res = removeNumericalStrings(name.split('.'));\n * console.log(res); // ['a', 'b']\n * ```\n */\nconst removeNumericalStrings = (arr: string[]) => arr.filter((item) => isNaN(Number(item)));\n\nexport { DocumentRBAC, useDocumentRBAC, DocumentRBACContextValue, DocumentRBACProps };\n","import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit = intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n })!;\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n","import { forwardRef } from 'react';\n\nimport { ToggleInput, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <ToggleInput\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n error={field.error}\n /**\n * TODO: reintroduce labelActions\n */\n // labelAction={labelAction}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n onClear={() => {\n field.onChange(props.name, null);\n }}\n {...props}\n />\n );\n});\n\nexport { BooleanInput };\n","import { forwardRef } from 'react';\n\nimport { Checkbox, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst CheckboxInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const field = useField<boolean>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n <Checkbox\n onValueChange={(checked) => field.onChange(props.name, checked)}\n ref={composedRefs}\n value={field.value}\n {...props}\n >\n {props.label || props['aria-label']}\n </Checkbox>\n );\n});\n\nexport { CheckboxInput };\n","import { forwardRef } from 'react';\n\nimport { DatePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateInput = forwardRef<HTMLInputElement, InputProps>(({ type: _type, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DatePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n selectedDate={value}\n {...props}\n />\n );\n});\n\nexport { DateInput };\n","import { forwardRef } from 'react';\n\nimport { DateTimePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst DateTimeInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<Date>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n const value = typeof field.value === 'string' ? new Date(field.value) : field.value;\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <DateTimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(date) => {\n field.onChange(props.name, date);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={value}\n {...props}\n />\n );\n});\n\nexport { DateTimeInput };\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const EmailInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"email\"\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type=\"email\"\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { SingleSelect, SingleSelectOption, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { EnumerationProps } from './types';\n\nexport const EnumerationInput = forwardRef<any, EnumerationProps>(\n ({ options = [], ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <SingleSelect\n ref={composedRefs}\n error={field.error}\n onChange={(value) => {\n field.onChange(props.name, value);\n }}\n value={field.value}\n {...props}\n >\n {options.map(({ value, label, disabled, hidden }) => {\n return (\n <SingleSelectOption key={value} value={value} disabled={disabled} hidden={hidden}>\n {label ?? value}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n }\n);\n","import { forwardRef } from 'react';\n\nimport { JSONInput as JSONInputImpl, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const JsonInput = forwardRef<any, InputProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <JSONInputImpl\n ref={composedRefs}\n value={field.value}\n error={field.error}\n onChange={(json) => {\n // Default to null when the field is not required and there is no input value\n const value = props.required && !json.length ? null : json;\n field.onChange(props.name, value);\n }}\n minHeight={`${252 / 16}rem`}\n maxHeight={`${504 / 16}rem`}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { NumberInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst NumberInputImpl = forwardRef<HTMLInputElement, InputProps>(({ type, ...props }, ref) => {\n const field = useField<number>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <NumberInput\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onValueChange={(value) => {\n field.onChange(props.name, value);\n }}\n step={type === 'float' || type == 'decimal' ? 0.01 : 1}\n value={field.value}\n {...props}\n />\n );\n});\n\nexport { NumberInputImpl as NumberInput };\n","import { forwardRef, useState } from 'react';\n\nimport { Icon, TextInput, useComposedRefs } from '@strapi/design-system';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const PasswordInput = forwardRef<any, StringProps>((props, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n const { formatMessage } = useIntl();\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n autoComplete=\"password\"\n error={field.error}\n endAction={\n <button\n aria-label={formatMessage({\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n })}\n onClick={() => {\n setShowPassword((prev) => !prev);\n }}\n style={{\n border: 'none',\n padding: 0,\n background: 'transparent',\n }}\n type=\"button\"\n >\n {showPassword ? (\n <Icon as={Eye} color=\"neutral500\" />\n ) : (\n <Icon as={EyeStriked} color=\"neutral500\" />\n )}\n </button>\n }\n id={props.name}\n onChange={field.onChange}\n defaultValue={field.initialValue}\n value={field.value}\n {...props}\n type={showPassword ? 'text' : 'password'}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { type InputProps, useField } from '../Form';\n\n/**\n * TODO: fix the ref type when the design system is fixed.\n */\nexport const StringInput = forwardRef<any, InputProps>(({ ...props }, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TextInput\n ref={composedRefs}\n error={field.error}\n defaultValue={field.initialValue}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { Textarea, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport type { StringProps } from './types';\n\nexport const TextareaInput = forwardRef<any, StringProps>((props, ref) => {\n const field = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <Textarea\n ref={composedRefs}\n defaultValue={field.initialValue}\n error={field.error}\n id={props.name}\n onChange={field.onChange}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n","import { forwardRef } from 'react';\n\nimport { TimePicker, useComposedRefs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst TimeInput = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<string>(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs<HTMLInputElement | null>(ref, fieldRef);\n\n return (\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n <TimePicker\n ref={composedRefs}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n error={field.error}\n id={props.name}\n onChange={(time) => {\n field.onChange(props.name, time);\n }}\n onClear={() => field.onChange(props.name, undefined)}\n value={field.value ?? ''}\n {...props}\n />\n );\n});\n\nexport { TimeInput };\n","import { forwardRef, memo } from 'react';\n\nimport { TextInput, useComposedRefs } from '@strapi/design-system';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { BooleanInput } from './Boolean';\nimport { CheckboxInput } from './Checkbox';\nimport { DateInput } from './Date';\nimport { DateTimeInput } from './DateTime';\nimport { EmailInput } from './Email';\nimport { EnumerationInput } from './Enumeration';\nimport { JsonInput } from './Json';\nimport { NumberInput } from './Number';\nimport { PasswordInput } from './Password';\nimport { StringInput } from './String';\nimport { TextareaInput } from './Textarea';\nimport { TimeInput } from './Time';\n\nimport type { InputProps } from '../Form';\n\n/* -------------------------------------------------------------------------------------------------\n * InputRenderer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal This needs to be tested before being exposed as a public API.\n * @experimental\n * @description A generic form renderer for Strapi forms. Similar to GenericInputs but with a different API.\n * The entire component is memoized to avoid re-renders in large forms.\n */\nconst InputRenderer = memo(\n forwardRef<any, InputProps>((props, forwardRef) => {\n switch (props.type) {\n case 'biginteger':\n case 'timestamp':\n case 'string':\n return <StringInput ref={forwardRef} {...props} />;\n case 'boolean':\n return <BooleanInput ref={forwardRef} {...props} />;\n case 'checkbox':\n return <CheckboxInput ref={forwardRef} {...props} />;\n case 'datetime':\n return <DateTimeInput ref={forwardRef} {...props} />;\n case 'date':\n return <DateInput ref={forwardRef} {...props} />;\n case 'decimal':\n case 'float':\n case 'integer':\n return <NumberInput ref={forwardRef} {...props} />;\n case 'json':\n return <JsonInput ref={forwardRef} {...props} />;\n case 'email':\n return <EmailInput ref={forwardRef} {...props} />;\n case 'enumeration':\n return <EnumerationInput ref={forwardRef} {...props} />;\n case 'password':\n return <PasswordInput ref={forwardRef} {...props} />;\n case 'text':\n return <TextareaInput ref={forwardRef} {...props} />;\n case 'time':\n return <TimeInput ref={forwardRef} {...props} />;\n default:\n // This is cast because this renderer tackles all the possibilities of the InputProps, but this is for runtime catches.\n return <NotSupportedField ref={forwardRef} {...(props as InputProps)} />;\n }\n })\n);\n\nconst NotSupportedField = forwardRef<any, InputProps>((props, ref) => {\n const { error } = useField(props.name);\n const fieldRef = useFocusInputField(props.name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <TextInput\n ref={composedRefs}\n disabled\n error={error}\n // @ts-expect-error – label _could_ be a ReactNode since it's a child, this should be fixed in the DS.\n label={props.label}\n id={props.name}\n hint={props.hint}\n name={props.name}\n placeholder={`Unsupported field type: ${props.type}`}\n required={props.required}\n type=\"text\"\n value=\"\"\n />\n );\n});\n\nexport { InputRenderer };\n","import type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Attribute } from '@strapi/types';\n\nconst checkIfAttributeIsDisplayable = (attribute: Attribute.Any) => {\n const { type } = attribute;\n\n if (type === 'relation') {\n return !attribute.relation.toLowerCase().includes('morph');\n }\n\n return !['json', 'dynamiczone', 'richtext', 'password', 'blocks'].includes(type) && !!type;\n};\n\ninterface MainField {\n name: string;\n type: Attribute.Kind | 'custom';\n}\n\n/**\n * @internal\n * @description given an attribute, content-type schemas & component schemas, find the mainField name & type.\n * If the attribute does not need a `mainField` then we return undefined. If we do not find the type\n * of the field, we assume it's a string #sensible-defaults\n */\nconst getMainField = (\n attribute: Attribute.Any,\n mainFieldName: string | undefined,\n { schemas, components }: { schemas: Schema[]; components: ComponentsDictionary }\n): MainField | undefined => {\n if (!mainFieldName) {\n return undefined;\n }\n\n const mainFieldType =\n attribute.type === 'component'\n ? components[attribute.component].attributes[mainFieldName].type\n : // @ts-expect-error – `targetModel` does exist on the attribute for a relation.\n schemas.find((schema) => schema.uid === attribute.targetModel)?.attributes[mainFieldName]\n .type;\n\n return {\n name: mainFieldName,\n type: mainFieldType ?? 'string',\n };\n};\n\nexport { checkIfAttributeIsDisplayable, getMainField };\nexport type { MainField };\n","import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\n\nimport { HOOKS } from '../../constants';\nimport { useNotification } from '../../features/Notifications';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { BaseQueryError } from '../../utils/baseQuery';\nimport { useGetContentTypeConfigurationQuery } from '../services/contentTypes';\nimport { getMainField } from '../utils/attributes';\n\nimport { useContentTypeSchema } from './useContentTypeSchema';\nimport {\n type ComponentsDictionary,\n type Document,\n type Schema,\n useDoc,\n useDocument,\n} from './useDocument';\n\nimport type { Filters } from '../../components/Filters';\nimport type { InputProps } from '../../components/FormInputs/types';\nimport type { Table } from '../../components/Table';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport type { Attribute } from '@strapi/types';\n\ntype LayoutOptions = Schema['options'] & Schema['pluginOptions'] & object;\n\ninterface LayoutSettings extends Contracts.ContentTypes.Settings {\n displayName?: string;\n icon?: never;\n}\n\ninterface ListFieldLayout\n extends Table.Header<Document, ListFieldLayout>,\n Pick<Filters.Filter, 'mainField'> {\n attribute: Attribute.Any | { type: 'custom' };\n}\n\ninterface ListLayout {\n layout: ListFieldLayout[];\n components?: never;\n metadatas: {\n [K in keyof Contracts.ContentTypes.Metadatas]: Contracts.ContentTypes.Metadatas[K]['list'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\ninterface EditFieldSharedProps\n extends Omit<InputProps, 'hint' | 'label' | 'type'>,\n Pick<Filters.Filter, 'mainField'> {\n hint?: string;\n label: string;\n size: number;\n unique?: boolean;\n visible?: boolean;\n}\n\n/**\n * Map over all the types in Attribute Types and use that to create a union of new types where the attribute type\n * is under the property attribute and the type is under the property type.\n */\ntype EditFieldLayout = {\n [K in Attribute.Kind]: EditFieldSharedProps & {\n attribute: Extract<Attribute.Any, { type: K }>;\n type: K;\n };\n}[Attribute.Kind];\n\ninterface EditLayout {\n layout: Array<Array<EditFieldLayout[]>>;\n components: {\n [uid: string]: {\n layout: Array<EditFieldLayout[]>;\n settings: Contracts.Components.ComponentConfiguration['settings'] & {\n displayName?: string;\n icon?: string;\n };\n };\n };\n metadatas: {\n [K in keyof Contracts.ContentTypes.Metadatas]: Contracts.ContentTypes.Metadatas[K]['edit'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\n\ntype UseDocumentLayout = (model: string) => {\n error?: BaseQueryError | SerializedError;\n isLoading: boolean;\n /**\n * This is the layout for the edit view,\n */\n edit: EditLayout;\n list: ListLayout;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocumentLayout\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEFAULT_SETTINGS = {\n bulkable: false,\n filterable: false,\n searchable: false,\n pagination: false,\n defaultSortBy: '',\n defaultSortOrder: 'asc',\n mainField: 'id',\n pageSize: 10,\n};\n\n/**\n * @alpha\n * @description This hook is used to get the layouts for either the edit view or list view of a specific content-type\n * including the layouts for the components used in the content-type. It also runs the mutation hook waterfall so the data\n * is consistent wherever it is used. It's a light wrapper around the `useDocument` hook, but provides the `skip` option a document\n * is not fetched, however, it does fetch the schemas & components if they do not already exist in the cache.\n *\n * If the fetch fails, it will display a notification to the user.\n *\n * @example\n * ```tsx\n * const { model } = useParams<{ model: string }>();\n * const { edit: { schema: layout } } = useDocumentLayout(model);\n *\n * return layout.map(panel => panel.map(row => row.map(field => <Field {...field} />)))\n * ```\n *\n */\nconst useDocumentLayout: UseDocumentLayout = (model) => {\n const { schema, components } = useDocument({ model, collectionType: '' }, { skip: true });\n const [{ query }] = useQueryParams();\n const runHookWaterfall = useStrapiApp('useDocumentLayout', (state) => state.runHookWaterfall);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchemas, schemas } = useContentTypeSchema();\n\n const { data, isLoading: isLoadingConfigs, error } = useGetContentTypeConfigurationQuery(model);\n\n const isLoading = isLoadingSchemas || isLoadingConfigs;\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const editLayout = React.useMemo(\n () =>\n data\n ? formatEditLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, schema, components, schemas]\n );\n\n const listLayout = React.useMemo(() => {\n return data\n ? formatListLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as ListLayout);\n }, [data, schema, schemas, components]);\n\n const { layout: edit } = React.useMemo(\n () =>\n runHookWaterfall(HOOKS.MUTATE_EDIT_VIEW_LAYOUT, {\n layout: editLayout,\n query,\n }),\n [editLayout, query, runHookWaterfall]\n );\n\n return {\n error,\n isLoading,\n edit,\n list: listLayout,\n } satisfies ReturnType<UseDocumentLayout>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal this hook uses the internal useDoc hook, as such it shouldn't be used outside of the\n * content-manager because it won't work as intended.\n */\nconst useDocLayout = () => {\n const { model } = useDoc();\n return useDocumentLayout(model);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatEditLayout\n * -----------------------------------------------------------------------------------------------*/\ntype LayoutData = Contracts.ContentTypes.FindContentTypeConfiguration.Response['data'];\n\n/**\n * @internal\n * @description takes the configuration data, the schema & the components used in the schema and formats the edit view\n * vesions of the schema & components. This is then used to redner the edit view of the content-type.\n */\nconst formatEditLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): EditLayout => {\n let currentPanelIndex = 0;\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const panelledEditAttributes = convertEditLayoutToFieldLayouts(\n data.contentType.layouts.edit,\n schema?.attributes,\n data.contentType.metadatas,\n { configurations: data.components, schemas: components },\n schemas\n ).reduce<Array<EditFieldLayout[][]>>((panels, row) => {\n if (row.some((field) => field.type === 'dynamiczone')) {\n panels.push([row]);\n currentPanelIndex += 2;\n } else {\n if (!panels[currentPanelIndex]) {\n panels.push([]);\n }\n panels[currentPanelIndex].push(row);\n }\n\n return panels;\n }, []);\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.contentType.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: panelledEditAttributes,\n components: componentEditAttributes,\n metadatas: editMetadatas,\n settings: {\n ...data.contentType.settings,\n displayName: schema?.info.displayName,\n },\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertEditLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the edit layout from either a content-type or a component\n * and formats it into a generic object that can be used to correctly render\n * the form fields.\n */\nconst convertEditLayoutToFieldLayouts = (\n rows: LayoutData['contentType']['layouts']['edit'],\n attributes: Schema['attributes'] = {},\n metadatas: Contracts.ContentTypes.Metadatas,\n components?: {\n configurations: Record<string, Contracts.Components.ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return rows.map((row) =>\n row\n .map((field) => {\n const attribute = attributes[field.name];\n\n if (!attribute) {\n return null;\n }\n\n const { edit: metadata } = metadatas[field.name];\n\n const settings: Partial<Contracts.ContentTypes.Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n disabled: !metadata.editable,\n hint: metadata.description,\n label: metadata.label ?? '',\n name: field.name,\n // @ts-expect-error – mainField does exist on the metadata for a relation.\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n placeholder: metadata.placeholder ?? '',\n required: attribute.required ?? false,\n size: field.size,\n unique: 'unique' in attribute ? attribute.unique : false,\n visible: metadata.visible ?? true,\n type: attribute.type,\n };\n })\n .filter((field) => field !== null)\n ) as EditFieldLayout[][];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatListLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the complete configuration data, the schema & the components used in the schema and\n * formats a list view layout for the content-type. This is much simpler than the edit view layout as there\n * are less options to consider.\n */\nconst formatListLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): ListLayout => {\n const listMetadatas = Object.entries(data.contentType.metadatas).reduce<ListLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.list,\n };\n },\n {}\n );\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const listAttributes = convertListLayoutToFieldLayouts(\n data.contentType.layouts.list,\n schema?.attributes,\n listMetadatas,\n { configurations: data.components, schemas: components },\n schemas\n );\n\n return {\n layout: listAttributes,\n settings: { ...data.contentType.settings, displayName: schema?.info.displayName },\n metadatas: listMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertListLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the columns from the list view configuration and formats them into a generic object\n * combinining metadata and attribute data.\n *\n * @note We do use this to reformat the list of strings when updating the displayed headers for the list view.\n */\nconst convertListLayoutToFieldLayouts = (\n columns: LayoutData['contentType']['layouts']['list'],\n attributes: Schema['attributes'] = {},\n metadatas: ListLayout['metadatas'],\n components?: {\n configurations: Record<string, Contracts.Components.ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return columns\n .map((name) => {\n const attribute = attributes[name];\n\n if (!attribute) {\n return null;\n }\n\n const metadata = metadatas[name];\n\n const settings: Partial<Contracts.ContentTypes.Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n label: metadata.label ?? '',\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n name: name,\n searchable: metadata.searchable ?? true,\n sortable: metadata.sortable ?? true,\n } satisfies ListFieldLayout;\n })\n .filter((field) => field !== null) as ListFieldLayout[];\n};\n\nexport {\n useDocLayout,\n useDocumentLayout,\n convertListLayoutToFieldLayouts,\n convertEditLayoutToFieldLayouts,\n DEFAULT_SETTINGS,\n};\nexport type { EditLayout, EditFieldLayout, ListLayout, ListFieldLayout, UseDocumentLayout };\n"],"names":["createContext","useParams","useAuth","React","contentTypePermissions","useRBAC","jsx","useIntl","intervalToDuration","isPast","forwardRef","useField","useFocusInputField","useComposedRefs","ToggleInput","Checkbox","DatePicker","DateTimePicker","TextInput","SingleSelect","SingleSelectOption","JSONInputImpl","NumberInput","useState","Icon","Eye","EyeStriked","Textarea","TimePicker","memo","useDocument","useQueryParams","useStrapiApp","useNotification","useAPIErrorHandler","useContentTypeSchema","useGetContentTypeConfigurationQuery","HOOKS","useDoc"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,iBAAiB,CACrB;AAAA,EACE,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AACF,CAA+E,GAAA,IAC/E,aACW,KAAA;AACX,EAAA,IAAI,QAAU,EAAA;AACZ,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AAGA,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,aAAA;AAAA,MACL;AAAA,QACE,EAAI,EAAA,iBAAA;AAAA,QACJ,cAAgB,EAAA,wBAAA;AAAA,OAClB;AAAA,MACA;AAAA,QACE,SAAA;AAAA,QACA,QAAA;AAAA,OACF;AAAA,MACA,IAAK,EAAA,CAAA;AAAA,GACT;AAEA,EAAA,OAAO,KAAS,IAAA,EAAA,CAAA;AAClB;;ACDM,MAAA,CAAC,oBAAsB,EAAA,eAAe,CAAI,GAAAA,oBAAA;AAAA,EAC9C,cAAA;AAAA,EACA;AAAA,IACE,SAAW,EAAA,KAAA;AAAA,IACX,iBAAiB,EAAC;AAAA,IAClB,SAAW,EAAA,KAAA;AAAA,IACX,UAAY,EAAA,KAAA;AAAA,IACZ,OAAS,EAAA,KAAA;AAAA,IACT,eAAe,EAAC;AAAA,IAChB,SAAW,EAAA,KAAA;AAAA,IACX,iBAAiB,EAAC;AAAA,IAClB,eAAe,MAAM,KAAA;AAAA,IACrB,SAAW,EAAA,KAAA;AAAA,GACb;AACF,EAAA;AAeA,MAAM,YAAe,GAAA,CAAC,EAAE,QAAA,EAAU,aAAqC,KAAA;AACrE,EAAM,MAAA,EAAE,IAAK,EAAA,GAAIC,wBAA4B,EAAA,CAAA;AAE7C,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAM,MAAA,IAAI,MAAM,uCAAuC,CAAA,CAAA;AAAA,GACzD;AAEA,EAAA,MAAM,kBAAkBC,cAAQ,CAAA,cAAA,EAAgB,CAAC,KAAA,KAAU,MAAM,WAAW,CAAA,CAAA;AAE5E,EAAM,MAAA,sBAAA,GAAyBC,gBAAM,CAAA,OAAA,CAAQ,MAAM;AACjD,IAAA,MAAMC,0BAAyB,eAAgB,CAAA,MAAA;AAAA,MAC7C,CAAC,UAAe,KAAA,UAAA,CAAW,OAAY,KAAA,IAAA;AAAA,KACzC,CAAA;AACA,IAAA,OAAOA,uBAAuB,CAAA,MAAA,CAAqC,CAAC,GAAA,EAAK,UAAe,KAAA;AACtF,MAAM,MAAA,CAAC,MAAM,CAAI,GAAA,UAAA,CAAW,OAAO,KAAM,CAAA,GAAG,CAAE,CAAA,KAAA,CAAM,CAAE,CAAA,CAAA,CAAA;AACtD,MAAO,OAAA,EAAE,GAAG,GAAK,EAAA,CAAC,MAAM,GAAG,CAAC,UAAU,CAAE,EAAA,CAAA;AAAA,KAC1C,EAAG,EAAE,CAAA,CAAA;AAAA,GACJ,EAAA,CAAC,IAAM,EAAA,eAAe,CAAC,CAAA,CAAA;AAE1B,EAAA,MAAM,EAAE,SAAW,EAAA,cAAA,KAAmBC,cAAQ,CAAA,sBAAA,EAAwB,eAAe,KAAS,CAAA,CAAA,CAAA;AAE9F,EAAM,MAAA,eAAA,GACJ,CAAC,SAAa,IAAA,cAAA,CAAe,YACzB,sBAAuB,CAAA,sBAAA,CAAuB,MAAM,CAAA,GACpD,EAAC,CAAA;AAEP,EAAM,MAAA,aAAA,GACJ,CAAC,SAAa,IAAA,cAAA,CAAe,UAAU,sBAAuB,CAAA,sBAAA,CAAuB,IAAI,CAAA,GAAI,EAAC,CAAA;AAEhG,EAAM,MAAA,eAAA,GACJ,CAAC,SAAa,IAAA,cAAA,CAAe,YACzB,sBAAuB,CAAA,sBAAA,CAAuB,MAAM,CAAA,GACpD,EAAC,CAAA;AAMP,EAAA,MAAM,gBAA2DF,gBAAM,CAAA,WAAA;AAAA,IACrE,CAAC,SAAW,EAAA,mBAAA,EAAqB,SAAc,KAAA;AAC7C,MAAA,MAAM,IAAO,GAAA,sBAAA,CAAuB,SAAU,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA;AAExD,MAAM,MAAA,mBAAA,GAAsB,mBAEzB,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,MAAM,KAAM,CAAA,GAAG,CAAE,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AAEhD,MAAA,IAAI,cAAc,WAAa,EAAA;AAC7B,QAAM,MAAA,4BAAA,GAA+B,oBAElC,GAAI,CAAA,CAAC,UAAU,KAAM,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA;AAElC,QAAO,OAAA,4BAAA,CAA6B,IAAK,CAAA,CAAC,KAAU,KAAA;AAClD,UAAO,OAAA,KAAA,CAAM,SAAS,SAAS,CAAA,CAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAKA,MAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,QAAA,OAAO,mBAAoB,CAAA,QAAA,CAAS,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,OACpD;AAKA,MAAO,OAAA,mBAAA,CAAoB,SAAS,SAAS,CAAA,CAAA;AAAA,KAC/C;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EACE,uBAAAG,cAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACC,GAAG,cAAA;AAAA,MAEH,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,EAAA;AAKA,MAAM,sBAAyB,GAAA,CAAC,WAA4B,GAAA,EAC1D,KAAA,WAAA,CACG,OAAQ,CAAA,CAAC,UAAe,KAAA,UAAA,CAAW,UAAY,EAAA,MAAM,CACrD,CAAA,MAAA;AAAA,EACC,CAAC,KAAO,EAAA,KAAA,EAAO,GACb,KAAA,GAAA,CAAI,QAAQ,KAAK,CAAA,KAAM,KAAS,IAAA,OAAO,KAAU,KAAA,QAAA;AACrD,CAAA,CAAA;AAWJ,MAAM,sBAAA,GAAyB,CAAC,GAAA,KAAkB,GAAI,CAAA,MAAA,CAAO,CAAC,IAAA,KAAS,KAAM,CAAA,MAAA,CAAO,IAAI,CAAC,CAAC,CAAA;;AClK1F,MAAM,YAAmC,CAAC,OAAA,EAAS,UAAU,MAAQ,EAAA,OAAA,EAAS,WAAW,SAAS,CAAA,CAAA;AA2BlG,MAAM,eAAeH,gBAAM,CAAA,UAAA;AAAA,EACzB,CAAC,EAAE,SAAW,EAAA,eAAA,GAAkB,EAAI,EAAA,GAAG,SAAU,EAAA,EAAG,YAAiB,KAAA;AACnE,IAAA,MAAM,EAAE,kBAAA,EAAoB,UAAY,EAAA,UAAA,KAAeI,iBAAQ,EAAA,CAAA;AAK/D,IAAA,MAAM,WAAWC,0BAAmB,CAAA;AAAA,MAClC,KAAO,EAAA,SAAA;AAAA,MACP,GAAA,EAAK,KAAK,GAAI,EAAA;AAAA;AAAA,KAEf,CAAA,CAAA;AAED,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,IAAK,CAAA,CAAC,YAAiB,KAAA;AAC5C,MAAO,OAAA,QAAA,CAAS,YAAY,CAAI,GAAA,CAAA,IAAK,OAAO,IAAK,CAAA,QAAQ,CAAE,CAAA,QAAA,CAAS,YAAY,CAAA,CAAA;AAAA,KACjF,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAeC,eAAO,SAAS,CAAA,GAAI,CAAC,QAAS,CAAA,IAAI,CAAI,GAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAGxE,IAAA,MAAM,iBAAiB,eAAgB,CAAA,IAAA;AAAA,MACrC,CAAC,MAAW,KAAA,QAAA,CAAS,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,SAAA;AAAA,KAC7C,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,cAChB,GAAA,cAAA,CAAe,IACf,GAAA,kBAAA,CAAmB,cAAc,IAAM,EAAA,EAAE,OAAS,EAAA,MAAA,EAAQ,CAAA,CAAA;AAE9D,IACE,uBAAAH,cAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,QAAA,EAAU,UAAU,WAAY,EAAA;AAAA,QAChC,IAAK,EAAA,MAAA;AAAA,QACL,KAAA,EAAO,GAAG,UAAW,CAAA,SAAS,CAAC,CAAI,CAAA,EAAA,UAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAAA,QACvD,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA,WAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACF;;AC9DA,MAAM,YAAe,GAAAI,gBAAA,CAAyC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAC5E,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIH,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQI,eAAyB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjD,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAE3E,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACQ,wBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,SAAS,KAAM,CAAA,KAAA,KAAU,IAAO,GAAA,IAAA,GAAO,MAAM,KAAS,IAAA,KAAA;AAAA,QACtD,OAAO,KAAM,CAAA,KAAA;AAAA,QAKb,UAAU,aAAc,CAAA;AAAA,UACtB,EAAI,EAAA,yCAAA;AAAA,UACJ,cAAgB,EAAA,OAAA;AAAA,SACjB,CAAA;AAAA,QACD,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,wCAAA;AAAA,UACJ,cAAgB,EAAA,MAAA;AAAA,SACjB,CAAA;AAAA,QACD,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,SAAS,MAAM;AACb,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,SACjC;AAAA,QACC,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACjCD,MAAM,aAAgB,GAAAJ,gBAAA,CAAyC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAC7E,EAAM,MAAA,KAAA,GAAQC,eAAkB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAC1C,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAE3E,EACE,uBAAAP,cAAA;AAAA,IAACS,qBAAA;AAAA,IAAA;AAAA,MACC,eAAe,CAAC,OAAA,KAAY,MAAM,QAAS,CAAA,KAAA,CAAM,MAAM,OAAO,CAAA;AAAA,MAC9D,GAAK,EAAA,YAAA;AAAA,MACL,OAAO,KAAM,CAAA,KAAA;AAAA,MACZ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,YAAY,CAAA;AAAA,KAAA;AAAA,GACpC,CAAA;AAEJ,CAAC,CAAA;;ACfD,MAAM,SAAA,GAAYL,iBAAyC,CAAC,EAAE,MAAM,KAAO,EAAA,GAAG,KAAM,EAAA,EAAG,GAAQ,KAAA;AAC7F,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIH,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQI,eAAe,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACvC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAC3E,EAAM,MAAA,KAAA,GAAQ,OAAO,KAAA,CAAM,KAAU,KAAA,QAAA,GAAW,IAAI,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,GAAI,KAAM,CAAA,KAAA,CAAA;AAE9E,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACU,uBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,YAAY,aAAc,CAAA,EAAE,IAAI,YAAc,EAAA,cAAA,EAAgB,SAAS,CAAA;AAAA,QACvE,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,QAAA,EAAU,CAAC,IAAS,KAAA;AAClB,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,SACjC;AAAA,QACA,SAAS,MAAM,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,MAAM,KAAS,CAAA,CAAA;AAAA,QACnD,YAAc,EAAA,KAAA;AAAA,QACb,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACvBD,MAAM,aAAgB,GAAAN,gBAAA,CAAyC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAC7E,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIH,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQI,eAAe,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACvC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAC3E,EAAM,MAAA,KAAA,GAAQ,OAAO,KAAA,CAAM,KAAU,KAAA,QAAA,GAAW,IAAI,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,GAAI,KAAM,CAAA,KAAA,CAAA;AAE9E,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACW,2BAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,YAAY,aAAc,CAAA,EAAE,IAAI,YAAc,EAAA,cAAA,EAAgB,SAAS,CAAA;AAAA,QACvE,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,QAAA,EAAU,CAAC,IAAS,KAAA;AAClB,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,SACjC;AAAA,QACA,SAAS,MAAM,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,MAAM,KAAS,CAAA,CAAA;AAAA,QACnD,KAAA;AAAA,QACC,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACxBM,MAAM,UAAa,GAAAP,gBAAA,CAA6B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACrE,EAAM,MAAA,KAAA,GAAQC,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACY,sBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,YAAa,EAAA,OAAA;AAAA,QACb,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACZ,GAAG,KAAA;AAAA,QACJ,IAAK,EAAA,OAAA;AAAA,OAAA;AAAA,KACP;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACpBM,MAAM,gBAAmB,GAAAR,gBAAA;AAAA,EAC9B,CAAC,EAAE,OAAU,GAAA,IAAI,GAAG,KAAA,IAAS,GAAQ,KAAA;AACnC,IAAM,MAAA,KAAA,GAAQC,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,IAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,IAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,IAAA;AAAA;AAAA,sBAEEP,cAAA;AAAA,QAACa,yBAAA;AAAA,QAAA;AAAA,UACC,GAAK,EAAA,YAAA;AAAA,UACL,OAAO,KAAM,CAAA,KAAA;AAAA,UACb,QAAA,EAAU,CAAC,KAAU,KAAA;AACnB,YAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,WAClC;AAAA,UACA,OAAO,KAAM,CAAA,KAAA;AAAA,UACZ,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,EAAE,OAAO,KAAO,EAAA,QAAA,EAAU,QAAa,KAAA;AACnD,YAAA,sCACGC,+BAA+B,EAAA,EAAA,KAAA,EAAc,UAAoB,MAC/D,EAAA,QAAA,EAAA,KAAA,IAAS,SADa,KAEzB,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SAAA;AAAA,OACH;AAAA,MAAA;AAAA,GAEJ;AACF,CAAA;;ACzBO,MAAM,SAAY,GAAAV,gBAAA,CAA4B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACnE,EAAM,MAAA,KAAA,GAAQC,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACe,sBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,QAAA,EAAU,CAAC,IAAS,KAAA;AAElB,UAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,IAAY,CAAC,IAAA,CAAK,SAAS,IAAO,GAAA,IAAA,CAAA;AACtD,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,SAClC;AAAA,QACA,SAAA,EAAW,CAAG,EAAA,GAAA,GAAM,EAAE,CAAA,GAAA,CAAA;AAAA,QACtB,SAAA,EAAW,CAAG,EAAA,GAAA,GAAM,EAAE,CAAA,GAAA,CAAA;AAAA,QACrB,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACzBD,MAAM,eAAA,GAAkBX,iBAAyC,CAAC,EAAE,MAAM,GAAG,KAAA,IAAS,GAAQ,KAAA;AAC5F,EAAM,MAAA,KAAA,GAAQC,eAAiB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACzC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAE3E,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACgB,wBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,aAAA,EAAe,CAAC,KAAU,KAAA;AACxB,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,SAClC;AAAA,QACA,IAAM,EAAA,IAAA,KAAS,OAAW,IAAA,IAAA,IAAQ,YAAY,IAAO,GAAA,CAAA;AAAA,QACrD,OAAO,KAAM,CAAA,KAAA;AAAA,QACZ,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACnBM,MAAM,aAAgB,GAAAZ,gBAAA,CAA6B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACxE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIa,eAAS,KAAK,CAAA,CAAA;AACtD,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIhB,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQI,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACY,sBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,YAAa,EAAA,UAAA;AAAA,QACb,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,SACE,kBAAAZ,cAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,cAAY,aAAc,CAAA;AAAA,cACxB,EAAI,EAAA,kCAAA;AAAA,cACJ,cAAgB,EAAA,eAAA;AAAA,aACjB,CAAA;AAAA,YACD,SAAS,MAAM;AACb,cAAgB,eAAA,CAAA,CAAC,IAAS,KAAA,CAAC,IAAI,CAAA,CAAA;AAAA,aACjC;AAAA,YACA,KAAO,EAAA;AAAA,cACL,MAAQ,EAAA,MAAA;AAAA,cACR,OAAS,EAAA,CAAA;AAAA,cACT,UAAY,EAAA,aAAA;AAAA,aACd;AAAA,YACA,IAAK,EAAA,QAAA;AAAA,YAEJ,QACC,EAAA,YAAA,mBAAAA,cAAA,CAACkB,iBAAK,EAAA,EAAA,EAAA,EAAIC,SAAK,EAAA,KAAA,EAAM,YAAa,EAAA,CAAA,mBAEjCnB,cAAA,CAAAkB,iBAAA,EAAA,EAAK,EAAI,EAAAE,gBAAA,EAAY,OAAM,YAAa,EAAA,CAAA;AAAA,WAAA;AAAA,SAE7C;AAAA,QAEF,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACZ,GAAG,KAAA;AAAA,QACJ,IAAA,EAAM,eAAe,MAAS,GAAA,UAAA;AAAA,OAAA;AAAA,KAChC;AAAA,IAAA;AAEJ,CAAC,CAAA;;AC9CM,MAAM,cAAchB,gBAA4B,CAAA,CAAC,EAAE,GAAG,KAAA,IAAS,GAAQ,KAAA;AAC5E,EAAM,MAAA,KAAA,GAAQC,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACY,sBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,KAAA,EAAO,MAAM,KAAS,IAAA,EAAA;AAAA,QACrB,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;AClBM,MAAM,aAAgB,GAAAR,gBAAA,CAA6B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACxE,EAAM,MAAA,KAAA,GAAQC,eAAS,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACqB,qBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,KAAA,EAAO,MAAM,KAAS,IAAA,EAAA;AAAA,QACrB,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACjBD,MAAM,SAAY,GAAAjB,gBAAA,CAAyC,CAAC,KAAA,EAAO,GAAQ,KAAA;AACzE,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIH,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,KAAA,GAAQI,eAAiB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AACzC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAyC,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAE3E,EAAA;AAAA;AAAA,oBAEEP,cAAA;AAAA,MAACsB,uBAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,YAAA;AAAA,QACL,YAAY,aAAc,CAAA,EAAE,IAAI,YAAc,EAAA,cAAA,EAAgB,SAAS,CAAA;AAAA,QACvE,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,IAAI,KAAM,CAAA,IAAA;AAAA,QACV,QAAA,EAAU,CAAC,IAAS,KAAA;AAClB,UAAM,KAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,SACjC;AAAA,QACA,SAAS,MAAM,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,MAAM,KAAS,CAAA,CAAA;AAAA,QACnD,KAAA,EAAO,MAAM,KAAS,IAAA,EAAA;AAAA,QACrB,GAAG,KAAA;AAAA,OAAA;AAAA,KACN;AAAA,IAAA;AAEJ,CAAC,CAAA;;ACAD,MAAM,aAAgB,GAAAC,UAAA;AAAA,EACpBnB,gBAAA,CAA4B,CAAC,KAAA,EAAOA,WAAe,KAAA;AACjD,IAAA,QAAQ,MAAM,IAAM;AAAA,MAClB,KAAK,YAAA,CAAA;AAAA,MACL,KAAK,WAAA,CAAA;AAAA,MACL,KAAK,QAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,WAAA,EAAA,EAAY,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MAClD,KAAK,SAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,YAAA,EAAA,EAAa,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACnD,KAAK,UAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,aAAA,EAAA,EAAc,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACpD,KAAK,UAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,aAAA,EAAA,EAAc,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACpD,KAAK,MAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,SAAA,EAAA,EAAU,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MAChD,KAAK,SAAA,CAAA;AAAA,MACL,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,SAAA;AACH,QAAA,uBAAQJ,cAAA,CAAAgB,eAAA,EAAA,EAAY,GAAKZ,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MAClD,KAAK,MAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,SAAA,EAAA,EAAU,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MAChD,KAAK,OAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,UAAA,EAAA,EAAW,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACjD,KAAK,aAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,gBAAA,EAAA,EAAiB,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACvD,KAAK,UAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,aAAA,EAAA,EAAc,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACpD,KAAK,MAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,aAAA,EAAA,EAAc,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MACpD,KAAK,MAAA;AACH,QAAA,uBAAQJ,cAAA,CAAA,SAAA,EAAA,EAAU,GAAKI,EAAAA,WAAAA,EAAa,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,MAChD;AAEE,QAAA,uBAAQJ,cAAA,CAAA,iBAAA,EAAA,EAAkB,GAAKI,EAAAA,WAAAA,EAAa,GAAI,KAAsB,EAAA,CAAA,CAAA;AAAA,KAC1E;AAAA,GACD,CAAA;AACH,EAAA;AAEA,MAAM,iBAAoB,GAAAA,gBAAA,CAA4B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAU,GAAAC,eAAA,CAAS,MAAM,IAAI,CAAA,CAAA;AACrC,EAAM,MAAA,QAAA,GAAWC,yBAAmB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAE9C,EAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAElD,EACE,uBAAAP,cAAA;AAAA,IAACY,sBAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,YAAA;AAAA,MACL,QAAQ,EAAA,IAAA;AAAA,MACR,KAAA;AAAA,MAEA,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,IAAI,KAAM,CAAA,IAAA;AAAA,MACV,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,WAAA,EAAa,CAA2B,wBAAA,EAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,MAClD,UAAU,KAAM,CAAA,QAAA;AAAA,MAChB,IAAK,EAAA,MAAA;AAAA,MACL,KAAM,EAAA,EAAA;AAAA,KAAA;AAAA,GACR,CAAA;AAEJ,CAAC,CAAA;;ACzFK,MAAA,6BAAA,GAAgC,CAAC,SAA6B,KAAA;AAClE,EAAM,MAAA,EAAE,MAAS,GAAA,SAAA,CAAA;AAEjB,EAAA,IAAI,SAAS,UAAY,EAAA;AACvB,IAAA,OAAO,CAAC,SAAU,CAAA,QAAA,CAAS,WAAY,EAAA,CAAE,SAAS,OAAO,CAAA,CAAA;AAAA,GAC3D;AAEA,EAAA,OAAO,CAAC,CAAC,MAAQ,EAAA,aAAA,EAAe,UAAY,EAAA,UAAA,EAAY,QAAQ,CAAA,CAAE,QAAS,CAAA,IAAI,CAAK,IAAA,CAAC,CAAC,IAAA,CAAA;AACxF,EAAA;AAaA,MAAM,eAAe,CACnB,SAAA,EACA,eACA,EAAE,OAAA,EAAS,YACe,KAAA;AAC1B,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,aAAA,GACJ,SAAU,CAAA,IAAA,KAAS,WACf,GAAA,UAAA,CAAW,UAAU,SAAS,CAAA,CAAE,UAAW,CAAA,aAAa,CAAE,CAAA,IAAA;AAAA;AAAA,IAE1D,OAAA,CAAQ,IAAK,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,GAAQ,KAAA,SAAA,CAAU,WAAW,CAAA,EAAG,UAAW,CAAA,aAAa,CACrF,CAAA,IAAA;AAAA,GAAA,CAAA;AAET,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,aAAA;AAAA,IACN,MAAM,aAAiB,IAAA,QAAA;AAAA,GACzB,CAAA;AACF;;AC2DA,MAAM,gBAAmB,GAAA;AAAA,EACvB,QAAU,EAAA,KAAA;AAAA,EACV,UAAY,EAAA,KAAA;AAAA,EACZ,UAAY,EAAA,KAAA;AAAA,EACZ,UAAY,EAAA,KAAA;AAAA,EACZ,aAAe,EAAA,EAAA;AAAA,EACf,gBAAkB,EAAA,KAAA;AAAA,EAClB,SAAW,EAAA,IAAA;AAAA,EACX,QAAU,EAAA,EAAA;AACZ,EAAA;AAoBM,MAAA,iBAAA,GAAuC,CAAC,KAAU,KAAA;AACtD,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAW,EAAA,GAAIY,kBAAY,CAAA,EAAE,KAAO,EAAA,cAAA,EAAgB,EAAG,EAAA,EAAG,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AACxF,EAAA,MAAM,CAAC,EAAE,KAAM,EAAC,IAAIC,qBAAe,EAAA,CAAA;AACnC,EAAA,MAAM,mBAAmBC,mBAAa,CAAA,mBAAA,EAAqB,CAAC,KAAA,KAAU,MAAM,gBAAgB,CAAA,CAAA;AAC5F,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,sBAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,uBAAA,EAAyB,cAAe,EAAA,GAAIC,yBAAmB,EAAA,CAAA;AACvE,EAAA,MAAM,EAAE,SAAA,EAAW,gBAAkB,EAAA,OAAA,KAAYC,2BAAqB,EAAA,CAAA;AAEtE,EAAA,MAAM,EAAE,IAAM,EAAA,SAAA,EAAW,kBAAkB,KAAM,EAAA,GAAIC,2CAAoC,KAAK,CAAA,CAAA;AAE9F,EAAA,MAAM,YAAY,gBAAoB,IAAA,gBAAA,CAAA;AAEtC,EAAAjC,gBAAA,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,MAAM,aAAaA,gBAAM,CAAA,OAAA;AAAA,IACvB,MACE,OACI,gBAAiB,CAAA,IAAA,EAAM,EAAE,OAAS,EAAA,MAAA,EAAQ,UAAW,EAAC,CACrD,GAAA;AAAA,MACC,QAAQ,EAAC;AAAA,MACT,YAAY,EAAC;AAAA,MACb,WAAW,EAAC;AAAA,MACZ,SAAS,EAAC;AAAA,MACV,QAAU,EAAA,gBAAA;AAAA,KACZ;AAAA,IACN,CAAC,IAAA,EAAM,MAAQ,EAAA,UAAA,EAAY,OAAO,CAAA;AAAA,GACpC,CAAA;AAEA,EAAM,MAAA,UAAA,GAAaA,gBAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAO,OAAA,IAAA,GACH,iBAAiB,IAAM,EAAA,EAAE,SAAS,MAAQ,EAAA,UAAA,EAAY,CACrD,GAAA;AAAA,MACC,QAAQ,EAAC;AAAA,MACT,WAAW,EAAC;AAAA,MACZ,SAAS,EAAC;AAAA,MACV,QAAU,EAAA,gBAAA;AAAA,KACZ,CAAA;AAAA,KACH,CAAC,IAAA,EAAM,MAAQ,EAAA,OAAA,EAAS,UAAU,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAK,EAAA,GAAIA,gBAAM,CAAA,OAAA;AAAA,IAC7B,MACE,gBAAiB,CAAAkC,YAAA,CAAM,uBAAyB,EAAA;AAAA,MAC9C,MAAQ,EAAA,UAAA;AAAA,MACR,KAAA;AAAA,KACD,CAAA;AAAA,IACH,CAAC,UAAY,EAAA,KAAA,EAAO,gBAAgB,CAAA;AAAA,GACtC,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAM,EAAA,UAAA;AAAA,GACR,CAAA;AACF,EAAA;AAUA,MAAM,eAAe,MAAM;AACzB,EAAM,MAAA,EAAE,KAAM,EAAA,GAAIC,aAAO,EAAA,CAAA;AACzB,EAAA,OAAO,kBAAkB,KAAK,CAAA,CAAA;AAChC,EAAA;AAYA,MAAM,gBAAA,GAAmB,CACvB,IACA,EAAA;AAAA,EACE,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,CACe,KAAA;AACf,EAAA,IAAI,iBAAoB,GAAA,CAAA,CAAA;AAIxB,EAAA,MAAM,sBAAyB,GAAA,+BAAA;AAAA,IAC7B,IAAA,CAAK,YAAY,OAAQ,CAAA,IAAA;AAAA,IACzB,MAAQ,EAAA,UAAA;AAAA,IACR,KAAK,WAAY,CAAA,SAAA;AAAA,IACjB,EAAE,cAAA,EAAgB,IAAK,CAAA,UAAA,EAAY,SAAS,UAAW,EAAA;AAAA,IACvD,OAAA;AAAA,GACA,CAAA,MAAA,CAAmC,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACpD,IAAA,IAAI,IAAI,IAAK,CAAA,CAAC,UAAU,KAAM,CAAA,IAAA,KAAS,aAAa,CAAG,EAAA;AACrD,MAAO,MAAA,CAAA,IAAA,CAAK,CAAC,GAAG,CAAC,CAAA,CAAA;AACjB,MAAqB,iBAAA,IAAA,CAAA,CAAA;AAAA,KAChB,MAAA;AACL,MAAI,IAAA,CAAC,MAAO,CAAA,iBAAiB,CAAG,EAAA;AAC9B,QAAO,MAAA,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,OAChB;AACA,MAAO,MAAA,CAAA,iBAAiB,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KACpC;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,uBAA0B,GAAA,MAAA,CAAO,OAAQ,CAAA,IAAA,CAAK,UAAU,CAAE,CAAA,MAAA;AAAA,IAC9D,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,aAAa,CAAM,KAAA;AAC7B,MAAA,GAAA,CAAI,GAAG,CAAI,GAAA;AAAA,QACT,MAAQ,EAAA,+BAAA;AAAA,UACN,cAAc,OAAQ,CAAA,IAAA;AAAA,UACtB,UAAA,CAAW,GAAG,CAAE,CAAA,UAAA;AAAA,UAChB,aAAc,CAAA,SAAA;AAAA,SAChB;AAAA,QACA,QAAU,EAAA;AAAA,UACR,GAAG,aAAc,CAAA,QAAA;AAAA,UACjB,IAAM,EAAA,UAAA,CAAW,GAAG,CAAA,CAAE,IAAK,CAAA,IAAA;AAAA,UAC3B,WAAa,EAAA,UAAA,CAAW,GAAG,CAAA,CAAE,IAAK,CAAA,WAAA;AAAA,SACpC;AAAA,OACF,CAAA;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAO,CAAA,OAAA,CAAQ,IAAK,CAAA,WAAA,CAAY,SAAS,CAAE,CAAA,MAAA;AAAA,IAC/D,CAAC,GAAA,EAAK,CAAC,SAAA,EAAW,QAAQ,CAAM,KAAA;AAC9B,MAAO,OAAA;AAAA,QACL,GAAG,GAAA;AAAA,QACH,CAAC,SAAS,GAAG,QAAS,CAAA,IAAA;AAAA,OACxB,CAAA;AAAA,KACF;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA,sBAAA;AAAA,IACR,UAAY,EAAA,uBAAA;AAAA,IACZ,SAAW,EAAA,aAAA;AAAA,IACX,QAAU,EAAA;AAAA,MACR,GAAG,KAAK,WAAY,CAAA,QAAA;AAAA,MACpB,WAAA,EAAa,QAAQ,IAAK,CAAA,WAAA;AAAA,KAC5B;AAAA,IACA,OAAS,EAAA;AAAA,MACP,GAAG,MAAQ,EAAA,OAAA;AAAA,MACX,GAAG,MAAQ,EAAA,aAAA;AAAA,KACb;AAAA,GACF,CAAA;AACF,CAAA,CAAA;AAYM,MAAA,+BAAA,GAAkC,CACtC,IAAA,EACA,UAAmC,GAAA,IACnC,SACA,EAAA,UAAA,EAIA,OAAoB,GAAA,EACjB,KAAA;AACH,EAAA,OAAO,IAAK,CAAA,GAAA;AAAA,IAAI,CAAC,GAAA,KACf,GACG,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACd,MAAM,MAAA,SAAA,GAAY,UAAW,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAEvC,MAAA,IAAI,CAAC,SAAW,EAAA;AACd,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAa,GAAA,SAAA,CAAU,MAAM,IAAI,CAAA,CAAA;AAE/C,MAAM,MAAA,QAAA,GACJ,SAAU,CAAA,IAAA,KAAS,WAAe,IAAA,UAAA,GAC9B,UAAW,CAAA,cAAA,CAAe,SAAU,CAAA,SAAS,CAAE,CAAA,QAAA,GAC/C,EAAC,CAAA;AAEP,MAAO,OAAA;AAAA,QACL,SAAA;AAAA,QACA,QAAA,EAAU,CAAC,QAAS,CAAA,QAAA;AAAA,QACpB,MAAM,QAAS,CAAA,WAAA;AAAA,QACf,KAAA,EAAO,SAAS,KAAS,IAAA,EAAA;AAAA,QACzB,MAAM,KAAM,CAAA,IAAA;AAAA;AAAA,QAEZ,WAAW,YAAa,CAAA,SAAA,EAAW,QAAS,CAAA,SAAA,IAAa,SAAS,SAAW,EAAA;AAAA,UAC3E,OAAA;AAAA,UACA,UAAA,EAAY,UAAY,EAAA,OAAA,IAAW,EAAC;AAAA,SACrC,CAAA;AAAA,QACD,WAAA,EAAa,SAAS,WAAe,IAAA,EAAA;AAAA,QACrC,QAAA,EAAU,UAAU,QAAY,IAAA,KAAA;AAAA,QAChC,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,MAAQ,EAAA,QAAA,IAAY,SAAY,GAAA,SAAA,CAAU,MAAS,GAAA,KAAA;AAAA,QACnD,OAAA,EAAS,SAAS,OAAW,IAAA,IAAA;AAAA,QAC7B,MAAM,SAAU,CAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACD,CACA,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,UAAU,IAAI,CAAA;AAAA,GACrC,CAAA;AACF,EAAA;AAYA,MAAM,gBAAA,GAAmB,CACvB,IACA,EAAA;AAAA,EACE,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,CACe,KAAA;AACf,EAAA,MAAM,gBAAgB,MAAO,CAAA,OAAA,CAAQ,IAAK,CAAA,WAAA,CAAY,SAAS,CAAE,CAAA,MAAA;AAAA,IAC/D,CAAC,GAAA,EAAK,CAAC,SAAA,EAAW,QAAQ,CAAM,KAAA;AAC9B,MAAO,OAAA;AAAA,QACL,GAAG,GAAA;AAAA,QACH,CAAC,SAAS,GAAG,QAAS,CAAA,IAAA;AAAA,OACxB,CAAA;AAAA,KACF;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAIA,EAAA,MAAM,cAAiB,GAAA,+BAAA;AAAA,IACrB,IAAA,CAAK,YAAY,OAAQ,CAAA,IAAA;AAAA,IACzB,MAAQ,EAAA,UAAA;AAAA,IACR,aAAA;AAAA,IACA,EAAE,cAAA,EAAgB,IAAK,CAAA,UAAA,EAAY,SAAS,UAAW,EAAA;AAAA,IACvD,OAAA;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA,cAAA;AAAA,IACR,QAAA,EAAU,EAAE,GAAG,IAAA,CAAK,YAAY,QAAU,EAAA,WAAA,EAAa,MAAQ,EAAA,IAAA,CAAK,WAAY,EAAA;AAAA,IAChF,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA;AAAA,MACP,GAAG,MAAQ,EAAA,OAAA;AAAA,MACX,GAAG,MAAQ,EAAA,aAAA;AAAA,KACb;AAAA,GACF,CAAA;AACF,CAAA,CAAA;AAaM,MAAA,+BAAA,GAAkC,CACtC,OAAA,EACA,UAAmC,GAAA,IACnC,SACA,EAAA,UAAA,EAIA,OAAoB,GAAA,EACjB,KAAA;AACH,EAAO,OAAA,OAAA,CACJ,GAAI,CAAA,CAAC,IAAS,KAAA;AACb,IAAM,MAAA,SAAA,GAAY,WAAW,IAAI,CAAA,CAAA;AAEjC,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,QAAA,GAAW,UAAU,IAAI,CAAA,CAAA;AAE/B,IAAM,MAAA,QAAA,GACJ,SAAU,CAAA,IAAA,KAAS,WAAe,IAAA,UAAA,GAC9B,UAAW,CAAA,cAAA,CAAe,SAAU,CAAA,SAAS,CAAE,CAAA,QAAA,GAC/C,EAAC,CAAA;AAEP,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,MACA,KAAA,EAAO,SAAS,KAAS,IAAA,EAAA;AAAA,MACzB,WAAW,YAAa,CAAA,SAAA,EAAW,QAAS,CAAA,SAAA,IAAa,SAAS,SAAW,EAAA;AAAA,QAC3E,OAAA;AAAA,QACA,UAAA,EAAY,UAAY,EAAA,OAAA,IAAW,EAAC;AAAA,OACrC,CAAA;AAAA,MACD,IAAA;AAAA,MACA,UAAA,EAAY,SAAS,UAAc,IAAA,IAAA;AAAA,MACnC,QAAA,EAAU,SAAS,QAAY,IAAA,IAAA;AAAA,KACjC,CAAA;AAAA,GACD,CACA,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,UAAU,IAAI,CAAA,CAAA;AACrC;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateWorkflow-KQMhiXda.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage.tsx","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stage.tsx","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages.tsx","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes.tsx","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.ts"],"sourcesContent":["import { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nimport { Stage, Workflow } from '../../../../../../../shared/contracts/review-workflows';\nimport { Permission, SanitizedAdminRole } from '../../../../../../../shared/contracts/shared';\n\nimport {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n} from './constants';\n\nexport function cloneStage(id: number) {\n return {\n type: ACTION_CLONE_STAGE,\n payload: { id },\n };\n}\n\nexport function setWorkflow({ workflow }: { workflow: Workflow | null }) {\n return {\n type: ACTION_SET_WORKFLOW,\n payload: workflow,\n };\n}\n\nexport function setWorkflows({ workflows }: { workflows: Workflow[] }) {\n return {\n type: ACTION_SET_WORKFLOWS,\n payload: workflows,\n };\n}\n\nexport function deleteStage(stageId: number) {\n return {\n type: ACTION_DELETE_STAGE,\n payload: {\n stageId,\n },\n };\n}\n\nexport function addStage(stage: Partial<Stage>) {\n return {\n type: ACTION_ADD_STAGE,\n payload: stage,\n };\n}\n\nexport interface PartialStage extends Omit<Stage, 'permissions'> {\n permissions?: Partial<Permission>[];\n}\n\nexport function updateStage(stageId: number, payload: Partial<PartialStage>) {\n return {\n type: ACTION_UPDATE_STAGE,\n payload: {\n stageId,\n ...payload,\n },\n };\n}\n\nexport function updateStages(payload: Partial<PartialStage>) {\n return {\n type: ACTION_UPDATE_STAGES,\n payload,\n };\n}\n\nexport function updateStagePosition(oldIndex: number, newIndex: number) {\n return {\n type: ACTION_UPDATE_STAGE_POSITION,\n payload: {\n newIndex,\n oldIndex,\n },\n };\n}\n\nexport function updateWorkflow(payload: Partial<Workflow>) {\n return {\n type: ACTION_UPDATE_WORKFLOW,\n payload,\n };\n}\n\nexport function resetWorkflow() {\n return {\n type: ACTION_RESET_WORKFLOW,\n };\n}\n\nexport function setContentTypes(payload: {\n collectionTypes?: Contracts.ContentTypes.ContentType[];\n singleTypes?: Contracts.ContentTypes.ContentType[];\n}) {\n return {\n type: ACTION_SET_CONTENT_TYPES,\n payload,\n };\n}\n\nexport function setRoles(payload?: (SanitizedAdminRole & { usersCount?: number | undefined })[]) {\n return {\n type: ACTION_SET_ROLES,\n payload,\n };\n}\n\nexport function setIsLoading(isLoading: boolean) {\n return {\n type: ACTION_SET_IS_LOADING,\n payload: isLoading,\n };\n}\n","import React from 'react';\n\nimport { Box, ButtonProps, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport styled from 'styled-components';\n\nconst StyledAddIcon = styled(PlusCircle)`\n > circle {\n fill: ${({ theme }) => theme.colors.neutral150};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst StyledButton = styled(Box)`\n border-radius: 26px;\n\n svg {\n height: ${({ theme }) => theme.spaces[6]};\n width: ${({ theme }) => theme.spaces[6]};\n\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary600} !important;\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600} !important;\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n\n &:active {\n ${Typography} {\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n ${StyledAddIcon} {\n > circle {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n > path {\n fill: ${({ theme }) => theme.colors.neutral100};\n }\n }\n }\n`;\n\nexport const AddStage = ({ children, ...props }: ButtonProps) => {\n return (\n <StyledButton\n as=\"button\"\n background=\"neutral0\"\n border=\"neutral150\"\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={3}\n shadow=\"filterShadow\"\n {...props}\n >\n <Flex gap={2}>\n <StyledAddIcon aria-hidden />\n\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral500\">\n {children}\n </Typography>\n </Flex>\n </StyledButton>\n );\n};\n","import { Schema } from '@strapi/types';\nimport { createDraft, produce } from 'immer';\n\nimport {\n Stage,\n StagePermission,\n Workflow,\n} from '../../../../../../../shared/contracts/review-workflows';\nimport { AdminRole } from '../../../../../../../shared/contracts/shared';\n\nimport {\n ACTION_ADD_STAGE,\n ACTION_CLONE_STAGE,\n ACTION_DELETE_STAGE,\n ACTION_RESET_WORKFLOW,\n ACTION_SET_CONTENT_TYPES,\n ACTION_SET_IS_LOADING,\n ACTION_SET_ROLES,\n ACTION_SET_WORKFLOW,\n ACTION_SET_WORKFLOWS,\n ACTION_UPDATE_STAGE,\n ACTION_UPDATE_STAGES,\n ACTION_UPDATE_STAGE_POSITION,\n ACTION_UPDATE_WORKFLOW,\n STAGE_COLOR_DEFAULT,\n} from './constants';\n\nexport type CurrentWorkflow = Partial<\n Pick<Workflow, 'name' | 'contentTypes' | 'stages' | 'id'> & {\n permissions?: StagePermission[];\n }\n>;\n\nexport type PartialWorkflow = Omit<CurrentWorkflow, 'stages'> & { stages?: Partial<Stage>[] };\n\nexport interface ServerState {\n contentTypes?: {\n collectionTypes: Schema.CollectionType[];\n singleTypes: Schema.SingleType[];\n };\n roles?: AdminRole[];\n workflow?: PartialWorkflow | null;\n workflows?: Workflow[];\n}\n\n// This isn't something we should do.\n// TODO: Revamp the way we are handling this temp key for delete or create\nexport type StageWithTempKey = Stage & { __temp_key__?: number };\nexport interface ClientState {\n currentWorkflow: {\n data: Partial<Omit<CurrentWorkflow, 'stages'> & { stages: StageWithTempKey[] }>;\n };\n isLoading?: boolean;\n}\n\nexport type State = {\n serverState: ServerState;\n clientState: ClientState;\n};\n\nexport const initialState: State = {\n serverState: {\n contentTypes: {\n collectionTypes: [],\n singleTypes: [],\n },\n roles: [],\n workflow: null,\n workflows: [],\n },\n clientState: {\n currentWorkflow: {\n data: {\n name: '',\n contentTypes: [],\n stages: [],\n permissions: undefined,\n },\n },\n isLoading: true,\n },\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function reducer(state: State = initialState, action: { type: string; payload?: any }) {\n return produce(state, (draft) => {\n const { payload } = action;\n\n switch (action.type) {\n case ACTION_SET_CONTENT_TYPES: {\n draft.serverState.contentTypes = payload;\n break;\n }\n\n case ACTION_SET_IS_LOADING: {\n draft.clientState.isLoading = payload;\n break;\n }\n\n case ACTION_SET_ROLES: {\n draft.serverState.roles = payload;\n break;\n }\n\n case ACTION_SET_WORKFLOW: {\n const workflow: Workflow = payload;\n\n if (workflow) {\n draft.serverState.workflow = workflow;\n draft.clientState.currentWorkflow.data = {\n ...workflow,\n stages: workflow.stages.map((stage) => ({\n ...stage,\n // A safety net in case a stage does not have a color assigned;\n // this should not happen\n color: stage?.color ?? STAGE_COLOR_DEFAULT,\n })),\n };\n }\n break;\n }\n\n case ACTION_SET_WORKFLOWS: {\n draft.serverState.workflows = payload;\n break;\n }\n\n case ACTION_RESET_WORKFLOW: {\n draft.clientState = initialState.clientState;\n draft.serverState = createDraft(initialState.serverState);\n break;\n }\n\n case ACTION_DELETE_STAGE: {\n const { stageId } = payload;\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages?.filter(\n (stage) => (stage?.id ?? stage.__temp_key__) !== stageId\n );\n\n break;\n }\n\n case ACTION_ADD_STAGE: {\n const { currentWorkflow } = state.clientState;\n\n if (!currentWorkflow.data) {\n draft.clientState.currentWorkflow.data = {\n stages: [],\n };\n }\n\n const newTempKey = getMaxTempKey(draft.clientState.currentWorkflow.data.stages);\n\n draft.clientState.currentWorkflow.data.stages?.push({\n ...payload,\n color: payload?.color ?? STAGE_COLOR_DEFAULT,\n __temp_key__: newTempKey,\n });\n\n break;\n }\n\n case ACTION_CLONE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { id } = payload;\n\n const sourceStageIndex = currentWorkflow.data.stages?.findIndex(\n (stage) => (stage?.id ?? stage?.__temp_key__) === id\n );\n\n if (sourceStageIndex !== undefined && sourceStageIndex !== -1) {\n const sourceStage = currentWorkflow.data.stages?.[sourceStageIndex];\n\n draft.clientState.currentWorkflow.data.stages?.splice(sourceStageIndex + 1, 0, {\n ...sourceStage,\n // @ts-expect-error - We are handling temporary (unsaved) duplicated stages with temporary keys and undefined ids. It should be revamp imo\n id: undefined,\n __temp_key__: getMaxTempKey(draft.clientState.currentWorkflow.data.stages),\n });\n }\n\n break;\n }\n\n case ACTION_UPDATE_STAGE: {\n const { currentWorkflow } = state.clientState;\n const { stageId, ...modified } = payload;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages?.map((stage) =>\n (stage.id ?? stage.__temp_key__) === stageId\n ? {\n ...stage,\n ...modified,\n }\n : stage\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGES: {\n const { currentWorkflow } = state.clientState;\n\n draft.clientState.currentWorkflow.data.stages = currentWorkflow.data.stages?.map(\n (stage) => ({\n ...stage,\n ...payload,\n })\n );\n\n break;\n }\n\n case ACTION_UPDATE_STAGE_POSITION: {\n const {\n currentWorkflow: {\n data: { stages },\n },\n } = state.clientState;\n const { newIndex, oldIndex } = payload;\n\n if (stages && newIndex >= 0 && newIndex < stages.length) {\n const stage = stages[oldIndex];\n const newStages = [...stages];\n\n newStages.splice(oldIndex, 1);\n newStages.splice(newIndex, 0, stage);\n\n draft.clientState.currentWorkflow.data.stages = newStages;\n }\n\n break;\n }\n\n case ACTION_UPDATE_WORKFLOW: {\n draft.clientState.currentWorkflow.data = {\n ...draft.clientState.currentWorkflow.data,\n ...payload,\n };\n\n break;\n }\n\n default:\n break;\n }\n });\n}\n\nconst getMaxTempKey = (stages: StageWithTempKey[] = []): number => {\n const ids = stages.map((stage) => Number(stage.id ?? stage.__temp_key__));\n\n /**\n * If there are no ids it will return 0 as the max value\n * because the max value is -1.\n */\n return Math.max(...ids, -1) + 1;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport isEqual from 'lodash/isEqual';\n\nimport { RootState } from '../../../../../../../admin/src/core/store/configure';\nimport { Stage } from '../../../../../../../shared/contracts/review-workflows';\n\nimport { REDUX_NAMESPACE } from './constants';\nimport { State, initialState } from './reducer';\n\ninterface Store extends RootState {\n [REDUX_NAMESPACE]: State;\n}\n\nexport const selectNamespace = (state: Store) => state[REDUX_NAMESPACE] ?? initialState;\n\nexport const selectContentTypes = createSelector(\n selectNamespace,\n ({ serverState: { contentTypes } }) => contentTypes\n);\n\nexport const selectRoles = createSelector(selectNamespace, ({ serverState: { roles } }) => roles);\n\nexport const selectCurrentWorkflow = createSelector(\n selectNamespace,\n ({ clientState: { currentWorkflow } }) => currentWorkflow.data\n);\n\nexport const selectWorkflows = createSelector(\n selectNamespace,\n ({ serverState: { workflows } }) => workflows\n);\n\nexport const selectIsWorkflowDirty = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !isEqual(serverState.workflow, currentWorkflow.data)\n);\n\nexport const selectHasDeletedServerStages = createSelector(\n selectNamespace,\n ({ serverState, clientState: { currentWorkflow } }) =>\n !(serverState.workflow?.stages ?? []).every(\n (stage: Partial<Stage>) => !!currentWorkflow.data.stages?.find(({ id }) => id === stage.id)\n )\n);\n\nexport const selectIsLoading = createSelector(\n selectNamespace,\n ({ clientState: { isLoading } }) => isLoading\n);\n\nexport const selectServerState = createSelector(selectNamespace, ({ serverState }) => serverState);\n","import * as React from 'react';\n\nimport {\n Accordion,\n AccordionContent,\n AccordionToggle,\n Box,\n Flex,\n Grid,\n GridItem,\n IconButton,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n SingleSelect,\n SingleSelectOption,\n TextInput,\n VisuallyHidden,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { Menu, MenuItem } from '@strapi/design-system/v2';\nimport { Duplicate, Drag, More } from '@strapi/icons';\nimport { useField } from 'formik';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../../../../../admin/src/components/ConfirmDialog';\nimport { useDragAndDrop } from '../../../../../../../../admin/src/content-manager/hooks/useDragAndDrop';\nimport { NotAllowedInput } from '../../../../../../../../admin/src/content-manager/pages/EditView/components/FormInputs/NotAllowed';\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport { useTracking } from '../../../../../../../../admin/src/features/Tracking';\nimport { StagePermission } from '../../../../../../../../shared/contracts/review-workflows';\nimport {\n cloneStage,\n deleteStage,\n updateStage,\n updateStagePosition,\n updateStages,\n} from '../actions';\nimport { DRAG_DROP_TYPES } from '../constants';\nimport { selectRoles } from '../selectors';\nimport { getAvailableStageColors, getStageColorByHex } from '../utils/colors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\n// Grow the size of the permission Select\nconst PermissionWrapper = styled(Flex)`\n > * {\n flex-grow: 1;\n }\n`;\n\nconst DeleteMenuItem = styled(MenuItem)`\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\n// Removing the font-size from the child-span aligns the\n// more icon vertically\nconst ContextMenuTrigger = styled(Menu.Trigger)`\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n > span {\n font-size: 0;\n }\n`;\n\n// As soon as either `as` or `forwardedAs` is set, the component\n// resets some styles and e.g. the `hasBorder` prop no longer works,\n// which is why this bit of CSS has been added manually ¯\\_(ツ)_/¯\nconst DragIconButton = styled(IconButton)`\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n display: flex;\n justify-content: center;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n svg {\n height: auto;\n width: ${({ theme }) => theme.spaces[3]}};\n }\n`;\n\nconst AVAILABLE_COLORS = getAvailableStageColors();\n\nconst StageDropPreview = () => {\n return (\n <Box\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n display=\"block\"\n hasRadius\n padding={6}\n shadow=\"tableShadow\"\n />\n );\n};\n\nexport type StageProps = {\n id: number;\n index: number;\n canDelete: boolean;\n canReorder: boolean;\n canUpdate: boolean;\n isOpen: boolean;\n stagesCount: number;\n};\n\nexport const Stage = ({\n id,\n index,\n canDelete,\n canReorder,\n canUpdate,\n isOpen: isOpenDefault = false,\n stagesCount,\n}: StageProps) => {\n const getItemPos = (index: number) => `${index + 1} of ${stagesCount}`;\n\n const handleGrabStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.grab-item',\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.drop-item',\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: nameField.value,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancelDragStage = () => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.cancel-item',\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: nameField.value,\n }\n )\n );\n };\n\n const handleMoveStage = (newIndex: number, oldIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.reorder',\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: nameField.value,\n position: getItemPos(newIndex),\n }\n )\n );\n\n dispatch(updateStagePosition(oldIndex, newIndex));\n };\n\n const handleApplyPermissionsToAllStages = () => {\n setIsApplyAllConfirmationOpen(true);\n };\n\n const [liveText, setLiveText] = React.useState(null);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const [isOpen, setIsOpen] = React.useState(isOpenDefault);\n const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);\n const [nameField, nameMeta, nameHelper] = useField(`stages.${index}.name`);\n const [colorField, colorMeta, colorHelper] = useField(`stages.${index}.color`);\n const [permissionsField, permissionsMeta, permissionsHelper] = useField<\n Partial<StagePermission>[]\n >(`stages.${index}.permissions`);\n const roles = useSelector(selectRoles);\n const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(canReorder, {\n index,\n item: {\n index,\n name: nameField.value,\n },\n onGrabItem: handleGrabStage,\n onDropItem: handleDropStage,\n onMoveItem: handleMoveStage,\n onCancel: handleCancelDragStage,\n type: DRAG_DROP_TYPES.STAGE,\n });\n\n const composedRef = useComposedRefs(stageRef, dropRef);\n\n const colorOptions = AVAILABLE_COLORS.map(({ hex, name }) => ({\n value: hex,\n label: formatMessage(\n {\n id: 'Settings.review-workflows.stage.color.name',\n defaultMessage: '{name}',\n },\n { name }\n ),\n color: hex,\n }));\n\n const { themeColorName } = getStageColorByHex(colorField.value) ?? {};\n\n const filteredRoles = roles\n // Super admins always have permissions to do everything and therefore\n // there is no point for this role to show up in the role combobox\n ?.filter((role) => role.code !== 'strapi-super-admin');\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n return (\n <Box ref={(ref) => composedRef(ref!)}>\n {liveText && <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>}\n\n {isDragging ? (\n <StageDropPreview />\n ) : (\n <Accordion\n size=\"S\"\n variant=\"primary\"\n onToggle={() => {\n setIsOpen(!isOpen);\n\n if (!isOpen) {\n trackUsage('willEditStage');\n }\n }}\n expanded={isOpen}\n shadow=\"tableShadow\"\n error={nameMeta.error ?? colorMeta?.error ?? permissionsMeta?.error}\n hasErrorMessage={false}\n >\n <AccordionToggle\n title={nameField.value}\n togglePosition=\"left\"\n action={\n (canDelete || canUpdate) && (\n <Flex>\n <Menu.Root>\n <ContextMenuTrigger size=\"S\" endIcon={null} paddingLeft={2} paddingRight={2}>\n <More aria-hidden focusable={false} />\n <VisuallyHidden as=\"span\">\n {formatMessage({\n id: '[tbdb].components.DynamicZone.more-actions',\n defaultMessage: 'More actions',\n })}\n </VisuallyHidden>\n </ContextMenuTrigger>\n {/* z-index needs to be as big as the one defined for the wrapper in Stages, otherwise the menu\n * disappears behind the accordion\n */}\n <Menu.Content popoverPlacement=\"bottom-end\" zIndex={2}>\n <Menu.SubRoot>\n {canUpdate && (\n <MenuItem onClick={() => dispatch(cloneStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </MenuItem>\n )}\n\n {canDelete && (\n <DeleteMenuItem onClick={() => dispatch(deleteStage(id))}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </DeleteMenuItem>\n )}\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n\n {canUpdate && (\n <DragIconButton\n background=\"transparent\"\n // @ts-expect-error - forwardedAs needs to be defined as string in the IconButton props\n forwardedAs=\"div\"\n hasRadius\n role=\"button\"\n noBorder\n tabIndex={0}\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.drag',\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </DragIconButton>\n )}\n </Flex>\n )\n }\n />\n <AccordionContent padding={6} background=\"neutral0\" hasRadius>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.name.label',\n defaultMessage: 'Stage name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n nameHelper.setValue(event.target.value);\n dispatch(updateStage(id, { name: event.target.value }));\n }}\n required\n />\n </GridItem>\n\n <GridItem col={6}>\n <SingleSelect\n disabled={!canUpdate}\n error={colorMeta?.error ?? false}\n id={colorField.name}\n required\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.color',\n defaultMessage: 'Color',\n })}\n onChange={(value) => {\n colorHelper.setValue(value);\n dispatch(updateStage(id, { color: String(value) }));\n }}\n value={colorField.value.toUpperCase()}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={colorField.value}\n // @ts-expect-error - transparent doesn't exist in theme.colors\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {colorOptions.map(({ value, label, color }) => {\n const { themeColorName } = getStageColorByHex(color) || {};\n\n return (\n <SingleSelectOption\n value={value}\n key={value}\n startIcon={\n <Flex\n as=\"span\"\n height={2}\n background={color}\n // @ts-expect-error - transparent doesn't exist in theme.colors\n borderColor={\n themeColorName === 'neutral0' ? 'neutral150' : 'transparent'\n }\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </GridItem>\n\n <GridItem col={6}>\n {filteredRoles?.length === 0 ? (\n <NotAllowedInput\n hint={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n })}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n name={permissionsField.name}\n type=\"enumeration\"\n />\n ) : (\n <Flex alignItems=\"flex-end\" gap={3}>\n <PermissionWrapper grow={1}>\n <MultiSelect\n {...permissionsField}\n disabled={!canUpdate}\n error={permissionsMeta.error ?? false}\n id={permissionsField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n onChange={(values) => {\n // Because the select components expects strings for values, but\n // the yup schema validates we are sending full permission objects to the API,\n // we must coerce the string value back to an object\n const permissions = values.map((value) => ({\n role: parseInt(value, 10),\n action: 'admin::review-workflows.stage.transition',\n }));\n\n permissionsHelper.setValue(permissions);\n dispatch(updateStage(id, { permissions }));\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.placeholder',\n defaultMessage: 'Select a role',\n })}\n required\n // The Select component expects strings for values\n value={(permissionsField.value ?? []).map(\n (permission) => `${permission.role}`\n )}\n withTags\n >\n <MultiSelectGroup\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.allRoles.label',\n defaultMessage: 'All roles',\n })}\n values={filteredRoles?.map((r) => `${r.id}`)}\n >\n {filteredRoles?.map((role) => {\n return (\n <NestedOption key={role.id} value={`${role.id}`}>\n {role.name}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n </MultiSelect>\n </PermissionWrapper>\n\n <IconButton\n disabled={!canUpdate}\n icon={<Duplicate />}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.apply.label',\n defaultMessage: 'Apply to all stages',\n })}\n size=\"L\"\n variant=\"secondary\"\n onClick={() => handleApplyPermissionsToAllStages()}\n />\n </Flex>\n )}\n </GridItem>\n </Grid>\n </AccordionContent>\n </Accordion>\n )}\n\n <ConfirmDialog\n isOpen={isApplyAllConfirmationOpen}\n onClose={() => setIsApplyAllConfirmationOpen(false)}\n onConfirm={() => {\n dispatch(updateStages({ permissions: permissionsField.value }));\n setIsApplyAllConfirmationOpen(false);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',\n defaultMessage: 'Applied roles to all other stages of the workflow',\n }),\n });\n }}\n variant=\"default\"\n >\n {formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',\n defaultMessage:\n 'Roles that can change that stage will be applied to all the other stages.',\n })}\n </ConfirmDialog>\n </Box>\n );\n};\n","import { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { useTracking } from '../../../../../../../../admin/src/features/Tracking';\nimport { Stage as StageType } from '../../../../../../../../shared/contracts/review-workflows';\nimport { addStage } from '../actions';\n\nimport { AddStage } from './AddStage';\nimport { Stage } from './Stage';\n\nconst Background = styled(Box)`\n transform: translateX(-50%);\n`;\n\nexport type StagesProps = {\n canDelete?: boolean;\n canUpdate?: boolean;\n stages?: StageType[];\n};\n\nexport const Stages = ({ canDelete = true, canUpdate = true, stages = [] }: StagesProps) => {\n const { formatMessage } = useIntl();\n const dispatch = useDispatch();\n const { trackUsage } = useTracking();\n\n return (\n <Flex direction=\"column\" gap={6} width=\"100%\">\n <Box position=\"relative\" width=\"100%\">\n <Background\n background=\"neutral200\"\n height=\"100%\"\n left=\"50%\"\n position=\"absolute\"\n top=\"0\"\n width={2}\n zIndex={1}\n />\n\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={6}\n zIndex={2}\n position=\"relative\"\n as=\"ol\"\n >\n {stages.map((stage, index) => {\n // @ts-expect-error - temp key should be fixed in order to use another value\n const id = Number(stage?.id ?? stage.__temp_key__);\n\n return (\n <Box key={`stage-${id}`} as=\"li\">\n <Stage\n id={id}\n index={index}\n isOpen={!stage.id}\n canDelete={stages.length > 1 && canDelete}\n canReorder={stages.length > 1}\n canUpdate={canUpdate}\n stagesCount={stages.length}\n />\n </Box>\n );\n })}\n </Flex>\n </Box>\n\n {canUpdate && (\n <AddStage\n type=\"button\"\n onClick={() => {\n dispatch(addStage({ name: '' }));\n trackUsage('willCreateStage');\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.add',\n defaultMessage: 'Add new stage',\n })}\n </AddStage>\n )}\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport {\n Grid,\n GridItem,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n TextInput,\n Typography,\n useCollator,\n} from '@strapi/design-system';\nimport { useField } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport styled from 'styled-components';\n\nimport { updateWorkflow } from '../actions';\nimport { selectContentTypes, selectCurrentWorkflow, selectWorkflows } from '../selectors';\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\nconst ContentTypeTakeNotice = styled(Typography)`\n font-style: italic;\n`;\n\nexport type WorkflowAttributesProps = {\n canUpdate?: boolean;\n};\n\nexport const WorkflowAttributes = ({ canUpdate = true }: WorkflowAttributesProps) => {\n const { formatMessage, locale } = useIntl();\n const dispatch = useDispatch();\n const contentTypes = useSelector(selectContentTypes);\n const currentWorkflow = useSelector(selectCurrentWorkflow);\n const workflows = useSelector(selectWorkflows);\n const [nameField, nameMeta, nameHelper] = useField('name');\n const [contentTypesField, contentTypesMeta, contentTypesHelper] = useField('contentTypes');\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n return (\n <Grid background=\"neutral0\" hasRadius gap={4} padding={6} shadow=\"tableShadow\">\n <GridItem col={6}>\n <TextInput\n {...nameField}\n id={nameField.name}\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.name.label',\n defaultMessage: 'Workflow Name',\n })}\n error={nameMeta.error ?? false}\n onChange={(event) => {\n dispatch(updateWorkflow({ name: event.target.value }));\n nameHelper.setValue(event.target.value);\n }}\n required\n />\n </GridItem>\n\n {contentTypes && (\n <GridItem col={6}>\n <MultiSelect\n {...contentTypesField}\n customizeContent={(value) =>\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.displayValue',\n defaultMessage:\n '{count} {count, plural, one {content type} other {content types}} selected',\n },\n { count: value?.length }\n )\n }\n disabled={!canUpdate}\n error={contentTypesMeta.error ?? false}\n id={contentTypesField.name}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.label',\n defaultMessage: 'Associated to',\n })}\n onChange={(values) => {\n dispatch(updateWorkflow({ contentTypes: values }));\n contentTypesHelper.setValue(values);\n }}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.placeholder',\n defaultMessage: 'Select',\n })}\n >\n {[\n ...(contentTypes.collectionTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.collectionTypes.label',\n defaultMessage: 'Collection Types',\n }),\n children: [...contentTypes.collectionTypes]\n .sort((a, b) => formatter.compare(a.info.displayName, b.info.displayName))\n .map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n\n ...(contentTypes.singleTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.singleTypes.label',\n defaultMessage: 'Single Types',\n }),\n children: [...contentTypes.singleTypes].map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n })),\n },\n ]\n : []),\n ].map((opt) => {\n if ('children' in opt) {\n return (\n <MultiSelectGroup\n key={opt.label}\n label={opt.label}\n values={opt.children.map((child) => child.value.toString())}\n >\n {opt.children.map((child) => {\n const { name: assignedWorkflowName } =\n workflows?.find(\n (workflow) =>\n ((currentWorkflow && workflow.id !== currentWorkflow.id) ||\n !currentWorkflow) &&\n workflow.contentTypes.includes(child.value)\n ) ?? {};\n\n return (\n <NestedOption key={child.value} value={child.value}>\n <Typography>\n {\n // @ts-expect-error - formatMessage options doesn't expect to be a React component but that's what we need actually for the <i> and <em> components\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.assigned.notice',\n defaultMessage:\n '{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}',\n },\n {\n label: child.label,\n name: assignedWorkflowName,\n em: (...children) => (\n <Typography as=\"em\" fontWeight=\"bold\">\n {children}\n </Typography>\n ),\n i: (...children) => (\n <ContentTypeTakeNotice>{children}</ContentTypeTakeNotice>\n ),\n }\n )\n }\n </Typography>\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n }\n })}\n </MultiSelect>\n </GridItem>\n )}\n </Grid>\n );\n};\n","import set from 'lodash/set';\nimport { IntlFormatters } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Stage } from '../../../../../../../../shared/contracts/review-workflows';\nimport { PartialWorkflow } from '../reducer';\n\nexport async function validateWorkflow({\n values,\n formatMessage,\n}: { values: PartialWorkflow } & Pick<IntlFormatters, 'formatMessage'>) {\n const schema = yup.object({\n contentTypes: yup.array().of(yup.string()),\n name: yup\n .string()\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.name.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .required(),\n\n stages: yup\n .array()\n .of(\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.name',\n defaultMessage: 'Name is required',\n })\n )\n .max(\n 255,\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n )\n .test(\n 'unique-name',\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.duplicate',\n defaultMessage: 'Stage name must be unique',\n }),\n function (stageName) {\n const {\n options: { context },\n } = this;\n\n return (\n context?.stages.filter((stage: Stage) => stage.name === stageName).length === 1\n );\n }\n ),\n color: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.color',\n defaultMessage: 'Color is required',\n })\n )\n .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),\n\n permissions: yup\n .array(\n yup.object({\n role: yup\n .number()\n .strict()\n .typeError(\n formatMessage({\n id: 'Settings.review-workflows.validation.stage.permissions.role.number',\n defaultMessage: 'Role must be of type number',\n })\n )\n .required(),\n action: yup.string().required({\n id: 'Settings.review-workflows.validation.stage.permissions.action.required',\n defaultMessage: 'Action is a required argument',\n }),\n })\n )\n .strict(),\n })\n )\n .min(1),\n });\n\n try {\n await schema.validate(values, { abortEarly: false, context: values });\n\n return true;\n } catch (error) {\n const errors = {};\n\n if (error instanceof yup.ValidationError) {\n error.inner.forEach((error) => {\n if (error.path) set(errors, error.path, error.message);\n });\n }\n\n return errors;\n }\n}\n"],"names":["NestedOption","index","themeColorName","error"],"mappings":"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"}
|