@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,2 +1,2 @@
|
|
|
1
|
-
import{C as e,a as t,i as n,w as r}from"./rp704-Pm.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as a,W as o}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,a as t,i as n,w as r}from"./rp704-Pm.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as a,W as o}from"./DWHKdmdQ.chunk.js";import{t as s}from"./D-JsEiDq2.chunk.js";import{s as c,u as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{t as d}from"./D0JviwKV2.chunk.js";t();var f=n();function p(t){let n=c(a.getDashboard(t.dashboardId)),p=c(n.data&&a.getAssemblyLineTopics([n.data.topicId])).data?.[0],m=l(),h=u(),g=o.getReviewItemErrorCode(p);function _(){let t=e.getHref({application:i.ASSEMBLY_LINE,action:o.mapStageToAction(p.stageValidation.stage),params:{query:p.id.toString(),presentationId:p.presentationId.toString()}});r.PageLoad(t,!0)}async function v(){if(g===`incorrect-stage`){m(a.updateTopicStage(n.data.topicId,p.stage,p.stageValidation.stage)).then(_).catch(()=>{h.error(`Something went wrong while trying to resolve ${p.name}. Please try again.`)}).finally(t.closePopup);return}_(),t.closePopup()}return(0,f.jsxs)(s,{title:`Resolve issue`,closePopup:t.closePopup,showLoadingSpinner:!p,children:[p&&n.data?(0,f.jsxs)(f.Fragment,{children:[g===`previous-stage-valid`?(0,f.jsxs)(`p`,{children:[`The topic `,(0,f.jsx)(`strong`,{children:p.name}),` hasn't passed all stages yet.`]}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`p`,{children:[`The topic `,(0,f.jsx)(`strong`,{children:p.name}),` has the following issues:`]}),(0,f.jsx)(`ul`,{children:p.stageValidation.columnValidationResults.map(e=>(0,f.jsx)(`li`,{children:o.mapValidationErrorToLabel(e)},`${e.column}:${e.errorCode}`))})]}),g===`incorrect-stage`&&(0,f.jsxs)(`p`,{children:[`It will automatically be moved to the`,(0,f.jsx)(`strong`,{children:` ${o.formatStageName(p?.stageValidation?.stage)} `}),`stage where all issues will need to be resolved.`]}),g===`previous-stage-invalid`&&(0,f.jsxs)(`p`,{children:[`Do you want to edit the topic in the `,(0,f.jsx)(`strong`,{children:o.formatStageName(p?.stageValidation?.stage)}),` stage?`]}),g===`previous-stage-valid`&&(0,f.jsxs)(`p`,{children:[`Do you want to edit the topic in the `,(0,f.jsx)(`strong`,{children:o.formatStageName(p?.stageValidation?.stage)}),` stage?`]})]}):(0,f.jsx)(f.Fragment,{}),(0,f.jsx)(d,{children:(0,f.jsx)(d.Submit,{text:`Resolve issue`,variant:`dark`,onClick:v,type:`button`})})]})}export{p as ResolveTopicIssueView};
|
|
2
|
+
//# sourceMappingURL=DYFGF9Pe.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DYFGF9Pe.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/resolve-topic-issue/ResolveTopicIssueView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { AppChannels } from 'shared/constants';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineDashboard } from 'apps/assembly-line/interfaces/AssemblyLineDashboard';\nimport { AssemblyLineTopic } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\ninterface ResolveTopicIssueViewProps extends PopupViewProps {\n dashboardId: string;\n}\n\nexport function ResolveTopicIssueView(props: ResolveTopicIssueViewProps): JSX.Element {\n const dashboard = Flight.useBasicFetch<AssemblyLineDashboard>(AssemblyLineRequests.getDashboard(props.dashboardId));\n const topics = Flight.useBasicFetch<AssemblyLineTopic[]>(\n dashboard.data &&\n AssemblyLineRequests.getAssemblyLineTopics([dashboard.data.topicId])\n );\n const topic = topics.data?.[0];\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const errorCode = AssemblyLineHelper.getReviewItemErrorCode(topic);\n\n function goToStage(): void {\n const href = Core.AppLinkHelper.getHref({\n application: AppChannels.ASSEMBLY_LINE,\n action: AssemblyLineHelper.mapStageToAction(topic.stageValidation.stage),\n params: {\n query: topic.id.toString(),\n presentationId: topic.presentationId.toString()\n }\n });\n\n Core.LocationUtils.PageLoad(href, true);\n }\n\n async function onResolve(): Promise<void> {\n if (errorCode === 'incorrect-stage') {\n fetchAsync(AssemblyLineRequests.updateTopicStage(\n dashboard.data.topicId,\n topic.stage,\n topic.stageValidation.stage\n ))\n .then(goToStage)\n .catch(() => {\n alerts.error(`Something went wrong while trying to resolve ${topic.name}. Please try again.`);\n })\n .finally(props.closePopup);\n\n return;\n }\n\n goToStage();\n props.closePopup();\n }\n\n return (\n <Popup\n title='Resolve issue'\n closePopup={props.closePopup}\n showLoadingSpinner={!topic}\n >\n {(topic && dashboard.data) ? (\n <>\n {errorCode === 'previous-stage-valid' ? (\n <p>\n The topic <strong>{topic.name}</strong> hasn't passed all stages yet.\n </p>\n ) : (\n <>\n <p>The topic <strong>{topic.name}</strong> has the following issues:</p>\n <ul>\n {topic.stageValidation.columnValidationResults.map(issue => {\n return (\n <li key={`${issue.column}:${issue.errorCode}`}>\n {AssemblyLineHelper.mapValidationErrorToLabel(issue)}\n </li>\n );\n })}\n </ul>\n </>\n )}\n\n {errorCode === 'incorrect-stage' && (\n <p>\n It will automatically be moved to the\n <strong>{` ${AssemblyLineHelper.formatStageName(topic?.stageValidation?.stage)} `}</strong>\n stage where all issues will need to be resolved.\n </p>\n )}\n\n {errorCode === 'previous-stage-invalid' && (\n <p>\n Do you want to edit the topic\n in the <strong>{AssemblyLineHelper.formatStageName(topic?.stageValidation?.stage)}</strong> stage?\n </p>\n )}\n\n {errorCode === 'previous-stage-valid' && (\n <p>\n Do you want to edit the topic\n in the <strong>{AssemblyLineHelper.formatStageName(topic?.stageValidation?.stage)}</strong> stage?\n </p>\n )}\n </>\n ) : (\n <></>\n )}\n\n <PopupButtons>\n <PopupButtons.Submit\n text='Resolve issue'\n variant='dark'\n onClick={onResolve}\n type='button'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"oYAqBA,SAAgB,EAAsB,EAAgD,CACpF,IAAM,EAAY,EAA4C,EAAqB,aAAa,EAAM,WAAW,CAAC,EAK5G,EAJS,EACb,EAAU,MACV,EAAqB,sBAAsB,CAAC,EAAU,KAAK,OAAO,CAAC,CAEvD,CAAA,CAAO,OAAO,GAEtB,EAAa,EAAwB,EACrC,EAAS,EAAU,EAEnB,EAAY,EAAmB,uBAAuB,CAAK,EAEjE,SAAS,GAAkB,CACzB,IAAM,EAAA,EAA0B,QAAQ,CACtC,YAAa,EAAY,cACzB,OAAQ,EAAmB,iBAAiB,EAAM,gBAAgB,KAAK,EACvE,OAAQ,CACN,MAAO,EAAM,GAAG,SAAS,EACzB,eAAgB,EAAM,eAAe,SAAS,CAChD,CACF,CAAC,EAED,EAAmB,SAAS,EAAM,EAAI,CACxC,CAEA,eAAe,GAA2B,CACxC,GAAI,IAAc,kBAAmB,CACnC,EAAW,EAAqB,iBAC9B,EAAU,KAAK,QACf,EAAM,MACN,EAAM,gBAAgB,KACxB,CAAC,CAAC,CACC,KAAK,CAAS,CAAC,CACf,UAAY,CACX,EAAO,MAAM,gDAAgD,EAAM,KAAK,oBAAoB,CAC9F,CAAC,CAAC,CACD,QAAQ,EAAM,UAAU,EAE3B,MACF,CAEA,EAAU,EACV,EAAM,WAAW,CACnB,CAEA,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,MAAM,gBACN,WAAY,EAAM,WAClB,mBAAoB,CAAC,WAHvB,CAKI,GAAS,EAAU,MACnB,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,IAAc,wBACb,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,cACS,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAM,IAAa,CAAA,EAAC,gCACtC,CAAA,CAAA,GAEH,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,cAAU,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAM,IAAa,CAAA,EAAC,4BAA6B,CAAA,CAAA,GACvE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAM,gBAAgB,wBAAwB,IAAI,IAE/C,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAmB,0BAA0B,CAAK,CACjD,EAFK,GAAG,EAAM,OAAO,GAAG,EAAM,WAE9B,CAEP,CACC,CAAA,CACJ,CAAA,CAAA,EAGH,IAAc,oBACb,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,yCAED,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,IAAI,EAAmB,gBAAgB,GAAO,iBAAiB,KAAK,EAAE,EAAW,CAAA,EAAC,kDAE1F,CAAA,CAAA,EAGJ,IAAc,2BACb,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,yCAEM,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAmB,gBAAgB,GAAO,iBAAiB,KAAK,CAAU,CAAA,EAAC,SAC1F,CAAA,CAAA,EAGJ,IAAc,yBACb,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,yCAEM,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAmB,gBAAgB,GAAO,iBAAiB,KAAK,CAAU,CAAA,EAAC,SAC1F,CAAA,CAAA,CAEL,CAAA,CAAA,GAEF,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGN,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,KAAK,gBACL,QAAQ,OACR,QAAS,EACT,KAAK,QACN,CAAA,CACW,CAAA,CACT,GAEX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{I as n,t as r}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{I as n,t as r}from"./DWHKdmdQ.chunk.js";import{t as i}from"./D-JsEiDq2.chunk.js";import{t as a}from"./D0JviwKV2.chunk.js";e();var o=t();function s(e){let t=n(e.id),s=t.data?.assignees?.reduce((e,t)=>(t.assignee.username===`system.user`||(e[t.stage]=t.assignee),e),{}),c=Object.keys(s||{}).length>0;return(0,o.jsx)(i,{title:`Assignees`,closePopup:e.closePopup,showLoadingSpinner:!t.hasCompleted,children:t.hasCompleted&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`div`,{className:`pb-3`,children:c?(0,o.jsx)(`ul`,{className:`m-0`,children:Object.entries(s).map(([e,t])=>(0,o.jsxs)(`li`,{children:[(0,o.jsxs)(`strong`,{children:[r[e].label,`:`]}),` `,t.name]},e))}):(0,o.jsx)(`div`,{children:`This video had no assignees.`})}),(0,o.jsx)(a,{children:(0,o.jsx)(a.Cancel,{text:`Close`,variant:`dark`,onClick:e.closePopup})})]})})}export{s as VideoAssigneesView};
|
|
2
|
+
//# sourceMappingURL=DYOxTenc2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DYOxTenc2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/view-assignees/VideoAssigneesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps, User } from 'libs/shared/interfaces';\n\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { useFetchAssemblyLineMedia } from 'apps/assembly-line/hooks/useFetchAssemblyLineMedia';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\n\ntype AssigneeMap = Record<AssemblyLineStage, User>;\n\ninterface VideoAssigneesViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function VideoAssigneesView(props: VideoAssigneesViewProps) {\n const video = useFetchAssemblyLineMedia(props.id);\n\n const stageAssigneeMap = video.data?.assignees?.reduce<AssigneeMap>((map, data) => {\n if (data.assignee.username === 'system.user')\n return map;\n\n map[data.stage] = data.assignee;\n return map;\n }, {} as AssigneeMap);\n\n const hasAssignees = Object.keys(stageAssigneeMap || {}).length > 0;\n\n return (\n <Popup\n title='Assignees'\n closePopup={props.closePopup}\n showLoadingSpinner={!video.hasCompleted}\n >\n {video.hasCompleted && (\n <>\n <div className='pb-3'>\n {hasAssignees ? (\n <ul className='m-0'>\n {Object.entries(stageAssigneeMap).map(([ stage, assignee ]) => {\n return (\n <li key={stage}>\n <strong>{AssemblyLineStageConfig[stage as AssemblyLineStage].label}:</strong> {assignee.name}\n </li>\n );\n })}\n </ul>\n ) : (\n <div>This video had no assignees.</div>\n )}\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text='Close'\n variant='dark'\n onClick={props.closePopup}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}\n"],"mappings":"8LAgBA,SAAgB,EAAmB,EAAgC,CACjE,IAAM,EAAQ,EAA0B,EAAM,EAAE,EAE1C,EAAmB,EAAM,MAAM,WAAW,QAAqB,EAAK,KACpE,EAAK,SAAS,WAAa,gBAG/B,EAAI,EAAK,OAAS,EAAK,UAFd,GAIR,CAAC,CAAgB,EAEd,EAAe,OAAO,KAAK,GAAoB,CAAC,CAAC,CAAC,CAAC,OAAS,EAElE,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,YACN,WAAY,EAAM,WAClB,mBAAoB,CAAC,EAAM,sBAE1B,EAAM,eACL,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACZ,GACC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,eACX,OAAO,QAAQ,CAAgB,CAAC,CAAC,KAAK,CAAE,EAAO,MAE5C,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,SAAD,CAAA,SAAA,CAAS,EAAwB,EAA2B,CAAC,MAAM,GAAS,CAAA,CAAA,EAAC,IAAE,EAAS,IACtF,CAAA,EAFK,CAEL,CAEP,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,SAAK,8BAAiC,CAAA,CAErC,CAAA,GAEL,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,KAAK,QACL,QAAQ,OACR,QAAS,EAAM,UAChB,CAAA,CACW,CAAA,CACd,CAAA,CAAA,CAEC,CAAA,CAEX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{c as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./B0wbqkwy.chunk.js";import{t as a}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{c as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./B0wbqkwy.chunk.js";import{t as a}from"./DxW67uUT.chunk.js";import{t as o}from"./CbiGs3Tn.chunk.js";import{s}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as c}from"./DyKk_C_Y.chunk.js";import{t as l}from"./DFZ_IQ1H.chunk.js";import{t as u}from"./hxAEUsea.chunk.js";import{t as d}from"./Dzr8viTI2.chunk.js";var f=n(e()),p={animatedBorder:`_animatedBorder_1g9h4_1`,borderRotate:`_borderRotate_1g9h4_1`,animatedBorderContent:`_animatedBorderContent_1g9h4_10`},m=t();function h({enabled:e,children:t}){return e?(0,m.jsx)(`div`,{className:p.animatedBorder,children:(0,m.jsx)(`div`,{className:`${p.animatedBorderContent} p-2`,children:t})}):(0,m.jsx)(m.Fragment,{children:t})}var g={anchor:`_anchor_gda43_1`,widgetHighlight:`_widgetHighlight_gda43_4`,blinker:`_blinker_gda43_1`};function _(e,t){return!i.hasNoContent(e)&&!!(!t||Array.isArray(t)&&!t.length)}function v(e){let t=f.createRef(),[n,p]=f.useState([]),v=l.isWidgetTypeEnabled(e.widgetTypeId,e?.settingsHash,e?.dashboardTarget),{ref:y,inView:b}=u({prevent:!(e.lazyLoad??!0)}),x=v&&r.isFunction(e.getContentRequest),S=s(!!(b&&v&&e.getContentRequest)&&e.getContentRequest(e.id,e.widgetTypeId,e.templateId)),{content:C}=i.useGetContent(e.content||S.data?.content,e.widgetTypeId,e.isPreviewing,S.data?.preferences,n),w=S.data?.name||e.name,T=d(),E=_(e.widgetTypeId,C),D=!i.canDisplayOnScreenSize(T,e.widgetTypeId,e.templateId);f.useEffect(()=>{x&&!S.hasCompleted||e.setIsEmpty?.(e.id,E||D)},[S.hasCompleted,E,D,x,e.setIsEmpty]),f.useEffect(()=>{!e.isScrollToTargetWidget||!t.current||t.current.scrollIntoView({behavior:`smooth`,block:`start`})},[e.isScrollToTargetWidget,t.current]);function O(t,r){if(e.onClickRemoveItem)return p([...n,t]),e.onClickRemoveItem(t,r,e.id,e.widgetTypeId)}let k=e.appLinks?{...e.appLinks}:null;k?.videoType&&(k.videoType=(t,n)=>e.appLinks?.videoType(t,{...n,contextId:e.id,includeContext:n.includeContext}));let A={...e.analyticsData,widgetId:e.widgetTypeId,templateId:e.templateId,dashboardTarget:e?.dashboardTarget,widgetIndex:e?.widgetIndex,widgetName:w},j=x&&!S.hasCompleted||e.isEditing&&E,M=a[e.templateId];if(!M||!j&&(E||D))return(0,m.jsx)(m.Fragment,{});let N=M.partialLoading,P=M.getComponent(e.widgetTypeId),F=o(M.className,e.className),I=e.isEditing&&e.metadata.aiAddedVideo;return(0,m.jsx)(`div`,{id:e.widgetTypeId===c.ContinueWatching?`continue-watching-videos-widget`:null,ref:t,className:`curated-widget ${F} ${w?`has-heading`:``} ${e.isScrollToTargetWidget?`my-n2 mx-n3`:``}`,children:(0,m.jsx)(h,{enabled:I,children:(0,m.jsxs)(`div`,{className:e.isScrollToTargetWidget?`py-2 px-3 rounded-3 ${g.widgetHighlight}`:``,children:[i.isWidgetInTableOfContents(e.metadata)&&(0,m.jsx)(`a`,{href:`#${e.id}`,id:`${e.id}`,className:`${g.anchor}`,ref:t=>{t&&e.headingElementRef?.current&&e.headingElementRef.current.add(t)}}),j?(0,m.jsx)(`div`,{ref:y,children:(0,m.jsx)(N,{name:w,description:e.description,isPreviewing:e.isPreviewing})}):(0,m.jsx)(P,{...e,appLinks:k,name:w,content:C,preferences:S.data?.preferences,analyticsData:A,showHighlight:e.isScrollToTargetWidget,isPreviewing:e.isPreviewing,onClickRemoveItem:O})]})})})}export{v as t};
|
|
2
|
+
//# sourceMappingURL=DZthp5T62.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CignflP_2.chunk.js","names":[],"sources":["../../../../../../../libs/shared/src/components/widgets/curated-widgets/components/animated-border/animated-border.module.scss","../../../../../../../libs/shared/src/components/widgets/curated-widgets/components/animated-border/AnimatedBorder.tsx","../../../../../../../libs/shared/src/components/widgets/curated-widgets/widget-container-view.module.scss","../../../../../../../libs/shared/src/components/widgets/curated-widgets/WidgetContainerView.tsx"],"sourcesContent":[":local {\n .animatedBorder {\n position: relative;\n padding: 0.25rem;\n border-radius: 1rem;\n background: linear-gradient(\n 90deg,\n #ff6ec4,\n #7873f5,\n #4facfe,\n #00f2fe,\n #4facfe,\n #7873f5,\n #ff6ec4\n );\n background-size: 200% 200%;\n animation: borderRotate 3s ease infinite;\n box-sizing: border-box;\n }\n\n .animatedBorderContent {\n background-color: white;\n border-radius: 0.875rem;\n overflow: hidden;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n\n @keyframes :local(borderRotate) {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n }\n}","import React from 'react';\n\nimport styles from './animated-border.module.scss';\n\ninterface AnimatedBorderProps {\n enabled: boolean;\n children: React.ReactNode;\n}\n\nexport function AnimatedBorder({ enabled, children }: AnimatedBorderProps): JSX.Element {\n if (!enabled) {\n return <>{children}</>;\n }\n\n return (\n <div className={styles.animatedBorder}>\n <div className={`${styles.animatedBorderContent} p-2`}>\n {children}\n </div>\n </div>\n );\n}\n",":local {\n .anchor {\n scroll-margin-top: 4.18rem;\n }\n\n .widgetHighlight {\n animation: blinker 4s linear 1;\n border-radius: $border-radius-lg;\n position: relative;\n z-index: 1;\n background-color: white;\n }\n\n @keyframes :local(blinker) {\n from {\n box-shadow: 0 0 1.75rem $blue;\n }\n to {\n box-shadow: none;\n }\n }\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AnimatedBorder } from 'libs/shared/components/widgets/curated-widgets/components/animated-border/AnimatedBorder';\nimport { AllClassificationWidgetTemplates, AllCompanyWidgetTemplates, AllDiscoverWidgetTemplates, AllMoviesAndTvWidgetTemplates, AllPartnerProfileWidgetTemplates, AllSearchWidgetTemplates, AllWidgetTemplateProps } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplateConfig } from 'libs/shared/constants/WidgetTemplateConfig';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { HasLocalPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CuratedWidget, CuratedWidgetContent, DashboardTargetType, Video, WidgetMetadata } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport styles from './widget-container-view.module.scss';\n\nfunction isEmptyWidget<TContent = CuratedWidgetContent>(widgetTypeId: WidgetTypeId, content: TContent): boolean {\n if (WidgetHelper.hasNoContent(widgetTypeId))\n return false;\n \n if (!content)\n return true;\n\n if (Array.isArray(content) && !content.length)\n return true;\n\n return false;\n}\n\n/**\n * Type mapping from DashboardTargetType to their corresponding Widget Template Props\n * This makes it easy to extract the correct widget template type based on dashboard target\n */\nexport type DashboardTargetToWidgetTemplateMap = {\n [DashboardTargetType.Classification]: AllClassificationWidgetTemplates,\n [DashboardTargetType.Discover]: AllDiscoverWidgetTemplates,\n [DashboardTargetType.Company]: AllCompanyWidgetTemplates,\n [DashboardTargetType.MoviesAndTv]: AllMoviesAndTvWidgetTemplates,\n [DashboardTargetType.Search]: AllSearchWidgetTemplates,\n [DashboardTargetType.PartnerProfile]: AllPartnerProfileWidgetTemplates,\n [DashboardTargetType.DiscoverPartnerProfiles]: AllPartnerProfileWidgetTemplates,\n // Add defaults for other dashboard targets that don't have specific templates\n [DashboardTargetType.ClassificationDirectory]: AllClassificationWidgetTemplates,\n [DashboardTargetType.ClassificationCurriculum]: AllClassificationWidgetTemplates,\n [DashboardTargetType.PartnerProfileHub]: AllPartnerProfileWidgetTemplates\n};\n\n/**\n * Helper type to extract widget template props for a specific dashboard target\n */\nexport type WidgetTemplatePropsForTarget<T extends DashboardTargetType> =\n T extends keyof DashboardTargetToWidgetTemplateMap ?\n DashboardTargetToWidgetTemplateMap[T] :\n AllWidgetTemplateProps;\n\ninterface BaseWidgetContainerViewProps {\n id: string;\n name: string;\n description: string;\n templateId: WidgetTemplate;\n \n /**\n * This is different from `settings` props \n * which is union of all settings used \n * within different widgets. \n */\n settingsHash?: SettingsHash;\n widgetIndex?: number;\n widgetTypeId: WidgetTypeId;\n setIsEmpty?: (id: string, isEmpty: boolean) => void;\n onClickRemoveItem?: (itemId: string, itemName: string, widgetId: string, widgetTypeId: WidgetTypeId) => void;\n isEditing?: boolean;\n isScrollToTargetWidget?: boolean;\n headingElementRef?: React.MutableRefObject<Set<Element>>;\n lazyLoad?: boolean;\n metadata: Partial<WidgetMetadata>;\n isPreviewing?: boolean;\n dashboardTarget?: DashboardTargetType;\n className?: string;\n hasLocalPermissions?: HasLocalPermissionsFunc;\n isUpselling?: boolean;\n}\n\ntype WidgetContainerViewPropsForTarget<T extends DashboardTargetType> =\n BaseWidgetContainerViewProps &\n Omit<WidgetTemplatePropsForTarget<T>, 'content' | 'metadata'> &\n { widgetCollection?: T };\n\ntype ClassificationWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Classification>;\ntype DiscoverWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Discover>;\ntype CompanyWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Company>;\ntype MoviesAndTvWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.MoviesAndTv>;\ntype SearchWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Search>;\ntype PartnerProfileDashboardWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.PartnerProfile>;\ntype PartnerProfileDiscoverWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.DiscoverPartnerProfiles>;\n\ntype CuratorWidgetContainerViewProps = Omit<Partial<AllWidgetTemplateProps>, 'content' | 'metadata'> &\n { location: 'curator' };\n\ntype CommonContainerViewProps =\n BaseWidgetContainerViewProps & (\n ClassificationWidgetContainerViewProps |\n DiscoverWidgetContainerViewProps |\n CompanyWidgetContainerViewProps |\n MoviesAndTvWidgetContainerViewProps |\n CuratorWidgetContainerViewProps |\n SearchWidgetContainerViewProps |\n PartnerProfileDashboardWidgetContainerViewProps |\n PartnerProfileDiscoverWidgetContainerViewProps\n );\n\ntype PropsWithFetch = CommonContainerViewProps & {\n getContentRequest: (id: string, widgetTypeId: WidgetTypeId, templateId: WidgetTemplate) => Flight.Request,\n content?: never\n};\n\ntype PropsWithoutFetch = CommonContainerViewProps & {\n content: CuratedWidgetContent,\n getContentRequest?: never\n};\n\ntype WidgetContainerViewProps = PropsWithFetch | PropsWithoutFetch;\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function WidgetContainerView(props: WidgetContainerViewProps): JSX.Element {\n const scrollToRef = React.createRef<HTMLDivElement>();\n\n const [ removedItemIds, setRemovedItemIds ] = React.useState<string[]>([]);\n\n const isWidgetEnabled = CuratedDashboardHelper.isWidgetTypeEnabled(\n props.widgetTypeId,\n props?.settingsHash,\n props?.dashboardTarget\n );\n\n const shouldLazyLoad = props.lazyLoad ?? true;\n\n const { ref: partialLoadingRef, inView } = useLazyLoad({ prevent: !shouldLazyLoad });\n \n const willFetch = isWidgetEnabled && FunctionHelper.isFunction(props.getContentRequest);\n\n const lazyWidget = Flight.useBasicFetch<CuratedWidget>(!!(inView && isWidgetEnabled && props.getContentRequest) &&\n props.getContentRequest(props.id, props.widgetTypeId, props.templateId));\n\n const { content } = WidgetHelper.useGetContent(\n props.content || lazyWidget.data?.content,\n props.widgetTypeId,\n props.isPreviewing,\n lazyWidget.data?.preferences,\n removedItemIds\n );\n\n const name = lazyWidget.data?.name || props.name;\n\n const breakpoints = useBreakpoints();\n\n const isEmpty = isEmptyWidget(props.widgetTypeId, content);\n const shouldHideWidget = !WidgetHelper.canDisplayOnScreenSize(breakpoints, props.widgetTypeId, props.templateId);\n\n React.useEffect(() => {\n if ((willFetch && !lazyWidget.hasCompleted))\n return;\n\n props.setIsEmpty?.(props.id, isEmpty || shouldHideWidget);\n }, [ lazyWidget.hasCompleted, isEmpty, shouldHideWidget, willFetch, props.setIsEmpty ]);\n\n React.useEffect(() => {\n if (!props.isScrollToTargetWidget || !scrollToRef.current)\n return;\n\n scrollToRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n });\n }, [ props.isScrollToTargetWidget, scrollToRef.current ]);\n\n function onClickRemoveItem(itemId: string, itemName: string): void {\n if (!props.onClickRemoveItem)\n return;\n\n setRemovedItemIds([ ...removedItemIds, itemId ]);\n return props.onClickRemoveItem(itemId, itemName, props.id, props.widgetTypeId);\n }\n\n /**\n * Our videos require widget id for context, so we're enclosing the video type applink function here.\n */\n const appLinks = props.appLinks ? { ...props.appLinks } : null;\n if (appLinks?.videoType) {\n const getVideoTypeAppLink = (video: Video, options: GetVideoAppLinkOptions) => {\n return props.appLinks?.videoType(\n video,\n { ...options, contextId: props.id, includeContext: options.includeContext }\n );\n };\n \n appLinks.videoType = getVideoTypeAppLink;\n }\n\n const analyticsData = {\n ...props.analyticsData,\n widgetId: props.widgetTypeId,\n templateId: props.templateId,\n dashboardTarget: props?.dashboardTarget,\n widgetIndex: props?.widgetIndex,\n widgetName: name\n };\n\n const showPartialLoadingComponent = (willFetch && !lazyWidget.hasCompleted) || (props.isEditing && isEmpty);\n\n const template = WidgetTemplateConfig[props.templateId];\n\n if (!template || !showPartialLoadingComponent && (isEmpty || shouldHideWidget))\n return <></>;\n \n const PartialTemplate = template.partialLoading;\n const Template = template.getComponent(props.widgetTypeId);\n const widgetTemplateClass = classNames(template.className, props.className);\n\n const hasNewVideoHighlight = props.isEditing && props.metadata.aiAddedVideo;\n\n return (\n <div\n id={props.widgetTypeId === WidgetTypeId.ContinueWatching ? 'continue-watching-videos-widget' : null}\n ref={scrollToRef}\n className={`curated-widget ${widgetTemplateClass} ${name ? 'has-heading' : ''} ${props.isScrollToTargetWidget ? 'my-n2 mx-n3' : ''}`}\n >\n <AnimatedBorder enabled={hasNewVideoHighlight}>\n <div className={props.isScrollToTargetWidget ? `py-2 px-3 rounded-3 ${styles.widgetHighlight}` : ''}>\n {WidgetHelper.isWidgetInTableOfContents(props.metadata) && (\n <a\n href={`#${props.id}`}\n id={`${props.id}`}\n className={`${styles.anchor}`}\n ref={el => { (el && props.headingElementRef?.current) && props.headingElementRef.current.add(el); }}\n />\n )}\n\n {showPartialLoadingComponent ? (\n <div ref={partialLoadingRef}>\n <PartialTemplate\n name={name}\n description={props.description}\n isPreviewing={props.isPreviewing}\n />\n </div>\n ) : (\n <Template\n {...props}\n appLinks={appLinks}\n name={name}\n content={content}\n preferences={lazyWidget.data?.preferences}\n analyticsData={analyticsData}\n showHighlight={props.isScrollToTargetWidget}\n isPreviewing={props.isPreviewing}\n onClickRemoveItem={onClickRemoveItem}\n />\n )}\n </div>\n </AnimatedBorder>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DZthp5T62.chunk.js","names":[],"sources":["../../../../../../../libs/shared/src/components/widgets/curated-widgets/components/animated-border/animated-border.module.scss","../../../../../../../libs/shared/src/components/widgets/curated-widgets/components/animated-border/AnimatedBorder.tsx","../../../../../../../libs/shared/src/components/widgets/curated-widgets/widget-container-view.module.scss","../../../../../../../libs/shared/src/components/widgets/curated-widgets/WidgetContainerView.tsx"],"sourcesContent":[":local {\n .animatedBorder {\n position: relative;\n padding: 0.25rem;\n border-radius: 1rem;\n background: linear-gradient(\n 90deg,\n #ff6ec4,\n #7873f5,\n #4facfe,\n #00f2fe,\n #4facfe,\n #7873f5,\n #ff6ec4\n );\n background-size: 200% 200%;\n animation: borderRotate 3s ease infinite;\n box-sizing: border-box;\n }\n\n .animatedBorderContent {\n background-color: white;\n border-radius: 0.875rem;\n overflow: hidden;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n\n @keyframes :local(borderRotate) {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n }\n}","import React from 'react';\n\nimport styles from './animated-border.module.scss';\n\ninterface AnimatedBorderProps {\n enabled: boolean;\n children: React.ReactNode;\n}\n\nexport function AnimatedBorder({ enabled, children }: AnimatedBorderProps): JSX.Element {\n if (!enabled) {\n return <>{children}</>;\n }\n\n return (\n <div className={styles.animatedBorder}>\n <div className={`${styles.animatedBorderContent} p-2`}>\n {children}\n </div>\n </div>\n );\n}\n",":local {\n .anchor {\n scroll-margin-top: 4.18rem;\n }\n\n .widgetHighlight {\n animation: blinker 4s linear 1;\n border-radius: $border-radius-lg;\n position: relative;\n z-index: 1;\n background-color: white;\n }\n\n @keyframes :local(blinker) {\n from {\n box-shadow: 0 0 1.75rem $blue;\n }\n to {\n box-shadow: none;\n }\n }\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AnimatedBorder } from 'libs/shared/components/widgets/curated-widgets/components/animated-border/AnimatedBorder';\nimport { AllClassificationWidgetTemplates, AllCompanyWidgetTemplates, AllDiscoverWidgetTemplates, AllMoviesAndTvWidgetTemplates, AllPartnerProfileWidgetTemplates, AllSearchWidgetTemplates, AllWidgetTemplateProps } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTemplateConfig } from 'libs/shared/constants/WidgetTemplateConfig';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { HasLocalPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CuratedWidget, CuratedWidgetContent, DashboardTargetType, Video, WidgetMetadata } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport styles from './widget-container-view.module.scss';\n\nfunction isEmptyWidget<TContent = CuratedWidgetContent>(widgetTypeId: WidgetTypeId, content: TContent): boolean {\n if (WidgetHelper.hasNoContent(widgetTypeId))\n return false;\n \n if (!content)\n return true;\n\n if (Array.isArray(content) && !content.length)\n return true;\n\n return false;\n}\n\n/**\n * Type mapping from DashboardTargetType to their corresponding Widget Template Props\n * This makes it easy to extract the correct widget template type based on dashboard target\n */\nexport type DashboardTargetToWidgetTemplateMap = {\n [DashboardTargetType.Classification]: AllClassificationWidgetTemplates,\n [DashboardTargetType.Discover]: AllDiscoverWidgetTemplates,\n [DashboardTargetType.Company]: AllCompanyWidgetTemplates,\n [DashboardTargetType.MoviesAndTv]: AllMoviesAndTvWidgetTemplates,\n [DashboardTargetType.Search]: AllSearchWidgetTemplates,\n [DashboardTargetType.PartnerProfile]: AllPartnerProfileWidgetTemplates,\n [DashboardTargetType.DiscoverPartnerProfiles]: AllPartnerProfileWidgetTemplates,\n // Add defaults for other dashboard targets that don't have specific templates\n [DashboardTargetType.ClassificationDirectory]: AllClassificationWidgetTemplates,\n [DashboardTargetType.ClassificationCurriculum]: AllClassificationWidgetTemplates,\n [DashboardTargetType.PartnerProfileHub]: AllPartnerProfileWidgetTemplates\n};\n\n/**\n * Helper type to extract widget template props for a specific dashboard target\n */\nexport type WidgetTemplatePropsForTarget<T extends DashboardTargetType> =\n T extends keyof DashboardTargetToWidgetTemplateMap ?\n DashboardTargetToWidgetTemplateMap[T] :\n AllWidgetTemplateProps;\n\ninterface BaseWidgetContainerViewProps {\n id: string;\n name: string;\n description: string;\n templateId: WidgetTemplate;\n \n /**\n * This is different from `settings` props \n * which is union of all settings used \n * within different widgets. \n */\n settingsHash?: SettingsHash;\n widgetIndex?: number;\n widgetTypeId: WidgetTypeId;\n setIsEmpty?: (id: string, isEmpty: boolean) => void;\n onClickRemoveItem?: (itemId: string, itemName: string, widgetId: string, widgetTypeId: WidgetTypeId) => void;\n isEditing?: boolean;\n isScrollToTargetWidget?: boolean;\n headingElementRef?: React.MutableRefObject<Set<Element>>;\n lazyLoad?: boolean;\n metadata: Partial<WidgetMetadata>;\n isPreviewing?: boolean;\n dashboardTarget?: DashboardTargetType;\n className?: string;\n hasLocalPermissions?: HasLocalPermissionsFunc;\n isUpselling?: boolean;\n}\n\ntype WidgetContainerViewPropsForTarget<T extends DashboardTargetType> =\n BaseWidgetContainerViewProps &\n Omit<WidgetTemplatePropsForTarget<T>, 'content' | 'metadata'> &\n { widgetCollection?: T };\n\ntype ClassificationWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Classification>;\ntype DiscoverWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Discover>;\ntype CompanyWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Company>;\ntype MoviesAndTvWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.MoviesAndTv>;\ntype SearchWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.Search>;\ntype PartnerProfileDashboardWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.PartnerProfile>;\ntype PartnerProfileDiscoverWidgetContainerViewProps =\n WidgetContainerViewPropsForTarget<DashboardTargetType.DiscoverPartnerProfiles>;\n\ntype CuratorWidgetContainerViewProps = Omit<Partial<AllWidgetTemplateProps>, 'content' | 'metadata'> &\n { location: 'curator' };\n\ntype CommonContainerViewProps =\n BaseWidgetContainerViewProps & (\n ClassificationWidgetContainerViewProps |\n DiscoverWidgetContainerViewProps |\n CompanyWidgetContainerViewProps |\n MoviesAndTvWidgetContainerViewProps |\n CuratorWidgetContainerViewProps |\n SearchWidgetContainerViewProps |\n PartnerProfileDashboardWidgetContainerViewProps |\n PartnerProfileDiscoverWidgetContainerViewProps\n );\n\ntype PropsWithFetch = CommonContainerViewProps & {\n getContentRequest: (id: string, widgetTypeId: WidgetTypeId, templateId: WidgetTemplate) => Flight.Request,\n content?: never\n};\n\ntype PropsWithoutFetch = CommonContainerViewProps & {\n content: CuratedWidgetContent,\n getContentRequest?: never\n};\n\ntype WidgetContainerViewProps = PropsWithFetch | PropsWithoutFetch;\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function WidgetContainerView(props: WidgetContainerViewProps): JSX.Element {\n const scrollToRef = React.createRef<HTMLDivElement>();\n\n const [ removedItemIds, setRemovedItemIds ] = React.useState<string[]>([]);\n\n const isWidgetEnabled = CuratedDashboardHelper.isWidgetTypeEnabled(\n props.widgetTypeId,\n props?.settingsHash,\n props?.dashboardTarget\n );\n\n const shouldLazyLoad = props.lazyLoad ?? true;\n\n const { ref: partialLoadingRef, inView } = useLazyLoad({ prevent: !shouldLazyLoad });\n \n const willFetch = isWidgetEnabled && FunctionHelper.isFunction(props.getContentRequest);\n\n const lazyWidget = Flight.useBasicFetch<CuratedWidget>(!!(inView && isWidgetEnabled && props.getContentRequest) &&\n props.getContentRequest(props.id, props.widgetTypeId, props.templateId));\n\n const { content } = WidgetHelper.useGetContent(\n props.content || lazyWidget.data?.content,\n props.widgetTypeId,\n props.isPreviewing,\n lazyWidget.data?.preferences,\n removedItemIds\n );\n\n const name = lazyWidget.data?.name || props.name;\n\n const breakpoints = useBreakpoints();\n\n const isEmpty = isEmptyWidget(props.widgetTypeId, content);\n const shouldHideWidget = !WidgetHelper.canDisplayOnScreenSize(breakpoints, props.widgetTypeId, props.templateId);\n\n React.useEffect(() => {\n if ((willFetch && !lazyWidget.hasCompleted))\n return;\n\n props.setIsEmpty?.(props.id, isEmpty || shouldHideWidget);\n }, [ lazyWidget.hasCompleted, isEmpty, shouldHideWidget, willFetch, props.setIsEmpty ]);\n\n React.useEffect(() => {\n if (!props.isScrollToTargetWidget || !scrollToRef.current)\n return;\n\n scrollToRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n });\n }, [ props.isScrollToTargetWidget, scrollToRef.current ]);\n\n function onClickRemoveItem(itemId: string, itemName: string): void {\n if (!props.onClickRemoveItem)\n return;\n\n setRemovedItemIds([ ...removedItemIds, itemId ]);\n return props.onClickRemoveItem(itemId, itemName, props.id, props.widgetTypeId);\n }\n\n /**\n * Our videos require widget id for context, so we're enclosing the video type applink function here.\n */\n const appLinks = props.appLinks ? { ...props.appLinks } : null;\n if (appLinks?.videoType) {\n const getVideoTypeAppLink = (video: Video, options: GetVideoAppLinkOptions) => {\n return props.appLinks?.videoType(\n video,\n { ...options, contextId: props.id, includeContext: options.includeContext }\n );\n };\n \n appLinks.videoType = getVideoTypeAppLink;\n }\n\n const analyticsData = {\n ...props.analyticsData,\n widgetId: props.widgetTypeId,\n templateId: props.templateId,\n dashboardTarget: props?.dashboardTarget,\n widgetIndex: props?.widgetIndex,\n widgetName: name\n };\n\n const showPartialLoadingComponent = (willFetch && !lazyWidget.hasCompleted) || (props.isEditing && isEmpty);\n\n const template = WidgetTemplateConfig[props.templateId];\n\n if (!template || !showPartialLoadingComponent && (isEmpty || shouldHideWidget))\n return <></>;\n \n const PartialTemplate = template.partialLoading;\n const Template = template.getComponent(props.widgetTypeId);\n const widgetTemplateClass = classNames(template.className, props.className);\n\n const hasNewVideoHighlight = props.isEditing && props.metadata.aiAddedVideo;\n\n return (\n <div\n id={props.widgetTypeId === WidgetTypeId.ContinueWatching ? 'continue-watching-videos-widget' : null}\n ref={scrollToRef}\n className={`curated-widget ${widgetTemplateClass} ${name ? 'has-heading' : ''} ${props.isScrollToTargetWidget ? 'my-n2 mx-n3' : ''}`}\n >\n <AnimatedBorder enabled={hasNewVideoHighlight}>\n <div className={props.isScrollToTargetWidget ? `py-2 px-3 rounded-3 ${styles.widgetHighlight}` : ''}>\n {WidgetHelper.isWidgetInTableOfContents(props.metadata) && (\n <a\n href={`#${props.id}`}\n id={`${props.id}`}\n className={`${styles.anchor}`}\n ref={el => { (el && props.headingElementRef?.current) && props.headingElementRef.current.add(el); }}\n />\n )}\n\n {showPartialLoadingComponent ? (\n <div ref={partialLoadingRef}>\n <PartialTemplate\n name={name}\n description={props.description}\n isPreviewing={props.isPreviewing}\n />\n </div>\n ) : (\n <Template\n {...props}\n appLinks={appLinks}\n name={name}\n content={content}\n preferences={lazyWidget.data?.preferences}\n analyticsData={analyticsData}\n showHighlight={props.isScrollToTargetWidget}\n isPreviewing={props.isPreviewing}\n onClickRemoveItem={onClickRemoveItem}\n />\n )}\n </div>\n </AnimatedBorder>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{l as i,n as a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./DZX1tZ-D.chunk.js";import{t as s}from"./C1kx8Ra5.chunk.js";import{t as c}from"./Di_u2uix.chunk.js";import{t as l}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as u}from"./UCDGupVs.chunk.js";import{t as d}from"./CLCeObem2.chunk.js";import{t as f}from"./C7gaMI1t2.chunk.js";import{b as p}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{l as i,n as a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./DZX1tZ-D.chunk.js";import{t as s}from"./C1kx8Ra5.chunk.js";import{t as c}from"./Di_u2uix.chunk.js";import{t as l}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as u}from"./UCDGupVs.chunk.js";import{t as d}from"./CLCeObem2.chunk.js";import{t as f}from"./C7gaMI1t2.chunk.js";import{b as p}from"./GpDEun8c2.chunk.js";import{l as m,s as h,u as g}from"./Dgk5cBBe.chunk.js";import{t as _}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as v}from"./Bwpvc7Th2.chunk.js";import{t as y}from"./D10cUDG82.chunk.js";import{t as b}from"./B_qCVJZp2.chunk.js";import{t as x}from"./BivItbGo.chunk.js";import{r as S}from"./BRcHS92O.chunk.js";import{c as C,i as w}from"./DA0I3jYA.chunk.js";import{t as T}from"./dKyhMawf.chunk.js";import{n as E}from"./C4Ey4nzb2.chunk.js";import{t as D}from"./GWw4zEXk2.chunk.js";import{t as O}from"./2NdfwDHB.chunk.js";import{t as k}from"./CNfsk-2G.chunk.js";import{t as A}from"./CJGGMhrK2.chunk.js";import{t as j}from"./6S_Zxy792.chunk.js";import{t as M}from"./BUtlulMl.chunk.js";import{t as N}from"./CNLx6_fS.chunk.js";import{n as P,t as F}from"./CL1DcbTZ.chunk.js";var I=r(t()),L=r(d(),1),R=4096,z=L.object().shape({name:L.string().trim().max(255,`Name is too long`).required(`Name is required`).default(``),logo:f,banner:f,cover:f,metadata:L.object({colour:L.string()}),description:L.string().trim().default(``).max(R,`Descriptions cannot exceed ${R} characters`),links:L.array(L.object().shape({name:L.string().max(255,()=>`Please provide a shorter name`).required(()=>`Name is required`).min(1,()=>`Name is required`),url:L.string().url(`Must be a valid URL`).max(16e3,()=>`Please provide a shorter URL`)})).nullable().default([]),newLink:L.object().default(void 0).shape({name:L.string().default(``).max(255,()=>`Please provide a shorter name`).required(()=>`Name is required`).min(1,()=>`Name is required`),url:L.string().url(`Must be a valid URL`).max(16e3,()=>`Please provide a shorter URL`)})}).noUnknown(),B={add:`_add_7fnl3_1`},V=n();function H(){let e=C(),[t,n]=I.useState(!e.values.links?.length),[r,o]=I.useState(-1);I.useEffect(()=>{t||e.values.links?.length||n(!0)},[e.values.links?.length]);function s(t){let n=e.values.links?.filter((e,n)=>n!==t);e.setFieldValue(`links`,n)}let c=(!e.values.newLink?.url||!e.values.newLink?.name)&&e.isValid;function l(t){return!t.name||!t.url||!e.isValid}return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(E,{label:`Links`,name:`data`,id:`data`,children:()=>(0,V.jsxs)(V.Fragment,{children:[e.values.links?.map((e,t)=>(0,V.jsxs)(`div`,{className:`align-items-top row w-100`,children:[(0,V.jsx)(`div`,{className:`col`,children:(0,V.jsx)(E,{type:`text`,id:`links.${t}.name`,name:`links.${t}.name`,placeholder:`Link display name`,disabled:t!==r})}),(0,V.jsx)(`div`,{className:`col`,children:(0,V.jsx)(E,{id:`links.${t}.url`,name:`links.${t}.url`,placeholder:`Link url`,disabled:t!==r})}),(0,V.jsx)(`div`,{className:`${B.add} d-flex ${t===r?`align-items-baseline`:`align-items-center`}`,children:t===r?(0,V.jsx)(i,{className:`btn btn-dark mb-3 ${l(e)?`disabled`:``}`,onClick:()=>o(-1),disabled:l(e),children:`Save`}):(0,V.jsxs)(`div`,{className:`cursor-pointer mb-3 d-flex gap-2`,children:[(0,V.jsx)(a,{className:`svg-container`,svg:y,onClick:()=>o(t)}),(0,V.jsx)(a,{className:`svg-container text-danger`,svg:O,onClick:()=>{s(t),o(-1)}})]})})]},e.id??t)),t&&(0,V.jsxs)(`div`,{className:`d-flex align-items-top row w-100`,children:[(0,V.jsx)(`div`,{className:`col`,children:(0,V.jsx)(E,{type:`text`,id:`newLink.name`,name:`newLink.name`,placeholder:`Link display name`,value:e.values.newLink?.name||``})}),(0,V.jsx)(`div`,{className:`col`,children:(0,V.jsx)(E,{type:`text`,id:`newLink.url`,name:`newLink.url`,placeholder:`URL`,value:e.values.newLink?.url||``})}),(0,V.jsx)(`div`,{className:B.add,children:(0,V.jsx)(i,{disabled:!e.values.newLink?.url||!e.values.newLink?.name,className:`btn btn-dark mb-3 ${c?`disabled`:``}`,onClick:()=>{e.setFieldValue(`links`,[...e.values.links||[],e.values.newLink]),e.setFieldValue(`newLink`,void 0),n(!1),o(-1)},children:`Add`})})]})]})}),!t&&(0,V.jsx)(i,{onClick:()=>n(!0),className:`info-link mb-3 mt-n3`,children:`+ Add another link`})]})}function U(e){let t=C();return(0,V.jsxs)(w,{children:[(0,V.jsx)(E,{label:`Name`,name:`name`,id:`name`,value:t.values.name,placeholder:`Enter a name for this company`,autoFocus:!0}),(0,V.jsx)(E,{as:`textarea`,rows:2,label:`Description`,name:`description`,id:`description`,value:t.values.description,placeholder:`Enter a description for this company`,maxLength:R,showCharacterCounter:!0}),(0,V.jsx)(H,{}),(0,V.jsx)(k,{imageType:S.Covers,fieldName:`cover`,uploadAppLink:{application:l.COMPANIES,action:c.Companies.UPLOAD_IMAGE}}),(0,V.jsx)(k,{imageType:S.Logos,fieldName:`logo`,label:`Logo`,overrideDimensions:{width:512,height:512},uploadAppLink:{application:l.COMPANIES,action:c.Companies.UPLOAD_IMAGE}}),(0,V.jsx)(k,{imageType:S.Banners,fieldName:`banner`,uploadAppLink:{application:l.COMPANIES,action:c.Companies.UPLOAD_IMAGE}}),(0,V.jsx)(j,{label:`Background color`,fieldName:`metadata.colour`}),(0,V.jsx)(M,{isNew:e.isNew})]})}function W(e){return(0,V.jsx)(T,{initialValues:{...e.company,links:e.company?.links?.data||[]},validationSchema:z,onSubmit:e.saveCompany,children:(0,V.jsx)(U,{isNew:!(e.company&&e.company.id)})})}function G(e){let t=v(),n=g(),r=h(A.getCompany(e.companyId)),i=h(u.currentUser());async function a(i,a){let o=()=>{a(),t.success(`Successfully updated the company.`)},c=r.data.links.data.filter(e=>!i.links.find(t=>t.id===e.id));if(c.length){let e=c.map(e=>n(A.deleteCompanyLink(e.id)));await Promise.all(e)}let l=i.links.filter(e=>r.data.links.data.find(t=>t.id===e.id&&(t.name!==e.name||t.url!==e.url)));if(l.length){let e=l.map(e=>n(A.updateCompanyLink(e.id,e)));await Promise.all(e)}let u=i.links.filter(e=>!e.id);if(u.length){let t=u.map(t=>n(A.createCompanyLink(e.companyId,t)));await Promise.all(t)}let d=s.omit(i,[`links`]);n(A.updateCompany(e.companyId,d,o,a))}let o=P(e.context);return(0,V.jsxs)(V.Fragment,{children:[!!i.data&&(0,V.jsx)(F,{companyId:e.companyId,activeAction:o.editCompany(e.companyId).action,currentUser:i.data,context:e.context}),!!r.data&&(0,V.jsx)(W,{company:r.data,saveCompany:a})]})}function K(e){let t=h(u.currentUser()),n=h(A.getCompany(e.companyId)),r=h(x.curationTags()),i=h(x.selectedCurationTags(e.companyId)),a=m();function o(t,n,r){a(x.addTag(e.companyId,t,n,r))}function s(t,n,r){a(x.removeTag(e.companyId,t,n,r))}return(0,V.jsxs)(V.Fragment,{children:[!!t.data&&(0,V.jsx)(F,{companyId:e.companyId,activeAction:c.Companies.EDIT_COMPANY_CURATION,currentUser:t.data,context:`clickview`}),!!n.data&&!!r.data&&!!i.data&&(0,V.jsx)(N,{id:e.companyId,heading:n.data.name,curationTags:r.data,selectedCurationTags:i.data,addCurationTag:o,removeCurationTag:s})]})}function q(t){let n=v(),r=h(x.curationTags(t.context===`live`)),i=g(),a=P(t.context);async function o(o,s){let c=await i(A.createCompany(o));if(o.links.length){let e=o.links.map(e=>i(A.createCompanyLink(c.id,e)));await Promise.all(e)}if(t.context===`live`){let e=r.data.find(e=>e.name===b.STREAMABLE_CURATED);await i(x.addTag(c.id,e))}n.success(`Successfully created a company.`),e.trigger(a.companies()),s()}return(0,V.jsx)(W,{saveCompany:o})}var J=`/api/domain/v1/search/companies/instant/raw`,Y=`/api/search/v1/search/content/raw`;function X(t){let n=h(t.context===`live`&&x.curationTags(t.context===`live`)),r=h(s()),i=P(t.context),a=t=>e.trigger(i.editCompany(t.id));function s(){if(t.context===`live`){let e=n.data?.find(e=>e.name===b.STREAMABLE_CURATED);return e&&A.getCompanies(t.cursor,e?.id)}return A.getCompanies(t.cursor)}function c(e){return t.context===`live`?o.urlBuilder(Y,{index:`company`,query:e,"filters.curationTag":b.STREAMABLE_CURATED}):`${J}?q=${e}`}function l(e){return t.context===`live`?e?.results.map(e=>({id:e.id,name:_.first(e.name),permissionValues:e.permissionValues})):e}return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`pb-3 w-50`,children:(0,V.jsx)(D,{placeholder:`Search for a company`,onSuggestionSelected:a,getRemoteUrl:e=>c(e),formatRemoteSuggestions:e=>l(e),activationLength:2})}),(0,V.jsx)(p,{collection:r&&r.data,columns:[{accessor:`name`,header:`Name`,appLink:e=>i.editCompany(e.id)}],collectionAppLink:i.companies(),newObjectAppLink:i.newCompany(),objectName:`Company`})]})}export{X as CompaniesView,K as EditCompanyCurationView,G as EditCompanyView,q as NewCompanyView};
|
|
2
|
+
//# sourceMappingURL=Djgwr16q.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlqDwJRY.chunk.js","names":[],"sources":["../../../../../src/apps/companies/utils/CompanyValidation.ts","../../../../../src/apps/companies/components/company-links-form/company-links-form.module.scss","../../../../../src/apps/companies/components/company-links-form/CompanyLinksForm.tsx","../../../../../src/apps/companies/components/edit-company/EditCompanyForm.tsx","../../../../../src/apps/companies/components/edit-company/EditCompany.tsx","../../../../../src/apps/companies/views/edit-company/EditCompanyView.tsx","../../../../../src/apps/companies/views/edit-company-curation/EditCompanyCurationView.tsx","../../../../../src/apps/companies/views/new-company/NewCompanyView.tsx","../../../../../src/apps/companies/views/companies/CompaniesView.tsx"],"sourcesContent":["import * as Yup from 'yup';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Link } from 'libs/shared/interfaces';\n\nimport { ImageValidationSchema } from 'shared/utils/validation/ImageValidationSchema';\n\n/**\n * Value based on the longest streamable learning description (3668 chars) - Sha\n */\nexport const MAX_COMPANY_DESCRIPTION_LENGTH = 4096;\n\nexport const CompanyValidationSchema = Yup.object().shape<HashObject & { newLink: Link }>({\n name: Yup.string()\n .trim()\n .max(255, 'Name is too long')\n .required('Name is required')\n .default(''),\n\n logo: ImageValidationSchema,\n\n banner: ImageValidationSchema,\n\n cover: ImageValidationSchema,\n\n metadata: Yup.object({\n colour: Yup.string()\n }),\n\n description: Yup.string()\n .trim()\n .default('')\n .max(MAX_COMPANY_DESCRIPTION_LENGTH, `Descriptions cannot exceed ${MAX_COMPANY_DESCRIPTION_LENGTH} characters`),\n\n links: Yup.array(Yup.object()\n .shape({\n name: Yup.string()\n .max(255, () => 'Please provide a shorter name')\n .required(() => 'Name is required')\n .min(1, () => 'Name is required'),\n url: Yup.string()\n .url('Must be a valid URL').max(16000, () => 'Please provide a shorter URL')\n }))\n .nullable()\n .default([]),\n\n newLink: Yup.object()\n .default(undefined)\n .shape({\n name: Yup.string()\n .default('')\n .max(255, () => 'Please provide a shorter name')\n .required(() => 'Name is required')\n .min(1, () => 'Name is required'),\n url: Yup.string()\n .url('Must be a valid URL')\n .max(16000, () => 'Please provide a shorter URL')\n })\n\n}).noUnknown();\n",":local {\n .add {\n flex: 0 0 0;\n margin-right: -1.25rem; //offset flex gutter\n }\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { Link } from 'libs/shared/interfaces';\n\nimport styles from './company-links-form.module.scss';\n\nexport function CompanyLinksForm(): JSX.Element {\n const formikProps = useFormikContext<any>();\n const [ showNewInput, setShowNewInput ] = React.useState(!formikProps.values.links?.length);\n const [ editingIndex, setEditingIndex ] = React.useState(-1);\n\n // If all objects are removed, display a new input field\n React.useEffect(() => {\n if (showNewInput || formikProps.values.links?.length) {\n return;\n }\n\n setShowNewInput(true);\n }, [formikProps.values.links?.length]);\n\n function onDelete(idx: number) {\n const newLinks = formikProps.values.links?.filter((_: any, i: number) => i !== idx);\n formikProps.setFieldValue('links', newLinks);\n }\n\n const disabledAdd = (!formikProps.values.newLink?.url || !formikProps.values.newLink?.name) && formikProps.isValid ;\n function getDisabledSave(obj: Link) {\n return !obj.name || !obj.url || !formikProps.isValid;\n }\n\n return (\n <>\n <FormField<any>\n label='Links'\n name='data'\n id='data'\n >\n {() => {\n return (\n <>\n {formikProps.values.links?.map((obj: Link, idx: number) => {\n return (\n <div className='align-items-top row w-100' key={obj.id ?? idx}>\n <div className='col'>\n <FormField\n type='text'\n id={`links.${idx}.name`}\n name={`links.${idx}.name`}\n placeholder='Link display name'\n disabled={idx !== editingIndex}\n />\n </div>\n <div className='col'>\n <FormField\n id={`links.${idx}.url`}\n name={`links.${idx}.url`}\n placeholder='Link url'\n disabled={idx !== editingIndex}\n />\n </div>\n <div className={`${styles.add} d-flex ${idx === editingIndex ? 'align-items-baseline' : 'align-items-center'}`}>\n {idx === editingIndex ? (\n <DivButton\n className={`btn btn-dark mb-3 ${getDisabledSave(obj) ? 'disabled' : ''}`}\n onClick={() => setEditingIndex(-1)}\n disabled={getDisabledSave(obj)}\n >\n Save\n </DivButton>\n ) : (\n <div className='cursor-pointer mb-3 d-flex gap-2'>\n <SvgContainer\n className='svg-container'\n svg={EditSvg}\n onClick={() => setEditingIndex(idx)}\n />\n <SvgContainer\n className='svg-container text-danger'\n svg={DeleteSvg}\n onClick={() => {\n onDelete(idx);\n setEditingIndex(-1);\n }}\n />\n </div>\n )}\n \n </div>\n </div>\n );\n })}\n \n {showNewInput && (\n <div className='d-flex align-items-top row w-100'>\n <div className='col'>\n <FormField\n type='text'\n id='newLink.name'\n name='newLink.name'\n placeholder='Link display name'\n value={formikProps.values.newLink?.name || ''}\n />\n </div>\n <div className='col'>\n <FormField\n type='text'\n id='newLink.url'\n name='newLink.url'\n placeholder='URL'\n value={formikProps.values.newLink?.url || ''}\n />\n </div>\n <div className={styles.add}>\n <DivButton\n disabled={!formikProps.values.newLink?.url || !formikProps.values.newLink?.name}\n className={`btn btn-dark mb-3 ${disabledAdd ? 'disabled' : ''}`}\n onClick={() => {\n formikProps.setFieldValue('links', [ ...formikProps.values.links || [], formikProps.values.newLink ]);\n formikProps.setFieldValue('newLink', undefined);\n setShowNewInput(false);\n setEditingIndex(-1);\n }}\n >\n Add\n </DivButton>\n </div>\n \n </div>\n )}\n </>\n );\n }}\n </FormField>\n\n {!showNewInput && (\n <DivButton onClick={() => setShowNewInput(true)} className='info-link mb-3 mt-n3'>\n + Add another link\n </DivButton>\n )}\n </>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { ImageType } from 'libs/shared/enums/Images';\n\nimport { ImageSelect } from 'shared/components';\nimport { ColorSelect } from 'shared/components/forms/color-select/ColorSelect';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { CompanyLinksForm } from 'apps/companies/components/company-links-form/CompanyLinksForm';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { MAX_COMPANY_DESCRIPTION_LENGTH } from 'apps/companies/utils';\n\ninterface EditCompanyFormProps {\n isNew: boolean;\n}\n\nexport function EditCompanyForm(props: EditCompanyFormProps): JSX.Element {\n const formikProps = useFormikContext<CreateOrUpdateCompanyRequest>();\n\n return (\n <Form>\n <FormField<CreateOrUpdateCompanyRequest>\n label='Name'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder='Enter a name for this company'\n autoFocus\n />\n\n <FormField<CreateOrUpdateCompanyRequest>\n as='textarea'\n rows={2}\n label='Description'\n name='description'\n id='description'\n value={formikProps.values.description}\n placeholder='Enter a description for this company'\n maxLength={MAX_COMPANY_DESCRIPTION_LENGTH}\n showCharacterCounter\n />\n\n <CompanyLinksForm />\n \n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Covers}\n fieldName='cover'\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Logos}\n fieldName='logo'\n label='Logo'\n overrideDimensions={{ width: 512, height: 512 }}\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Banners}\n fieldName='banner'\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ColorSelect\n label='Background color'\n fieldName='metadata.colour'\n />\n\n <FormButtons isNew={props.isNew} />\n </Form>\n );\n}\n","import * as React from 'react';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Company, Link } from 'libs/shared/interfaces';\n\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { CompanyValidationSchema } from 'apps/companies/utils';\n\nimport { EditCompanyForm } from './EditCompanyForm';\n\ninterface EditCompanyProps {\n saveCompany: (data: CreateOrUpdateCompanyRequest, onDone: () => void) => void;\n company?: Company;\n}\n\ntype CompanyFormData = Omit<Company, 'links'> & {\n links?: Link[]\n};\n\nexport function EditCompany(props: EditCompanyProps): JSX.Element {\n return (\n <FormWrapper<CreateOrUpdateCompanyRequest, CompanyFormData>\n initialValues={{ ...props.company, links: props.company?.links?.data || []}}\n validationSchema={CompanyValidationSchema}\n onSubmit={props.saveCompany}\n >\n <EditCompanyForm isNew={!(props.company && props.company.id)} />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Company, CuratorUser } from 'libs/shared/interfaces';\n\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { EditCompany } from 'apps/companies/components';\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\ninterface EditCompanyViewProps {\n companyId: string;\n context: CuratorProductContext;\n}\n\nexport function EditCompanyView(props: EditCompanyViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n async function saveCompany(\n formData: CreateOrUpdateCompanyRequest,\n onDone: () => void\n ) {\n const onSuccess = () => {\n onDone();\n\n alerts.success('Successfully updated the company.');\n };\n\n // delete link\n const linksToBeDeleted = company.data.links.data.filter(l =>\n !formData.links.find(link => link.id === l.id));\n if (linksToBeDeleted.length) {\n const promises = linksToBeDeleted.map(link => {\n return fetchAsync(CompanyRequests.deleteCompanyLink(link.id));\n });\n await Promise.all(promises);\n }\n\n // update link\n const linksToBeUpdated = formData.links.filter(l => {\n return company.data.links.data.find(link =>\n link.id === l.id && (link.name !== l.name || link.url !== l.url));\n });\n\n if (linksToBeUpdated.length) {\n const promises = linksToBeUpdated.map(link => {\n return fetchAsync(CompanyRequests.updateCompanyLink(link.id, link));\n });\n await Promise.all(promises);\n }\n // create link\n const linksToBeCreated = formData.links.filter(l => !l.id);\n if (linksToBeCreated.length) {\n const promises = linksToBeCreated.map(link => {\n return fetchAsync(CompanyRequests.createCompanyLink(props.companyId, link));\n });\n await Promise.all(promises);\n }\n\n const data = ObjectHelper.omit(formData, ['links']);\n\n fetchAsync(CompanyRequests.updateCompany(\n props.companyId,\n data,\n onSuccess,\n onDone\n ));\n }\n\n const appLinks = getCompanyAppLinks(props.context);\n\n return (\n <>\n {!!currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={appLinks.editCompany(props.companyId).action}\n currentUser={currentUser.data}\n context={props.context}\n />\n }\n {!!company.data &&\n <EditCompany\n company={company.data}\n saveCompany={saveCompany}\n />\n }\n </>\n );\n}\n","import React from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Company, CuratorUser, Tag } from 'libs/shared/interfaces';\n\nimport { CurationTags } from 'shared/components/curation-tags/CurationTags';\nimport { Actions } from 'shared/constants';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\n\ninterface EditCompanyCurationView {\n companyId: string;\n}\n\nexport function EditCompanyCurationView(props: EditCompanyCurationView) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n \n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags());\n const selectedCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.selectedCurationTags(props.companyId));\n const fetch = useGetFetch();\n\n function addCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.addTag(props.companyId, tag, success, error));\n }\n\n function removeCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.removeTag(props.companyId, tag, success, error));\n }\n\n return (\n <>\n {!!currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={Actions.Companies.EDIT_COMPANY_CURATION}\n currentUser={currentUser.data}\n context='clickview'\n />\n }\n {!!company.data && !!allCurationTags.data && !!selectedCurationTags.data &&\n <CurationTags\n id={props.companyId}\n heading={company.data.name}\n curationTags={allCurationTags.data}\n selectedCurationTags={selectedCurationTags.data}\n addCurationTag={addCurationTag}\n removeCurationTag={removeCurationTag}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Company, Tag } from 'libs/shared/interfaces';\n\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { EditCompany } from 'apps/companies/components';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\ninterface NewCompanyViewProps {\n context: CuratorProductContext;\n}\n\nexport function NewCompanyView(props: NewCompanyViewProps): JSX.Element {\n const alerts = useAlerts();\n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags(props.context === 'live'));\n\n const fetchAsync = Flight.useGetFetchAsync();\n const appLinks = getCompanyAppLinks(props.context);\n\n async function createCompany(data: CreateOrUpdateCompanyRequest, onDone: () => void): Promise<void> {\n const newCompany = await fetchAsync<Company>(CompanyRequests.createCompany(data));\n\n if (data.links.length) {\n const links = data.links.map(link => {\n return fetchAsync(CompanyRequests.createCompanyLink(newCompany.id, link));\n });\n \n await Promise.all(links);\n }\n\n if (props.context === 'live') {\n const isStreamableCuratedTag = allCurationTags.data.find(tag => tag.name === CurationTag.STREAMABLE_CURATED);\n\n await fetchAsync(TagRequests.addTag(newCompany.id, isStreamableCuratedTag));\n }\n\n alerts.success('Successfully created a company.');\n\n Core.AppLinkHelper.trigger(appLinks.companies());\n\n onDone();\n }\n\n return (\n <EditCompany saveCompany={createCompany} />\n );\n}\n","import * as React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { Company, CompanyCollection, Tag } from 'libs/shared/interfaces';\n\nimport { ObjectCollection } from 'shared/components';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\nconst SEARCH_URL = '/api/domain/v1/search/companies/instant/raw';\nconst STREAMABLE_SEARCH_URL = '/api/search/v1/search/content/raw';\n\ninterface CompaniesViewProps {\n cursor?: string;\n context: CuratorProductContext;\n}\n\nexport function CompaniesView(props: CompaniesViewProps): JSX.Element {\n const curationTags = Flight.useBasicFetch<Tag[]>(\n props.context === 'live' && TagRequests.curationTags(props.context === 'live')\n );\n const companiesResponse = Flight.useBasicFetch<CompanyCollection>(getCompanyRequest());\n\n const appLinks = getCompanyAppLinks(props.context);\n\n const goToCompany = (company: Company) => Core.AppLinkHelper.trigger(appLinks.editCompany(company.id));\n\n function getCompanyRequest() {\n if (props.context === 'live') {\n const streamableCurationTag = curationTags.data?.find(tag => tag.name === CurationTag.STREAMABLE_CURATED);\n\n return streamableCurationTag && CompanyRequests.getCompanies(props.cursor, streamableCurationTag?.id);\n }\n\n return CompanyRequests.getCompanies(props.cursor);\n }\n\n function getRemoteUrl(query: string): string {\n if (props.context === 'live')\n return UrlHelper.urlBuilder(STREAMABLE_SEARCH_URL, {\n index: 'company',\n query,\n [`filters.curationTag`]: CurationTag.STREAMABLE_CURATED\n });\n \n return `${SEARCH_URL}?q=${query}`;\n }\n\n function formatRemoteData(data: any): any[] {\n if (props.context === 'live')\n return data?.results.map((result: any) => ({\n id: result.id,\n name: ArrayHelper.first(result.name),\n permissionValues: result.permissionValues\n }));\n\n return data;\n }\n\n return (\n <>\n <div className='pb-3 w-50'>\n <SearchBar\n placeholder='Search for a company'\n onSuggestionSelected={goToCompany}\n getRemoteUrl={(q: string) => getRemoteUrl(q)}\n formatRemoteSuggestions={(data: any) => formatRemoteData(data)}\n activationLength={2}\n />\n </div>\n <ObjectCollection\n collection={companiesResponse && companiesResponse.data}\n columns={[{ accessor: 'name', header: 'Name', appLink: c => appLinks.editCompany(c.id) }]}\n collectionAppLink={appLinks.companies()}\n newObjectAppLink={appLinks.newCompany()}\n objectName='Company'\n />\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Djgwr16q.chunk.js","names":[],"sources":["../../../../../src/apps/companies/utils/CompanyValidation.ts","../../../../../src/apps/companies/components/company-links-form/company-links-form.module.scss","../../../../../src/apps/companies/components/company-links-form/CompanyLinksForm.tsx","../../../../../src/apps/companies/components/edit-company/EditCompanyForm.tsx","../../../../../src/apps/companies/components/edit-company/EditCompany.tsx","../../../../../src/apps/companies/views/edit-company/EditCompanyView.tsx","../../../../../src/apps/companies/views/edit-company-curation/EditCompanyCurationView.tsx","../../../../../src/apps/companies/views/new-company/NewCompanyView.tsx","../../../../../src/apps/companies/views/companies/CompaniesView.tsx"],"sourcesContent":["import * as Yup from 'yup';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Link } from 'libs/shared/interfaces';\n\nimport { ImageValidationSchema } from 'shared/utils/validation/ImageValidationSchema';\n\n/**\n * Value based on the longest streamable learning description (3668 chars) - Sha\n */\nexport const MAX_COMPANY_DESCRIPTION_LENGTH = 4096;\n\nexport const CompanyValidationSchema = Yup.object().shape<HashObject & { newLink: Link }>({\n name: Yup.string()\n .trim()\n .max(255, 'Name is too long')\n .required('Name is required')\n .default(''),\n\n logo: ImageValidationSchema,\n\n banner: ImageValidationSchema,\n\n cover: ImageValidationSchema,\n\n metadata: Yup.object({\n colour: Yup.string()\n }),\n\n description: Yup.string()\n .trim()\n .default('')\n .max(MAX_COMPANY_DESCRIPTION_LENGTH, `Descriptions cannot exceed ${MAX_COMPANY_DESCRIPTION_LENGTH} characters`),\n\n links: Yup.array(Yup.object()\n .shape({\n name: Yup.string()\n .max(255, () => 'Please provide a shorter name')\n .required(() => 'Name is required')\n .min(1, () => 'Name is required'),\n url: Yup.string()\n .url('Must be a valid URL').max(16000, () => 'Please provide a shorter URL')\n }))\n .nullable()\n .default([]),\n\n newLink: Yup.object()\n .default(undefined)\n .shape({\n name: Yup.string()\n .default('')\n .max(255, () => 'Please provide a shorter name')\n .required(() => 'Name is required')\n .min(1, () => 'Name is required'),\n url: Yup.string()\n .url('Must be a valid URL')\n .max(16000, () => 'Please provide a shorter URL')\n })\n\n}).noUnknown();\n",":local {\n .add {\n flex: 0 0 0;\n margin-right: -1.25rem; //offset flex gutter\n }\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\nimport { Link } from 'libs/shared/interfaces';\n\nimport styles from './company-links-form.module.scss';\n\nexport function CompanyLinksForm(): JSX.Element {\n const formikProps = useFormikContext<any>();\n const [ showNewInput, setShowNewInput ] = React.useState(!formikProps.values.links?.length);\n const [ editingIndex, setEditingIndex ] = React.useState(-1);\n\n // If all objects are removed, display a new input field\n React.useEffect(() => {\n if (showNewInput || formikProps.values.links?.length) {\n return;\n }\n\n setShowNewInput(true);\n }, [formikProps.values.links?.length]);\n\n function onDelete(idx: number) {\n const newLinks = formikProps.values.links?.filter((_: any, i: number) => i !== idx);\n formikProps.setFieldValue('links', newLinks);\n }\n\n const disabledAdd = (!formikProps.values.newLink?.url || !formikProps.values.newLink?.name) && formikProps.isValid ;\n function getDisabledSave(obj: Link) {\n return !obj.name || !obj.url || !formikProps.isValid;\n }\n\n return (\n <>\n <FormField<any>\n label='Links'\n name='data'\n id='data'\n >\n {() => {\n return (\n <>\n {formikProps.values.links?.map((obj: Link, idx: number) => {\n return (\n <div className='align-items-top row w-100' key={obj.id ?? idx}>\n <div className='col'>\n <FormField\n type='text'\n id={`links.${idx}.name`}\n name={`links.${idx}.name`}\n placeholder='Link display name'\n disabled={idx !== editingIndex}\n />\n </div>\n <div className='col'>\n <FormField\n id={`links.${idx}.url`}\n name={`links.${idx}.url`}\n placeholder='Link url'\n disabled={idx !== editingIndex}\n />\n </div>\n <div className={`${styles.add} d-flex ${idx === editingIndex ? 'align-items-baseline' : 'align-items-center'}`}>\n {idx === editingIndex ? (\n <DivButton\n className={`btn btn-dark mb-3 ${getDisabledSave(obj) ? 'disabled' : ''}`}\n onClick={() => setEditingIndex(-1)}\n disabled={getDisabledSave(obj)}\n >\n Save\n </DivButton>\n ) : (\n <div className='cursor-pointer mb-3 d-flex gap-2'>\n <SvgContainer\n className='svg-container'\n svg={EditSvg}\n onClick={() => setEditingIndex(idx)}\n />\n <SvgContainer\n className='svg-container text-danger'\n svg={DeleteSvg}\n onClick={() => {\n onDelete(idx);\n setEditingIndex(-1);\n }}\n />\n </div>\n )}\n \n </div>\n </div>\n );\n })}\n \n {showNewInput && (\n <div className='d-flex align-items-top row w-100'>\n <div className='col'>\n <FormField\n type='text'\n id='newLink.name'\n name='newLink.name'\n placeholder='Link display name'\n value={formikProps.values.newLink?.name || ''}\n />\n </div>\n <div className='col'>\n <FormField\n type='text'\n id='newLink.url'\n name='newLink.url'\n placeholder='URL'\n value={formikProps.values.newLink?.url || ''}\n />\n </div>\n <div className={styles.add}>\n <DivButton\n disabled={!formikProps.values.newLink?.url || !formikProps.values.newLink?.name}\n className={`btn btn-dark mb-3 ${disabledAdd ? 'disabled' : ''}`}\n onClick={() => {\n formikProps.setFieldValue('links', [ ...formikProps.values.links || [], formikProps.values.newLink ]);\n formikProps.setFieldValue('newLink', undefined);\n setShowNewInput(false);\n setEditingIndex(-1);\n }}\n >\n Add\n </DivButton>\n </div>\n \n </div>\n )}\n </>\n );\n }}\n </FormField>\n\n {!showNewInput && (\n <DivButton onClick={() => setShowNewInput(true)} className='info-link mb-3 mt-n3'>\n + Add another link\n </DivButton>\n )}\n </>\n );\n}\n","import * as React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { ImageType } from 'libs/shared/enums/Images';\n\nimport { ImageSelect } from 'shared/components';\nimport { ColorSelect } from 'shared/components/forms/color-select/ColorSelect';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { CompanyLinksForm } from 'apps/companies/components/company-links-form/CompanyLinksForm';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { MAX_COMPANY_DESCRIPTION_LENGTH } from 'apps/companies/utils';\n\ninterface EditCompanyFormProps {\n isNew: boolean;\n}\n\nexport function EditCompanyForm(props: EditCompanyFormProps): JSX.Element {\n const formikProps = useFormikContext<CreateOrUpdateCompanyRequest>();\n\n return (\n <Form>\n <FormField<CreateOrUpdateCompanyRequest>\n label='Name'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder='Enter a name for this company'\n autoFocus\n />\n\n <FormField<CreateOrUpdateCompanyRequest>\n as='textarea'\n rows={2}\n label='Description'\n name='description'\n id='description'\n value={formikProps.values.description}\n placeholder='Enter a description for this company'\n maxLength={MAX_COMPANY_DESCRIPTION_LENGTH}\n showCharacterCounter\n />\n\n <CompanyLinksForm />\n \n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Covers}\n fieldName='cover'\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Logos}\n fieldName='logo'\n label='Logo'\n overrideDimensions={{ width: 512, height: 512 }}\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ImageSelect<CreateOrUpdateCompanyRequest>\n imageType={ImageType.Banners}\n fieldName='banner'\n uploadAppLink={{ application: AppChannels.COMPANIES, action: Actions.Companies.UPLOAD_IMAGE }}\n />\n <ColorSelect\n label='Background color'\n fieldName='metadata.colour'\n />\n\n <FormButtons isNew={props.isNew} />\n </Form>\n );\n}\n","import * as React from 'react';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Company, Link } from 'libs/shared/interfaces';\n\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { CompanyValidationSchema } from 'apps/companies/utils';\n\nimport { EditCompanyForm } from './EditCompanyForm';\n\ninterface EditCompanyProps {\n saveCompany: (data: CreateOrUpdateCompanyRequest, onDone: () => void) => void;\n company?: Company;\n}\n\ntype CompanyFormData = Omit<Company, 'links'> & {\n links?: Link[]\n};\n\nexport function EditCompany(props: EditCompanyProps): JSX.Element {\n return (\n <FormWrapper<CreateOrUpdateCompanyRequest, CompanyFormData>\n initialValues={{ ...props.company, links: props.company?.links?.data || []}}\n validationSchema={CompanyValidationSchema}\n onSubmit={props.saveCompany}\n >\n <EditCompanyForm isNew={!(props.company && props.company.id)} />\n </FormWrapper>\n );\n}\n","import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Company, CuratorUser } from 'libs/shared/interfaces';\n\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { EditCompany } from 'apps/companies/components';\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\ninterface EditCompanyViewProps {\n companyId: string;\n context: CuratorProductContext;\n}\n\nexport function EditCompanyView(props: EditCompanyViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n async function saveCompany(\n formData: CreateOrUpdateCompanyRequest,\n onDone: () => void\n ) {\n const onSuccess = () => {\n onDone();\n\n alerts.success('Successfully updated the company.');\n };\n\n // delete link\n const linksToBeDeleted = company.data.links.data.filter(l =>\n !formData.links.find(link => link.id === l.id));\n if (linksToBeDeleted.length) {\n const promises = linksToBeDeleted.map(link => {\n return fetchAsync(CompanyRequests.deleteCompanyLink(link.id));\n });\n await Promise.all(promises);\n }\n\n // update link\n const linksToBeUpdated = formData.links.filter(l => {\n return company.data.links.data.find(link =>\n link.id === l.id && (link.name !== l.name || link.url !== l.url));\n });\n\n if (linksToBeUpdated.length) {\n const promises = linksToBeUpdated.map(link => {\n return fetchAsync(CompanyRequests.updateCompanyLink(link.id, link));\n });\n await Promise.all(promises);\n }\n // create link\n const linksToBeCreated = formData.links.filter(l => !l.id);\n if (linksToBeCreated.length) {\n const promises = linksToBeCreated.map(link => {\n return fetchAsync(CompanyRequests.createCompanyLink(props.companyId, link));\n });\n await Promise.all(promises);\n }\n\n const data = ObjectHelper.omit(formData, ['links']);\n\n fetchAsync(CompanyRequests.updateCompany(\n props.companyId,\n data,\n onSuccess,\n onDone\n ));\n }\n\n const appLinks = getCompanyAppLinks(props.context);\n\n return (\n <>\n {!!currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={appLinks.editCompany(props.companyId).action}\n currentUser={currentUser.data}\n context={props.context}\n />\n }\n {!!company.data &&\n <EditCompany\n company={company.data}\n saveCompany={saveCompany}\n />\n }\n </>\n );\n}\n","import React from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Company, CuratorUser, Tag } from 'libs/shared/interfaces';\n\nimport { CurationTags } from 'shared/components/curation-tags/CurationTags';\nimport { Actions } from 'shared/constants';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\n\ninterface EditCompanyCurationView {\n companyId: string;\n}\n\nexport function EditCompanyCurationView(props: EditCompanyCurationView) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n \n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags());\n const selectedCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.selectedCurationTags(props.companyId));\n const fetch = useGetFetch();\n\n function addCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.addTag(props.companyId, tag, success, error));\n }\n\n function removeCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.removeTag(props.companyId, tag, success, error));\n }\n\n return (\n <>\n {!!currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={Actions.Companies.EDIT_COMPANY_CURATION}\n currentUser={currentUser.data}\n context='clickview'\n />\n }\n {!!company.data && !!allCurationTags.data && !!selectedCurationTags.data &&\n <CurationTags\n id={props.companyId}\n heading={company.data.name}\n curationTags={allCurationTags.data}\n selectedCurationTags={selectedCurationTags.data}\n addCurationTag={addCurationTag}\n removeCurationTag={removeCurationTag}\n />\n }\n </>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Company, Tag } from 'libs/shared/interfaces';\n\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { EditCompany } from 'apps/companies/components';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\ninterface NewCompanyViewProps {\n context: CuratorProductContext;\n}\n\nexport function NewCompanyView(props: NewCompanyViewProps): JSX.Element {\n const alerts = useAlerts();\n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags(props.context === 'live'));\n\n const fetchAsync = Flight.useGetFetchAsync();\n const appLinks = getCompanyAppLinks(props.context);\n\n async function createCompany(data: CreateOrUpdateCompanyRequest, onDone: () => void): Promise<void> {\n const newCompany = await fetchAsync<Company>(CompanyRequests.createCompany(data));\n\n if (data.links.length) {\n const links = data.links.map(link => {\n return fetchAsync(CompanyRequests.createCompanyLink(newCompany.id, link));\n });\n \n await Promise.all(links);\n }\n\n if (props.context === 'live') {\n const isStreamableCuratedTag = allCurationTags.data.find(tag => tag.name === CurationTag.STREAMABLE_CURATED);\n\n await fetchAsync(TagRequests.addTag(newCompany.id, isStreamableCuratedTag));\n }\n\n alerts.success('Successfully created a company.');\n\n Core.AppLinkHelper.trigger(appLinks.companies());\n\n onDone();\n }\n\n return (\n <EditCompany saveCompany={createCompany} />\n );\n}\n","import * as React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { Company, CompanyCollection, Tag } from 'libs/shared/interfaces';\n\nimport { ObjectCollection } from 'shared/components';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\nimport { CuratorProductContext } from 'shared/interfaces/models/CuratorProductContext';\n\nimport { CompanyRequests } from 'apps/companies/flight-requests';\nimport { getCompanyAppLinks } from 'apps/companies/utils/getCompanyAppLinks';\n\nconst SEARCH_URL = '/api/domain/v1/search/companies/instant/raw';\nconst STREAMABLE_SEARCH_URL = '/api/search/v1/search/content/raw';\n\ninterface CompaniesViewProps {\n cursor?: string;\n context: CuratorProductContext;\n}\n\nexport function CompaniesView(props: CompaniesViewProps): JSX.Element {\n const curationTags = Flight.useBasicFetch<Tag[]>(\n props.context === 'live' && TagRequests.curationTags(props.context === 'live')\n );\n const companiesResponse = Flight.useBasicFetch<CompanyCollection>(getCompanyRequest());\n\n const appLinks = getCompanyAppLinks(props.context);\n\n const goToCompany = (company: Company) => Core.AppLinkHelper.trigger(appLinks.editCompany(company.id));\n\n function getCompanyRequest() {\n if (props.context === 'live') {\n const streamableCurationTag = curationTags.data?.find(tag => tag.name === CurationTag.STREAMABLE_CURATED);\n\n return streamableCurationTag && CompanyRequests.getCompanies(props.cursor, streamableCurationTag?.id);\n }\n\n return CompanyRequests.getCompanies(props.cursor);\n }\n\n function getRemoteUrl(query: string): string {\n if (props.context === 'live')\n return UrlHelper.urlBuilder(STREAMABLE_SEARCH_URL, {\n index: 'company',\n query,\n [`filters.curationTag`]: CurationTag.STREAMABLE_CURATED\n });\n \n return `${SEARCH_URL}?q=${query}`;\n }\n\n function formatRemoteData(data: any): any[] {\n if (props.context === 'live')\n return data?.results.map((result: any) => ({\n id: result.id,\n name: ArrayHelper.first(result.name),\n permissionValues: result.permissionValues\n }));\n\n return data;\n }\n\n return (\n <>\n <div className='pb-3 w-50'>\n <SearchBar\n placeholder='Search for a company'\n onSuggestionSelected={goToCompany}\n getRemoteUrl={(q: string) => getRemoteUrl(q)}\n formatRemoteSuggestions={(data: any) => formatRemoteData(data)}\n activationLength={2}\n />\n </div>\n <ObjectCollection\n collection={companiesResponse && companiesResponse.data}\n columns={[{ accessor: 'name', header: 'Name', appLink: c => appLinks.editCompany(c.id) }]}\n collectionAppLink={appLinks.companies()}\n newObjectAppLink={appLinks.newCompany()}\n objectName='Company'\n />\n </>\n );\n}\n"],"mappings":"mvCAWa,EAAiC,KAEjC,EAAA,EAA8B,OAAO,CAAC,CAAC,MAAsC,CACxF,KAAA,EAAU,OAAO,CAAC,CACf,KAAK,CAAC,CACN,IAAI,IAAK,kBAAkB,CAAC,CAC5B,SAAS,kBAAkB,CAAC,CAC5B,QAAQ,EAAE,EAEb,KAAM,EAEN,OAAQ,EAER,MAAO,EAEP,SAAA,EAAc,OAAO,CACnB,OAAA,EAAY,OAAO,CACrB,CAAC,EAED,YAAA,EAAiB,OAAO,CAAC,CACtB,KAAK,CAAC,CACN,QAAQ,EAAE,CAAC,CACX,IAAI,EAAgC,8BAA8B,EAA+B,YAAY,EAEhH,MAAA,EAAW,MAAA,EAAU,OAAO,CAAC,CAC1B,MAAM,CACL,KAAA,EAAU,OAAO,CAAC,CACf,IAAI,QAAW,+BAA+B,CAAC,CAC/C,aAAe,kBAAkB,CAAC,CAClC,IAAI,MAAS,kBAAkB,EAClC,IAAA,EAAS,OAAO,CAAC,CACd,IAAI,qBAAqB,CAAC,CAAC,IAAI,SAAa,8BAA8B,CAC/E,CAAC,CAAC,CAAC,CACF,SAAS,CAAC,CACV,QAAQ,CAAC,CAAC,EAEb,QAAA,EAAa,OAAO,CAAC,CAClB,QAAQ,IAAA,EAAS,CAAC,CAClB,MAAM,CACL,KAAA,EAAU,OAAO,CAAC,CACf,QAAQ,EAAE,CAAC,CACX,IAAI,QAAW,+BAA+B,CAAC,CAC/C,aAAe,kBAAkB,CAAC,CAClC,IAAI,MAAS,kBAAkB,EAClC,IAAA,EAAS,OAAO,CAAC,CACd,IAAI,qBAAqB,CAAC,CAC1B,IAAI,SAAa,8BAA8B,CACpD,CAAC,CAEL,CAAC,CAAC,CAAC,UAAU,+BEhDb,SAAgB,GAAgC,CAC9C,IAAM,EAAc,EAAsB,EACpC,CAAE,EAAc,GAAA,EAA0B,SAAS,CAAC,EAAY,OAAO,OAAO,MAAM,EACpF,CAAE,EAAc,GAAA,EAA0B,SAAS,EAAE,EAG3D,EAAM,cAAgB,CAChB,GAAgB,EAAY,OAAO,OAAO,QAI9C,EAAgB,EAAI,CACtB,EAAG,CAAC,EAAY,OAAO,OAAO,MAAM,CAAC,EAErC,SAAS,EAAS,EAAa,CAC7B,IAAM,EAAW,EAAY,OAAO,OAAO,QAAQ,EAAQ,IAAc,IAAM,CAAG,EAClF,EAAY,cAAc,QAAS,CAAQ,CAC7C,CAEA,IAAM,GAAe,CAAC,EAAY,OAAO,SAAS,KAAO,CAAC,EAAY,OAAO,SAAS,OAAS,EAAY,QAC3G,SAAS,EAAgB,EAAW,CAClC,MAAO,CAAC,EAAI,MAAQ,CAAC,EAAI,KAAO,CAAC,EAAY,OAC/C,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,QACN,KAAK,OACL,GAAG,qBAIC,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAY,OAAO,OAAO,KAAK,EAAW,KAEvC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,qCAAf,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAK,OACL,GAAI,SAAS,EAAI,OACjB,KAAM,SAAS,EAAI,OACnB,YAAY,oBACZ,SAAU,IAAQ,CACnB,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,SAAS,EAAI,MACjB,KAAM,SAAS,EAAI,MACnB,YAAY,WACZ,SAAU,IAAQ,CACnB,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,GAAG,EAAO,IAAI,UAAU,IAAQ,EAAe,uBAAyB,gCACrF,IAAQ,GACP,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,qBAAqB,EAAgB,CAAG,EAAI,WAAa,KACpE,YAAe,EAAgB,EAAE,EACjC,SAAU,EAAgB,CAAG,WAC9B,MAEU,CAAA,GAEX,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,4CAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAU,gBACV,IAAK,EACL,YAAe,EAAgB,CAAG,CACnC,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAU,4BACV,IAAK,EACL,YAAe,CACb,EAAS,CAAG,EACZ,EAAgB,EAAE,CACpB,CACD,CAAA,CACE,GAGJ,CAAA,CACF,GA9C2C,EAAI,IAAM,CA8CrD,CAER,EAEA,IACC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,4CAAf,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAK,OACL,GAAG,eACH,KAAK,eACL,YAAY,oBACZ,MAAO,EAAY,OAAO,SAAS,MAAQ,EAC5C,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,gBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAK,OACL,GAAG,cACH,KAAK,cACL,YAAY,MACZ,MAAO,EAAY,OAAO,SAAS,KAAO,EAC3C,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAO,cACrB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,SAAU,CAAC,EAAY,OAAO,SAAS,KAAO,CAAC,EAAY,OAAO,SAAS,KAC3E,UAAW,qBAAqB,EAAc,WAAa,KAC3D,YAAe,CACb,EAAY,cAAc,QAAS,CAAE,GAAG,EAAY,OAAO,OAAS,CAAC,EAAG,EAAY,OAAO,OAAQ,CAAC,EACpG,EAAY,cAAc,UAAW,IAAA,EAAS,EAC9C,EAAgB,EAAK,EACrB,EAAgB,EAAE,CACpB,WACD,KAEU,CAAA,CACR,CAAA,CAEF,GAEP,CAAA,CAAA,CAGG,CAAA,EAEV,CAAC,IACA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,YAAe,EAAgB,EAAI,EAAG,UAAU,gCAAuB,oBAEvE,CAAA,CAEb,CAAA,CAAA,CAEN,CChIA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAc,EAA+C,EAEnE,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,OACN,KAAK,OACL,GAAG,OACH,MAAO,EAAY,OAAO,KAC1B,YAAY,gCACZ,UAAA,EACD,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAG,WACH,KAAM,EACN,MAAM,cACN,KAAK,cACL,GAAG,cACH,MAAO,EAAY,OAAO,YAC1B,YAAY,uCACZ,UAAW,EACX,qBAAA,EACD,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CAAmB,CAAA,GAEnB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAU,OACrB,UAAU,QACV,cAAe,CAAE,YAAa,EAAY,UAAW,OAAQ,EAAQ,UAAU,YAAa,CAC7F,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAU,MACrB,UAAU,OACV,MAAM,OACN,mBAAoB,CAAE,MAAO,IAAK,OAAQ,GAAI,EAC9C,cAAe,CAAE,YAAa,EAAY,UAAW,OAAQ,EAAQ,UAAU,YAAa,CAC7F,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAU,QACrB,UAAU,SACV,cAAe,CAAE,YAAa,EAAY,UAAW,OAAQ,EAAQ,UAAU,YAAa,CAC7F,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,mBACN,UAAU,iBACX,CAAA,GAED,EAAA,EAAA,IAAA,CAAC,EAAD,CAAa,MAAO,EAAM,KAAQ,CAAA,CAC9B,CAAA,CAAA,CAEV,CCrDA,SAAgB,EAAY,EAAsC,CAChE,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAe,CAAE,GAAG,EAAM,QAAS,MAAO,EAAM,SAAS,OAAO,MAAQ,CAAC,CAAC,EAC1E,iBAAkB,EAClB,SAAU,EAAM,sBAEhB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,MAAO,EAAE,EAAM,SAAW,EAAM,QAAQ,GAAM,CAAA,CACpD,CAAA,CAEjB,CCPA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAS,EAAU,EACnB,EAAa,EAAwB,EAErC,EAAU,EAA8B,EAAgB,WAAW,EAAM,SAAS,CAAC,EACnF,EAAc,EAAkC,EAAa,YAAY,CAAC,EAEhF,eAAe,EACb,EACA,EACA,CACA,IAAM,MAAkB,CACtB,EAAO,EAEP,EAAO,QAAQ,mCAAmC,CACpD,EAGM,EAAmB,EAAQ,KAAK,MAAM,KAAK,OAAO,GACtD,CAAC,EAAS,MAAM,KAAK,GAAQ,EAAK,KAAO,EAAE,EAAE,CAAC,EAChD,GAAI,EAAiB,OAAQ,CAC3B,IAAM,EAAW,EAAiB,IAAI,GAC7B,EAAW,EAAgB,kBAAkB,EAAK,EAAE,CAAC,CAC7D,EACD,MAAM,QAAQ,IAAI,CAAQ,CAC5B,CAGA,IAAM,EAAmB,EAAS,MAAM,OAAO,GACtC,EAAQ,KAAK,MAAM,KAAK,KAAK,GAClC,EAAK,KAAO,EAAE,KAAO,EAAK,OAAS,EAAE,MAAQ,EAAK,MAAQ,EAAE,IAAI,CACnE,EAED,GAAI,EAAiB,OAAQ,CAC3B,IAAM,EAAW,EAAiB,IAAI,GAC7B,EAAW,EAAgB,kBAAkB,EAAK,GAAI,CAAI,CAAC,CACnE,EACD,MAAM,QAAQ,IAAI,CAAQ,CAC5B,CAEA,IAAM,EAAmB,EAAS,MAAM,OAAO,GAAK,CAAC,EAAE,EAAE,EACzD,GAAI,EAAiB,OAAQ,CAC3B,IAAM,EAAW,EAAiB,IAAI,GAC7B,EAAW,EAAgB,kBAAkB,EAAM,UAAW,CAAI,CAAC,CAC3E,EACD,MAAM,QAAQ,IAAI,CAAQ,CAC5B,CAEA,IAAM,EAAO,EAAa,KAAK,EAAU,CAAC,OAAO,CAAC,EAElD,EAAW,EAAgB,cACzB,EAAM,UACN,EACA,EACA,CACF,CAAC,CACH,CAEA,IAAM,EAAW,EAAmB,EAAM,OAAO,EAEjD,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAM,UACjB,aAAc,EAAS,YAAY,EAAM,SAAS,CAAC,CAAC,OACpD,YAAa,EAAY,KACzB,QAAS,EAAM,OAChB,CAAA,EAEF,CAAC,CAAC,EAAQ,OACT,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,EAAQ,KACJ,aACd,CAAA,CAEH,CAAA,CAAA,CAEN,CCjFA,SAAgB,EAAwB,EAAgC,CACtE,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAU,EAA8B,EAAgB,WAAW,EAAM,SAAS,CAAC,EAEnF,EAAkB,EAA4B,EAAY,aAAa,CAAC,EACxE,EAAuB,EAA4B,EAAY,qBAAqB,EAAM,SAAS,CAAC,EACpG,EAAQ,EAAY,EAE1B,SAAS,EAAe,EAAU,EAAqB,EAAmB,CACxE,EAAM,EAAY,OAAO,EAAM,UAAW,EAAK,EAAS,CAAK,CAAC,CAChE,CAEA,SAAS,EAAkB,EAAU,EAAqB,EAAmB,CAC3E,EAAM,EAAY,UAAU,EAAM,UAAW,EAAK,EAAS,CAAK,CAAC,CACnE,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAM,UACjB,aAAc,EAAQ,UAAU,sBAChC,YAAa,EAAY,KACzB,QAAQ,WACT,CAAA,EAEF,CAAC,CAAC,EAAQ,MAAQ,CAAC,CAAC,EAAgB,MAAQ,CAAC,CAAC,EAAqB,OAClE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,EAAM,UACV,QAAS,EAAQ,KAAK,KACtB,aAAc,EAAgB,KAC9B,qBAAsB,EAAqB,KAC3B,iBACG,mBACpB,CAAA,CAEH,CAAA,CAAA,CAEN,CCpCA,SAAgB,EAAe,EAAyC,CACtE,IAAM,EAAS,EAAU,EACnB,EAAkB,EAA4B,EAAY,aAAa,EAAM,UAAY,MAAM,CAAC,EAEhG,EAAa,EAAwB,EACrC,EAAW,EAAmB,EAAM,OAAO,EAEjD,eAAe,EAAc,EAAoC,EAAmC,CAClG,IAAM,EAAa,MAAM,EAAoB,EAAgB,cAAc,CAAI,CAAC,EAEhF,GAAI,EAAK,MAAM,OAAQ,CACrB,IAAM,EAAQ,EAAK,MAAM,IAAI,GACpB,EAAW,EAAgB,kBAAkB,EAAW,GAAI,CAAI,CAAC,CACzE,EAED,MAAM,QAAQ,IAAI,CAAK,CACzB,CAEA,GAAI,EAAM,UAAY,OAAQ,CAC5B,IAAM,EAAyB,EAAgB,KAAK,KAAK,GAAO,EAAI,OAAS,EAAY,kBAAkB,EAE3G,MAAM,EAAW,EAAY,OAAO,EAAW,GAAI,CAAsB,CAAC,CAC5E,CAEA,EAAO,QAAQ,iCAAiC,EAEhD,EAAmB,QAAQ,EAAS,UAAU,CAAC,EAE/C,EAAO,CACT,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAa,YAAa,CAAgB,CAAA,CAE9C,CCrCA,IAAM,EAAa,8CACb,EAAwB,oCAO9B,SAAgB,EAAc,EAAwC,CACpE,IAAM,EAAe,EACnB,EAAM,UAAY,QAAU,EAAY,aAAa,EAAM,UAAY,MAAM,CAC/E,EACM,EAAoB,EAAwC,EAAkB,CAAC,EAE/E,EAAW,EAAmB,EAAM,OAAO,EAE3C,EAAe,GAAA,EAAwC,QAAQ,EAAS,YAAY,EAAQ,EAAE,CAAC,EAErG,SAAS,GAAoB,CAC3B,GAAI,EAAM,UAAY,OAAQ,CAC5B,IAAM,EAAwB,EAAa,MAAM,KAAK,GAAO,EAAI,OAAS,EAAY,kBAAkB,EAExG,OAAO,GAAyB,EAAgB,aAAa,EAAM,OAAQ,GAAuB,EAAE,CACtG,CAEA,OAAO,EAAgB,aAAa,EAAM,MAAM,CAClD,CAEA,SAAS,EAAa,EAAuB,CAQ3C,OAPI,EAAM,UAAY,OACb,EAAU,WAAW,EAAuB,CACjD,MAAO,UACP,QACC,sBAAwB,EAAY,kBACvC,CAAC,EAEI,GAAG,EAAW,KAAK,GAC5B,CAEA,SAAS,EAAiB,EAAkB,CAQ1C,OAPI,EAAM,UAAY,OACb,GAAM,QAAQ,IAAK,IAAiB,CACzC,GAAI,EAAO,GACX,KAAM,EAAY,MAAM,EAAO,IAAI,EACnC,iBAAkB,EAAO,gBAC3B,EAAE,EAEG,CACT,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,uBACZ,qBAAsB,EACtB,aAAe,GAAc,EAAa,CAAC,EAC3C,wBAA0B,GAAc,EAAiB,CAAI,EAC7D,iBAAkB,CACnB,CAAA,CACE,CAAA,GACL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,GAAqB,EAAkB,KACnD,QAAS,CAAC,CAAE,SAAU,OAAQ,OAAQ,OAAQ,QAAS,GAAK,EAAS,YAAY,EAAE,EAAE,CAAE,CAAC,EACxF,kBAAmB,EAAS,UAAU,EACtC,iBAAkB,EAAS,WAAW,EACtC,WAAW,SACZ,CAAA,CACD,CAAA,CAAA,CAEN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{g as i}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{g as i}from"./GpDEun8c2.chunk.js";e();var a=t(),o=e=>t=>t.appLink.action===e;function s(e){let t=r.CV_LIVE,s=n.CvLive;return(0,a.jsx)(`div`,{className:`py-2`,children:(0,a.jsx)(i,{tabs:[{label:`Edit video details`,appLink:{application:t,action:s.EDIT_VIDEO,args:[e.videoId]}},{label:`Topics`,appLink:{application:t,action:s.EDIT_VIDEO_CLASSIFICATIONS,args:[e.videoId]}},{label:`Audiences`,appLink:{application:t,action:s.EDIT_VIDEO_AUDIENCES,args:[e.videoId]}},{label:`Glance / POIs`,appLink:{application:t,action:s.EDIT_VIDEO_GLANCE,args:[e.videoId]}},{label:`Tags`,appLink:{application:t,action:s.EDIT_VIDEO_TAGS,args:[e.videoId]}},{label:`Resources`,appLink:{application:t,action:s.EDIT_VIDEO_RESOURCES,args:[e.videoId]}}],isItemActive:o(e.activeAction)})})}export{s as t};
|
|
2
|
+
//# sourceMappingURL=DjnvbVQs.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DjnvbVQs.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/components/video-nav/CvLiveVideoNav.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Tabs } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { NavItem } from 'shared/interfaces';\n\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\n\ninterface CvLiveVideoNavProps {\n videoId: string;\n activeAction: string;\n}\n\nexport function CvLiveVideoNav(props: CvLiveVideoNavProps): React.ReactElement {\n const application = AppChannels.CV_LIVE;\n const actions = Actions.CvLive;\n\n const tabs = [\n {\n label: 'Edit video details',\n appLink: { application, action: actions.EDIT_VIDEO, args: [props.videoId]}\n },\n {\n label: 'Topics',\n appLink: { application, action: actions.EDIT_VIDEO_CLASSIFICATIONS, args: [props.videoId]}\n },\n {\n label: 'Audiences',\n appLink: { application, action: actions.EDIT_VIDEO_AUDIENCES, args: [props.videoId]}\n },\n {\n label: 'Glance / POIs',\n appLink: { application, action: actions.EDIT_VIDEO_GLANCE, args: [props.videoId]}\n },\n {\n label: 'Tags',\n appLink: { application, action: actions.EDIT_VIDEO_TAGS, args: [props.videoId]}\n },\n {\n label: 'Resources',\n appLink: { application, action: actions.EDIT_VIDEO_RESOURCES, args: [props.videoId]}\n }\n ];\n\n return (\n <div className='py-2'>\n <Tabs\n tabs={tabs}\n isItemActive={isItemActive(props.activeAction)}\n />\n </div>\n );\n}\n"],"mappings":"kNAMM,EAAgB,GAA0B,GAAkB,EAAK,QAAQ,SAAW,EAO1F,SAAgB,EAAe,EAAgD,CAC7E,IAAM,EAAc,EAAY,QAC1B,EAAU,EAAQ,OA6BxB,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACQ,KAAA,CA7BV,CACE,MAAO,qBACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,WAAY,KAAM,CAAC,EAAM,OAAO,CAAC,CAC3E,EACA,CACE,MAAO,SACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,2BAA4B,KAAM,CAAC,EAAM,OAAO,CAAC,CAC3F,EACA,CACE,MAAO,YACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,qBAAsB,KAAM,CAAC,EAAM,OAAO,CAAC,CACrF,EACA,CACE,MAAO,gBACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,kBAAmB,KAAM,CAAC,EAAM,OAAO,CAAC,CAClF,EACA,CACE,MAAO,OACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,gBAAiB,KAAM,CAAC,EAAM,OAAO,CAAC,CAChF,EACA,CACE,MAAO,YACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,qBAAsB,KAAM,CAAC,EAAM,OAAO,CAAC,CACrF,CAMU,EACN,aAAc,EAAa,EAAM,YAAY,CAC9C,CAAA,CACE,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./Di_u2uix.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as a}from"./CFoexGFe.chunk.js";import{t as o}from"./BVbA6fE6.chunk.js";import{n as s,t as c}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./Di_u2uix.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as a}from"./CFoexGFe.chunk.js";import{t as o}from"./BVbA6fE6.chunk.js";import{n as s,t as c}from"./C-M2om56.chunk.js";import{n as l}from"./4UvBojp6.chunk.js";import{t as u}from"./UCDGupVs.chunk.js";import{r as d}from"./BKtR2N4K.chunk.js";import{r as f}from"./DkstLT1W.chunk.js";import{d as p}from"./GpDEun8c2.chunk.js";import{n as m}from"./CbiGs3Tn.chunk.js";import{d as h,s as g,u as _}from"./Dgk5cBBe.chunk.js";import{t as v}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as y}from"./CVHQXNzi.chunk.js";import{n as b,t as x}from"./DyKk_C_Y.chunk.js";import"./BCfBk23W.chunk.js";import{t as S}from"./DjzD1n9W.chunk.js";import{t as C}from"./Bwpvc7Th2.chunk.js";import{t as w}from"./B_qCVJZp2.chunk.js";import{t as T}from"./CZyPFSXo.chunk.js";import{t as E}from"./DkLlaBp-.chunk.js";import{t as D}from"./CGACfSBR.chunk.js";import{t as O}from"./JmL1DHFu.chunk.js";import{t as k}from"./DHD4nY6U.chunk.js";import{t as A}from"./DdpEZzKh.chunk.js";import{t as j}from"./D1EPU1_6.chunk.js";import{t as M}from"./BwKHls91.chunk.js";import{t as N}from"./CXsvYuSI.chunk.js";import{t as P}from"./CCocqcwy.chunk.js";import{t as F}from"./D3rh1_6x2.chunk.js";var I=n(e());function L(e){let[t,n]=E(D.AI_GENERATED_DASHBOARD_PROCESS_ID),r=C(),i=h(),a=_(),o=P(I.useCallback(()=>{t&&a(j.getTopicAiGeneratedDashboardProcess(t,t=>{t.status===l.Submitted||t.status===l.Processing||(o(),n(``),t.status===l.Completed&&(i([`ai:generated:dashboard:${e.classificationId}`,`dashboard`]),r.success(`Dashboard successfully created.`)),t.status===l.Failed&&r.error(`Failed to generate dashboard, please try again.`))}))},[t]),void 0,!!t)}var R=t();function z(e){let[t,n]=I.useState(!0),l=_(),h=g(T.presentation(e.presentationId)),C=g(u.currentUser()),E=g(T.classification(e.classificationId)),D=E.data&&!A.isTopLevelTopic(E.data),P=g(D&&j.getTopicAiGeneratedDashboard(e.classificationId));L({classificationId:e.classificationId});function z(n){return j.dashboards({targetType:d.Classification,classificationId:e.classificationId},t,n)}function B(e){l(z(e))}let V=k(z,B),H=g(T.classificationMembers(e.classificationId,a.Tags)).data?.data?.find(e=>e.name===w.MOVIES_AND_TV),{hasPermissions:U}=S();function W(){return!!(U(f.TopicDashboardStatusUpdate)||H&&U(f.MoviesAndTvDashboardStatusUpdate)||A.isTertiary(e.presentationId)||A.isNewZealandTopic(e.presentationId)||A.isInternationalTopic(e.presentationId)||A.isCanadaTopic(e.presentationId))}async function G(e,t){let n=e.reduce((t,n,r)=>{let i=n.name;if(!i){let t=e[r-1];t&&t.templateId===b.Heading&&(i=t.name)}return n.data.objectIds?.forEach(e=>{t[e]=i}),n.data.playlistId&&(t[n.data.playlistId]=i),t},{}),r=Object.keys(n),i=v.chunk(r,25).map(e=>l(O.curationStudioExport(e))),a=v.flatten(await Promise.all(i)).reduce((e,t)=>{if(t.typeId===y.Playlist||t.typeId===y.Series){let r=t,i=n[t.id];return e.concat(r.videos?.data.map(e=>({video:e,heading:i}))||[])}return e.concat({video:t,heading:n[t.id]})},[]);N.exportDashboardReport(a,h.data.description,E.data.name,t)}async function K(e){return G(e.widgets.filter(e=>e.widgetId===x.CuratedSeries),e.name)}async function q(e){let t=[x.PlaylistMedia,x.CuratedMedia,x.ClassificationMedia,x.LatestReleasedVideos,x.ClassificationFeaturedVideo,x.ClassificationPinnedVideos];G(e.widgets.filter(e=>t.includes(e.widgetId)),e.name)}function J(e){return l(j.updateDashboard(e.id,e))}return!h.data||!C.data||!E.data?(0,R.jsx)(`div`,{className:`text-center py-3`,children:(0,R.jsx)(m,{as:`div`,animation:`border`,role:`status`})}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(p,{memberType:e.memberType,presentation:h.data,classificationId:e.classificationId,getTabs:(e,t)=>o.getEditClassificationTabs(i.SUBJECTS,e,t,U)}),(0,R.jsx)(F,{classification:E.data,active:`new-releases`}),(0,R.jsx)(M,{dashboards:V.items,classification:E.data,presentation:h.data,onStatusChange:J,canPublish:W(),columns:s.getColumnSet(c.ClassificationDashboard),filterArchivedDashboards:t,setFilterArchivedDashboards:n,aiGeneratedProcess:P.data,shouldShowAiGeneration:D,getEditDetailsAppLink:t=>({application:i.SUBJECTS,action:r.Subjects.EDIT_CLASSIFICATION_DASHBOARD,args:[e.classificationId,t]}),getDeleteAppLink:t=>({application:i.SUBJECTS,action:r.Subjects.REMOVE_CLASSIFICATION_DASHBOARD,args:[e.classificationId,t]}),getNewDashboardAppLink:()=>({application:i.SUBJECTS,action:r.Subjects.NEW_CLASSIFICATION_DASHBOARD,args:[e.classificationId,e.presentationId,d.Classification]}),getCopyDashboardAppLink:e=>({application:i.SUBJECTS,action:r.Subjects.COPY_CLASSIFICATION_DASHBOARD,args:[e]}),onClickExportVideos:q,onClickExportSeriesVideos:K})]})}export{z as EditClassificationDashboardListView};
|
|
2
|
+
//# sourceMappingURL=DmrhyI9D2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UelJUmgx2.chunk.js","names":[],"sources":["../../../../../src/shared/hooks/useDashboardProcessPolling.ts","../../../../../src/apps/subjects/views/classifications/edit-classification-dashboard-list/EditClassificationDashboardListView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\n\nimport { DashboardGenerationProcessStatus } from '../enums/DashboardGenerationProcessStatus';\nimport { DashboardRequests } from '../flight-requests/DashboardRequests';\n\ninterface UseDashboardProcessPollingProps {\n classificationId: string;\n}\n\nexport function useDashboardProcessPolling(props: UseDashboardProcessPollingProps) {\n const [ processId, setProcessId ] = useViewModel<string>(ViewModelKeys.AI_GENERATED_DASHBOARD_PROCESS_ID);\n const alerts = useAlerts();\n\n const invalidate = Flight.useGetInvalidate();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const pollCallback = React.useCallback(() => {\n // if no processId, stop polling\n if (!processId) return;\n \n fetchAsync(DashboardRequests.getTopicAiGeneratedDashboardProcess(processId, data => {\n if (data.status === DashboardGenerationProcessStatus.Submitted\n || data.status === DashboardGenerationProcessStatus.Processing)\n return;\n\n stopPolling();\n setProcessId('');\n\n if (data.status === DashboardGenerationProcessStatus.Completed) {\n invalidate([ `ai:generated:dashboard:${props.classificationId}`, 'dashboard' ]);\n alerts.success('Dashboard successfully created.');\n }\n\n if (data.status === DashboardGenerationProcessStatus.Failed) {\n alerts.error('Failed to generate dashboard, please try again.');\n }\n }));\n }, [processId]);\n\n const stopPolling = usePolling(pollCallback, undefined, !!processId);\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { Classification, Clip, CuratedDashboard, CuratedWidget, CuratorUser, DashboardTargetType, Interactive, Playlist, Presentation, Series, TagCollection, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { EditClassificationNav } from 'shared/components/classifications';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { useCuratorPermissions } from 'shared/hooks';\nimport { useDashboardProcessPolling } from 'shared/hooks/useDashboardProcessPolling';\nimport { DashboardGenerationProcess } from 'shared/interfaces';\nimport { TopicsNavHelper } from 'shared/utils';\nimport { DashboardHelper } from 'shared/utils/DashboardHelper';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { DashboardTable } from 'apps/dashboard-editor/components/dashboard-table/DashboardTable';\nimport { ClassificationDashboardTabs } from 'apps/subjects/components/dashboard-tabs/ClassificationDashboardTabs';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\n\ninterface EditClassificationDashboardListViewProps {\n presentationId: string;\n classificationId: string;\n memberType: SubjectMemberType;\n}\n\nexport function EditClassificationDashboardListView(\n props: EditClassificationDashboardListViewProps\n): JSX.Element {\n const [ filterArchivedDashboards, setFilterArchivedDashboards ] = React.useState(true);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const presentation = Flight.useBasicFetch<Presentation>(\n SubjectRequests.presentation(props.presentationId)\n );\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n const classification = Flight.useBasicFetch<Classification>(SubjectRequests.classification(props.classificationId));\n // Don't show AI generation button for L1 topic\n const shouldShowAiGeneration = classification.data && !TopicsHelper.isTopLevelTopic(classification.data);\n const aiGeneratedProcess = Flight.useBasicFetch<DashboardGenerationProcess[]>(\n shouldShowAiGeneration && DashboardRequests.getTopicAiGeneratedDashboard(props.classificationId)\n );\n\n useDashboardProcessPolling({\n classificationId: props.classificationId\n });\n\n function getRequest(cursor: string): Flight.Request {\n return DashboardRequests.dashboards({\n targetType: DashboardTargetType.Classification,\n classificationId: props.classificationId\n }, filterArchivedDashboards, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetchAsync(getRequest(cursor));\n }\n\n const dashboards = useFetchAll<CuratedDashboard>(getRequest, fetchNext);\n\n const selectedCurationTags = Flight.useBasicFetch<TagCollection>(\n SubjectRequests.classificationMembers(\n props.classificationId,\n SubjectMemberType.Tags\n )\n );\n const hasMoviesAndTvCurationTag = selectedCurationTags.data?.data?.find(\n tag => tag.name === CurationTag.MOVIES_AND_TV\n );\n\n const { hasPermissions } = useCuratorPermissions();\n\n function canPublishDashboards(): boolean {\n if (hasPermissions(CuratorPermissionName.TopicDashboardStatusUpdate))\n return true;\n\n // Users who can update Movies + TV dashboards may published Movies + TV topics\n if (hasMoviesAndTvCurationTag && hasPermissions(CuratorPermissionName.MoviesAndTvDashboardStatusUpdate))\n return true;\n\n if (\n TopicsHelper.isTertiary(props.presentationId) ||\n TopicsHelper.isNewZealandTopic(props.presentationId) ||\n TopicsHelper.isInternationalTopic(props.presentationId) ||\n TopicsHelper.isCanadaTopic(props.presentationId)\n ) {\n return true;\n }\n\n return false;\n }\n\n async function exportWidgetVideos(widgets: CuratedWidget[], dashboardName: string): Promise<void> {\n const objectIdHeadingMap = widgets.reduce((acc: any, widget, index) => {\n let heading = widget.name;\n\n // If they widget doesn't have it's own heading, check if the previous widget is a blurb heading and use that instead.\n if (!heading) {\n const prev = widgets[index - 1];\n\n if (prev && prev.templateId === WidgetTemplate.Heading)\n heading = prev.name;\n }\n\n widget.data.objectIds?.forEach(id => {\n acc[id] = heading;\n });\n\n if (widget.data.playlistId)\n acc[widget.data.playlistId] = heading;\n\n return acc;\n }, {});\n\n const objectIds = Object.keys(objectIdHeadingMap);\n const chunks = ArrayHelper.chunk<string>(objectIds, 25);\n\n const objectChunkRequests = chunks.map(chunk => fetchAsync<(Series | Playlist | Video | Clip | Interactive)[]>(\n VideoRequests.curationStudioExport(chunk)\n ));\n\n const flattened = ArrayHelper.flatten(await Promise.all(objectChunkRequests));\n\n const videos = flattened.reduce((acc, obj) => {\n if (obj.typeId === MasterType.Playlist || obj.typeId === MasterType.Series) {\n const playlist = obj as Playlist | Series;\n const heading = objectIdHeadingMap[obj.id];\n\n return acc.concat(playlist.videos?.data.map(v => ({ video: v, heading })) || []);\n }\n\n return acc.concat({ video: obj as VideoTypes, heading: objectIdHeadingMap[obj.id] });\n }, []);\n\n DashboardHelper.exportDashboardReport(\n videos,\n presentation.data.description,\n classification.data.name,\n dashboardName\n );\n }\n\n async function onClickExportSeriesVideos(dashboard: CuratedDashboard): Promise<void> {\n return exportWidgetVideos(dashboard.widgets.filter(w => w.widgetId === WidgetTypeId.CuratedSeries), dashboard.name);\n }\n\n async function onClickExportVideos(dashboard: CuratedDashboard): Promise<void> {\n const validWidgets = [\n WidgetTypeId.PlaylistMedia,\n WidgetTypeId.CuratedMedia,\n WidgetTypeId.ClassificationMedia,\n WidgetTypeId.LatestReleasedVideos,\n WidgetTypeId.ClassificationFeaturedVideo,\n WidgetTypeId.ClassificationPinnedVideos\n ];\n\n exportWidgetVideos(dashboard.widgets.filter(w => validWidgets.includes(w.widgetId)), dashboard.name);\n }\n\n function onStatusChange(updatedDashboard: CuratedDashboard): Promise<void> {\n return fetchAsync(DashboardRequests.updateDashboard(\n updatedDashboard.id,\n updatedDashboard\n ));\n }\n\n if (!presentation.data || !currentUser.data || !classification.data) {\n return <div className='text-center py-3'><Spinner as='div' animation='border' role='status' /></div>;\n }\n\n return (\n <>\n <EditClassificationNav\n memberType={props.memberType}\n presentation={presentation.data}\n classificationId={props.classificationId}\n getTabs={(presentationId: string, classificationId: string) =>\n TopicsNavHelper.getEditClassificationTabs(\n AppChannels.SUBJECTS,\n presentationId,\n classificationId,\n hasPermissions\n )\n }\n />\n\n <ClassificationDashboardTabs\n classification={classification.data}\n active='new-releases'\n />\n \n <DashboardTable\n dashboards={dashboards.items}\n classification={classification.data}\n presentation={presentation.data}\n onStatusChange={onStatusChange}\n canPublish={canPublishDashboards()}\n columns={MemberMatrixHelper.getColumnSet(DefinedColumnSet.ClassificationDashboard)}\n filterArchivedDashboards={filterArchivedDashboards}\n setFilterArchivedDashboards={setFilterArchivedDashboards}\n aiGeneratedProcess={aiGeneratedProcess.data}\n shouldShowAiGeneration={shouldShowAiGeneration}\n getEditDetailsAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.EDIT_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, dashboardId ]\n })}\n getDeleteAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.REMOVE_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, dashboardId ]\n })}\n getNewDashboardAppLink={() => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.NEW_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, props.presentationId, DashboardTargetType.Classification ]\n })}\n getCopyDashboardAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.COPY_CLASSIFICATION_DASHBOARD,\n args: [dashboardId]\n })}\n onClickExportVideos={onClickExportVideos}\n onClickExportSeriesVideos={onClickExportSeriesVideos}\n />\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DmrhyI9D2.chunk.js","names":[],"sources":["../../../../../src/shared/hooks/useDashboardProcessPolling.ts","../../../../../src/apps/subjects/views/classifications/edit-classification-dashboard-list/EditClassificationDashboardListView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\n\nimport { DashboardGenerationProcessStatus } from '../enums/DashboardGenerationProcessStatus';\nimport { DashboardRequests } from '../flight-requests/DashboardRequests';\n\ninterface UseDashboardProcessPollingProps {\n classificationId: string;\n}\n\nexport function useDashboardProcessPolling(props: UseDashboardProcessPollingProps) {\n const [ processId, setProcessId ] = useViewModel<string>(ViewModelKeys.AI_GENERATED_DASHBOARD_PROCESS_ID);\n const alerts = useAlerts();\n\n const invalidate = Flight.useGetInvalidate();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const pollCallback = React.useCallback(() => {\n // if no processId, stop polling\n if (!processId) return;\n \n fetchAsync(DashboardRequests.getTopicAiGeneratedDashboardProcess(processId, data => {\n if (data.status === DashboardGenerationProcessStatus.Submitted\n || data.status === DashboardGenerationProcessStatus.Processing)\n return;\n\n stopPolling();\n setProcessId('');\n\n if (data.status === DashboardGenerationProcessStatus.Completed) {\n invalidate([ `ai:generated:dashboard:${props.classificationId}`, 'dashboard' ]);\n alerts.success('Dashboard successfully created.');\n }\n\n if (data.status === DashboardGenerationProcessStatus.Failed) {\n alerts.error('Failed to generate dashboard, please try again.');\n }\n }));\n }, [processId]);\n\n const stopPolling = usePolling(pollCallback, undefined, !!processId);\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { Classification, Clip, CuratedDashboard, CuratedWidget, CuratorUser, DashboardTargetType, Interactive, Playlist, Presentation, Series, TagCollection, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { EditClassificationNav } from 'shared/components/classifications';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { useCuratorPermissions } from 'shared/hooks';\nimport { useDashboardProcessPolling } from 'shared/hooks/useDashboardProcessPolling';\nimport { DashboardGenerationProcess } from 'shared/interfaces';\nimport { TopicsNavHelper } from 'shared/utils';\nimport { DashboardHelper } from 'shared/utils/DashboardHelper';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { DashboardTable } from 'apps/dashboard-editor/components/dashboard-table/DashboardTable';\nimport { ClassificationDashboardTabs } from 'apps/subjects/components/dashboard-tabs/ClassificationDashboardTabs';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\n\ninterface EditClassificationDashboardListViewProps {\n presentationId: string;\n classificationId: string;\n memberType: SubjectMemberType;\n}\n\nexport function EditClassificationDashboardListView(\n props: EditClassificationDashboardListViewProps\n): JSX.Element {\n const [ filterArchivedDashboards, setFilterArchivedDashboards ] = React.useState(true);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const presentation = Flight.useBasicFetch<Presentation>(\n SubjectRequests.presentation(props.presentationId)\n );\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n const classification = Flight.useBasicFetch<Classification>(SubjectRequests.classification(props.classificationId));\n // Don't show AI generation button for L1 topic\n const shouldShowAiGeneration = classification.data && !TopicsHelper.isTopLevelTopic(classification.data);\n const aiGeneratedProcess = Flight.useBasicFetch<DashboardGenerationProcess[]>(\n shouldShowAiGeneration && DashboardRequests.getTopicAiGeneratedDashboard(props.classificationId)\n );\n\n useDashboardProcessPolling({\n classificationId: props.classificationId\n });\n\n function getRequest(cursor: string): Flight.Request {\n return DashboardRequests.dashboards({\n targetType: DashboardTargetType.Classification,\n classificationId: props.classificationId\n }, filterArchivedDashboards, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetchAsync(getRequest(cursor));\n }\n\n const dashboards = useFetchAll<CuratedDashboard>(getRequest, fetchNext);\n\n const selectedCurationTags = Flight.useBasicFetch<TagCollection>(\n SubjectRequests.classificationMembers(\n props.classificationId,\n SubjectMemberType.Tags\n )\n );\n const hasMoviesAndTvCurationTag = selectedCurationTags.data?.data?.find(\n tag => tag.name === CurationTag.MOVIES_AND_TV\n );\n\n const { hasPermissions } = useCuratorPermissions();\n\n function canPublishDashboards(): boolean {\n if (hasPermissions(CuratorPermissionName.TopicDashboardStatusUpdate))\n return true;\n\n // Users who can update Movies + TV dashboards may published Movies + TV topics\n if (hasMoviesAndTvCurationTag && hasPermissions(CuratorPermissionName.MoviesAndTvDashboardStatusUpdate))\n return true;\n\n if (\n TopicsHelper.isTertiary(props.presentationId) ||\n TopicsHelper.isNewZealandTopic(props.presentationId) ||\n TopicsHelper.isInternationalTopic(props.presentationId) ||\n TopicsHelper.isCanadaTopic(props.presentationId)\n ) {\n return true;\n }\n\n return false;\n }\n\n async function exportWidgetVideos(widgets: CuratedWidget[], dashboardName: string): Promise<void> {\n const objectIdHeadingMap = widgets.reduce((acc: any, widget, index) => {\n let heading = widget.name;\n\n // If they widget doesn't have it's own heading, check if the previous widget is a blurb heading and use that instead.\n if (!heading) {\n const prev = widgets[index - 1];\n\n if (prev && prev.templateId === WidgetTemplate.Heading)\n heading = prev.name;\n }\n\n widget.data.objectIds?.forEach(id => {\n acc[id] = heading;\n });\n\n if (widget.data.playlistId)\n acc[widget.data.playlistId] = heading;\n\n return acc;\n }, {});\n\n const objectIds = Object.keys(objectIdHeadingMap);\n const chunks = ArrayHelper.chunk<string>(objectIds, 25);\n\n const objectChunkRequests = chunks.map(chunk => fetchAsync<(Series | Playlist | Video | Clip | Interactive)[]>(\n VideoRequests.curationStudioExport(chunk)\n ));\n\n const flattened = ArrayHelper.flatten(await Promise.all(objectChunkRequests));\n\n const videos = flattened.reduce((acc, obj) => {\n if (obj.typeId === MasterType.Playlist || obj.typeId === MasterType.Series) {\n const playlist = obj as Playlist | Series;\n const heading = objectIdHeadingMap[obj.id];\n\n return acc.concat(playlist.videos?.data.map(v => ({ video: v, heading })) || []);\n }\n\n return acc.concat({ video: obj as VideoTypes, heading: objectIdHeadingMap[obj.id] });\n }, []);\n\n DashboardHelper.exportDashboardReport(\n videos,\n presentation.data.description,\n classification.data.name,\n dashboardName\n );\n }\n\n async function onClickExportSeriesVideos(dashboard: CuratedDashboard): Promise<void> {\n return exportWidgetVideos(dashboard.widgets.filter(w => w.widgetId === WidgetTypeId.CuratedSeries), dashboard.name);\n }\n\n async function onClickExportVideos(dashboard: CuratedDashboard): Promise<void> {\n const validWidgets = [\n WidgetTypeId.PlaylistMedia,\n WidgetTypeId.CuratedMedia,\n WidgetTypeId.ClassificationMedia,\n WidgetTypeId.LatestReleasedVideos,\n WidgetTypeId.ClassificationFeaturedVideo,\n WidgetTypeId.ClassificationPinnedVideos\n ];\n\n exportWidgetVideos(dashboard.widgets.filter(w => validWidgets.includes(w.widgetId)), dashboard.name);\n }\n\n function onStatusChange(updatedDashboard: CuratedDashboard): Promise<void> {\n return fetchAsync(DashboardRequests.updateDashboard(\n updatedDashboard.id,\n updatedDashboard\n ));\n }\n\n if (!presentation.data || !currentUser.data || !classification.data) {\n return <div className='text-center py-3'><Spinner as='div' animation='border' role='status' /></div>;\n }\n\n return (\n <>\n <EditClassificationNav\n memberType={props.memberType}\n presentation={presentation.data}\n classificationId={props.classificationId}\n getTabs={(presentationId: string, classificationId: string) =>\n TopicsNavHelper.getEditClassificationTabs(\n AppChannels.SUBJECTS,\n presentationId,\n classificationId,\n hasPermissions\n )\n }\n />\n\n <ClassificationDashboardTabs\n classification={classification.data}\n active='new-releases'\n />\n \n <DashboardTable\n dashboards={dashboards.items}\n classification={classification.data}\n presentation={presentation.data}\n onStatusChange={onStatusChange}\n canPublish={canPublishDashboards()}\n columns={MemberMatrixHelper.getColumnSet(DefinedColumnSet.ClassificationDashboard)}\n filterArchivedDashboards={filterArchivedDashboards}\n setFilterArchivedDashboards={setFilterArchivedDashboards}\n aiGeneratedProcess={aiGeneratedProcess.data}\n shouldShowAiGeneration={shouldShowAiGeneration}\n getEditDetailsAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.EDIT_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, dashboardId ]\n })}\n getDeleteAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.REMOVE_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, dashboardId ]\n })}\n getNewDashboardAppLink={() => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.NEW_CLASSIFICATION_DASHBOARD,\n args: [ props.classificationId, props.presentationId, DashboardTargetType.Classification ]\n })}\n getCopyDashboardAppLink={dashboardId => ({\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.COPY_CLASSIFICATION_DASHBOARD,\n args: [dashboardId]\n })}\n onClickExportVideos={onClickExportVideos}\n onClickExportSeriesVideos={onClickExportSeriesVideos}\n />\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import{g as i}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import{g as i}from"./GpDEun8c2.chunk.js";import{t as a}from"./BMIUSUnG.chunk.js";e();var o={getClipsTabs(e,t){let i=r.CLIPS,o=n.Clips,s=[];return a.hasSubjectsAccess(e)&&(s=s.concat([{label:`Preview clip`,appLink:{application:i,action:o.PREVIEW_CLIP,args:[t]}},{label:`Edit clip details`,appLink:{application:i,action:o.EDIT_CLIP_DETAILS,args:[t]}},{label:`Glance / POI`,appLink:{application:i,action:o.EDIT_CLIP_GLANCE,args:[t]}},{label:`Curation`,appLink:{application:i,action:o.EDIT_CLIP_CURATION,args:[t]}},{label:`Topics`,appLink:{application:i,action:o.EDIT_CLIP_CLASSIFICATIONS,args:[t]}},{label:`Audiences`,appLink:{application:i,action:o.EDIT_CLIP_AUDIENCES,args:[t]}},{label:`Tags`,appLink:{application:i,action:o.EDIT_CLIP_TAGS,args:[t]}},{label:`Resources`,appLink:{application:i,action:o.EDIT_CLIP_RESOURCES,args:[t]}},{label:`Interactives`,appLink:{application:i,action:o.EDIT_CLIP_INTERACTIVES,args:[t]}}])),s}},s=t(),c=e=>t=>t.appLink.action===e;function l(e){let t=o.getClipsTabs(e.currentUser,e.clipId);return t.length<2?(0,s.jsx)(s.Fragment,{}):(0,s.jsx)(`div`,{className:`py-2`,children:(0,s.jsx)(i,{tabs:t,isItemActive:c(e.activeAction)})})}export{l as t};
|
|
2
|
+
//# sourceMappingURL=DnZGILQc.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DnZGILQc.chunk.js","names":[],"sources":["../../../../../src/apps/clips/utils/ClipsNavHelper.tsx","../../../../../src/apps/clips/components/edit-clip-nav/EditClipNav.tsx"],"sourcesContent":["import { CuratorUser } from 'libs/shared/interfaces';\nimport { CuratorPermissionsHelper } from 'libs/shared/utils/CuratorPermissionsHelper';\n\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { AppChannels } from 'shared/constants/RadioChannels';\nimport { NavItem } from 'shared/interfaces';\n\nexport const ClipsNavHelper = {\n getClipsTabs(currentUser: CuratorUser, clipId: string): NavItem[] {\n const application = AppChannels.CLIPS;\n const actions = Actions.Clips;\n\n let tabs: NavItem[] = [];\n\n const canAccessSubjects = CuratorPermissionsHelper.hasSubjectsAccess(currentUser);\n\n if (!canAccessSubjects)\n return tabs;\n\n tabs = tabs.concat([\n {\n label: 'Preview clip',\n appLink: { application, action: actions.PREVIEW_CLIP, args: [clipId]}\n },\n {\n label: 'Edit clip details',\n appLink: { application, action: actions.EDIT_CLIP_DETAILS, args: [clipId]}\n },\n {\n label: 'Glance / POI',\n appLink: { application, action: actions.EDIT_CLIP_GLANCE, args: [clipId]}\n },\n {\n label: 'Curation',\n appLink: { application, action: actions.EDIT_CLIP_CURATION, args: [clipId]}\n },\n {\n label: 'Topics',\n appLink: { application, action: actions.EDIT_CLIP_CLASSIFICATIONS, args: [clipId]}\n },\n {\n label: 'Audiences',\n appLink: { application, action: actions.EDIT_CLIP_AUDIENCES, args: [clipId]}\n },\n {\n label: 'Tags',\n appLink: { application, action: actions.EDIT_CLIP_TAGS, args: [clipId]}\n },\n {\n label: 'Resources',\n appLink: { application, action: actions.EDIT_CLIP_RESOURCES, args: [clipId]}\n },\n {\n label: 'Interactives',\n appLink: { application, action: actions.EDIT_CLIP_INTERACTIVES, args: [clipId]}\n }\n ]);\n\n return tabs;\n }\n};\n","import React from 'react';\n\nimport { CuratorUser } from 'libs/shared/interfaces';\n\nimport { Tabs } from 'shared/components';\nimport { NavItem } from 'shared/interfaces';\n\nimport { ClipsNavHelper } from 'apps/clips/utils/ClipsNavHelper';\n\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\n\ninterface ClipNavProps {\n clipId: string;\n activeAction: string;\n currentUser: CuratorUser;\n}\n\nexport function EditClipNav(props: ClipNavProps): JSX.Element {\n const tabs = ClipsNavHelper.getClipsTabs(props.currentUser, props.clipId);\n\n if (tabs.length < 2)\n return <></>;\n\n return (\n <div className='py-2'>\n <Tabs\n tabs={tabs}\n isItemActive={isItemActive(props.activeAction)}\n />\n </div>\n );\n}\n"],"mappings":"oNAOA,IAAa,EAAiB,CAC5B,aAAa,EAA0B,EAA2B,CAChE,IAAM,EAAc,EAAY,MAC1B,EAAU,EAAQ,MAEpB,EAAkB,CAAC,EA8CvB,OA5C0B,EAAyB,kBAAkB,CAEhE,IAGL,EAAO,EAAK,OAAO,CACjB,CACE,MAAO,eACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,aAAc,KAAM,CAAC,CAAM,CAAC,CACtE,EACA,CACE,MAAO,oBACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,kBAAmB,KAAM,CAAC,CAAM,CAAC,CAC3E,EACA,CACE,MAAO,eACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,iBAAkB,KAAM,CAAC,CAAM,CAAC,CAC1E,EACA,CACE,MAAO,WACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,mBAAoB,KAAM,CAAC,CAAM,CAAC,CAC5E,EACA,CACE,MAAO,SACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,0BAA2B,KAAM,CAAC,CAAM,CAAC,CACnF,EACA,CACE,MAAO,YACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,oBAAqB,KAAM,CAAC,CAAM,CAAC,CAC7E,EACA,CACE,MAAO,OACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,eAAgB,KAAM,CAAC,CAAM,CAAC,CACxE,EACA,CACE,MAAO,YACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,oBAAqB,KAAM,CAAC,CAAM,CAAC,CAC7E,EACA,CACE,MAAO,eACP,QAAS,CAAE,cAAa,OAAQ,EAAQ,uBAAwB,KAAM,CAAC,CAAM,CAAC,CAChF,CACF,CAAC,GAvCQ,CA0CX,CACF,QCnDM,EAAgB,GAA0B,GAAkB,EAAK,QAAQ,SAAW,EAQ1F,SAAgB,EAAY,EAAkC,CAC5D,IAAM,EAAO,EAAe,aAAa,EAAM,YAAa,EAAM,MAAM,EAKxE,OAHI,EAAK,OAAS,GACT,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACQ,OACN,aAAc,EAAa,EAAM,YAAY,CAC9C,CAAA,CACE,CAAA,CAET"}
|