@clickview/reports 0.69.0 → 0.69.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/bundles.json +2 -3
- package/dist/css/1VpVng8x.chunk.css +1 -0
- package/dist/css/BBwBgFf_.chunk.css +1 -0
- package/dist/css/BDijM1kt.chunk.css +1 -0
- package/dist/css/BMPwvOki.chunk.css +1 -0
- package/dist/css/BNt45Kgy.chunk.css +1 -0
- package/dist/css/BSGhUWzl.chunk.css +1 -0
- package/dist/css/BZ3_uhDP.chunk.css +1 -0
- package/dist/css/BaadNO4A.chunk.css +1 -0
- package/dist/css/BdUNjJqp.chunk.css +1 -0
- package/dist/css/BdeI0FAV.chunk.css +1 -0
- package/dist/css/BxcMGr8Y.chunk.css +1 -0
- package/dist/css/ByuL_xKJ.chunk.css +1 -0
- package/dist/css/C-A0Pj_7.chunk.css +1 -0
- package/dist/css/C4jMfPWU.chunk.css +1 -0
- package/dist/css/C7XoyEPr.chunk.css +1 -0
- package/dist/css/C8sxda3R.chunk.css +1 -0
- package/dist/css/CD1qrI1T.chunk.css +1 -0
- package/dist/css/CFO--d_R.chunk.css +1 -0
- package/dist/css/CX9nw8t8.chunk.css +1 -0
- package/dist/css/C_qGRdC2.chunk.css +1 -0
- package/dist/css/CdC6ugQR.chunk.css +1 -0
- package/dist/css/ClRRGXPb.chunk.css +1 -0
- package/dist/css/Cr1bwtZG.chunk.css +1 -0
- package/dist/css/DBlPz5Fw.chunk.css +1 -0
- package/dist/css/DDnpOnVB.chunk.css +1 -0
- package/dist/css/DFZQCLLg.chunk.css +1 -0
- package/dist/css/DJwAbl6l.chunk.css +1 -0
- package/dist/css/DWjg_0sz.chunk.css +1 -0
- package/dist/css/DYV9jjVn.chunk.css +1 -0
- package/dist/css/Dgeh4AqU.chunk.css +9 -0
- package/dist/css/DlOtoSz0.chunk.css +1 -0
- package/dist/css/DlxOgKUu.chunk.css +1 -0
- package/dist/css/DwgaDUzz.chunk.css +1 -0
- package/dist/css/FPQ_LmXH.chunk.css +1 -0
- package/dist/css/H09rC9gw.chunk.css +1 -0
- package/dist/css/LAFr2dPT.chunk.css +1 -0
- package/dist/css/Pg1TlYG6.chunk.css +1 -0
- package/dist/css/PsQn3-kb.chunk.css +1 -0
- package/dist/css/alkEuPrr.chunk.css +1 -0
- package/dist/css/k4DgCj_g.chunk.css +1 -0
- package/dist/en.json +1 -0
- package/dist/scripts/5JDMPiCK.chunk.js +2 -0
- package/dist/scripts/5JDMPiCK.chunk.js.map +1 -0
- package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
- package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
- package/dist/scripts/B8i2s45X.chunk.js +2 -0
- package/dist/scripts/B8i2s45X.chunk.js.map +1 -0
- package/dist/scripts/BBOfq9my.chunk.js +2 -0
- package/dist/scripts/BBOfq9my.chunk.js.map +1 -0
- package/dist/scripts/BE7zUNFh.chunk.js +3 -0
- package/dist/scripts/BE7zUNFh.chunk.js.map +1 -0
- package/dist/scripts/BIbP_ulq.chunk.js +380 -0
- package/dist/scripts/BIbP_ulq.chunk.js.map +1 -0
- package/dist/scripts/BJe4D9vd.chunk.js +2 -0
- package/dist/scripts/BJe4D9vd.chunk.js.map +1 -0
- package/dist/scripts/BKx5S6xk.chunk.js +2 -0
- package/dist/scripts/BKx5S6xk.chunk.js.map +1 -0
- package/dist/scripts/BMba67Uf.chunk.js +2 -0
- package/dist/scripts/BMba67Uf.chunk.js.map +1 -0
- package/dist/scripts/BUM8Ub4p.chunk.js +2 -0
- package/dist/scripts/BUM8Ub4p.chunk.js.map +1 -0
- package/dist/scripts/BW-tzVdx.chunk.js +2 -0
- package/dist/scripts/BW-tzVdx.chunk.js.map +1 -0
- package/dist/scripts/B_1LOG5E.chunk.js +2 -0
- package/dist/scripts/B_1LOG5E.chunk.js.map +1 -0
- package/dist/scripts/BaHk6QZB.chunk.js +2 -0
- package/dist/scripts/BaHk6QZB.chunk.js.map +1 -0
- package/dist/scripts/Bbpuxobz.chunk.js +2 -0
- package/dist/scripts/Bbpuxobz.chunk.js.map +1 -0
- package/dist/scripts/BfG3wCTD.chunk.js +2 -0
- package/dist/scripts/BfG3wCTD.chunk.js.map +1 -0
- package/dist/scripts/BfkzHBdb.chunk.js +2 -0
- package/dist/scripts/BfkzHBdb.chunk.js.map +1 -0
- package/dist/scripts/BiDX0yuI.chunk.js +2 -0
- package/dist/scripts/BiDX0yuI.chunk.js.map +1 -0
- package/dist/scripts/BkcNwg7K.chunk.js +2 -0
- package/dist/scripts/BkcNwg7K.chunk.js.map +1 -0
- package/dist/scripts/BlAGsOOw.chunk.js +2 -0
- package/dist/scripts/BlAGsOOw.chunk.js.map +1 -0
- package/dist/scripts/BmScDBcl.chunk.js +2 -0
- package/dist/scripts/BmScDBcl.chunk.js.map +1 -0
- package/dist/scripts/BnqNywwJ.chunk.js +2 -0
- package/dist/scripts/BnqNywwJ.chunk.js.map +1 -0
- package/dist/scripts/BrLXFCMV.chunk.js +2 -0
- package/dist/scripts/BrLXFCMV.chunk.js.map +1 -0
- package/dist/scripts/BsFynggy.chunk.js +2 -0
- package/dist/scripts/BsFynggy.chunk.js.map +1 -0
- package/dist/scripts/Bt3gUzzG.chunk.js +2 -0
- package/dist/scripts/Bt3gUzzG.chunk.js.map +1 -0
- package/dist/scripts/BuHHZnEg.chunk.js +2 -0
- package/dist/scripts/BuHHZnEg.chunk.js.map +1 -0
- package/dist/scripts/ByllnMKt.chunk.js +2 -0
- package/dist/scripts/ByllnMKt.chunk.js.map +1 -0
- package/dist/scripts/BzBFC5UE.chunk.js +2 -0
- package/dist/scripts/BzBFC5UE.chunk.js.map +1 -0
- package/dist/scripts/C4382UCA.chunk.js +2 -0
- package/dist/scripts/C4382UCA.chunk.js.map +1 -0
- package/dist/scripts/C6H2bU7H.chunk.js +2 -0
- package/dist/scripts/C6H2bU7H.chunk.js.map +1 -0
- package/dist/scripts/C6eAAaNL.chunk.js +2 -0
- package/dist/scripts/C6eAAaNL.chunk.js.map +1 -0
- package/dist/scripts/CAh5UtFh.chunk.js +2 -0
- package/dist/scripts/CAh5UtFh.chunk.js.map +1 -0
- package/dist/scripts/CFIWZ5KT.chunk.js +2 -0
- package/dist/scripts/CFIWZ5KT.chunk.js.map +1 -0
- package/dist/scripts/CKLfLzhr.chunk.js +34 -0
- package/dist/scripts/CKLfLzhr.chunk.js.map +1 -0
- package/dist/scripts/COgPEQMR.chunk.js +2 -0
- package/dist/scripts/COgPEQMR.chunk.js.map +1 -0
- package/dist/scripts/CRWOsqvB.chunk.js +2 -0
- package/dist/scripts/CRWOsqvB.chunk.js.map +1 -0
- package/dist/scripts/CU-I5G45.chunk.js +2 -0
- package/dist/scripts/CU-I5G45.chunk.js.map +1 -0
- package/dist/scripts/CV5ioe9U.chunk.js +2 -0
- package/dist/scripts/CV5ioe9U.chunk.js.map +1 -0
- package/dist/scripts/CW7x8M-z.chunk.js +2 -0
- package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
- package/dist/scripts/CX5q-0jT.chunk.js +2 -0
- package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
- package/dist/scripts/CXK1uNgx.chunk.js +2 -0
- package/dist/scripts/CXK1uNgx.chunk.js.map +1 -0
- package/dist/scripts/CXhesQTd.chunk.js +2 -0
- package/dist/scripts/CXhesQTd.chunk.js.map +1 -0
- package/dist/scripts/CaiGBx50.chunk.js +2 -0
- package/dist/scripts/CaiGBx50.chunk.js.map +1 -0
- package/dist/scripts/CbmUUNB4.chunk.js +2 -0
- package/dist/scripts/CbmUUNB4.chunk.js.map +1 -0
- package/dist/scripts/CdoC9Mtd.chunk.js +2 -0
- package/dist/scripts/CdoC9Mtd.chunk.js.map +1 -0
- package/dist/scripts/CdzMtbgC.chunk.js +2 -0
- package/dist/scripts/CdzMtbgC.chunk.js.map +1 -0
- package/dist/scripts/Cl51qIgL.chunk.js +2 -0
- package/dist/scripts/Cl51qIgL.chunk.js.map +1 -0
- package/dist/scripts/ClLzLF-_.chunk.js +2 -0
- package/dist/scripts/ClLzLF-_.chunk.js.map +1 -0
- package/dist/scripts/ClcYw2ra.chunk.js +42 -0
- package/dist/scripts/ClcYw2ra.chunk.js.map +1 -0
- package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
- package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
- package/dist/scripts/CpwEUwsc.chunk.js +2 -0
- package/dist/scripts/CpwEUwsc.chunk.js.map +1 -0
- package/dist/scripts/CqSaPgvV.chunk.js +2 -0
- package/dist/scripts/CqSaPgvV.chunk.js.map +1 -0
- package/dist/scripts/CqyCLTzN.chunk.js +2 -0
- package/dist/scripts/CqyCLTzN.chunk.js.map +1 -0
- package/dist/scripts/CrlegiVC.chunk.js +2 -0
- package/dist/scripts/CrlegiVC.chunk.js.map +1 -0
- package/dist/scripts/CsD4Xb6n.chunk.js +2 -0
- package/dist/scripts/CsD4Xb6n.chunk.js.map +1 -0
- package/dist/scripts/Ct187YvN.chunk.js +2 -0
- package/dist/scripts/Ct187YvN.chunk.js.map +1 -0
- package/dist/scripts/CwyVC768.chunk.js +2 -0
- package/dist/scripts/CwyVC768.chunk.js.map +1 -0
- package/dist/scripts/Cy4L5XsI.chunk.js +2 -0
- package/dist/scripts/Cy4L5XsI.chunk.js.map +1 -0
- package/dist/scripts/CzF-hI_x.chunk.js +2 -0
- package/dist/scripts/CzF-hI_x.chunk.js.map +1 -0
- package/dist/scripts/D1U_fPVs.chunk.js +2 -0
- package/dist/scripts/D1U_fPVs.chunk.js.map +1 -0
- package/dist/scripts/D9POXla0.chunk.js +2 -0
- package/dist/scripts/D9POXla0.chunk.js.map +1 -0
- package/dist/scripts/DAocQXXC.chunk.js +2 -0
- package/dist/scripts/DAocQXXC.chunk.js.map +1 -0
- package/dist/scripts/DD-2boW1.chunk.js +2 -0
- package/dist/scripts/DD-2boW1.chunk.js.map +1 -0
- package/dist/scripts/DFhb3ZfO.chunk.js +2 -0
- package/dist/scripts/DFhb3ZfO.chunk.js.map +1 -0
- package/dist/scripts/DFp9UBZB.chunk.js +4 -0
- package/dist/scripts/DFp9UBZB.chunk.js.map +1 -0
- package/dist/scripts/DHqmPVfK.chunk.js +2 -0
- package/dist/scripts/DHqmPVfK.chunk.js.map +1 -0
- package/dist/scripts/DJLuyZJi.chunk.js +2 -0
- package/dist/scripts/DJLuyZJi.chunk.js.map +1 -0
- package/dist/scripts/DK7va7iQ.chunk.js +2 -0
- package/dist/scripts/DK7va7iQ.chunk.js.map +1 -0
- package/dist/scripts/DMoPMSgN.chunk.js +2 -0
- package/dist/scripts/DMoPMSgN.chunk.js.map +1 -0
- package/dist/scripts/DNTR3iW5.chunk.js +2 -0
- package/dist/scripts/DNTR3iW5.chunk.js.map +1 -0
- package/dist/scripts/DNt9Tv5W.chunk.js +2 -0
- package/dist/scripts/DNt9Tv5W.chunk.js.map +1 -0
- package/dist/scripts/DQtbfeRV.chunk.js +2 -0
- package/dist/scripts/DQtbfeRV.chunk.js.map +1 -0
- package/dist/scripts/DRQ39FRr.chunk.js +2 -0
- package/dist/scripts/DRQ39FRr.chunk.js.map +1 -0
- package/dist/scripts/DTFFRoLz.chunk.js +2 -0
- package/dist/scripts/DTFFRoLz.chunk.js.map +1 -0
- package/dist/scripts/DU5sOcpt.chunk.js +3 -0
- package/dist/scripts/DU5sOcpt.chunk.js.map +1 -0
- package/dist/scripts/DWv8V3Lc.chunk.js +2 -0
- package/dist/scripts/DWv8V3Lc.chunk.js.map +1 -0
- package/dist/scripts/DYFT7QHy.chunk.js +2 -0
- package/dist/scripts/DYFT7QHy.chunk.js.map +1 -0
- package/dist/scripts/DZAYXeaL.chunk.js +2 -0
- package/dist/scripts/DZAYXeaL.chunk.js.map +1 -0
- package/dist/scripts/D_Erj5Yn.chunk.js +10 -0
- package/dist/scripts/D_Erj5Yn.chunk.js.map +1 -0
- package/dist/scripts/DeY3SuCM.chunk.js +2 -0
- package/dist/scripts/DeY3SuCM.chunk.js.map +1 -0
- package/dist/scripts/DecstRlc.chunk.js +8 -0
- package/dist/scripts/DecstRlc.chunk.js.map +1 -0
- package/dist/scripts/Df8zbYVK.chunk.js +10 -0
- package/dist/scripts/Df8zbYVK.chunk.js.map +1 -0
- package/dist/scripts/DgHfAOys.chunk.js +2 -0
- package/dist/scripts/DgHfAOys.chunk.js.map +1 -0
- package/dist/scripts/DgWHvURU.chunk.js +2 -0
- package/dist/scripts/DgWHvURU.chunk.js.map +1 -0
- package/dist/scripts/DmGrKXgL.chunk.js +2 -0
- package/dist/scripts/DmGrKXgL.chunk.js.map +1 -0
- package/dist/scripts/Dp_vnjo0.chunk.js +3 -0
- package/dist/scripts/Dp_vnjo0.chunk.js.map +1 -0
- package/dist/scripts/DuNeLCIS.chunk.js +15 -0
- package/dist/scripts/DuNeLCIS.chunk.js.map +1 -0
- package/dist/scripts/DxJzyDBL.chunk.js +2 -0
- package/dist/scripts/DxJzyDBL.chunk.js.map +1 -0
- package/dist/scripts/DxUueJN7.chunk.js +2 -0
- package/dist/scripts/DxUueJN7.chunk.js.map +1 -0
- package/dist/scripts/DykFRaNZ.chunk.js +4 -0
- package/dist/scripts/DykFRaNZ.chunk.js.map +1 -0
- package/dist/scripts/Fd0gT6QK.chunk.js +2 -0
- package/dist/scripts/Fd0gT6QK.chunk.js.map +1 -0
- package/dist/scripts/MaYDtnoS.chunk.js +2 -0
- package/dist/scripts/MaYDtnoS.chunk.js.map +1 -0
- package/dist/scripts/T4Chmiqz.chunk.js +2 -0
- package/dist/scripts/T4Chmiqz.chunk.js.map +1 -0
- package/dist/scripts/UWjf2h5X.chunk.js +2 -0
- package/dist/scripts/UWjf2h5X.chunk.js.map +1 -0
- package/dist/scripts/VSmYRJOj.chunk.js +2 -0
- package/dist/scripts/VSmYRJOj.chunk.js.map +1 -0
- package/dist/scripts/W5zJjbqu.chunk.js +2 -0
- package/dist/scripts/W5zJjbqu.chunk.js.map +1 -0
- package/dist/scripts/YDhSgJI6.chunk.js +2 -0
- package/dist/scripts/YDhSgJI6.chunk.js.map +1 -0
- package/dist/scripts/Yi67NERS.chunk.js +2 -0
- package/dist/scripts/Yi67NERS.chunk.js.map +1 -0
- package/dist/scripts/app-BqRx5tK8.js +228 -0
- package/dist/scripts/app-BqRx5tK8.js.map +1 -0
- package/dist/scripts/cRQEJA0-.chunk.js +2 -0
- package/dist/scripts/cRQEJA0-.chunk.js.map +1 -0
- package/dist/scripts/g3bqr4mt.chunk.js +6 -0
- package/dist/scripts/g3bqr4mt.chunk.js.map +1 -0
- package/dist/scripts/h4z9gHMh.chunk.js +2 -0
- package/dist/scripts/h4z9gHMh.chunk.js.map +1 -0
- package/dist/scripts/kGI4LAzn.chunk.js +6 -0
- package/dist/scripts/kGI4LAzn.chunk.js.map +1 -0
- package/dist/scripts/kt1K5Xlc.chunk.js +2 -0
- package/dist/scripts/kt1K5Xlc.chunk.js.map +1 -0
- package/dist/scripts/mdJqhxeb.chunk.js +2 -0
- package/dist/scripts/mdJqhxeb.chunk.js.map +1 -0
- package/dist/scripts/sFV5nxD4.chunk.js +2 -0
- package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
- package/dist/scripts/tCFcWStO.chunk.js +2 -0
- package/dist/scripts/tCFcWStO.chunk.js.map +1 -0
- package/dist/scripts/wND_WD0i.chunk.js +2 -0
- package/dist/scripts/wND_WD0i.chunk.js.map +1 -0
- package/dist/scripts/xkqdG021.chunk.js +2 -0
- package/dist/scripts/xkqdG021.chunk.js.map +1 -0
- package/dist/scripts/zaMwD-xl.chunk.js +3 -0
- package/dist/scripts/zaMwD-xl.chunk.js.map +1 -0
- package/package.json +5 -3
- package/typings/utils/imports.d.ts +1 -1
- package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
- package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
- package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
- package/dist/css/209-reports-cdae99d0ee.chunk.css +0 -11
- package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
- package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
- package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
- package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
- package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
- package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
- package/dist/css/6031-reports-d558076846.chunk.css +0 -6
- package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
- package/dist/css/6546-reports-f190450b10.chunk.css +0 -60
- package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
- package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
- package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
- package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
- package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
- package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
- package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
- package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
- package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
- package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
- package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
- package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
- package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
- package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
- package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
- package/dist/css/reports-app-b4c4ec5632.css +0 -32
- package/dist/languages/en.json +0 -1
- package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
- package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
- package/dist/scripts/1456-019d93e620-reports.chunk.js +0 -1
- package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
- package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
- package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
- package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
- package/dist/scripts/209-d769572af9-reports.chunk.js +0 -1
- package/dist/scripts/2150-2cbadacf12-reports.chunk.js +0 -1
- package/dist/scripts/2217-eb2f8619c9-reports.chunk.js +0 -1
- package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
- package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
- package/dist/scripts/2997-62d81c3442-reports.chunk.js +0 -1
- package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
- package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
- package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
- package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
- package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
- package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
- package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
- package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
- package/dist/scripts/5051-72c53737e2-reports.chunk.js +0 -1
- package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
- package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
- package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
- package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
- package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
- package/dist/scripts/6007-346d08e3ae-reports.chunk.js +0 -1
- package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
- package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
- package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
- package/dist/scripts/645-e72b3d845e-reports.chunk.js +0 -1
- package/dist/scripts/6545-f07bcd318a-reports.chunk.js +0 -1
- package/dist/scripts/6546-b0ed7b3a19-reports.chunk.js +0 -2
- package/dist/scripts/6546-b0ed7b3a19-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/6811-add7c7c1a2-reports.chunk.js +0 -1
- package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
- package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
- package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
- package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
- package/dist/scripts/7747-d34db3ff10-reports.chunk.js +0 -2
- package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
- package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
- package/dist/scripts/8393-686a7866e1-reports.chunk.js +0 -1
- package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
- package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
- package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
- package/dist/scripts/8622-ca384ec4b0-reports.chunk.js +0 -1
- package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
- package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
- package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
- package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
- package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
- package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
- package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
- package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
- package/dist/scripts/9822-379ea90dd3-reports.chunk.js +0 -1
- package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
- package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +0 -1
- package/dist/scripts/bundle-36f5b2e675.min.js +0 -2
- package/dist/scripts/bundle-36f5b2e675.min.js.LICENSE.txt +0 -108
- package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{bG as D,az as W,bH as K,ah as Y,v as O,aw as b,aW as d,s as p,l as j,bI as m,bJ as q,bK as v,bL as z,bM as J,L as H,u as C,bN as Z,bO as Q,m as X,au as ee,at as te,av as S,an as x,Z as f,a0 as I,_ as k,$ as re,ab as se,bx as E,bD as B,bP as ie}from"./app-BqRx5tK8.js";import{S as T}from"./BBOfq9my.chunk.js";import{C as ae,V}from"./BW-tzVdx.chunk.js";const ne=5,A={getRecentItem(e,t,r=!0){let s=r?t.cacheGet(e):t.get(e);return Array.isArray(s)||(s=[]),s},setRecentItem(e,t,r,s){if(Array.isArray(t)){if(s){r.cacheSet(e,t);return}r.set(e,t)}},addRecentItem(e,t,r){const{id:s,limit:i=ne,expire:n=!0}=r;let a=A.getRecentItem(e,t,n);const l=a.indexOf(s);return l>-1&&a.splice(l,1),a.unshift(s),a.length>i&&(a=a.slice(0,i)),A.setRecentItem(e,a,t,n),a},removeRecentItem(e,t,r){const i=A.getRecentItem(e,r).filter(n=>n!==t.toString());A.setRecentItem(e,i,r)}},_=e=>`recently:shared:to:${e}`,le={getRecentlySharedTo(e){return A.getRecentItem(_(e),D)},addRecentlySharedTo(e,t){return A.addRecentItem(_(e),D,t)}};class oe{constructor(t){this.setData(t)}setData(t){const{collectionPrefix:r,id:s,sort:i,cursor:n}=t;s&&(this.id=s),i&&(this.sort=i),n&&(this.cursor=n),r&&(this.collectionPrefix=r)}toString(){return[this.collectionPrefix,this.id,this.sort,this.cursor].filter(Boolean).join(":")}toParams(){const t={};return this.sort&&(t.sort=this.getSortTypeParam().toLowerCase()),this.cursor&&(t.cursor=this.cursor),t}getSortTypeParam(){return W.throw(new K("getSortTypeParam must be implemented when extending BaseCollectionIdentifier")),""}}class ce extends oe{constructor(t,r=""){super({collectionPrefix:"playlist:videos",id:t,cursor:r})}}const U={deletePlaylist(e){return t=>{const r={...t};return r.hasOwnProperty(e)&&delete r[e],r}},incrementVideoCount(e,t){return r=>{const s={...r};return s.hasOwnProperty(e)?(s[e].videos||(s[e].videos={}),s[e].videos.count=s[e].videos.count?s[e].videos.count+t:t,s):r}}},ue={reorder(e,t,r){if(t===r)return{reorderedItems:e,reorderRequest:null};const s=O.moveItem(e,t,r),i=r<e.length-1?s[r+1].id:null,n={sourceMemberId:s[r].id,destinationMemberId:i};return{reorderedItems:s,reorderRequest:n}},updateState(e,t,r){const s=[],i=Y.deepClone(r),n=[e];let a=r[e];const l=!!a&&!!a.data&&a.data.length;for(;a&&Array.isArray(a.data);){s.push(...a.data);const y=a.pagination&&a.pagination.cursors&&a.pagination.cursors.next,w=!!y&&`${e}:${y}`;a=y&&r[w],a&&n.push(w)}if(!s.length)return r;const c=O.findIndex(s,y=>y.id===t.sourceMemberId);let u=[...s];const g=u.splice(c,1),$=t.destinationMemberId?O.findIndex(u,y=>y.id===t.destinationMemberId):u.length;return u.splice($,0,g[0]),u=u.map(y=>({id:y.id})),n.forEach(y=>{const w=u.splice(0,l);i[y].data=w}),i}},pe={getUserPlaylists(e){const{sort:t,type:r}=e,s={sort:t,query:`{limit:100}${v.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`};return e.cursor&&(s.cursor=e.cursor),{url:p.urlBuilder(`/api/domain/v2/me/playlists/${r}`,s),key:e.toString()}},getPlaylist(e,t,r){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated`}),key:`playlist:${e}`,success:t,error:r}},getSharedPlaylist(e,t,r,s){return{url:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`,shareId:t}),key:`shared:playlist:${e}:${t}`,success:r,error:s}},playlistWithThumbnailAndCount(e){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`}),key:`playlist:${e}:thumbnail:count`}},getPlaylistVideos(e,t){const{VIDEO_COLLECTION:r,CLIP_COLLECTION:s,INTERACTIVE:i}=v,n={query:`(videos[${r}]{status:[${m.Published},${m.Archived}]}|clips[${s}]{status:[${m.Published},${m.Archived}]}|interactives[${i}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata};return t&&(n.cursor=t),{url:p.urlBuilder(`{gateway}/v1/objects/${e}/members`,n),publicUrl:p.urlBuilder(`/api/objects/${e}/members`,n),key:`playlist:${e}:videos${t?`:${t}`:""}`}},getSharedPlaylistVideos(e,t,r){const{VIDEO_COLLECTION:s,CLIP_COLLECTION:i,INTERACTIVE:n}=v,a={query:`(videos[${s}]{status:[${m.Published},${m.Archived}]}|clips[${i}]{status:[${m.Published},${m.Archived}]}|interactives[${n}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata,shareId:t};return r&&(a.cursor=r),{url:p.urlBuilder(`/api/objects/${e}/members`,a),key:`shared:playlist:${e}:${t}:videos:${r}`}},getPlaylistVideosCount(e){const t=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),key:`playlist:count:${e}`,normalize:!1}},getSharedPlaylistVideosCount(e,t){const r=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${r},clips[count()]${r},interactives[count()]${r}`,shareId:t}),key:`shared:playlist:count:${e}:${t}`,normalize:!1}},getVideoPlaylists(e,t,r){return{url:`{gateway}/v1/objects/${e}/playlists?query={limit:100,owner.id:[${t}]}`,key:`video:playlists:${e}${r?":cursor":""}`}},createPlaylist(e,t,r,s,i){return{key:"create:playlist",url:`{gateway}/v1/objects/${e}/playlists`,data:t,type:b.POST,success:r,error:s,always:i,invalidationKeys:"user:playlists"}},updatePlaylist(e,t,r,s,i){return{key:"update:playlist",url:`{gateway}/v1/objects/${e}`,data:t,type:b.PUT,success:r,error:s,always:i}},deletePlaylist(e,t,r,s){return{key:"delete:playlist",url:`{gateway}/v1/objects/${e}`,type:b.DELETE,success:t,error:r,always:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}`,updateData:U.deletePlaylist(`playlist:${e}`)}}},copyPlaylist(e,t,r,s){return{url:"{gateway}/v1/playlists/copy",key:"copy:playlist",data:{playlistId:e},type:b.POST,invalidationKeys:"user:playlists",success:t,error:r,always:s}},addToPlaylist(e,t,r,s){const i=["user:playlists",new ce(e).toString(),`playlist:${e}:videos`];t.forEach(a=>{i.push(`video:playlists:${a.id}`)});const n=t.reduce((a,l)=>(j.isClip(l)&&(Array.isArray(a.clips)?a.clips.push({id:l.id}):a.clips=[{id:l.id}]),j.isInteractive(l)&&(Array.isArray(a.interactives)?a.interactives.push({id:l.id}):a.interactives=[{id:l.id}]),j.isVideo(l)&&(Array.isArray(a.videos)?a.videos.push({id:l.id}):a.videos=[{id:l.id}]),a),{});return{key:`add:to:playlist:${e}:${t.map(a=>a.id).join(":")}`,url:`{gateway}/v1/objects/${e}`,data:n,type:b.PUT,success:r,error:s,invalidationKeys:i,updateState:{keys:`playlist:${e}`,updateData:U.incrementVideoCount(`playlist:${e}`,t.length)},normalize:!1}},removePlaylistVideo(e,t,r,s,i){let n=`{gateway}/v1/objects/${e}`;return r===d.Clip?n+="/clips":r===d.Interactive?n+="/interactives":n+="/videos",{key:"remove:playlist:video",url:p.urlBuilder(n,{memberId:t}),type:b.DELETE,success:s,error:i,invalidationKeys:["user:playlists",`playlist:${e}:videos`,`video:playlists:${t}`,`playlist:${e}`]}},getIsFollowingPlaylist(e,t){const r=s=>{var i;return{objectId:e,isFollowing:!!((i=s==null?void 0:s.data)!=null&&i.length)}};return{url:`{gateway}/v1/objects/${t}/followedPlaylists?query={id:${e}}`,key:`playlist:${e}:following:${t}`,formatData:r,normalize:!1}},followPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}`,key:`follow:playlist:${e}`,data:{followedPlaylists:e},type:b.PUT,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},unfollowPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}/followedPlaylists?memberId=${e}`,key:`unfollow:playlist:${e}`,type:b.DELETE,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},reorderVideos(e,t,r,s){return{key:"reorder:playlist",url:`{gateway}/v1/playlists/${e}/reorder`,data:t,type:b.PUT,success:r,error:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}:videos`,updateData:i=>ue.updateState(`playlist:${e}:videos`,t,i)}}},getVideoCandidate(e){return{url:`{gateway}/v1/objects/${e}?query=_restrictions`,key:`add:to:playlist:candidate:${e}`}}},G={sharedSeries:(e,t)=>p.urlBuilder(`/api/objects/${e}`,{query:v.SERIES,shareId:t}),seriesWithVideos:(e,t=3)=>`{gateway}/v1/objects/${e}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${t}}`},ye={series(e){const t={query:v.SERIES};return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,t),publicUrl:p.urlBuilder(`/api/objects/${e}`,t),key:`series:${e}`}},sharedSeries(e,t){return{url:G.sharedSeries(e,t),key:`shared:series:${e}:${t}`}},seriesWithVideos(e,t=3){return{url:G.seriesWithVideos(e,t),key:`series:${e}:with:videos:${t}`}},seriesWithThumbnailAndCount(e){return{url:`{gateway}/v1/objects/${e}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,key:`series:${e}:thumbnail:count`}},seriesVideos(e,t,r,s){const i=z.getVideoSortParam(r),n=["series",e,"videos",s,r].filter(a=>!!a).join(":");return{url:p.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:`{${i}}${v.VIDEO_COLLECTION}`,cursor:s}),publicUrl:p.urlBuilder(`/api/objects/collections/${e}/videos`,{query:`{${i}}${J.VIDEO_COLLECTION}`,cursor:s}),key:n}}},de="shared.share",h=H.encloseNamespace(de),P={getObjectTypeId(e){switch(e){case"video":return d.Video;case"playlist":return d.Playlist;case"subject":return d.Subject;case"series":return d.Series;case"interactive":return d.Interactive;case"clip":return d.Clip}},createLink(e){const t=i=>{f.logUserAction({...i,objectName:e.entity.name},f.mergeOptions(P.getAnalyticsOptions(e.entityType),{actionType:I.Create,entity:S.ShareLink,eventVersion:k.V3})),e.success&&e.success(i)},r=()=>{e.alerts.error(h("createLinkError",{name:e.entity.name}))},s={resourceId:e.entity.id,overrideRestrictions:!1};e.password&&(s.password=e.password),e.linkExpireDate&&(s.linkExpireDate=e.linkExpireDate),x(e.dispatch,T.createShareLink(s,t,r))},updateLink(e,t,r,s,i,n,a,l){const c=g=>{f.logUserAction({...g,objectName:t.name},f.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Edit,entity:S.ShareLink,eventVersion:k.V3})),a&&a(g),n.success(h("editSuccess",{name:t.name,escapeText:!0}))},u=()=>{l&&l(),n.error(h("editError",{name:t.name,escapeText:!0}))};x(e,T.editShareLink(s,i,c,u))},deleteLink(e,t,r,s,i,n,a){const l=()=>{f.logUserAction({...s,objectName:t.name},f.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Delete,entity:S.ShareLink})),n&&n(),i.success(h("deleteSuccess",{name:t.name,escapeText:!0}))},c=()=>{i.error(h("deleteError",{name:t.name,escapeText:!0}))},u=()=>{a&&a()};x(e,T.deleteShareLink(s,l,c,u))},createOrUpdateDirectShare(e){const{dispatch:t,entity:r,entityType:s,currentUser:i,recipients:n,sentDirectShare:a,message:l,onSuccess:c,onError:u,onDone:g}=e,$=N=>{c&&c(N),f.logUserAction({id:r.id,name:r.name,shareCount:n.length},f.mergeOptions(P.getAnalyticsOptions(s),{actionType:I.Share,descriptor:re.DirectShare,eventVersion:k.V3})),n.map(F=>{le.addRecentlySharedTo(i.id,{id:F.id})})},y={objectId:r.id,objectTypeId:P.getObjectTypeId(s),recipients:n,message:l},w={recipients:n,message:l},M=a?T.updateDirectShareRecipients(a.id,w,$,u,g):T.createDirectShare(y,$,u,g);x(t,M)},removeDirectShareRecipient(e,t,r,s,i,n){const a=l=>{i&&i(l),f.logUserAction({shareCount:1},f.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Unshare}))};x(e,T.removeDirectShareRecipient(s.id,t,a,n))},getDirectShareRecipientsRequest(e,t){var s;return!!((s=t==null?void 0:t.recipients)!=null&&s.length)&&T.getDirectShareRecipientsById(t.id,t.recipients,e)},getAnalyticsEntity(e){switch(e){case"playlist":return S.Playlist;case"subject":return S.Classification;case"video":return S.Video;case"series":return S.Series;case"interactive":return S.Interactive;case"clip":return S.Clip}},getAnalyticsOptions(e){return{entity:P.getAnalyticsEntity(e),location:te.Popup,workflowPhase:ee.Complete}},getFetchFunctionByType:e=>{switch(e){case"video":return t=>C(X.video(t));case"playlist":return t=>C(pe.getPlaylist(t));case"subject":return(t,r)=>C(ae.classification(t,r));case"series":return t=>C(ye.series(t));case"interactive":return t=>C(Q.interactiveMetadata(t));case"clip":return t=>C(Z.clip(t))}},getImageUrl(e){var t,r,s,i;return"thumbnail"in e&&e.thumbnail?(t=e.thumbnail)==null?void 0:t.url:"_thumbnail"in e&&e._thumbnail?(r=e._thumbnail)==null?void 0:r.url:"cover"in e?(s=e.cover)==null?void 0:s.url:"tallPoster"in e?(i=e.tallPoster)==null?void 0:i.url:""},getShareRecipientsPhrase(e){var l,c,u;if(!e.length)return;let t={};if(e.length===1)return O.first(e).name;e.forEach(g=>{let $;switch(g.typeId){case d.User:$="users";break;case d.Classroom:$="classrooms";break;case d.ClassroomGroup:$="classroomGroups";break}const y=t[$]??[];y.push(g),t={...t,[$]:O.uniq(y)}});const r=t.classrooms&&!t.classroomGroups&&!t.users,s=t.classroomGroups&&!t.classrooms&&!t.users,i=t.users&&!t.classrooms&&!t.classroomGroups;if(r)return h("classrooms",{smartCount:t.classrooms.length});if(s)return h("groups",{smartCount:t.classroomGroups.length});if(i)return h("users",{smartCount:t.users.length});const n=[];(l=t.classrooms)!=null&&l.length&&n.push(h("classrooms",{smartCount:t.classrooms.length})),(c=t.classroomGroups)!=null&&c.length&&n.push(h("groups",{smartCount:t.classroomGroups.length})),(u=t.users)!=null&&u.length&&n.push(h("users",{smartCount:t.users.length}));const a=n.pop();return`${n.join(", ")} ${h("and")} ${a}`}};var R=(e=>(e.Expired="Expired",e.Active="Active",e))(R||{});const me="share.shareLinkInfo",o=H.encloseNamespace(me),L={getPrivateIconAndText:e=>{const{entityTypeId:t,privacy:r,hasStudentExp:s,entity:i,yearGroups:n}=e;if(t===d.Topic||t===d.Series)return{icon:V,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r.privacy){case"public":return{icon:V,text:o("publicDescription")};case"protected":return r.overrideRestrictions?{icon:V,text:o("clickViewOnly")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"just_my_customer":return r.overrideRestrictions?{icon:E,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"restricted":case"private":return{icon:E,text:o("privateDescription")};default:return{}}},getIconAndText:e=>{const{linkExpireDate:t,isPasswordProtected:r,status:s}=e;if(!t&&!r)return L.getPrivateIconAndText(e);if(!t)return{icon:E,text:o("password")};const i=B.isToday(t),n=B.diffBetween(t,new Date,"day");if(!r){let l=i?o("expiryToday"):o("expiry",{days:n});return s===R.Expired&&(l=o("expired")),{icon:ie,text:l}}let a=i?o("passwordExpiryToday"):o("passwordExpiry",{days:n});return s===R.Expired&&(a=o("passwordExpired")),{icon:E,text:a}},getRespectRatingText(e,t,r){var l;if(!e||!t)return null;if(r)return o("justMySchoolTeachers");if(!j.isVideoType(e))return o("collectionRating");const s=se.getWeightedRestriction((l=e._restrictions)==null?void 0:l.value);if(s&&!s.yearGroup)return o("onlyAdmins");const i=j.getRating(e);let n,a;for(const c of t)(!n||c.value>n.value)&&(n=c),!(s&&c.value<=s.yearGroup)&&(i&&c.rating.value<i.value||(!a||c.value<a.value)&&(a=c));return a?t.length===1?o("clickViewOnly"):a.value===n.value?o("maxYearGroup",{yearGroup:n.name}):o("yearGroupRange",{yearGroup:a.name}):o("onlyStaff")}};export{le as R,P as S,L as a,R as b};
|
|
2
|
+
//# sourceMappingURL=BuHHZnEg.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuHHZnEg.chunk.js","sources":["../../../../libs/shared/src/utils/RecentItemHelper.ts","../../../../libs/shared/src/apps/share/utils/RecentShareHelper.ts","../../../../libs/common/src/backbone/interfaces/BaseCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistVideoCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/utils/PlaylistStateUpdateHelper.ts","../../../../libs/shared/src/utils/ReorderHelper.ts","../../../../libs/shared/src/flight-requests/PlaylistRequests.ts","../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../../../libs/shared/src/apps/share/views/share/ShareViewHelper.ts","../../../../libs/shared/src/enums/ShareLinkStatus.ts","../../../../libs/shared/src/apps/share/utils/ShareLinkHelper.ts"],"sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nconst DEFAULT_STORAGE_LIMIT = 5;\n\ninterface AddRecentItemOptions {\n id: string;\n limit?: number;\n expire?: boolean;\n}\n\nexport const RecentItemHelper = {\n getRecentItem(cacheKey: string, dataSource: StorageHelper, expire: boolean = true): string[] {\n let recentItems = expire ? dataSource.cacheGet(cacheKey) : dataSource.get(cacheKey);\n\n if (!Array.isArray(recentItems))\n recentItems = [];\n\n return recentItems;\n },\n\n setRecentItem(cacheKey: string, ids: string[], dataSource: StorageHelper, expire?: boolean): void {\n if (!Array.isArray(ids))\n return;\n\n if (expire) {\n dataSource.cacheSet(cacheKey, ids);\n return;\n }\n\n dataSource.set(cacheKey, ids);\n },\n\n addRecentItem(cacheKey: string, dataSource: StorageHelper, options: AddRecentItemOptions): string[] {\n const { id, limit = DEFAULT_STORAGE_LIMIT, expire = true } = options;\n\n let recentItems = RecentItemHelper.getRecentItem(cacheKey, dataSource, expire);\n\n const idIndex = recentItems.indexOf(id);\n\n /**\n * If the item is already in the stored list, \n * remove it so that it will be inserted at the first position.\n */\n if (idIndex > -1)\n recentItems.splice(idIndex, 1);\n\n recentItems.unshift(id);\n\n if (recentItems.length > limit)\n recentItems = recentItems.slice(0, limit);\n\n RecentItemHelper.setRecentItem(cacheKey, recentItems, dataSource, expire);\n\n return recentItems;\n },\n\n removeRecentItem(cacheKey: string, id: string, dataSource: StorageHelper): void {\n const items = RecentItemHelper.getRecentItem(cacheKey, dataSource);\n const omitted = items.filter(i => i !== id.toString());\n RecentItemHelper.setRecentItem(cacheKey, omitted, dataSource);\n }\n};","import { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { RecentItemHelper } from 'libs/shared/utils/RecentItemHelper';\n\nconst getCacheKey = (userId: string) => `recently:shared:to:${userId}`;\n\ninterface AddRecentShareOptions {\n id: string;\n limit?: number;\n}\n\nexport const RecentShareHelper = {\n /**\n * Get a list of ids of recipients recently shared to.\n */\n getRecentlySharedTo(userId: string): string[] {\n return RecentItemHelper.getRecentItem(getCacheKey(userId), LocalStorageHelper);\n },\n \n addRecentlySharedTo(userId: string, options: AddRecentShareOptions): string[] {\n return RecentItemHelper.addRecentItem(getCacheKey(userId), LocalStorageHelper, options);\n }\n};","import { ObjectHash } from 'backbone';\n\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport interface BaseCollectionIdentifierOptions<T> {\n collectionPrefix?: string;\n id?: string;\n sort?: T;\n cursor?: string;\n}\n\nexport class BaseCollectionIdentifier<T = HashObject> {\n public id: string;\n public sort: T;\n public cursor: string;\n public collectionPrefix: string;\n\n constructor(options: BaseCollectionIdentifierOptions<T>) {\n this.setData(options);\n }\n\n protected setData(options: BaseCollectionIdentifierOptions<T>): void {\n const { collectionPrefix, id, sort, cursor } = options;\n\n if (id)\n this.id = id;\n\n if (sort)\n this.sort = sort;\n\n if (cursor)\n this.cursor = cursor;\n\n if (collectionPrefix)\n this.collectionPrefix = collectionPrefix;\n }\n\n public toString(): string {\n const params = [\n this.collectionPrefix,\n this.id,\n this.sort,\n this.cursor\n ];\n\n return params.filter(Boolean).join(':');\n }\n\n public toParams(): ObjectHash {\n const params: ObjectHash = {};\n\n if (this.sort)\n params.sort = this.getSortTypeParam().toLowerCase();\n\n if (this.cursor)\n params.cursor = this.cursor;\n\n return params;\n }\n\n protected getSortTypeParam(): string {\n ErrorHelper.throw(new DevError('getSortTypeParam must be implemented when extending BaseCollectionIdentifier'));\n\n return '';\n }\n}","import { BaseCollectionIdentifier } from 'libs/common/backbone/interfaces';\n\nexport class PlaylistVideoCollectionIdentifier extends BaseCollectionIdentifier {\n constructor(id: string, cursor: string = '') {\n super({ collectionPrefix: 'playlist:videos', id, cursor });\n }\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\n\ntype StateMap = { [key: string]: HashObject };\n\nexport const PlaylistStateUpdateHelper = {\n deletePlaylist(key: string): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (updatedState.hasOwnProperty(key))\n delete updatedState[key];\n\n return updatedState;\n };\n },\n\n incrementVideoCount(key: string, count: number): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (!updatedState.hasOwnProperty(key))\n return state;\n\n if (!updatedState[key].videos)\n updatedState[key].videos = {};\n\n updatedState[key].videos.count = updatedState[key].videos.count\n ? updatedState[key].videos.count + count\n : count;\n\n return updatedState;\n };\n }\n};","import { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { BaseObject, ReorderRequest } from 'libs/shared/interfaces';\n\ninterface ReorderResult<T extends BaseObject> {\n reorderRequest: ReorderRequest;\n reorderedItems: T[];\n}\n\nexport const ReorderHelper = {\n reorder<T extends BaseObject>(items: T[], oldIdx: number, newIdx: number): ReorderResult<T> {\n if (oldIdx === newIdx)\n return { reorderedItems: items, reorderRequest: null };\n\n const reorderedItems: T[] = ArrayHelper.moveItem(items, oldIdx, newIdx);\n\n /**\n * If newIdx is the last idx then we set\n * destinationMemberId to null.\n */\n const destinationMemberId = newIdx < items.length - 1\n ? reorderedItems[newIdx + 1].id\n : null;\n\n const reorderRequest: ReorderRequest = {\n sourceMemberId: reorderedItems[newIdx].id,\n destinationMemberId\n };\n\n return { reorderedItems, reorderRequest };\n },\n\n updateState(\n dataPrefix: string,\n reorderRequest: ReorderRequest,\n data: { [key: string]: HashObject }\n ): { [key: string]: HashObject } {\n const items: BaseObject[] = [];\n const updatedData = ObjectHelper.deepClone(data);\n\n const keys = [dataPrefix]; // Maintain an ordered list of keys.\n let page = data[dataPrefix];\n const pageSize = !!page && !!page.data && page.data.length;\n\n /**\n * Flatten items\n */\n while (page) {\n if (!Array.isArray(page.data))\n break;\n\n items.push(...page.data as BaseObject[]);\n\n const nextCursor = page.pagination\n && page.pagination.cursors\n && page.pagination.cursors.next;\n\n const nextKey = !!nextCursor && `${dataPrefix}:${nextCursor}`;\n\n page = nextCursor && data[nextKey];\n\n if (page)\n keys.push(nextKey);\n }\n\n if (!items.length)\n return data;\n\n /**\n * Reorder items\n */\n const removeIdx = ArrayHelper.findIndex(items, i => i.id === reorderRequest.sourceMemberId);\n\n let reorderedItems = [...items];\n\n const itemToMove = reorderedItems.splice(removeIdx, 1);\n\n const insertIdx = reorderRequest.destinationMemberId\n ? ArrayHelper.findIndex(reorderedItems, r => r.id === reorderRequest.destinationMemberId)\n : reorderedItems.length;\n\n reorderedItems.splice(insertIdx, 0, itemToMove[0]);\n\n reorderedItems = reorderedItems.map(v => ({ id: v.id }));\n\n /**\n * Paginate reordered items\n */\n keys.forEach(key => {\n const itemsToInsert = reorderedItems.splice(0, pageSize);\n updatedData[key].data = itemsToInsert;\n });\n\n return updatedData;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { CreateOrUpdatePlaylistRequest, PlaylistCollectionIdentifier, PlaylistVideoCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces';\nimport { PlaylistStateUpdateHelper } from 'libs/shared/apps/playlists/utils/PlaylistStateUpdateHelper';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Following, ReorderRequest, UserCollection, VideoTypes } from 'libs/shared/interfaces';\nimport { ObjectApiXhr } from 'libs/shared/interfaces/responses/ErrorResponse';\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport const PlaylistRequests = {\n // TODO: Get working with objects api (playlist count needs to include clips and ints too)\n getUserPlaylists(collectionIdentifier: PlaylistCollectionIdentifier): Flight.Request {\n const { sort, type } = collectionIdentifier;\n\n const params: HashObject = {\n sort: sort,\n query: `{limit:100}${SharedWithStatements.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`\n };\n\n if (collectionIdentifier.cursor)\n params.cursor = collectionIdentifier.cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v2/me/playlists/${type}`, params),\n key: collectionIdentifier.toString()\n };\n },\n\n getPlaylist(id: string, success?: (data: any) => void, error?: (data: any) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated`\n }),\n key: `playlist:${id}`,\n success,\n error\n };\n },\n\n getSharedPlaylist(\n id: string,\n shareId: string,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`,\n shareId\n }),\n key: `shared:playlist:${id}:${shareId}`,\n success,\n error\n };\n },\n\n playlistWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`\n }),\n key: `playlist:${id}:thumbnail:count`\n };\n },\n\n getPlaylistVideos(id: string, cursor?: string): Flight.PublicRequest {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `playlist:${id}:videos${cursor ? `:${cursor}` : ''}`\n };\n },\n\n getSharedPlaylistVideos(id: string, shareId: string, cursor?: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `shared:playlist:${id}:${shareId}:videos:${cursor}`\n };\n },\n\n getPlaylistVideosCount(id: string): Flight.PublicRequest {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n key: `playlist:count:${id}`,\n normalize: false\n };\n },\n\n getSharedPlaylistVideosCount(\n id: string,\n shareId: string\n ): Flight.Request {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`,\n shareId\n }),\n key: `shared:playlist:count:${id}:${shareId}`,\n normalize: false\n };\n },\n\n getVideoPlaylists(videoId: string, userId: string, cursor?: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/playlists?query={limit:100,owner.id:[${userId}]}`,\n key: `video:playlists:${videoId}${cursor ? ':cursor' : ''}`\n };\n },\n\n createPlaylist(\n userId: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'create:playlist',\n url: `{gateway}/v1/objects/${userId}/playlists`,\n data,\n type: HttpVerbs.POST,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists'\n };\n },\n\n updatePlaylist(\n id: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'update:playlist',\n url: `{gateway}/v1/objects/${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deletePlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'delete:playlist',\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}`,\n updateData: PlaylistStateUpdateHelper.deletePlaylist(`playlist:${id}`)\n }\n };\n },\n\n copyPlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/playlists/copy',\n key: 'copy:playlist',\n data: { playlistId: id },\n type: HttpVerbs.POST,\n invalidationKeys: 'user:playlists',\n success,\n error,\n always\n };\n },\n\n addToPlaylist(\n playlistId: string,\n videos: VideoTypes[],\n success?: (data: any) => void,\n error?: (data: ObjectApiXhr) => void\n ): Flight.Request {\n /**\n * Invalidate:\n * - Playlists as they are fetched with first video.\n * - Playlist video collection.\n * - Playlists for each video.\n */\n const invalidationKeys = [\n 'user:playlists',\n (new PlaylistVideoCollectionIdentifier(playlistId)).toString(),\n `playlist:${playlistId}:videos`\n ];\n\n videos.forEach(video => {\n invalidationKeys.push(`video:playlists:${video.id}`);\n });\n\n const body = videos.reduce((acc: HashObject, video: VideoTypes) => {\n if (VideoHelper.isClip(video)) {\n if (Array.isArray(acc.clips))\n acc.clips.push({ id: video.id });\n else\n acc.clips = [{ id: video.id }];\n }\n\n if (VideoHelper.isInteractive(video)) {\n if (Array.isArray(acc.interactives))\n acc.interactives.push({ id: video.id });\n else\n acc.interactives = [{ id: video.id }];\n }\n\n if (VideoHelper.isVideo(video)) {\n if (Array.isArray(acc.videos))\n acc.videos.push({ id: video.id });\n else\n acc.videos = [{ id: video.id }];\n }\n\n return acc;\n }, {});\n\n return {\n key: `add:to:playlist:${playlistId}:${videos.map(v => v.id).join(':')}`,\n url: `{gateway}/v1/objects/${playlistId}`,\n data: body,\n type: HttpVerbs.PUT,\n success,\n error,\n invalidationKeys,\n updateState: {\n keys: `playlist:${playlistId}`,\n updateData: PlaylistStateUpdateHelper.incrementVideoCount(`playlist:${playlistId}`, videos.length)\n },\n normalize: false\n };\n },\n\n removePlaylistVideo(\n playlistId: string,\n videoId: string,\n typeId: MasterType,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n let baseUrl = `{gateway}/v1/objects/${playlistId}`;\n\n if (typeId === MasterType.Clip)\n baseUrl += '/clips';\n else if (typeId === MasterType.Interactive)\n baseUrl += '/interactives';\n else\n baseUrl += '/videos';\n\n return {\n key: 'remove:playlist:video',\n url: UrlHelper.urlBuilder(baseUrl, { memberId: videoId }),\n type: HttpVerbs.DELETE,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: [\n 'user:playlists',\n `playlist:${playlistId}:videos`,\n `video:playlists:${videoId}`,\n `playlist:${playlistId}`\n ]\n };\n },\n\n getIsFollowingPlaylist(playlistId: string, userId: string): Flight.Request {\n const formatData: ((data: UserCollection) => Following) = (data: UserCollection) => (\n { objectId: playlistId, isFollowing: !!data?.data?.length }\n );\n\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?query={id:${playlistId}}`,\n key: `playlist:${playlistId}:following:${userId}`,\n formatData,\n normalize: false\n };\n },\n\n followPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}`,\n key: `follow:playlist:${playlistId}`,\n data: { followedPlaylists: playlistId },\n type: HttpVerbs.PUT,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n unfollowPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?memberId=${playlistId}`,\n key: `unfollow:playlist:${playlistId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n // TODO: Use objects api and get working with clips + ints\n reorderVideos(\n id: string,\n reorderRequest: ReorderRequest,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n key: `reorder:playlist`,\n url: `{gateway}/v1/playlists/${id}/reorder`,\n data: reorderRequest,\n type: HttpVerbs.PUT,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}:videos`,\n updateData: (data: { [key: string]: HashObject }) =>\n ReorderHelper.updateState(`playlist:${id}:videos`, reorderRequest, data)\n }\n };\n },\n\n getVideoCandidate(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=_restrictions`,\n key: `add:to:playlist:candidate:${id}`\n };\n }\n};\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport {\n AnalyticsOptions, EntityType, EventVersion, LocationContext, ShareDescriptors, UserAction, WorkflowPhase\n} from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { CreateDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/CreateDirectShareRequest';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/CreateShareLinkRequest';\nimport { EditDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/EditDirectShareRequest';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { RecentShareHelper } from 'libs/shared/apps/share/utils/RecentShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseObject, Classification, Classroom, ClassroomGroup, Clip, CurrentUser, DirectShare, InteractiveMetadata, Playlist, Series, ShareLink, ShareRecipient, Subject, User, Video } from 'libs/shared/interfaces';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport type SharableRecipient = User | Classroom | ClassroomGroup;\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n getObjectTypeId(type: SharableEntityType): MasterType {\n switch (type) {\n case 'video':\n return MasterType.Video;\n\n case 'playlist':\n return MasterType.Playlist;\n\n case 'subject':\n return MasterType.Subject;\n\n case 'series':\n return MasterType.Series;\n\n case 'interactive':\n return MasterType.Interactive;\n\n case 'clip':\n return MasterType.Clip;\n }\n },\n\n createLink(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n alerts: Alerts;\n password?: string;\n linkExpireDate?: string;\n success?: (shareLink: ShareLink) => void;\n }): void {\n const success = (newShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...newShareLink, objectName: options.entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(options.entityType), {\n actionType: UserAction.Create,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (options.success)\n options.success(newShareLink);\n };\n\n const error = () => {\n options.alerts.error(getPhrase('createLinkError', { name: options.entity.name }));\n };\n\n const data: CreateShareLinkRequest = {\n resourceId: options.entity.id,\n overrideRestrictions: false\n };\n\n if (options.password)\n data.password = options.password;\n\n if (options.linkExpireDate)\n data.linkExpireDate = options.linkExpireDate;\n\n\n Flight.fetch(options.dispatch, ShareRequests.createShareLink(data, success, error));\n },\n\n updateLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n data: EditShareLinkRequest,\n alerts: Alerts,\n onSuccess?: (data?: ShareLink) => void,\n onError?: () => void\n ): void {\n const success = (updatedShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShareLink);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.editShareLink(shareLink, data, success, error));\n },\n\n deleteLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n alerts: Alerts,\n onSuccess?: () => void,\n onDone?: () => void\n ): void {\n const success = () => {\n AnalyticsHelper.logUserAction(\n { ...shareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink\n })\n );\n\n if (onSuccess)\n onSuccess();\n\n alerts.success(getPhrase('deleteSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n alerts.error(getPhrase('deleteError', { name: entity.name, escapeText: true }));\n };\n\n const always = () => {\n if (onDone)\n onDone();\n };\n\n Flight.fetch(dispatch, ShareRequests.deleteShareLink(shareLink, success, error, always));\n },\n\n createOrUpdateDirectShare(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n currentUser: CurrentUser;\n recipients: ShareRecipient[];\n sentDirectShare?: DirectShare;\n message: string;\n onSuccess?: (updatedDirectShare: DirectShare) => void;\n onError?: () => void;\n onDone?: () => void;\n }): void {\n const {\n dispatch, entity, entityType, currentUser, recipients, sentDirectShare, message,\n onSuccess, onError, onDone\n } = options;\n\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n {\n id: entity.id,\n name: entity.name,\n shareCount: recipients.length\n },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.DirectShare,\n eventVersion: EventVersion.V3\n })\n );\n\n recipients.map(recipient => {\n RecentShareHelper.addRecentlySharedTo(currentUser.id, { id: recipient.id });\n });\n };\n\n const createData: CreateDirectShareRequest = {\n objectId: entity.id,\n objectTypeId: ShareViewHelper.getObjectTypeId(entityType),\n recipients,\n message\n };\n\n const updateData: EditDirectShareRequest = {\n recipients,\n message\n };\n\n const request = sentDirectShare\n ? ShareRequests.updateDirectShareRecipients(sentDirectShare.id, updateData, success, onError, onDone)\n : ShareRequests.createDirectShare(createData, success, onError, onDone);\n\n Flight.fetch(dispatch, request);\n },\n\n removeDirectShareRecipient(\n dispatch: Flight.Dispatch,\n recipientId: string,\n entityType: SharableEntityType,\n sentDirectShare?: DirectShare,\n onSuccess?: (updatedDirectShare: DirectShare) => void,\n onError?: () => void\n ): void {\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n { shareCount: 1 },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Unshare\n })\n );\n };\n\n Flight.fetch(\n dispatch,\n ShareRequests.removeDirectShareRecipient(\n sentDirectShare.id,\n recipientId,\n success,\n onError\n )\n );\n },\n\n getDirectShareRecipientsRequest(customerId: string, directShare?: DirectShare): Flight.Request {\n const hasRecipients = !!directShare?.recipients?.length;\n\n return hasRecipients &&\n ShareRequests.getDirectShareRecipientsById(directShare.id, directShare.recipients, customerId);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n\n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n\n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n\n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getImageUrl(sharedResource: SharableEntity): string {\n // Videos and potentially interactives + clips\n if ('thumbnail' in sharedResource && !!sharedResource.thumbnail)\n return sharedResource.thumbnail?.url;\n\n if ('_thumbnail' in sharedResource && !!sharedResource._thumbnail)\n return sharedResource._thumbnail?.url;\n\n // Topics and playlists\n if ('cover' in sharedResource)\n return sharedResource.cover?.url;\n\n // Series\n if ('tallPoster' in sharedResource)\n return sharedResource.tallPoster?.url;\n\n return '';\n },\n\n getShareRecipientsPhrase(selections: BaseObject[]) {\n if (!selections.length)\n return;\n\n let recipients: { [type: string]: BaseObject[] } = {};\n\n if (selections.length === 1) {\n return ArrayHelper.first(selections).name;\n }\n \n selections.forEach(s => {\n let paramKey;\n \n switch (s.typeId) {\n case MasterType.User:\n paramKey = 'users';\n break;\n \n case MasterType.Classroom:\n paramKey = 'classrooms';\n break;\n \n case MasterType.ClassroomGroup:\n paramKey = 'classroomGroups';\n break;\n }\n\n const recipientType = recipients[paramKey] ?? [];\n\n recipientType.push(s);\n\n recipients = {\n ...recipients,\n [paramKey]: ArrayHelper.uniq(recipientType)\n };\n });\n\n const onlyClassroomsSelected = recipients.classrooms &&\n !recipients.classroomGroups &&\n !recipients.users;\n const onlyGroupsSelected = recipients.classroomGroups &&\n !recipients.classrooms &&\n !recipients.users;\n const onlyUsersSelected = recipients.users &&\n !recipients.classrooms &&\n !recipients.classroomGroups;\n \n if (onlyClassroomsSelected)\n return getPhrase('classrooms', { smartCount: recipients.classrooms.length });\n \n if (onlyGroupsSelected)\n return getPhrase('groups', { smartCount: recipients.classroomGroups.length });\n \n if (onlyUsersSelected)\n return getPhrase('users', { smartCount: recipients.users.length });\n \n const mixedSelections = [];\n \n if (recipients.classrooms?.length)\n mixedSelections.push(getPhrase('classrooms', { smartCount: recipients.classrooms.length }));\n \n if (recipients.classroomGroups?.length)\n mixedSelections.push(getPhrase('groups', { smartCount: recipients.classroomGroups.length }));\n \n if (recipients.users?.length)\n mixedSelections.push(getPhrase('users', { smartCount: recipients.users.length }));\n \n const lastSelection = mixedSelections.pop();\n \n return `${mixedSelections.join(', ')} ${getPhrase('and')} ${lastSelection}`;\n }\n};","export enum ShareLinkStatus {\n Expired = 'Expired',\n Active = 'Active'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: VisibleOnSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy.privacy) {\n case 'public':\n return { icon: VisibleOnSvg, text: getPhrase('publicDescription') };\n case 'protected':\n if (privacy.overrideRestrictions)\n return { icon: VisibleOnSvg, text: getPhrase('clickViewOnly') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case 'just_my_customer':\n if (privacy.overrideRestrictions)\n return { icon: LockSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n /**\n * Because we plan to add restricted management later \n * for the time being we treat is the same as private \n */\n case 'restricted':\n case 'private':\n return { icon: LockSvg, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: LockSvg, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: TimerSvg, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: LockSvg, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n }\n};"],"names":["DEFAULT_STORAGE_LIMIT","RecentItemHelper","cacheKey","dataSource","expire","recentItems","ids","options","id","limit","idIndex","omitted","i","getCacheKey","userId","RecentShareHelper","LocalStorageHelper","BaseCollectionIdentifier","collectionPrefix","sort","cursor","params","ErrorHelper","DevError","PlaylistVideoCollectionIdentifier","PlaylistStateUpdateHelper","key","state","updatedState","count","ReorderHelper","items","oldIdx","newIdx","reorderedItems","ArrayHelper","destinationMemberId","reorderRequest","dataPrefix","data","updatedData","ObjectHelper","keys","page","pageSize","nextCursor","nextKey","removeIdx","itemToMove","insertIdx","r","v","itemsToInsert","PlaylistRequests","collectionIdentifier","type","SharedWithStatements","UrlHelper","success","error","shareId","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","CurationStatus","PermissionFilterOption","filter","videoId","always","HttpVerbs","playlistId","videos","invalidationKeys","video","body","acc","VideoHelper","typeId","baseUrl","MasterType","formatData","_a","endpoints","videoCount","SeriesRequests","queryStringObj","sortFilter","VideoSortHelper","k","PublicWithStatement","namespace","getPhrase","LanguageService","ShareViewHelper","newShareLink","AnalyticsHelper","UserAction","EntityType","EventVersion","Flight.fetch","ShareRequests","dispatch","entity","entityType","shareLink","alerts","onSuccess","onError","updatedShareLink","onDone","currentUser","recipients","sentDirectShare","message","updatedDirectShare","ShareDescriptors","recipient","createData","updateData","request","recipientId","customerId","directShare","LocationContext","WorkflowPhase","Flight.useBasicFetch","VideoRequests","ClassificationRequests","InteractiveRequests","ClipRequests","sharedResource","_b","_c","_d","selections","s","paramKey","recipientType","onlyClassroomsSelected","onlyGroupsSelected","onlyUsersSelected","mixedSelections","lastSelection","ShareLinkStatus","ShareLinkHelper","entityTypeId","privacy","hasStudentExp","yearGroups","VisibleOnSvg","LockSvg","linkExpireDate","isPasswordProtected","status","isToday","DateHelper","dayDifference","text","TimerSvg","restriction","RestrictionHelper","rating","maxYearGroup","minAllowedYearGroup","yearGroup"],"mappings":"sWAEA,MAAMA,GAAwB,EAQjBC,EAAmB,CAC9B,cAAcC,EAAkBC,EAA2BC,EAAkB,GAAgB,CAC3F,IAAIC,EAAcD,EAASD,EAAW,SAASD,CAAQ,EAAIC,EAAW,IAAID,CAAQ,EAElF,OAAK,MAAM,QAAQG,CAAW,IAC5BA,EAAc,CAAA,GAETA,CACT,EAEA,cAAcH,EAAkBI,EAAeH,EAA2BC,EAAwB,CAChG,GAAK,MAAM,QAAQE,CAAG,EAGtB,IAAIF,EAAQ,CACVD,EAAW,SAASD,EAAUI,CAAG,EACjC,MACF,CAEAH,EAAW,IAAID,EAAUI,CAAG,EAC9B,EAEA,cAAcJ,EAAkBC,EAA2BI,EAAyC,CAClG,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAQT,GAAuB,OAAAI,EAAS,IAASG,EAE7D,IAAIF,EAAcJ,EAAiB,cAAcC,EAAUC,EAAYC,CAAM,EAE7E,MAAMM,EAAUL,EAAY,QAAQG,CAAE,EAMtC,OAAIE,EAAU,IACZL,EAAY,OAAOK,EAAS,CAAC,EAE/BL,EAAY,QAAQG,CAAE,EAElBH,EAAY,OAASI,IACvBJ,EAAcA,EAAY,MAAM,EAAGI,CAAK,GAE1CR,EAAiB,cAAcC,EAAUG,EAAaF,EAAYC,CAAM,EAEjEC,CACT,EAEA,iBAAiBH,EAAkBM,EAAYL,EAAiC,CAE9E,MAAMQ,EADQV,EAAiB,cAAcC,EAAUC,CAAU,EAC3C,UAAYS,IAAMJ,EAAG,UAAU,EACrDP,EAAiB,cAAcC,EAAUS,EAASR,CAAU,CAC9D,CACF,ECzDMU,EAAeC,GAAmB,sBAAsBA,CAAM,GAOvDC,GAAoB,CAI/B,oBAAoBD,EAA0B,CAC5C,OAAOb,EAAiB,cAAcY,EAAYC,CAAM,EAAGE,CAAkB,CAC/E,EAEA,oBAAoBF,EAAgBP,EAA0C,CAC5E,OAAON,EAAiB,cAAcY,EAAYC,CAAM,EAAGE,EAAoBT,CAAO,CACxF,CACF,ECTO,MAAMU,EAAyC,CAMpD,YAAYV,EAA6C,CACvD,KAAK,QAAQA,CAAO,CACtB,CAEU,QAAQA,EAAmD,CACnE,KAAM,CAAE,iBAAAW,EAAkB,GAAAV,EAAI,KAAAW,EAAM,OAAAC,GAAWb,EAE3CC,IACF,KAAK,GAAKA,GAERW,IACF,KAAK,KAAOA,GAEVC,IACF,KAAK,OAASA,GAEZF,IACF,KAAK,iBAAmBA,EAC5B,CAEO,UAAmB,CAQxB,MAPe,CACb,KAAK,iBACL,KAAK,GACL,KAAK,KACL,KAAK,MAAA,EAGO,OAAO,OAAO,EAAE,KAAK,GAAG,CACxC,CAEO,UAAuB,CAC5B,MAAMG,EAAqB,CAAA,EAE3B,OAAI,KAAK,OACPA,EAAO,KAAO,KAAK,iBAAA,EAAmB,YAAA,GAEpC,KAAK,SACPA,EAAO,OAAS,KAAK,QAEhBA,CACT,CAEU,kBAA2B,CACnC,OAAAC,EAAY,MAAM,IAAIC,EAAS,8EAA8E,CAAC,EAEvG,EACT,CACF,CCjEO,MAAMC,WAA0CP,EAAyB,CAC9E,YAAYT,EAAYY,EAAiB,GAAI,CAC3C,MAAM,CAAE,iBAAkB,kBAAmB,GAAAZ,EAAI,OAAAY,EAAQ,CAC3D,CACF,CCFO,MAAMK,EAA4B,CACvC,eAAeC,EAA4C,CACzD,OAAQC,GAAoB,CAC1B,MAAMC,EAAe,CAAE,GAAGD,CAAA,EAE1B,OAAIC,EAAa,eAAeF,CAAG,GACjC,OAAOE,EAAaF,CAAG,EAElBE,CACT,CACF,EAEA,oBAAoBF,EAAaG,EAA8C,CAC7E,OAAQF,GAAoB,CAC1B,MAAMC,EAAe,CAAE,GAAGD,CAAA,EAE1B,OAAKC,EAAa,eAAeF,CAAG,GAG/BE,EAAaF,CAAG,EAAE,SACrBE,EAAaF,CAAG,EAAE,OAAS,CAAA,GAE7BE,EAAaF,CAAG,EAAE,OAAO,MAAQE,EAAaF,CAAG,EAAE,OAAO,MACtDE,EAAaF,CAAG,EAAE,OAAO,MAAQG,EACjCA,EAEGD,GATED,CAUX,CACF,CACF,ECtBaG,GAAgB,CAC3B,QAA8BC,EAAYC,EAAgBC,EAAkC,CAC1F,GAAID,IAAWC,EACb,MAAO,CAAE,eAAgBF,EAAO,eAAgB,IAAA,EAElD,MAAMG,EAAsBC,EAAY,SAASJ,EAAOC,EAAQC,CAAM,EAMhEG,EAAsBH,EAASF,EAAM,OAAS,EAChDG,EAAeD,EAAS,CAAC,EAAE,GAC3B,KAEEI,EAAiC,CACrC,eAAgBH,EAAeD,CAAM,EAAE,GACvC,oBAAAG,CAAA,EAGF,MAAO,CAAE,eAAAF,EAAgB,eAAAG,CAAA,CAC3B,EAEA,YACEC,EACAD,EACAE,EAC+B,CAC/B,MAAMR,EAAsB,CAAA,EACtBS,EAAcC,EAAa,UAAUF,CAAI,EAEzCG,EAAO,CAACJ,CAAU,EACxB,IAAIK,EAAOJ,EAAKD,CAAU,EAC1B,MAAMM,EAAW,CAAC,CAACD,GAAQ,CAAC,CAACA,EAAK,MAAQA,EAAK,KAAK,OAKpD,KAAOA,GACA,MAAM,QAAQA,EAAK,IAAI,GADjB,CAIXZ,EAAM,KAAK,GAAGY,EAAK,IAAoB,EAEvC,MAAME,EAAaF,EAAK,YACnBA,EAAK,WAAW,SAChBA,EAAK,WAAW,QAAQ,KAEvBG,EAAU,CAAC,CAACD,GAAc,GAAGP,CAAU,IAAIO,CAAU,GAE3DF,EAAOE,GAAcN,EAAKO,CAAO,EAE7BH,GACFD,EAAK,KAAKI,CAAO,CACrB,CAEA,GAAI,CAACf,EAAM,OACT,OAAOQ,EAKT,MAAMQ,EAAYZ,EAAY,UAAUJ,KAAYnB,EAAE,KAAOyB,EAAe,cAAc,EAE1F,IAAIH,EAAiB,CAAC,GAAGH,CAAK,EAE9B,MAAMiB,EAAad,EAAe,OAAOa,EAAW,CAAC,EAE/CE,EAAYZ,EAAe,oBAC7BF,EAAY,UAAUD,EAAgBgB,GAAKA,EAAE,KAAOb,EAAe,mBAAmB,EACtFH,EAAe,OAEnB,OAAAA,EAAe,OAAOe,EAAW,EAAGD,EAAW,CAAC,CAAC,EAEjDd,EAAiBA,EAAe,IAAIiB,IAAM,CAAE,GAAIA,EAAE,IAAK,EAKvDT,EAAK,QAAQhB,GAAO,CAClB,MAAM0B,EAAgBlB,EAAe,OAAO,EAAGU,CAAQ,EACvDJ,EAAYd,CAAG,EAAE,KAAO0B,CAC1B,CAAC,EAEMZ,CACT,CACF,EChFaa,GAAmB,CAE9B,iBAAiBC,EAAoE,CACnF,KAAM,CAAE,KAAAnC,EAAM,KAAAoC,CAAA,EAASD,EAEjBjC,EAAqB,CACzB,KAAAF,EACA,MAAO,cAAcqC,EAAqB,mBAAmB,iCAAA,EAG/D,OAAIF,EAAqB,SACvBjC,EAAO,OAASiC,EAAqB,QAEhC,CACL,IAAKG,EAAU,WAAW,+BAA+BF,CAAI,GAAIlC,CAAM,EACvE,IAAKiC,EAAqB,SAAA,CAAS,CAEvC,EAEA,YAAY9C,EAAYkD,EAA+BC,EAAmD,CACxG,MAAO,CACL,IAAKF,EAAU,WAAW,wBAAwBjD,CAAE,GAAI,CACtD,MAAO,GAAGgD,EAAqB,QAAQ,iCAAA,CACxC,EACD,UAAWC,EAAU,WAAW,gBAAgBjD,CAAE,GAAI,CACpD,MAAO,GAAGgD,EAAqB,QAAQ,sBAAA,CACxC,EACD,IAAK,YAAYhD,CAAE,GACnB,QAAAkD,EACA,MAAAC,CAAA,CAEJ,EAEA,kBACEnD,EACAoD,EACAF,EACAC,EACgB,CAChB,MAAO,CACL,IAAKF,EAAU,WAAW,gBAAgBjD,CAAE,GAAI,CAC9C,MAAO,GAAGgD,EAAqB,QAAQ,kCACvC,QAAAI,CAAA,CACD,EACD,IAAK,mBAAmBpD,CAAE,IAAIoD,CAAO,GACrC,QAAAF,EACA,MAAAC,CAAA,CAEJ,EAEA,8BAA8BnD,EAA4B,CACxD,MAAO,CACL,IAAKiD,EAAU,WAAW,wBAAwBjD,CAAE,GAAI,CACtD,MAAO,GAAGgD,EAAqB,QAAQ,iHAAA,CACxC,EACD,IAAK,YAAYhD,CAAE,kBAAA,CAEvB,EAEA,kBAAkBA,EAAYY,EAAuC,CACnE,KAAM,CAAE,iBAAAyC,EAAkB,gBAAAC,EAAiB,YAAAC,CAAA,EAAgBP,EAErDnC,EAAqB,CACzB,MAAO,WAAWwC,CAAgB,aAAaG,EAAe,SAAS,IAAIA,EAAe,QAAQ,YAAYF,CAAe,aAAaE,EAAe,SAAS,IAAIA,EAAe,QAAQ,mBAAmBD,CAAW,mCAC3N,uBAAwBE,EAAuB,aAAA,EAGjD,OAAI7C,IACFC,EAAO,OAASD,GAEX,CACL,IAAKqC,EAAU,WAAW,wBAAwBjD,CAAE,WAAYa,CAAM,EACtE,UAAWoC,EAAU,WAAW,gBAAgBjD,CAAE,WAAYa,CAAM,EACpE,IAAK,YAAYb,CAAE,UAAUY,EAAS,IAAIA,CAAM,GAAK,EAAE,EAAA,CAE3D,EAEA,wBAAwBZ,EAAYoD,EAAiBxC,EAAiC,CACpF,KAAM,CAAE,iBAAAyC,EAAkB,gBAAAC,EAAiB,YAAAC,CAAA,EAAgBP,EAErDnC,EAAqB,CACzB,MAAO,WAAWwC,CAAgB,aAAaG,EAAe,SAAS,IAAIA,EAAe,QAAQ,YAAYF,CAAe,aAAaE,EAAe,SAAS,IAAIA,EAAe,QAAQ,mBAAmBD,CAAW,mCAC3N,uBAAwBE,EAAuB,cAC/C,QAAAL,CAAA,EAGF,OAAIxC,IACFC,EAAO,OAASD,GAEX,CACL,IAAKqC,EAAU,WAAW,gBAAgBjD,CAAE,WAAYa,CAAM,EAC9D,IAAK,mBAAmBb,CAAE,IAAIoD,CAAO,WAAWxC,CAAM,EAAA,CAE1D,EAEA,uBAAuBZ,EAAkC,CACvD,MAAM0D,EAAS,oBAAoBF,EAAe,SAAS,IAAIA,EAAe,QAAQ,KACtF,MAAO,CACL,IAAKP,EAAU,WAAW,wBAAwBjD,CAAE,GAAI,CACtD,MAAO,kBAAkB0D,CAAM,kBAAkBA,CAAM,yBAAyBA,CAAM,EAAA,CACvF,EACD,UAAWT,EAAU,WAAW,gBAAgBjD,CAAE,GAAI,CACpD,MAAO,kBAAkB0D,CAAM,kBAAkBA,CAAM,yBAAyBA,CAAM,EAAA,CACvF,EACD,IAAK,kBAAkB1D,CAAE,GACzB,UAAW,EAAA,CAEf,EAEA,6BACEA,EACAoD,EACgB,CAChB,MAAMM,EAAS,oBAAoBF,EAAe,SAAS,IAAIA,EAAe,QAAQ,KACtF,MAAO,CACL,IAAKP,EAAU,WAAW,gBAAgBjD,CAAE,GAAI,CAC9C,MAAO,kBAAkB0D,CAAM,kBAAkBA,CAAM,yBAAyBA,CAAM,GACtF,QAAAN,CAAA,CACD,EACD,IAAK,yBAAyBpD,CAAE,IAAIoD,CAAO,GAC3C,UAAW,EAAA,CAEf,EAEA,kBAAkBO,EAAiBrD,EAAgBM,EAAiC,CAClF,MAAO,CACL,IAAK,wBAAwB+C,CAAO,yCAAyCrD,CAAM,KACnF,IAAK,mBAAmBqD,CAAO,GAAG/C,EAAS,UAAY,EAAE,EAAA,CAE7D,EAEA,eACEN,EACAyB,EACAmB,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,kBACL,IAAK,wBAAwBtD,CAAM,aACnC,KAAAyB,EACA,KAAM8B,EAAU,KAChB,QAAAX,EACA,MAAAC,EACA,OAAAS,EACA,iBAAkB,gBAAA,CAEtB,EAEA,eACE5D,EACA+B,EACAmB,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,kBACL,IAAK,wBAAwB5D,CAAE,GAC/B,KAAA+B,EACA,KAAM8B,EAAU,IAChB,QAAAX,EACA,MAAAC,EACA,OAAAS,CAAA,CAEJ,EAEA,eACE5D,EACAkD,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,kBACL,IAAK,wBAAwB5D,CAAE,GAC/B,KAAM6D,EAAU,OAChB,QAAAX,EACA,MAAAC,EACA,OAAAS,EACA,iBAAkB,iBAClB,YAAa,CACX,KAAM,YAAY5D,CAAE,GACpB,WAAYiB,EAA0B,eAAe,YAAYjB,CAAE,EAAE,CAAA,CACvE,CAEJ,EAEA,aACEA,EACAkD,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,8BACL,IAAK,gBACL,KAAM,CAAE,WAAY5D,CAAA,EACpB,KAAM6D,EAAU,KAChB,iBAAkB,iBAClB,QAAAX,EACA,MAAAC,EACA,OAAAS,CAAA,CAEJ,EAEA,cACEE,EACAC,EACAb,EACAC,EACgB,CAOhB,MAAMa,EAAmB,CACvB,iBACC,IAAIhD,GAAkC8C,CAAU,EAAG,SAAA,EACpD,YAAYA,CAAU,SAAA,EAGxBC,EAAO,QAAQE,GAAS,CACtBD,EAAiB,KAAK,mBAAmBC,EAAM,EAAE,EAAE,CACrD,CAAC,EAED,MAAMC,EAAOH,EAAO,OAAO,CAACI,EAAiBF,KACvCG,EAAY,OAAOH,CAAK,IACtB,MAAM,QAAQE,EAAI,KAAK,EACzBA,EAAI,MAAM,KAAK,CAAE,GAAIF,EAAM,GAAI,EAE/BE,EAAI,MAAQ,CAAC,CAAE,GAAIF,EAAM,GAAI,GAG7BG,EAAY,cAAcH,CAAK,IAC7B,MAAM,QAAQE,EAAI,YAAY,EAChCA,EAAI,aAAa,KAAK,CAAE,GAAIF,EAAM,GAAI,EAEtCE,EAAI,aAAe,CAAC,CAAE,GAAIF,EAAM,GAAI,GAGpCG,EAAY,QAAQH,CAAK,IACvB,MAAM,QAAQE,EAAI,MAAM,EAC1BA,EAAI,OAAO,KAAK,CAAE,GAAIF,EAAM,GAAI,EAEhCE,EAAI,OAAS,CAAC,CAAE,GAAIF,EAAM,GAAI,GAG3BE,GACN,CAAA,CAAE,EAEL,MAAO,CACL,IAAK,mBAAmBL,CAAU,IAAIC,EAAO,IAAIpB,GAAKA,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,GACrE,IAAK,wBAAwBmB,CAAU,GACvC,KAAMI,EACN,KAAML,EAAU,IAChB,QAAAX,EACA,MAAAC,EACA,iBAAAa,EACA,YAAa,CACX,KAAM,YAAYF,CAAU,GAC5B,WAAY7C,EAA0B,oBAAoB,YAAY6C,CAAU,GAAIC,EAAO,MAAM,CAAA,EAEnG,UAAW,EAAA,CAEf,EAEA,oBACED,EACAH,EACAU,EACAnB,EACAC,EACgB,CAChB,IAAImB,EAAU,wBAAwBR,CAAU,GAEhD,OAAIO,IAAWE,EAAW,KACxBD,GAAW,SACJD,IAAWE,EAAW,YAC7BD,GAAW,gBAEXA,GAAW,UAEN,CACL,IAAK,wBACL,IAAKrB,EAAU,WAAWqB,EAAS,CAAE,SAAUX,EAAS,EACxD,KAAME,EAAU,OAChB,QAAAX,EACA,MAAAC,EAEA,iBAAkB,CAChB,iBACA,YAAYW,CAAU,UACtB,mBAAmBH,CAAO,GAC1B,YAAYG,CAAU,EAAA,CACxB,CAEJ,EAEA,uBAAuBA,EAAoBxD,EAAgC,CACzE,MAAMkE,EAAqDzC,GAAA,OACzD,OAAE,SAAU+B,EAAY,YAAa,CAAC,GAACW,EAAA1C,GAAA,YAAAA,EAAM,OAAN,MAAA0C,EAAY,OAAA,GAGrD,MAAO,CACL,IAAK,wBAAwBnE,CAAM,gCAAgCwD,CAAU,IAC7E,IAAK,YAAYA,CAAU,cAAcxD,CAAM,GAC/C,WAAAkE,EACA,UAAW,EAAA,CAEf,EAEA,eACEV,EACAxD,EACA4C,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,wBAAwBtD,CAAM,GACnC,IAAK,mBAAmBwD,CAAU,GAClC,KAAM,CAAE,kBAAmBA,CAAA,EAC3B,KAAMD,EAAU,IAChB,iBAAkB,CAAE,iBAAkB,YAAYC,CAAU,GAAI,iBAAkB,EAClF,QAAAZ,EACA,MAAAC,EACA,OAAAS,CAAA,CAEJ,EAEA,iBACEE,EACAxD,EACA4C,EACAC,EACAS,EACgB,CAChB,MAAO,CACL,IAAK,wBAAwBtD,CAAM,+BAA+BwD,CAAU,GAC5E,IAAK,qBAAqBA,CAAU,GACpC,KAAMD,EAAU,OAChB,iBAAkB,CAAE,iBAAkB,YAAYC,CAAU,GAAI,iBAAkB,EAClF,QAAAZ,EACA,MAAAC,EACA,OAAAS,CAAA,CAEJ,EAGA,cACE5D,EACA6B,EACAqB,EACAC,EACgB,CAChB,MAAO,CACL,IAAK,mBACL,IAAK,0BAA0BnD,CAAE,WACjC,KAAM6B,EACN,KAAMgC,EAAU,IAChB,QAAAX,EACA,MAAAC,EAEA,iBAAkB,iBAClB,YAAa,CACX,KAAM,YAAYnD,CAAE,UACpB,WAAa+B,GACXT,GAAc,YAAY,YAAYtB,CAAE,UAAW6B,EAAgBE,CAAI,CAAA,CAC3E,CAEJ,EAEA,kBAAkB/B,EAA4B,CAC5C,MAAO,CACL,IAAK,wBAAwBA,CAAE,uBAC/B,IAAK,6BAA6BA,CAAE,EAAA,CAExC,CACF,ECxYM0E,EAAY,CAChB,aAAc,CAAC1E,EAAYoD,IAAoBH,EAAU,WAAW,gBAAgBjD,CAAE,GAAI,CACxF,MAAOgD,EAAqB,OAC5B,QAAAI,CAAA,CACD,EACD,iBAAkB,CAACpD,EAAY2E,EAAqB,IAC3C,wBAAwB3E,CAAE,+DAA+D2E,CAAU,GAE9G,EAEaC,GAAiB,CAC5B,OAAO5E,EAAkC,CACvC,MAAM6E,EAAiB,CAAE,MAAO7B,EAAqB,MAAA,EAErD,MAAO,CACL,IAAKC,EAAU,WAAW,wBAAwBjD,CAAE,GAAI6E,CAAc,EACtE,UAAW5B,EAAU,WAAW,gBAAgBjD,CAAE,GAAI6E,CAAc,EACpE,IAAK,UAAU7E,CAAE,EAAA,CAErB,EACA,aAAaA,EAAYoD,EAAiC,CACxD,MAAO,CACL,IAAKsB,EAAU,aAAa1E,EAAIoD,CAAO,EACvC,IAAK,iBAAiBpD,CAAE,IAAIoD,CAAO,EAAA,CAEvC,EACA,iBAAiBpD,EAAY2E,EAAqB,EAAmB,CACnE,MAAO,CACL,IAAKD,EAAU,iBAAiB1E,EAAI2E,CAAU,EAC9C,IAAK,UAAU3E,CAAE,gBAAgB2E,CAAU,EAAA,CAE/C,EACA,4BAA4B3E,EAA4B,CACtD,MAAO,CACL,IAAK,wBAAwBA,CAAE,kEAC/B,IAAK,UAAUA,CAAE,kBAAA,CAErB,EACA,aAAaA,EAAYM,EAAiBK,EAAsBC,EAAuC,CACrG,MAAMkE,EAAaC,EAAgB,kBAAkBpE,CAAI,EAEnDO,EAAM,CAAE,SAAUlB,EAAI,SAAUY,EAAQD,CAAK,EAAE,UAAY,CAAC,CAACqE,CAAC,EAAE,KAAK,GAAG,EAE9E,MAAO,CACL,IAAK/B,EAAU,WAAW,4BAA4BjD,CAAE,UAAW,CACjE,MAAO,IAAI8E,CAAU,IAAI9B,EAAqB,gBAAgB,GAC9D,OAAApC,CAAA,CACD,EACD,UAAWqC,EAAU,WAAW,4BAA4BjD,CAAE,UAAW,CACvE,MAAO,IAAI8E,CAAU,IAAIG,EAAoB,gBAAgB,GAC7D,OAAArE,CAAA,CACD,EACD,IAAAM,CAAA,CAEJ,CACF,ECjCMgE,GAAY,eACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAE/CG,EAAkB,CAC7B,gBAAgBtC,EAAsC,CACpD,OAAQA,EAAA,CACN,IAAK,QACH,OAAOwB,EAAW,MAEpB,IAAK,WACH,OAAOA,EAAW,SAEpB,IAAK,UACH,OAAOA,EAAW,QAEpB,IAAK,SACH,OAAOA,EAAW,OAEpB,IAAK,cACH,OAAOA,EAAW,YAEpB,IAAK,OACH,OAAOA,EAAW,IAAA,CAExB,EAEA,WAAWxE,EAQF,CACP,MAAMmD,EAAWoC,GAA4B,CAC3CC,EAAgB,cACd,CAAE,GAAGD,EAAc,WAAYvF,EAAQ,OAAO,IAAA,EAC9CwF,EAAgB,aAAaF,EAAgB,oBAAoBtF,EAAQ,UAAU,EAAG,CACpF,WAAYyF,EAAW,OACvB,OAAQC,EAAW,UACnB,aAAcC,EAAa,EAAA,CAC5B,CAAA,EAGC3F,EAAQ,SACVA,EAAQ,QAAQuF,CAAY,CAChC,EAEMnC,EAAQ,IAAM,CAClBpD,EAAQ,OAAO,MAAMoF,EAAU,kBAAmB,CAAE,KAAMpF,EAAQ,OAAO,IAAA,CAAM,CAAC,CAClF,EAEMgC,EAA+B,CACnC,WAAYhC,EAAQ,OAAO,GAC3B,qBAAsB,EAAA,EAGpBA,EAAQ,WACVgC,EAAK,SAAWhC,EAAQ,UAEtBA,EAAQ,iBACVgC,EAAK,eAAiBhC,EAAQ,gBAGhC4F,EAAa5F,EAAQ,SAAU6F,EAAc,gBAAgB7D,EAAMmB,EAASC,CAAK,CAAC,CACpF,EAEA,WACE0C,EACAC,EACAC,EACAC,EACAjE,EACAkE,EACAC,EACAC,EACM,CACN,MAAMjD,EAAWkD,GAAgC,CAC/Cb,EAAgB,cACd,CAAE,GAAGa,EAAkB,WAAYN,EAAO,IAAA,EAC1CP,EAAgB,aAAaF,EAAgB,oBAAoBU,CAAU,EAAG,CAC5E,WAAYP,EAAW,KACvB,OAAQC,EAAW,UACnB,aAAcC,EAAa,EAAA,CAC5B,CAAA,EAGCQ,GACFA,EAAUE,CAAgB,EAE5BH,EAAO,QAAQd,EAAU,cAAe,CAAE,KAAMW,EAAO,KAAM,WAAY,EAAA,CAAM,CAAC,CAClF,EAEM3C,EAAQ,IAAM,CACdgD,GACFA,EAAA,EAEFF,EAAO,MAAMd,EAAU,YAAa,CAAE,KAAMW,EAAO,KAAM,WAAY,EAAA,CAAM,CAAC,CAC9E,EAEAH,EAAaE,EAAUD,EAAc,cAAcI,EAAWjE,EAAMmB,EAASC,CAAK,CAAC,CACrF,EAEA,WACE0C,EACAC,EACAC,EACAC,EACAC,EACAC,EACAG,EACM,CACN,MAAMnD,EAAU,IAAM,CACpBqC,EAAgB,cACd,CAAE,GAAGS,EAAW,WAAYF,EAAO,IAAA,EACnCP,EAAgB,aAAaF,EAAgB,oBAAoBU,CAAU,EAAG,CAC5E,WAAYP,EAAW,OACvB,OAAQC,EAAW,SAAA,CACpB,CAAA,EAGCS,GACFA,EAAA,EAEFD,EAAO,QAAQd,EAAU,gBAAiB,CAAE,KAAMW,EAAO,KAAM,WAAY,EAAA,CAAM,CAAC,CACpF,EAEM3C,EAAQ,IAAM,CAClB8C,EAAO,MAAMd,EAAU,cAAe,CAAE,KAAMW,EAAO,KAAM,WAAY,EAAA,CAAM,CAAC,CAChF,EAEMlC,EAAS,IAAM,CACfyC,GACFA,EAAA,CACJ,EAEAV,EAAaE,EAAUD,EAAc,gBAAgBI,EAAW9C,EAASC,EAAOS,CAAM,CAAC,CACzF,EAEA,0BAA0B7D,EAWjB,CACP,KAAM,CACJ,SAAA8F,EAAU,OAAAC,EAAQ,WAAAC,EAAY,YAAAO,EAAa,WAAAC,EAAY,gBAAAC,EAAiB,QAAAC,EACxE,UAAAP,EAAW,QAAAC,EAAS,OAAAE,CAAA,EAClBtG,EAEEmD,EAAWwD,GAAoC,CAC/CR,GACFA,EAAUQ,CAAkB,EAE9BnB,EAAgB,cACd,CACE,GAAIO,EAAO,GACX,KAAMA,EAAO,KACb,WAAYS,EAAW,MAAA,EAEzBhB,EAAgB,aAAaF,EAAgB,oBAAoBU,CAAU,EAAG,CAC5E,WAAYP,EAAW,MACvB,WAAYmB,GAAiB,YAC7B,aAAcjB,EAAa,EAAA,CAC5B,CAAA,EAGHa,EAAW,IAAIK,GAAa,CAC1BrG,GAAkB,oBAAoB+F,EAAY,GAAI,CAAE,GAAIM,EAAU,GAAI,CAC5E,CAAC,CACH,EAEMC,EAAuC,CAC3C,SAAUf,EAAO,GACjB,aAAcT,EAAgB,gBAAgBU,CAAU,EACxD,WAAAQ,EACA,QAAAE,CAAA,EAGIK,EAAqC,CACzC,WAAAP,EACA,QAAAE,CAAA,EAGIM,EAAUP,EACZZ,EAAc,4BAA4BY,EAAgB,GAAIM,EAAY5D,EAASiD,EAASE,CAAM,EAClGT,EAAc,kBAAkBiB,EAAY3D,EAASiD,EAASE,CAAM,EAExEV,EAAaE,EAAUkB,CAAO,CAChC,EAEA,2BACElB,EACAmB,EACAjB,EACAS,EACAN,EACAC,EACM,CACN,MAAMjD,EAAWwD,GAAoC,CAC/CR,GACFA,EAAUQ,CAAkB,EAE9BnB,EAAgB,cACd,CAAE,WAAY,CAAA,EACdA,EAAgB,aAAaF,EAAgB,oBAAoBU,CAAU,EAAG,CAC5E,WAAYP,EAAW,OAAA,CACxB,CAAA,CAEL,EAEAG,EACEE,EACAD,EAAc,2BACZY,EAAgB,GAChBQ,EACA9D,EACAiD,CAAA,CACF,CAEJ,EAEA,gCAAgCc,EAAoBC,EAA2C,OAG7F,MAFsB,CAAC,GAACzC,EAAAyC,GAAA,YAAAA,EAAa,aAAb,MAAAzC,EAAyB,SAG/CmB,EAAc,6BAA6BsB,EAAY,GAAIA,EAAY,WAAYD,CAAU,CACjG,EAEA,mBAAmBlB,EAAgC,CACjD,OAAQA,EAAA,CACN,IAAK,WACH,OAAON,EAAW,SACpB,IAAK,UACH,OAAOA,EAAW,eACpB,IAAK,QACH,OAAOA,EAAW,MACpB,IAAK,SACH,OAAOA,EAAW,OACpB,IAAK,cACH,OAAOA,EAAW,YACpB,IAAK,OACH,OAAOA,EAAW,IAAA,CAExB,EAEA,oBAAoBM,EAAkD,CACpE,MAAO,CACL,OAAQV,EAAgB,mBAAmBU,CAAU,EACrD,SAAUoB,GAAgB,MAC1B,cAAeC,GAAc,QAAA,CAEjC,EAEA,uBAAyBrE,GAA6B,CACpD,OAAQA,EAAA,CACN,IAAK,QACH,OAAQ/C,GAAeqH,EAA4BC,EAAc,MAAMtH,CAAE,CAAC,EAG5E,IAAK,WACH,OAAQA,GAAeqH,EAA+BxE,GAAiB,YAAY7C,CAAE,CAAC,EAGxF,IAAK,UACH,MAAO,CAACA,EAAYM,IACX+G,EAAqCE,GAAuB,eAAevH,EAAIM,CAAM,CAAC,EAIjG,IAAK,SACH,OAAQN,GAAeqH,EAA6BzC,GAAe,OAAO5E,CAAE,CAAC,EAG/E,IAAK,cACH,OAAQA,GACNqH,EAA0CG,EAAoB,oBAAoBxH,CAAE,CAAC,EAGzF,IAAK,OACH,OAAQA,GACNqH,EAA2BI,EAAa,KAAKzH,CAAE,CAAC,CACpD,CAEJ,EAEA,YAAY0H,EAAwC,aAElD,MAAI,cAAeA,GAAoBA,EAAe,WAC7CjD,EAAAiD,EAAe,YAAf,YAAAjD,EAA0B,IAE/B,eAAgBiD,GAAoBA,EAAe,YAC9CC,EAAAD,EAAe,aAAf,YAAAC,EAA2B,IAGhC,UAAWD,GACNE,EAAAF,EAAe,QAAf,YAAAE,EAAsB,IAG3B,eAAgBF,GACXG,EAAAH,EAAe,aAAf,YAAAG,EAA2B,IAE7B,EACT,EAEA,yBAAyBC,EAA0B,WACjD,GAAI,CAACA,EAAW,OACd,OAEF,IAAIvB,EAA+C,CAAA,EAEnD,GAAIuB,EAAW,SAAW,EACxB,OAAOnG,EAAY,MAAMmG,CAAU,EAAE,KAGvCA,EAAW,QAAQC,GAAK,CACtB,IAAIC,EAEJ,OAAQD,EAAE,OAAA,CACR,KAAKxD,EAAW,KACdyD,EAAW,QACX,MAEF,KAAKzD,EAAW,UACdyD,EAAW,aACX,MAEF,KAAKzD,EAAW,eACdyD,EAAW,kBACX,KAAA,CAGJ,MAAMC,EAAgB1B,EAAWyB,CAAQ,GAAK,CAAA,EAE9CC,EAAc,KAAKF,CAAC,EAEpBxB,EAAa,CACX,GAAGA,EACH,CAACyB,CAAQ,EAAGrG,EAAY,KAAKsG,CAAa,CAAA,CAE9C,CAAC,EAED,MAAMC,EAAyB3B,EAAW,YACxC,CAACA,EAAW,iBACZ,CAACA,EAAW,MACR4B,EAAqB5B,EAAW,iBACpC,CAACA,EAAW,YACZ,CAACA,EAAW,MACR6B,EAAoB7B,EAAW,OACnC,CAACA,EAAW,YACZ,CAACA,EAAW,gBAEd,GAAI2B,EACF,OAAO/C,EAAU,aAAc,CAAE,WAAYoB,EAAW,WAAW,OAAQ,EAE7E,GAAI4B,EACF,OAAOhD,EAAU,SAAU,CAAE,WAAYoB,EAAW,gBAAgB,OAAQ,EAE9E,GAAI6B,EACF,OAAOjD,EAAU,QAAS,CAAE,WAAYoB,EAAW,MAAM,OAAQ,EAEnE,MAAM8B,EAAkB,CAAA,GAEpB5D,EAAA8B,EAAW,aAAX,MAAA9B,EAAuB,QACzB4D,EAAgB,KAAKlD,EAAU,aAAc,CAAE,WAAYoB,EAAW,WAAW,MAAA,CAAQ,CAAC,GAExFoB,EAAApB,EAAW,kBAAX,MAAAoB,EAA4B,QAC9BU,EAAgB,KAAKlD,EAAU,SAAU,CAAE,WAAYoB,EAAW,gBAAgB,MAAA,CAAQ,CAAC,GAEzFqB,EAAArB,EAAW,QAAX,MAAAqB,EAAkB,QACpBS,EAAgB,KAAKlD,EAAU,QAAS,CAAE,WAAYoB,EAAW,MAAM,MAAA,CAAQ,CAAC,EAElF,MAAM+B,EAAgBD,EAAgB,IAAA,EAEtC,MAAO,GAAGA,EAAgB,KAAK,IAAI,CAAC,IAAIlD,EAAU,KAAK,CAAC,IAAImD,CAAa,EAC3E,CACF,EC5ZO,IAAKC,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,OAAS,SAFCA,IAAAA,GAAA,CAAA,CAAA,ECaZ,MAAMrD,GAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAc/CsD,EAAkB,CAC7B,sBAAwBzI,GAAmC,CACzD,KAAM,CAAE,aAAA0I,EAAc,QAAAC,EAAS,cAAAC,EAAe,OAAA7C,EAAQ,WAAA8C,GAAe7I,EAErE,GAAI0I,IAAiBlE,EAAW,OAASkE,IAAiBlE,EAAW,OACnE,MAAO,CAAE,KAAMsE,EAAc,KAAM1D,EAAUwD,EAAgB,uBAAyB,yBAAyB,CAAA,EAMjH,GAAI,OAAM,QAAQD,CAAO,EAGzB,OAAQA,EAAQ,QAAA,CACd,IAAK,SACH,MAAO,CAAE,KAAMG,EAAc,KAAM1D,EAAU,mBAAmB,CAAA,EAClE,IAAK,YACH,OAAIuD,EAAQ,qBACH,CAAE,KAAMG,EAAc,KAAM1D,EAAU,eAAe,CAAA,EACvD,CACL,KAAM2D,EACN,KAAMN,EAAgB,qBAAqB1C,EAAQ8C,EAAYD,CAAa,CAAA,EAEhF,IAAK,mBACH,OAAID,EAAQ,qBACH,CAAE,KAAMI,EAAS,KAAM3D,EAAUwD,EAAgB,uBAAyB,yBAAyB,CAAA,EACrG,CACL,KAAMG,EACN,KAAMN,EAAgB,qBAAqB1C,EAAQ8C,EAAYD,CAAa,CAAA,EAMhF,IAAK,aACL,IAAK,UACH,MAAO,CAAE,KAAMG,EAAS,KAAM3D,EAAU,oBAAoB,CAAA,EAC9D,QACE,MAAO,CAAA,CAAC,CAEd,EAEA,eAAiBpF,GAAmC,CAClD,KAAM,CAAE,eAAAgJ,EAAgB,oBAAAC,EAAqB,OAAAC,CAAA,EAAWlJ,EACxD,GAAI,CAACgJ,GAAkB,CAACC,EACtB,OAAOR,EAAgB,sBAAsBzI,CAAO,EAEtD,GAAI,CAACgJ,EACH,MAAO,CAAE,KAAMD,EAAS,KAAM3D,EAAU,UAAU,CAAA,EAEpD,MAAM+D,EAAUC,EAAW,QAAQJ,CAAc,EAC3CK,EAAgBD,EAAW,YAAYJ,EAAgB,IAAI,KAAQ,KAAK,EAE9E,GAAI,CAACC,EAAqB,CACxB,IAAIK,EAAOH,EACP/D,EAAU,aAAa,EACvBA,EAAU,SAAU,CAAE,KAAMiE,EAAe,EAE/C,OAAIH,IAAWV,EAAgB,UAC7Bc,EAAOlE,EAAU,SAAS,GAErB,CAAE,KAAMmE,GAAU,KAAAD,CAAAA,CAC3B,CAEA,IAAIA,EAAOH,EACP/D,EAAU,qBAAqB,EAC/BA,EAAU,iBAAkB,CAAE,KAAMiE,EAAe,EAEvD,OAAIH,IAAWV,EAAgB,UAC7Bc,EAAOlE,EAAU,iBAAiB,GAE7B,CAAE,KAAM2D,EAAS,KAAAO,CAAA,CAC1B,EAEA,qBAAqBpF,EAAmB2E,EAAyBD,EAAwB,OACvF,GAAI,CAAC1E,GAAS,CAAC2E,EACb,OAAO,KAET,GAAID,EACF,OAAOxD,EAAU,sBAAsB,EAEzC,GAAI,CAACf,EAAY,YAAYH,CAAK,EAChC,OAAOkB,EAAU,kBAAkB,EAErC,MAAMoE,EAAcC,GAAkB,wBAAuB/E,EAAAR,EAAM,gBAAN,YAAAQ,EAAqB,KAAK,EAKvF,GAAI8E,GAAe,CAACA,EAAY,UAC9B,OAAOpE,EAAU,YAAY,EAE/B,MAAMsE,EAASrF,EAAY,UAAUH,CAAK,EAE1C,IAAIyF,EACAC,EAEJ,UAAWC,KAAahB,GAIlB,CAACc,GAAgBE,EAAU,MAAQF,EAAa,SAClDA,EAAeE,GAKb,EAAAL,GAAeK,EAAU,OAASL,EAAY,aAM9CE,GAAUG,EAAU,OAAO,MAAQH,EAAO,QAM1C,CAACE,GAAuBC,EAAU,MAAQD,EAAoB,SAChEA,EAAsBC,IAM1B,OAAKD,EAQDf,EAAW,SAAW,EACjBzD,EAAU,eAAe,EAM9BwE,EAAoB,QAAUD,EAAa,MACtCvE,EAAU,eAAgB,CAAE,UAAWuE,EAAa,KAAM,EAE5DvE,EAAU,iBAAkB,CAAE,UAAWwE,EAAoB,KAAM,EAjBjExE,EAAU,WAAW,CAkBhC,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aW as s}from"./app-BqRx5tK8.js";const p={isType(e,r){var t;return e!=null&&e.typeId?e.typeId===r:((t=e==null?void 0:e.type)==null?void 0:t.toLowerCase())===s[r].toLowerCase()},isResource(e){return p.isType(e,s.Resource)},isClassification(e){return e.type==="Subject"}};export{p as M};
|
|
2
|
+
//# sourceMappingURL=ByllnMKt.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ByllnMKt.chunk.js","sources":["../../../../libs/shared/src/utils/MasterTypeHelper.ts"],"sourcesContent":["import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classification, Resource } from 'libs/shared/interfaces';\n\nexport const MasterTypeHelper = {\n isType<T extends BaseObject>(obj: any, typeId: MasterType): obj is T {\n if (obj?.typeId)\n return obj.typeId === typeId;\n\n // Fallback to comparing actual string types\n return obj?.type?.toLowerCase() === MasterType[typeId].toLowerCase();\n },\n\n isResource(obj: any): obj is Resource {\n return MasterTypeHelper.isType<Resource>(obj, MasterType.Resource);\n },\n\n isClassification(obj: any): obj is Classification {\n return obj.type === 'Subject';\n }\n};"],"names":["MasterTypeHelper","obj","typeId","_a","MasterType"],"mappings":"uCAGO,MAAMA,EAAmB,CAC9B,OAA6BC,EAAUC,EAA8B,OACnE,OAAID,GAAA,MAAAA,EAAK,OACAA,EAAI,SAAWC,IAGjBC,EAAAF,GAAA,YAAAA,EAAK,OAAL,YAAAE,EAAW,iBAAkBC,EAAWF,CAAM,EAAE,YAAA,CACzD,EAEA,WAAWD,EAA2B,CACpC,OAAOD,EAAiB,OAAiBC,EAAKG,EAAW,QAAQ,CACnE,EAEA,iBAAiBH,EAAiC,CAChD,OAAOA,EAAI,OAAS,SACtB,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{s as t}from"./app-BqRx5tK8.js";import{g as s}from"./sFV5nxD4.chunk.js";function g(a){const{userId:e,customerId:r,...i}=a;return{...i,uid:e,cid:r}}const l={aggregation(a,e){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${a}`,g(e)),key:s("video:views:v2:aggregation",e,a),normalize:!1}},videoAggregation(a,e,r){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/videos/${a}/aggregation/${e}`,g(r)),key:s(`video:views:v2:aggregation:${a}`,r,e),normalize:!1}},aggregationChart(a,e){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${a}/chart`,g(e)),key:s("video:views:v2:aggregation:chart",e,a),normalize:!1}},videoAggregationChart(a,e,r){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/videos/${a}/aggregation/${e}/chart`,g(r)),key:s(`video:views:v2:aggregation:chart:${a}`,r,e),normalize:!1}},topStreams(a,e){return{url:t.urlBuilder("{gateway}/v2/analytics/streams/top",{...g(e),limit:a}),key:s(`video:views:v2:top:streams:${a}`,e),normalize:!1}},videoHeatMap(a,e,r){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/videos/${a}/heat-map`,{...g(e),cursor:r}),key:s(`video:views:v2:heatmap:${a}`,e,r),normalize:!1}},videoHeatMapAggregation(a,e){return{url:t.urlBuilder(`{gateway}/v2/analytics/streams/videos/${a}/aggregation/heat-map`,g(e)),key:s(`video:views:v2:aggregation:heatmap:${a}`,e),normalize:!1}}};export{l as V};
|
|
2
|
+
//# sourceMappingURL=BzBFC5UE.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BzBFC5UE.chunk.js","sources":["../../src/shared/flight-requests/VideoViewsV2Requests.ts"],"sourcesContent":["\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\n/**\n * Becasue the V2 endpoints take the user context,\n * userId and customerId cannot be used for these values so instead\n * we are using uid and cid - sha\n */\nfunction formatFilter(filter: AnalyticsRequestFilter) {\n const { userId, customerId, ...rest } = filter;\n return { ...rest, uid: userId, cid: customerId };\n}\n\nexport const VideoViewsV2Requests = {\n aggregation(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation', filter, type),\n normalize: false\n };\n },\n\n videoAggregation(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n aggregationChart(\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey('video:views:v2:aggregation:chart', filter, type),\n normalize: false\n };\n },\n\n videoAggregationChart(\n videoId: string,\n type: StreamAggregationType,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/${type}/chart`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:chart:${videoId}`, filter, type),\n normalize: false\n };\n },\n\n topStreams(limit: number, filter: AnalyticsRequestFilter): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/top`, { ...formatFilter(filter), limit }),\n key: getAnalyticsRequestKey(`video:views:v2:top:streams:${limit}`, filter),\n normalize: false\n };\n },\n\n videoHeatMap(\n videoId: string,\n filter: AnalyticsRequestFilter,\n cursor?: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/heat-map`, { ...formatFilter(filter), cursor }),\n key: getAnalyticsRequestKey(`video:views:v2:heatmap:${videoId}`, filter, cursor),\n normalize: false\n };\n },\n\n videoHeatMapAggregation(\n videoId: string,\n filter: AnalyticsRequestFilter\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v2/analytics/streams/videos/${videoId}/aggregation/heat-map`, formatFilter(filter)),\n key: getAnalyticsRequestKey(`video:views:v2:aggregation:heatmap:${videoId}`, filter),\n normalize: false\n };\n }\n};"],"names":["formatFilter","filter","userId","customerId","rest","VideoViewsV2Requests","type","UrlHelper","getAnalyticsRequestKey","videoId","limit","cursor"],"mappings":"8EAaA,SAASA,EAAaC,EAAgC,CACpD,KAAM,CAAE,OAAAC,EAAQ,WAAAC,EAAY,GAAGC,GAASH,EACxC,MAAO,CAAE,GAAGG,EAAM,IAAKF,EAAQ,IAAKC,CAAA,CACtC,CAEO,MAAME,EAAuB,CAClC,YACEC,EACAL,EACgB,CAChB,MAAO,CACL,IAAKM,EAAU,WAAW,8CAA8CD,CAAI,GAAIN,EAAaC,CAAM,CAAC,EACpG,IAAKO,EAAuB,6BAA8BP,EAAQK,CAAI,EACtE,UAAW,EAAA,CAEf,EAEA,iBACEG,EACAH,EACAL,EACgB,CAChB,MAAO,CACL,IAAKM,EAAU,WAAW,yCAAyCE,CAAO,gBAAgBH,CAAI,GAAIN,EAAaC,CAAM,CAAC,EACtH,IAAKO,EAAuB,8BAA8BC,CAAO,GAAIR,EAAQK,CAAI,EACjF,UAAW,EAAA,CAEf,EAEA,iBACEA,EACAL,EACgB,CAChB,MAAO,CACL,IAAKM,EAAU,WAAW,8CAA8CD,CAAI,SAAUN,EAAaC,CAAM,CAAC,EAC1G,IAAKO,EAAuB,mCAAoCP,EAAQK,CAAI,EAC5E,UAAW,EAAA,CAEf,EAEA,sBACEG,EACAH,EACAL,EACgB,CAChB,MAAO,CACL,IAAKM,EAAU,WAAW,yCAAyCE,CAAO,gBAAgBH,CAAI,SAAUN,EAAaC,CAAM,CAAC,EAC5H,IAAKO,EAAuB,oCAAoCC,CAAO,GAAIR,EAAQK,CAAI,EACvF,UAAW,EAAA,CAEf,EAEA,WAAWI,EAAeT,EAAgD,CACxE,MAAO,CACL,IAAKM,EAAU,WAAW,qCAAsC,CAAE,GAAGP,EAAaC,CAAM,EAAG,MAAAS,EAAO,EAClG,IAAKF,EAAuB,8BAA8BE,CAAK,GAAIT,CAAM,EACzE,UAAW,EAAA,CAEf,EAEA,aACEQ,EACAR,EACAU,EACgB,CAChB,MAAO,CACL,IAAKJ,EAAU,WAAW,yCAAyCE,CAAO,YAAa,CAAE,GAAGT,EAAaC,CAAM,EAAG,OAAAU,CAAA,CAAQ,EAC1H,IAAKH,EAAuB,0BAA0BC,CAAO,GAAIR,EAAQU,CAAM,EAC/E,UAAW,EAAA,CAEf,EAEA,wBACEF,EACAR,EACgB,CAChB,MAAO,CACL,IAAKM,EAAU,WAAW,yCAAyCE,CAAO,wBAAyBT,EAAaC,CAAM,CAAC,EACvH,IAAKO,EAAuB,sCAAsCC,CAAO,GAAIR,CAAM,EACnF,UAAW,EAAA,CAEf,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,O as r,bF as y,L as j,e as w,u as C,T,ag as N}from"./app-BqRx5tK8.js";import{c as h,H as S,b as V,m as v,a as R}from"./Dp_vnjo0.chunk.js";import{V as p}from"./BzBFC5UE.chunk.js";const g={chart:{spacing:[4,0,4,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null},endOnTick:!0,tickAmount:10},xAxis:{lineWidth:0,labels:{style:{...h}}},legend:{enabled:!1},plotOptions:{column:{borderRadius:4,dataLabels:{enabled:!0,style:h,inside:!1,crop:!1,overflow:"allow"},groupPadding:0,minPointLength:8}},series:[{type:"column",label:{enabled:!1},states:{hover:{enabled:!1}}}]},O=(a,t)=>({...g,xAxis:{...g.xAxis,categories:a},series:[{type:"column",label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function _(a){const t=O(a.data.map(l=>l.name),a.data);return e.jsx(e.Fragment,{children:e.jsx(S,{highcharts:V,options:t,containerProps:{className:"h-100"}})})}const A="_image_1a110_1",I={image:A},L="reportsShared.totalViewsByRoleCardEmptyState",f=j.encloseNamespace(L);function F(){return e.jsxs(r,{className:"flex-grow-1 justify-content-center",children:[e.jsx(r.Image,{src:y.EmptyStates.Shared.Ticket,className:I.image}),e.jsx(r.Heading,{className:"h6",children:f("heading")}),e.jsx(r.Info,{className:"w-100",children:f("description")})]})}const B="reportsShared.videoViewsByRoleCard";function U(a){const t=w(),l=C(a.videoId?p.videoAggregation(a.videoId,"user_type",t):p.aggregation("user_type",t));function x(c){if(!c)return null;const n=c.reduce((s,i)=>{const m=[N.System,"255"].includes(i.name)?null:i.name,u=s.find(b=>b.name===m);return u?u.count+=i.count:s.push({name:m,count:i.count}),s},[]).map(s=>({name:R(s.name),y:s.count,color:v(s.name)})),d=n.findIndex(s=>s.name==="Staff");if(d>-1){const[s]=n.splice(d,1);n.push(s)}return n}const o=x(l.data);return e.jsx("div",{className:"d-flex flex-column h-100 bg-white rounded p-3",children:o?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"h6 mb-3",children:e.jsx(T,{namespace:B,phrase:"videoViews"})}),o.length?e.jsx("div",{className:"flex-grow-1 position-relative",children:e.jsx("div",{className:"position-absolute w-100 h-100",children:e.jsx(_,{data:o})})}):e.jsx(F,{})]}):e.jsx("div",{className:"partial-loading-background w-25",children:" "})})}export{_ as C,U as V};
|
|
2
|
+
//# sourceMappingURL=C4382UCA.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C4382UCA.chunk.js","sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 4, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[]\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[]\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data);\n\n return (\n <>\n <HighchartsReact\n highcharts={Highcharts}\n options={chartOptions}\n containerProps={{ className: 'h-100' }}\n />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter();\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n const mappedGroups: Highcharts.PointOptionsObject[] = mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n }));\n\n const staffIndex = mappedGroups.findIndex(group => group.name === 'Staff');\n\n // Move Staff to last index\n if (staffIndex > -1) {\n const [staffObject] = mappedGroups.splice(staffIndex, 1);\n\n mappedGroups.push(staffObject);\n }\n return mappedGroups;\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} />\n </div>\n </div>\n : <TotalViewsByRoleCardEmptyState />\n }\n </>\n : <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}"],"names":["STATIC_COLUMN_CHART_OPTIONS","CHART_FONT_STYLES","getChartOptions","categories","data","ColumnChart","props","chartOptions","jsx","Fragment","HighchartsReact","Highcharts","namespace","getPhrase","LanguageService","TotalViewsByRoleCardEmptyState","jsxs","EmptyState","ImageUrls","styles","VideoViewsByRoleCardView","requestFilter","useGetRequestFilter","viewsByGroup","Flight.useBasicFetch","VideoViewsV2Requests","getChartData","views","mappedGroups","acc","val","key","UserGroup","existing","v","group","mapUserTypeToChartLabel","mapUserTypeToChartColour","staffIndex","staffObject","chartData","Text"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C6H2bU7H.chunk.js","sources":["../../src/shared/hooks/UseSetHeaderTitle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport function useSetHeaderTitle(title?: string): void {\n const [ , setTitle ] = useViewModel<string>(ViewModelKeys.HEADER_TITLE);\n\n useEffect(() => {\n setTitle(title);\n\n return () => {\n setTitle(null);\n };\n }, [title]);\n}"],"names":["useSetHeaderTitle","title","setTitle","useViewModel","ViewModelKeys","useEffect"],"mappings":"+CAMO,SAASA,EAAkBC,EAAsB,CACtD,KAAM,CAAA,CAAIC,CAAS,EAAIC,EAAqBC,EAAc,YAAY,EAEtEC,EAAAA,UAAU,KACRH,EAASD,CAAK,EAEP,IAAM,CACXC,EAAS,IAAI,CACf,GACC,CAACD,CAAK,CAAC,CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C6eAAaNL.chunk.js","sources":["../../src/shared/hooks/UseHandleVideoError.ts"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Clip, InteractiveMetadata, Video } from 'libs/shared/interfaces';\n\nconst videoErrors = {\n notFound: VideoNotFoundError\n};\n\nexport function useHandleVideoError(video: Flight.Response<Video | InteractiveMetadata | Clip>): void {\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useCannotConsumeError(video);\n}"],"names":["videoErrors","VideoNotFoundError","useHandleVideoError","video","useHandleObjectError","useCannotConsumeError"],"mappings":"uHAOA,MAAMA,EAAc,CAClB,SAAUC,CACZ,EAEO,SAASC,EAAoBC,EAAkE,CACpGC,EAAqBD,EAAOH,EAAa,CAAE,UAAW,GAAM,EAC5DK,EAAsBF,CAAK,CAC7B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as g,c9 as b,ca as U,j as e,L as O,i as k,h as K,a3 as W,ar as D,c as Q,e as X,d as z,l as Y,u as w,a as J,A as Z,g as ee,V as te,C as ae,U as se,bR as ie,aW as S}from"./app-BqRx5tK8.js";import{P as ne,M as re,V as oe,a as le,E as ce}from"./BIbP_ulq.chunk.js";import{g as de}from"./CX5q-0jT.chunk.js";import{C as me}from"./DecstRlc.chunk.js";import{u as ge,I as ue}from"./5JDMPiCK.chunk.js";import{a as he}from"./Cl51qIgL.chunk.js";import{V as L}from"./BzBFC5UE.chunk.js";import{u as pe}from"./C6eAAaNL.chunk.js";import{u as xe,a as fe}from"./BlAGsOOw.chunk.js";import{u as je}from"./C6H2bU7H.chunk.js";import{a as ve,S as ye}from"./DgHfAOys.chunk.js";import{V as Ce}from"./C4382UCA.chunk.js";import"./DU5sOcpt.chunk.js";import"./DFhb3ZfO.chunk.js";import"./5O9SdVRZ.chunk.js";import"./CW7x8M-z.chunk.js";import"./CXhesQTd.chunk.js";import"./CdzMtbgC.chunk.js";import"./xkqdG021.chunk.js";import"./BfG3wCTD.chunk.js";import"./VSmYRJOj.chunk.js";import"./B_1LOG5E.chunk.js";import"./BrLXFCMV.chunk.js";import"./DHqmPVfK.chunk.js";import"./Dp_vnjo0.chunk.js";import"./ClcYw2ra.chunk.js";import"./W5zJjbqu.chunk.js";import"./sFV5nxD4.chunk.js";import"./Fd0gT6QK.chunk.js";import"./DxUueJN7.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./CbmUUNB4.chunk.js";const we={numItems:5,minWidth:50,maxWidth:100},Ie={getPartialLoadingItems(t={}){const n={...we,...t},s=()=>Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth);return[...Array(n.numItems)].map(()=>({width:`${s()}px`}))}},Ne="shared.breadcrumbComponent",Ve=O.encloseNamespace(Ne),Se=64,_=48,h=g.forwardRef((t,n)=>{const{breadcrumb:{name:s,appLink:c,active:d},withBackIcon:m}=t;let i=s,r=null;return i.length>_&&(i=s.slice(0,_)+"...",r=s),e.jsx("li",{className:`breadcrumb-item${d?" active":""}`,title:r,children:d?e.jsx("strong",{children:i}):e.jsxs(k,{appLink:c,ref:n,children:[m&&e.jsx(K,{svg:me,size:W.Small}),e.jsx("span",{className:m?"ms-2":"",children:i})]})})}),Ee=({breadcrumbs:t})=>{const n=b(U.XS),s=(t==null?void 0:t.length)||0,[c,d]=g.useState(!1),[m,i]=g.useState(!1),r=g.useRef(null);g.useEffect(()=>{const l=(t==null?void 0:t.reduce((u,N)=>u+N.name.length,0))??0;s>4&&l>Se&&d(!0)},[t==null?void 0:t.length]),g.useLayoutEffect(()=>{var l;m&&((l=r.current)==null||l.focus())},[r.current,m]);function x(){d(!1),i(!0)}if(!s||n&&s<2)return e.jsx(e.Fragment,{});if(n)return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:e.jsx(h,{breadcrumb:t[s-2],withBackIcon:!0})})});const f=e.jsx(h,{breadcrumb:t[0]}),j=s>2?e.jsx(h,{breadcrumb:t[1]}):e.jsx(e.Fragment,{}),v=s>3?e.jsx(h,{breadcrumb:t[s-2]}):e.jsx(e.Fragment,{}),o=s>1?e.jsx(h,{breadcrumb:t[s-1]}):e.jsx(e.Fragment,{}),I=t.slice(2,s-2);return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsxs("ol",{className:"breadcrumb m-0 p-0",children:[f,j,c?e.jsx("li",{className:"breadcrumb-item",children:e.jsx("button",{className:"btn-link",onClick:x,"aria-label":Ve("expand"),children:"..."})}):I.map((l,u)=>e.jsx(h,{breadcrumb:l,ref:u===0?r:null},u)),v,o]})})},Ae=g.memo(function({numItems:t=3}){return b(U.XS)?e.jsx("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:Ie.getPartialLoadingItems({numItems:t}).map(({width:s},c)=>e.jsx("li",{className:"breadcrumb-item",children:e.jsx("span",{className:"d-inline-block partial-loading-background",style:{width:s},dangerouslySetInnerHTML:{__html:" "}})},c))})})}),Me="_rowA_1gcwf_1",Fe="_videoEngagement_1gcwf_4",E={rowA:Me,videoEngagement:Fe},Re="reportsVideos.schoolVideoViews",A=O.encloseNamespace(Re);function mt(t){var M,F,R;const n=D(),[s]=Q(te.ANONYMISE_USERS),c=X(),d=z(),m=Y.getVideoRequest(t.id,t.typeId),i=w(m),r=w(ae.config()),x=w(L.videoHeatMapAggregation(t.id,c)),f=w(ne.createViewKey(t.id,re.MasterObject)),j=a=>L.videoHeatMap(t.id,c,a),v=a=>n(j(a)),{items:o,hasMore:I,isFetching:l,nextCursor:u,hasFirstPageCompleted:N}=ge(j,v),y=o==null?void 0:o.map(a=>a.userId).filter(a=>!!a),{items:V,hasFirstRequestCompleted:T}=he(y,se.getById);pe(i),J({title:A("title",{video:(M=i.data)==null?void 0:M.name})}),je((F=i.data)==null?void 0:F.name),xe(fe(i.data,B));function B(){var P;const a=ie.getCurrentAppLink(),C=(P=a==null?void 0:a.args)==null?void 0:P[0];let p="";return C&&(t.typeId===S.Interactive&&(p=`/interactives/${a==null?void 0:a.args[0]}`),t.typeId===S.Video&&(p=`/videos/${a==null?void 0:a.args[0]}`),t.typeId===S.Clip&&(p=`/clips/${a==null?void 0:a.args[0]}`)),p}function q(a){if(a.userId){const C=V==null?void 0:V[a.userId];return C||{id:a.userId,deleted:!0}}return{sessionId:a.sessionId}}const H=o==null?void 0:o.map(a=>({...q(a),percentage:a.engagementRate})),$=i.hasCompleted&&r.data&&f.data&&x.hasCompleted,G=!!i.hasCompleted&&N&&(T||!(y!=null&&y.length));return e.jsxs("div",{children:[e.jsx("div",{className:"mb-3",children:i.data?e.jsx(Ee,{breadcrumbs:[{name:A("videoViews"),appLink:{application:ee.VIDEOS,action:Z.Videos.HOME}},{name:i.data.name,active:!0}]}):e.jsx(Ae,{})}),e.jsxs("div",{className:"d-flex flex-column gap-3",children:[e.jsx("div",{className:`${E.rowA} w-100`,children:e.jsx(ve,{videoId:t.id,type:"user_type"})}),e.jsx("div",{className:"w-100",children:e.jsxs("div",{className:"row",children:[e.jsxs("div",{className:`${E.rowB} col row`,children:[e.jsx("div",{className:"col-6",children:e.jsx(ye,{videoId:t.id,type:"year_group"})}),e.jsx("div",{className:"col-6",children:e.jsx(Ce,{videoId:t.id})})]}),e.jsx("div",{className:E.videoEngagement,children:$?e.jsx(oe,{heading:A("totalEngagement"),className:"p-3 h-auto",engagement:x.data,viewKey:f.data.viewKey,playerApiUrl:r.data.playerApiUrl,imageCdnUrl:r.data.imageCdnUrl}):e.jsx(le,{hasHeading:!0})})]})}),G&&e.jsxs(e.Fragment,{children:[e.jsx(ce,{engagement:o,users:H,imageCdnUrl:(R=r.data)==null?void 0:R.imageCdnUrl,anonymiseUsers:s},de(d)),(I||l)&&e.jsx(ue,{isFetching:l,fetchNext:v,nextCursor:u})]})]})]})}export{mt as SchoolVideoViewsView};
|
|
2
|
+
//# sourceMappingURL=CAh5UtFh.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CAh5UtFh.chunk.js","sources":["../../../../libs/shared/src/utils/PartialLoadingHelper.ts","../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","../../src/apps/videos/views/school-video-views/SchoolVideoViewsView.tsx"],"sourcesContent":["const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Engagement, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { PartialVideoEngagementOverlay } from 'shared/components/video-engagement-overlay/PartialVideoEngagementOverlay';\nimport { VideoEngagementOverlay } from 'shared/components/video-engagement-overlay/VideoEngagementOverlay';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { useGetObjectHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport styles from './school-video-views.module.scss';\n\nconst namespace = 'reportsVideos.schoolVideoViews';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SchoolVideoViewsViewProps {\n id: string;\n typeId: MasterType;\n}\n\nexport function SchoolVideoViewsView(props: SchoolVideoViewsViewProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const requestFilter = useGetRequestFilter();\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const videoRequest = VideoHelper.getVideoRequest(props.id, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const heatmapAggregation = Flight.useBasicFetch<Engagement>(\n VideoViewsV2Requests.videoHeatMapAggregation(props.id, requestFilter)\n );\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject)\n );\n\n const getRequest = (cursor?: string) => VideoViewsV2Requests.videoHeatMap(props.id, requestFilter, cursor);\n const fetchNext = (cursor?: string) => fetchAsync(getRequest(cursor));\n const {\n items: individualHeatmaps,\n hasMore,\n isFetching,\n nextCursor,\n hasFirstPageCompleted: heatmapFirstPageCompleted\n } = useInfiniteList<Engagement>(getRequest, fetchNext);\n\n const individualHeatmapUserIds = individualHeatmaps?.map(h => h.userId).filter(u => !!u);\n const {\n items: users,\n hasFirstRequestCompleted: usersFirstPageCompleted\n } = useGrowingBatchFetch<User>(\n individualHeatmapUserIds,\n UserRequests.getById\n );\n\n useHandleVideoError(video);\n\n useSetPageMetadata({ title: getPhrase('title', { video: video.data?.name }) });\n useSetHeaderTitle(video.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(video.data, getInsightsUrl));\n\n\n function getInsightsUrl(): string {\n const currentAppLink = AppLinkHelper.getCurrentAppLink();\n const videoId = currentAppLink?.args?.[0];\n let videoRoute = '';\n\n if (!videoId) return videoRoute;\n\n if (props.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${currentAppLink?.args[0]}`;\n\n if (props.typeId === MasterType.Video)\n videoRoute = `/videos/${currentAppLink?.args[0]}`;\n\n if (props.typeId === MasterType.Clip)\n videoRoute = `/clips/${currentAppLink?.args[0]}`;\n\n return videoRoute;\n }\n\n function getAnonUser(e: Engagement): AnonUser {\n if (e.userId) {\n const user = users?.[e.userId];\n\n if (!user)\n return { id: e.userId, deleted: true } as AnonUser;\n\n return user;\n }\n\n return { sessionId: e.sessionId } as AnonUser;\n }\n \n const viewers = individualHeatmaps?.map(e => ({ ...getAnonUser(e), percentage: e.engagementRate }));\n\n const playerLoaded = (\n video.hasCompleted &&\n config.data &&\n viewKey.data &&\n heatmapAggregation.hasCompleted\n );\n\n const tableDataLoaded = (\n !!video.hasCompleted &&\n heatmapFirstPageCompleted &&\n (usersFirstPageCompleted || !individualHeatmapUserIds?.length)\n );\n\n return (\n <div>\n <div className='mb-3'>\n {video.data ?\n <Breadcrumbs\n breadcrumbs={[\n {\n name: getPhrase('videoViews'),\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.HOME\n }\n }, {\n name: video.data.name,\n active: true\n }\n ]}\n />\n : <PartialBreadcrumbs />\n }\n </div>\n\n <div className='d-flex flex-column gap-3'>\n <div className={`${styles.rowA} w-100`}>\n <StreamsChartCardView videoId={props.id} type='user_type' />\n </div>\n <div className='w-100'>\n <div className='row'>\n <div className={`${styles.rowB} col row`}>\n <div className='col-6'>\n <StreamsBarChartCardView videoId={props.id} type='year_group' />\n </div>\n <div className='col-6'>\n <VideoViewsByRoleCardView videoId={props.id} />\n </div>\n </div>\n <div className={styles.videoEngagement}>\n {playerLoaded ?\n <VideoEngagementOverlay\n heading={getPhrase('totalEngagement')}\n className='p-3 h-auto'\n engagement={heatmapAggregation.data}\n viewKey={viewKey.data.viewKey}\n playerApiUrl={config.data.playerApiUrl}\n imageCdnUrl={config.data.imageCdnUrl}\n />\n : <PartialVideoEngagementOverlay hasHeading />\n }\n </div>\n </div>\n </div>\n {tableDataLoaded &&\n <>\n <EngagementTable\n key={getFilterParamsKey(filterQueryParams)}\n engagement={individualHeatmaps}\n users={viewers}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n }\n </>\n }\n </div>\n </div>\n );\n}"],"names":["DEFAULT_PARTIAL_LOADING_OPTIONS","PartialLoadingHelper","options","opts","getRandomFilterWidth","namespace","getPhrase","LanguageService","COLLAPSE_CHARACTER_COUNT","MAX_SEGMENT_LENGTH","BreadcrumbItem","React.forwardRef","props","ref","name","appLink","active","withBackIcon","trimmedName","title","jsx","jsxs","AppLink","SvgContainer","ChevronLeftSvg","SvgContainerSize","Breadcrumbs","breadcrumbs","isMobile","useMediaQuery","MediaQueryStrings","length","collapse","setCollapse","React.useState","shouldFocus","setShouldFocus","expandRef","React.useRef","React.useEffect","characterLength","prev","next","React.useLayoutEffect","_a","onClickExpand","Fragment","first","second","secondLast","last","rest","breadcrumb","idx","PartialBreadcrumbs","React.memo","numItems","width","SchoolVideoViewsView","fetchAsync","Flight.useGetFetchAsync","anonymiseUsers","useViewModel","ViewModelKeys","requestFilter","useGetRequestFilter","filterQueryParams","useGetAppLinkFilterParams","videoRequest","VideoHelper","video","Flight.useBasicFetch","config","ConfigRequests","heatmapAggregation","VideoViewsV2Requests","viewKey","PlayerRequests","MediaIdType","getRequest","cursor","fetchNext","individualHeatmaps","hasMore","isFetching","nextCursor","heatmapFirstPageCompleted","useInfiniteList","individualHeatmapUserIds","h","u","users","usersFirstPageCompleted","useGrowingBatchFetch","UserRequests","useHandleVideoError","useSetPageMetadata","useSetHeaderTitle","_b","useSetHeaderActions","useGetObjectHeaderActions","getInsightsUrl","currentAppLink","AppLinkHelper","videoId","videoRoute","MasterType","getAnonUser","e","user","viewers","playerLoaded","tableDataLoaded","AppChannels","Actions","styles","StreamsChartCardView","StreamsBarChartCardView","VideoViewsByRoleCardView","VideoEngagementOverlay","PartialVideoEngagementOverlay","EngagementTable","_c","getFilterParamsKey","InfiniteScrollFooter"],"mappings":"0wCAAA,MAAMA,GAAyD,CAC7D,SAAU,EACV,SAAU,GACV,SAAU,GACZ,EAYaC,GAAuB,CAClC,uBAAuBC,EAAiC,GAA0B,CAChF,MAAMC,EAAO,CACX,GAAGH,GACH,GAAGE,CAAA,EAGCE,EAAuB,IAAM,KAAK,IAAI,KAAK,MAAM,KAAK,OAAA,EAAWD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAEpG,MAAO,CAAC,GAAG,MAAMA,EAAK,QAAQ,CAAC,EAAE,IAAI,KAAO,CAAE,MAAO,GAAGC,EAAA,CAAsB,MAAO,CACvF,CACF,ECdMC,GAAY,6BACZC,GAAYC,EAAgB,iBAAiBF,EAAS,EAEtDG,GAA2B,GAC3BC,EAAqB,GAadC,EAAiBC,EAAAA,WAAiB,CAC7CC,EACAC,IACG,CACH,KAAM,CAAE,WAAY,CAAE,KAAAC,EAAM,QAAAC,EAAS,OAAAC,CAAA,EAAU,aAAAC,GAAiBL,EAEhE,IAAIM,EAAcJ,EACdK,EAAgB,KAEpB,OAAID,EAAY,OAAST,IACvBS,EAAcJ,EAAK,MAAM,EAAGL,CAAkB,EAAI,MAGlDU,EAAQL,GAIRM,EAAAA,IAAC,KAAA,CACC,UAAW,kBAAkBJ,EAAS,UAAY,EAAE,GACpD,MAAAG,EAEC,SAAAH,QACI,SAAA,CAAQ,SAAAE,EAAY,EACrBG,EAAAA,KAACC,EAAA,CAAQ,QAAAP,EAAkB,IAAAF,EAC1B,SAAA,CAAAI,SAAiBM,EAAA,CAAa,IAAKC,GAAgB,KAAMC,EAAiB,MAAO,QACjF,OAAA,CAAK,UAAWR,EAAe,OAAS,GAAK,SAAAC,CAAA,CAAY,CAAA,CAAA,CAC5D,CAAA,CAAA,CAIR,CAAC,EAMYQ,GAAc,CAAC,CAAE,YAAAC,KAAoC,CAChE,MAAMC,EAAWC,EAAcC,EAAkB,EAAE,EAE7CC,GAASJ,GAAA,YAAAA,EAAa,SAAU,EAEhC,CAAEK,EAAUC,CAAY,EAAIC,EAAAA,SAAe,EAAK,EAChD,CAAEC,EAAaC,CAAe,EAAIF,EAAAA,SAAe,EAAK,EACtDG,EAAYC,EAAAA,OAA0B,IAAI,EAEhDC,EAAAA,UAAgB,IAAM,CACpB,MAAMC,GAAkBb,GAAA,YAAAA,EAAa,OAAO,CAACc,EAAMC,IAASD,EAAOC,EAAK,KAAK,OAAQ,KAAM,EAEvFX,EAAS,GAAKS,EAAkBhC,IAClCyB,EAAY,EAAI,CACpB,EAAG,CAACN,GAAA,YAAAA,EAAa,MAAM,CAAC,EAKxBgB,EAAAA,gBAAsB,IAAM,OACtBR,KACFS,EAAAP,EAAU,UAAV,MAAAO,EAAmB,QACvB,EAAG,CAAEP,EAAU,QAASF,CAAY,CAAC,EAErC,SAASU,GAAgB,CACvBZ,EAAY,EAAK,EACjBG,EAAe,EAAI,CACrB,CAEA,GAAI,CAACL,GAAWH,GAAYG,EAAS,EACnC,OAAOX,EAAAA,IAAA0B,EAAAA,SAAA,EAAE,EAEX,GAAIlB,EACF,aACG,MAAA,CAAI,aAAW,aACd,SAAAR,EAAAA,IAAC,KAAA,CAAG,UAAU,qBACZ,SAAAA,EAAAA,IAACV,EAAA,CAAe,WAAYiB,EAAYI,EAAS,CAAC,EAAG,aAAY,GAAC,EACpE,CAAA,CACF,EAGJ,MAAMgB,EAAQ3B,EAAAA,IAACV,EAAA,CAAe,WAAYiB,EAAY,CAAC,EAAG,EACpDqB,EAASjB,EAAS,EAAIX,EAAAA,IAACV,EAAA,CAAe,WAAYiB,EAAY,CAAC,CAAA,CAAG,EAAKP,EAAAA,IAAA0B,EAAAA,SAAA,CAAA,CAAE,EACzEG,EAAalB,EAAS,EAAIX,EAAAA,IAACV,EAAA,CAAe,WAAYiB,EAAYI,EAAS,CAAC,CAAA,CAAG,EAAKX,EAAAA,IAAA0B,EAAAA,SAAA,CAAA,CAAE,EACtFI,EAAOnB,EAAS,EAAIX,EAAAA,IAACV,EAAA,CAAe,WAAYiB,EAAYI,EAAS,CAAC,CAAA,CAAG,EAAKX,EAAAA,IAAA0B,EAAAA,SAAA,CAAA,CAAE,EAChFK,EAAOxB,EAAY,MAAM,EAAGI,EAAS,CAAC,EAE5C,aACG,MAAA,CAAI,aAAW,aACd,SAAAV,EAAAA,KAAC,KAAA,CAAG,UAAU,qBACX,SAAA,CAAA0B,EACAC,EACAhB,EACCZ,EAAAA,IAAC,KAAA,CAAG,UAAU,kBACZ,SAAAA,EAAAA,IAAC,SAAA,CACC,UAAU,WACV,QAASyB,EACT,aAAYvC,GAAU,QAAQ,EAC/B,SAAA,KAAA,CAAA,EAGH,EACA6C,EAAK,IAAI,CAACC,EAAYC,IACpBjC,EAAAA,IAACV,EAAA,CAEC,WAAA0C,EACA,IAAKC,IAAQ,EAAIhB,EAAY,IAAA,EAFxBgB,CAAA,CAIR,EAEFJ,EACAC,CAAA,CAAA,CACH,CAAA,CACF,CAEJ,EAEaI,GAAqBC,EAAAA,KAAW,SAAS,CAAE,SAAAC,EAAW,GAA6B,CAG9F,OAFiB3B,EAAcC,EAAkB,EAAE,EAI/CV,MAAC,MAAA,CAAI,UAAU,6BAA6B,MAAO,CAAE,OAAQ,YAAa,MAAO,MAAA,CAAO,CAAG,QAK5F,MAAA,CAAI,aAAW,aACd,SAAAA,EAAAA,IAAC,KAAA,CAAG,UAAU,qBACX,SAAAnB,GAAqB,uBAAuB,CAAE,SAAAuD,EAAU,EAAE,IAAI,CAAC,CAAE,MAAAC,GAASJ,IACzEjC,EAAAA,IAAC,KAAA,CAAa,UAAU,kBACtB,SAAAA,EAAAA,IAAC,QAAK,UAAU,4CAA4C,MAAO,CAAE,MAAAqC,CAAA,EAAS,wBAAyB,CAAE,OAAQ,OAAA,CAAQ,CAAG,GADrHJ,CAET,CACD,EACH,EACF,CAEJ,CAAC,kFC3HKhD,GAAY,iCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAOrD,SAASqD,GAAqB9C,EAAkC,WACrE,MAAM+C,EAAaC,EAAO,EAEpB,CAACC,CAAc,EAAIC,EAAsBC,GAAc,eAAe,EAEtEC,EAAgBC,EAAA,EAChBC,EAAoBC,EAAA,EAEpBC,EAAeC,EAAY,gBAAgBzD,EAAM,GAAIA,EAAM,MAAM,EACjE0D,EAAQC,EAAiCH,CAAY,EAErDI,EAASD,EAA6BE,GAAe,QAAQ,EAE7DC,EAAqBH,EACzBI,EAAqB,wBAAwB/D,EAAM,GAAIoD,CAAa,CAAA,EAGhEY,EAAUL,EACdM,GAAe,cAAcjE,EAAM,GAAIkE,GAAY,YAAY,CAAA,EAG3DC,EAAcC,GAAoBL,EAAqB,aAAa/D,EAAM,GAAIoD,EAAegB,CAAM,EACnGC,EAAaD,GAAoBrB,EAAWoB,EAAWC,CAAM,CAAC,EAC9D,CACJ,MAAOE,EACP,QAAAC,EACA,WAAAC,EACA,WAAAC,EACA,sBAAuBC,CAAA,EACrBC,GAA4BR,EAAYE,CAAS,EAE/CO,EAA2BN,GAAA,YAAAA,EAAoB,IAAIO,GAAKA,EAAE,QAAQ,OAAOC,GAAK,CAAC,CAACA,GAChF,CACJ,MAAOC,EACP,yBAA0BC,CAAA,EACxBC,GACFL,EACAM,GAAa,OAAA,EAGfC,GAAoBzB,CAAK,EAEzB0B,EAAmB,CAAE,MAAO1F,EAAU,QAAS,CAAE,OAAOsC,EAAA0B,EAAM,OAAN,YAAA1B,EAAY,IAAA,CAAM,EAAG,EAC7EqD,IAAkBC,EAAA5B,EAAM,OAAN,YAAA4B,EAAY,IAAI,EAClCC,GAAoBC,GAA0B9B,EAAM,KAAM+B,CAAc,CAAC,EAGzE,SAASA,GAAyB,OAChC,MAAMC,EAAiBC,GAAc,kBAAA,EAC/BC,GAAU5D,EAAA0D,GAAA,YAAAA,EAAgB,OAAhB,YAAA1D,EAAuB,GACvC,IAAI6D,EAAa,GAEjB,OAAKD,IAED5F,EAAM,SAAW8F,EAAW,cAC9BD,EAAa,iBAAiBH,GAAA,YAAAA,EAAgB,KAAK,EAAE,IAEnD1F,EAAM,SAAW8F,EAAW,QAC9BD,EAAa,WAAWH,GAAA,YAAAA,EAAgB,KAAK,EAAE,IAE7C1F,EAAM,SAAW8F,EAAW,OAC9BD,EAAa,UAAUH,GAAA,YAAAA,EAAgB,KAAK,EAAE,KAEzCG,CACT,CAEA,SAASE,EAAYC,EAAyB,CAC5C,GAAIA,EAAE,OAAQ,CACZ,MAAMC,EAAOlB,GAAA,YAAAA,EAAQiB,EAAE,QAEvB,OAAKC,GACI,CAAE,GAAID,EAAE,OAAQ,QAAS,EAAA,CAGpC,CAEA,MAAO,CAAE,UAAWA,EAAE,SAAA,CACxB,CAEA,MAAME,EAAU5B,GAAA,YAAAA,EAAoB,IAAI0B,IAAM,CAAE,GAAGD,EAAYC,CAAC,EAAG,WAAYA,EAAE,cAAA,IAE3EG,EACJzC,EAAM,cACNE,EAAO,MACPI,EAAQ,MACRF,EAAmB,aAGfsC,EACJ,CAAC,CAAC1C,EAAM,cACRgB,IACCM,GAA2B,EAACJ,GAAA,MAAAA,EAA0B,SAGzD,cACG,MAAA,CACC,SAAA,CAAApE,EAAAA,IAAC,MAAA,CAAI,UAAU,OACZ,SAAAkD,EAAM,KACLlD,EAAAA,IAACM,GAAA,CACC,YAAa,CACX,CACE,KAAMpB,EAAU,YAAY,EAC5B,QAAS,CACP,YAAa2G,GAAY,OACzB,OAAQC,EAAQ,OAAO,IAAA,CACzB,EACC,CACD,KAAM5C,EAAM,KAAK,KACjB,OAAQ,EAAA,CACV,CACF,CAAA,EAEAlD,MAACkC,GAAA,CAAA,CAAmB,EAE1B,EAEAjC,EAAAA,KAAC,MAAA,CAAI,UAAU,2BACb,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAG+F,EAAO,IAAI,SAC5B,SAAA/F,EAAAA,IAACgG,GAAA,CAAqB,QAASxG,EAAM,GAAI,KAAK,YAAY,EAC5D,QACC,MAAA,CAAI,UAAU,QACb,SAAAS,EAAAA,KAAC,MAAA,CAAI,UAAU,MACb,SAAA,CAAAA,OAAC,MAAA,CAAI,UAAW,GAAG8F,EAAO,IAAI,WAC5B,SAAA,CAAA/F,EAAAA,IAAC,MAAA,CAAI,UAAU,QACb,SAAAA,EAAAA,IAACiG,GAAA,CAAwB,QAASzG,EAAM,GAAI,KAAK,YAAA,CAAa,CAAA,CAChE,EACAQ,EAAAA,IAAC,OAAI,UAAU,QACb,eAACkG,GAAA,CAAyB,QAAS1G,EAAM,EAAA,CAAI,CAAA,CAC/C,CAAA,EACF,EACAQ,EAAAA,IAAC,MAAA,CAAI,UAAW+F,EAAO,gBACpB,SAAAJ,EACC3F,EAAAA,IAACmG,GAAA,CACC,QAASjH,EAAU,iBAAiB,EACpC,UAAU,aACV,WAAYoE,EAAmB,KAC/B,QAASE,EAAQ,KAAK,QACtB,aAAcJ,EAAO,KAAK,aAC1B,YAAaA,EAAO,KAAK,WAAA,CAAA,EAEzBpD,EAAAA,IAACoG,GAAA,CAA8B,WAAU,GAAC,CAAA,CAEhD,CAAA,CAAA,CACF,CAAA,CACF,EACCR,GACC3F,EAAAA,KAAAyB,WAAA,CACE,SAAA,CAAA1B,EAAAA,IAACqG,GAAA,CAEC,WAAYvC,EACZ,MAAO4B,EACP,aAAaY,EAAAlD,EAAO,OAAP,YAAAkD,EAAa,YAC1B,eAAA7D,CAAA,EAJK8D,GAAmBzD,CAAiB,CAAA,GAMzCiB,GAAWC,IACXhE,EAAAA,IAACwG,GAAA,CACC,WAAAxC,EACA,UAAAH,EACA,WAAAI,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CAEJ,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as N,d as U,e as _,b as R,P as A,u as s,f as T,a as I,L as O,j as e,V as q,U as G,C as M}from"./app-BqRx5tK8.js";import{P as F,M as K,V as L,a as H,E as $}from"./BIbP_ulq.chunk.js";import{g as h}from"./CX5q-0jT.chunk.js";import{V as d}from"./BE7zUNFh.chunk.js";import{u as k}from"./DxUueJN7.chunk.js";import{P as B}from"./CqSaPgvV.chunk.js";import{C as D,a as Q}from"./DNt9Tv5W.chunk.js";import{u as Y}from"./C6eAAaNL.chunk.js";import{u as z}from"./CaiGBx50.chunk.js";import{u as J}from"./CU-I5G45.chunk.js";import{u as W,a as X}from"./BlAGsOOw.chunk.js";import{u as Z}from"./C6H2bU7H.chunk.js";import{E as ee}from"./zaMwD-xl.chunk.js";import{V as ae}from"./BmScDBcl.chunk.js";import"./DecstRlc.chunk.js";import"./DU5sOcpt.chunk.js";import"./DFhb3ZfO.chunk.js";import"./5O9SdVRZ.chunk.js";import"./CW7x8M-z.chunk.js";import"./CXhesQTd.chunk.js";import"./CdzMtbgC.chunk.js";import"./xkqdG021.chunk.js";import"./BfG3wCTD.chunk.js";import"./VSmYRJOj.chunk.js";import"./B_1LOG5E.chunk.js";import"./BrLXFCMV.chunk.js";import"./DHqmPVfK.chunk.js";import"./Dp_vnjo0.chunk.js";import"./ClcYw2ra.chunk.js";import"./sFV5nxD4.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./Fd0gT6QK.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./CV5ioe9U.chunk.js";import"./BMba67Uf.chunk.js";import"./D1U_fPVs.chunk.js";const te="_viewCountContainer_8jne3_1",ie="_engagementPercentageContainer_8jne3_4",se="_engagementGraphContainer_8jne3_7",ne="_partialTable_8jne3_10",g={viewCountContainer:te,engagementPercentageContainer:ie,engagementGraphContainer:se,partialTable:ne},re="reportsClips.clipEngagement",oe=O.encloseNamespace(re);function ze(a){var u,C,j,v,f;const[E]=N(q.ANONYMISE_USERS),p=U(),t=_(),{hasPermissions:y}=R(),n=!y(A.ViewCustomerAnalytics),o=s(n&&G.currentUser()),r=s(D.clip(a.id)),l=s(!!t&&(n?!!o.data&&d.aggregateEngagement(a.id,t,o.data.id):d.aggregateEngagement(a.id,t))),i=s(!!t&&(n?!!o.data&&d.individualEngagement(a.id,t,o.data.id):d.individualEngagement(a.id,t))),{users:P,isLoading:w,usersResponse:x}=T((C=(u=i.data)==null?void 0:u.data)==null?void 0:C.map(S=>S.userId)),c=s(F.createViewKey(a.id,K.MasterObject)),m=s(M.config());I({title:oe("pageTitle",{clip:(j=r.data)==null?void 0:j.name})}),Z((v=r.data)==null?void 0:v.name),W(X(r.data)),J(a.id),z(i),Y(r),k([c,l,i,...x.responses]);const V=!!r.data&&!!l.data&&!!c.data&&!!m.data,b=!!i.data&&(!i.data.data.length||!w);return e.jsxs("div",{className:"pb-3",children:[e.jsx(Q,{id:a.id}),e.jsxs("div",{className:"d-flex pb-3",children:[e.jsx("div",{className:`pe-2 ${g.viewCountContainer}`,children:e.jsx(ae,{useSharerId:n,objectId:a.id,className:"h-100"})}),e.jsx("div",{className:`px-2 ${g.engagementPercentageContainer}`,children:e.jsx(ee,{objectId:a.id,useSharerId:n,className:"h-100",layout:"vertical"})}),e.jsx("div",{className:`ps-2 ${g.engagementGraphContainer}`,children:V?e.jsx(L,{engagement:l.data,viewKey:c.data.viewKey,imageCdnUrl:m.data.imageCdnUrl,playerApiUrl:m.data.playerApiUrl},h(p)):e.jsx(H,{})})]}),b?e.jsx($,{engagement:i.data.data,users:P,imageCdnUrl:(f=m.data)==null?void 0:f.imageCdnUrl,anonymiseUsers:E,enableSort:!0},h(p)):e.jsx(B,{className:g.partialTable})]})}export{ze as ClipEngagementView};
|
|
2
|
+
//# sourceMappingURL=CFIWZ5KT.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CFIWZ5KT.chunk.js","sources":["../../src/apps/clips/views/clip-engagement/ClipEngagementView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests as SharedUserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, PlayerViewKey, Video } from 'libs/shared/interfaces';\nimport { Engagement, IndividualEngagementResponse } from 'libs/shared/interfaces';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { PartialVideoEngagementOverlay } from 'shared/components/video-engagement-overlay/PartialVideoEngagementOverlay';\nimport { VideoEngagementOverlay } from 'shared/components/video-engagement-overlay/VideoEngagementOverlay';\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { ClipRequests } from 'shared/flight-requests/ClipRequests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\nimport { useSetEngagementAudienceSuggestions } from 'shared/hooks/UseSetEngagementAudienceSuggestions';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { useGetObjectHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { EngagementOverviewCardView } from 'shared/views/overview-cards/engagement-overview-card/EngagementOverviewCardView';\nimport { ViewCountPieChartCardView } from 'shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView';\n\nimport { ClipNav } from 'apps/clips/components/clip-nav/ClipNav';\n\nimport styles from './clip-engagement.module.scss';\n\nconst namespace = 'reportsClips.clipEngagement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClipEngagementViewProps {\n id: string;\n}\n\nexport function ClipEngagementView(props: ClipEngagementViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const filterQueryParams = useGetAppLinkFilterParams();\n const requestFilter = useGetRequestFilter();\n\n const { hasPermissions } = usePermissions();\n\n const scopeBySharerId = !hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(scopeBySharerId && SharedUserRequests.currentUser());\n\n const clip = Flight.useBasicFetch<Video>(ClipRequests.clip(props.id));\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(!!requestFilter && (scopeBySharerId\n ? !!currentUser.data && VideoViewRequests.aggregateEngagement(props.id, requestFilter, currentUser.data.id)\n : VideoViewRequests.aggregateEngagement(props.id, requestFilter)\n ));\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(!!requestFilter && (scopeBySharerId\n ? !!currentUser.data && VideoViewRequests.individualEngagement(props.id, requestFilter, currentUser.data.id)\n : VideoViewRequests.individualEngagement(props.id, requestFilter)\n ));\n\n const { users, isLoading, usersResponse } = useChunkedUsersResponse(\n individualEngagement.data?.data?.map(d => d.userId)\n );\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject)\n );\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n useSetPageMetadata({ title: getPhrase('pageTitle', { clip: clip.data?.name }) });\n useSetHeaderTitle(clip.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(clip.data));\n useSetEngagementAudienceSuggestions(props.id);\n useSetAudienceFilterCount(individualEngagement);\n\n useHandleVideoError(clip);\n useHandleObjectError([ viewKey, aggregateEngagement, individualEngagement, ...usersResponse.responses ]);\n\n const engagementOverlayDataLoaded = !!clip.data\n && !!aggregateEngagement.data\n && !!viewKey.data\n && !!config.data;\n\n const tableDataLoaded = !!individualEngagement.data && (!individualEngagement.data.data.length || !isLoading);\n\n return (\n <div className='pb-3'>\n <ClipNav id={props.id} />\n <div className='d-flex pb-3'>\n <div className={`pe-2 ${styles.viewCountContainer}`}>\n <ViewCountPieChartCardView\n useSharerId={scopeBySharerId}\n objectId={props.id}\n className='h-100'\n />\n </div>\n <div className={`px-2 ${styles.engagementPercentageContainer}`}>\n <EngagementOverviewCardView\n objectId={props.id}\n useSharerId={scopeBySharerId}\n className='h-100'\n layout='vertical'\n />\n </div>\n <div className={`ps-2 ${styles.engagementGraphContainer}`}>\n {engagementOverlayDataLoaded\n ? <VideoEngagementOverlay\n // key is used to trigger player re-render\n key={getFilterParamsKey(filterQueryParams)}\n engagement={aggregateEngagement.data}\n viewKey={viewKey.data.viewKey}\n imageCdnUrl={config.data.imageCdnUrl}\n playerApiUrl={config.data.playerApiUrl}\n />\n : <PartialVideoEngagementOverlay />\n }\n </div>\n </div>\n {tableDataLoaded\n ? <EngagementTable\n key={getFilterParamsKey(filterQueryParams)}\n engagement={individualEngagement.data.data}\n users={users}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n enableSort\n />\n : <PartialTable className={styles.partialTable} />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ClipEngagementView","props","anonymiseUsers","useViewModel","ViewModelKeys","filterQueryParams","useGetAppLinkFilterParams","requestFilter","useGetRequestFilter","hasPermissions","usePermissions","scopeBySharerId","PermissionName","currentUser","Flight.useBasicFetch","SharedUserRequests","clip","ClipRequests","aggregateEngagement","VideoViewRequests","individualEngagement","users","isLoading","usersResponse","useChunkedUsersResponse","_b","_a","d","viewKey","PlayerRequests","MediaIdType","config","ConfigRequests","useSetPageMetadata","_c","useSetHeaderTitle","_d","useSetHeaderActions","useGetObjectHeaderActions","useSetEngagementAudienceSuggestions","useSetAudienceFilterCount","useHandleVideoError","useHandleObjectError","engagementOverlayDataLoaded","tableDataLoaded","jsxs","jsx","ClipNav","styles","ViewCountPieChartCardView","EngagementOverviewCardView","VideoEngagementOverlay","getFilterParamsKey","PartialVideoEngagementOverlay","EngagementTable","_e","PartialTable"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import{r as A,al as me,an as fe,L as U,j as i,h as y,a4 as H,aa as $,v as R,aV as k,b$ as ve,aU as P,p as f,aF as z,a2 as ge,a3 as O}from"./app-BqRx5tK8.js";import{I as xe}from"./UWjf2h5X.chunk.js";import{j as be,h as w,f as B,e as ee,k as te,I as se}from"./cRQEJA0-.chunk.js";import{u as we}from"./DHqmPVfK.chunk.js";import{a as b}from"./ClcYw2ra.chunk.js";import{I as ye}from"./xkqdG021.chunk.js";import{t as Y,d as q,m as pe,c as ie,i as ke}from"./CXhesQTd.chunk.js";import{T as Se}from"./BUM8Ub4p.chunk.js";const L=U.encloseNamespace("reportsShared.dataHooks"),wt=(e,n,a)=>{const[s,t]=A.useState({}),r=me(),l=we();function o(h,d){h.forEach(u=>{t(v=>({...v,[be(u)]:{...u,status:d}}))})}function c(){const h=Object.keys(s).map(g=>s[g]);if(!h.length)return;let d=0,u=0;function v(){u++}function m(){d++,d===h.length&&x()}function x(){let g="",p=!1;u===0&&(g=L("error",{smartCount:h.length}),p=!0),u<d&&(g=L("success",{smartCount:u})+` ${L("partialError",{smartCount:d-u})}`),u===d&&(g=L("success",{smartCount:u})),p?l.error(g):l.success(g),t({}),a&&a()}h.forEach(({id:g,resultId:p,questionId:S,status:W})=>{fe(r,xe.mark(e,n,g,{id:g,resultId:p,questionId:S,status:W},v,null,m))})}return{markedAnswers:s,addMarkedAnswers:o,submitMarkedAnswers:c}};function I(e){const{answer:n}=e;function a(s){switch(s){case w.Correct:return"bg-light-green";case w.Incorrect:return"bg-light-red";case w.PendingReview:return"bg-light-blue"}}return i.jsxs("div",{className:`${a(n.status)} rounded p-2 mb-2`,children:[i.jsxs("div",{className:"d-flex align-items-center gap-2",children:[n.status===w.Correct&&i.jsx(y,{svg:H,className:"svg-container flex-shrink-0 text-success"}),n.status===w.Incorrect&&i.jsx(y,{svg:$,className:"svg-container flex-shrink-0 text-danger"}),!e.customAnswer&&i.jsx("span",{className:e.textClassName,children:n.text})]}),e.children]},n.id)}const Ne="shared.interactionResponses",Ce=U.encloseNamespace(Ne);function Ee(e){const n=R.first(e.answers);return n?i.jsxs(I,{answer:n,customAnswer:!0,children:[i.jsx("div",{className:"ratio ratio-16x9",children:i.jsx("img",{className:"img-fluid bg-white border rounded h-100 w-100",src:n.text,alt:`${Ce("illustrationAlt")}: ${e.interaction.name}`})}),e.children]}):i.jsx(i.Fragment,{})}function je(e){return e.answers.length?i.jsx("ul",{className:"list-unstyled",children:e.answers.map(n=>i.jsx("li",{children:i.jsx(I,{answer:n,textClassName:"bg-white p-1 border border-gray-300 rounded"})},n.id))}):i.jsx(i.Fragment,{})}function Oe(e){return e.answers.length?i.jsx("ul",{className:"list-unstyled",children:e.answers.map(n=>i.jsx("li",{children:i.jsx(I,{answer:n})},n.id))}):i.jsx(i.Fragment,{})}function Ae(e){const n=R.first(e.answers);return n?i.jsx(I,{answer:n,children:e.children}):i.jsx(i.Fragment,{})}function Re(e){const n=R.first(e.answers);return n?i.jsx(I,{answer:n}):i.jsx(i.Fragment,{})}const K=()=>i.jsx(i.Fragment,{}),Ie={[b.Annotation]:K,[b.Image]:K,[b.MissingWord]:je,[b.MultipleChoice]:Oe,[b.TrueOrFalse]:Re,[b.ShortAnswer]:Ae,[b.Illustration]:Ee};function V(e){return i.jsxs(i.Fragment,{children:[e.correctness===B.Correct&&i.jsx("div",{className:"ms-2 text-success",children:i.jsx(y,{svg:Se})}),e.correctness===B.Incorrect&&i.jsx("div",{className:"ms-2 text-danger",children:i.jsx(y,{svg:$})})]})}function re(e){return i.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[i.jsx("p",{className:"fw-semibold mb-0",children:e.anonymisedUserName||k.getFullName(e.studentResults.user)}),i.jsx(V,{correctness:e.correctness})]})}function ne(e){return i.jsx("svg",{...e,children:i.jsx("path",{fill:"currentColor",d:"M12.034 21C7.044 21 3 16.968 3 11.993s4.045-9.006 9.034-9.006 9.034 4.032 9.034 9.006S17.023 21 12.034 21M14.95 8.22l-2.946 2.867-2.89-2.91a.646.646 0 0 0-.909 0 .633.633 0 0 0 0 .9l2.891 2.91-2.89 2.922a.633.633 0 0 0 0 .9c.25.25.657.25.908 0l2.89-2.92 2.946 2.92c.251.25.658.25.909 0a.633.633 0 0 0 0-.9l-2.946-2.921L15.86 9.12a.633.633 0 0 0 0-.9.646.646 0 0 0-.909 0"})})}function We(e){return i.jsxs("svg",{...e,children:[i.jsx("rect",{width:"24",height:"24",fill:"white"}),i.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M21 12c0-4.972-4.028-9-9-9s-9 4.028-9 9 4.028 9 9 9 9-4.028 9-9M6.492 6.492A7.74 7.74 0 0 1 12 4.212c2.081 0 4.037.809 5.508 2.28A7.74 7.74 0 0 1 19.788 12c0 2.081-.809 4.037-2.28 5.508A7.74 7.74 0 0 1 12 19.788a7.74 7.74 0 0 1-5.508-2.28A7.74 7.74 0 0 1 4.212 12c0-2.081.809-4.037 2.28-5.508m8.46 1.728-2.947 2.867-2.89-2.91a.646.646 0 0 0-.909 0 .633.633 0 0 0 0 .9l2.891 2.91-2.89 2.922a.633.633 0 0 0 0 .9c.25.25.657.25.908 0l2.89-2.92 2.946 2.92c.251.25.658.25.909 0a.633.633 0 0 0 0-.9l-2.946-2.921L15.86 9.12a.633.633 0 0 0 0-.9.646.646 0 0 0-.909 0",clipRule:"evenodd"})]})}function ae(e){return i.jsx("svg",{...e,children:i.jsx("path",{fill:"currentColor",d:"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9m4.244 5.578a.77.77 0 0 0-1.058.068l-4.722 5.18-1.684-1.615a.77.77 0 0 0-1.06 0 .7.7 0 0 0 0 1.018l2.25 2.16a.77.77 0 0 0 1.094-.035l5.25-5.76a.7.7 0 0 0-.07-1.016"})})}function le(e){return e.correctness!==B.AwaitingMarking?i.jsx(i.Fragment,{}):i.jsxs("div",{className:"d-flex justify-content-end gap-2 mt-2",children:[i.jsx("div",{className:`d-flex flex-column justify-content-end cursor-pointer
|
|
2
|
+
${e.markedStatus===w.Correct?"text-success":""}`,children:i.jsx(y,{svg:e.markedStatus===w.Correct?ae:ve,onClick:()=>e.markInteraction(e.studentAttempt.answers,w.Correct)})}),i.jsx("div",{className:`d-flex flex-column justify-content-end cursor-pointer
|
|
3
|
+
${e.markedStatus===w.Incorrect?" text-danger":""}`,children:i.jsx(y,{svg:e.markedStatus===w.Incorrect?ne:We,onClick:()=>e.markInteraction(e.studentAttempt.answers,w.Incorrect)})})]})}const ze="interactives.responseTypes",Le=U.encloseNamespace(ze);function oe(){return i.jsx("p",{className:"p-2",children:i.jsx("em",{children:Le("noResponse")})})}const Fe="_avatarContainer_1h05x_1",Me={avatarContainer:Fe};function yt(e){var r,l,o,c,h,d;const n=Ie[e.interaction.typeId];if(!n)return i.jsx(i.Fragment,{});const a=ee(e.studentResults),s=te(e.interaction.id,a),t=se.isInteractionCorrect(e.interaction,a);return i.jsx("div",{className:"position-relative",children:i.jsx("div",{className:`rounded ${e.className??""}`,children:i.jsxs("div",{className:"d-flex",children:[!!e.showStudentDetails&&i.jsx("div",{className:"me-2",children:i.jsx("div",{className:Me.avatarContainer,children:i.jsx(P,{imageCdnUrl:e.imageCdnUrl,initials:e.anonymisedUserName?k.getInitialsFromFullName(e.anonymisedUserName):k.getInitials((r=e.studentResults.user)==null?void 0:r.name,(l=e.studentResults.user)==null?void 0:l.surname),imageUrl:e.anonymisedUserName?null:(c=(o=e.studentResults.user)==null?void 0:o.avatar)==null?void 0:c.url,showAnonymousUser:!!((d=(h=e.studentResults)==null?void 0:h.user)!=null&&d.sessionId)})})}),i.jsxs("div",{className:"flex-grow-1",children:[!!e.showStudentDetails&&i.jsx(re,{studentResults:e.studentResults,correctness:t,anonymisedUserName:e.anonymisedUserName}),i.jsxs("div",{className:"d-flex justify-content-between",children:[i.jsx("div",{className:`flex-grow-1 mb-2 ${e.responseComponentClass?e.responseComponentClass:""}`,children:s?i.jsx(n,{interaction:e.interaction,answers:s.answers,imageCdnUrl:e.imageCdnUrl,user:e.studentResults.user,showFeedback:e.showFeedback,showAvatar:e.showAvatar,children:i.jsx(le,{studentAttempt:s,correctness:t,markInteraction:e.markInteraction,markedStatus:e.markedStatus})}):i.jsx(oe,{})}),!e.showStudentDetails&&i.jsx(V,{correctness:t})]})]})]})})})}function $e(e){const n=R.first(e.answers);if(!n)return i.jsx(i.Fragment,{});let a="rounded p-2 mb-2 w-50";return e.reportsStyling||(a+=" text-white"),i.jsx("div",{className:a,children:i.jsx("img",{className:"img-fluid border rounded",src:n.text,alt:`Illustrated answer to the question: ${e.interaction.name}`})})}const _="cv-missing-word-";function Pe(e){const a=e.interaction.data.sentence.replace(/{([^{}]*)}/g,(t,r)=>`{${_}${r}}`).split(/{([^{}]*)}/g);let s="p-2";return e.reportsStyling||(s+=" border rounded"),i.jsx("div",{className:s,children:a.map((t,r)=>{if(!t.startsWith(_))return t;const l=t.replace(_,""),o=e.interaction.actionableItems.find(d=>d.order.toString()===l);if(!o)return;const c=e.answers.find(d=>d.id==o.id);if(!c)return;if(!e.showFeedback)return i.jsx("strong",{className:"text-info",children:c.text},r);const h=c.status===w.Correct;return i.jsxs(f.Fragment,{children:[!h&&i.jsxs(i.Fragment,{children:[i.jsx("del",{className:"text-danger",children:i.jsx("strong",{children:c.text})})," "]}),i.jsx("strong",{className:"text-success",children:o.name})]},r)})})}var j=null,G=null;ie&&window.addEventListener("resize",function(){G!==window.devicePixelRatio&&(G=window.devicePixelRatio,j=null)});function J(){if(j===null){if(typeof document>"u")return j=0,j;var e=document.body,n=document.createElement("div");n.classList.add("simplebar-hide-scrollbar"),e.appendChild(n);var a=n.getBoundingClientRect().right;e.removeChild(n),j=a}return j}function N(e){return!e||!e.ownerDocument||!e.ownerDocument.defaultView?window:e.ownerDocument.defaultView}function D(e){return!e||!e.ownerDocument?document:e.ownerDocument}var F=(function(){function e(a,s){var t=this;this.onScroll=function(){var r=N(t.el);t.scrollXTicking||(r.requestAnimationFrame(t.scrollX),t.scrollXTicking=!0),t.scrollYTicking||(r.requestAnimationFrame(t.scrollY),t.scrollYTicking=!0)},this.scrollX=function(){t.axis.x.isOverflowing&&(t.showScrollbar("x"),t.positionScrollbar("x")),t.scrollXTicking=!1},this.scrollY=function(){t.axis.y.isOverflowing&&(t.showScrollbar("y"),t.positionScrollbar("y")),t.scrollYTicking=!1},this.onMouseEnter=function(){t.showScrollbar("x"),t.showScrollbar("y")},this.onMouseMove=function(r){t.mouseX=r.clientX,t.mouseY=r.clientY,(t.axis.x.isOverflowing||t.axis.x.forceVisible)&&t.onMouseMoveForAxis("x"),(t.axis.y.isOverflowing||t.axis.y.forceVisible)&&t.onMouseMoveForAxis("y")},this.onMouseLeave=function(){t.onMouseMove.cancel(),(t.axis.x.isOverflowing||t.axis.x.forceVisible)&&t.onMouseLeaveForAxis("x"),(t.axis.y.isOverflowing||t.axis.y.forceVisible)&&t.onMouseLeaveForAxis("y"),t.mouseX=-1,t.mouseY=-1},this.onWindowResize=function(){t.scrollbarWidth=t.getScrollbarWidth(),t.hideNativeScrollbar()},this.hideScrollbars=function(){t.axis.x.track.rect=t.axis.x.track.el.getBoundingClientRect(),t.axis.y.track.rect=t.axis.y.track.el.getBoundingClientRect(),t.isWithinBounds(t.axis.y.track.rect)||(t.axis.y.scrollbar.el.classList.remove(t.classNames.visible),t.axis.y.isVisible=!1),t.isWithinBounds(t.axis.x.track.rect)||(t.axis.x.scrollbar.el.classList.remove(t.classNames.visible),t.axis.x.isVisible=!1)},this.onPointerEvent=function(r){var l,o;t.axis.x.track.rect=t.axis.x.track.el.getBoundingClientRect(),t.axis.y.track.rect=t.axis.y.track.el.getBoundingClientRect(),(t.axis.x.isOverflowing||t.axis.x.forceVisible)&&(l=t.isWithinBounds(t.axis.x.track.rect)),(t.axis.y.isOverflowing||t.axis.y.forceVisible)&&(o=t.isWithinBounds(t.axis.y.track.rect)),(l||o)&&(r.preventDefault(),r.stopPropagation(),r.type==="mousedown"&&(l&&(t.axis.x.scrollbar.rect=t.axis.x.scrollbar.el.getBoundingClientRect(),t.isWithinBounds(t.axis.x.scrollbar.rect)?t.onDragStart(r,"x"):t.onTrackClick(r,"x")),o&&(t.axis.y.scrollbar.rect=t.axis.y.scrollbar.el.getBoundingClientRect(),t.isWithinBounds(t.axis.y.scrollbar.rect)?t.onDragStart(r,"y"):t.onTrackClick(r,"y"))))},this.drag=function(r){var l,o=t.axis[t.draggedAxis].track,c=o.rect[t.axis[t.draggedAxis].sizeAttr],h=t.axis[t.draggedAxis].scrollbar,d=t.contentWrapperEl[t.axis[t.draggedAxis].scrollSizeAttr],u=parseInt(t.elStyles[t.axis[t.draggedAxis].sizeAttr],10);r.preventDefault(),r.stopPropagation(),t.draggedAxis==="y"?l=r.pageY:l=r.pageX;var v=l-o.rect[t.axis[t.draggedAxis].offsetAttr]-t.axis[t.draggedAxis].dragOffset,m=v/(c-h.size),x=m*(d-u);t.draggedAxis==="x"&&(x=t.isRtl&&e.getRtlHelpers().isRtlScrollbarInverted?x-(c+h.size):x,x=t.isRtl&&e.getRtlHelpers().isRtlScrollingInverted?-x:x),t.contentWrapperEl[t.axis[t.draggedAxis].scrollOffsetAttr]=x},this.onEndDrag=function(r){var l=D(t.el),o=N(t.el);r.preventDefault(),r.stopPropagation(),t.el.classList.remove(t.classNames.dragging),l.removeEventListener("mousemove",t.drag,!0),l.removeEventListener("mouseup",t.onEndDrag,!0),t.removePreventClickId=o.setTimeout(function(){l.removeEventListener("click",t.preventClick,!0),l.removeEventListener("dblclick",t.preventClick,!0),t.removePreventClickId=null})},this.preventClick=function(r){r.preventDefault(),r.stopPropagation()},this.el=a,this.minScrollbarWidth=20,this.options=Object.assign({},e.defaultOptions,{},s),this.classNames=Object.assign({},e.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!e.instances.has(this.el)&&(this.recalculate=Y(this.recalculate.bind(this),64),this.onMouseMove=Y(this.onMouseMove.bind(this),64),this.hideScrollbars=q(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=q(this.onWindowResize.bind(this),64,{leading:!0}),e.getRtlHelpers=pe(e.getRtlHelpers),this.init())}e.getRtlHelpers=function(){var s=document.createElement("div");s.innerHTML='<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';var t=s.firstElementChild;document.body.appendChild(t);var r=t.firstElementChild;t.scrollLeft=0;var l=e.getOffset(t),o=e.getOffset(r);t.scrollLeft=999;var c=e.getOffset(r);return{isRtlScrollingInverted:l.left!==o.left&&o.left-c.left!==0,isRtlScrollbarInverted:l.left!==o.left}},e.getOffset=function(s){var t=s.getBoundingClientRect(),r=D(s),l=N(s);return{top:t.top+(l.pageYOffset||r.documentElement.scrollTop),left:t.left+(l.pageXOffset||r.documentElement.scrollLeft)}};var n=e.prototype;return n.init=function(){e.instances.set(this.el,this),ie&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},n.initDOM=function(){var s=this;if(Array.prototype.filter.call(this.el.children,function(l){return l.classList.contains(s.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var t=document.createElement("div"),r=document.createElement("div");t.classList.add(this.classNames.track),r.classList.add(this.classNames.scrollbar),t.appendChild(r),this.axis.x.track.el=t.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=t.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},n.initListeners=function(){var s=this,t=N(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(o){s.el.addEventListener(o,s.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(o){s.el.addEventListener(o,s.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),t.addEventListener("resize",this.onWindowResize);var r=!1,l=t.ResizeObserver||ke;this.resizeObserver=new l(function(){r&&s.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),t.requestAnimationFrame(function(){r=!0}),this.mutationObserver=new t.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},n.recalculate=function(){var s=N(this.el);this.elStyles=s.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var t=this.heightAutoObserverEl.offsetHeight<=1,r=this.heightAutoObserverEl.offsetWidth<=1,l=this.contentEl.offsetWidth,o=this.contentWrapperEl.offsetWidth,c=this.elStyles.overflowX,h=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var d=this.contentEl.scrollHeight,u=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=t?"auto":"100%",this.placeholderEl.style.width=r?l+"px":"auto",this.placeholderEl.style.height=d+"px";var v=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=u>l,this.axis.y.isOverflowing=d>v,this.axis.x.isOverflowing=c==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=h==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var m=this.axis.x.isOverflowing?this.scrollbarWidth:0,x=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&u>o-x,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&d>v-m,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},n.getScrollbarSize=function(s){if(s===void 0&&(s="y"),!this.axis[s].isOverflowing)return 0;var t=this.contentEl[this.axis[s].scrollSizeAttr],r=this.axis[s].track.el[this.axis[s].offsetSizeAttr],l,o=r/t;return l=Math.max(~~(o*r),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(l=Math.min(l,this.options.scrollbarMaxSize)),l},n.positionScrollbar=function(s){if(s===void 0&&(s="y"),!!this.axis[s].isOverflowing){var t=this.contentWrapperEl[this.axis[s].scrollSizeAttr],r=this.axis[s].track.el[this.axis[s].offsetSizeAttr],l=parseInt(this.elStyles[this.axis[s].sizeAttr],10),o=this.axis[s].scrollbar,c=this.contentWrapperEl[this.axis[s].scrollOffsetAttr];c=s==="x"&&this.isRtl&&e.getRtlHelpers().isRtlScrollingInverted?-c:c;var h=c/(t-l),d=~~((r-o.size)*h);d=s==="x"&&this.isRtl&&e.getRtlHelpers().isRtlScrollbarInverted?d+(r-o.size):d,o.el.style.transform=s==="x"?"translate3d("+d+"px, 0, 0)":"translate3d(0, "+d+"px, 0)"}},n.toggleTrackVisibility=function(s){s===void 0&&(s="y");var t=this.axis[s].track.el,r=this.axis[s].scrollbar.el;this.axis[s].isOverflowing||this.axis[s].forceVisible?(t.style.visibility="visible",this.contentWrapperEl.style[this.axis[s].overflowAttr]="scroll"):(t.style.visibility="hidden",this.contentWrapperEl.style[this.axis[s].overflowAttr]="hidden"),this.axis[s].isOverflowing?r.style.display="block":r.style.display="none"},n.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},n.onMouseMoveForAxis=function(s){s===void 0&&(s="y"),this.axis[s].track.rect=this.axis[s].track.el.getBoundingClientRect(),this.axis[s].scrollbar.rect=this.axis[s].scrollbar.el.getBoundingClientRect();var t=this.isWithinBounds(this.axis[s].scrollbar.rect);t?this.axis[s].scrollbar.el.classList.add(this.classNames.hover):this.axis[s].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[s].track.rect)?(this.showScrollbar(s),this.axis[s].track.el.classList.add(this.classNames.hover)):this.axis[s].track.el.classList.remove(this.classNames.hover)},n.onMouseLeaveForAxis=function(s){s===void 0&&(s="y"),this.axis[s].track.el.classList.remove(this.classNames.hover),this.axis[s].scrollbar.el.classList.remove(this.classNames.hover)},n.showScrollbar=function(s){s===void 0&&(s="y");var t=this.axis[s].scrollbar.el;this.axis[s].isVisible||(t.classList.add(this.classNames.visible),this.axis[s].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},n.onDragStart=function(s,t){t===void 0&&(t="y");var r=D(this.el),l=N(this.el),o=this.axis[t].scrollbar,c=t==="y"?s.pageY:s.pageX;this.axis[t].dragOffset=c-o.rect[this.axis[t].offsetAttr],this.draggedAxis=t,this.el.classList.add(this.classNames.dragging),r.addEventListener("mousemove",this.drag,!0),r.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(r.addEventListener("click",this.preventClick,!0),r.addEventListener("dblclick",this.preventClick,!0)):(l.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},n.onTrackClick=function(s,t){var r=this;if(t===void 0&&(t="y"),!!this.options.clickOnTrack){var l=N(this.el);this.axis[t].scrollbar.rect=this.axis[t].scrollbar.el.getBoundingClientRect();var o=this.axis[t].scrollbar,c=o.rect[this.axis[t].offsetAttr],h=parseInt(this.elStyles[this.axis[t].sizeAttr],10),d=this.contentWrapperEl[this.axis[t].scrollOffsetAttr],u=t==="y"?this.mouseY-c:this.mouseX-c,v=u<0?-1:1,m=v===-1?d-h:d+h,x=function g(){if(v===-1){if(d>m){var p;d-=r.options.clickOnTrackSpeed,r.contentWrapperEl.scrollTo((p={},p[r.axis[t].offsetAttr]=d,p)),l.requestAnimationFrame(g)}}else if(d<m){var S;d+=r.options.clickOnTrackSpeed,r.contentWrapperEl.scrollTo((S={},S[r.axis[t].offsetAttr]=d,S)),l.requestAnimationFrame(g)}};x()}},n.getContentElement=function(){return this.contentEl},n.getScrollElement=function(){return this.contentWrapperEl},n.getScrollbarWidth=function(){try{return getComputedStyle(this.contentWrapperEl,"::-webkit-scrollbar").display==="none"||"scrollbarWidth"in document.documentElement.style||"-ms-overflow-style"in document.documentElement.style?0:J()}catch{return J()}},n.removeListeners=function(){var s=this,t=N(this.el);this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(r){s.el.removeEventListener(r,s.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(r){s.el.removeEventListener(r,s.onPointerEvent,{capture:!0,passive:!0})}),this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl&&this.contentWrapperEl.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onWindowResize),this.mutationObserver&&this.mutationObserver.disconnect(),this.resizeObserver&&this.resizeObserver.disconnect(),this.recalculate.cancel(),this.onMouseMove.cancel(),this.hideScrollbars.cancel(),this.onWindowResize.cancel()},n.unMount=function(){this.removeListeners(),e.instances.delete(this.el)},n.isWithinBounds=function(s){return this.mouseX>=s.left&&this.mouseX<=s.left+s.width&&this.mouseY>=s.top&&this.mouseY<=s.top+s.height},n.findChild=function(s,t){var r=s.matches||s.webkitMatchesSelector||s.mozMatchesSelector||s.msMatchesSelector;return Array.prototype.filter.call(s.children,function(l){return r.call(l,t)})[0]},e})();F.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};F.instances=new WeakMap;function _e(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function M(){return M=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var a=arguments[n];for(var s in a)Object.prototype.hasOwnProperty.call(a,s)&&(e[s]=a[s])}return e},M.apply(this,arguments)}function Q(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);n&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),a.push.apply(a,s)}return a}function De(e){for(var n=1;n<arguments.length;n++){var a=arguments[n]!=null?arguments[n]:{};n%2?Q(a,!0).forEach(function(s){_e(e,s,a[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Q(a).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(a,s))})}return e}function Te(e,n){if(e==null)return{};var a={},s=Object.keys(e),t,r;for(r=0;r<s.length;r++)t=s[r],!(n.indexOf(t)>=0)&&(a[t]=e[t]);return a}function Be(e,n){if(e==null)return{};var a=Te(e,n),s,t;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t<r.length;t++)s=r[t],!(n.indexOf(s)>=0)&&Object.prototype.propertyIsEnumerable.call(e,s)&&(a[s]=e[s])}return a}var Ue=function(n){var a=Array.prototype.reduce.call(n,function(s,t){var r=t.name.match(/data-simplebar-(.+)/);if(r){var l=r[1].replace(/\W+(.)/g,function(o,c){return c.toUpperCase()});switch(t.value){case"true":s[l]=!0;break;case"false":s[l]=!1;break;case void 0:s[l]=!0;break;default:s[l]=t.value}}return s},{});return a},X=f.forwardRef(function(e,n){var a=e.children,s=e.scrollableNodeProps,t=s===void 0?{}:s,r=Be(e,["children","scrollableNodeProps"]),l,o=A.useRef(),c=A.useRef(),h=A.useRef(),d={},u={},v=[];return Object.keys(r).forEach(function(m){Object.prototype.hasOwnProperty.call(F.defaultOptions,m)?d[m]=r[m]:m.match(/data-simplebar-(.+)/)&&m!=="data-simplebar-direction"?v.push({name:m,value:r[m]}):u[m]=r[m]}),v.length&&console.warn(`simplebar-react: this way of passing options is deprecated. Pass it like normal props instead:
|
|
4
|
+
'data-simplebar-auto-hide="false"' —> 'autoHide="false"'
|
|
5
|
+
`),A.useEffect(function(){return o=t.ref||o,c.current&&(l=new F(c.current,De({},Ue(v),{},d,{},o&&{scrollableNode:o.current},{},h.current&&{contentNode:h.current})),n&&(n.current=l)),function(){l.unMount(),l=null}},[]),f.createElement("div",M({ref:c,"data-simplebar":!0},u),f.createElement("div",{className:"simplebar-wrapper"},f.createElement("div",{className:"simplebar-height-auto-observer-wrapper"},f.createElement("div",{className:"simplebar-height-auto-observer"})),f.createElement("div",{className:"simplebar-mask"},f.createElement("div",{className:"simplebar-offset"},typeof a=="function"?a({scrollableNodeRef:o,contentNodeRef:h}):f.createElement("div",M({},t,{className:"simplebar-content-wrapper".concat(t.className?" ".concat(t.className):"")}),f.createElement("div",{className:"simplebar-content"},a)))),f.createElement("div",{className:"simplebar-placeholder"})),f.createElement("div",{className:"simplebar-track simplebar-horizontal"},f.createElement("div",{className:"simplebar-scrollbar"})),f.createElement("div",{className:"simplebar-track simplebar-vertical"},f.createElement("div",{className:"simplebar-scrollbar"})))});X.displayName="SimpleBar";X.propTypes={children:z.oneOfType([z.node,z.func]),scrollableNodeProps:z.object};const He="_incorrect_4yeup_1",Ve="_answer_4yeup_4",Xe="_avatarContainer_4yeup_7",Ye="_avatarContainerImage_4yeup_15",qe="_image_4yeup_19",Ke="_imageContainer_4yeup_27",Ge="_svgFill_4yeup_42",C={incorrect:He,answer:Ve,avatarContainer:Xe,avatarContainerImage:Ye,image:qe,imageContainer:Ke,svgFill:Ge},T=["A","B","C","D"];ce.defaultProps={size:"lg",unCheckedBackground:"bg-white"};function ce(e){const[n,a]=f.useState(null),s=!!e.interaction.actionableItems.find(l=>{var o;return!!((o=l.data)!=null&&o.imageUrl)}),t=f.useRef(null),r=e.size==="sm"||s&&e.interaction.actionableItems.length>2;return i.jsx("ul",{className:`${s?`row ${r&&!e.isDisplayOnly?"px-lg-5 p-0":""}`:""} list-unstyled`,children:e.interaction.actionableItems.map((l,o)=>{var S,W;const c=(S=e.getSelectedAnswer)==null?void 0:S.call(e,l.id),h=(W=l.data)==null?void 0:W.imageUrl,d=!!l.name;function u(){e.submitted||(e.onSelectAnswer&&e.onSelectAnswer(l,!c),a(c?null:l.id))}if(e.onlyShowSelectedAnswer&&!c)return i.jsx(f.Fragment,{},o);let v=c?"bg-blue text-white":e.unCheckedBackground,m=()=>i.jsx(i.Fragment,{children:T[o]});e.showFeedback&&(e.showCorrectnessIcons||(v=l.isCorrect?"bg-success text-white":`bg-danger text-white ${C.incorrect}`),e.hideFeedbackIcons||(m=()=>i.jsx(i.Fragment,{children:l.isCorrect?i.jsx(y,{size:O.Small,svg:H}):i.jsx(y,{size:O.Small,svg:$})})));const x=e.showFeedback?{}:{role:"button",tabIndex:0,onKeyDown:ue=>ue.key==="Enter"&&u()};let g="";s&&(g="col-6");const p=l.id.toString()===(n==null?void 0:n.toString())&&e.leftHandSidePortalNode&&h&&!e.submitted;return i.jsxs(f.Fragment,{children:[p&&i.jsx(ye,{node:e.leftHandSidePortalNode,children:i.jsx(X,{className:"h-100",ref:t,children:i.jsxs("div",{className:"p-3 d-flex flex-column h-100",children:[i.jsxs("div",{className:"flex-grow-1",children:[i.jsx("div",{className:"cv-image-container text-center",children:i.jsx("img",{className:"img-fluid rounded",src:h,alt:l.name||T[o]})}),i.jsxs("div",{className:`${C.answer} h6 text-center text-dark p-3`,children:[i.jsx("span",{className:`d-inline-block ${d?"me-3":""} cv-multiple-choice-bullet`,children:i.jsx(m,{})}),d&&i.jsx("span",{className:"flex-grow-1 pe-4",children:l.name})]})]}),i.jsx("div",{className:"text-end",children:i.jsx(ge,{className:"btn btn-link",onClick:()=>a(null),children:"Close"})})]})})}),i.jsx("li",{className:`${g} mb-3`,children:i.jsxs("label",{className:`
|
|
6
|
+
d-block
|
|
7
|
+
rounded-3
|
|
8
|
+
shadow-sm
|
|
9
|
+
position-relative
|
|
10
|
+
${e.showFeedback?"":"cursor-pointer"}
|
|
11
|
+
${C.answer}
|
|
12
|
+
${v}
|
|
13
|
+
${s?"mb-0 h-100":""}
|
|
14
|
+
`,onClick:u,...x,children:[s&&i.jsxs("div",{children:[e.showCorrectnessIcons&&i.jsx("div",{className:`${C.svgFill} position-absolute top-0 start-0 p-2 z-1`,children:l.isCorrect?i.jsx(y,{svg:ae,size:O.ExtraLarge,className:"svg-container text-success"}):i.jsx(y,{svg:ne,size:O.Large,className:"svg-container text-red"})}),i.jsx("span",{className:`d-block position-relative ${C.imageContainer}`,children:i.jsx("span",{className:`
|
|
15
|
+
${C.image}
|
|
16
|
+
position-absolute
|
|
17
|
+
start-0
|
|
18
|
+
end-0
|
|
19
|
+
top-0
|
|
20
|
+
bottom-0
|
|
21
|
+
rounded-top
|
|
22
|
+
`,style:{backgroundImage:h?`url(${h})`:void 0},title:l.name||T[o]})})]}),i.jsxs("span",{className:`d-flex ${d||e.isDisplayOnly?"justify-content-between":"justify-content-center"} ${r?"p-2":"p-3"}`,children:[i.jsx("span",{className:`d-inline-block ${d?"me-3":""} cv-multiple-choice-bullet`,children:i.jsx(m,{})}),d&&i.jsx("span",{className:"flex-grow-1 pe-4",children:l.name}),e.userAvatar&&!e.onlyShowSelectedAnswer&&i.jsx("span",{className:`${C.avatarContainer} ${s?C.avatarContainerImage:""}`,children:c&&i.jsx(P,{imageCdnUrl:e.imageApi,initials:e.userInitials,imageUrl:e.userAvatar,extraClasses:"border border-white"})})]})]},o)})]},o)})})}const Je="_uncheckedBackground_klk8h_1",de={uncheckedBackground:Je};function Qe(e){var s,t,r,l;function n(o){const c=e.answers.find(h=>h.id==o);return c==null?void 0:c.id}let a="my-2";return e.reportsStyling&&(a+=" mx-2"),i.jsx("div",{className:a,children:i.jsx(ce,{interaction:e.interaction,showFeedback:e.showFeedback,getSelectedAnswer:n,imageApi:e.imageCdnUrl,userInitials:e.anonymisedUserName?k.getInitialsFromFullName(e.anonymisedUserName):k.getInitials((s=e.user)==null?void 0:s.name,(t=e.user)==null?void 0:t.surname),userAvatar:e.anonymisedUserName?null:(l=(r=e.user)==null?void 0:r.avatar)==null?void 0:l.url,onlyShowSelectedAnswer:!e.showAvatar,size:"sm",unCheckedBackground:e.showFeedback?"":`${de.uncheckedBackground} text-white`,isDisplayOnly:!0})})}function Ze(e){const n=R.first(e.answers);if(!n)return i.jsx(i.Fragment,{});let a="rounded p-2 mb-2";return e.reportsStyling||(a+=" bg-blue text-white"),i.jsx("div",{className:a,children:n.text})}const et="_feedback_ktgsx_1",tt="_avatarContainer_ktgsx_5",st="_avatarContainerSmall_ktgsx_14",it="_avatarSmall_ktgsx_18",rt="_incorrect_ktgsx_22",nt="_large_ktgsx_25",at="_small_ktgsx_29",E={feedback:et,avatarContainer:tt,avatarContainerSmall:st,avatarSmall:it,incorrect:rt,large:nt,small:at};he.defaultProps={size:"lg",unCheckedBackground:"bg-white"};function he(e){function n(a){e.onSelectAnswer&&e.onSelectAnswer(a)}return i.jsx("div",{className:`d-flex ${e.className?e.className:""} ${e.size==="sm"?"mx-n1":"mx-n2"}`,children:e.interaction.actionableItems.map((a,s)=>{const t=e.getSelectedAnswer(a.id);let r=t?"bg-blue text-white":e.unCheckedBackground,l=()=>i.jsx(i.Fragment,{});e.showFeedback&&(r=a.isCorrect?"bg-success text-white":`bg-danger text-white ${E.incorrect}`,e.hideFeedbackIcons||(l=()=>i.jsx(i.Fragment,{children:a.isCorrect?i.jsx(y,{size:O.Small,svg:H}):i.jsx(y,{size:O.Small,svg:$})})));const o=e.showFeedback?{}:{role:"button",tabIndex:0,onKeyDown:c=>c.key==="Enter"&&n(a)};return i.jsxs("label",{htmlFor:a.id,className:`
|
|
23
|
+
rounded-3
|
|
24
|
+
shadow-sm
|
|
25
|
+
my-0
|
|
26
|
+
position-relative
|
|
27
|
+
overflow-hidden
|
|
28
|
+
d-flex
|
|
29
|
+
align-items-center
|
|
30
|
+
justify-content-center
|
|
31
|
+
${e.size==="sm"?`${E.small} mx-1 h5`:`${E.large} mx-2 h4`}
|
|
32
|
+
${e.showFeedback?"":"cursor-pointer"}
|
|
33
|
+
${r}`,...o,children:[i.jsx("input",{id:a.id,type:"radio",name:"multiple-choice",checked:!!t,onChange:()=>n(a),disabled:e.showFeedback,hidden:!0}),a.name,i.jsx("span",{className:`position-absolute p-2 ${E.feedback}`,children:i.jsx(l,{})}),i.jsx("span",{className:`${E.avatarContainer}${e.size==="sm"?` ${E.avatarContainerSmall}`:""}`,children:t&&i.jsx(P,{imageCdnUrl:e.imageApi,initials:e.userInitials,imageUrl:e.userAvatar,extraClasses:`border border-white ${e.size==="sm"?E.avatarSmall:""}`})})]},s)})})}function lt(e){var s,t,r,l;function n(o){const c=e.answers.find(h=>h.id==o);return c==null?void 0:c.text}let a="justify-content-start";return e.reportsStyling&&(a="justify-content-center"),i.jsx("div",{className:"my-2",children:i.jsx(he,{className:a,interaction:e.interaction,showFeedback:e.showFeedback,hideFeedbackIcons:!e.showAvatar,getSelectedAnswer:n,imageApi:e.imageCdnUrl,userInitials:e.anonymisedUserName?k.getInitialsFromFullName(e.anonymisedUserName):k.getInitials((s=e.user)==null?void 0:s.name,(t=e.user)==null?void 0:t.surname),userAvatar:e.anonymisedUserName?null:(l=(r=e.user)==null?void 0:r.avatar)==null?void 0:l.url,size:"sm",unCheckedBackground:e.showFeedback?"":`${de.uncheckedBackground} text-white`})})}const Z=()=>i.jsx(i.Fragment,{}),ot={[b.Annotation]:Z,[b.Image]:Z,[b.MissingWord]:Pe,[b.MultipleChoice]:Qe,[b.TrueOrFalse]:lt,[b.ShortAnswer]:Ze,[b.Illustration]:$e},ct="_avatarContainer_1h05x_1",dt={avatarContainer:ct};function pt(e){var r,l,o,c;const n=ot[e.interaction.typeId];if(!n)return i.jsx(i.Fragment,{});const a=ee(e.studentResults),s=te(e.interaction.id,a),t=se.isInteractionCorrect(e.interaction,a);return i.jsx("div",{className:"position-relative mt-2",children:i.jsxs("div",{className:`rounded ${e.className??""}`,children:[i.jsxs("div",{className:"d-flex",children:[!!e.showStudentDetails&&i.jsx("div",{className:"me-2",children:i.jsx("div",{className:dt.avatarContainer,children:i.jsx(P,{imageCdnUrl:e.imageCdnUrl,initials:e.anonymisedUserName?k.getInitialsFromFullName(e.anonymisedUserName):k.getInitials((r=e.studentResults.user)==null?void 0:r.name,(l=e.studentResults.user)==null?void 0:l.surname),imageUrl:e.anonymisedUserName?null:(c=(o=e.studentResults.user)==null?void 0:o.avatar)==null?void 0:c.url})})}),i.jsxs("div",{className:"flex-grow-1",children:[!!e.showStudentDetails&&i.jsx(re,{studentResults:e.studentResults,correctness:t,anonymisedUserName:e.anonymisedUserName}),i.jsxs("div",{className:"d-flex justify-content-between",children:[i.jsx("div",{className:`flex-grow-1 ${e.responseComponentClass?e.responseComponentClass:""}`,children:s?i.jsx(n,{interaction:e.interaction,answers:s.answers,imageCdnUrl:e.imageCdnUrl,user:e.studentResults.user,showFeedback:e.showFeedback,showAvatar:e.showAvatar,reportsStyling:e.reportsStyling}):i.jsx(oe,{})}),!e.showStudentDetails&&i.jsx(V,{correctness:t})]})]})]}),i.jsx(le,{studentAttempt:s,correctness:t,markInteraction:e.markInteraction,markedStatus:e.markedStatus})]})})}export{pt as I,ce as M,yt as a,wt as u};
|
|
34
|
+
//# sourceMappingURL=CKLfLzhr.chunk.js.map
|