@clickview/curator 1.100.0-rc.1 → 1.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +1779 -1779
- package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js → -6zuD8lo.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js.map → -6zuD8lo.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js → 0A42jU2r.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js.map → 0A42jU2r.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js → 0ogjGD4J2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js.map → 0ogjGD4J2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js → 2aCj1HHJ2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js.map → 2aCj1HHJ2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js → 2zbtFQka.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js.map → 2zbtFQka.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js → 3IQ_8AZP2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js.map → 3IQ_8AZP2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js → 3eMwLZ5D.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js.map → 3eMwLZ5D.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js → 4Tx2JSvk2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js.map → 4Tx2JSvk2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js → 5uVJfyDx2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js.map → 5uVJfyDx2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js → 6l2s6d3Q.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js.map → 6l2s6d3Q.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js → 8RAh0VA72.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js.map → 8RAh0VA72.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js → 9nk_zFtT.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js.map → 9nk_zFtT.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js → Ae4rMqFm2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js.map → Ae4rMqFm2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js → B0mCquXn.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js.map → B0mCquXn.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/B1pBJzjh.chunk.js +1 -0
- package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js → B6IinlWw2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js.map → B6IinlWw2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js → B6NMAAhW.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js.map → B6NMAAhW.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js → B8RZKQTs2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js.map → B8RZKQTs2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js → B9R92bqj.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js.map → B9R92bqj.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js → BAFYJZ4c.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js.map → BAFYJZ4c.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js → BFPSIGJg.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js.map → BFPSIGJg.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js → BGiLDtc92.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js.map → BGiLDtc92.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js → BH6LIpwu2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js.map → BH6LIpwu2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js → BMj3pXcm.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js.map → BMj3pXcm.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js → BQTfNBFU.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js.map → BQTfNBFU.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js → BT-jeT7C.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js.map → BT-jeT7C.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js → BUD4osIg2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js.map → BUD4osIg2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js → BVoG71Kc.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js.map → BVoG71Kc.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js → BW5iVK1B2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js.map → BW5iVK1B2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js → BW9r-3iO.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js.map → BW9r-3iO.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js → BX1tMzoa.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js.map → BX1tMzoa.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js → BXaC-l33.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js.map → BXaC-l33.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js → BY-c3M2b2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js.map → BY-c3M2b2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js → BYMuPFbe.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js.map → BYMuPFbe.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js → BaOAOuSc2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js.map → BaOAOuSc2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js → Bb_f3Lku.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js.map → Bb_f3Lku.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js → BdJYoUIO.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js.map → BdJYoUIO.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js → Bf-6iyfX2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js.map → Bf-6iyfX2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js → BiPUuGEE2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js.map → BiPUuGEE2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js → Bj4-NRWf.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js.map → Bj4-NRWf.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js → BkVcraos2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js.map → BkVcraos2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js → BkZ7WS_H.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js.map → BkZ7WS_H.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js → BoMt5mMW2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js.map → BoMt5mMW2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js → Bo_WsHZq2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js.map → Bo_WsHZq2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js → BpV5ErII.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js.map → BpV5ErII.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js → BrBPGjLi2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js.map → BrBPGjLi2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js → BrHyZG_m.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js.map → BrHyZG_m.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js → Bu4F3uuX.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js.map → Bu4F3uuX.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js → BvW9SXzy.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js.map → BvW9SXzy.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js → BwKHls91.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js.map → BwKHls91.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js → BxZNJjbX2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js.map → BxZNJjbX2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js → BygVW5WL.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js.map → BygVW5WL.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js → ByzsHBuo.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js.map → ByzsHBuo.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js +3 -0
- package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js.map +1 -0
- package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js → C0UYMHUe.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js.map → C0UYMHUe.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js → C0_pEFCD.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js.map → C0_pEFCD.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js → C2jRLu4_2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js.map → C2jRLu4_2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js → C2tBl3l9.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js.map → C2tBl3l9.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js → C4eazpDh.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js.map → C4eazpDh.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js → CBq4vrjT.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js.map → CBq4vrjT.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js → CBzqRw-k.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js.map → CBzqRw-k.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js → CDAdfAL02.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js.map → CDAdfAL02.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js → CE1Dxq8p.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js.map → CE1Dxq8p.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js → CG2julEA.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js.map → CG2julEA.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js → CGcN4g0d2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js.map → CGcN4g0d2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js → CJmV_FfR2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js.map → CJmV_FfR2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js → CKvVGIRL.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js.map → CKvVGIRL.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js → CL1DcbTZ.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js.map → CL1DcbTZ.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js → CNLx6_fS.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js.map → CNLx6_fS.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js → CNUVs80P.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js.map → CNUVs80P.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js → CPa__SNX.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js.map → CPa__SNX.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js → CSA2Tnv9.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js.map → CSA2Tnv9.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js → CT-xEpNT2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js.map → CT-xEpNT2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js → CT0vfLa0.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js.map → CT0vfLa0.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js → CUDnXypB.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js.map → CUDnXypB.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js → CeMQZB5J.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js.map → CeMQZB5J.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/Cf5cjLzK.chunk.js +2 -0
- package/dist/Assets/js/dist/scripts/{D2iK_uRt.chunk.js.map → Cf5cjLzK.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js → CfGaxIgd.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js.map → CfGaxIgd.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js → Cqfub35W2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js.map → Cqfub35W2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js → Cv8UpP5_2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js.map → Cv8UpP5_2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js → CvV6jx2d.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js.map → CvV6jx2d.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js → CxENQntH.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js.map → CxENQntH.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js → CxIfJCSc.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js.map → CxIfJCSc.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js → CxggKQxV.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js.map → CxggKQxV.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js → CyNNZ1So.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js.map → CyNNZ1So.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js → Cz-WSyAE.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js.map → Cz-WSyAE.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js → D2aQFJWt2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js.map → D2aQFJWt2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js → D2h9W4GA2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js.map → D2h9W4GA2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js → D3NAhMJm.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js.map → D3NAhMJm.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js → D3aWaqBW.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js.map → D3aWaqBW.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js → D4xcR0492.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js.map → D4xcR0492.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js → D5ek2PiI.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js.map → D5ek2PiI.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js → D61ei_h6.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js.map → D61ei_h6.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js → D6wyTufc.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js.map → D6wyTufc.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js → D7I90XOo.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js.map → D7I90XOo.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js → DArfNv9S.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js.map → DArfNv9S.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js → DB-51xws2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js.map → DB-51xws2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js → DENdEA1F.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js.map → DENdEA1F.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js → DFYiLmms2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js.map → DFYiLmms2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js → DHa-x1js2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js.map → DHa-x1js2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js → DHeA2NJS.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js.map → DHeA2NJS.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js → DIDxfMO_.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js.map → DIDxfMO_.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js → DMq1wDNm2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js.map → DMq1wDNm2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js → DNWM9yfh2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js.map → DNWM9yfh2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js → DSj7VCEo2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js.map → DSj7VCEo2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js → DSvehN9D2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js.map → DSvehN9D2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js → DTvCgZ4c.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js.map → DTvCgZ4c.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js → DWHKdmdQ.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js.map → DWHKdmdQ.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js → DYFGF9Pe.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js.map → DYFGF9Pe.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js → DYOxTenc2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js.map → DYOxTenc2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js → DZthp5T62.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js.map → DZthp5T62.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js → Djgwr16q.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js.map → Djgwr16q.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js → DjnvbVQs.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js.map → DjnvbVQs.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js → DmrhyI9D2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js.map → DmrhyI9D2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js → DnZGILQc.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js.map → DnZGILQc.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js → DqnZw1cj.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js.map → DqnZw1cj.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js → DrAKpy8L2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js.map → DrAKpy8L2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js → DsM1bfoR.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js.map → DsM1bfoR.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js → Dt2TCPUI.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js.map → Dt2TCPUI.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js → DtylOK55.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js.map → DtylOK55.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js → DuTcsFNo2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js.map → DuTcsFNo2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js → Dw0mo6Cf.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js.map → Dw0mo6Cf.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js → DwISzabN.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js.map → DwISzabN.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js → DxW67uUT.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js.map → DxW67uUT.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js → Eg4zYYCO.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js.map → Eg4zYYCO.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js → GT6nO4Jv.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js.map → GT6nO4Jv.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js → GpDEun8c2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js.map → GpDEun8c2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js → OKjYL31I.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js.map → OKjYL31I.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js → OrCUhFjq2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js.map → OrCUhFjq2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js → SVXAAhk02.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js.map → SVXAAhk02.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js → SmmnJrec.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js.map → SmmnJrec.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js → T3BageSw2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js.map → T3BageSw2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js → T6xxjp_W.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js.map → T6xxjp_W.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js → Uc2eW092.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js.map → Uc2eW092.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js → XHoEdG1q.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js.map → XHoEdG1q.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js → Y14NYZ692.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js.map → Y14NYZ692.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js → Y_IcNhI9.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js.map → Y_IcNhI9.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js → Yr5eNz05.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js.map → Yr5eNz05.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js → Yrc9o6bG2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js.map → Yrc9o6bG2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js → app-RphP4Ht0.js} +4 -4
- package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js.map → app-RphP4Ht0.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js → cUgHqo-u.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js.map → cUgHqo-u.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js → dmUfJoJz2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js.map → dmUfJoJz2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js → fapHSEex.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js.map → fapHSEex.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js → jf0e_ii92.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js.map → jf0e_ii92.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js → kp4jXqVv.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js.map → kp4jXqVv.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js +2 -0
- package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js.map +1 -0
- package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js → n7lzp_Mc2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js.map → n7lzp_Mc2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js → nvtWO4PW2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js.map → nvtWO4PW2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js → oYKM19q12.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js.map → oYKM19q12.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js → ohTu1tHz.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js.map → ohTu1tHz.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js → uCRnfBEw2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js.map → uCRnfBEw2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js → udVWVmrH2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js.map → udVWVmrH2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js → v0VARBBE2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js.map → v0VARBBE2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js → vf9_5VGa2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js.map → vf9_5VGa2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js → wTEWtWoE2.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js.map → wTEWtWoE2.chunk.js.map} +1 -1
- package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js → xj8_Pfx7.chunk.js} +2 -2
- package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js.map → xj8_Pfx7.chunk.js.map} +1 -1
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/package.json +1 -1
- package/dist/Assets/js/dist/scripts/D2iK_uRt.chunk.js +0 -2
- package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js +0 -3
- package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js.map +0 -1
- package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js +0 -2
- package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js.map +0 -1
- package/dist/Assets/js/dist/scripts/DrBVabtm.chunk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BhKv6dKl2.chunk.js","names":["_excluded","_objectWithoutPropertiesLoose","NavItem","NavbarContext","divWithClassName","NavbarContext","useEventCallback","Offcanvas"],"sources":["../../../../../../../../node_modules/react-bootstrap/esm/CardHeaderContext.js","../../../../../../../../node_modules/react-bootstrap/esm/Container.js","../../../../../../../../node_modules/@restart/ui/esm/TabContext.js","../../../../../../../../node_modules/@restart/ui/esm/NavItem.js","../../../../../../../../node_modules/@restart/ui/esm/Nav.js","../../../../../../../../node_modules/react-bootstrap/esm/NavItem.js","../../../../../../../../node_modules/react-bootstrap/esm/NavLink.js","../../../../../../../../node_modules/react-bootstrap/esm/Nav.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarBrand.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarCollapse.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarToggle.js","../../../../../../../../node_modules/@restart/hooks/esm/useMediaQuery.js","../../../../../../../../node_modules/@restart/hooks/esm/useBreakpoint.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasBody.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../../../../../../../../node_modules/react-bootstrap/esm/Offcanvas.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarText.js","../../../../../../../../node_modules/react-bootstrap/esm/Navbar.js","../../../../../src/shared/components/back-button/back-button.module.scss","../../../../../src/shared/components/back-button/BackButton.tsx","../../../../../src/shared/components/checkbox/Checkbox.tsx","../../../../../src/shared/components/object-collection/ObjectCollection.tsx","../../../../../src/shared/components/object-header/ObjectHeader.tsx","../../../../../src/shared/components/object-list-nav/ObjectListNav.tsx","../../../../../src/shared/components/rating-select/RatingSelect.tsx","../../../../../src/shared/components/tabs/Tabs.tsx","../../../../../src/shared/components/video-list/video-list.module.scss","../../../../../src/shared/components/video-list/VideoItemDragOverlay.tsx","../../../../../src/shared/components/video-list/VideoItem.tsx","../../../../../src/shared/components/video-list/VideoList.tsx","../../../../../src/shared/components/video-list/SortableVideoList.tsx","../../../../../src/shared/components/aliases/AddAlias.tsx","../../../../../src/shared/components/aliases/alias.module.scss","../../../../../src/shared/components/aliases/AliasList.tsx","../../../../../src/shared/components/aliases/Aliases.tsx","../../../../../src/shared/components/classifications/edit-classification-nav/EditClassificationNav.tsx","../../../../../src/shared/components/classifications/edit-classification-details/EditClassificationDetails.tsx","../../../../../src/shared/components/classifications/select-classifications/SelectClassifications.tsx","../../../../../src/shared/components/classifications/classification-member-list/ClassificationMemberItem.tsx","../../../../../src/shared/components/classifications/classification-member-list/usePinnedVideo.ts","../../../../../src/shared/components/classifications/classification-member-list/ClassificationMemberList.tsx","../../../../../src/shared/components/classifications/video-classification-mapping-list/VideoClassificationMappingList.tsx","../../../../../src/shared/components/backbone-classification/edit-object-subjects/VideoClassificationList.tsx","../../../../../src/shared/components/backbone-classification/edit-object-subjects/EditObjectSubjects.tsx","../../../../../src/shared/components/backbone-classification/add-subject-members/AddSubjectMembers.tsx","../../../../../src/shared/components/backbone-classification/edit-subject-nav/EditSubjectNav.tsx","../../../../../src/shared/components/backbone-classification/select-subjects/SelectBackboneClassification.tsx","../../../../../src/shared/components/backbone-classification/subject-classifications/SubjectClassifications.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberItem.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberListHeader.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberList.tsx","../../../../../src/shared/components/top-nav/TopNav.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null);\n\n // @ts-ignore\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n if (!isActive) {\n props.tabIndex = -1;\n }\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n if (key == null) {\n return;\n }\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options));\n\n // @ts-ignore\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n // TODO: do we need to duplicate these?\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n const listNode = useRef(null);\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n if (!tabContext) {\n return;\n }\n let nextActiveChild;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n default:\n return;\n }\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavItem = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n disabled = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n disabled,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ...navItemProps,\n ref: ref,\n disabled: disabled,\n className: classNames(className, bsPrefix, disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nexport default NavLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill = false,\n justify = false,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarBrand = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n const Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix)\n });\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarCollapse = /*#__PURE__*/React.forwardRef(({\n children,\n bsPrefix,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Collapse, {\n in: !!(context && context.expanded),\n ...props,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: bsPrefix,\n children: children\n })\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n label = 'Toggle navigation',\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n const {\n onToggle,\n expanded\n } = useContext(NavbarContext) || {};\n const handleClick = useEventCallback(e => {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n if (Component === 'button') {\n props.type = 'button';\n }\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed'),\n children: children || /*#__PURE__*/_jsx(\"span\", {\n className: `${bsPrefix}-icon`\n })\n });\n});\nNavbarToggle.displayName = 'NavbarToggle';\nexport default NavbarToggle;","import useEffect from './useIsomorphicEffect';\nimport { useState } from 'react';\nconst matchersByWindow = new WeakMap();\nconst getMatcher = (query, targetWindow) => {\n if (!query || !targetWindow) return undefined;\n const matchers = matchersByWindow.get(targetWindow) || new Map();\n matchersByWindow.set(targetWindow, matchers);\n let mql = matchers.get(query);\n if (!mql) {\n mql = targetWindow.matchMedia(query);\n mql.refCount = 0;\n matchers.set(mql.media, mql);\n }\n return mql;\n};\n/**\n * Match a media query and get updates as the match changes. The media string is\n * passed directly to `window.matchMedia` and run as a Layout Effect, so initial\n * matches are returned before the browser has a chance to paint.\n *\n * ```tsx\n * function Page() {\n * const isWide = useMediaQuery('min-width: 1000px')\n *\n * return isWide ? \"very wide\" : 'not so wide'\n * }\n * ```\n *\n * Media query lists are also reused globally, hook calls for the same query\n * will only create a matcher once under the hood.\n *\n * @param query A media query\n * @param targetWindow The window to match against, uses the globally available one as a default.\n */\nexport default function useMediaQuery(query, targetWindow = typeof window === 'undefined' ? undefined : window) {\n const mql = getMatcher(query, targetWindow);\n const [matches, setMatches] = useState(() => mql ? mql.matches : false);\n useEffect(() => {\n let mql = getMatcher(query, targetWindow);\n if (!mql) {\n return setMatches(false);\n }\n let matchers = matchersByWindow.get(targetWindow);\n const handleChange = () => {\n setMatches(mql.matches);\n };\n mql.refCount++;\n mql.addListener(handleChange);\n handleChange();\n return () => {\n mql.removeListener(handleChange);\n mql.refCount--;\n if (mql.refCount <= 0) {\n matchers == null ? void 0 : matchers.delete(mql.media);\n }\n mql = undefined;\n };\n }, [query]);\n return matches;\n}","import useMediaQuery from './useMediaQuery';\nimport { useMemo } from 'react';\n/**\n * Create a responsive hook we a set of breakpoint names and widths.\n * You can use any valid css units as well as a numbers (for pixels).\n *\n * **NOTE:** The object key order is important! it's assumed to be in order from smallest to largest\n *\n * ```ts\n * const useBreakpoint = createBreakpointHook({\n * xs: 0,\n * sm: 576,\n * md: 768,\n * lg: 992,\n * xl: 1200,\n * })\n * ```\n *\n * **Watch out!** using string values will sometimes construct media queries using css `calc()` which\n * is NOT supported in media queries by all browsers at the moment. use numbers for\n * the widest range of browser support.\n *\n * @param breakpointValues A object hash of names to breakpoint dimensions\n */\nexport function createBreakpointHook(breakpointValues) {\n const names = Object.keys(breakpointValues);\n function and(query, next) {\n if (query === next) {\n return next;\n }\n return query ? `${query} and ${next}` : next;\n }\n function getNext(breakpoint) {\n return names[Math.min(names.indexOf(breakpoint) + 1, names.length - 1)];\n }\n function getMaxQuery(breakpoint) {\n const next = getNext(breakpoint);\n let value = breakpointValues[next];\n if (typeof value === 'number') value = `${value - 0.2}px`;else value = `calc(${value} - 0.2px)`;\n return `(max-width: ${value})`;\n }\n function getMinQuery(breakpoint) {\n let value = breakpointValues[breakpoint];\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n return `(min-width: ${value})`;\n }\n\n /**\n * Match a set of breakpoints\n *\n * ```tsx\n * const MidSizeOnly = () => {\n * const isMid = useBreakpoint({ lg: 'down', sm: 'up' });\n *\n * if (isMid) return <div>On a Reasonable sized Screen!</div>\n * return null;\n * }\n * ```\n * @param breakpointMap An object map of breakpoints and directions, queries are constructed using \"and\" to join\n * breakpoints together\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n /**\n * Match a single breakpoint exactly, up, or down.\n *\n * ```tsx\n * const PhoneOnly = () => {\n * const isSmall = useBreakpoint('sm', 'down');\n *\n * if (isSmall) return <div>On a Small Screen!</div>\n * return null;\n * }\n * ```\n *\n * @param breakpoint The breakpoint key\n * @param direction A direction 'up' for a max, 'down' for min, true to match only the breakpoint\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n function useBreakpoint(breakpointOrMap, direction, window) {\n let breakpointMap;\n if (typeof breakpointOrMap === 'object') {\n breakpointMap = breakpointOrMap;\n window = direction;\n direction = true;\n } else {\n direction = direction || true;\n breakpointMap = {\n [breakpointOrMap]: direction\n };\n }\n let query = useMemo(() => Object.entries(breakpointMap).reduce((query, [key, direction]) => {\n if (direction === 'up' || direction === true) {\n query = and(query, getMinQuery(key));\n }\n if (direction === 'down' || direction === true) {\n query = and(query, getMaxQuery(key));\n }\n return query;\n }, ''), [JSON.stringify(breakpointMap)]);\n return useMediaQuery(query, window);\n }\n return useBreakpoint;\n}\nconst useBreakpoint = createBreakpointHook({\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n});\nexport default useBreakpoint;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasBody.displayName = 'OffcanvasBody';\nexport default OffcanvasBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ENTERED, ENTERING, EXITING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport TransitionWrapper from './TransitionWrapper';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst transitionStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst OffcanvasToggling = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n in: inProp = false,\n mountOnEnter = false,\n unmountOnExit = false,\n appear = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n in: inProp,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n appear: appear,\n ...props,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames(className, children.props.className, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, transitionStyles[status])\n })\n });\n});\nOffcanvasToggling.displayName = 'OffcanvasToggling';\nexport default OffcanvasToggling;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n closeLabel = 'Close',\n closeButton = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n closeLabel: closeLabel,\n closeButton: closeButton\n });\n});\nOffcanvasHeader.displayName = 'OffcanvasHeader';\nexport default OffcanvasHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport divWithClassName from './divWithClassName';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst OffcanvasTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH5,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasTitle.displayName = 'OffcanvasTitle';\nexport default OffcanvasTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport useBreakpoint from '@restart/hooks/useBreakpoint';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport * as React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport Fade from './Fade';\nimport OffcanvasBody from './OffcanvasBody';\nimport OffcanvasToggling from './OffcanvasToggling';\nimport ModalContext from './ModalContext';\nimport OffcanvasHeader from './OffcanvasHeader';\nimport OffcanvasTitle from './OffcanvasTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BootstrapModalManager, { getSharedManager } from './BootstrapModalManager';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(OffcanvasToggling, {\n ...props\n });\n}\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props\n });\n}\nconst Offcanvas = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n 'aria-labelledby': ariaLabelledby,\n placement = 'start',\n responsive,\n /* BaseModal props */\n\n show = false,\n backdrop = true,\n keyboard = true,\n scroll = false,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n renderStaticNode = false,\n ...props\n}, ref) => {\n const modalManager = useRef();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n const [showOffcanvas, setShowOffcanvas] = useState(false);\n const handleHide = useEventCallback(onHide);\n const hideResponsiveOffcanvas = useBreakpoint(responsive || 'xs', 'up');\n useEffect(() => {\n // Handles the case where screen is resized while the responsive\n // offcanvas is shown. If `responsive` not provided, just use `show`.\n setShowOffcanvas(responsive ? show && !hideResponsiveOffcanvas : show);\n }, [show, responsive, hideResponsiveOffcanvas]);\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n function getModalManager() {\n if (propsManager) return propsManager;\n if (scroll) {\n // Have to use a different modal manager since the shared\n // one handles overflow.\n if (!modalManager.current) modalManager.current = new BootstrapModalManager({\n handleContainerOverflow: false\n });\n return modalManager.current;\n }\n return getSharedManager();\n }\n const handleEnter = (node, ...args) => {\n if (node) node.style.visibility = 'visible';\n onEnter == null || onEnter(node, ...args);\n };\n const handleExited = (node, ...args) => {\n if (node) node.style.visibility = '';\n onExited == null || onExited(...args);\n };\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName)\n }), [backdropClassName, bsPrefix]);\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n ...dialogProps,\n ...props,\n className: classNames(className, responsive ? `${bsPrefix}-${responsive}` : bsPrefix, `${bsPrefix}-${placement}`),\n \"aria-labelledby\": ariaLabelledby,\n children: children\n });\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [!showOffcanvas && (responsive || renderStaticNode) && renderDialog({}), /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: showOffcanvas,\n ref: ref,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus && !scroll,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: handleHide,\n onEnter: handleEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: DialogTransition,\n backdropTransition: BackdropTransition,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n })]\n });\n});\nOffcanvas.displayName = 'Offcanvas';\nexport default Object.assign(Offcanvas, {\n Body: OffcanvasBody,\n Header: OffcanvasHeader,\n Title: OffcanvasTitle\n});","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport Offcanvas from './Offcanvas';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarOffcanvas = /*#__PURE__*/React.forwardRef(({\n onHide,\n ...props\n}, ref) => {\n const context = useContext(NavbarContext);\n const handleHide = useEventCallback(() => {\n context == null || context.onToggle == null || context.onToggle();\n onHide == null || onHide();\n });\n return /*#__PURE__*/_jsx(Offcanvas, {\n ref: ref,\n show: !!(context != null && context.expanded),\n ...props,\n renderStaticNode: true,\n onHide: handleHide\n });\n});\nNavbarOffcanvas.displayName = 'NavbarOffcanvas';\nexport default NavbarOffcanvas;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavbarText.displayName = 'NavbarText';\nexport default NavbarText;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport { useUncontrolled } from 'uncontrollable';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport NavbarOffcanvas from './NavbarOffcanvas';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport NavbarText from './NavbarText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Navbar = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n bsPrefix: initialBsPrefix,\n expand = true,\n variant = 'light',\n bg,\n fixed,\n sticky,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'nav',\n expanded,\n onToggle,\n onSelect,\n collapseOnSelect = false,\n ...controlledProps\n } = useUncontrolled(props, {\n expanded: 'onToggle'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n const handleCollapse = useCallback((...args) => {\n onSelect == null || onSelect(...args);\n if (collapseOnSelect && expanded) {\n onToggle == null || onToggle(false);\n }\n }, [onSelect, collapseOnSelect, expanded, onToggle]);\n\n // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n let expandClass = `${bsPrefix}-expand`;\n if (typeof expand === 'string') expandClass = `${expandClass}-${expand}`;\n const navbarContext = useMemo(() => ({\n onToggle: () => onToggle == null ? void 0 : onToggle(!expanded),\n bsPrefix,\n expanded: !!expanded,\n expand\n }), [bsPrefix, expanded, expand, onToggle]);\n return /*#__PURE__*/_jsx(NavbarContext.Provider, {\n value: navbarContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleCollapse,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, bsPrefix, expand && expandClass, variant && `${bsPrefix}-${variant}`, bg && `bg-${bg}`, sticky && `sticky-${sticky}`, fixed && `fixed-${fixed}`)\n })\n })\n });\n});\nNavbar.displayName = 'Navbar';\nexport default Object.assign(Navbar, {\n Brand: NavbarBrand,\n Collapse: NavbarCollapse,\n Offcanvas: NavbarOffcanvas,\n Text: NavbarText,\n Toggle: NavbarToggle\n});",":local {\n .iconButton {\n vertical-align: top;\n position: relative;\n\n &.iconWithText {\n\n .svg {\n left: $input-btn-padding-y;\n top: 50%;\n margin-top: -($cv-svg-size * 0.5);\n position: absolute;\n }\n\n svg {\n vertical-align: top;\n }\n }\n\n &.iconOnly {\n\n .svg {\n top: 50%;\n left: 50%;\n transform: translate3D(-50%, -50%, 0);\n position: absolute;\n }\n }\n }\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ArrowLeftSvg } from 'libs/shared/images/svg/arrows/ArrowLeftSvg';\n\nimport styles from './back-button.module.scss';\n\ninterface BackButtonProps {\n backToName?: string;\n appLink?: Core.AppLink;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n}\n\nexport function BackButton(props: React.PropsWithChildren<BackButtonProps>): React.ReactElement {\n let buttonClassName = `d-flex ${props.className} ${styles.iconButton}`;\n\n if (props.children) {\n buttonClassName += `ps-2 text-nowrap ${styles.iconWithText}`;\n } else {\n buttonClassName += `p-1 ${styles.iconOnly}`;\n }\n\n const svg = (\n <SvgContainer svg={ArrowLeftSvg} className={`align-self-center svg-container ${styles.svg}`} size={SvgContainerSize.Small} />\n );\n\n function onClickButton(e: React.MouseEvent): void {\n if (FunctionHelper.isFunction(props.onClick))\n props.onClick(e);\n }\n\n if (!props.appLink) {\n return (\n <button className={buttonClassName} onClick={onClickButton}>\n {svg}\n <div className='ps-2'>\n {props.children}\n </div>\n </button>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n className='d-inline-flex align-items-center'\n onClick={props.onClick}\n >\n <SvgContainer svg={ArrowLeftSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{`Back${props.backToName ? ` to ${props.backToName}` : ''}`}</span>\n </AppLink>\n );\n}\n","import * as React from 'react';\nimport { Form, FormCheckProps } from 'react-bootstrap';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\ninterface CheckboxProps {\n selected: boolean;\n onToggle: (selected: boolean) => void;\n}\n\nexport function Checkbox(props: CheckboxProps & FormCheckProps): React.ReactElement {\n const { selected, onToggle, ...formCheckProps } = props;\n\n /**\n * We store the value of `selected` in state as `checked` so that if the value\n * of `selected` relies on an api call, the UI can be immediately updated.\n */\n const [ checked, setChecked ] = React.useState(selected);\n\n React.useEffect(() => setChecked(selected), [selected]);\n\n const onChangeHandler = () => {\n setChecked(!checked);\n onToggle(!checked);\n };\n\n return (\n <Form.Check\n type='checkbox'\n id={`checkbox-${RandomHelper.getRandomInt()}`}\n checked={checked}\n onChange={onChangeHandler}\n {...formCheckProps}\n />\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { ObjectList, ObjectTableColumn } from 'shared/components/object-list/ObjectList';\n\ninterface ObjectCollectionProps<T extends BaseObject> {\n collection: BasePaginatedCollection<T>;\n columns: ObjectTableColumn<T>[];\n collectionAppLink?: Core.AppLink;\n newObjectAppLink?: Core.AppLink;\n objectName?: string;\n newObjectVerb?: string;\n disableResponsive?: boolean;\n}\n\nexport function ObjectCollection<T extends BaseObject>(props: ObjectCollectionProps<T>): JSX.Element {\n if (!props.collection)\n return <></>;\n\n const { data, pagination } = props.collection;\n\n return (\n <>\n {!!data &&\n <ObjectList\n objects={data}\n columns={props.columns}\n newObjectAppLink={props.newObjectAppLink}\n objectName={props.objectName}\n newObjectVerb={props.newObjectVerb}\n disableResponsive={props.disableResponsive}\n />\n }\n {!!pagination && !!pagination.cursors && !!props.collectionAppLink &&\n <Pagination\n cursors={pagination.cursors}\n appLink={props.collectionAppLink}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Clip, Company, InteractiveMetadata, Playlist, Series, Video } from 'libs/shared/interfaces';\n\ninterface ObjectHeaderProps {\n object: Clip | InteractiveMetadata | Video | Company | Series | Playlist;\n actions?: ActionOptions[];\n actionsDropdownClassName?: string;\n showStatus?: boolean;\n}\n\nexport function ObjectHeader(props: ObjectHeaderProps): JSX.Element {\n return (\n <div className='d-flex justify-content-between py-2'>\n {!!props.object && (\n <div className='d-flex align-items-end'>\n <h1 className='h5 me-2 mb-0'>{props.object.name}</h1>\n\n {props.showStatus && 'status' in props.object && (\n <Badge data={props.object.status} type={BadgeType.Status} />\n )}\n </div>\n )}\n {!!props.actions && (\n <span><Actions actions={props.actions} actionsDropdownClassName={props.actionsDropdownClassName} /></span>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseObject } from 'libs/shared/interfaces';\n\ninterface ObjectListNavProps {\n objects: BaseObject[];\n getAppLink: (obj: BaseObject) => Core.AppLink;\n emptyMessage?: string;\n}\n\nObjectListNav.defaultProps = {\n emptyMessage: 'There is nothing here.'\n};\n\nexport function ObjectListNav({ objects, getAppLink, emptyMessage }: ObjectListNavProps): React.ReactElement {\n if (!objects)\n return <></>;\n\n if (!objects.length)\n return <div className='py-3'><p>{emptyMessage}</p></div>;\n\n return (\n <ul className='list-unstyled'>\n {objects.map((o, idx) => (\n <li key={idx} className='border rounded mb-3'>\n <AppLink appLink={getAppLink(o)} className='d-block p-3'>\n {o.name}\n </AppLink>\n </li>\n ))}\n </ul>\n );\n}\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Rating, UpdateObjectRating } from 'libs/shared/interfaces';\n\nconst getRatingLabel = (rating: Rating) => `${rating.name}${rating.code ? ` (${rating.code})` : ''}`;\n\ntype ObjectWithRating<T extends HashObject> = T & { rating?: UpdateObjectRating };\n\ninterface RatingSelectProps {\n ratings: Rating[];\n disabled?: boolean;\n showRequiredStar?: boolean;\n}\n\nexport function RatingSelect<T extends ObjectWithRating<unknown>>(props: RatingSelectProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n return (\n <FormField<T>\n as='select'\n label='Rating'\n name='rating'\n id='rating'\n value={formikProps.values.rating?.id}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\n formikProps.setFieldValue('rating', e.target.value ? { id: e.target.value } : null)\n }\n disabled={props.disabled}\n showRequiredStar={props.showRequiredStar}\n >\n <option value=''>Please select a rating</option>\n {props.ratings.map((rating, idx) => (\n <option key={idx} value={rating.id}>{getRatingLabel(rating)}</option>\n ))}\n </FormField>\n );\n}\n","import * as React from 'react';\nimport { Nav } from 'react-bootstrap';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { NavItem } from 'shared/interfaces';\nimport { NavHelper } from 'shared/utils';\n\nfunction getNavLinkClassName(isActive: boolean, isDisabled: boolean): string {\n const className = 'nav-link';\n\n if (isDisabled)\n return `${className} disabled text-secondary d-block`;\n\n if (!isActive)\n return className;\n\n return className + ' active';\n}\n\ninterface TabsProps {\n tabs: NavItem[];\n isItemActive?: (item: NavItem) => boolean;\n}\n\nTabs.defaultProps = {\n isItemActive: NavHelper.isItemActive\n};\n\nexport function Tabs({ tabs, isItemActive }: TabsProps): React.ReactElement {\n return (\n <Nav fill variant='tabs'>\n {tabs.map((tab, idx) => (\n <Nav.Item key={idx}>\n <AppLink\n appLink={!tab.disabled && tab.appLink}\n className={getNavLinkClassName(isItemActive(tab), tab.disabled)}\n disabled={tab.disabled}\n >\n {tab.label}\n </AppLink>\n </Nav.Item>\n ))}\n </Nav>\n );\n}\n",":local {\n .draggableVideoItem {\n cursor: grab;\n\n td, div {\n padding: (map-get($spacers, 1) * 0.5) .75rem;\n vertical-align: middle;\n }\n }\n\n .dragOverlay {\n border-top: 0.0625rem solid $gray-300;\n border-bottom: 0.0625rem solid $gray-300;\n cursor: grabbing;\n pointer-events: auto !important;\n height: 3.1875rem;\n\n .item {\n display: flex;\n align-items: center;\n padding: (map-get($spacers, 1) * 0.5) .75rem;\n }\n\n .itemNumber {\n width: 5.5rem;\n }\n\n .itemName {\n width: 60.125rem;\n }\n }\n}","import React from 'react';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { Video } from 'libs/shared/interfaces';\n\nimport styles from './video-list.module.scss';\n\ninterface VideoItemDragOverlayProps {\n video: Video;\n itemNumber: number;\n}\n\n/**\n * This is a purely presentational component, which is used when dragging and dropping\n * video items in a playlist\n */\nexport function VideoItemDragOverlay(props: VideoItemDragOverlayProps): JSX.Element {\n return (\n <div className={`${styles.dragOverlay} d-flex bg-white`}>\n <div className={`${styles.itemNumber} ${styles.item}`}>\n <span>{props.itemNumber}</span>\n </div>\n <div className={`${styles.itemName} ${styles.item}`}>\n {props.video.name}\n </div>\n <div className={styles.item}>\n <span className='d-flex justify-content-end'>\n <Actions actions={[{} as any]} />\n </span>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport { DraggableAttributes } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ActionGenerator, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { Video } from 'libs/shared/interfaces';\n\nconst getClassName = (additionalClassName: string) => {\n let className = 'bg-white';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n};\n\ninterface VideoItemProps {\n video: Video;\n style?: HashObject;\n getVideoAppLink?: (video: Video) => Core.AppLink;\n getVideoActions?: ActionGenerator;\n className?: string;\n sortable?: boolean;\n itemNumber?: number;\n dragAttributes?: DraggableAttributes;\n dragListeners?: HashObject;\n}\n\nexport const VideoItem = React.forwardRef((props: VideoItemProps, ref: (node: HTMLElement) => void) => {\n const { video, getVideoAppLink, getVideoActions, className = '', itemNumber, style = {} } = props;\n\n const appLink = FunctionHelper.isFunction(getVideoAppLink) && getVideoAppLink(video);\n\n return (\n <tr\n className={getClassName(className)}\n style={style}\n ref={ref}\n {...props.dragAttributes}\n {...props.dragListeners}\n >\n {!!itemNumber &&\n <td>\n <span>{itemNumber}</span>\n </td>\n }\n <td>\n {appLink ?\n <AppLink appLink={appLink}>{video.name}</AppLink> :\n video.name\n }\n </td>\n {FunctionHelper.isFunction(getVideoActions) &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={getVideoActions(video)} />\n </span>\n </td>\n }\n </tr>\n );\n});\n\nexport const SortableVideoItem = (props: VideoItemProps) => {\n return (\n <SortableItemWrapper id={props.video.id} childComponent={VideoItem} childProps={{ sortable: true, ...props }} />\n );\n};\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { ActionGenerator } from 'libs/shared/components/actions/Actions';\nimport { Video, VideoCollection } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { SortableVideoItem, VideoItem } from './VideoItem';\n\nimport styles from './video-list.module.scss';\n\nexport interface VideoListProps {\n videos: VideoCollection;\n getVideoAppLink?: (video: Video) => Core.AppLink;\n getVideoActions?: ActionGenerator;\n sortable?: boolean;\n emptyMessage?: string;\n}\n\nexport const VideoListHeader = ({ sortable, getVideoActions }: VideoListProps) => (\n <thead>\n <tr>\n {!!sortable && <th>#</th>}\n <th>Name</th>\n {!!getVideoActions && <th></th>}\n </tr>\n </thead>\n);\n\nexport const VideoListItems = React.forwardRef(\n ({ videos, sortable, ...childProps }: VideoListProps, ref: React.MutableRefObject<HTMLTableSectionElement>) => (\n <tbody ref={ref}>\n {!CollectionHelper.isEmpty(videos) && videos.data.map((v, idx) =>\n sortable ?\n (\n <SortableVideoItem\n key={v.id}\n itemNumber={idx + 1}\n video={v}\n className={styles.draggableVideoItem}\n {...childProps}\n />\n ) : <VideoItem video={v} {...childProps} />)}\n </tbody>\n )\n);\n\nVideoList.defaultProps = {\n emptyMessage: 'There are no videos in this list.'\n};\n\nexport function VideoList({ emptyMessage, ...props }: VideoListProps): JSX.Element {\n return (\n !CollectionHelper.isEmpty(props.videos) ?\n (\n <Table responsive>\n <VideoListHeader {...props} />\n <VideoListItems {...props} />\n </Table>\n ) : <div>{emptyMessage}</div>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\nimport { DragEndEvent, DragStartEvent } from '@dnd-kit/core';\n\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { Video } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { VideoItemDragOverlay } from './VideoItemDragOverlay';\nimport { VideoListHeader, VideoListItems, VideoListProps } from './VideoList';\n\ninterface SortableListProps extends VideoListProps {\n currentSortingIndex?: number;\n onSortStart: (event: DragStartEvent) => void;\n onSortEnd: (event: DragEndEvent) => void;\n}\n\nconst SortableList = React.forwardRef((\n props: SortableListProps,\n ref: React.MutableRefObject<HTMLTableSectionElement>\n) => {\n const { onSortStart, onSortEnd, videos, ...videoItemProps } = props;\n\n const getDragOverlay = (id: string) => {\n let index: number = -1;\n let video: Video = null;\n\n videos.data.forEach((v, i) => {\n if (video)\n return;\n\n if (v.id === id) {\n video = v;\n index = i;\n }\n });\n\n return (\n <VideoItemDragOverlay video={video} itemNumber={index + 1} />\n );\n };\n\n return (\n <SortableContainerWrapper\n ids={props.videos.data.map(v => v.id)}\n onSortStart={onSortStart}\n onSortEnd={onSortEnd}\n getDragOverlay={getDragOverlay}\n >\n <VideoListItems sortable ref={ref} videos={videos} {...videoItemProps} />\n </SortableContainerWrapper>\n );\n});\n\ninterface SortableVideoListProps {\n onSortEnd: (oldIndex: number, newIndex: number) => void;\n}\n\nSortableVideoList.defaultProps = {\n emptyMessage: 'There are no videos in this list.'\n};\n\nexport function SortableVideoList(props: SortableVideoListProps & VideoListProps): React.ReactElement {\n const { onSortEnd: onSortComplete, emptyMessage, ...videoListProps } = props;\n \n const [ currentSortingIndex, setCurrentSortingIndex ] = React.useState<number>();\n\n const onSortStartHandler = (event: DragStartEvent) => {\n const index = props.videos.data.findIndex(v => v.id.toString() === event.active.id.toString());\n setCurrentSortingIndex(index);\n };\n\n const onSortEnd = (event: DragEndEvent) => {\n setCurrentSortingIndex(null);\n\n const { active, over } = event;\n \n const oldIndex = props.videos.data.findIndex(v => v.id.toString() === active.id.toString());\n const newIndex = props.videos.data.findIndex(v => v.id.toString() === over.id.toString());\n\n onSortComplete(oldIndex, newIndex);\n };\n\n const ref = React.useRef<HTMLTableSectionElement>(null);\n\n if (CollectionHelper.isEmpty(props.videos))\n return <div>{emptyMessage}</div>;\n\n return (\n <Table responsive>\n <VideoListHeader sortable {...props} />\n <SortableList\n ref={ref}\n onSortStart={onSortStartHandler}\n onSortEnd={onSortEnd}\n currentSortingIndex={currentSortingIndex}\n {...videoListProps}\n />\n </Table>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport { object, string } from 'yup';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { Alias } from 'libs/shared/interfaces';\n\nimport { CreateAliasRequest } from 'shared/interfaces';\n\nconst AliasValidationSchema = object().shape<CreateAliasRequest>({\n name: string()\n .trim()\n .max(255, 'Name is too long')\n .required('Name is required')\n .default('')\n});\n\nfunction EditAliasForm(): React.ReactElement {\n const formikProps = useFormikContext<CreateAliasRequest>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <div className='d-flex'>\n <div className='flex-grow-1 pe-2'>\n <FormField<CreateAliasRequest>\n label='Create an alias'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder='Enter alias name'\n />\n </div>\n <div className='mt-labelHeight'>\n <SpinnerButton\n showSpinner={formikProps.isSubmitting}\n type='submit'\n disabled={!canSubmit}\n variant='outline-dark'\n >\n Add\n </SpinnerButton>\n </div>\n </div>\n </Form>\n );\n}\n\ninterface AddAliasProps {\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\n}\n\nexport function AddAlias(props: AddAliasProps): JSX.Element {\n const { onSave } = props;\n\n const onSubmit = (data: CreateAliasRequest, onDone: (opts: FormSubmissionOptions) => void): void => {\n onSave(data, () => onDone({ reset: true }));\n };\n\n return (\n <FormWrapper<CreateAliasRequest, Alias>\n initialValues={{ name: '' }}\n validationSchema={AliasValidationSchema}\n onSubmit={onSubmit}\n >\n <EditAliasForm />\n </FormWrapper>\n );\n}\n",":local {\n .actionButton {\n cursor: pointer;\n }\n}\n","import * as React from 'react';\n\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { Alias } from 'libs/shared/interfaces/models';\n\nimport styles from './alias.module.scss';\n\ninterface AliasItemProps {\n alias: Alias;\n onDelete: (name: string) => void;\n showConfirmation?: boolean;\n}\n\nAliasItem.defaultProps = {\n showConfirmation: true\n};\n\nexport function AliasItem(props: AliasItemProps): JSX.Element {\n const { alias, onDelete } = props;\n const [ showConfirmPopup, setShowConfirmPopup ] = React.useState(false);\n\n function onClickRemove(): void {\n if (!props.showConfirmation) {\n onDelete(alias.name);\n return;\n }\n\n setShowConfirmPopup(true);\n }\n\n return (\n <>\n <li className='list-group-item d-flex justify-content-between'>\n {alias.name}\n <SvgContainer\n svg={DeleteSvg}\n className={`d-inline-block svg-container ${styles.actionButton}`}\n onClick={onClickRemove}\n />\n </li>\n \n {showConfirmPopup &&\n <ConfirmationPopup\n title='Delete Alias?'\n onClickConfirm={() => { onDelete(alias.name); setShowConfirmPopup(false); }}\n closePopup={() => setShowConfirmPopup(false)}\n confirmButtonText='Delete'\n confirmButtonVariant='danger'\n >\n <p>Are you sure you want to delete <strong>{alias.name}</strong>?</p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n\ninterface AliasListProps {\n aliases: Alias[];\n onDelete: (id: string) => void;\n}\n\nexport function AliasList(props: AliasListProps): JSX.Element {\n const { aliases, onDelete } = props;\n\n return (\n <div className='row'>\n <div className='col-12'>\n <h2 className='h6'>Current Aliases</h2>\n { aliases?.length > 0 ?\n <ul className='list-group mb-3'>\n { aliases.map(alias => (\n <AliasItem\n key={alias.id}\n alias={alias}\n onDelete={() => onDelete(alias.id)}\n />\n )) }\n </ul> :\n <span>Currently there are no aliases for this object.</span>\n }\n </div>\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Alias } from 'libs/shared/interfaces';\n\nimport { CreateAliasRequest } from 'shared/interfaces';\n\nimport { AddAlias } from './AddAlias';\nimport { AliasList } from './AliasList';\n\ninterface AliasesProps {\n aliases: Alias[];\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\n onDelete: (id: string) => void;\n}\n\nexport function Aliases(props: AliasesProps): JSX.Element {\n const { onSave, aliases, onDelete } = props;\n\n return (\n <div className='w-50'>\n <div className='my-3'>\n <AddAlias onSave={onSave} />\n </div>\n <AliasList aliases={aliases} onDelete={onDelete} />\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { Tabs } from 'shared/components';\nimport { Actions } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { HasCuratorPermissionsFunc, useCuratorPermissions } from 'shared/hooks';\nimport { NavItem } from 'shared/interfaces';\n\nconst isItemActive = (memberType?: SubjectMemberType) => (item: NavItem) => {\n if (!memberType)\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION;\n\n switch (memberType) {\n case SubjectMemberType.Tags:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_CURATION;\n\n case SubjectMemberType.Playlists:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\n\n case SubjectMemberType.Series:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\n\n case SubjectMemberType.Videos:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\n\n case SubjectMemberType.Clips:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_CLIPS;\n\n case SubjectMemberType.Interactives:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_INTERACTIVES;\n\n case SubjectMemberType.Aliases:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_ALIASES;\n \n case SubjectMemberType.Dashboard:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_DASHBOARDS;\n }\n};\n\ninterface EditClassificationNavProps {\n presentation: Presentation;\n classificationId: string;\n getTabs: (presentationId: string, classificationId: string, hasPermissions: HasCuratorPermissionsFunc) => NavItem[];\n memberType?: SubjectMemberType;\n}\n\nexport function EditClassificationNav(props: EditClassificationNavProps): React.ReactElement {\n const { presentation, classificationId, memberType } = props;\n\n const { hasPermissions } = useCuratorPermissions();\n\n if (!presentation)\n return <></>;\n\n return (\n <>\n <h6>{`Presentation: ${!!presentation && presentation.name}`}</h6>\n <p>{presentation.description}</p>\n <div className='py-2'>\n <Tabs\n tabs={props.getTabs(presentation.id, classificationId, hasPermissions)}\n isItemActive={isItemActive(memberType)}\n />\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport * as Yup from 'yup';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\n\nimport { CuratorClassification } from 'shared/interfaces';\nimport {\n CreateClassificationRequest,\n UpdateClassificationRequest\n} from 'shared/interfaces/data-requests';\n\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\n\ninterface EditClassificationDetailsProps {\n saveClassification: (data: RequestType, onDone: () => void) => void;\n validationSchema: Yup.ObjectSchema<Yup.Shape<Record<string, any>, UpdateClassificationRequest>>;\n classification?: CuratorClassification;\n}\n\nexport function EditClassificationDetails(\n props: React.PropsWithChildren<EditClassificationDetailsProps>\n): React.ReactElement {\n const initialValues = props.classification ?\n { ...props.classification, themes: props.classification.themes?.data } :\n undefined;\n\n return (\n <FormWrapper<RequestType, CuratorClassification>\n initialValues={initialValues}\n validationSchema={props.validationSchema}\n onSubmit={props.saveClassification}\n >\n {props.children}\n </FormWrapper>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { TreeSelect } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ClassificationTree } from 'shared/interfaces/models';\n\nconst getClassificationAppLink = (presentationId: string, presentationType: PresentationType) =>\n (classificationId: string) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_CLASSIFICATION,\n args: [ presentationId, classificationId ]\n });\n\ninterface SelectClassificationsFormValues {\n classificationIds: string[];\n}\n\ninterface SelectClassificationsFormProps {\n presentationId: string;\n presentationType: PresentationType;\n classificationTree: ClassificationTree;\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\n}\n\nfunction SelectClassificationsForm(props: SelectClassificationsFormProps): JSX.Element {\n const formikProps = useFormikContext<SelectClassificationsFormValues>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n const handleSelect = (item: ClassificationTree) => formikProps.setFieldValue(\n 'classificationIds',\n ArrayHelper.addOrRemove(formikProps.values.classificationIds.map(id => id.toString()), item.id.toString())\n );\n\n const treeSelectClassName =\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'classificationIds')} h-auto py-2`;\n\n return (\n <Form>\n <FormField<SelectClassificationsFormValues> name='classificationIds'>\n {() => (\n <div className={treeSelectClassName}>\n <TreeSelect<ClassificationTree>\n label='Mapped Topic(s)'\n tree={props.classificationTree}\n selectedIds={formikProps.values.classificationIds}\n onSelect={handleSelect}\n getSelectedItemAppLink={getClassificationAppLink(props.presentationId, props.presentationType)}\n isNodeDisabled={props.isClassificationDisabled}\n multiSelect\n />\n </div>\n )}\n </FormField>\n <div className='d-flex justify-content-end'>\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\n Save Classifications\n </SpinnerButton>\n </div>\n </Form>\n );\n}\n\ninterface SelectClassificationsProps {\n initialValues: SelectClassificationsFormValues;\n presentationId: string;\n presentationType: PresentationType;\n classificationTree: ClassificationTree;\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\n}\n\nexport function SelectClassifications(props: SelectClassificationsProps): JSX.Element {\n const onSubmit = ({ classificationIds }: SelectClassificationsFormValues, onDone: () => void) =>\n props.saveClassifications(classificationIds, onDone);\n\n return (\n <FormWrapper<SelectClassificationsFormValues>\n initialValues={props.initialValues}\n onSubmit={onSubmit}\n enableReinitialize\n >\n <SelectClassificationsForm\n presentationId={props.presentationId}\n classificationTree={props.classificationTree}\n presentationType={props.presentationType}\n isClassificationDisabled={props.isClassificationDisabled}\n />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Checkbox } from 'shared/components';\n\nimport { PinState } from './usePinnedVideo';\n\ninterface ClassificationMemberItemProps<T extends BaseObject> {\n item: T;\n getItemAppLink: (item: T) => Core.AppLink;\n pinState: PinState;\n actions?: ActionOptions[];\n}\n\nexport function ClassificationMemberItem<T extends BaseObject>(\n props: ClassificationMemberItemProps<T>\n): React.ReactElement {\n const { item, getItemAppLink, actions, pinState } = props;\n\n return (\n <tr>\n <td>\n <AppLink appLink={getItemAppLink(item)}>{item.name}</AppLink>\n </td>\n {pinState.isPinnable &&\n <td>\n <Checkbox\n selected={parseInt(item.id) === parseInt(pinState.currentPinnedVideo)}\n onToggle={(selected: boolean) => pinState.onChange(selected, item.id)}\n id={item.id}\n />\n </td>\n }\n {actions &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={actions} />\n </span>\n </td>\n }\n </tr>\n );\n}\n","import * as React from 'react';\n\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { SubjectMemberType } from 'shared/enums';\n\nexport interface PinState {\n currentPinnedVideo: string;\n onChange: (selected: boolean, id: string) => void;\n canSubmit: boolean;\n isPinnable: boolean;\n}\n\nexport function usePinnedVideo(classification: Classification, memberType: SubjectMemberType): PinState {\n const initialPinnedVideo = classification.pinnedVideoMasterId || null;\n const [ currentPinnedVideo, setCurrentPinnedVideo ] = React.useState(initialPinnedVideo);\n\n const onChange = (selected: boolean, id: string): void => {\n setCurrentPinnedVideo(selected ? id : null);\n };\n\n const isPinnable = memberType === SubjectMemberType.Videos && classification.type === ClassificationType.Subject;\n const canSubmit = initialPinnedVideo !== currentPinnedVideo;\n\n return { currentPinnedVideo, onChange, canSubmit, isPinnable };\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\n\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nimport { ClassificationMemberItem } from './ClassificationMemberItem';\nimport { usePinnedVideo } from './usePinnedVideo';\n\ninterface ClassificationMemberListProps<T extends BaseObject> {\n items: T[];\n memberType: SubjectMemberType;\n classification: Classification;\n updatePinnedVideo: (id: string, callback: (data: Classification) => void) => void;\n getItemAppLink: (item: T) => Core.AppLink;\n getActions?: (item: T) => ActionOptions[];\n}\n\nexport function ClassificationMemberList<T extends BaseObject>(\n props: ClassificationMemberListProps<T>\n): React.ReactElement {\n const { items, memberType, classification, getItemAppLink, getActions, updatePinnedVideo } = props;\n\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\n const pinState = usePinnedVideo(classification, memberType);\n\n if (!items.length)\n return <div className='py-5'>{`No ${memberType} in this topic.`}</div>;\n\n const onSubmit = () => {\n setIsSubmitting(true);\n updatePinnedVideo(pinState.currentPinnedVideo, () => setIsSubmitting(false));\n };\n\n const memberHeading =\n `${TextHelper.toTitleCase(ClassificationMemberHelper.singularizeMemberType(memberType))} Name`;\n\n return (\n <>\n <Table responsive>\n <thead>\n <tr>\n <th>{memberHeading}</th>\n {pinState.isPinnable && <th>Pinned</th>}\n {FunctionHelper.isFunction(getActions) && <th></th>}\n </tr>\n </thead>\n <tbody>\n {items.map(item => (\n <ClassificationMemberItem\n item={item}\n key={item.id}\n getItemAppLink={getItemAppLink}\n actions={FunctionHelper.isFunction(getActions) && getActions(item)}\n pinState={pinState}\n />\n ))}\n </tbody>\n </Table>\n {pinState.isPinnable && (\n <SpinnerButton\n showSpinner={isSubmitting}\n onClick={onSubmit}\n disabled={!pinState.canSubmit || isSubmitting}\n >\n Save\n </SpinnerButton>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Table } from 'libs/shared/components/table/Table';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { ColumnData, MatrixMember } from 'shared/components/member-matrix';\nimport { BuildColumns } from 'shared/components/member-matrix/columns/Columns';\nimport { CuratorTableTheme } from 'shared/constants';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\ninterface VideoClassificationsMappingProps {\n availableClassifications: Classification[];\n presentations: Presentation[];\n classificationsPaths: ClassificationPathsMap;\n visibleInClassifications: string[];\n videoId?: string;\n columnData: ColumnData;\n mappedClassification?: Classification[];\n isFetchingVisibility?: boolean;\n}\n\nexport function buildClassificationPathNames(classificationsPaths: ClassificationPathsMap): Record<string, string[]> {\n return Object.keys(classificationsPaths).reduce((map, classificationId) => {\n const classificationPaths = classificationsPaths[classificationId];\n classificationPaths.forEach((paths: Classification[][]) => {\n map[classificationId] = paths.map(p => p.map(_p => _p.name).join(' -> '));\n });\n return map;\n }, {} as Record<string, string[]>);\n}\n\nexport function VideoClassificationsMappingList(props: VideoClassificationsMappingProps): JSX.Element {\n const classificationPathsNames = React.useMemo(\n () => buildClassificationPathNames(props.classificationsPaths ?? {}),\n [props.classificationsPaths]\n );\n\n const members = React.useMemo(\n () => props.availableClassifications?.map(c => {\n const presentation = props.presentations.find((p: Presentation) => p.id === c.presentationId);\n return {\n ...c,\n path: classificationPathsNames?.[c.id],\n presentation: presentation?.name ?? '',\n presentationDescription: presentation?.description ?? '',\n visibility: props.visibleInClassifications?.includes(c.id),\n shouldShowVisibility: !!props?.mappedClassification?.find(mapped => c.id === mapped.id)\n };\n }).filter(member => !!member.presentation),\n [\n props.availableClassifications,\n classificationPathsNames,\n props.presentations,\n props.visibleInClassifications,\n props.mappedClassification\n ]\n );\n\n const columns = MemberMatrixHelper.getColumnSet(DefinedColumnSet['VideoClassificationMapping']);\n\n const fullColumns = React.useMemo(() => BuildColumns({\n columns: columns,\n columnData: props.columnData\n }), [props.columnData]);\n\n if (!props.availableClassifications?.length) {\n return <p className='py-3'><i>There are no available topics for this video. Please ensure you've mapped the video to a backbone subject first</i></p>;\n }\n\n return (\n <Table<MatrixMember>\n theme={CuratorTableTheme}\n columns={fullColumns}\n data={members}\n enableSort\n />\n );\n}\n","import React from 'react';\n\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { ColumnData } from 'shared/components';\nimport { buildClassificationPathNames, VideoClassificationsMappingList } from 'shared/components/classifications';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\ninterface VideoClassificationListProps {\n availableClassifications?: Classification[];\n presentations: Presentation[];\n classificationsPaths?: ClassificationPathsMap;\n visibleInClassification?: string[];\n isFetchingVisibility?: boolean;\n videoId?: string;\n columnData?: ColumnData;\n mappedClassification?: Classification[];\n}\n\nexport function VideoClassificationList(props: VideoClassificationListProps): JSX.Element {\n const [ selectedPresentationId, setSelectedPresentationId ] = React.useState<string | null>(null);\n const [ searchText, setSearchText ] = React.useState('');\n const [ committedSearch, setCommittedSearch ] = React.useState('');\n\n function handleSearch() {\n setCommittedSearch(searchText);\n }\n\n // Builds a map of classification ID → lowercase path string for fast search matching.\n // Memoised to avoid re-iterating all classifications on unrelated renders.\n const classificationSearchMap = React.useMemo(() => {\n if (!props.classificationsPaths) return {} as Record<string, string>;\n const pathNames = buildClassificationPathNames(props.classificationsPaths);\n return Object.keys(pathNames).reduce((map, id) => {\n map[id] = pathNames[id].join(' ').toLowerCase();\n return map;\n }, {} as Record<string, string>);\n }, [props.classificationsPaths]);\n\n // Filters classifications to the selected presentation, or returns all if none selected.\n // Memoised to avoid re-filtering the full list on unrelated renders.\n const filteredByPresentation = React.useMemo(\n () => selectedPresentationId ?\n props.availableClassifications?.filter(c => c.presentationId.toString() === selectedPresentationId.toString()) :\n props.availableClassifications,\n [ props.availableClassifications, selectedPresentationId ]\n );\n\n // Applies the committed search query against the presentation-filtered list.\n // Memoised to avoid re-filtering on every keystroke before the search is committed.\n const filteredClassifications = React.useMemo(() => {\n if (!committedSearch || !props.classificationsPaths) return filteredByPresentation;\n const query = committedSearch.toLowerCase();\n return filteredByPresentation?.filter(c => classificationSearchMap[c.id ?? '']?.includes(query)) || [];\n }, [ filteredByPresentation, committedSearch, classificationSearchMap ]);\n\n const isLoadingPaths = !!props.availableClassifications?.length\n && (!props.classificationsPaths || Object.keys(props.classificationsPaths).length === 0);\n\n return (\n <>\n <h6>Topic visibility</h6>\n <p>\n Select which available presentations to add the video into. =\n Modify whether the video can be hidden or visible in the topic. In both cases the video will be searchable.\n </p>\n <div className='d-flex gap-3 mb-3'>\n <div className='w-25'>\n <label className='form-label' htmlFor='presentation-filter'>Presentation filter</label>\n <select\n id='presentation-filter'\n className='form-select'\n value={selectedPresentationId ?? ''}\n onChange={e => setSelectedPresentationId(e.target.value || null)}\n >\n <option value=''>All presentations</option>\n {props.presentations.map(p => (\n <option key={p.id} value={p.id}>{p.name} - {p.description}</option>\n ))}\n </select>\n </div>\n <div className='w-75'>\n <label className='form-label' htmlFor='path-search'>Search by topic name</label>\n <div className='input-group'>\n <input\n id='path-search'\n type='text'\n className='form-control'\n placeholder='Search topics...'\n value={searchText}\n onChange={e => setSearchText(e.target.value)}\n onKeyDown={e => e.key === 'Enter' && handleSearch()}\n />\n <button className='btn btn-dark' type='button' onClick={handleSearch}>Search</button>\n </div>\n </div>\n </div>\n {isLoadingPaths ?\n <div className='spinner-border' role='status'><span className='visually-hidden'>Loading...</span></div> :\n <VideoClassificationsMappingList\n key={`${selectedPresentationId ?? 'all'}-${committedSearch}`}\n availableClassifications={filteredClassifications}\n presentations={props.presentations}\n classificationsPaths={props.classificationsPaths}\n visibleInClassifications={props.visibleInClassification}\n isFetchingVisibility={props.isFetchingVisibility}\n videoId={props.videoId}\n columnData={props.columnData}\n mappedClassification={props.mappedClassification}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Classification, Presentation, Subject } from 'libs/shared/interfaces';\n\nimport { ColumnData, SelectBackboneClassification } from 'shared/components';\nimport { SelectClassifications } from 'shared/components/classifications';\nimport { PresentationSelect } from 'shared/components/presentations/presentation-select';\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationTree, SubjectTree } from 'shared/interfaces/models';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\nimport { VideoClassificationList } from './VideoClassificationList';\n\ninterface EditObjectSubjectsProps {\n objectSubjects: Subject[];\n subjectTree: SubjectTree;\n saveSubjects: (\n backboneClassificationIds: string[],\n addToClassifications: boolean,\n setSubmittingFalse: () => void\n ) => void;\n memberType: SubjectMemberType;\n presentations: Presentation[];\n presentationType: PresentationType;\n currentPresentation: Presentation;\n setCurrentPresentation: (p: Presentation) => void;\n classificationTree: ClassificationTree;\n // List of classifications mapped to a subject that the object is mapped to.\n objectSubjectClassifications: Classification[];\n objectClassifications: Classification[];\n saveClassifications?: (classificationIds: string[], setSubmittingFalse: () => void) => void;\n allowedClassificationIds?: string[];\n classificationsPaths?: ClassificationPathsMap;\n visibleInClassification?: string[];\n videoId?: string;\n columnData?: ColumnData;\n availableClassifications?: Classification[];\n mappedClassification?: Classification[];\n isVideoClassification?: boolean;\n isFetchingVisibility?: boolean;\n}\n\nfunction isTopicClassificationDisabled({\n objectClassifications,\n objectSubjectClassifications\n}: EditObjectSubjectsProps): (classification: ClassificationTree) => boolean {\n const allowedClassificationIds = [\n ...objectClassifications,\n ...objectSubjectClassifications\n ].map(c => c.id);\n\n return (classification: ClassificationTree) =>\n !allowedClassificationIds.includes(classification.id);\n}\n\n/**\n * At the time of implementation, we only allow videos to be added to curriculum classifications.\n * Furthermore, based on how they're displayed to custoemrs within lite, they should only ever \n * be mapped to CurriculumLead nodes. - Mike\n */\nfunction isCurriculumClassificationDisabled({\n objectClassifications,\n objectSubjectClassifications\n}: EditObjectSubjectsProps): (classification: ClassificationTree) => boolean {\n const allowedClassificationIds = [\n ...objectClassifications,\n ...objectSubjectClassifications.filter(c => c.type === ClassificationType.CurriculumLeaf)\n ].map(c => c.id);\n\n return (classification: ClassificationTree) =>\n !allowedClassificationIds.includes(classification.id);\n}\n\nexport function EditObjectSubjects(props: EditObjectSubjectsProps): JSX.Element {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(props.memberType);\n \n let isClassificationDisabled: (classification: Classification | ClassificationTree) => boolean | undefined;\n if (!props?.isVideoClassification) {\n isClassificationDisabled = props.presentationType === PresentationType.Subject ?\n isTopicClassificationDisabled(props) :\n isCurriculumClassificationDisabled(props);\n }\n \n const showClassificationTree = !!props.currentPresentation && !!props.classificationTree?.children?.length;\n\n const VideoClassificationTree = () => (\n <>\n <h6>Topics</h6>\n <p>{`Select a presentation to view its topics and map them to this ${singularMemberType}.`}</p>\n <div className='w-50 pb-3'>\n <PresentationSelect\n presentations={props.presentations}\n currentPresentationId={props.currentPresentation.id}\n setCurrentPresentation={props.setCurrentPresentation}\n />\n </div>\n {showClassificationTree ?\n (\n <>\n <p>\n {'Only topics which are mapped to one of the backbone subjects' +\n ' selected above can be selected.'}\n </p>\n <SelectClassifications\n initialValues={{ classificationIds: props.objectClassifications.map(c => c.id) }}\n presentationId={props.currentPresentation.id}\n presentationType={props.presentationType}\n classificationTree={props.classificationTree}\n saveClassifications={props.saveClassifications}\n isClassificationDisabled={isClassificationDisabled}\n />\n </>\n ) : <p>This presentation has no topics.</p>\n }\n </>\n );\n\n return (\n <>\n <div className='border-bottom pb-3 mb-3'>\n <h2 className='h6'>Backbone Subjects</h2>\n <p>{`Select which backbone subjects this ${singularMemberType} is mapped to.`}</p>\n <SelectBackboneClassification\n initialValues={{ backboneClassificationIds: props.objectSubjects.map(s => s.id) }}\n presentationType={props.presentationType}\n subjectTree={props.subjectTree}\n saveSubjects={props.saveSubjects}\n memberType={props.memberType}\n saveBtnText='Save Backbone Subjects'\n allowMultiple\n />\n </div>\n {props.isVideoClassification ?\n (\n <VideoClassificationList\n availableClassifications={props.availableClassifications}\n presentations={props.presentations}\n classificationsPaths={props.classificationsPaths}\n visibleInClassification={props.visibleInClassification}\n isFetchingVisibility={props.isFetchingVisibility}\n videoId={props.videoId}\n columnData={props.columnData}\n mappedClassification={props.mappedClassification}\n />\n ) :\n <VideoClassificationTree/>}\n </>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectBackboneClassification } from 'shared/components';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectTree } from 'shared/interfaces/models';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\ninterface AddSubjectMembersProps {\n memberType: SubjectMemberType;\n subjectTree: SubjectTree;\n objects: BaseObject[];\n presentationType: PresentationType;\n onClickAddToSubject: (\n backboneClassificationIds: string[],\n addToClassifications: boolean,\n setSubmittingFalse: () => void\n ) => void;\n}\n\nexport function AddSubjectMembers(props: AddSubjectMembersProps): React.ReactElement {\n return (\n <>\n <h4>{`${TextHelper.toTitleCase(props.memberType)}`}</h4>\n <Table responsive>\n <tbody>\n {props.objects && props.objects.map(o => (\n <tr key={o.id}>\n <td>\n <AppLink\n appLink={ClassificationMemberHelper.getMemberAppLink(props.memberType, o.id)}>{o.name}\n </AppLink>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n <SelectBackboneClassification\n initialValues={{ backboneClassificationIds: []}}\n presentationType={props.presentationType}\n subjectTree={props.subjectTree}\n saveSubjects={props.onClickAddToSubject}\n memberType={props.memberType}\n saveBtnText='Add to backbone subject'\n subjectRequired\n />\n </>\n );\n}\n","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\n\nimport { Tabs } from 'shared/components';\nimport { NavItem } from 'shared/interfaces';\n\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\n\ninterface EditSubjectNavProps {\n subjectId: string;\n activeAction: string;\n presentationType: PresentationType;\n getTabs: (subjectId: string, presentationId: string) => NavItem[];\n presentationId?: string;\n}\n\nexport function EditSubjectNav(props: EditSubjectNavProps): React.ReactElement {\n const type = props.presentationType === PresentationType.Subject ? 'Topics' : 'Curriculums';\n\n return (\n <>\n <Alert variant='danger'>\n {`Warning: You are editing the backbone subjects for ${type}.`}\n </Alert>\n <div className='py-2'>\n <Tabs\n tabs={props.getTabs(props.subjectId, props.presentationId)}\n isItemActive={isItemActive(props.activeAction)}\n />\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { TreeSelect } from 'shared/components';\nimport { AppChannels } from 'shared/constants';\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectTree } from 'shared/interfaces/models';\n\nconst getValidationSchema = (subjectRequired: boolean) => Yup.object().shape<SelectBackboneClassificationFormValues>({\n backboneClassificationIds: subjectRequired ?\n Yup.array().of(Yup.string())\n .min(1, 'A subject is required')\n .required('A subject is required') :\n Yup.array().of(Yup.string())\n\n}).noUnknown();\n\nconst getBackboneClassificationAppLink = (presentationType: PresentationType) =>\n (subjectId: string) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_SUBJECT,\n args: [subjectId]\n });\n\ninterface SelectBackboneClassificationFormValues {\n backboneClassificationIds: string[];\n}\n\ninterface SelectBackboneClassificationFormProps {\n subjectTree: SubjectTree;\n memberType: SubjectMemberType;\n presentationType: PresentationType;\n allowMultiple?: boolean;\n saveBtnText?: string;\n}\n\nSelectBackboneClassificationForm.defaultProps = {\n saveBtnText: 'Save'\n};\n\nfunction SelectBackboneClassificationForm(props: SelectBackboneClassificationFormProps): JSX.Element {\n const formikProps = useFormikContext<SelectBackboneClassificationFormValues>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n const handleSelect = (item: SubjectTree) => {\n const backboneClassificationIds = props.allowMultiple ?\n ArrayHelper.addOrRemove(\n formikProps.values.backboneClassificationIds.map(id => id.toString()),\n item.id.toString()\n ) :\n [item.id];\n\n formikProps.setFieldValue('backboneClassificationIds', backboneClassificationIds);\n };\n\n const treeSelectClassName =\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'backboneClassificationIds')} h-auto py-2`;\n\n return (\n <Form>\n <FormField<SelectBackboneClassificationFormValues> name='backboneClassificationIds'>\n {() => (\n <div className={treeSelectClassName}>\n <TreeSelect<SubjectTree>\n label={`Mapped Backbone Subject${props.allowMultiple ? '(s)' : ''}`}\n tree={props.subjectTree}\n selectedIds={formikProps.values.backboneClassificationIds}\n onSelect={handleSelect}\n collapse={!!formikProps.initialValues.backboneClassificationIds.length}\n getSelectedItemAppLink={getBackboneClassificationAppLink(props.presentationType)}\n multiSelect\n />\n </div>\n )}\n </FormField>\n <div className='d-flex justify-content-end'>\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\n {props.saveBtnText}\n </SpinnerButton>\n </div>\n </Form>\n );\n}\n\ninterface SelectBackboneClassificationProps {\n initialValues: SelectBackboneClassificationFormValues;\n saveSubjects: (backboneClassificationIds: string[], addToClassifications: boolean, onDone: () => void) => void;\n subjectTree: SubjectTree;\n memberType: SubjectMemberType;\n presentationType: PresentationType;\n subjectRequired?: boolean;\n allowMultiple?: boolean;\n saveBtnText?: string;\n}\n\nexport function SelectBackboneClassification(props: SelectBackboneClassificationProps): JSX.Element {\n const onSubmit = (\n { backboneClassificationIds }: SelectBackboneClassificationFormValues,\n onDone: () => void\n ) => props.saveSubjects(backboneClassificationIds, false, onDone);\n\n return (\n <FormWrapper<SelectBackboneClassificationFormValues>\n initialValues={props.initialValues}\n validationSchema={getValidationSchema(props.subjectRequired)}\n onSubmit={onSubmit}\n >\n <SelectBackboneClassificationForm\n subjectTree={props.subjectTree}\n memberType={props.memberType}\n presentationType={props.presentationType}\n allowMultiple={props.allowMultiple}\n saveBtnText={props.saveBtnText}\n />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Classification } from 'libs/shared/interfaces';\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nconst getClassificationAppLink = (\n presentationId: string,\n classificationId: string,\n presentationType: PresentationType\n) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_CLASSIFICATION,\n args: [ presentationId, classificationId ]\n});\n\ninterface PresentationClassificationsProps {\n presentation: Presentation;\n classifications: Classification[];\n}\n\nconst PresentationClassifications = (props: PresentationClassificationsProps) => (\n <div className='border rounded p-2 mb-3'>\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\n {(props.classifications && props.classifications.length) ?\n (\n <ul className='list-unstyled mb-0'>\n {props.classifications.map(c => (\n <li key={c.id} className='py-1'>\n <AppLink appLink={getClassificationAppLink(props.presentation.id, c.id, props.presentation.type)}>\n {c.name}\n </AppLink>\n </li>\n ))}\n </ul>\n ) : <p><em>There are no topics mapped to this backbone subject in this presentation.</em></p>\n }\n </div>\n);\n\ninterface SubjectClassificationsProps {\n presentations: Presentation[];\n classificationDictionary: {[presentationId: string]: Classification[] };\n}\n\nexport const SubjectClassifications = (props: SubjectClassificationsProps) => (\n <>\n {!!props.presentations && !!props.classificationDictionary && props.presentations.map(p => (\n <PresentationClassifications\n key={p.id}\n presentation={p}\n classifications={props.classificationDictionary[p.id]}\n />\n ))}\n </>\n);\n","import * as React from 'react';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { Checkbox } from 'shared/components';\n\nimport { SubjectMemberViewModel } from './SubjectMemberList';\n\ninterface SubjectMemberItemProps {\n member: SubjectMemberViewModel;\n getMemberAppLink: (memberId: string) => Core.AppLink;\n onToggleClassification: (classificationId: string, selected: boolean, memberId: string) => void;\n actions?: ActionOptions[];\n}\n\nexport function SubjectMemberItem(props: SubjectMemberItemProps): React.ReactElement {\n const {\n member: { id, name, classifications = []},\n getMemberAppLink,\n onToggleClassification,\n actions\n } = props;\n\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\n\n if (classifications.length && !FunctionHelper.isFunction(onToggleClassification))\n Core.ErrorHelper.throw(new DevError('onToggleClassification must be passed to SubjectMemberItem'));\n\n return (\n <tr>\n <td>\n {appLink ?\n <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink> :\n name\n }\n </td>\n {!!classifications.length && classifications.map(c => (\n <td key={c.id}>\n <Checkbox\n selected={c.selected}\n onToggle={(s: boolean) => onToggleClassification(c.id, s, id)}\n />\n </td>\n ))}\n {actions &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={actions} />\n </span>\n </td>\n }\n </tr>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { Checkbox } from 'shared/components';\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nconst getClassificationLabel = (c: Classification, showClassificationSubHeader: boolean) =>\n showClassificationSubHeader ? c.name : `Classification: ${c.name}`;\n\ninterface ClassificationHeaderColumnsProps {\n classifications: Classification[];\n getIsClassificationSelected: (classification: Classification) => boolean;\n onToggleClassification: (classificationId: string, selected: boolean) => void;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n showClassificationSubHeader: boolean;\n}\n\nfunction ClassificationHeaderColumns(props: ClassificationHeaderColumnsProps): React.ReactElement {\n return (\n <>\n {props.classifications.map(c => (\n <th key={c.id}>\n <span className='d-inline-block'>\n <Checkbox\n selected={props.getIsClassificationSelected(c)}\n onToggle={(selected: boolean) => props.onToggleClassification(c.id, selected)}\n />\n </span>\n <AppLink appLink={props.getClassificationAppLink(c.id)}>\n {getClassificationLabel(c, props.showClassificationSubHeader)}\n </AppLink>\n </th>\n ))}\n </>\n );\n}\n\ninterface SubjectMemberListHeaderProps {\n memberType: SubjectMemberType;\n hasActions: boolean;\n classifications: Classification[];\n getIsClassificationSelected: (classification: Classification) => boolean;\n onToggleClassification: (classificationId: string, selected: boolean) => void;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n}\n\nexport function SubjectMemberListHeader(props: SubjectMemberListHeaderProps): React.ReactElement {\n const { memberType, hasActions, classifications, ...otherProps } = props;\n\n const memberHeading =\n `${TextHelper.toTitleCase(ClassificationMemberHelper.singularizeMemberType(memberType))} Name`;\n\n const hasClassifications = !!classifications && !!classifications.length;\n\n const showClassificationSubHeader = hasClassifications && classifications.length > 1;\n\n const rowSpan = hasClassifications ? 2 : 1;\n\n const classificationColumnsProps = { classifications, showClassificationSubHeader, ...otherProps };\n\n return (\n <thead>\n <tr>\n <th rowSpan={rowSpan}>{memberHeading}</th>\n {hasClassifications && (showClassificationSubHeader ?\n <th colSpan={classifications.length} className='text-center'>Topics</th> :\n <ClassificationHeaderColumns {...classificationColumnsProps} />\n )}\n {hasActions && <th rowSpan={rowSpan}></th>}\n </tr>\n {hasClassifications && showClassificationSubHeader &&\n <tr>\n <ClassificationHeaderColumns {...classificationColumnsProps} />\n </tr>\n }\n </thead>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Classification } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { SubjectMemberType } from 'shared/enums';\n\nimport { SubjectMemberItem } from './SubjectMemberItem';\nimport { SubjectMemberListHeader } from './SubjectMemberListHeader';\n\nfunction allClassificationMembersSelected(\n memberType: SubjectMemberType,\n members: SubjectMemberViewModel[]\n): (classification: Classification) => boolean {\n return (classification: Classification) => {\n const classificationMembers = (classification as any)[memberType];\n\n const numSelectedMembers = CollectionHelper.length(classificationMembers);\n\n return !!numSelectedMembers && numSelectedMembers === members.length;\n };\n}\n\ntype ClassificationViewModel = { id: string, selected: boolean };\n\nexport interface SubjectMemberViewModel {\n id: string;\n name: string;\n classifications?: ClassificationViewModel[];\n}\n\ninterface SubjectMemberListProps {\n members: SubjectMemberViewModel[];\n memberType: SubjectMemberType;\n classifications: Classification[];\n getMemberAppLink: (memberId: string) => Core.AppLink;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n onToggleClassification: (classificationId: string, selected: boolean, memberId?: string) => void;\n getActions?: (itemId: string) => ActionOptions[];\n}\n\nexport function SubjectMemberList(props: SubjectMemberListProps): React.ReactElement {\n const {\n members,\n memberType,\n getActions,\n classifications,\n getClassificationAppLink,\n onToggleClassification,\n ...itemProps\n } = props;\n\n if (!members.length)\n return <div className='py-5'>{`No ${memberType} in this backbone subject.`}</div>;\n\n const hasActions = FunctionHelper.isFunction(getActions);\n\n const headerProps = {\n memberType,\n classifications,\n getClassificationAppLink,\n getIsClassificationSelected: allClassificationMembersSelected(memberType, members),\n onToggleClassification,\n hasActions\n };\n\n return (\n <Table responsive bordered>\n <SubjectMemberListHeader {...headerProps} />\n <tbody>\n {members.map((member, idx) => (\n <SubjectMemberItem\n key={idx}\n member={member}\n actions={hasActions && getActions(member.id)}\n onToggleClassification={onToggleClassification}\n {...itemProps}\n />\n ))}\n </tbody>\n </Table>\n );\n}\n","import * as React from 'react';\nimport { Container, Nav, Navbar } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { NavItem } from 'shared/interfaces';\nimport { NavHelper } from 'shared/utils';\n\nexport interface TopNavProps {\n navItems: NavItem[];\n currentAppLink: Core.AppLink;\n}\n\nexport function TopNav({ navItems, currentAppLink }: TopNavProps): React.ReactElement {\n return (\n <Container>\n <Navbar className='justify-content-between align-items-center'>\n <Nav>\n {!!navItems && navItems.map((item, idx) => (\n <Nav.Item key={idx}>\n <AppLink\n appLink={item.appLink}\n className={`nav-link${NavHelper.isItemActive(item, currentAppLink) ? ' text-primary' : ''}`}\n >\n {item.label}\n </AppLink>\n </Nav.Item>\n ))}\n </Nav>\n </Navbar>\n </Container>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GpDEun8c2.chunk.js","names":["_excluded","_objectWithoutPropertiesLoose","NavItem","NavbarContext","divWithClassName","NavbarContext","useEventCallback","Offcanvas"],"sources":["../../../../../../../../node_modules/react-bootstrap/esm/CardHeaderContext.js","../../../../../../../../node_modules/react-bootstrap/esm/Container.js","../../../../../../../../node_modules/@restart/ui/esm/TabContext.js","../../../../../../../../node_modules/@restart/ui/esm/NavItem.js","../../../../../../../../node_modules/@restart/ui/esm/Nav.js","../../../../../../../../node_modules/react-bootstrap/esm/NavItem.js","../../../../../../../../node_modules/react-bootstrap/esm/NavLink.js","../../../../../../../../node_modules/react-bootstrap/esm/Nav.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarBrand.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarCollapse.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarToggle.js","../../../../../../../../node_modules/@restart/hooks/esm/useMediaQuery.js","../../../../../../../../node_modules/@restart/hooks/esm/useBreakpoint.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasBody.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../../../../../../../../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../../../../../../../../node_modules/react-bootstrap/esm/Offcanvas.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../../../../../../../../node_modules/react-bootstrap/esm/NavbarText.js","../../../../../../../../node_modules/react-bootstrap/esm/Navbar.js","../../../../../src/shared/components/back-button/back-button.module.scss","../../../../../src/shared/components/back-button/BackButton.tsx","../../../../../src/shared/components/checkbox/Checkbox.tsx","../../../../../src/shared/components/object-collection/ObjectCollection.tsx","../../../../../src/shared/components/object-header/ObjectHeader.tsx","../../../../../src/shared/components/object-list-nav/ObjectListNav.tsx","../../../../../src/shared/components/rating-select/RatingSelect.tsx","../../../../../src/shared/components/tabs/Tabs.tsx","../../../../../src/shared/components/video-list/video-list.module.scss","../../../../../src/shared/components/video-list/VideoItemDragOverlay.tsx","../../../../../src/shared/components/video-list/VideoItem.tsx","../../../../../src/shared/components/video-list/VideoList.tsx","../../../../../src/shared/components/video-list/SortableVideoList.tsx","../../../../../src/shared/components/aliases/AddAlias.tsx","../../../../../src/shared/components/aliases/alias.module.scss","../../../../../src/shared/components/aliases/AliasList.tsx","../../../../../src/shared/components/aliases/Aliases.tsx","../../../../../src/shared/components/classifications/edit-classification-nav/EditClassificationNav.tsx","../../../../../src/shared/components/classifications/edit-classification-details/EditClassificationDetails.tsx","../../../../../src/shared/components/classifications/select-classifications/SelectClassifications.tsx","../../../../../src/shared/components/classifications/classification-member-list/ClassificationMemberItem.tsx","../../../../../src/shared/components/classifications/classification-member-list/usePinnedVideo.ts","../../../../../src/shared/components/classifications/classification-member-list/ClassificationMemberList.tsx","../../../../../src/shared/components/classifications/video-classification-mapping-list/VideoClassificationMappingList.tsx","../../../../../src/shared/components/backbone-classification/edit-object-subjects/VideoClassificationList.tsx","../../../../../src/shared/components/backbone-classification/edit-object-subjects/EditObjectSubjects.tsx","../../../../../src/shared/components/backbone-classification/add-subject-members/AddSubjectMembers.tsx","../../../../../src/shared/components/backbone-classification/edit-subject-nav/EditSubjectNav.tsx","../../../../../src/shared/components/backbone-classification/select-subjects/SelectBackboneClassification.tsx","../../../../../src/shared/components/backbone-classification/subject-classifications/SubjectClassifications.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberItem.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberListHeader.tsx","../../../../../src/shared/components/backbone-classification/subject-member-list/SubjectMemberList.tsx","../../../../../src/shared/components/top-nav/TopNav.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nexport default Container;","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null);\n\n // @ts-ignore\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n if (!isActive) {\n props.tabIndex = -1;\n }\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n if (key == null) {\n return;\n }\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options));\n\n // @ts-ignore\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n // TODO: do we need to duplicate these?\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n const listNode = useRef(null);\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n if (!tabContext) {\n return;\n }\n let nextActiveChild;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n default:\n return;\n }\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavItem = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n disabled = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n disabled,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ...navItemProps,\n ref: ref,\n disabled: disabled,\n className: classNames(className, bsPrefix, disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nexport default NavLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill = false,\n justify = false,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarBrand = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n const Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n className: classNames(className, bsPrefix)\n });\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarCollapse = /*#__PURE__*/React.forwardRef(({\n children,\n bsPrefix,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Collapse, {\n in: !!(context && context.expanded),\n ...props,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: bsPrefix,\n children: children\n })\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n label = 'Toggle navigation',\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n const {\n onToggle,\n expanded\n } = useContext(NavbarContext) || {};\n const handleClick = useEventCallback(e => {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n if (Component === 'button') {\n props.type = 'button';\n }\n return /*#__PURE__*/_jsx(Component, {\n ...props,\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed'),\n children: children || /*#__PURE__*/_jsx(\"span\", {\n className: `${bsPrefix}-icon`\n })\n });\n});\nNavbarToggle.displayName = 'NavbarToggle';\nexport default NavbarToggle;","import useEffect from './useIsomorphicEffect';\nimport { useState } from 'react';\nconst matchersByWindow = new WeakMap();\nconst getMatcher = (query, targetWindow) => {\n if (!query || !targetWindow) return undefined;\n const matchers = matchersByWindow.get(targetWindow) || new Map();\n matchersByWindow.set(targetWindow, matchers);\n let mql = matchers.get(query);\n if (!mql) {\n mql = targetWindow.matchMedia(query);\n mql.refCount = 0;\n matchers.set(mql.media, mql);\n }\n return mql;\n};\n/**\n * Match a media query and get updates as the match changes. The media string is\n * passed directly to `window.matchMedia` and run as a Layout Effect, so initial\n * matches are returned before the browser has a chance to paint.\n *\n * ```tsx\n * function Page() {\n * const isWide = useMediaQuery('min-width: 1000px')\n *\n * return isWide ? \"very wide\" : 'not so wide'\n * }\n * ```\n *\n * Media query lists are also reused globally, hook calls for the same query\n * will only create a matcher once under the hood.\n *\n * @param query A media query\n * @param targetWindow The window to match against, uses the globally available one as a default.\n */\nexport default function useMediaQuery(query, targetWindow = typeof window === 'undefined' ? undefined : window) {\n const mql = getMatcher(query, targetWindow);\n const [matches, setMatches] = useState(() => mql ? mql.matches : false);\n useEffect(() => {\n let mql = getMatcher(query, targetWindow);\n if (!mql) {\n return setMatches(false);\n }\n let matchers = matchersByWindow.get(targetWindow);\n const handleChange = () => {\n setMatches(mql.matches);\n };\n mql.refCount++;\n mql.addListener(handleChange);\n handleChange();\n return () => {\n mql.removeListener(handleChange);\n mql.refCount--;\n if (mql.refCount <= 0) {\n matchers == null ? void 0 : matchers.delete(mql.media);\n }\n mql = undefined;\n };\n }, [query]);\n return matches;\n}","import useMediaQuery from './useMediaQuery';\nimport { useMemo } from 'react';\n/**\n * Create a responsive hook we a set of breakpoint names and widths.\n * You can use any valid css units as well as a numbers (for pixels).\n *\n * **NOTE:** The object key order is important! it's assumed to be in order from smallest to largest\n *\n * ```ts\n * const useBreakpoint = createBreakpointHook({\n * xs: 0,\n * sm: 576,\n * md: 768,\n * lg: 992,\n * xl: 1200,\n * })\n * ```\n *\n * **Watch out!** using string values will sometimes construct media queries using css `calc()` which\n * is NOT supported in media queries by all browsers at the moment. use numbers for\n * the widest range of browser support.\n *\n * @param breakpointValues A object hash of names to breakpoint dimensions\n */\nexport function createBreakpointHook(breakpointValues) {\n const names = Object.keys(breakpointValues);\n function and(query, next) {\n if (query === next) {\n return next;\n }\n return query ? `${query} and ${next}` : next;\n }\n function getNext(breakpoint) {\n return names[Math.min(names.indexOf(breakpoint) + 1, names.length - 1)];\n }\n function getMaxQuery(breakpoint) {\n const next = getNext(breakpoint);\n let value = breakpointValues[next];\n if (typeof value === 'number') value = `${value - 0.2}px`;else value = `calc(${value} - 0.2px)`;\n return `(max-width: ${value})`;\n }\n function getMinQuery(breakpoint) {\n let value = breakpointValues[breakpoint];\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n return `(min-width: ${value})`;\n }\n\n /**\n * Match a set of breakpoints\n *\n * ```tsx\n * const MidSizeOnly = () => {\n * const isMid = useBreakpoint({ lg: 'down', sm: 'up' });\n *\n * if (isMid) return <div>On a Reasonable sized Screen!</div>\n * return null;\n * }\n * ```\n * @param breakpointMap An object map of breakpoints and directions, queries are constructed using \"and\" to join\n * breakpoints together\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n /**\n * Match a single breakpoint exactly, up, or down.\n *\n * ```tsx\n * const PhoneOnly = () => {\n * const isSmall = useBreakpoint('sm', 'down');\n *\n * if (isSmall) return <div>On a Small Screen!</div>\n * return null;\n * }\n * ```\n *\n * @param breakpoint The breakpoint key\n * @param direction A direction 'up' for a max, 'down' for min, true to match only the breakpoint\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n function useBreakpoint(breakpointOrMap, direction, window) {\n let breakpointMap;\n if (typeof breakpointOrMap === 'object') {\n breakpointMap = breakpointOrMap;\n window = direction;\n direction = true;\n } else {\n direction = direction || true;\n breakpointMap = {\n [breakpointOrMap]: direction\n };\n }\n let query = useMemo(() => Object.entries(breakpointMap).reduce((query, [key, direction]) => {\n if (direction === 'up' || direction === true) {\n query = and(query, getMinQuery(key));\n }\n if (direction === 'down' || direction === true) {\n query = and(query, getMaxQuery(key));\n }\n return query;\n }, ''), [JSON.stringify(breakpointMap)]);\n return useMediaQuery(query, window);\n }\n return useBreakpoint;\n}\nconst useBreakpoint = createBreakpointHook({\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n});\nexport default useBreakpoint;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasBody = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-body');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasBody.displayName = 'OffcanvasBody';\nexport default OffcanvasBody;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ENTERED, ENTERING, EXITING } from 'react-transition-group/Transition';\nimport { getChildRef } from '@restart/ui/utils';\nimport transitionEndListener from './transitionEndListener';\nimport TransitionWrapper from './TransitionWrapper';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst transitionStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst OffcanvasToggling = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n in: inProp = false,\n mountOnEnter = false,\n unmountOnExit = false,\n appear = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n in: inProp,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n appear: appear,\n ...props,\n childRef: getChildRef(children),\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, {\n ...innerProps,\n className: classNames(className, children.props.className, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, transitionStyles[status])\n })\n });\n});\nOffcanvasToggling.displayName = 'OffcanvasToggling';\nexport default OffcanvasToggling;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OffcanvasHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n closeLabel = 'Close',\n closeButton = false,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n closeLabel: closeLabel,\n closeButton: closeButton\n });\n});\nOffcanvasHeader.displayName = 'OffcanvasHeader';\nexport default OffcanvasHeader;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport divWithClassName from './divWithClassName';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst OffcanvasTitle = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH5,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-title');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nOffcanvasTitle.displayName = 'OffcanvasTitle';\nexport default OffcanvasTitle;","\"use client\";\n\nimport classNames from 'classnames';\nimport useBreakpoint from '@restart/hooks/useBreakpoint';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport * as React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport Fade from './Fade';\nimport OffcanvasBody from './OffcanvasBody';\nimport OffcanvasToggling from './OffcanvasToggling';\nimport ModalContext from './ModalContext';\nimport OffcanvasHeader from './OffcanvasHeader';\nimport OffcanvasTitle from './OffcanvasTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BootstrapModalManager, { getSharedManager } from './BootstrapModalManager';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(OffcanvasToggling, {\n ...props\n });\n}\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, {\n ...props\n });\n}\nconst Offcanvas = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n 'aria-labelledby': ariaLabelledby,\n placement = 'start',\n responsive,\n /* BaseModal props */\n\n show = false,\n backdrop = true,\n keyboard = true,\n scroll = false,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n renderStaticNode = false,\n ...props\n}, ref) => {\n const modalManager = useRef();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n const [showOffcanvas, setShowOffcanvas] = useState(false);\n const handleHide = useEventCallback(onHide);\n const hideResponsiveOffcanvas = useBreakpoint(responsive || 'xs', 'up');\n useEffect(() => {\n // Handles the case where screen is resized while the responsive\n // offcanvas is shown. If `responsive` not provided, just use `show`.\n setShowOffcanvas(responsive ? show && !hideResponsiveOffcanvas : show);\n }, [show, responsive, hideResponsiveOffcanvas]);\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n function getModalManager() {\n if (propsManager) return propsManager;\n if (scroll) {\n // Have to use a different modal manager since the shared\n // one handles overflow.\n if (!modalManager.current) modalManager.current = new BootstrapModalManager({\n handleContainerOverflow: false\n });\n return modalManager.current;\n }\n return getSharedManager();\n }\n const handleEnter = (node, ...args) => {\n if (node) node.style.visibility = 'visible';\n onEnter == null || onEnter(node, ...args);\n };\n const handleExited = (node, ...args) => {\n if (node) node.style.visibility = '';\n onExited == null || onExited(...args);\n };\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", {\n ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName)\n }), [backdropClassName, bsPrefix]);\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n ...dialogProps,\n ...props,\n className: classNames(className, responsive ? `${bsPrefix}-${responsive}` : bsPrefix, `${bsPrefix}-${placement}`),\n \"aria-labelledby\": ariaLabelledby,\n children: children\n });\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [!showOffcanvas && (responsive || renderStaticNode) && renderDialog({}), /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: showOffcanvas,\n ref: ref,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus && !scroll,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: handleHide,\n onEnter: handleEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: DialogTransition,\n backdropTransition: BackdropTransition,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n })]\n });\n});\nOffcanvas.displayName = 'Offcanvas';\nexport default Object.assign(Offcanvas, {\n Body: OffcanvasBody,\n Header: OffcanvasHeader,\n Title: OffcanvasTitle\n});","\"use client\";\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport Offcanvas from './Offcanvas';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarOffcanvas = /*#__PURE__*/React.forwardRef(({\n onHide,\n ...props\n}, ref) => {\n const context = useContext(NavbarContext);\n const handleHide = useEventCallback(() => {\n context == null || context.onToggle == null || context.onToggle();\n onHide == null || onHide();\n });\n return /*#__PURE__*/_jsx(Offcanvas, {\n ref: ref,\n show: !!(context != null && context.expanded),\n ...props,\n renderStaticNode: true,\n onHide: handleHide\n });\n});\nNavbarOffcanvas.displayName = 'NavbarOffcanvas';\nexport default NavbarOffcanvas;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nNavbarText.displayName = 'NavbarText';\nexport default NavbarText;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport { useUncontrolled } from 'uncontrollable';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport NavbarOffcanvas from './NavbarOffcanvas';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport NavbarText from './NavbarText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Navbar = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n bsPrefix: initialBsPrefix,\n expand = true,\n variant = 'light',\n bg,\n fixed,\n sticky,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'nav',\n expanded,\n onToggle,\n onSelect,\n collapseOnSelect = false,\n ...controlledProps\n } = useUncontrolled(props, {\n expanded: 'onToggle'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n const handleCollapse = useCallback((...args) => {\n onSelect == null || onSelect(...args);\n if (collapseOnSelect && expanded) {\n onToggle == null || onToggle(false);\n }\n }, [onSelect, collapseOnSelect, expanded, onToggle]);\n\n // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n let expandClass = `${bsPrefix}-expand`;\n if (typeof expand === 'string') expandClass = `${expandClass}-${expand}`;\n const navbarContext = useMemo(() => ({\n onToggle: () => onToggle == null ? void 0 : onToggle(!expanded),\n bsPrefix,\n expanded: !!expanded,\n expand\n }), [bsPrefix, expanded, expand, onToggle]);\n return /*#__PURE__*/_jsx(NavbarContext.Provider, {\n value: navbarContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleCollapse,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, bsPrefix, expand && expandClass, variant && `${bsPrefix}-${variant}`, bg && `bg-${bg}`, sticky && `sticky-${sticky}`, fixed && `fixed-${fixed}`)\n })\n })\n });\n});\nNavbar.displayName = 'Navbar';\nexport default Object.assign(Navbar, {\n Brand: NavbarBrand,\n Collapse: NavbarCollapse,\n Offcanvas: NavbarOffcanvas,\n Text: NavbarText,\n Toggle: NavbarToggle\n});",":local {\n .iconButton {\n vertical-align: top;\n position: relative;\n\n &.iconWithText {\n\n .svg {\n left: $input-btn-padding-y;\n top: 50%;\n margin-top: -($cv-svg-size * 0.5);\n position: absolute;\n }\n\n svg {\n vertical-align: top;\n }\n }\n\n &.iconOnly {\n\n .svg {\n top: 50%;\n left: 50%;\n transform: translate3D(-50%, -50%, 0);\n position: absolute;\n }\n }\n }\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ArrowLeftSvg } from 'libs/shared/images/svg/arrows/ArrowLeftSvg';\n\nimport styles from './back-button.module.scss';\n\ninterface BackButtonProps {\n backToName?: string;\n appLink?: Core.AppLink;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n}\n\nexport function BackButton(props: React.PropsWithChildren<BackButtonProps>): React.ReactElement {\n let buttonClassName = `d-flex ${props.className} ${styles.iconButton}`;\n\n if (props.children) {\n buttonClassName += `ps-2 text-nowrap ${styles.iconWithText}`;\n } else {\n buttonClassName += `p-1 ${styles.iconOnly}`;\n }\n\n const svg = (\n <SvgContainer svg={ArrowLeftSvg} className={`align-self-center svg-container ${styles.svg}`} size={SvgContainerSize.Small} />\n );\n\n function onClickButton(e: React.MouseEvent): void {\n if (FunctionHelper.isFunction(props.onClick))\n props.onClick(e);\n }\n\n if (!props.appLink) {\n return (\n <button className={buttonClassName} onClick={onClickButton}>\n {svg}\n <div className='ps-2'>\n {props.children}\n </div>\n </button>\n );\n }\n\n return (\n <AppLink\n appLink={props.appLink}\n className='d-inline-flex align-items-center'\n onClick={props.onClick}\n >\n <SvgContainer svg={ArrowLeftSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{`Back${props.backToName ? ` to ${props.backToName}` : ''}`}</span>\n </AppLink>\n );\n}\n","import * as React from 'react';\nimport { Form, FormCheckProps } from 'react-bootstrap';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\ninterface CheckboxProps {\n selected: boolean;\n onToggle: (selected: boolean) => void;\n}\n\nexport function Checkbox(props: CheckboxProps & FormCheckProps): React.ReactElement {\n const { selected, onToggle, ...formCheckProps } = props;\n\n /**\n * We store the value of `selected` in state as `checked` so that if the value\n * of `selected` relies on an api call, the UI can be immediately updated.\n */\n const [ checked, setChecked ] = React.useState(selected);\n\n React.useEffect(() => setChecked(selected), [selected]);\n\n const onChangeHandler = () => {\n setChecked(!checked);\n onToggle(!checked);\n };\n\n return (\n <Form.Check\n type='checkbox'\n id={`checkbox-${RandomHelper.getRandomInt()}`}\n checked={checked}\n onChange={onChangeHandler}\n {...formCheckProps}\n />\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { ObjectList, ObjectTableColumn } from 'shared/components/object-list/ObjectList';\n\ninterface ObjectCollectionProps<T extends BaseObject> {\n collection: BasePaginatedCollection<T>;\n columns: ObjectTableColumn<T>[];\n collectionAppLink?: Core.AppLink;\n newObjectAppLink?: Core.AppLink;\n objectName?: string;\n newObjectVerb?: string;\n disableResponsive?: boolean;\n}\n\nexport function ObjectCollection<T extends BaseObject>(props: ObjectCollectionProps<T>): JSX.Element {\n if (!props.collection)\n return <></>;\n\n const { data, pagination } = props.collection;\n\n return (\n <>\n {!!data &&\n <ObjectList\n objects={data}\n columns={props.columns}\n newObjectAppLink={props.newObjectAppLink}\n objectName={props.objectName}\n newObjectVerb={props.newObjectVerb}\n disableResponsive={props.disableResponsive}\n />\n }\n {!!pagination && !!pagination.cursors && !!props.collectionAppLink &&\n <Pagination\n cursors={pagination.cursors}\n appLink={props.collectionAppLink}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Clip, Company, InteractiveMetadata, Playlist, Series, Video } from 'libs/shared/interfaces';\n\ninterface ObjectHeaderProps {\n object: Clip | InteractiveMetadata | Video | Company | Series | Playlist;\n actions?: ActionOptions[];\n actionsDropdownClassName?: string;\n showStatus?: boolean;\n}\n\nexport function ObjectHeader(props: ObjectHeaderProps): JSX.Element {\n return (\n <div className='d-flex justify-content-between py-2'>\n {!!props.object && (\n <div className='d-flex align-items-end'>\n <h1 className='h5 me-2 mb-0'>{props.object.name}</h1>\n\n {props.showStatus && 'status' in props.object && (\n <Badge data={props.object.status} type={BadgeType.Status} />\n )}\n </div>\n )}\n {!!props.actions && (\n <span><Actions actions={props.actions} actionsDropdownClassName={props.actionsDropdownClassName} /></span>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseObject } from 'libs/shared/interfaces';\n\ninterface ObjectListNavProps {\n objects: BaseObject[];\n getAppLink: (obj: BaseObject) => Core.AppLink;\n emptyMessage?: string;\n}\n\nObjectListNav.defaultProps = {\n emptyMessage: 'There is nothing here.'\n};\n\nexport function ObjectListNav({ objects, getAppLink, emptyMessage }: ObjectListNavProps): React.ReactElement {\n if (!objects)\n return <></>;\n\n if (!objects.length)\n return <div className='py-3'><p>{emptyMessage}</p></div>;\n\n return (\n <ul className='list-unstyled'>\n {objects.map((o, idx) => (\n <li key={idx} className='border rounded mb-3'>\n <AppLink appLink={getAppLink(o)} className='d-block p-3'>\n {o.name}\n </AppLink>\n </li>\n ))}\n </ul>\n );\n}\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Rating, UpdateObjectRating } from 'libs/shared/interfaces';\n\nconst getRatingLabel = (rating: Rating) => `${rating.name}${rating.code ? ` (${rating.code})` : ''}`;\n\ntype ObjectWithRating<T extends HashObject> = T & { rating?: UpdateObjectRating };\n\ninterface RatingSelectProps {\n ratings: Rating[];\n disabled?: boolean;\n showRequiredStar?: boolean;\n}\n\nexport function RatingSelect<T extends ObjectWithRating<unknown>>(props: RatingSelectProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n return (\n <FormField<T>\n as='select'\n label='Rating'\n name='rating'\n id='rating'\n value={formikProps.values.rating?.id}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\n formikProps.setFieldValue('rating', e.target.value ? { id: e.target.value } : null)\n }\n disabled={props.disabled}\n showRequiredStar={props.showRequiredStar}\n >\n <option value=''>Please select a rating</option>\n {props.ratings.map((rating, idx) => (\n <option key={idx} value={rating.id}>{getRatingLabel(rating)}</option>\n ))}\n </FormField>\n );\n}\n","import * as React from 'react';\nimport { Nav } from 'react-bootstrap';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { NavItem } from 'shared/interfaces';\nimport { NavHelper } from 'shared/utils';\n\nfunction getNavLinkClassName(isActive: boolean, isDisabled: boolean): string {\n const className = 'nav-link';\n\n if (isDisabled)\n return `${className} disabled text-secondary d-block`;\n\n if (!isActive)\n return className;\n\n return className + ' active';\n}\n\ninterface TabsProps {\n tabs: NavItem[];\n isItemActive?: (item: NavItem) => boolean;\n}\n\nTabs.defaultProps = {\n isItemActive: NavHelper.isItemActive\n};\n\nexport function Tabs({ tabs, isItemActive }: TabsProps): React.ReactElement {\n return (\n <Nav fill variant='tabs'>\n {tabs.map((tab, idx) => (\n <Nav.Item key={idx}>\n <AppLink\n appLink={!tab.disabled && tab.appLink}\n className={getNavLinkClassName(isItemActive(tab), tab.disabled)}\n disabled={tab.disabled}\n >\n {tab.label}\n </AppLink>\n </Nav.Item>\n ))}\n </Nav>\n );\n}\n",":local {\n .draggableVideoItem {\n cursor: grab;\n\n td, div {\n padding: (map-get($spacers, 1) * 0.5) .75rem;\n vertical-align: middle;\n }\n }\n\n .dragOverlay {\n border-top: 0.0625rem solid $gray-300;\n border-bottom: 0.0625rem solid $gray-300;\n cursor: grabbing;\n pointer-events: auto !important;\n height: 3.1875rem;\n\n .item {\n display: flex;\n align-items: center;\n padding: (map-get($spacers, 1) * 0.5) .75rem;\n }\n\n .itemNumber {\n width: 5.5rem;\n }\n\n .itemName {\n width: 60.125rem;\n }\n }\n}","import React from 'react';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { Video } from 'libs/shared/interfaces';\n\nimport styles from './video-list.module.scss';\n\ninterface VideoItemDragOverlayProps {\n video: Video;\n itemNumber: number;\n}\n\n/**\n * This is a purely presentational component, which is used when dragging and dropping\n * video items in a playlist\n */\nexport function VideoItemDragOverlay(props: VideoItemDragOverlayProps): JSX.Element {\n return (\n <div className={`${styles.dragOverlay} d-flex bg-white`}>\n <div className={`${styles.itemNumber} ${styles.item}`}>\n <span>{props.itemNumber}</span>\n </div>\n <div className={`${styles.itemName} ${styles.item}`}>\n {props.video.name}\n </div>\n <div className={styles.item}>\n <span className='d-flex justify-content-end'>\n <Actions actions={[{} as any]} />\n </span>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\nimport { DraggableAttributes } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ActionGenerator, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { Video } from 'libs/shared/interfaces';\n\nconst getClassName = (additionalClassName: string) => {\n let className = 'bg-white';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n};\n\ninterface VideoItemProps {\n video: Video;\n style?: HashObject;\n getVideoAppLink?: (video: Video) => Core.AppLink;\n getVideoActions?: ActionGenerator;\n className?: string;\n sortable?: boolean;\n itemNumber?: number;\n dragAttributes?: DraggableAttributes;\n dragListeners?: HashObject;\n}\n\nexport const VideoItem = React.forwardRef((props: VideoItemProps, ref: (node: HTMLElement) => void) => {\n const { video, getVideoAppLink, getVideoActions, className = '', itemNumber, style = {} } = props;\n\n const appLink = FunctionHelper.isFunction(getVideoAppLink) && getVideoAppLink(video);\n\n return (\n <tr\n className={getClassName(className)}\n style={style}\n ref={ref}\n {...props.dragAttributes}\n {...props.dragListeners}\n >\n {!!itemNumber &&\n <td>\n <span>{itemNumber}</span>\n </td>\n }\n <td>\n {appLink ?\n <AppLink appLink={appLink}>{video.name}</AppLink> :\n video.name\n }\n </td>\n {FunctionHelper.isFunction(getVideoActions) &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={getVideoActions(video)} />\n </span>\n </td>\n }\n </tr>\n );\n});\n\nexport const SortableVideoItem = (props: VideoItemProps) => {\n return (\n <SortableItemWrapper id={props.video.id} childComponent={VideoItem} childProps={{ sortable: true, ...props }} />\n );\n};\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { ActionGenerator } from 'libs/shared/components/actions/Actions';\nimport { Video, VideoCollection } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { SortableVideoItem, VideoItem } from './VideoItem';\n\nimport styles from './video-list.module.scss';\n\nexport interface VideoListProps {\n videos: VideoCollection;\n getVideoAppLink?: (video: Video) => Core.AppLink;\n getVideoActions?: ActionGenerator;\n sortable?: boolean;\n emptyMessage?: string;\n}\n\nexport const VideoListHeader = ({ sortable, getVideoActions }: VideoListProps) => (\n <thead>\n <tr>\n {!!sortable && <th>#</th>}\n <th>Name</th>\n {!!getVideoActions && <th></th>}\n </tr>\n </thead>\n);\n\nexport const VideoListItems = React.forwardRef(\n ({ videos, sortable, ...childProps }: VideoListProps, ref: React.MutableRefObject<HTMLTableSectionElement>) => (\n <tbody ref={ref}>\n {!CollectionHelper.isEmpty(videos) && videos.data.map((v, idx) =>\n sortable ?\n (\n <SortableVideoItem\n key={v.id}\n itemNumber={idx + 1}\n video={v}\n className={styles.draggableVideoItem}\n {...childProps}\n />\n ) : <VideoItem video={v} {...childProps} />)}\n </tbody>\n )\n);\n\nVideoList.defaultProps = {\n emptyMessage: 'There are no videos in this list.'\n};\n\nexport function VideoList({ emptyMessage, ...props }: VideoListProps): JSX.Element {\n return (\n !CollectionHelper.isEmpty(props.videos) ?\n (\n <Table responsive>\n <VideoListHeader {...props} />\n <VideoListItems {...props} />\n </Table>\n ) : <div>{emptyMessage}</div>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\nimport { DragEndEvent, DragStartEvent } from '@dnd-kit/core';\n\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { Video } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { VideoItemDragOverlay } from './VideoItemDragOverlay';\nimport { VideoListHeader, VideoListItems, VideoListProps } from './VideoList';\n\ninterface SortableListProps extends VideoListProps {\n currentSortingIndex?: number;\n onSortStart: (event: DragStartEvent) => void;\n onSortEnd: (event: DragEndEvent) => void;\n}\n\nconst SortableList = React.forwardRef((\n props: SortableListProps,\n ref: React.MutableRefObject<HTMLTableSectionElement>\n) => {\n const { onSortStart, onSortEnd, videos, ...videoItemProps } = props;\n\n const getDragOverlay = (id: string) => {\n let index: number = -1;\n let video: Video = null;\n\n videos.data.forEach((v, i) => {\n if (video)\n return;\n\n if (v.id === id) {\n video = v;\n index = i;\n }\n });\n\n return (\n <VideoItemDragOverlay video={video} itemNumber={index + 1} />\n );\n };\n\n return (\n <SortableContainerWrapper\n ids={props.videos.data.map(v => v.id)}\n onSortStart={onSortStart}\n onSortEnd={onSortEnd}\n getDragOverlay={getDragOverlay}\n >\n <VideoListItems sortable ref={ref} videos={videos} {...videoItemProps} />\n </SortableContainerWrapper>\n );\n});\n\ninterface SortableVideoListProps {\n onSortEnd: (oldIndex: number, newIndex: number) => void;\n}\n\nSortableVideoList.defaultProps = {\n emptyMessage: 'There are no videos in this list.'\n};\n\nexport function SortableVideoList(props: SortableVideoListProps & VideoListProps): React.ReactElement {\n const { onSortEnd: onSortComplete, emptyMessage, ...videoListProps } = props;\n \n const [ currentSortingIndex, setCurrentSortingIndex ] = React.useState<number>();\n\n const onSortStartHandler = (event: DragStartEvent) => {\n const index = props.videos.data.findIndex(v => v.id.toString() === event.active.id.toString());\n setCurrentSortingIndex(index);\n };\n\n const onSortEnd = (event: DragEndEvent) => {\n setCurrentSortingIndex(null);\n\n const { active, over } = event;\n \n const oldIndex = props.videos.data.findIndex(v => v.id.toString() === active.id.toString());\n const newIndex = props.videos.data.findIndex(v => v.id.toString() === over.id.toString());\n\n onSortComplete(oldIndex, newIndex);\n };\n\n const ref = React.useRef<HTMLTableSectionElement>(null);\n\n if (CollectionHelper.isEmpty(props.videos))\n return <div>{emptyMessage}</div>;\n\n return (\n <Table responsive>\n <VideoListHeader sortable {...props} />\n <SortableList\n ref={ref}\n onSortStart={onSortStartHandler}\n onSortEnd={onSortEnd}\n currentSortingIndex={currentSortingIndex}\n {...videoListProps}\n />\n </Table>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport { object, string } from 'yup';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { Alias } from 'libs/shared/interfaces';\n\nimport { CreateAliasRequest } from 'shared/interfaces';\n\nconst AliasValidationSchema = object().shape<CreateAliasRequest>({\n name: string()\n .trim()\n .max(255, 'Name is too long')\n .required('Name is required')\n .default('')\n});\n\nfunction EditAliasForm(): React.ReactElement {\n const formikProps = useFormikContext<CreateAliasRequest>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <div className='d-flex'>\n <div className='flex-grow-1 pe-2'>\n <FormField<CreateAliasRequest>\n label='Create an alias'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder='Enter alias name'\n />\n </div>\n <div className='mt-labelHeight'>\n <SpinnerButton\n showSpinner={formikProps.isSubmitting}\n type='submit'\n disabled={!canSubmit}\n variant='outline-dark'\n >\n Add\n </SpinnerButton>\n </div>\n </div>\n </Form>\n );\n}\n\ninterface AddAliasProps {\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\n}\n\nexport function AddAlias(props: AddAliasProps): JSX.Element {\n const { onSave } = props;\n\n const onSubmit = (data: CreateAliasRequest, onDone: (opts: FormSubmissionOptions) => void): void => {\n onSave(data, () => onDone({ reset: true }));\n };\n\n return (\n <FormWrapper<CreateAliasRequest, Alias>\n initialValues={{ name: '' }}\n validationSchema={AliasValidationSchema}\n onSubmit={onSubmit}\n >\n <EditAliasForm />\n </FormWrapper>\n );\n}\n",":local {\n .actionButton {\n cursor: pointer;\n }\n}\n","import * as React from 'react';\n\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { Alias } from 'libs/shared/interfaces/models';\n\nimport styles from './alias.module.scss';\n\ninterface AliasItemProps {\n alias: Alias;\n onDelete: (name: string) => void;\n showConfirmation?: boolean;\n}\n\nAliasItem.defaultProps = {\n showConfirmation: true\n};\n\nexport function AliasItem(props: AliasItemProps): JSX.Element {\n const { alias, onDelete } = props;\n const [ showConfirmPopup, setShowConfirmPopup ] = React.useState(false);\n\n function onClickRemove(): void {\n if (!props.showConfirmation) {\n onDelete(alias.name);\n return;\n }\n\n setShowConfirmPopup(true);\n }\n\n return (\n <>\n <li className='list-group-item d-flex justify-content-between'>\n {alias.name}\n <SvgContainer\n svg={DeleteSvg}\n className={`d-inline-block svg-container ${styles.actionButton}`}\n onClick={onClickRemove}\n />\n </li>\n \n {showConfirmPopup &&\n <ConfirmationPopup\n title='Delete Alias?'\n onClickConfirm={() => { onDelete(alias.name); setShowConfirmPopup(false); }}\n closePopup={() => setShowConfirmPopup(false)}\n confirmButtonText='Delete'\n confirmButtonVariant='danger'\n >\n <p>Are you sure you want to delete <strong>{alias.name}</strong>?</p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n\ninterface AliasListProps {\n aliases: Alias[];\n onDelete: (id: string) => void;\n}\n\nexport function AliasList(props: AliasListProps): JSX.Element {\n const { aliases, onDelete } = props;\n\n return (\n <div className='row'>\n <div className='col-12'>\n <h2 className='h6'>Current Aliases</h2>\n { aliases?.length > 0 ?\n <ul className='list-group mb-3'>\n { aliases.map(alias => (\n <AliasItem\n key={alias.id}\n alias={alias}\n onDelete={() => onDelete(alias.id)}\n />\n )) }\n </ul> :\n <span>Currently there are no aliases for this object.</span>\n }\n </div>\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Alias } from 'libs/shared/interfaces';\n\nimport { CreateAliasRequest } from 'shared/interfaces';\n\nimport { AddAlias } from './AddAlias';\nimport { AliasList } from './AliasList';\n\ninterface AliasesProps {\n aliases: Alias[];\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\n onDelete: (id: string) => void;\n}\n\nexport function Aliases(props: AliasesProps): JSX.Element {\n const { onSave, aliases, onDelete } = props;\n\n return (\n <div className='w-50'>\n <div className='my-3'>\n <AddAlias onSave={onSave} />\n </div>\n <AliasList aliases={aliases} onDelete={onDelete} />\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { Tabs } from 'shared/components';\nimport { Actions } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { HasCuratorPermissionsFunc, useCuratorPermissions } from 'shared/hooks';\nimport { NavItem } from 'shared/interfaces';\n\nconst isItemActive = (memberType?: SubjectMemberType) => (item: NavItem) => {\n if (!memberType)\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION;\n\n switch (memberType) {\n case SubjectMemberType.Tags:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_CURATION;\n\n case SubjectMemberType.Playlists:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\n\n case SubjectMemberType.Series:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\n\n case SubjectMemberType.Videos:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\n\n case SubjectMemberType.Clips:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_CLIPS;\n\n case SubjectMemberType.Interactives:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_INTERACTIVES;\n\n case SubjectMemberType.Aliases:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_ALIASES;\n \n case SubjectMemberType.Dashboard:\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_DASHBOARDS;\n }\n};\n\ninterface EditClassificationNavProps {\n presentation: Presentation;\n classificationId: string;\n getTabs: (presentationId: string, classificationId: string, hasPermissions: HasCuratorPermissionsFunc) => NavItem[];\n memberType?: SubjectMemberType;\n}\n\nexport function EditClassificationNav(props: EditClassificationNavProps): React.ReactElement {\n const { presentation, classificationId, memberType } = props;\n\n const { hasPermissions } = useCuratorPermissions();\n\n if (!presentation)\n return <></>;\n\n return (\n <>\n <h6>{`Presentation: ${!!presentation && presentation.name}`}</h6>\n <p>{presentation.description}</p>\n <div className='py-2'>\n <Tabs\n tabs={props.getTabs(presentation.id, classificationId, hasPermissions)}\n isItemActive={isItemActive(memberType)}\n />\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport * as Yup from 'yup';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\n\nimport { CuratorClassification } from 'shared/interfaces';\nimport {\n CreateClassificationRequest,\n UpdateClassificationRequest\n} from 'shared/interfaces/data-requests';\n\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\n\ninterface EditClassificationDetailsProps {\n saveClassification: (data: RequestType, onDone: () => void) => void;\n validationSchema: Yup.ObjectSchema<Yup.Shape<Record<string, any>, UpdateClassificationRequest>>;\n classification?: CuratorClassification;\n}\n\nexport function EditClassificationDetails(\n props: React.PropsWithChildren<EditClassificationDetailsProps>\n): React.ReactElement {\n const initialValues = props.classification ?\n { ...props.classification, themes: props.classification.themes?.data } :\n undefined;\n\n return (\n <FormWrapper<RequestType, CuratorClassification>\n initialValues={initialValues}\n validationSchema={props.validationSchema}\n onSubmit={props.saveClassification}\n >\n {props.children}\n </FormWrapper>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { TreeSelect } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ClassificationTree } from 'shared/interfaces/models';\n\nconst getClassificationAppLink = (presentationId: string, presentationType: PresentationType) =>\n (classificationId: string) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_CLASSIFICATION,\n args: [ presentationId, classificationId ]\n });\n\ninterface SelectClassificationsFormValues {\n classificationIds: string[];\n}\n\ninterface SelectClassificationsFormProps {\n presentationId: string;\n presentationType: PresentationType;\n classificationTree: ClassificationTree;\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\n}\n\nfunction SelectClassificationsForm(props: SelectClassificationsFormProps): JSX.Element {\n const formikProps = useFormikContext<SelectClassificationsFormValues>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n const handleSelect = (item: ClassificationTree) => formikProps.setFieldValue(\n 'classificationIds',\n ArrayHelper.addOrRemove(formikProps.values.classificationIds.map(id => id.toString()), item.id.toString())\n );\n\n const treeSelectClassName =\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'classificationIds')} h-auto py-2`;\n\n return (\n <Form>\n <FormField<SelectClassificationsFormValues> name='classificationIds'>\n {() => (\n <div className={treeSelectClassName}>\n <TreeSelect<ClassificationTree>\n label='Mapped Topic(s)'\n tree={props.classificationTree}\n selectedIds={formikProps.values.classificationIds}\n onSelect={handleSelect}\n getSelectedItemAppLink={getClassificationAppLink(props.presentationId, props.presentationType)}\n isNodeDisabled={props.isClassificationDisabled}\n multiSelect\n />\n </div>\n )}\n </FormField>\n <div className='d-flex justify-content-end'>\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\n Save Classifications\n </SpinnerButton>\n </div>\n </Form>\n );\n}\n\ninterface SelectClassificationsProps {\n initialValues: SelectClassificationsFormValues;\n presentationId: string;\n presentationType: PresentationType;\n classificationTree: ClassificationTree;\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\n}\n\nexport function SelectClassifications(props: SelectClassificationsProps): JSX.Element {\n const onSubmit = ({ classificationIds }: SelectClassificationsFormValues, onDone: () => void) =>\n props.saveClassifications(classificationIds, onDone);\n\n return (\n <FormWrapper<SelectClassificationsFormValues>\n initialValues={props.initialValues}\n onSubmit={onSubmit}\n enableReinitialize\n >\n <SelectClassificationsForm\n presentationId={props.presentationId}\n classificationTree={props.classificationTree}\n presentationType={props.presentationType}\n isClassificationDisabled={props.isClassificationDisabled}\n />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Checkbox } from 'shared/components';\n\nimport { PinState } from './usePinnedVideo';\n\ninterface ClassificationMemberItemProps<T extends BaseObject> {\n item: T;\n getItemAppLink: (item: T) => Core.AppLink;\n pinState: PinState;\n actions?: ActionOptions[];\n}\n\nexport function ClassificationMemberItem<T extends BaseObject>(\n props: ClassificationMemberItemProps<T>\n): React.ReactElement {\n const { item, getItemAppLink, actions, pinState } = props;\n\n return (\n <tr>\n <td>\n <AppLink appLink={getItemAppLink(item)}>{item.name}</AppLink>\n </td>\n {pinState.isPinnable &&\n <td>\n <Checkbox\n selected={parseInt(item.id) === parseInt(pinState.currentPinnedVideo)}\n onToggle={(selected: boolean) => pinState.onChange(selected, item.id)}\n id={item.id}\n />\n </td>\n }\n {actions &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={actions} />\n </span>\n </td>\n }\n </tr>\n );\n}\n","import * as React from 'react';\n\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { SubjectMemberType } from 'shared/enums';\n\nexport interface PinState {\n currentPinnedVideo: string;\n onChange: (selected: boolean, id: string) => void;\n canSubmit: boolean;\n isPinnable: boolean;\n}\n\nexport function usePinnedVideo(classification: Classification, memberType: SubjectMemberType): PinState {\n const initialPinnedVideo = classification.pinnedVideoMasterId || null;\n const [ currentPinnedVideo, setCurrentPinnedVideo ] = React.useState(initialPinnedVideo);\n\n const onChange = (selected: boolean, id: string): void => {\n setCurrentPinnedVideo(selected ? id : null);\n };\n\n const isPinnable = memberType === SubjectMemberType.Videos && classification.type === ClassificationType.Subject;\n const canSubmit = initialPinnedVideo !== currentPinnedVideo;\n\n return { currentPinnedVideo, onChange, canSubmit, isPinnable };\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\n\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nimport { ClassificationMemberItem } from './ClassificationMemberItem';\nimport { usePinnedVideo } from './usePinnedVideo';\n\ninterface ClassificationMemberListProps<T extends BaseObject> {\n items: T[];\n memberType: SubjectMemberType;\n classification: Classification;\n updatePinnedVideo: (id: string, callback: (data: Classification) => void) => void;\n getItemAppLink: (item: T) => Core.AppLink;\n getActions?: (item: T) => ActionOptions[];\n}\n\nexport function ClassificationMemberList<T extends BaseObject>(\n props: ClassificationMemberListProps<T>\n): React.ReactElement {\n const { items, memberType, classification, getItemAppLink, getActions, updatePinnedVideo } = props;\n\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\n const pinState = usePinnedVideo(classification, memberType);\n\n if (!items.length)\n return <div className='py-5'>{`No ${memberType} in this topic.`}</div>;\n\n const onSubmit = () => {\n setIsSubmitting(true);\n updatePinnedVideo(pinState.currentPinnedVideo, () => setIsSubmitting(false));\n };\n\n const memberHeading =\n `${TextHelper.toTitleCase(ClassificationMemberHelper.singularizeMemberType(memberType))} Name`;\n\n return (\n <>\n <Table responsive>\n <thead>\n <tr>\n <th>{memberHeading}</th>\n {pinState.isPinnable && <th>Pinned</th>}\n {FunctionHelper.isFunction(getActions) && <th></th>}\n </tr>\n </thead>\n <tbody>\n {items.map(item => (\n <ClassificationMemberItem\n item={item}\n key={item.id}\n getItemAppLink={getItemAppLink}\n actions={FunctionHelper.isFunction(getActions) && getActions(item)}\n pinState={pinState}\n />\n ))}\n </tbody>\n </Table>\n {pinState.isPinnable && (\n <SpinnerButton\n showSpinner={isSubmitting}\n onClick={onSubmit}\n disabled={!pinState.canSubmit || isSubmitting}\n >\n Save\n </SpinnerButton>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Table } from 'libs/shared/components/table/Table';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { ColumnData, MatrixMember } from 'shared/components/member-matrix';\nimport { BuildColumns } from 'shared/components/member-matrix/columns/Columns';\nimport { CuratorTableTheme } from 'shared/constants';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\ninterface VideoClassificationsMappingProps {\n availableClassifications: Classification[];\n presentations: Presentation[];\n classificationsPaths: ClassificationPathsMap;\n visibleInClassifications: string[];\n videoId?: string;\n columnData: ColumnData;\n mappedClassification?: Classification[];\n isFetchingVisibility?: boolean;\n}\n\nexport function buildClassificationPathNames(classificationsPaths: ClassificationPathsMap): Record<string, string[]> {\n return Object.keys(classificationsPaths).reduce((map, classificationId) => {\n const classificationPaths = classificationsPaths[classificationId];\n classificationPaths.forEach((paths: Classification[][]) => {\n map[classificationId] = paths.map(p => p.map(_p => _p.name).join(' -> '));\n });\n return map;\n }, {} as Record<string, string[]>);\n}\n\nexport function VideoClassificationsMappingList(props: VideoClassificationsMappingProps): JSX.Element {\n const classificationPathsNames = React.useMemo(\n () => buildClassificationPathNames(props.classificationsPaths ?? {}),\n [props.classificationsPaths]\n );\n\n const members = React.useMemo(\n () => props.availableClassifications?.map(c => {\n const presentation = props.presentations.find((p: Presentation) => p.id === c.presentationId);\n return {\n ...c,\n path: classificationPathsNames?.[c.id],\n presentation: presentation?.name ?? '',\n presentationDescription: presentation?.description ?? '',\n visibility: props.visibleInClassifications?.includes(c.id),\n shouldShowVisibility: !!props?.mappedClassification?.find(mapped => c.id === mapped.id)\n };\n }).filter(member => !!member.presentation),\n [\n props.availableClassifications,\n classificationPathsNames,\n props.presentations,\n props.visibleInClassifications,\n props.mappedClassification\n ]\n );\n\n const columns = MemberMatrixHelper.getColumnSet(DefinedColumnSet['VideoClassificationMapping']);\n\n const fullColumns = React.useMemo(() => BuildColumns({\n columns: columns,\n columnData: props.columnData\n }), [props.columnData]);\n\n if (!props.availableClassifications?.length) {\n return <p className='py-3'><i>There are no available topics for this video. Please ensure you've mapped the video to a backbone subject first</i></p>;\n }\n\n return (\n <Table<MatrixMember>\n theme={CuratorTableTheme}\n columns={fullColumns}\n data={members}\n enableSort\n />\n );\n}\n","import React from 'react';\n\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { ColumnData } from 'shared/components';\nimport { buildClassificationPathNames, VideoClassificationsMappingList } from 'shared/components/classifications';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\ninterface VideoClassificationListProps {\n availableClassifications?: Classification[];\n presentations: Presentation[];\n classificationsPaths?: ClassificationPathsMap;\n visibleInClassification?: string[];\n isFetchingVisibility?: boolean;\n videoId?: string;\n columnData?: ColumnData;\n mappedClassification?: Classification[];\n}\n\nexport function VideoClassificationList(props: VideoClassificationListProps): JSX.Element {\n const [ selectedPresentationId, setSelectedPresentationId ] = React.useState<string | null>(null);\n const [ searchText, setSearchText ] = React.useState('');\n const [ committedSearch, setCommittedSearch ] = React.useState('');\n\n function handleSearch() {\n setCommittedSearch(searchText);\n }\n\n // Builds a map of classification ID → lowercase path string for fast search matching.\n // Memoised to avoid re-iterating all classifications on unrelated renders.\n const classificationSearchMap = React.useMemo(() => {\n if (!props.classificationsPaths) return {} as Record<string, string>;\n const pathNames = buildClassificationPathNames(props.classificationsPaths);\n return Object.keys(pathNames).reduce((map, id) => {\n map[id] = pathNames[id].join(' ').toLowerCase();\n return map;\n }, {} as Record<string, string>);\n }, [props.classificationsPaths]);\n\n // Filters classifications to the selected presentation, or returns all if none selected.\n // Memoised to avoid re-filtering the full list on unrelated renders.\n const filteredByPresentation = React.useMemo(\n () => selectedPresentationId ?\n props.availableClassifications?.filter(c => c.presentationId.toString() === selectedPresentationId.toString()) :\n props.availableClassifications,\n [ props.availableClassifications, selectedPresentationId ]\n );\n\n // Applies the committed search query against the presentation-filtered list.\n // Memoised to avoid re-filtering on every keystroke before the search is committed.\n const filteredClassifications = React.useMemo(() => {\n if (!committedSearch || !props.classificationsPaths) return filteredByPresentation;\n const query = committedSearch.toLowerCase();\n return filteredByPresentation?.filter(c => classificationSearchMap[c.id ?? '']?.includes(query)) || [];\n }, [ filteredByPresentation, committedSearch, classificationSearchMap ]);\n\n const isLoadingPaths = !!props.availableClassifications?.length\n && (!props.classificationsPaths || Object.keys(props.classificationsPaths).length === 0);\n\n return (\n <>\n <h6>Topic visibility</h6>\n <p>\n Select which available presentations to add the video into. =\n Modify whether the video can be hidden or visible in the topic. In both cases the video will be searchable.\n </p>\n <div className='d-flex gap-3 mb-3'>\n <div className='w-25'>\n <label className='form-label' htmlFor='presentation-filter'>Presentation filter</label>\n <select\n id='presentation-filter'\n className='form-select'\n value={selectedPresentationId ?? ''}\n onChange={e => setSelectedPresentationId(e.target.value || null)}\n >\n <option value=''>All presentations</option>\n {props.presentations.map(p => (\n <option key={p.id} value={p.id}>{p.name} - {p.description}</option>\n ))}\n </select>\n </div>\n <div className='w-75'>\n <label className='form-label' htmlFor='path-search'>Search by topic name</label>\n <div className='input-group'>\n <input\n id='path-search'\n type='text'\n className='form-control'\n placeholder='Search topics...'\n value={searchText}\n onChange={e => setSearchText(e.target.value)}\n onKeyDown={e => e.key === 'Enter' && handleSearch()}\n />\n <button className='btn btn-dark' type='button' onClick={handleSearch}>Search</button>\n </div>\n </div>\n </div>\n {isLoadingPaths ?\n <div className='spinner-border' role='status'><span className='visually-hidden'>Loading...</span></div> :\n <VideoClassificationsMappingList\n key={`${selectedPresentationId ?? 'all'}-${committedSearch}`}\n availableClassifications={filteredClassifications}\n presentations={props.presentations}\n classificationsPaths={props.classificationsPaths}\n visibleInClassifications={props.visibleInClassification}\n isFetchingVisibility={props.isFetchingVisibility}\n videoId={props.videoId}\n columnData={props.columnData}\n mappedClassification={props.mappedClassification}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Classification, Presentation, Subject } from 'libs/shared/interfaces';\n\nimport { ColumnData, SelectBackboneClassification } from 'shared/components';\nimport { SelectClassifications } from 'shared/components/classifications';\nimport { PresentationSelect } from 'shared/components/presentations/presentation-select';\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationTree, SubjectTree } from 'shared/interfaces/models';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nimport { ClassificationPathsMap } from 'apps/videos/interfaces';\n\nimport { VideoClassificationList } from './VideoClassificationList';\n\ninterface EditObjectSubjectsProps {\n objectSubjects: Subject[];\n subjectTree: SubjectTree;\n saveSubjects: (\n backboneClassificationIds: string[],\n addToClassifications: boolean,\n setSubmittingFalse: () => void\n ) => void;\n memberType: SubjectMemberType;\n presentations: Presentation[];\n presentationType: PresentationType;\n currentPresentation: Presentation;\n setCurrentPresentation: (p: Presentation) => void;\n classificationTree: ClassificationTree;\n // List of classifications mapped to a subject that the object is mapped to.\n objectSubjectClassifications: Classification[];\n objectClassifications: Classification[];\n saveClassifications?: (classificationIds: string[], setSubmittingFalse: () => void) => void;\n allowedClassificationIds?: string[];\n classificationsPaths?: ClassificationPathsMap;\n visibleInClassification?: string[];\n videoId?: string;\n columnData?: ColumnData;\n availableClassifications?: Classification[];\n mappedClassification?: Classification[];\n isVideoClassification?: boolean;\n isFetchingVisibility?: boolean;\n}\n\nfunction isTopicClassificationDisabled({\n objectClassifications,\n objectSubjectClassifications\n}: EditObjectSubjectsProps): (classification: ClassificationTree) => boolean {\n const allowedClassificationIds = [\n ...objectClassifications,\n ...objectSubjectClassifications\n ].map(c => c.id);\n\n return (classification: ClassificationTree) =>\n !allowedClassificationIds.includes(classification.id);\n}\n\n/**\n * At the time of implementation, we only allow videos to be added to curriculum classifications.\n * Furthermore, based on how they're displayed to custoemrs within lite, they should only ever \n * be mapped to CurriculumLead nodes. - Mike\n */\nfunction isCurriculumClassificationDisabled({\n objectClassifications,\n objectSubjectClassifications\n}: EditObjectSubjectsProps): (classification: ClassificationTree) => boolean {\n const allowedClassificationIds = [\n ...objectClassifications,\n ...objectSubjectClassifications.filter(c => c.type === ClassificationType.CurriculumLeaf)\n ].map(c => c.id);\n\n return (classification: ClassificationTree) =>\n !allowedClassificationIds.includes(classification.id);\n}\n\nexport function EditObjectSubjects(props: EditObjectSubjectsProps): JSX.Element {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(props.memberType);\n \n let isClassificationDisabled: (classification: Classification | ClassificationTree) => boolean | undefined;\n if (!props?.isVideoClassification) {\n isClassificationDisabled = props.presentationType === PresentationType.Subject ?\n isTopicClassificationDisabled(props) :\n isCurriculumClassificationDisabled(props);\n }\n \n const showClassificationTree = !!props.currentPresentation && !!props.classificationTree?.children?.length;\n\n const VideoClassificationTree = () => (\n <>\n <h6>Topics</h6>\n <p>{`Select a presentation to view its topics and map them to this ${singularMemberType}.`}</p>\n <div className='w-50 pb-3'>\n <PresentationSelect\n presentations={props.presentations}\n currentPresentationId={props.currentPresentation.id}\n setCurrentPresentation={props.setCurrentPresentation}\n />\n </div>\n {showClassificationTree ?\n (\n <>\n <p>\n {'Only topics which are mapped to one of the backbone subjects' +\n ' selected above can be selected.'}\n </p>\n <SelectClassifications\n initialValues={{ classificationIds: props.objectClassifications.map(c => c.id) }}\n presentationId={props.currentPresentation.id}\n presentationType={props.presentationType}\n classificationTree={props.classificationTree}\n saveClassifications={props.saveClassifications}\n isClassificationDisabled={isClassificationDisabled}\n />\n </>\n ) : <p>This presentation has no topics.</p>\n }\n </>\n );\n\n return (\n <>\n <div className='border-bottom pb-3 mb-3'>\n <h2 className='h6'>Backbone Subjects</h2>\n <p>{`Select which backbone subjects this ${singularMemberType} is mapped to.`}</p>\n <SelectBackboneClassification\n initialValues={{ backboneClassificationIds: props.objectSubjects.map(s => s.id) }}\n presentationType={props.presentationType}\n subjectTree={props.subjectTree}\n saveSubjects={props.saveSubjects}\n memberType={props.memberType}\n saveBtnText='Save Backbone Subjects'\n allowMultiple\n />\n </div>\n {props.isVideoClassification ?\n (\n <VideoClassificationList\n availableClassifications={props.availableClassifications}\n presentations={props.presentations}\n classificationsPaths={props.classificationsPaths}\n visibleInClassification={props.visibleInClassification}\n isFetchingVisibility={props.isFetchingVisibility}\n videoId={props.videoId}\n columnData={props.columnData}\n mappedClassification={props.mappedClassification}\n />\n ) :\n <VideoClassificationTree/>}\n </>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectBackboneClassification } from 'shared/components';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectTree } from 'shared/interfaces/models';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\ninterface AddSubjectMembersProps {\n memberType: SubjectMemberType;\n subjectTree: SubjectTree;\n objects: BaseObject[];\n presentationType: PresentationType;\n onClickAddToSubject: (\n backboneClassificationIds: string[],\n addToClassifications: boolean,\n setSubmittingFalse: () => void\n ) => void;\n}\n\nexport function AddSubjectMembers(props: AddSubjectMembersProps): React.ReactElement {\n return (\n <>\n <h4>{`${TextHelper.toTitleCase(props.memberType)}`}</h4>\n <Table responsive>\n <tbody>\n {props.objects && props.objects.map(o => (\n <tr key={o.id}>\n <td>\n <AppLink\n appLink={ClassificationMemberHelper.getMemberAppLink(props.memberType, o.id)}>{o.name}\n </AppLink>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n <SelectBackboneClassification\n initialValues={{ backboneClassificationIds: []}}\n presentationType={props.presentationType}\n subjectTree={props.subjectTree}\n saveSubjects={props.onClickAddToSubject}\n memberType={props.memberType}\n saveBtnText='Add to backbone subject'\n subjectRequired\n />\n </>\n );\n}\n","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\n\nimport { Tabs } from 'shared/components';\nimport { NavItem } from 'shared/interfaces';\n\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\n\ninterface EditSubjectNavProps {\n subjectId: string;\n activeAction: string;\n presentationType: PresentationType;\n getTabs: (subjectId: string, presentationId: string) => NavItem[];\n presentationId?: string;\n}\n\nexport function EditSubjectNav(props: EditSubjectNavProps): React.ReactElement {\n const type = props.presentationType === PresentationType.Subject ? 'Topics' : 'Curriculums';\n\n return (\n <>\n <Alert variant='danger'>\n {`Warning: You are editing the backbone subjects for ${type}.`}\n </Alert>\n <div className='py-2'>\n <Tabs\n tabs={props.getTabs(props.subjectId, props.presentationId)}\n isItemActive={isItemActive(props.activeAction)}\n />\n </div>\n </>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { TreeSelect } from 'shared/components';\nimport { AppChannels } from 'shared/constants';\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectTree } from 'shared/interfaces/models';\n\nconst getValidationSchema = (subjectRequired: boolean) => Yup.object().shape<SelectBackboneClassificationFormValues>({\n backboneClassificationIds: subjectRequired ?\n Yup.array().of(Yup.string())\n .min(1, 'A subject is required')\n .required('A subject is required') :\n Yup.array().of(Yup.string())\n\n}).noUnknown();\n\nconst getBackboneClassificationAppLink = (presentationType: PresentationType) =>\n (subjectId: string) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_SUBJECT,\n args: [subjectId]\n });\n\ninterface SelectBackboneClassificationFormValues {\n backboneClassificationIds: string[];\n}\n\ninterface SelectBackboneClassificationFormProps {\n subjectTree: SubjectTree;\n memberType: SubjectMemberType;\n presentationType: PresentationType;\n allowMultiple?: boolean;\n saveBtnText?: string;\n}\n\nSelectBackboneClassificationForm.defaultProps = {\n saveBtnText: 'Save'\n};\n\nfunction SelectBackboneClassificationForm(props: SelectBackboneClassificationFormProps): JSX.Element {\n const formikProps = useFormikContext<SelectBackboneClassificationFormValues>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n const handleSelect = (item: SubjectTree) => {\n const backboneClassificationIds = props.allowMultiple ?\n ArrayHelper.addOrRemove(\n formikProps.values.backboneClassificationIds.map(id => id.toString()),\n item.id.toString()\n ) :\n [item.id];\n\n formikProps.setFieldValue('backboneClassificationIds', backboneClassificationIds);\n };\n\n const treeSelectClassName =\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'backboneClassificationIds')} h-auto py-2`;\n\n return (\n <Form>\n <FormField<SelectBackboneClassificationFormValues> name='backboneClassificationIds'>\n {() => (\n <div className={treeSelectClassName}>\n <TreeSelect<SubjectTree>\n label={`Mapped Backbone Subject${props.allowMultiple ? '(s)' : ''}`}\n tree={props.subjectTree}\n selectedIds={formikProps.values.backboneClassificationIds}\n onSelect={handleSelect}\n collapse={!!formikProps.initialValues.backboneClassificationIds.length}\n getSelectedItemAppLink={getBackboneClassificationAppLink(props.presentationType)}\n multiSelect\n />\n </div>\n )}\n </FormField>\n <div className='d-flex justify-content-end'>\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\n {props.saveBtnText}\n </SpinnerButton>\n </div>\n </Form>\n );\n}\n\ninterface SelectBackboneClassificationProps {\n initialValues: SelectBackboneClassificationFormValues;\n saveSubjects: (backboneClassificationIds: string[], addToClassifications: boolean, onDone: () => void) => void;\n subjectTree: SubjectTree;\n memberType: SubjectMemberType;\n presentationType: PresentationType;\n subjectRequired?: boolean;\n allowMultiple?: boolean;\n saveBtnText?: string;\n}\n\nexport function SelectBackboneClassification(props: SelectBackboneClassificationProps): JSX.Element {\n const onSubmit = (\n { backboneClassificationIds }: SelectBackboneClassificationFormValues,\n onDone: () => void\n ) => props.saveSubjects(backboneClassificationIds, false, onDone);\n\n return (\n <FormWrapper<SelectBackboneClassificationFormValues>\n initialValues={props.initialValues}\n validationSchema={getValidationSchema(props.subjectRequired)}\n onSubmit={onSubmit}\n >\n <SelectBackboneClassificationForm\n subjectTree={props.subjectTree}\n memberType={props.memberType}\n presentationType={props.presentationType}\n allowMultiple={props.allowMultiple}\n saveBtnText={props.saveBtnText}\n />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Classification } from 'libs/shared/interfaces';\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nconst getClassificationAppLink = (\n presentationId: string,\n classificationId: string,\n presentationType: PresentationType\n) => ({\n application: presentationType === PresentationType.Subject ? AppChannels.SUBJECTS : AppChannels.CURRICULUMS,\n action: Actions.Subjects.EDIT_CLASSIFICATION,\n args: [ presentationId, classificationId ]\n});\n\ninterface PresentationClassificationsProps {\n presentation: Presentation;\n classifications: Classification[];\n}\n\nconst PresentationClassifications = (props: PresentationClassificationsProps) => (\n <div className='border rounded p-2 mb-3'>\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\n {(props.classifications && props.classifications.length) ?\n (\n <ul className='list-unstyled mb-0'>\n {props.classifications.map(c => (\n <li key={c.id} className='py-1'>\n <AppLink appLink={getClassificationAppLink(props.presentation.id, c.id, props.presentation.type)}>\n {c.name}\n </AppLink>\n </li>\n ))}\n </ul>\n ) : <p><em>There are no topics mapped to this backbone subject in this presentation.</em></p>\n }\n </div>\n);\n\ninterface SubjectClassificationsProps {\n presentations: Presentation[];\n classificationDictionary: {[presentationId: string]: Classification[] };\n}\n\nexport const SubjectClassifications = (props: SubjectClassificationsProps) => (\n <>\n {!!props.presentations && !!props.classificationDictionary && props.presentations.map(p => (\n <PresentationClassifications\n key={p.id}\n presentation={p}\n classifications={props.classificationDictionary[p.id]}\n />\n ))}\n </>\n);\n","import * as React from 'react';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { Checkbox } from 'shared/components';\n\nimport { SubjectMemberViewModel } from './SubjectMemberList';\n\ninterface SubjectMemberItemProps {\n member: SubjectMemberViewModel;\n getMemberAppLink: (memberId: string) => Core.AppLink;\n onToggleClassification: (classificationId: string, selected: boolean, memberId: string) => void;\n actions?: ActionOptions[];\n}\n\nexport function SubjectMemberItem(props: SubjectMemberItemProps): React.ReactElement {\n const {\n member: { id, name, classifications = []},\n getMemberAppLink,\n onToggleClassification,\n actions\n } = props;\n\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\n\n if (classifications.length && !FunctionHelper.isFunction(onToggleClassification))\n Core.ErrorHelper.throw(new DevError('onToggleClassification must be passed to SubjectMemberItem'));\n\n return (\n <tr>\n <td>\n {appLink ?\n <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink> :\n name\n }\n </td>\n {!!classifications.length && classifications.map(c => (\n <td key={c.id}>\n <Checkbox\n selected={c.selected}\n onToggle={(s: boolean) => onToggleClassification(c.id, s, id)}\n />\n </td>\n ))}\n {actions &&\n <td>\n <span className='d-flex justify-content-end'>\n <Actions actions={actions} />\n </span>\n </td>\n }\n </tr>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { Checkbox } from 'shared/components';\nimport { SubjectMemberType } from 'shared/enums';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nconst getClassificationLabel = (c: Classification, showClassificationSubHeader: boolean) =>\n showClassificationSubHeader ? c.name : `Classification: ${c.name}`;\n\ninterface ClassificationHeaderColumnsProps {\n classifications: Classification[];\n getIsClassificationSelected: (classification: Classification) => boolean;\n onToggleClassification: (classificationId: string, selected: boolean) => void;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n showClassificationSubHeader: boolean;\n}\n\nfunction ClassificationHeaderColumns(props: ClassificationHeaderColumnsProps): React.ReactElement {\n return (\n <>\n {props.classifications.map(c => (\n <th key={c.id}>\n <span className='d-inline-block'>\n <Checkbox\n selected={props.getIsClassificationSelected(c)}\n onToggle={(selected: boolean) => props.onToggleClassification(c.id, selected)}\n />\n </span>\n <AppLink appLink={props.getClassificationAppLink(c.id)}>\n {getClassificationLabel(c, props.showClassificationSubHeader)}\n </AppLink>\n </th>\n ))}\n </>\n );\n}\n\ninterface SubjectMemberListHeaderProps {\n memberType: SubjectMemberType;\n hasActions: boolean;\n classifications: Classification[];\n getIsClassificationSelected: (classification: Classification) => boolean;\n onToggleClassification: (classificationId: string, selected: boolean) => void;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n}\n\nexport function SubjectMemberListHeader(props: SubjectMemberListHeaderProps): React.ReactElement {\n const { memberType, hasActions, classifications, ...otherProps } = props;\n\n const memberHeading =\n `${TextHelper.toTitleCase(ClassificationMemberHelper.singularizeMemberType(memberType))} Name`;\n\n const hasClassifications = !!classifications && !!classifications.length;\n\n const showClassificationSubHeader = hasClassifications && classifications.length > 1;\n\n const rowSpan = hasClassifications ? 2 : 1;\n\n const classificationColumnsProps = { classifications, showClassificationSubHeader, ...otherProps };\n\n return (\n <thead>\n <tr>\n <th rowSpan={rowSpan}>{memberHeading}</th>\n {hasClassifications && (showClassificationSubHeader ?\n <th colSpan={classifications.length} className='text-center'>Topics</th> :\n <ClassificationHeaderColumns {...classificationColumnsProps} />\n )}\n {hasActions && <th rowSpan={rowSpan}></th>}\n </tr>\n {hasClassifications && showClassificationSubHeader &&\n <tr>\n <ClassificationHeaderColumns {...classificationColumnsProps} />\n </tr>\n }\n </thead>\n );\n}\n","import * as React from 'react';\nimport { Table } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Classification } from 'libs/shared/interfaces';\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\n\nimport { SubjectMemberType } from 'shared/enums';\n\nimport { SubjectMemberItem } from './SubjectMemberItem';\nimport { SubjectMemberListHeader } from './SubjectMemberListHeader';\n\nfunction allClassificationMembersSelected(\n memberType: SubjectMemberType,\n members: SubjectMemberViewModel[]\n): (classification: Classification) => boolean {\n return (classification: Classification) => {\n const classificationMembers = (classification as any)[memberType];\n\n const numSelectedMembers = CollectionHelper.length(classificationMembers);\n\n return !!numSelectedMembers && numSelectedMembers === members.length;\n };\n}\n\ntype ClassificationViewModel = { id: string, selected: boolean };\n\nexport interface SubjectMemberViewModel {\n id: string;\n name: string;\n classifications?: ClassificationViewModel[];\n}\n\ninterface SubjectMemberListProps {\n members: SubjectMemberViewModel[];\n memberType: SubjectMemberType;\n classifications: Classification[];\n getMemberAppLink: (memberId: string) => Core.AppLink;\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\n onToggleClassification: (classificationId: string, selected: boolean, memberId?: string) => void;\n getActions?: (itemId: string) => ActionOptions[];\n}\n\nexport function SubjectMemberList(props: SubjectMemberListProps): React.ReactElement {\n const {\n members,\n memberType,\n getActions,\n classifications,\n getClassificationAppLink,\n onToggleClassification,\n ...itemProps\n } = props;\n\n if (!members.length)\n return <div className='py-5'>{`No ${memberType} in this backbone subject.`}</div>;\n\n const hasActions = FunctionHelper.isFunction(getActions);\n\n const headerProps = {\n memberType,\n classifications,\n getClassificationAppLink,\n getIsClassificationSelected: allClassificationMembersSelected(memberType, members),\n onToggleClassification,\n hasActions\n };\n\n return (\n <Table responsive bordered>\n <SubjectMemberListHeader {...headerProps} />\n <tbody>\n {members.map((member, idx) => (\n <SubjectMemberItem\n key={idx}\n member={member}\n actions={hasActions && getActions(member.id)}\n onToggleClassification={onToggleClassification}\n {...itemProps}\n />\n ))}\n </tbody>\n </Table>\n );\n}\n","import * as React from 'react';\nimport { Container, Nav, Navbar } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { NavItem } from 'shared/interfaces';\nimport { NavHelper } from 'shared/utils';\n\nexport interface TopNavProps {\n navItems: NavItem[];\n currentAppLink: Core.AppLink;\n}\n\nexport function TopNav({ navItems, currentAppLink }: TopNavProps): React.ReactElement {\n return (\n <Container>\n <Navbar className='justify-content-between align-items-center'>\n <Nav>\n {!!navItems && navItems.map((item, idx) => (\n <Nav.Item key={idx}>\n <AppLink\n appLink={item.appLink}\n className={`nav-link${NavHelper.isItemActive(item, currentAppLink) ? ' text-primary' : ''}`}\n >\n {item.label}\n </AppLink>\n </Nav.Item>\n ))}\n </Nav>\n </Navbar>\n </Container>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],"mappings":"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"}
|