@clickview/reports 0.72.0 → 0.73.0-rc.2
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/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/Dp3arkyy.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/0Uji-0Ig.chunk.js +2 -0
- package/dist/scripts/0Uji-0Ig.chunk.js.map +1 -0
- package/dist/scripts/1uUClbTi.chunk.js +2 -0
- package/dist/scripts/1uUClbTi.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/9-ob4xwW.chunk.js +2 -0
- package/dist/scripts/9-ob4xwW.chunk.js.map +1 -0
- package/dist/scripts/B-0CRp8U.chunk.js +15 -0
- package/dist/scripts/B-0CRp8U.chunk.js.map +1 -0
- package/dist/scripts/B-M_POW7.chunk.js +2 -0
- package/dist/scripts/B-M_POW7.chunk.js.map +1 -0
- package/dist/scripts/B0HNQPjj.chunk.js +2 -0
- package/dist/scripts/B0HNQPjj.chunk.js.map +1 -0
- package/dist/scripts/B2kHUvkf.chunk.js +2 -0
- package/dist/scripts/B2kHUvkf.chunk.js.map +1 -0
- package/dist/scripts/BADbeO_o.chunk.js +2 -0
- package/dist/scripts/BADbeO_o.chunk.js.map +1 -0
- package/dist/scripts/BAR_V9AM.chunk.js +2 -0
- package/dist/scripts/BAR_V9AM.chunk.js.map +1 -0
- package/dist/scripts/BArX7fyb.chunk.js +2 -0
- package/dist/scripts/BArX7fyb.chunk.js.map +1 -0
- package/dist/scripts/BAt5WimN.chunk.js +2 -0
- package/dist/scripts/BAt5WimN.chunk.js.map +1 -0
- package/dist/scripts/BBKDp0Ea.chunk.js +4 -0
- package/dist/scripts/BBKDp0Ea.chunk.js.map +1 -0
- package/dist/scripts/BE4qMmvm.chunk.js +2 -0
- package/dist/scripts/BE4qMmvm.chunk.js.map +1 -0
- package/dist/scripts/BEjQ8YiC.chunk.js +10 -0
- package/dist/scripts/BEjQ8YiC.chunk.js.map +1 -0
- package/dist/scripts/BFH1W3y4.chunk.js +2 -0
- package/dist/scripts/BFH1W3y4.chunk.js.map +1 -0
- package/dist/scripts/BGYUqEPH.chunk.js +2 -0
- package/dist/scripts/BGYUqEPH.chunk.js.map +1 -0
- package/dist/scripts/BI4Pc5Qp.chunk.js +3 -0
- package/dist/scripts/BI4Pc5Qp.chunk.js.map +1 -0
- package/dist/scripts/BIcuRL8o.chunk.js +2 -0
- package/dist/scripts/BIcuRL8o.chunk.js.map +1 -0
- package/dist/scripts/BK5Lddwt.chunk.js +2 -0
- package/dist/scripts/BK5Lddwt.chunk.js.map +1 -0
- package/dist/scripts/BM1URibR.chunk.js +2 -0
- package/dist/scripts/BM1URibR.chunk.js.map +1 -0
- package/dist/scripts/BOenBxfx.chunk.js +34 -0
- package/dist/scripts/BOenBxfx.chunk.js.map +1 -0
- package/dist/scripts/BOoxRruH.chunk.js +2 -0
- package/dist/scripts/BOoxRruH.chunk.js.map +1 -0
- package/dist/scripts/BP4vyxCh.chunk.js +2 -0
- package/dist/scripts/BP4vyxCh.chunk.js.map +1 -0
- package/dist/scripts/BRR3J_Zy.chunk.js +2 -0
- package/dist/scripts/BRR3J_Zy.chunk.js.map +1 -0
- package/dist/scripts/BUJR0SBs.chunk.js +2 -0
- package/dist/scripts/BUJR0SBs.chunk.js.map +1 -0
- package/dist/scripts/BY58fjpA.chunk.js +2 -0
- package/dist/scripts/BY58fjpA.chunk.js.map +1 -0
- package/dist/scripts/BZV5U3ST.chunk.js +2 -0
- package/dist/scripts/BZV5U3ST.chunk.js.map +1 -0
- package/dist/scripts/BfaprYhg.chunk.js +2 -0
- package/dist/scripts/BfaprYhg.chunk.js.map +1 -0
- package/dist/scripts/Bfbk7XQF.chunk.js +2 -0
- package/dist/scripts/Bfbk7XQF.chunk.js.map +1 -0
- package/dist/scripts/BgBDu2hA.chunk.js +2 -0
- package/dist/scripts/BgBDu2hA.chunk.js.map +1 -0
- package/dist/scripts/BoLC4I50.chunk.js +2 -0
- package/dist/scripts/BoLC4I50.chunk.js.map +1 -0
- package/dist/scripts/BsXmQt2a.chunk.js +2 -0
- package/dist/scripts/BsXmQt2a.chunk.js.map +1 -0
- package/dist/scripts/ByUxUi78.chunk.js +2 -0
- package/dist/scripts/ByUxUi78.chunk.js.map +1 -0
- package/dist/scripts/BzFtDyVZ.chunk.js +2 -0
- package/dist/scripts/BzFtDyVZ.chunk.js.map +1 -0
- package/dist/scripts/C1TqvuUF.chunk.js +2 -0
- package/dist/scripts/C1TqvuUF.chunk.js.map +1 -0
- package/dist/scripts/C5lK-q9T.chunk.js +2 -0
- package/dist/scripts/C5lK-q9T.chunk.js.map +1 -0
- package/dist/scripts/C7IXStcD.chunk.js +2 -0
- package/dist/scripts/C7IXStcD.chunk.js.map +1 -0
- package/dist/scripts/CANX99lP.chunk.js +2 -0
- package/dist/scripts/CANX99lP.chunk.js.map +1 -0
- package/dist/scripts/CBjj_ih-.chunk.js +2 -0
- package/dist/scripts/CBjj_ih-.chunk.js.map +1 -0
- package/dist/scripts/CCIDM29p.chunk.js +2 -0
- package/dist/scripts/CCIDM29p.chunk.js.map +1 -0
- package/dist/scripts/CFjwQ5Sg.chunk.js +2 -0
- package/dist/scripts/CFjwQ5Sg.chunk.js.map +1 -0
- package/dist/scripts/CGbmnb6g.chunk.js +380 -0
- package/dist/scripts/CGbmnb6g.chunk.js.map +1 -0
- package/dist/scripts/CSd_qFwj.chunk.js +2 -0
- package/dist/scripts/CSd_qFwj.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/CZHffw7D.chunk.js +2 -0
- package/dist/scripts/CZHffw7D.chunk.js.map +1 -0
- package/dist/scripts/C_Famtl1.chunk.js +2 -0
- package/dist/scripts/C_Famtl1.chunk.js.map +1 -0
- package/dist/scripts/C_TaaD_7.chunk.js +2 -0
- package/dist/scripts/C_TaaD_7.chunk.js.map +1 -0
- package/dist/scripts/C_zppm7j.chunk.js +2 -0
- package/dist/scripts/C_zppm7j.chunk.js.map +1 -0
- package/dist/scripts/CbrfSCTb.chunk.js +2 -0
- package/dist/scripts/CbrfSCTb.chunk.js.map +1 -0
- package/dist/scripts/CjL3q_zy.chunk.js +6 -0
- package/dist/scripts/CjL3q_zy.chunk.js.map +1 -0
- package/dist/scripts/CjQHXyx0.chunk.js +2 -0
- package/dist/scripts/CjQHXyx0.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/Co9J1lM_.chunk.js +2 -0
- package/dist/scripts/Co9J1lM_.chunk.js.map +1 -0
- package/dist/scripts/Cq8XHkfC.chunk.js +2 -0
- package/dist/scripts/Cq8XHkfC.chunk.js.map +1 -0
- package/dist/scripts/Crxtdvtr.chunk.js +2 -0
- package/dist/scripts/Crxtdvtr.chunk.js.map +1 -0
- package/dist/scripts/CvkQEqoz.chunk.js +2 -0
- package/dist/scripts/CvkQEqoz.chunk.js.map +1 -0
- package/dist/scripts/DC24UA5G.chunk.js +2 -0
- package/dist/scripts/DC24UA5G.chunk.js.map +1 -0
- package/dist/scripts/DDQPxnFm.chunk.js +2 -0
- package/dist/scripts/DDQPxnFm.chunk.js.map +1 -0
- package/dist/scripts/DGmD-zcu.chunk.js +3 -0
- package/dist/scripts/DGmD-zcu.chunk.js.map +1 -0
- package/dist/scripts/DIqHgqYU.chunk.js +42 -0
- package/dist/scripts/DIqHgqYU.chunk.js.map +1 -0
- package/dist/scripts/DLNH1FET.chunk.js +2 -0
- package/dist/scripts/DLNH1FET.chunk.js.map +1 -0
- package/dist/scripts/DREQwdto.chunk.js +2 -0
- package/dist/scripts/DREQwdto.chunk.js.map +1 -0
- package/dist/scripts/DSJfyygS.chunk.js +2 -0
- package/dist/scripts/DSJfyygS.chunk.js.map +1 -0
- package/dist/scripts/DUPqT4A_.chunk.js +2 -0
- package/dist/scripts/DUPqT4A_.chunk.js.map +1 -0
- package/dist/scripts/DZWKI51S.chunk.js +2 -0
- package/dist/scripts/DZWKI51S.chunk.js.map +1 -0
- package/dist/scripts/DaLaLgLY.chunk.js +2 -0
- package/dist/scripts/DaLaLgLY.chunk.js.map +1 -0
- package/dist/scripts/DcnG6LJL.chunk.js +2 -0
- package/dist/scripts/DcnG6LJL.chunk.js.map +1 -0
- package/dist/scripts/DdCE2h3h.chunk.js +2 -0
- package/dist/scripts/DdCE2h3h.chunk.js.map +1 -0
- package/dist/scripts/DdaZekkP.chunk.js +2 -0
- package/dist/scripts/DdaZekkP.chunk.js.map +1 -0
- package/dist/scripts/DkJdzeV5.chunk.js +2 -0
- package/dist/scripts/DkJdzeV5.chunk.js.map +1 -0
- package/dist/scripts/DlVmB7me.chunk.js +4 -0
- package/dist/scripts/DlVmB7me.chunk.js.map +1 -0
- package/dist/scripts/Dm6PeyeG.chunk.js +2 -0
- package/dist/scripts/Dm6PeyeG.chunk.js.map +1 -0
- package/dist/scripts/DqMufS1U.chunk.js +2 -0
- package/dist/scripts/DqMufS1U.chunk.js.map +1 -0
- package/dist/scripts/DtMtah8Q.chunk.js +2 -0
- package/dist/scripts/DtMtah8Q.chunk.js.map +1 -0
- package/dist/scripts/DwxW4_xW.chunk.js +2 -0
- package/dist/scripts/DwxW4_xW.chunk.js.map +1 -0
- package/dist/scripts/Dx4VsESo.chunk.js +2 -0
- package/dist/scripts/Dx4VsESo.chunk.js.map +1 -0
- package/dist/scripts/DyhdHLt7.chunk.js +2 -0
- package/dist/scripts/DyhdHLt7.chunk.js.map +1 -0
- package/dist/scripts/EpoqEdEt.chunk.js +2 -0
- package/dist/scripts/EpoqEdEt.chunk.js.map +1 -0
- package/dist/scripts/Etwv4iY4.chunk.js +2 -0
- package/dist/scripts/Etwv4iY4.chunk.js.map +1 -0
- package/dist/scripts/GlEgn_rx.chunk.js +2 -0
- package/dist/scripts/GlEgn_rx.chunk.js.map +1 -0
- package/dist/scripts/H-GxGp0N.chunk.js +2 -0
- package/dist/scripts/H-GxGp0N.chunk.js.map +1 -0
- package/dist/scripts/HFbpCC17.chunk.js +2 -0
- package/dist/scripts/HFbpCC17.chunk.js.map +1 -0
- package/dist/scripts/HVSLS_Hw.chunk.js +2 -0
- package/dist/scripts/HVSLS_Hw.chunk.js.map +1 -0
- package/dist/scripts/Hdw9KpzY.chunk.js +10 -0
- package/dist/scripts/Hdw9KpzY.chunk.js.map +1 -0
- package/dist/scripts/L-FEMlca.chunk.js +2 -0
- package/dist/scripts/L-FEMlca.chunk.js.map +1 -0
- package/dist/scripts/OUlVmzyS.chunk.js +2 -0
- package/dist/scripts/OUlVmzyS.chunk.js.map +1 -0
- package/dist/scripts/SdlfGvLH.chunk.js +2 -0
- package/dist/scripts/SdlfGvLH.chunk.js.map +1 -0
- package/dist/scripts/Us8IAQKV.chunk.js +2 -0
- package/dist/scripts/Us8IAQKV.chunk.js.map +1 -0
- package/dist/scripts/ZPrCrk06.chunk.js +2 -0
- package/dist/scripts/ZPrCrk06.chunk.js.map +1 -0
- package/dist/scripts/app-CQEXKRTo.js +228 -0
- package/dist/scripts/app-CQEXKRTo.js.map +1 -0
- package/dist/scripts/bDb9_r6g.chunk.js +8 -0
- package/dist/scripts/bDb9_r6g.chunk.js.map +1 -0
- package/dist/scripts/bfga3fp9.chunk.js +6 -0
- package/dist/scripts/bfga3fp9.chunk.js.map +1 -0
- package/dist/scripts/ckwYvamH.chunk.js +2 -0
- package/dist/scripts/ckwYvamH.chunk.js.map +1 -0
- package/dist/scripts/gVHcxSzg.chunk.js +2 -0
- package/dist/scripts/gVHcxSzg.chunk.js.map +1 -0
- package/dist/scripts/j7UObMj5.chunk.js +3 -0
- package/dist/scripts/j7UObMj5.chunk.js.map +1 -0
- package/dist/scripts/jNUTSO6y.chunk.js +2 -0
- package/dist/scripts/jNUTSO6y.chunk.js.map +1 -0
- package/dist/scripts/mLe4zPMQ.chunk.js +2 -0
- package/dist/scripts/mLe4zPMQ.chunk.js.map +1 -0
- package/dist/scripts/oXJu4dT2.chunk.js +2 -0
- package/dist/scripts/oXJu4dT2.chunk.js.map +1 -0
- package/dist/scripts/pW31gVxo.chunk.js +2 -0
- package/dist/scripts/pW31gVxo.chunk.js.map +1 -0
- package/dist/scripts/pmJce9de.chunk.js +2 -0
- package/dist/scripts/pmJce9de.chunk.js.map +1 -0
- package/dist/scripts/rO0zPagv.chunk.js +2 -0
- package/dist/scripts/rO0zPagv.chunk.js.map +1 -0
- package/dist/scripts/rf9OuobP.chunk.js +2 -0
- package/dist/scripts/rf9OuobP.chunk.js.map +1 -0
- package/dist/scripts/sBa2VMAv.chunk.js +2 -0
- package/dist/scripts/sBa2VMAv.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/vDUMsOFT.chunk.js +2 -0
- package/dist/scripts/vDUMsOFT.chunk.js.map +1 -0
- package/dist/scripts/z0Is6h8v.chunk.js +2 -0
- package/dist/scripts/z0Is6h8v.chunk.js.map +1 -0
- package/dist/scripts/zVke3nt7.chunk.js +3 -0
- package/dist/scripts/zVke3nt7.chunk.js.map +1 -0
- package/package.json +5 -3
- package/typings/utils/env.d.ts +3 -0
- 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-c33663a53e.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/2999-reports-f190450b10.chunk.css +0 -60
- 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/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-b7f437ef87-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-72e77f375e-reports.chunk.js +0 -1
- package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +0 -1
- package/dist/scripts/2217-15fa35197a-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-444b5bdaf0-reports.chunk.js +0 -1
- package/dist/scripts/2999-f5ee243b25-reports.chunk.js +0 -2
- package/dist/scripts/2999-f5ee243b25-reports.chunk.js.LICENSE.txt +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-ff0ec9348d-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-42edca6bba-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-e8b19128e5-reports.chunk.js +0 -1
- package/dist/scripts/6545-eadce8e749-reports.chunk.js +0 -1
- package/dist/scripts/6811-40ded4c089-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-bc33e51d7b-reports.chunk.js +0 -2
- package/dist/scripts/7747-bc33e51d7b-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-c37cc22b4c-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-a422eff0c4-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-1b202f9d49-reports.chunk.js +0 -1
- package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
- package/dist/scripts/9949-63e32c6733-reports.chunk.js +0 -1
- package/dist/scripts/bundle-8754f0e6b8.min.js +0 -2
- package/dist/scripts/bundle-8754f0e6b8.min.js.LICENSE.txt +0 -108
- package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bfbk7XQF.chunk.js","sources":["../../../../libs/shared/src/images/svg/objects/FileImgSvg.tsx","../../../../libs/shared/src/images/svg/objects/FolderSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function FileImgSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M5 6v12h14V6zm0-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1m2.4 10.3a.5.5 0 0 1-.8-.6l3-4a.5.5 0 0 1 .754-.054l.579.58 1.765-2.513a.5.5 0 0 1 .83.015l3.891 6a.5.5 0 0 1-.838.544l-3.49-5.379-1.682 2.394a.5.5 0 0 1-.763.067l-.592-.593zm.6-4.8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FolderSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M4.007 5.007A1.73 1.73 0 0 1 5.23 4.5h3.077a1.73 1.73 0 0 1 1.384.692l1.327 1.77h7.75a1.73 1.73 0 0 1 1.731 1.73v8.616a1.73 1.73 0 0 1-1.73 1.73H5.23a1.73 1.73 0 0 1-1.73-1.73V6.23c0-.46.182-.9.507-1.224M5.23 5.5a.73.73 0 0 0-.731.73V9.5h15v-.808a.73.73 0 0 0-.73-.73h-8a.5.5 0 0 1-.4-.2l-1.478-1.97a.73.73 0 0 0-.584-.292zm14.269 5h-15v6.808a.73.73 0 0 0 .73.73h13.54a.73.73 0 0 0 .73-.73z'\n />\n </svg>\n );\n}\n"],"names":["FileImgSvg","props","jsx","FolderSvg"],"mappings":"sCAEO,SAASA,EAAWC,EAAsC,CAC/D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iVACF,KAAK,cAAA,CAAA,EAET,CAEJ,CCTO,SAASC,EAAUF,EAAsC,CAC9D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wYAAA,CAAA,EAEN,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{s as n,v as u}from"./app-CQEXKRTo.js";import{g as l}from"./sFV5nxD4.chunk.js";const y={topVideos(e,r,o,i,s){return{url:n.urlBuilder("{gateway}/v1/analytics/videos/top",{"query.video":"thumbnail,series","query.interactive":"_parentVideo[_rating],_parentClip,_thumbnail","query.clip":"_parentVideo[_rating],_thumbnail",limit:r,...e}),key:l(`top:videos:${r??0}`,e),normalize:!1,formatData:t=>{const a=u.sortBy(t.data,"count");return a.reverse(),{...t,data:a}},success:o,error:i,always:s}}};export{y as V};
|
|
2
|
+
//# sourceMappingURL=BgBDu2hA.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BgBDu2hA.chunk.js","sources":["../../src/shared/flight-requests/VideoViewRequests.ts"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopVideosResponse } from 'shared/interfaces';\n\nexport const VideoViewRequests = {\n topVideos(\n filter: AnalyticsRequestFilter,\n limit?: number,\n success?: (data: TopVideosResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/videos/top', {\n 'query.video': 'thumbnail,series',\n 'query.interactive': '_parentVideo[_rating],_parentClip,_thumbnail',\n 'query.clip': '_parentVideo[_rating],_thumbnail',\n limit,\n ...filter\n }),\n key: getAnalyticsRequestKey(`top:videos:${limit ?? 0}`, filter),\n normalize: false,\n formatData: (data: TopVideosResponse) => {\n const sorted = ArrayHelper.sortBy(data.data, 'count');\n \n sorted.reverse();\n \n return {\n ...data,\n data: sorted\n };\n },\n success,\n error,\n always\n };\n }\n};"],"names":["VideoViewRequests","filter","limit","success","error","always","UrlHelper","getAnalyticsRequestKey","data","sorted","ArrayHelper"],"mappings":"qFAUO,MAAMA,EAAoB,CAC/B,UACEC,EACAC,EACAC,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WAAW,oCAAqC,CAC7D,cAAe,mBACf,oBAAqB,+CACrB,aAAc,mCACd,MAAAJ,EACA,GAAGD,CAAA,CACJ,EACD,IAAKM,EAAuB,cAAcL,GAAS,CAAC,GAAID,CAAM,EAC9D,UAAW,GACX,WAAaO,GAA4B,CACvC,MAAMC,EAASC,EAAY,OAAOF,EAAK,KAAM,OAAO,EAEpD,OAAAC,EAAO,QAAA,EAEA,CACL,GAAGD,EACH,KAAMC,CAAA,CAEV,EACA,QAAAN,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoLC4I50.chunk.js","sources":["../../../../libs/shared/src/components/emoji-text/EmojiText.tsx"],"sourcesContent":["import React from 'react';\n\nimport styles from './emoji-text.module.scss';\n\ninterface EmojiTextProps {\n emoji: string;\n}\n\nexport function EmojiText(props: React.PropsWithChildren<EmojiTextProps>): JSX.Element {\n return (\n <>\n <span className={styles.emoji}>{props.emoji}</span>\n {props.children}\n </>\n );\n}"],"names":["EmojiText","props","jsxs","Fragment","jsx","styles"],"mappings":"2EAQO,SAASA,EAAUC,EAA6D,CACrF,OACEC,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAC,MAAC,OAAA,CAAK,UAAWC,EAAO,MAAQ,WAAM,MAAM,EAC3CJ,EAAM,QAAA,EACT,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as i,j as n,A as s,g as a,L as r}from"./app-CQEXKRTo.js";import{S as p}from"./B-0CRp8U.chunk.js";const c="reportsVideos.schoolVideosNav",o=r.encloseNamespace(c);function l(e){return[{label:o("overview"),appLink:{application:a.VIDEOS,action:s.Videos.HOME,params:e}},{label:o("views"),appLink:{application:a.VIDEOS,action:s.Videos.TOP_VIDEOS,params:e}}]}function v(){const e=i(),t=l(e);return n.jsx(p,{items:t})}export{v as S};
|
|
2
|
+
//# sourceMappingURL=BsXmQt2a.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BsXmQt2a.chunk.js","sources":["../../src/apps/videos/components/school-videos-nav/SchoolVideosNav.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.schoolVideosNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(params: FilterQueryParams): SubNavItem[] {\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.HOME, params }\n },\n {\n label: getPhrase('views'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS, params }\n }\n ];\n}\n\nexport function SchoolVideosNav(): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}"],"names":["namespace","getPhrase","LanguageService","getNavItems","params","AppChannels","Actions","SchoolVideosNav","filterQueryParams","useGetAppLinkFilterParams","navItems","jsx","SubNav"],"mappings":"0GAWA,MAAMA,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAYC,EAAyC,CAC5D,MAAO,CACL,CACE,MAAOH,EAAU,UAAU,EAC3B,QAAS,CAAE,YAAaI,EAAY,OAAQ,OAAQC,EAAQ,OAAO,KAAM,OAAAF,CAAA,CAAO,EAElF,CACE,MAAOH,EAAU,OAAO,EACxB,QAAS,CAAE,YAAaI,EAAY,OAAQ,OAAQC,EAAQ,OAAO,WAAY,OAAAF,CAAA,CAAO,CACxF,CAEJ,CAEO,SAASG,GAA+B,CAC7C,MAAMC,EAAoBC,EAAA,EAEpBC,EAAWP,EAAYK,CAAiB,EAE9C,OACEG,EAAAA,IAACC,EAAA,CAAO,MAAOF,CAAA,CAAU,CAE7B"}
|
|
@@ -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-CQEXKRTo.js";import{c as h,H as S,b as V,m as v,a as R}from"./DGmD-zcu.chunk.js";import{V as p}from"./B-M_POW7.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=ByUxUi78.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ByUxUi78.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,2 @@
|
|
|
1
|
+
import{j as r}from"./app-CQEXKRTo.js";function l(t){return r.jsx("svg",{...t,children:r.jsx("path",{d:"M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074",fill:"currentColor"})})}export{l as T};
|
|
2
|
+
//# sourceMappingURL=BzFtDyVZ.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BzFtDyVZ.chunk.js","sources":["../../../../libs/shared/src/images/svg/status/TickSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function TickSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["TickSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAQC,EAAsC,CAC5D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,8MACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as h,v as x,j as a,O as d,bF as T,L as g,bR as w,A as M,g as j,u as f,bO as R,e as C,a as H}from"./app-CQEXKRTo.js";import{u as A}from"./CZHffw7D.chunk.js";import{u as E}from"./DSJfyygS.chunk.js";import{u as y}from"./HFbpCC17.chunk.js";import{P as $}from"./DyhdHLt7.chunk.js";import{u as L}from"./BArX7fyb.chunk.js";import{u as N,a as F}from"./CjQHXyx0.chunk.js";import{u as O}from"./CvkQEqoz.chunk.js";import{u as P,I as G}from"./pmJce9de.chunk.js";import{M as q}from"./ZPrCrk06.chunk.js";import{u as D,a as U}from"./oXJu4dT2.chunk.js";import{u as B}from"./BP4vyxCh.chunk.js";import{T as S}from"./bDb9_r6g.chunk.js";import{u as V,a as _,b as k,h as W,s as n,R as z,c as J}from"./BBKDp0Ea.chunk.js";import"./sFV5nxD4.chunk.js";import"./H-GxGp0N.chunk.js";import"./OUlVmzyS.chunk.js";import"./sBa2VMAv.chunk.js";import"./B-0CRp8U.chunk.js";import"./rO0zPagv.chunk.js";import"./BGYUqEPH.chunk.js";import"./Bfbk7XQF.chunk.js";import"./DdCE2h3h.chunk.js";import"./vDUMsOFT.chunk.js";import"./5O9SdVRZ.chunk.js";import"./DIqHgqYU.chunk.js";import"./BoLC4I50.chunk.js";import"./CX5q-0jT.chunk.js";import"./DtMtah8Q.chunk.js";import"./Cq8XHkfC.chunk.js";import"./BI4Pc5Qp.chunk.js";const K="interactives.studentResultsTable",p=g.encloseNamespace(K),Q={table:`${n.fixedTable} bg-white rounded-start`,header:`${n.header} border-bottom`,headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:n.row},X={header:`${n.header} fw-bold`,headerRow:"h-100",headerCell:`${n.interactionHeaderCellOuter} bg-white border-bottom`,row:`${n.row} ${n.resultsRow}`,cell:n.resultsCellOuter};function b(e,t,r){w.trigger({application:j.INTERACTIVES,action:M.Interactives.STUDENT_RESULTS,args:[e,t],params:r?{interactionId:r}:{}})}function Y(e){const[t,r]=h.useState(),u=h.useRef(null),i=V(e.results),m=_(e.interactive,e.interactiveMetadata,e.results,I,e.refreshTable),o=k(e.interactive,e.results,e.refreshTable,x.first(t));function l({original:s}){b(s.user.id,e.interactiveMetadata.id)}function c(s){b(s.row.original.user.id,e.interactiveMetadata.id,s.column.id)}function I(s){W(u.current,s)}function v(s){J(u.current,s)}return o.length?a.jsxs("div",{ref:u,className:`d-flex ${o.length?` ${n.hasResults}`:""}`,children:[a.jsx(S,{columns:i,data:o,theme:Q,onSelectRow:l,onRowMouseOver:s=>v(s.index),onRowMouseLeave:()=>v(),enableSort:!0,manualSort:!0,onSort:r}),a.jsx(S,{columns:m,data:o,theme:X,enableSlider:!0,scrollIncrement:z*8,onSelectCell:c})]}):a.jsxs(d,{className:"bg-white rounded-bottom py-5",children:[a.jsx(d.Image,{src:T.EmptyStates.Interactives.NoResponses}),a.jsx(d.Heading,{children:p("emptyStateHeading")}),a.jsx(d.Info,{children:p("emptyStateDescription")})]})}const Z="reportsInteractives.interactiveStudentResultsList",ee=g.encloseNamespace(Z);function $e(e){var o,l,c;const t=f(R.interactiveMetadata(e.interactiveMetadataId)),r=f((o=t.data)!=null&&o.interactiveId?R.interactive(t.data.interactiveId):null),u=C(),i=A(e.interactiveMetadataId,u);H({title:ee("pageTitle",{interactive:(l=t.data)==null?void 0:l.name})}),O((c=t.data)==null?void 0:c.name),N(F(t.data)),B(e.interactiveMetadataId),D(i),P(e.interactiveMetadataId),L(t),y([t,i]),E(t);const m=U(i);return a.jsx(a.Fragment,{children:a.jsxs("div",{children:[a.jsx(G,{interactiveMetadataId:e.interactiveMetadataId}),!!r.data&&!!i.data&&a.jsx(q,{interactive:r.data,results:i.data,interactiveMetadataId:e.interactiveMetadataId}),t.data&&r.data&&i.data?a.jsx(Y,{interactive:r.data,interactiveMetadata:t.data,results:i.data,refreshTable:m}):a.jsx($,{})]})})}export{$e as InteractiveStudentResultsListView};
|
|
2
|
+
//# sourceMappingURL=C1TqvuUF.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C1TqvuUF.chunk.js","sources":["../../src/apps/interactives/views/interactive-student-results-list/components/student-results-table/StudentResultsTable.tsx","../../src/apps/interactives/views/interactive-student-results-list/InteractiveStudentResultsListView.tsx"],"sourcesContent":["import React from 'react';\nimport { Cell, Row, SortingRule } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\n\nimport {\n highlightColumns,\n highlightRows,\n RESULTS_COL_WIDTH,\n useGetFixedColumns,\n useGetResultColumns,\n useGetResultsTableData\n} from './StudentResultsTableUtils';\n\nimport styles from './student-results-table.module.scss';\n\nconst namespace = 'interactives.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst fixedTableTheme: TableTheme = {\n table: `${styles.fixedTable} bg-white rounded-start`,\n header: `${styles.header} border-bottom`,\n headerRow: 'h-100',\n headerCell: 'd-flex align-items-center justify-content-start',\n row: styles.row\n};\n\nconst resultsTableTheme: TableTheme = {\n header: `${styles.header} fw-bold`,\n headerRow: 'h-100',\n headerCell: `${styles.interactionHeaderCellOuter} bg-white border-bottom`,\n row: `${styles.row} ${styles.resultsRow}`,\n cell: styles.resultsCellOuter\n};\n\nfunction viewStudentResults(\n studentId: string,\n interactiveMetadataId: string,\n interactionId?: string\n): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.STUDENT_RESULTS,\n args: [ studentId, interactiveMetadataId ],\n params: interactionId ? { interactionId } : {}\n });\n}\n\ninterface StudentResultsTableProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n selectedStudentId?: string;\n}\n\nexport function StudentResultsTable(props: StudentResultsTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<StudentResultsWithSummary>[]>();\n const ref = React.useRef<HTMLDivElement>(null);\n\n const fixedColumns = useGetFixedColumns(props.results);\n const resultColumns = useGetResultColumns(\n props.interactive,\n props.interactiveMetadata,\n props.results,\n onColumnHover,\n props.refreshTable\n );\n const data = useGetResultsTableData(props.interactive, props.results, props.refreshTable, ArrayHelper.first(sortBy));\n\n function onSelectStudent({ original }: Row<StudentResultsWithSummary>): void {\n viewStudentResults(original.user.id, props.interactiveMetadata.id);\n }\n\n function onSelectStudentResponse(cell: Cell<StudentResultsWithSummary>): void {\n viewStudentResults(cell.row.original.user.id, props.interactiveMetadata.id, cell.column.id);\n }\n\n function onColumnHover(index?: number): void {\n highlightColumns(ref.current, index);\n }\n\n function onRowHover(index?: number): void {\n highlightRows(ref.current, index);\n }\n\n if (!data.length)\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={ImageUrls.EmptyStates.Interactives.NoResponses} />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n\n return (\n <div ref={ref} className={`d-flex ${data.length ? ` ${styles.hasResults}` : ''}`}>\n <Table\n columns={fixedColumns}\n data={data}\n theme={fixedTableTheme}\n onSelectRow={onSelectStudent}\n onRowMouseOver={row => onRowHover(row.index)}\n onRowMouseLeave={() => onRowHover()}\n enableSort\n manualSort\n onSort={setSortBy}\n />\n <Table\n columns={resultColumns}\n data={data}\n theme={resultsTableTheme}\n enableSlider\n scrollIncrement={RESULTS_COL_WIDTH * 8}\n onSelectCell={onSelectStudentResponse}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { 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';\n\nimport { InteractiveNav } from 'apps/interactives/components/interactive-nav/InteractiveNav';\nimport { MarkingRequiredAlert } from 'apps/interactives/components/marking-required-alert/MarkingRequiredAlert';\nimport { useNoResultsPopup } from 'apps/interactives/hooks/UseNoResultsPopup';\nimport { useRefreshInteractiveResults } from 'apps/interactives/hooks/UseRefreshInteractiveResults';\nimport { useSetInteractiveResultsAudienceFilterCount } from 'apps/interactives/hooks/UseSetInteractiveResultsAudienceFilterCount';\nimport { useSetSuggestedInteractiveResultsAudience } from 'apps/interactives/hooks/UseSetSuggestedInteractiveResultsAudience';\n\nimport { StudentResultsTable } from './components/student-results-table/StudentResultsTable';\n\nconst namespace = 'reportsInteractives.interactiveStudentResultsList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveStudentResultsListViewProps {\n interactiveMetadataId: string;\n}\n\nexport function InteractiveStudentResultsListView(props: InteractiveStudentResultsListViewProps): JSX.Element {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useSetPageMetadata({ title: getPhrase('pageTitle', { interactive: interactiveMetadata.data?.name }) });\n useSetHeaderTitle(interactiveMetadata.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(interactiveMetadata.data));\n useSetSuggestedInteractiveResultsAudience(props.interactiveMetadataId);\n useSetInteractiveResultsAudienceFilterCount(results);\n useNoResultsPopup(props.interactiveMetadataId);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const refreshTable = useRefreshInteractiveResults(results);\n\n return (\n <>\n <div>\n <InteractiveNav interactiveMetadataId={props.interactiveMetadataId} />\n {!!interactive.data && !!results.data &&\n <MarkingRequiredAlert\n interactive={interactive.data}\n results={results.data}\n interactiveMetadataId={props.interactiveMetadataId}\n />\n }\n {(!!interactiveMetadata.data && !!interactive.data && !!results.data)\n ? <StudentResultsTable\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n results={results.data}\n refreshTable={refreshTable}\n />\n : <PartialTable />\n }\n </div>\n </>\n );\n}"],"names":["namespace","getPhrase","LanguageService","fixedTableTheme","styles","resultsTableTheme","viewStudentResults","studentId","interactiveMetadataId","interactionId","Core.AppLinkHelper","AppChannels","Actions","StudentResultsTable","props","sortBy","setSortBy","React","ref","fixedColumns","useGetFixedColumns","resultColumns","useGetResultColumns","onColumnHover","data","useGetResultsTableData","ArrayHelper","onSelectStudent","original","onSelectStudentResponse","cell","index","highlightColumns","onRowHover","highlightRows","jsxs","jsx","Table","row","RESULTS_COL_WIDTH","EmptyState","ImageUrls","InteractiveStudentResultsListView","interactiveMetadata","Flight.useBasicFetch","InteractiveRequests","interactive","_a","requestFilter","useGetRequestFilter","results","useFetchInteractiveResults","useSetPageMetadata","_b","useSetHeaderTitle","_c","useSetHeaderActions","useGetObjectHeaderActions","useSetSuggestedInteractiveResultsAudience","useSetInteractiveResultsAudienceFilterCount","useNoResultsPopup","useHandleVideoError","useHandleObjectError","useCannotConsumeError","refreshTable","useRefreshInteractiveResults","Fragment","InteractiveNav","MarkingRequiredAlert","PartialTable"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{e as V,u as h,a as v,L as f,j as o,k as j,m as T}from"./app-CQEXKRTo.js";import{u as b}from"./C_TaaD_7.chunk.js";import{u as x}from"./HFbpCC17.chunk.js";import{P as g}from"./DyhdHLt7.chunk.js";import{P as w}from"./Us8IAQKV.chunk.js";import{V as L}from"./B-M_POW7.chunk.js";import{u as P}from"./CvkQEqoz.chunk.js";import{S as F}from"./BsXmQt2a.chunk.js";import{V as q,a as I}from"./DC24UA5G.chunk.js";import"./sFV5nxD4.chunk.js";import"./B-0CRp8U.chunk.js";import"./rO0zPagv.chunk.js";import"./BGYUqEPH.chunk.js";import"./Bfbk7XQF.chunk.js";import"./bDb9_r6g.chunk.js";import"./BEjQ8YiC.chunk.js";import"./DZWKI51S.chunk.js";import"./sBa2VMAv.chunk.js";import"./Dm6PeyeG.chunk.js";import"./CBjj_ih-.chunk.js";import"./BZV5U3ST.chunk.js";import"./EpoqEdEt.chunk.js";import"./z0Is6h8v.chunk.js";import"./9-ob4xwW.chunk.js";import"./BzFtDyVZ.chunk.js";const R="reportsVideos.schoolTopVideosView",d=f.encloseNamespace(R),S=100;function te(){var a,m,p;const l=V(),t=h(L.topStreams(S,l)),s=b(((a=t.data)==null?void 0:a.map(e=>e.objectId))??[],T.videos);x(t),v({title:d("videos")}),P(d("videos"));const i=t.hasCompleted&&!s.isFetching,r=!!((m=s.itemsArr)!=null&&m.length),u=(p=t.data)==null?void 0:p.map(e=>{var c;const n=(c=s.items)==null?void 0:c[e==null?void 0:e.objectId];return n?{count:e.count,object:n,contentType:e.contentType}:null}).filter(e=>!!e);return o.jsxs("div",{className:"pb-3",children:[o.jsx(F,{}),!i&&o.jsx(g,{variant:"video-views",children:o.jsx(w,{variant:"video-views"})}),i&&r&&o.jsx(q,{videos:u,getVideoAppLink:j}),i&&!r&&o.jsx(I,{})]})}export{te as SchoolTopVideosView};
|
|
2
|
+
//# sourceMappingURL=C5lK-q9T.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C5lK-q9T.chunk.js","sources":["../../src/apps/videos/views/school-top-videos/SchoolTopVideosView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { PartialTableContent } from 'shared/components/partial-loading/PartialTableContent';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { TopVideo, TopVideoV2 } from 'shared/interfaces';\nimport { getSchoolVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\nimport { VideoViewsTableEmptyState } from 'apps/videos/components/video-views-table/video-views-table-empty-state/VideoViewsTableEmptyState';\nimport { VideoViewsTable } from 'apps/videos/components/video-views-table/VideoViewsTable';\n\nconst namespace = 'reportsVideos.schoolTopVideosView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 100;\n\nexport function SchoolTopVideosView(): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const topStreams = Flight.useBasicFetch<TopVideoV2[]>(VideoViewsV2Requests.topStreams(LIMIT, requestFilter));\n\n const videos = useBatchFetch<VideoTypes>(\n topStreams.data?.map(v => v.objectId) ?? [],\n VideoRequests.videos\n );\n\n useHandleObjectError(topStreams);\n\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n\n const hasLoaded = (\n topStreams.hasCompleted &&\n !videos.isFetching\n );\n\n const hasVideoViews = !!videos.itemsArr?.length;\n \n const mappedVideos = topStreams.data?.map<TopVideo>(topStream => {\n const video = videos.items?.[topStream?.objectId];\n\n if (!video)\n return null;\n\n return {\n count: topStream.count,\n object: video,\n contentType: topStream.contentType\n };\n }).filter(v => !!v);\n\n return (\n <div className='pb-3'>\n <SchoolVideosNav />\n {!hasLoaded &&\n <PartialTable variant='video-views'>\n <PartialTableContent variant='video-views' />\n </PartialTable>\n }\n {hasLoaded && hasVideoViews &&\n <VideoViewsTable videos={mappedVideos} getVideoAppLink={getSchoolVideoAppLink} />\n }\n {hasLoaded && !hasVideoViews && <VideoViewsTableEmptyState />}\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","LIMIT","SchoolTopVideosView","requestFilter","useGetRequestFilter","topStreams","Flight.useBasicFetch","VideoViewsV2Requests","videos","useBatchFetch","_a","v","VideoRequests","useHandleObjectError","useSetPageMetadata","useSetHeaderTitle","hasLoaded","hasVideoViews","_b","mappedVideos","_c","topStream","video","jsxs","jsx","SchoolVideosNav","PartialTable","PartialTableContent","VideoViewsTable","getSchoolVideoAppLink","VideoViewsTableEmptyState"],"mappings":"u1BAuBA,MAAMA,EAAY,oCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAEtDG,EAAQ,IAEP,SAASC,IAAmC,WACjD,MAAMC,EAAgBC,EAAA,EAEhBC,EAAaC,EAAmCC,EAAqB,WAAWN,EAAOE,CAAa,CAAC,EAErGK,EAASC,IACbC,EAAAL,EAAW,OAAX,YAAAK,EAAiB,OAASC,EAAE,YAAa,CAAA,EACzCC,EAAc,MAAA,EAGhBC,EAAqBR,CAAU,EAE/BS,EAAmB,CAAE,MAAOf,EAAU,QAAQ,EAAG,EACjDgB,EAAkBhB,EAAU,QAAQ,CAAC,EAErC,MAAMiB,EACJX,EAAW,cACX,CAACG,EAAO,WAGJS,EAAgB,CAAC,GAACC,EAAAV,EAAO,WAAP,MAAAU,EAAiB,QAEnCC,GAAeC,EAAAf,EAAW,OAAX,YAAAe,EAAiB,IAAcC,GAAa,OAC/D,MAAMC,GAAQZ,EAAAF,EAAO,QAAP,YAAAE,EAAeW,GAAA,YAAAA,EAAW,UAExC,OAAKC,EAGE,CACL,MAAOD,EAAU,MACjB,OAAQC,EACR,YAAaD,EAAU,WAAA,EALhB,IAOX,GAAG,OAAOV,GAAK,CAAC,CAACA,GAEjB,OACEY,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAgB,EAChB,CAACT,GACAQ,EAAAA,IAACE,EAAA,CAAa,QAAQ,cACpB,SAAAF,EAAAA,IAACG,EAAA,CAAoB,QAAQ,aAAA,CAAc,CAAA,CAC7C,EAEDX,GAAaC,GACZO,EAAAA,IAACI,GAAgB,OAAQT,EAAc,gBAAiBU,EAAuB,EAEhFb,GAAa,CAACC,GAAiBO,EAAAA,IAACM,EAAA,CAAA,CAA0B,CAAA,EAC7D,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,O as m,bF as Y,L as x,e as j,u as T,n as C,T as L,S as w,bD as i,v as D,a as M}from"./app-CQEXKRTo.js";import{u as b,g as v}from"./CjQHXyx0.chunk.js";import{u as B}from"./CvkQEqoz.chunk.js";import{g as G,V as _,L as E}from"./pW31gVxo.chunk.js";import{L as N}from"./DUPqT4A_.chunk.js";import{m as S,a as F}from"./DGmD-zcu.chunk.js";import"./H-GxGp0N.chunk.js";import"./OUlVmzyS.chunk.js";import"./sBa2VMAv.chunk.js";import"./sFV5nxD4.chunk.js";const H="_image_zpxv9_1",O={image:H},A="reportsShared.schoolLoginsByGroupCardEmptyState",p=x.encloseNamespace(A);function R(){return e.jsxs(m,{className:"flex-grow-1 justify-content-center",children:[e.jsx(m.Image,{src:Y.EmptyStates.Shared.School,className:O.image}),e.jsx(m.Heading,{className:"h6",children:p("heading")}),e.jsx(m.Info,{className:"w-100",children:p("description")})]})}const $="logins.schoolLoginsByGroupCard";function U(){var a;const n=j(),s=T(N.logins(n)),r=C(),t=c=>c==="Unknown"||c===null?"Staff":c,o=G((a=s.data)==null?void 0:a.yearGroupCount,t,c=>S(t(c))),d=o==null?void 0:o.reduce((c,l)=>c+l.y,0);return e.jsx("div",{className:"d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3",children:o?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"h6 mb-1",children:e.jsx(L,{namespace:$,phrase:r?"totalLoginsTertiary":"totalLogins",options:{logins:d}})}),o.length?e.jsx(w,{className:"position-relative",children:e.jsx("div",{className:"position-absolute w-100",children:e.jsx(_,{data:o})})}):e.jsx(R,{})]}):e.jsx("div",{className:"partial-loading-background w-50",children:" "})})}const g={MONTH:35,YEAR:365},u={day:"YYYY-MM-DD",month:"YYYY-MM",year:"YYYY"},h={day:"D MMM",month:"MMM",year:"YYYY"};function k(n){const s=i.diffBetween(n.end,n.start,"day");return s>g.YEAR?"year":s>g.MONTH?"month":"day"}function I(n,s){const r=[];let t=i.format(n.start,u[s]);for(;!i.isAfter(t,n.end,s);)r.push(t),t=i.format(i.add(t,1,s),u[s]);return r}function V(n,s){if(!n)return null;const r=k(s),t=I(s,r),o={};n.forEach(a=>{if(!a.userType)return;const c="groupedDateWatched"in a&&a.groupedDateWatched||"groupedLoggedOn"in a&&a.groupedLoggedOn,l=i.format(i.convertUTCToLocal(c),u[r]);o[a.userType]=o[a.userType]??{},o[a.userType][l]=o[a.userType][l]??0,o[a.userType][l]+=a.count});const d=Object.keys(o);return d.length?{categories:t.map(a=>i.format(a,h[r])),data:D.sortBy(d.map(a=>({name:F(a),type:"line",data:t.map(c=>o[a][c]??0),color:S(a)})),"name")}:{categories:t.map(a=>i.format(a,h[r])),data:[]}}const P="logins.schoolLoginsByMonthCard";function W(){var t;const n=j(),s=T(N.logins(n)),r=V((t=s.data)==null?void 0:t.data,n);return e.jsx("div",{className:"d-flex flex-column h-100 bg-white rounded p-3 position-relative",children:r?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"position-absolute h6 mb-1",children:e.jsx(L,{namespace:P,phrase:"loginActivity"})}),e.jsx(E,{categories:r.categories,data:r.data})]}):e.jsx("div",{className:"partial-loading-background w-25",children:" "})})}const q="_column2_1cfp0_1",z="_column1_1cfp0_1",f={column2:q,column1:z},J="logins.schoolLoginOverview",y=x.encloseNamespace(J);function re(){return M({title:y("title")}),B(y("title")),b(v()),e.jsx("div",{children:e.jsxs("div",{className:"d-flex gap-3",children:[e.jsx("div",{className:`${f.column1}`,children:e.jsx(U,{})}),e.jsx("div",{className:`${f.column2}`,children:e.jsx(W,{})})]})})}export{re as SchoolLoginOverview};
|
|
2
|
+
//# sourceMappingURL=C7IXStcD.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C7IXStcD.chunk.js","sources":["../../src/apps/logins/views/cards/school-logins-by-group-card/empty-state/SchoolLoginsByGroupCardEmptyState.tsx","../../src/apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView.tsx","../../src/shared/utils/LineChartByMonthUtils.ts","../../src/apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView.tsx","../../src/apps/logins/views/school-login-overview/SchoolLoginOverview.tsx"],"sourcesContent":["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\nconst namespace = 'reportsShared.schoolLoginsByGroupCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './school-logins-by-group-card-card-empty-state.module.scss';\n\nexport function SchoolLoginsByGroupCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.School}\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';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nimport { SchoolLoginsByGroupCardEmptyState } from './empty-state/SchoolLoginsByGroupCardEmptyState';\n\nconst namespace = 'logins.schoolLoginsByGroupCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByGroupCardView() {\n const requestFilter = useGetRequestFilter();\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n \n const isTertiary = useIsTertiary();\n\n const mapNameToGroup = (name: string) => (name === 'Unknown' || name === null) ? 'Staff' : name;\n const totalLoginsByGroupData = getCountByGroup(\n logins.data?.yearGroupCount,\n mapNameToGroup,\n name => mapUserTypeToChartColour(mapNameToGroup(name))\n );\n const totalLoginsCount = totalLoginsByGroupData?.reduce((acc, group) => (acc + group.y), 0);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {totalLoginsByGroupData ?\n <>\n <h2 className='h6 mb-1'>\n <Text\n namespace={namespace}\n phrase={isTertiary ? 'totalLoginsTertiary' : 'totalLogins'}\n options={{ logins: totalLoginsCount }}\n />\n </h2>\n\n {totalLoginsByGroupData.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <VerticalBarChart data={totalLoginsByGroupData} />\n </div>\n </Scrollbars>\n : <SchoolLoginsByGroupCardEmptyState />\n }\n </>\n : <div className='partial-loading-background w-50'> </div>\n }\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEvent } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { VideoViewEvent } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\n\nconst GroupByThresholds = {\n MONTH: 35,\n YEAR: 365\n};\n\nconst DateFormats = {\n day: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n year: 'YYYY'\n};\n\nconst DisplayFormats = {\n day: 'D MMM',\n month: 'MMM',\n year: 'YYYY'\n};\n\ntype GroupedViewData = {\n [key in UserGroup]?: {\n [date: string]: number;\n }\n}\n\ntype GroupBy = 'day' | 'month' | 'year';\n\ninterface ChartData {\n categories: string[];\n data: Highcharts.SeriesLineOptions[];\n}\n\nfunction getGroupBy(requestFilter: AnalyticsRequestFilter): GroupBy {\n const range = DateHelper.diffBetween(requestFilter.end, requestFilter.start, 'day');\n\n if (range > GroupByThresholds.YEAR)\n return 'year';\n\n if (range > GroupByThresholds.MONTH)\n return 'month';\n\n return 'day';\n}\n\nfunction getFullDateRange(requestFilter: AnalyticsRequestFilter, groupBy: GroupBy): string[] {\n const range: string[] = [];\n\n let currentDate = DateHelper.format(requestFilter.start, DateFormats[groupBy]);\n\n while (!DateHelper.isAfter(currentDate, requestFilter.end, groupBy)) {\n range.push(currentDate);\n currentDate = DateHelper.format(DateHelper.add(currentDate, 1, groupBy), DateFormats[groupBy]);\n }\n\n return range;\n}\n\nexport function getChartData(\n events: VideoViewEvent[] | LoginEvent[],\n requestFilter: AnalyticsRequestFilter\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped: GroupedViewData = {};\n\n events.forEach(ev => {\n if (!ev.userType)\n return;\n\n const eventDate = 'groupedDateWatched' in ev && ev.groupedDateWatched || 'groupedLoggedOn' in ev && ev.groupedLoggedOn;\n const eventDateFormatted = DateHelper.format(DateHelper.convertUTCToLocal(eventDate), DateFormats[groupBy]);\n\n grouped[ev.userType] = grouped[ev.userType] ?? {};\n grouped[ev.userType][eventDateFormatted] = grouped[ev.userType][eventDateFormatted] ?? 0;\n grouped[ev.userType][eventDateFormatted] += ev.count;\n });\n\n const roles = Object.keys(grouped) as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n ArrayHelper.sortBy(roles.map(r => ({\n name: mapUserTypeToChartLabel(r),\n type: 'line',\n data: fullDateRange.map(d => grouped[r][d] ?? 0),\n color: mapUserTypeToChartColour(r)\n })), 'name')\n };\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getChartData } from 'shared/utils/LineChartByMonthUtils';\n\nconst namespace = 'logins.schoolLoginsByMonthCard';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function SchoolLoginsByMonthCardView() {\n const requestFilter = useGetRequestFilter();\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(LoginRequests.logins(requestFilter));\n\n const chartData = getChartData(logins.data?.data, requestFilter);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3 position-relative'>\n {chartData ?\n <>\n <h2 className='position-absolute h6 mb-1'><Text namespace={namespace} phrase='loginActivity' /></h2>\n\n <LineChart categories={chartData.categories} data={chartData.data} />\n </>\n : <div className='partial-loading-background w-25'> </div>}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getLoginHeaderActions } from 'shared/utils/HeaderActionUtils';\n\nimport { SchoolLoginsByGroupCardView } from 'apps/logins/views/cards/school-logins-by-group-card/SchoolLoginsByGroupCardView';\nimport { SchoolLoginsByMonthCardView } from 'apps/logins/views/cards/school-logins-by-month-card/SchoolLoginsByMonthCardView';\n\nimport styles from './school-login-overview.module.scss';\n\nconst namespace = 'logins.schoolLoginOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolLoginOverview() {\n useSetPageMetadata({ title: getPhrase('title') });\n useSetHeaderTitle(getPhrase('title'));\n useSetHeaderActions(getLoginHeaderActions());\n\n return (\n <div>\n <div className='d-flex gap-3'>\n <div className={`${styles.column1}`}>\n <SchoolLoginsByGroupCardView />\n </div>\n <div className={`${styles.column2}`}>\n <SchoolLoginsByMonthCardView />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","SchoolLoginsByGroupCardEmptyState","jsxs","EmptyState","jsx","ImageUrls","styles","SchoolLoginsByGroupCardView","requestFilter","useGetRequestFilter","logins","Flight.useBasicFetch","LoginRequests","isTertiary","useIsTertiary","mapNameToGroup","name","totalLoginsByGroupData","getCountByGroup","_a","mapUserTypeToChartColour","totalLoginsCount","acc","group","Fragment","Text","Scrollbars","VerticalBarChart","GroupByThresholds","DateFormats","DisplayFormats","getGroupBy","range","DateHelper","getFullDateRange","groupBy","currentDate","getChartData","events","fullDateRange","grouped","ev","eventDate","eventDateFormatted","roles","d","ArrayHelper","r","mapUserTypeToChartLabel","SchoolLoginsByMonthCardView","chartData","LineChart","SchoolLoginOverview","useSetPageMetadata","useSetHeaderTitle","useSetHeaderActions","getLoginHeaderActions"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as o,j as r,A as t,g as n,L as c}from"./app-CQEXKRTo.js";import{S as l}from"./B-0CRp8U.chunk.js";const C={clip(e,a,s,p){return{url:`{gateway}/v1/objects/${e}`,key:`clip:${e}`,success:a,error:s,always:p}}},m="reportsClips.clipNav",i=c.encloseNamespace(m);function u(e,a){const s=[e];return[{label:i("overview"),appLink:{application:n.CLIPS,action:t.Clips.OVERVIEW,args:s,params:a}},{label:i("engagement"),appLink:{application:n.CLIPS,action:t.Clips.ENGAGEMENT,args:s,params:a}}]}function L(e){const a=o(),s=u(e.id,a);return r.jsx(l,{items:s})}export{C,L as a};
|
|
2
|
+
//# sourceMappingURL=CANX99lP.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CANX99lP.chunk.js","sources":["../../src/shared/flight-requests/ClipRequests.ts","../../src/apps/clips/components/clip-nav/ClipNav.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { Clip } from 'libs/shared/interfaces';\n\nexport const ClipRequests = {\n clip(id: string, success?: (data: Clip) => void, error?: (data: any) => void, always?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `clip:${id}`,\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsClips.clipNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(id: string, params: FilterQueryParams): SubNavItem[] {\n const args = [id];\n\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.CLIPS, action: Actions.Clips.OVERVIEW, args, params }\n },\n {\n label: getPhrase('engagement'),\n appLink: { application: AppChannels.CLIPS, action: Actions.Clips.ENGAGEMENT, args, params }\n }\n ];\n}\n\ninterface ClipNavProps {\n id: string;\n}\n\nexport function ClipNav(props: ClipNavProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(props.id, filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}"],"names":["ClipRequests","id","success","error","always","namespace","getPhrase","LanguageService","getNavItems","params","args","AppChannels","Actions","ClipNav","props","filterQueryParams","useGetAppLinkFilterParams","navItems","jsx","SubNav"],"mappings":"0GAIO,MAAMA,EAAe,CAC1B,KAAKC,EAAYC,EAAgCC,EAA6BC,EAAqC,CACjH,MAAO,CACL,IAAK,wBAAwBH,CAAE,GAC/B,IAAK,QAAQA,CAAE,GACf,QAAAC,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF,ECHMC,EAAY,uBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAYP,EAAYQ,EAAyC,CACxE,MAAMC,EAAO,CAACT,CAAE,EAEhB,MAAO,CACL,CACE,MAAOK,EAAU,UAAU,EAC3B,QAAS,CAAE,YAAaK,EAAY,MAAO,OAAQC,EAAQ,MAAM,SAAU,KAAAF,EAAM,OAAAD,CAAA,CAAO,EAE1F,CACE,MAAOH,EAAU,YAAY,EAC7B,QAAS,CAAE,YAAaK,EAAY,MAAO,OAAQC,EAAQ,MAAM,WAAY,KAAAF,EAAM,OAAAD,CAAA,CAAO,CAC5F,CAEJ,CAMO,SAASI,EAAQC,EAAkC,CACxD,MAAMC,EAAoBC,EAAA,EAEpBC,EAAWT,EAAYM,EAAM,GAAIC,CAAiB,EAExD,OACEG,EAAAA,IAACC,EAAA,CAAO,MAAOF,CAAA,CAAU,CAE7B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as v}from"./app-CQEXKRTo.js";var S=new Map,h=new WeakMap,A=0,x=void 0;function M(e){return e?(h.has(e)||(A+=1,h.set(e,A.toString())),h.get(e)):"0"}function O(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?M(e.root):e[t]}`).toString()}function T(e){const t=O(e);let n=S.get(t);if(!n){const u=new Map;let c;const i=new IntersectionObserver(s=>{s.forEach(r=>{var o;const g=r.isIntersecting&&c.some(d=>r.intersectionRatio>=d);e.trackVisibility&&typeof r.isVisible>"u"&&(r.isVisible=g),(o=u.get(r.target))==null||o.forEach(d=>{d(g,r)})})},e);c=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:u},S.set(t,n)}return n}function _(e,t,n={},u=x){if(typeof window.IntersectionObserver>"u"&&u!==void 0){const o=e.getBoundingClientRect();return t(u,{isIntersecting:u,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),()=>{}}const{id:c,observer:i,elements:s}=T(n),r=s.get(e)||[];return s.has(e)||s.set(e,r),r.push(t),i.observe(e),function(){r.splice(r.indexOf(t),1),r.length===0&&(s.delete(e),i.unobserve(e)),s.size===0&&(i.disconnect(),S.delete(c))}}function C({threshold:e,delay:t,trackVisibility:n,rootMargin:u,root:c,triggerOnce:i,skip:s,initialInView:r,fallbackInView:o,onChange:g}={}){var d;const[b,V]=v.useState(null),l=v.useRef(),[R,p]=v.useState({inView:!!r,entry:void 0});l.current=g,v.useEffect(()=>{if(s||!b)return;let a;return a=_(b,(E,I)=>{p({inView:E,entry:I}),l.current&&l.current(E,I),I.isIntersecting&&i&&a&&(a(),a=void 0)},{root:c,rootMargin:u,threshold:e,trackVisibility:n,delay:t},o),()=>{a&&a()}},[Array.isArray(e)?e.toString():e,b,c,u,i,s,n,o,t]);const w=(d=R.entry)==null?void 0:d.target,y=v.useRef();!b&&w&&!i&&!s&&y.current!==w&&(y.current=w,p({inView:!!r,entry:void 0}));const f=[V,R.inView,R.entry];return f.ref=f[0],f.inView=f[1],f.entry=f[2],f}export{C as u};
|
|
2
|
+
//# sourceMappingURL=CBjj_ih-.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CBjj_ih-.chunk.js","sources":["../../../../../node_modules/react-intersection-observer/index.mjs"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root)\n return \"0\";\n if (RootIds.has(root))\n return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip)\n return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref)\n return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current)\n callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map"],"names":["observerMap","RootIds","rootId","unsupportedValue","getRootId","root","optionsToId","options","key","createObserver","id","instance","elements","thresholds","observer","entries","entry","_a","inView","threshold","callback","observe","element","fallbackInView","bounds","callbacks","useInView","delay","trackVisibility","rootMargin","triggerOnce","skip","initialInView","onChange","ref","setRef","React2.useState","React2.useRef","state","setState","React2.useEffect","unobserve","entryTarget","previousEntryTarget","result"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{bS as I,ah as M,j as t,L as j,a7 as P,bT as p,p as h,bU as y,c as O,u as x,bO as N,bV as D,bW as H,w as T,a9 as E,C as B}from"./app-CQEXKRTo.js";import{u as V}from"./CZHffw7D.chunk.js";import{I as $,a as q,u as W}from"./BOenBxfx.chunk.js";import{a as F}from"./BI4Pc5Qp.chunk.js";import{g as _,a as G,d as L,I as z,e as K,f as Y}from"./vDUMsOFT.chunk.js";import{I as J}from"./DIqHgqYU.chunk.js";import{u as Q}from"./DSJfyygS.chunk.js";import{u as X}from"./HFbpCC17.chunk.js";import"./sFV5nxD4.chunk.js";import"./sBa2VMAv.chunk.js";import"./EpoqEdEt.chunk.js";import"./GlEgn_rx.chunk.js";import"./BzFtDyVZ.chunk.js";import"./5O9SdVRZ.chunk.js";const Z={getAudienceAppLinkParams:()=>{const{appLink:e}=I.getCurrentRoute(),s=M.isObject(e.params)?e.params:{},{users:n,classrooms:o,classroomGroups:c}=s,a=u=>{const r=s[u];if(r)return Array.isArray(r)?r:[r]},i={};return n&&(i.users=a("users")),o&&(i.classrooms=a("classrooms")),c&&(i.classroomGroups=a("classroomGroups")),i},getDateRangeAppLinkParams:()=>{const{appLink:e}=I.getCurrentRoute(),s=M.isObject(e.params)?e.params:{},{from:n,to:o,rangeName:c}=s,a={};return n&&(a.from=n),o&&(a.to=o),c&&(a.rangeName=c),a}},ee="interactives.studentResponseList",f=j.encloseNamespace(ee);function te(e){const s=Object.keys(e.markedAnswers).length;return t.jsx("div",{className:"d-flex justify-content-end pt-3",children:t.jsxs("div",{children:[!e.showSubmitButtonSpinner&&t.jsx("button",{className:"btn btn-link",onClick:e.onClickClose,children:f("close")}),!!e.interactionsToMark.length&&t.jsx(t.Fragment,{children:e.isDemo?t.jsx(P,{id:"submitAnswers",title:f("demoOnly"),spanHack:!0,spanHackClassName:"d-inline-flex",children:t.jsx("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!s,children:f("submitAnswers")})}):t.jsx(p,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!s,showSpinner:e.showSubmitButtonSpinner,children:f("submitAnswers")})})]})})}const se="interactives.studentResponseList",m=j.encloseNamespace(se);function ne(e){const s=Object.keys(e.markedAnswers).length;return t.jsxs("div",{className:"d-flex justify-content-between pb-3",children:[t.jsxs("div",{className:"d-flex",children:[!!e.summary.unanswered&&t.jsxs("div",{className:"bg-light rounded p-2 me-2",children:[t.jsx("strong",{className:"me-2",children:m("unanswered")}),e.summary.unanswered]}),t.jsxs("div",{className:"bg-light rounded p-2 me-2",children:[t.jsx("strong",{className:"me-2",children:m("score")}),e.summary.awaitingMarking?t.jsx("em",{children:m("pending")}):`${Math.round(e.summary.percentCorrect*100)}%`]})]}),!!e.interactionsToMark.length&&t.jsx(t.Fragment,{children:e.isDemo?t.jsx(P,{id:"submitAnswers",title:m("demoOnly"),spanHack:!0,children:t.jsx("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!s,children:m("submitAnswers")})}):t.jsx(p,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!s,showSpinner:e.showSubmitButtonSpinner,children:m("submitAnswers")})})]})}const ae="_awaitingMarking_1nhv5_1",re={awaitingMarking:ae};function ie(e,s){return e.filter(n=>z.isInteractionCorrect(n,K(s))===Y.AwaitingMarking)}function oe(){const e=h.useRef(null),[s,n]=h.useState(!1);return h.useEffect(()=>{!e.current||s||(n(!0),requestAnimationFrame(()=>e.current.scrollIntoView({behavior:"smooth",block:"center"})))},[e.current,s]),e}function ce(e){const[s,n]=h.useState(!1),o=oe(),c=_(e.interactive,e.studentResults),a=G(e.interactive),i=ie(a,e.studentResults);function u(){n(!0),e.submitMarkedAnswers()}return t.jsxs(t.Fragment,{children:[t.jsx(ne,{summary:c,interactionsToMark:i,markedAnswers:e.markedAnswers,onClickSubmit:u,showSubmitButtonSpinner:s,isDemo:e.isDemo}),t.jsx("ul",{className:"list-unstyled",children:a.map((r,w)=>{var k;const l=r.id.toString()===((k=e.selectedInteractionId)==null?void 0:k.toString()),S=i.some(b=>b.id===r.id),g=F(e.studentResults.user,e.anonymiseUsers);let d="p-2 mb-3 rounded";return l&&(d+=" border-2 border-info shadow"),S?d+=` ${re.awaitingMarking}`:d+=" border",t.jsxs("li",{className:d,ref:l?o:null,children:[t.jsx("div",{className:"d-flex mb-2",children:t.jsx(J,{interaction:r,iconClassName:"flex-shrink-0"})}),e.reportsStyling?t.jsx($,{interaction:r,studentResults:e.studentResults,markedStatus:L(r.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:g,className:"bg-light ps-2",showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):t.jsx(q,{interaction:r,studentResults:e.studentResults,markedStatus:L(r.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:g,showFeedback:!0})]},w)})}),t.jsx(te,{interactionsToMark:i,markedAnswers:e.markedAnswers,onClickSubmit:u,onClickClose:e.onClickClose,showSubmitButtonSpinner:s,isDemo:e.isDemo})]})}function de(){h.useEffect(()=>(y.lockContentWidth(),()=>y.unlockContentWidth()),[])}const ue="shared.interactiveStudentResults",le=j.encloseNamespace(ue);function Ie(e){var d,k,b,C;const[s]=O(E.ANONYMISE_USERS);de();const n=x(N.interactiveMetadata(e.interactiveId)),o=x(((d=n.data)==null?void 0:d.interactiveId)&&N.interactive(n.data.interactiveId)),c=Z.getDateRangeAppLinkParams(),a=V(e.interactiveId,D(H(),c)),i=x(B.config());X([n,a]),Q(n);const{markedAnswers:u,addMarkedAnswers:r,submitMarkedAnswers:w}=W((k=o.data)==null?void 0:k.id,(b=n.data)==null?void 0:b.id,e.closePopup),l=(C=a.data)==null?void 0:C.students.find(U=>{var R,A,v;return((A=(R=U.user)==null?void 0:R.id)==null?void 0:A.toString())===((v=e.userId)==null?void 0:v.toString())}),S=l?le("heading",{studentName:F(l.user,s)}):"",g=!!o.data&&!!a.data&&!!i.data;return t.jsx(T,{title:S,showLoadingSpinner:!g,closePopup:e.closePopup,size:"lg",children:g&&t.jsx(ce,{interactive:o.data,studentResults:l,markedAnswers:u,addMarkedAnswers:r,submitMarkedAnswers:w,imageCdnUrl:i.data.imageCdnUrl,selectedInteractionId:e.interactionId,onClickClose:e.closePopup,anonymiseUsers:s,reportsStyling:!0})})}export{Ie as InteractiveStudentResultsView};
|
|
2
|
+
//# sourceMappingURL=CCIDM29p.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CCIDM29p.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","../../../../libs/shared/src/apps/student-response-list/StudentResponseListFooter.tsx","../../../../libs/shared/src/apps/student-response-list/StudentResponseListHeader.tsx","../../../../libs/shared/src/apps/student-response-list/StudentResponseList.tsx","../../../../libs/shared/src/hooks/useLockContentWidth.ts","../../../../libs/shared/src/apps/analytics/views/interactive-student-results/InteractiveStudentResultsView.tsx"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListFooterProps {\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n onClickClose: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListFooter(props: StudentResponseListFooterProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-end pt-3'>\n <div>\n {!props.showSubmitButtonSpinner &&\n <button className='btn btn-link' onClick={props.onClickClose}>\n {getPhrase('close')}\n </button>\n }\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip\n id='submitAnswers'\n title={getPhrase('demoOnly')}\n spanHack\n spanHackClassName='d-inline-flex'\n >\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListHeaderProps {\n summary: ResultsSummary;\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListHeader(props: StudentResponseListHeaderProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-between pb-3'>\n <div className='d-flex'>\n {!!props.summary.unanswered &&\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('unanswered')}</strong>\n {props.summary.unanswered}\n </div>\n }\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('score')}</strong>\n {props.summary.awaitingMarking\n ? <em>{getPhrase('pending')}</em>\n : `${Math.round(props.summary.percentCorrect * 100)}%`\n }\n </div>\n </div>\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack>\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus, getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, Interactive, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getInteractions, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport { StudentResponseListFooter } from './StudentResponseListFooter';\nimport { StudentResponseListHeader } from './StudentResponseListHeader';\n\nimport styles from './student-response-list.module.scss';\n\nfunction getInteractionsToMark(\n interactions: Interaction[],\n studentResults: StudentResults\n): Interaction[] {\n return interactions.filter(i => {\n return InteractiveCorrectnessHelper.isInteractionCorrect(\n i,\n getStudentResult(studentResults)\n ) === InteractionCorrectness.AwaitingMarking;\n });\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nfunction useScrollSelectedInteractionIntoView(): React.MutableRefObject<HTMLLIElement> {\n const ref = React.useRef<HTMLLIElement>(null);\n const [ scrolled, setScrolled ] = React.useState(false);\n\n // Only scroll once\n React.useEffect(() => {\n if (!ref.current || scrolled)\n return;\n\n setScrolled(true);\n requestAnimationFrame(() => ref.current.scrollIntoView({ behavior: 'smooth', block: 'center' }));\n }, [ ref.current, scrolled ]);\n\n return ref;\n}\n\ninterface StudentResponseListProps {\n interactive: Interactive;\n markedAnswers: MarkedAnswerHash;\n studentResults: StudentResults;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n onClickClose: () => void;\n imageCdnUrl: string;\n selectedInteractionId?: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseList(props: StudentResponseListProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n const selectedInteractionRef = useScrollSelectedInteractionIntoView();\n\n const summary = getStudentResultsSummary(props.interactive, props.studentResults);\n const interactions = getInteractions(props.interactive);\n const questionsToMark = getInteractionsToMark(interactions, props.studentResults);\n\n function onClickSubmit(): void {\n setShowSpinner(true);\n props.submitMarkedAnswers();\n }\n\n return (\n <>\n <StudentResponseListHeader\n summary={summary}\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n <ul className='list-unstyled'>\n {interactions.map((interaction, idx) => {\n const isSelected = interaction.id.toString() === props.selectedInteractionId?.toString();\n const markingRequired = questionsToMark.some(q => q.id === interaction.id);\n const anonymisedUserName = anonymiseUserName(\n props.studentResults.user,\n props.anonymiseUsers\n );\n\n let className = 'p-2 mb-3 rounded';\n\n if (isSelected)\n className += ' border-2 border-info shadow';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking}`;\n else\n className += ' border';\n\n return (\n <li key={idx} className={className} ref={isSelected ? selectedInteractionRef : null}>\n <div className='d-flex mb-2'>\n <InteractionLabel\n interaction={interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n className='bg-light ps-2'\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n <StudentResponseListFooter\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n onClickClose={props.onClickClose}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n </>\n );\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","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 { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { StudentResponseList } from 'libs/shared/apps/student-response-list/StudentResponseList';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { Config, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveStudentResults';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveStudentResultsViewProps extends PopupViewProps {\n userId: string;\n interactiveId: string;\n interactionId?: string;\n}\n\nexport function InteractiveStudentResultsView(props: InteractiveStudentResultsViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(\n props.interactiveId,\n getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n useHandleObjectError([ interactiveMetadata, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n interactive.data?.id,\n interactiveMetadata.data?.id,\n props.closePopup\n );\n\n const studentResults = results.data?.students.find(s => s.user?.id?.toString() === props.userId?.toString());\n\n const popupTitle = studentResults\n ? getPhrase('heading', { studentName: anonymiseUserName(studentResults.user, anonymiseUsers) })\n : '';\n const dataLoaded = !!interactive.data && !!results.data && !!config.data;\n\n return (\n <Popup\n title={popupTitle}\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n size='lg'\n >\n {dataLoaded &&\n <StudentResponseList\n interactive={interactive.data}\n studentResults={studentResults}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={submitMarkedAnswers}\n imageCdnUrl={config.data.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n onClickClose={props.closePopup}\n anonymiseUsers={anonymiseUsers}\n reportsStyling\n />\n }\n </Popup>\n );\n}\n"],"names":["AnalyticsFilterHelper","appLink","ContextService","params","ObjectHelper","users","classrooms","classroomGroups","getParam","key","param","audienceFilters","from","to","rangeName","dateRangeFilters","namespace","getPhrase","LanguageService","StudentResponseListFooter","props","numMarkedAnswers","jsx","Fragment","Tooltip","SpinnerButton","StudentResponseListHeader","jsxs","getInteractionsToMark","interactions","studentResults","i","InteractiveCorrectnessHelper","getStudentResult","InteractionCorrectness","useScrollSelectedInteractionIntoView","ref","React","scrolled","setScrolled","StudentResponseList","showSpinner","setShowSpinner","selectedInteractionRef","summary","getStudentResultsSummary","getInteractions","questionsToMark","onClickSubmit","interaction","idx","isSelected","_a","markingRequired","q","anonymisedUserName","anonymiseUserName","className","styles","InteractionLabel","InteractionResponse","getMarkedStatus","InteractionResponseItem","useLockContentWidth","LayoutHelper","InteractiveStudentResultsView","anonymiseUsers","useViewModel","SharedViewModelKeys","interactiveMetadata","Flight.useBasicFetch","InteractiveRequests","interactive","dateRangeAppLinkParams","results","useFetchInteractiveResults","getStartEndParams","getInsightsDateRangePresets","config","ConfigRequests","useHandleObjectError","useCannotConsumeError","markedAnswers","addMarkedAnswers","submitMarkedAnswers","useMarkAnswers","_b","_c","_d","s","popupTitle","dataLoaded","Popup"],"mappings":"yoBAOO,MAAMA,EAAwB,CACnC,yBAA0B,IAAM,CAC9B,KAAM,CAAE,QAAAC,CAAA,EAAYC,EAAe,gBAAA,EAC7BC,EAASC,EAAa,SAASH,EAAQ,MAAM,EAAIA,EAAQ,OAAuB,CAAA,EAChF,CAAE,MAAAI,EAAO,WAAAC,EAAY,gBAAAC,CAAA,EAAoBJ,EAEzCK,EAAYC,GAAmC,CACnD,MAAMC,EAAQP,EAAOM,CAAG,EAExB,GAAKC,EAGL,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC9C,EAEMC,EAAuC,CAAA,EAE7C,OAAIN,IACFM,EAAgB,MAAQH,EAAS,OAAO,GAEtCF,IACFK,EAAgB,WAAaH,EAAS,YAAY,GAEhDD,IACFI,EAAgB,gBAAkBH,EAAS,iBAAiB,GAEvDG,CACT,EACA,0BAA2B,IAAM,CAC/B,KAAM,CAAE,QAAAV,CAAA,EAAYC,EAAe,gBAAA,EAC7BC,EAASC,EAAa,SAASH,EAAQ,MAAM,EAAIA,EAAQ,OAAuB,CAAA,EAChF,CAAE,KAAAW,EAAM,GAAAC,EAAI,UAAAC,CAAA,EAAcX,EAE1BY,EAAyC,CAAA,EAE/C,OAAIH,IACFG,EAAiB,KAAOH,GAEtBC,IACFE,EAAiB,GAAKF,GAEpBC,IACFC,EAAiB,UAAYD,GAExBC,CACT,CACF,EC5CMC,GAAY,mCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAWrD,SAASG,GAA0BC,EAAoD,CAC5F,MAAMC,EAAmB,OAAO,KAAKD,EAAM,aAAa,EAAE,OAE1D,OACEE,EAAAA,IAAC,MAAA,CAAI,UAAU,kCACb,gBAAC,MAAA,CACE,SAAA,CAAA,CAACF,EAAM,yBACNE,EAAAA,IAAC,SAAA,CAAO,UAAU,eAAe,QAASF,EAAM,aAC7C,SAAAH,EAAU,OAAO,CAAA,CACpB,EAED,CAAC,CAACG,EAAM,mBAAmB,QAC1BE,EAAAA,IAAAC,EAAAA,SAAA,CACG,WAAM,OACLD,EAAAA,IAACE,EAAA,CACC,GAAG,gBACH,MAAOP,EAAU,UAAU,EAC3B,SAAQ,GACR,kBAAkB,gBAElB,SAAAK,EAAAA,IAAC,SAAA,CACC,UAAU,2CACV,SAAU,CAACD,EAEV,WAAU,eAAe,CAAA,CAAA,CAC5B,CAAA,EAGFC,EAAAA,IAACG,EAAA,CACC,QAAQ,eACR,QAASL,EAAM,cACf,SAAU,CAACC,EACX,YAAaD,EAAM,wBAElB,WAAU,eAAe,CAAA,CAAA,CAC5B,CAEJ,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CCrDA,MAAMJ,GAAY,mCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAWrD,SAASU,GAA0BN,EAAoD,CAC5F,MAAMC,EAAmB,OAAO,KAAKD,EAAM,aAAa,EAAE,OAE1D,OACEO,EAAAA,KAAC,MAAA,CAAI,UAAU,sCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,SACZ,SAAA,CAAA,CAAC,CAACP,EAAM,QAAQ,YACfO,EAAAA,KAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAL,MAAC,SAAA,CAAO,UAAU,OAAQ,SAAAL,EAAU,YAAY,EAAE,EACjDG,EAAM,QAAQ,UAAA,EACjB,EAEFO,EAAAA,KAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAL,MAAC,SAAA,CAAO,UAAU,OAAQ,SAAAL,EAAU,OAAO,EAAE,EAC5CG,EAAM,QAAQ,gBACXE,EAAAA,IAAC,KAAA,CAAI,WAAU,SAAS,CAAA,CAAE,EAC1B,GAAG,KAAK,MAAMF,EAAM,QAAQ,eAAiB,GAAG,CAAC,GAAA,CAAA,CAEvD,CAAA,EACF,EACC,CAAC,CAACA,EAAM,mBAAmB,0BAEvB,SAAAA,EAAM,OACLE,EAAAA,IAACE,EAAA,CAAQ,GAAG,gBAAgB,MAAOP,EAAU,UAAU,EAAG,SAAQ,GAChE,SAAAK,EAAAA,IAAC,SAAA,CACC,UAAU,2CACV,SAAU,CAACD,EAEV,WAAU,eAAe,CAAA,CAAA,EAE9B,EAEAC,EAAAA,IAACG,EAAA,CACC,QAAQ,eACR,QAASL,EAAM,cACf,SAAU,CAACC,EACX,YAAaD,EAAM,wBAElB,WAAU,eAAe,CAAA,CAAA,CAC5B,CAEJ,CAAA,EAEJ,CAEJ,6DChDA,SAASQ,GACPC,EACAC,EACe,CACf,OAAOD,EAAa,OAAOE,GAClBC,EAA6B,qBAClCD,EACAE,EAAiBH,CAAc,CAAA,IAC3BI,EAAuB,eAC9B,CACH,CAGA,SAASC,IAA8E,CACrF,MAAMC,EAAMC,EAAM,OAAsB,IAAI,EACtC,CAAEC,EAAUC,CAAY,EAAIF,EAAM,SAAS,EAAK,EAGtD,OAAAA,EAAM,UAAU,IAAM,CAChB,CAACD,EAAI,SAAWE,IAGpBC,EAAY,EAAI,EAChB,sBAAsB,IAAMH,EAAI,QAAQ,eAAe,CAAE,SAAU,SAAU,MAAO,QAAA,CAAU,CAAC,EACjG,EAAG,CAAEA,EAAI,QAASE,CAAS,CAAC,EAErBF,CACT,CAgBO,SAASI,GAAoBpB,EAA8C,CAChF,KAAM,CAAEqB,EAAaC,CAAe,EAAIL,EAAM,SAAS,EAAK,EACtDM,EAAyBR,GAAA,EAEzBS,EAAUC,EAAyBzB,EAAM,YAAaA,EAAM,cAAc,EAC1ES,EAAeiB,EAAgB1B,EAAM,WAAW,EAChD2B,EAAkBnB,GAAsBC,EAAcT,EAAM,cAAc,EAEhF,SAAS4B,GAAsB,CAC7BN,EAAe,EAAI,EACnBtB,EAAM,oBAAA,CACR,CAEA,OACEO,EAAAA,KAAAJ,WAAA,CACE,SAAA,CAAAD,EAAAA,IAACI,GAAA,CACC,QAAAkB,EACA,mBAAoBG,EACpB,cAAe3B,EAAM,cACrB,cAAA4B,EACA,wBAAyBP,EACzB,OAAQrB,EAAM,MAAA,CAAA,EAEhBE,MAAC,MAAG,UAAU,gBACX,WAAa,IAAI,CAAC2B,EAAaC,IAAQ,OACtC,MAAMC,EAAaF,EAAY,GAAG,eAAeG,EAAAhC,EAAM,wBAAN,YAAAgC,EAA6B,YACxEC,EAAkBN,EAAgB,QAAUO,EAAE,KAAOL,EAAY,EAAE,EACnEM,EAAqBC,EACzBpC,EAAM,eAAe,KACrBA,EAAM,cAAA,EAGR,IAAIqC,EAAY,mBAEhB,OAAIN,IACFM,GAAa,gCAEXJ,EACFI,GAAa,IAAIC,GAAO,eAAe,GAEvCD,GAAa,iBAGZ,KAAA,CAAa,UAAAA,EAAsB,IAAKN,EAAaR,EAAyB,KAC7E,SAAA,CAAArB,EAAAA,IAAC,MAAA,CAAI,UAAU,cACb,SAAAA,EAAAA,IAACqC,EAAA,CACC,YAAAV,EACA,cAAc,eAAA,CAAA,EAElB,EACC7B,EAAM,eACLE,EAAAA,IAACsC,EAAA,CACC,YAAAX,EACA,eAAgB7B,EAAM,eACtB,aAAcyC,EAAgBZ,EAAY,GAAI7B,EAAM,eAAgBA,EAAM,aAAa,EACvF,gBAAiBA,EAAM,iBACvB,YAAaA,EAAM,YACnB,mBAAAmC,EACA,UAAU,gBACV,aAAY,GACZ,eAAc,GACd,uBAAuB,OAAA,CAAA,EAGzBjC,EAAAA,IAACwC,EAAA,CACC,YAAAb,EACA,eAAgB7B,EAAM,eACtB,aAAcyC,EAAgBZ,EAAY,GAAI7B,EAAM,eAAgBA,EAAM,aAAa,EACvF,gBAAiBA,EAAM,iBACvB,YAAaA,EAAM,YACnB,mBAAAmC,EACA,aAAY,EAAA,CAAA,CACd,CAAA,EA7BKL,CA+BT,CAEJ,CAAC,CAAA,CACH,EACA5B,EAAAA,IAACH,GAAA,CACC,mBAAoB4B,EACpB,cAAe3B,EAAM,cACrB,cAAA4B,EACA,aAAc5B,EAAM,aACpB,wBAAyBqB,EACzB,OAAQrB,EAAM,MAAA,CAAA,CAChB,EACF,CAEJ,CClJO,SAAS2C,IAA4B,CAC1C1B,EAAM,UAAU,KACd2B,EAAa,iBAAA,EACN,IAAMA,EAAa,mBAAA,GACzB,CAAA,CAAE,CACP,CCaA,MAAMhD,GAAY,mCACZC,GAAYC,EAAgB,iBAAiBF,EAAS,EAQrD,SAASiD,GAA8B7C,EAAwD,aACpG,KAAM,CAAC8C,CAAc,EAAIC,EAAsBC,EAAoB,eAAe,EAElFL,GAAA,EAEA,MAAMM,EAAsBC,EAC1BC,EAAoB,oBAAoBnD,EAAM,aAAa,CAAA,EAEvDoD,EAAcF,IAAkClB,EAAAiB,EAAoB,OAApB,YAAAjB,EAA0B,gBAC9EmB,EAAoB,YAAYF,EAAoB,KAAK,aAAa,CAAC,EAEnEI,EAAyBzE,EAAsB,0BAAA,EAE/C0E,EAAUC,EACdvD,EAAM,cACNwD,EAAkBC,EAAA,EAA+BJ,CAAsB,CAAA,EAEnEK,EAASR,EAA6BS,EAAe,QAAQ,EAEnEC,EAAqB,CAAEX,EAAqBK,CAAQ,CAAC,EACrDO,EAAsBZ,CAAmB,EAEzC,KAAM,CAAE,cAAAa,EAAe,iBAAAC,EAAkB,oBAAAC,CAAA,EAAwBC,GAC/DC,EAAAd,EAAY,OAAZ,YAAAc,EAAkB,IAClBC,EAAAlB,EAAoB,OAApB,YAAAkB,EAA0B,GAC1BnE,EAAM,UAAA,EAGFU,GAAiB0D,EAAAd,EAAQ,OAAR,YAAAc,EAAc,SAAS,KAAKC,GAAA,WAAK,QAAAH,GAAAlC,EAAAqC,EAAE,OAAF,YAAArC,EAAQ,KAAR,YAAAkC,EAAY,gBAAeC,EAAAnE,EAAM,SAAN,YAAAmE,EAAc,cAE3FG,EAAa5D,EACfb,GAAU,UAAW,CAAE,YAAauC,EAAkB1B,EAAe,KAAMoC,CAAc,CAAA,CAAG,EAC5F,GACEyB,EAAa,CAAC,CAACnB,EAAY,MAAQ,CAAC,CAACE,EAAQ,MAAQ,CAAC,CAACI,EAAO,KAEpE,OACExD,EAAAA,IAACsE,EAAA,CACC,MAAOF,EACP,mBAAoB,CAACC,EACrB,WAAYvE,EAAM,WAClB,KAAK,KAEJ,SAAAuE,GACCrE,EAAAA,IAACkB,GAAA,CACC,YAAagC,EAAY,KACzB,eAAA1C,EACA,cAAAoD,EACA,iBAAAC,EACA,oBAAAC,EACA,YAAaN,EAAO,KAAK,YACzB,sBAAuB1D,EAAM,cAC7B,aAAcA,EAAM,WACpB,eAAA8C,EACA,eAAc,EAAA,CAAA,CAChB,CAAA,CAIR"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as i,V as n}from"./app-CQEXKRTo.js";function r(){i(n.LEFT_NAV_STATE)}const e=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function a(o){return o.map((s,t)=>({...s,color:e[t%e.length]}))}export{a as m,r as u};
|
|
2
|
+
//# sourceMappingURL=CFjwQ5Sg.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CFjwQ5Sg.chunk.js","sources":["../../src/shared/hooks/UseListenToNavState.ts","../../../../libs/shared/src/apps/analytics/utils/ChartColourUtils.ts"],"sourcesContent":["import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { LeftNavState } from 'shared/enums/LeftNavState';\n\n/**\n * Any component that uses this hook will automatically re-render\n * when the left nav is toggled.\n * \n * This is useful for chart components which automatically re-render\n * on a window resize event but not when the content container is resized\n * (which occurs when the nav is toggled).\n */\nexport function useListenToNavState(): void {\n useViewModel<LeftNavState>(ViewModelKeys.LEFT_NAV_STATE);\n}","const CHART_COLOURS = [\n '#FF9300', // Pizazz\n '#38A2E8', // Picton Blue\n '#7A76E8', // Portage\n '#B679C7', // East Side\n '#F7847B', // Froly\n '#D9584F', // Red (Not in the Primary palette)\n '#FFCD52', // Yellow (Not in the Primary Palette)\n '#5DC786', // Emerald\n '#40BCC3', // Perolous\n '#40C2BB' // Puerto rico\n];\n\nexport function mixinSeriesColours<T>(data: T[]): T[] {\n return data.map((d, idx) => ({\n ...d,\n color: CHART_COLOURS[idx % CHART_COLOURS.length]\n }));\n}"],"names":["useListenToNavState","useViewModel","ViewModelKeys","CHART_COLOURS","mixinSeriesColours","data","d","idx"],"mappings":"6CAaO,SAASA,GAA4B,CAC1CC,EAA2BC,EAAc,cAAc,CACzD,CCfA,MAAMC,EAAgB,CACpB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEO,SAASC,EAAsBC,EAAgB,CACpD,OAAOA,EAAK,IAAI,CAACC,EAAGC,KAAS,CAC3B,GAAGD,EACH,MAAOH,EAAcI,EAAMJ,EAAc,MAAM,CAAA,EAC/C,CACJ"}
|