@clickview/reports 0.71.0 → 0.71.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/5O9SdVRZ.chunk.js +2 -0
- package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
- package/dist/scripts/71lqp_27.chunk.js +2 -0
- package/dist/scripts/71lqp_27.chunk.js.map +1 -0
- package/dist/scripts/B29cILrj.chunk.js +2 -0
- package/dist/scripts/B29cILrj.chunk.js.map +1 -0
- package/dist/scripts/B8h79IbE.chunk.js +10 -0
- package/dist/scripts/B8h79IbE.chunk.js.map +1 -0
- package/dist/scripts/BAY69EEW.chunk.js +4 -0
- package/dist/scripts/BAY69EEW.chunk.js.map +1 -0
- package/dist/scripts/BAb7U5e_.chunk.js +2 -0
- package/dist/scripts/BAb7U5e_.chunk.js.map +1 -0
- package/dist/scripts/BENXQfLb.chunk.js +2 -0
- package/dist/scripts/BENXQfLb.chunk.js.map +1 -0
- package/dist/scripts/BF6robfP.chunk.js +2 -0
- package/dist/scripts/BF6robfP.chunk.js.map +1 -0
- package/dist/scripts/BHgJhw0m.chunk.js +2 -0
- package/dist/scripts/BHgJhw0m.chunk.js.map +1 -0
- package/dist/scripts/BJDrvt1V.chunk.js +3 -0
- package/dist/scripts/BJDrvt1V.chunk.js.map +1 -0
- package/dist/scripts/BKardFg7.chunk.js +2 -0
- package/dist/scripts/BKardFg7.chunk.js.map +1 -0
- package/dist/scripts/BNPb8jz9.chunk.js +2 -0
- package/dist/scripts/BNPb8jz9.chunk.js.map +1 -0
- package/dist/scripts/BPjdUUKC.chunk.js +2 -0
- package/dist/scripts/BPjdUUKC.chunk.js.map +1 -0
- package/dist/scripts/BQIPBrM1.chunk.js +2 -0
- package/dist/scripts/BQIPBrM1.chunk.js.map +1 -0
- package/dist/scripts/BSOiWR0F.chunk.js +6 -0
- package/dist/scripts/BSOiWR0F.chunk.js.map +1 -0
- package/dist/scripts/BUXFRkJU.chunk.js +2 -0
- package/dist/scripts/BUXFRkJU.chunk.js.map +1 -0
- package/dist/scripts/BVwIslOW.chunk.js +2 -0
- package/dist/scripts/BVwIslOW.chunk.js.map +1 -0
- package/dist/scripts/BWQPt-2Q.chunk.js +2 -0
- package/dist/scripts/BWQPt-2Q.chunk.js.map +1 -0
- package/dist/scripts/BcPvb8J5.chunk.js +2 -0
- package/dist/scripts/BcPvb8J5.chunk.js.map +1 -0
- package/dist/scripts/Bf0d_B71.chunk.js +2 -0
- package/dist/scripts/Bf0d_B71.chunk.js.map +1 -0
- package/dist/scripts/Bic1CpMi.chunk.js +2 -0
- package/dist/scripts/Bic1CpMi.chunk.js.map +1 -0
- package/dist/scripts/BjgJ1i6i.chunk.js +6 -0
- package/dist/scripts/BjgJ1i6i.chunk.js.map +1 -0
- package/dist/scripts/BjiBJyQD.chunk.js +2 -0
- package/dist/scripts/BjiBJyQD.chunk.js.map +1 -0
- package/dist/scripts/BkuaVwYH.chunk.js +2 -0
- package/dist/scripts/BkuaVwYH.chunk.js.map +1 -0
- package/dist/scripts/BmVEWaPp.chunk.js +4 -0
- package/dist/scripts/BmVEWaPp.chunk.js.map +1 -0
- package/dist/scripts/BohkY37l.chunk.js +2 -0
- package/dist/scripts/BohkY37l.chunk.js.map +1 -0
- package/dist/scripts/BvIrLDbv.chunk.js +2 -0
- package/dist/scripts/BvIrLDbv.chunk.js.map +1 -0
- package/dist/scripts/BvJAziJf.chunk.js +2 -0
- package/dist/scripts/BvJAziJf.chunk.js.map +1 -0
- package/dist/scripts/BzoD15bZ.chunk.js +2 -0
- package/dist/scripts/BzoD15bZ.chunk.js.map +1 -0
- package/dist/scripts/C0fIn5Jw.chunk.js +2 -0
- package/dist/scripts/C0fIn5Jw.chunk.js.map +1 -0
- package/dist/scripts/C1LS2BqQ.chunk.js +2 -0
- package/dist/scripts/C1LS2BqQ.chunk.js.map +1 -0
- package/dist/scripts/C89Wm2QM.chunk.js +2 -0
- package/dist/scripts/C89Wm2QM.chunk.js.map +1 -0
- package/dist/scripts/CFp1zKGZ.chunk.js +8 -0
- package/dist/scripts/CFp1zKGZ.chunk.js.map +1 -0
- package/dist/scripts/CGvB_tzk.chunk.js +2 -0
- package/dist/scripts/CGvB_tzk.chunk.js.map +1 -0
- package/dist/scripts/CJGzIuaC.chunk.js +2 -0
- package/dist/scripts/CJGzIuaC.chunk.js.map +1 -0
- package/dist/scripts/CK9SUSD9.chunk.js +2 -0
- package/dist/scripts/CK9SUSD9.chunk.js.map +1 -0
- package/dist/scripts/CRnFAzfK.chunk.js +2 -0
- package/dist/scripts/CRnFAzfK.chunk.js.map +1 -0
- package/dist/scripts/CVftTaOh.chunk.js +2 -0
- package/dist/scripts/CVftTaOh.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/CcJo9tyC.chunk.js +2 -0
- package/dist/scripts/CcJo9tyC.chunk.js.map +1 -0
- package/dist/scripts/Cd8Y7VGD.chunk.js +2 -0
- package/dist/scripts/Cd8Y7VGD.chunk.js.map +1 -0
- package/dist/scripts/CdEUIVMJ.chunk.js +2 -0
- package/dist/scripts/CdEUIVMJ.chunk.js.map +1 -0
- package/dist/scripts/Cf7yxDlS.chunk.js +2 -0
- package/dist/scripts/Cf7yxDlS.chunk.js.map +1 -0
- package/dist/scripts/Ch38wU3l.chunk.js +2 -0
- package/dist/scripts/Ch38wU3l.chunk.js.map +1 -0
- package/dist/scripts/Cj1EIzRP.chunk.js +2 -0
- package/dist/scripts/Cj1EIzRP.chunk.js.map +1 -0
- package/dist/scripts/Ckh8ZMGm.chunk.js +2 -0
- package/dist/scripts/Ckh8ZMGm.chunk.js.map +1 -0
- package/dist/scripts/ClIb9fji.chunk.js +10 -0
- package/dist/scripts/ClIb9fji.chunk.js.map +1 -0
- package/dist/scripts/ClkubQ2J.chunk.js +2 -0
- package/dist/scripts/ClkubQ2J.chunk.js.map +1 -0
- package/dist/scripts/ClngJcaG.chunk.js +2 -0
- package/dist/scripts/ClngJcaG.chunk.js.map +1 -0
- package/dist/scripts/Cmh_kkGl.chunk.js +2 -0
- package/dist/scripts/Cmh_kkGl.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/CqnFgpqG.chunk.js +2 -0
- package/dist/scripts/CqnFgpqG.chunk.js.map +1 -0
- package/dist/scripts/Ctl4eE7j.chunk.js +2 -0
- package/dist/scripts/Ctl4eE7j.chunk.js.map +1 -0
- package/dist/scripts/Cu2SZCs_.chunk.js +3 -0
- package/dist/scripts/Cu2SZCs_.chunk.js.map +1 -0
- package/dist/scripts/Cus4Epw8.chunk.js +2 -0
- package/dist/scripts/Cus4Epw8.chunk.js.map +1 -0
- package/dist/scripts/Cwr3w1_A.chunk.js +2 -0
- package/dist/scripts/Cwr3w1_A.chunk.js.map +1 -0
- package/dist/scripts/CyS0Qcff.chunk.js +2 -0
- package/dist/scripts/CyS0Qcff.chunk.js.map +1 -0
- package/dist/scripts/Cz6t-6nF.chunk.js +2 -0
- package/dist/scripts/Cz6t-6nF.chunk.js.map +1 -0
- package/dist/scripts/D22pDzdH.chunk.js +2 -0
- package/dist/scripts/D22pDzdH.chunk.js.map +1 -0
- package/dist/scripts/D2z6V6KN.chunk.js +2 -0
- package/dist/scripts/D2z6V6KN.chunk.js.map +1 -0
- package/dist/scripts/D3rgHjw0.chunk.js +2 -0
- package/dist/scripts/D3rgHjw0.chunk.js.map +1 -0
- package/dist/scripts/D4zllLcC.chunk.js +2 -0
- package/dist/scripts/D4zllLcC.chunk.js.map +1 -0
- package/dist/scripts/D5FZp_R5.chunk.js +2 -0
- package/dist/scripts/D5FZp_R5.chunk.js.map +1 -0
- package/dist/scripts/D9PHjOfy.chunk.js +42 -0
- package/dist/scripts/D9PHjOfy.chunk.js.map +1 -0
- package/dist/scripts/DMIuTLXg.chunk.js +2 -0
- package/dist/scripts/DMIuTLXg.chunk.js.map +1 -0
- package/dist/scripts/DNgLQx2d.chunk.js +2 -0
- package/dist/scripts/DNgLQx2d.chunk.js.map +1 -0
- package/dist/scripts/DPPRKUKt.chunk.js +2 -0
- package/dist/scripts/DPPRKUKt.chunk.js.map +1 -0
- package/dist/scripts/DTDgnfLK.chunk.js +2 -0
- package/dist/scripts/DTDgnfLK.chunk.js.map +1 -0
- package/dist/scripts/DTUnn1Hh.chunk.js +2 -0
- package/dist/scripts/DTUnn1Hh.chunk.js.map +1 -0
- package/dist/scripts/DWKdFOij.chunk.js +2 -0
- package/dist/scripts/DWKdFOij.chunk.js.map +1 -0
- package/dist/scripts/DXjxFPuU.chunk.js +2 -0
- package/dist/scripts/DXjxFPuU.chunk.js.map +1 -0
- package/dist/scripts/DZYVycui.chunk.js +2 -0
- package/dist/scripts/DZYVycui.chunk.js.map +1 -0
- package/dist/scripts/D_Q6UyjE.chunk.js +2 -0
- package/dist/scripts/D_Q6UyjE.chunk.js.map +1 -0
- package/dist/scripts/D_YN6yks.chunk.js +2 -0
- package/dist/scripts/D_YN6yks.chunk.js.map +1 -0
- package/dist/scripts/DecntqLn.chunk.js +2 -0
- package/dist/scripts/DecntqLn.chunk.js.map +1 -0
- package/dist/scripts/DfBzbPUM.chunk.js +2 -0
- package/dist/scripts/DfBzbPUM.chunk.js.map +1 -0
- package/dist/scripts/Di60KvwG.chunk.js +2 -0
- package/dist/scripts/Di60KvwG.chunk.js.map +1 -0
- package/dist/scripts/Dj0aHq7R.chunk.js +2 -0
- package/dist/scripts/Dj0aHq7R.chunk.js.map +1 -0
- package/dist/scripts/DjZDmVy9.chunk.js +2 -0
- package/dist/scripts/DjZDmVy9.chunk.js.map +1 -0
- package/dist/scripts/DjgLQWKh.chunk.js +2 -0
- package/dist/scripts/DjgLQWKh.chunk.js.map +1 -0
- package/dist/scripts/DljLRdDL.chunk.js +2 -0
- package/dist/scripts/DljLRdDL.chunk.js.map +1 -0
- package/dist/scripts/DoKirPj2.chunk.js +2 -0
- package/dist/scripts/DoKirPj2.chunk.js.map +1 -0
- package/dist/scripts/DrZPksO1.chunk.js +2 -0
- package/dist/scripts/DrZPksO1.chunk.js.map +1 -0
- package/dist/scripts/DwXWjOFd.chunk.js +2 -0
- package/dist/scripts/DwXWjOFd.chunk.js.map +1 -0
- package/dist/scripts/Dwsvd8p8.chunk.js +3 -0
- package/dist/scripts/Dwsvd8p8.chunk.js.map +1 -0
- package/dist/scripts/Ewq6yyV4.chunk.js +2 -0
- package/dist/scripts/Ewq6yyV4.chunk.js.map +1 -0
- package/dist/scripts/GOwzfXiv.chunk.js +2 -0
- package/dist/scripts/GOwzfXiv.chunk.js.map +1 -0
- package/dist/scripts/GybZtYpZ.chunk.js +3 -0
- package/dist/scripts/GybZtYpZ.chunk.js.map +1 -0
- package/dist/scripts/H13OLF2T.chunk.js +2 -0
- package/dist/scripts/H13OLF2T.chunk.js.map +1 -0
- package/dist/scripts/HdH1xgCy.chunk.js +2 -0
- package/dist/scripts/HdH1xgCy.chunk.js.map +1 -0
- package/dist/scripts/K65Dt7jg.chunk.js +2 -0
- package/dist/scripts/K65Dt7jg.chunk.js.map +1 -0
- package/dist/scripts/M-TSYEoo.chunk.js +2 -0
- package/dist/scripts/M-TSYEoo.chunk.js.map +1 -0
- package/dist/scripts/O9F9Sybw.chunk.js +34 -0
- package/dist/scripts/O9F9Sybw.chunk.js.map +1 -0
- package/dist/scripts/PRj0OsVz.chunk.js +2 -0
- package/dist/scripts/PRj0OsVz.chunk.js.map +1 -0
- package/dist/scripts/SsbfqiCA.chunk.js +2 -0
- package/dist/scripts/SsbfqiCA.chunk.js.map +1 -0
- package/dist/scripts/app-BDrXtKwD.js +228 -0
- package/dist/scripts/app-BDrXtKwD.js.map +1 -0
- package/dist/scripts/bOC-mo3v.chunk.js +2 -0
- package/dist/scripts/bOC-mo3v.chunk.js.map +1 -0
- package/dist/scripts/cCAKx9a1.chunk.js +2 -0
- package/dist/scripts/cCAKx9a1.chunk.js.map +1 -0
- package/dist/scripts/csPZD_eN.chunk.js +2 -0
- package/dist/scripts/csPZD_eN.chunk.js.map +1 -0
- package/dist/scripts/iTBVzKEZ.chunk.js +2 -0
- package/dist/scripts/iTBVzKEZ.chunk.js.map +1 -0
- package/dist/scripts/jhT3mG38.chunk.js +2 -0
- package/dist/scripts/jhT3mG38.chunk.js.map +1 -0
- package/dist/scripts/lcnUAi0K.chunk.js +2 -0
- package/dist/scripts/lcnUAi0K.chunk.js.map +1 -0
- package/dist/scripts/mBxqWw8V.chunk.js +2 -0
- package/dist/scripts/mBxqWw8V.chunk.js.map +1 -0
- package/dist/scripts/nR79RHo_.chunk.js +15 -0
- package/dist/scripts/nR79RHo_.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/t5MCaEYl.chunk.js +2 -0
- package/dist/scripts/t5MCaEYl.chunk.js.map +1 -0
- package/dist/scripts/uoF107dn.chunk.js +380 -0
- package/dist/scripts/uoF107dn.chunk.js.map +1 -0
- package/dist/scripts/zeFMHqhy.chunk.js +2 -0
- package/dist/scripts/zeFMHqhy.chunk.js.map +1 -0
- package/package.json +5 -3
- package/typings/utils/imports.d.ts +1 -1
- package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
- package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
- package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
- package/dist/css/209-reports-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-019d93e620-reports.chunk.js +0 -1
- package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
- package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
- package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
- package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
- package/dist/scripts/209-79eb8be706-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-62d81c3442-reports.chunk.js +0 -1
- package/dist/scripts/2999-785ad6d65a-reports.chunk.js +0 -2
- package/dist/scripts/2999-785ad6d65a-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-72c53737e2-reports.chunk.js +0 -1
- package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
- package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
- package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
- package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
- package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
- package/dist/scripts/6007-673706aa31-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-f07bcd318a-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-d34db3ff10-reports.chunk.js +0 -2
- package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
- package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
- package/dist/scripts/8393-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-ee045574e2-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-621fac26e6-reports.chunk.js +0 -1
- package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
- package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +0 -1
- package/dist/scripts/bundle-31e281ea99.min.js +0 -2
- package/dist/scripts/bundle-31e281ea99.min.js.LICENSE.txt +0 -108
- package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as i,v as u,L as b}from"./app-BDrXtKwD.js";import{c as l,H as m,b as p,m as y}from"./Cu2SZCs_.chunk.js";const o={chart:{spacing:[0,36,0,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null}},xAxis:{lineWidth:0,labels:{style:l,align:"left",reserveSpace:!0}},legend:{enabled:!1},plotOptions:{bar:{borderRadius:4,dataLabels:{enabled:!0,style:l,inside:!1,crop:!1,overflow:"allow"},pointWidth:12,pointPadding:0,minPointLength:8}}},A=(e,t)=>({...o,chart:{...o.chart,height:8+t.length*40},xAxis:{...o.xAxis,categories:e},series:[{type:"bar",label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function I(e){const t=A(e.data.map(n=>n.name),e.data);return i.jsx(i.Fragment,{children:i.jsx(m,{highcharts:p,options:t})})}function H(e,t,n){if(!e)return null;const s=e.map(a=>({name:t?t(a.name):a.name,y:a.count,color:n?n(a.name):y(a.name)})),c=s.findIndex(a=>a.name==="Staff");if(c>-1){const[a]=s.splice(c,1);s.push(a)}return s.sort((a,x)=>{var d,h;const g=parseInt((d=a.name.match(/\d+/))==null?void 0:d[0]),f=parseInt((h=x.name.match(/\d+/))==null?void 0:h[0]);return g-f})}const S="reportsShared.lineChart",T=b.encloseNamespace(S),r={title:{text:null},credits:{enabled:!1},yAxis:{title:{text:null},labels:{style:l},gridLineDashStyle:"LongDash",endOnTick:!0,tickAmount:5,min:0},xAxis:{labels:{style:l},min:0},chart:{backgroundColor:"transparent",spacing:[40,0,0,4]},legend:{enabled:!0,align:"right",verticalAlign:"top",floating:!0,y:-40,itemStyle:l},tooltip:{style:{...l,fontSize:"12px"},borderRadius:6}},C=(e,t)=>{var s;const n=(s=u.first(t))==null?void 0:s.data.length;return{...r,yAxis:{...r.yAxis,max:n?null:100},xAxis:{...r.xAxis,categories:e,max:e.length-1},legend:{...r.legend,...n?{}:{symbolPadding:0,symbolWidth:0,symbolHeight:0,squareSymbol:!1}},series:n?t:[{type:"line",name:T("noViews"),data:[]}]}};function R(e){const t=C(e.categories,e.data);return i.jsx(i.Fragment,{children:i.jsx(m,{highcharts:p,options:t,containerProps:{className:"h-100"}})})}export{R as L,I as V,H as g};
|
|
2
|
+
//# sourceMappingURL=bOC-mo3v.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bOC-mo3v.chunk.js","sources":["../../src/shared/components/vertical-bar-chart/VerticalBarChart.tsx","../../src/shared/utils/BarChartByGroupUtils.ts","../../src/shared/components/line-chart/LineChart.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_BAR_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 0, 36, 0, 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 },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: CHART_FONT_STYLES,\n align: 'left',\n reserveSpace: true\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n bar: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n pointWidth: 12,\n pointPadding: 0,\n minPointLength: 8\n }\n }\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[]\n): Highcharts.Options => ({\n ...STATIC_BAR_CHART_OPTIONS,\n chart: {\n ...STATIC_BAR_CHART_OPTIONS.chart,\n height: 8 + (data.length * 40)\n },\n xAxis: {\n ...STATIC_BAR_CHART_OPTIONS.xAxis,\n categories\n },\n series: [{\n type: 'bar',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface VerticalBarChartProps {\n data: Highcharts.PointOptionsObject[]\n}\n\nexport function VerticalBarChart(props: VerticalBarChartProps) {\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 />\n </>\n );\n}","import { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\n\nimport { mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nexport function getCountByGroup(\n countGroup: GroupedAnalyticsCount[],\n getGroupName?: (group: string) => string,\n getChartColour?: (group: string) => string\n): Highcharts.PointOptionsObject[] {\n if (!countGroup) return null;\n\n const mappedGroups: Highcharts.PointOptionsObject[] = countGroup.map(group => {\n return {\n name: getGroupName ? getGroupName(group.name) : group.name,\n y: group.count,\n color: getChartColour ? getChartColour(group.name) : mapUserTypeToChartColour(group.name)\n };\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.sort((a, b) => {\n const numA = parseInt((a.name as string).match(/\\d+/)?.[0]);\n const numB = parseInt((b.name as string).match(/\\d+/)?.[0]);\n return numA - numB;\n });\n}","import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst namespace = 'reportsShared.lineChart';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst STATIC_LINE_CHART_OPTIONS: Highcharts.Options = {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: CHART_FONT_STYLES\n },\n gridLineDashStyle: 'LongDash',\n endOnTick: true,\n tickAmount: 5,\n min: 0\n },\n xAxis: {\n labels: {\n style: CHART_FONT_STYLES\n },\n min: 0\n },\n chart: {\n backgroundColor: 'transparent',\n spacing: [ 40, 0, 0, 4 ]\n },\n legend: {\n enabled: true,\n align: 'right',\n verticalAlign: 'top',\n floating: true,\n y: -40,\n itemStyle: CHART_FONT_STYLES\n },\n tooltip: {\n style: {\n ...CHART_FONT_STYLES,\n fontSize: '12px'\n },\n borderRadius: 6\n }\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.SeriesLineOptions[]\n): Highcharts.Options => {\n const hasData = ArrayHelper.first(data)?.data.length;\n\n return {\n ...STATIC_LINE_CHART_OPTIONS,\n yAxis: {\n ...STATIC_LINE_CHART_OPTIONS.yAxis,\n max: !hasData ? 100 : null\n },\n xAxis: {\n ...STATIC_LINE_CHART_OPTIONS.xAxis,\n categories,\n max: categories.length - 1\n },\n legend: {\n ...STATIC_LINE_CHART_OPTIONS.legend,\n ...(!hasData ? {\n symbolPadding: 0,\n symbolWidth: 0,\n symbolHeight: 0,\n squareSymbol: false\n } : {})\n },\n series: hasData ? data : [{\n type: 'line',\n name: getPhrase('noViews'),\n data: []\n }]\n };\n};\n\ninterface LineChartProps {\n categories: string[];\n data: Highcharts.SeriesLineOptions[]\n}\n\nexport function LineChart(props: LineChartProps) {\n const chartOptions = getChartOptions(props.categories, props.data);\n\n return (\n <>\n <HighchartsReact\n highcharts={Highcharts}\n options={chartOptions}\n containerProps={{ className: 'h-100' }}\n />\n </>\n );\n}"],"names":["STATIC_BAR_CHART_OPTIONS","CHART_FONT_STYLES","getChartOptions","categories","data","VerticalBarChart","props","chartOptions","jsx","Fragment","HighchartsReact","Highcharts","getCountByGroup","countGroup","getGroupName","getChartColour","mappedGroups","group","mapUserTypeToChartColour","staffIndex","staffObject","b","numA","_a","numB","_b","namespace","getPhrase","LanguageService","STATIC_LINE_CHART_OPTIONS","hasData","ArrayHelper","LineChart"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aw as a,bJ as l,s as u}from"./app-BDrXtKwD.js";const i={namespace:"share"},y={video:"thumbnail,series,_canBeConsumed,_restrictions",clip:"_parentVideo[_rating],_canBeConsumed,_thumbnail,_restrictions",interactive:"_canBeConsumed,_parentVideo[_rating],_parentClip,_thumbnail,_restrictions",series:"tallPoster,videos[thumbnail,count()]{limit:1}",playlist:"cover,videos[thumbnail,count()]{limit:1},clips[_thumbnail,count()]{limit:1},interactives[_thumbnail,count()]{limit:1}"};function p(e,r){return{id:e,"query.user":`yearGroups,avatar,userprofiles{customer.id:${r}}`,"query.classroom":`enrolments[count()]{role:student,limit:0},customer{id:${r}}`,"query.classroom_group":"classroom,users[count()]{limit:0}"}}const d={getShareObject(e,r,t){return{url:`/api/share/find/${e}`,key:`share:${e}`,bootstrapName:`share:${e}`,success:r,error:t}},getShareRecipients(e){return{url:`/api/share/find/${e}/recipients`,key:`share:${e}:recipients`,normalize:!1}},sharedObjectsById(e){e.sort();const r=e.map(s=>`id=${s}`),t=Object.keys(y).map(s=>`query.${s}=${y[s]}`);return{url:`{gateway}/v1/objects?${[...r,...t,`permissionFilterOption=${l.StripMetadata}`].join("&")}`,key:`objects:${e.join(",")}`,normalize:!1}},sentShare(e={}){const r=Object.values(e).join(":");return{url:u.urlBuilder("{gateway}/v1/users/me/share/sent-items",e),key:`sent:shares:${r}`,normalize:!1}},getSentDirectShareByObjectId(e){return{url:`{gateway}/v1/users/me/share/direct/sent-items?objectId=${e}`,key:`direct:share:sent:object:${e}`,normalizeOptions:i}},createDirectShare(e,r,t,s){return{url:"{gateway}/v1/share",key:"create:direct:share",data:e,type:a.POST,normalizeOptions:i,invalidationKeys:[`direct:share:sent:object:${e.objectId}`,"sent:shares"],success:r,error:t,always:s}},updateDirectShareRecipients(e,r,t,s,n){const c=`direct:share:recipients:${e}`;return{url:`{gateway}/v1/share/${e}/recipients`,key:"edit:direct:share",data:r,type:a.POST,normalizeOptions:i,invalidationKeys:"sent:shares",updateState:{keys:c,updateData:o=>!o[c]||r.recipients.length?o:{...o,[c]:[]}},success:t,error:s,always:n}},removeDirectShareRecipient(e,r,t,s,n){const c=`direct:share:recipients:${e}`;return{url:u.urlBuilder(`{gateway}/v1/share/${e}/recipients`,{recipientId:r}),key:"remove:direct:share:recipient",type:a.DELETE,normalizeOptions:i,invalidationKeys:"sent:shares",updateState:{keys:c,updateData:o=>o[c]?{...o,[c]:[]}:o},success:t,error:s,always:n}},getDirectShareRecipientsById(e,r,t){return{url:u.urlBuilder("{gateway}/v1/objects",p(r.map(s=>s.id),t)),key:`direct:share:recipients:${e}`}},getRecipientsById(e,r){return e.sort(),{url:u.urlBuilder("{gateway}/v1/objects",p(e,r)),key:`share:recipients:${e.join(",")}`}},getRecipientUsers(e,r){return{url:`{gateway}/v1/objects/${e}/users?query={limit:100}`,key:`share:recipients:${e}:users`,success:r}},getObjectsSharedWithUser(e){const r={permissionFilterOption:l.StripMetadata};return e&&(r.cursor=e),{url:u.urlBuilder("{gateway}/v1/users/me/share/received-items",r),key:`shared:with:me:${e}`}},getShareLinkByObjectId(e){return{url:`{gateway}/v1/share/links?objectId=${e}`,key:`share:link:object:${e}`,normalizeOptions:i,formatData:r=>({...r,linkExpireDate:r.linkExpireDate||null})}},createShareLink(e,r,t,s){return{url:"{gateway}/v1/share/links",key:"create:share:link",type:a.POST,data:e,normalizeOptions:i,invalidationKeys:[`share:link:object:${e.resourceId}`,`privacy:${e.resourceId}`,"sent:shares"],success:r,error:t,always:s}},editShareLink(e,r,t,s,n){return{url:`{gateway}/v1/share/links/${e.id}`,key:"edit:share:link",data:r,type:a.PUT,normalizeOptions:i,invalidationKeys:[`share:${e.id}`,`share:link:object:${e.objectId}`,"sent:shares"],success:t,error:s,always:n}},deleteShareLink(e,r,t,s){return{url:`{gateway}/v1/share/links/${e.id}`,key:"delete:share:link",type:a.DELETE,normalizeOptions:i,invalidationKeys:[`share:${e.id}`,`share:link:object:${e.objectId}`,"sent:shares"],success:r,error:t,always:s}},checkPassword(e,r,t,s){return{url:`{gateway}/v1/share/links/${e}/password/verify`,publicUrl:`{gateway}/v1/share/links/${e}/password/verify/public`,key:`checkpassword:${e}`,type:a.POST,data:{password:r},success:t,error:s}},getPrivacy(e){return{url:`{gateway}/v1/objects/${e}/access`,key:`privacy:${e}`,normalize:!1}},updatePrivacy(e,r,t,s,n){return{url:`{gateway}/v1/share/links/${e}/privacy`,key:"update:privacy",type:a.PUT,data:{privacy:r,overrideRestrictions:t},invalidationKeys:["privacy","sent:shares"],normalize:!1,success:s,error:n}},createAnonSession(e,r,t){return{url:`{gateway}/v1/shares/${e}/anon-sessions`,key:"create:anon:session",type:a.POST,data:{sessionId:r,sessionName:t},normalize:!1}},getAnonSessions(e){return{url:`{gateway}/v1/shares/${e}/anon-sessions`,key:`anon:session:${e}`,normalize:!1}}};export{d as S};
|
|
2
|
+
//# sourceMappingURL=cCAKx9a1.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cCAKx9a1.chunk.js","sources":["../../../../libs/shared/src/apps/share/flight-requests/ShareRequests.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { CreateDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/CreateDirectShareRequest';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/CreateShareLinkRequest';\nimport { EditDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/EditDirectShareRequest';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { GetSentItemsParams } from 'libs/shared/apps/share/interfaces/requests/GetSentItemsParams';\nimport { CheckShareLinkPasswordResponse } from 'libs/shared/apps/share/interfaces/responses/CheckShareLinkPasswordResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { DirectShare, ShareLink, ShareRecipient, UnionShareObject, UserCollection } from 'libs/shared/interfaces';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share'\n};\n\nconst SharedObjectQueries: { [index: string]: string} = {\n video: 'thumbnail,series,_canBeConsumed,_restrictions',\n clip: '_parentVideo[_rating],_canBeConsumed,_thumbnail,_restrictions',\n interactive: '_canBeConsumed,_parentVideo[_rating],_parentClip,_thumbnail,_restrictions',\n series: 'tallPoster,videos[thumbnail,count()]{limit:1}',\n playlist: 'cover,videos[thumbnail,count()]{limit:1},clips[_thumbnail,count()]{limit:1},interactives[_thumbnail,count()]{limit:1}'\n};\n\nfunction getShareRecipientQuery(ids: string[], customerId: string): HashObject {\n return {\n 'id': ids,\n 'query.user': `yearGroups,avatar,userprofiles{customer.id:${customerId}}`,\n 'query.classroom': `enrolments[count()]{role:student,limit:0},customer{id:${customerId}}`,\n 'query.classroom_group': 'classroom,users[count()]{limit:0}'\n };\n}\n\nexport const ShareRequests = {\n getShareObject(\n shareId: string,\n success?: (obj: UnionShareObject) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n /**\n * This is a custom endpoint written into Lite that will use\n * client credentials no matter if the user is signed in or not\n */\n url: `/api/share/find/${shareId}`,\n key: `share:${shareId}`,\n bootstrapName: `share:${shareId}`,\n success,\n error\n };\n },\n\n getShareRecipients(shareId: string): Flight.Request {\n return {\n url: `/api/share/find/${shareId}/recipients`,\n key: `share:${shareId}:recipients`,\n normalize: false\n };\n },\n\n sharedObjectsById(ids: string[]): Flight.Request {\n ids.sort();\n \n const idsQueries = ids.map(id => `id=${id}`);\n const assocQueries = Object.keys(SharedObjectQueries).map(key => `query.${key}=${SharedObjectQueries[key]}`);\n\n return {\n url: `{gateway}/v1/objects?${[ ...idsQueries, ...assocQueries, `permissionFilterOption=${PermissionFilterOption.StripMetadata}` ].join('&')}`,\n key: `objects:${ids.join(',')}`,\n normalize: false\n };\n },\n\n sentShare(params: GetSentItemsParams = {}): Flight.Request {\n const key = Object.values(params).join(':');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/share/sent-items', params),\n key: `sent:shares:${key}`,\n normalize: false\n };\n },\n\n /**\n * Direct share requests\n */\n getSentDirectShareByObjectId(objectId: string): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/share/direct/sent-items?objectId=${objectId}`,\n key: `direct:share:sent:object:${objectId}`,\n normalizeOptions\n };\n },\n\n createDirectShare(\n data: CreateDirectShareRequest,\n success?: (data: DirectShare) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/share',\n key: 'create:direct:share',\n data,\n type: HttpVerbs.POST,\n normalizeOptions,\n invalidationKeys: [ `direct:share:sent:object:${data.objectId}`, 'sent:shares' ],\n success,\n error,\n always\n };\n },\n\n updateDirectShareRecipients(\n shareId: string,\n data: EditDirectShareRequest,\n success?: (data: DirectShare) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const updateStateKey = `direct:share:recipients:${shareId}`;\n\n return {\n url: `{gateway}/v1/share/${shareId}/recipients`,\n key: 'edit:direct:share',\n data,\n type: HttpVerbs.POST,\n normalizeOptions,\n invalidationKeys: 'sent:shares',\n updateState: {\n keys: updateStateKey,\n updateData: (state: HashObject) => {\n /**\n * As getDirectShareRecipientsById caches by shareId\n * and not the objectIds being fetched, if we're removing\n * the last recipient we need to manually set the recipients\n * to an empty array as a re-fetch won't be triggered.\n */\n if (!state[updateStateKey] || data.recipients.length)\n return state;\n\n return {\n ...state,\n [updateStateKey]: []\n };\n }\n },\n success,\n error,\n always\n };\n },\n\n removeDirectShareRecipient(\n shareId: string,\n recipientId: string,\n success?: (data: DirectShare) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const updateStateKey = `direct:share:recipients:${shareId}`;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/share/${shareId}/recipients`, {\n recipientId\n }),\n key: 'remove:direct:share:recipient',\n type: HttpVerbs.DELETE,\n normalizeOptions,\n invalidationKeys: 'sent:shares',\n updateState: {\n keys: updateStateKey,\n updateData: (state: HashObject) => {\n /**\n * As getDirectShareRecipientsById caches by shareId\n * and not the objectIds being fetched, if we're removing\n * the last recipient we need to manually set the recipients\n * to an empty array as a re-fetch won't be triggered.\n */\n if (!state[updateStateKey])\n return state;\n\n return {\n ...state,\n [updateStateKey]: []\n };\n }\n },\n success,\n error,\n always\n };\n },\n\n /**\n * This request differs from getRecipientsById in that the key doesn't contain\n * the ids being fetched. This is useful because it means that if we need to\n * re-fetch the data because `ids` changes, the data prop will always be set\n * because the key won't change.\n * When using getRecipientsById, the would be a period of time where `data`\n * is `undefined` because it is technically a new request.\n */\n getDirectShareRecipientsById(shareId: string, recipients: ShareRecipient[], customerId: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/objects', getShareRecipientQuery(recipients.map(r => r.id), customerId)),\n key: `direct:share:recipients:${shareId}`\n };\n },\n\n getRecipientsById(ids: string[], customerId: string): Flight.Request {\n ids.sort();\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/objects', getShareRecipientQuery(ids, customerId)),\n key: `share:recipients:${ids.join(',')}`\n };\n },\n\n /**\n * Fetch a classroom or classroom group with users\n */\n getRecipientUsers(id: string, success?: (users: UserCollection) => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/users?query={limit:100}`,\n key: `share:recipients:${id}:users`,\n success\n };\n },\n\n getObjectsSharedWithUser(cursor?: string): Flight.Request {\n const params: HashObject = { permissionFilterOption: PermissionFilterOption.StripMetadata };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/share/received-items', params),\n key: `shared:with:me:${cursor}`\n };\n },\n\n /**\n * Share link requests\n */\n getShareLinkByObjectId(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/share/links?objectId=${id}`,\n key: `share:link:object:${id}`,\n normalizeOptions,\n formatData: (resp: HashObject) => {\n /**\n * When removing the linkExpireDate, the cache is invalidated\n * but the normalised state still has the linkExpireDate, so we need\n * to set it to null if it's not present\n */\n return {\n ...resp,\n linkExpireDate: resp.linkExpireDate || null\n };\n }\n };\n },\n\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/share/links',\n key: 'create:share:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [ `share:link:object:${data.resourceId}`, `privacy:${data.resourceId}`, 'sent:shares' ],\n success,\n error,\n always\n };\n },\n\n editShareLink(\n shareLink: ShareLink,\n data: EditShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/share/links/${shareLink.id}`,\n key: 'edit:share:link',\n data,\n type: HttpVerbs.PUT,\n normalizeOptions,\n invalidationKeys: [ `share:${shareLink.id}`, `share:link:object:${shareLink.objectId}`, 'sent:shares' ],\n success,\n error,\n always\n };\n },\n\n deleteShareLink(\n shareLink: ShareLink,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/share/links/${shareLink.id}`,\n key: 'delete:share:link',\n type: HttpVerbs.DELETE,\n normalizeOptions,\n invalidationKeys: [ `share:${shareLink.id}`, `share:link:object:${shareLink.objectId}`, 'sent:shares' ],\n success,\n error,\n always\n };\n },\n\n checkPassword(\n id: string,\n password: string,\n success?: (res: CheckShareLinkPasswordResponse) => void,\n error?: (xhr: Xhr) => void\n ): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/share/links/${id}/password/verify`,\n publicUrl: `{gateway}/v1/share/links/${id}/password/verify/public`,\n key: `checkpassword:${id}`,\n type: HttpVerbs.POST,\n data: { password },\n success,\n error\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n },\n\n updatePrivacy(\n id: string,\n privacy: SharePrivacy,\n overrideRestrictions: boolean,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/share/links/${id}/privacy`,\n key: 'update:privacy',\n type: HttpVerbs.PUT,\n data: {\n privacy,\n overrideRestrictions\n },\n invalidationKeys: [ 'privacy', 'sent:shares' ],\n normalize: false,\n success,\n error\n };\n },\n\n createAnonSession(\n shareId: string,\n sessionId: string,\n sessionName: string\n ): Flight.Request {\n return {\n url: `{gateway}/v1/shares/${shareId}/anon-sessions`,\n key: 'create:anon:session',\n type: HttpVerbs.POST,\n data: {\n sessionId,\n sessionName\n },\n normalize: false\n };\n },\n\n getAnonSessions(shareId: string): Flight.Request {\n return {\n url: `{gateway}/v1/shares/${shareId}/anon-sessions`,\n key: `anon:session:${shareId}`,\n normalize: false\n };\n }\n};"],"names":["normalizeOptions","SharedObjectQueries","getShareRecipientQuery","ids","customerId","ShareRequests","shareId","success","error","idsQueries","id","assocQueries","key","PermissionFilterOption","params","UrlHelper","objectId","data","always","HttpVerbs","updateStateKey","state","recipientId","recipients","r","cursor","resp","shareLink","password","privacy","overrideRestrictions","sessionId","sessionName"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csPZD_eN.chunk.js","sources":["../../src/shared/hooks/UseHandleVideoError.ts"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Clip, InteractiveMetadata, Video } from 'libs/shared/interfaces';\n\nconst videoErrors = {\n notFound: VideoNotFoundError\n};\n\nexport function useHandleVideoError(video: Flight.Response<Video | InteractiveMetadata | Clip>): void {\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useCannotConsumeError(video);\n}"],"names":["videoErrors","VideoNotFoundError","useHandleVideoError","video","useHandleObjectError","useCannotConsumeError"],"mappings":"uHAOA,MAAMA,EAAc,CAClB,SAAUC,CACZ,EAEO,SAASC,EAAoBC,EAAkE,CACpGC,EAAqBD,EAAOH,EAAa,CAAE,UAAW,GAAM,EAC5DK,EAAsBF,CAAK,CAC7B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as g,c9 as b,ca as U,j as e,L as O,i as k,h as K,a6 as W,ar as D,c as Q,e as X,d as z,l as Y,u as w,a as J,A as Z,g as ee,V as te,C as ae,U as se,bR as ie,aW as S}from"./app-BDrXtKwD.js";import{P as ne,M as re,V as oe,a as le,E as ce}from"./uoF107dn.chunk.js";import{g as de}from"./CX5q-0jT.chunk.js";import{C as me}from"./CFp1zKGZ.chunk.js";import{u as ge,I as ue}from"./C1LS2BqQ.chunk.js";import{a as he}from"./DPPRKUKt.chunk.js";import{V as L}from"./SsbfqiCA.chunk.js";import{u as pe}from"./csPZD_eN.chunk.js";import{u as xe,a as fe}from"./B29cILrj.chunk.js";import{u as je}from"./ClkubQ2J.chunk.js";import{a as ve,S as ye}from"./jhT3mG38.chunk.js";import{V as Ce}from"./DNgLQx2d.chunk.js";import"./Dwsvd8p8.chunk.js";import"./K65Dt7jg.chunk.js";import"./5O9SdVRZ.chunk.js";import"./CW7x8M-z.chunk.js";import"./BF6robfP.chunk.js";import"./DfBzbPUM.chunk.js";import"./mBxqWw8V.chunk.js";import"./CyS0Qcff.chunk.js";import"./DZYVycui.chunk.js";import"./Cf7yxDlS.chunk.js";import"./Cmh_kkGl.chunk.js";import"./CVftTaOh.chunk.js";import"./Cu2SZCs_.chunk.js";import"./D9PHjOfy.chunk.js";import"./DecntqLn.chunk.js";import"./sFV5nxD4.chunk.js";import"./BAb7U5e_.chunk.js";import"./BzoD15bZ.chunk.js";import"./lcnUAi0K.chunk.js";import"./Ctl4eE7j.chunk.js";import"./bOC-mo3v.chunk.js";const we={numItems:5,minWidth:50,maxWidth:100},Ie={getPartialLoadingItems(t={}){const n={...we,...t},s=()=>Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth);return[...Array(n.numItems)].map(()=>({width:`${s()}px`}))}},Ne="shared.breadcrumbComponent",Ve=O.encloseNamespace(Ne),Se=64,_=48,h=g.forwardRef((t,n)=>{const{breadcrumb:{name:s,appLink:c,active:d},withBackIcon:m}=t;let i=s,r=null;return i.length>_&&(i=s.slice(0,_)+"...",r=s),e.jsx("li",{className:`breadcrumb-item${d?" active":""}`,title:r,children:d?e.jsx("strong",{children:i}):e.jsxs(k,{appLink:c,ref:n,children:[m&&e.jsx(K,{svg:me,size:W.Small}),e.jsx("span",{className:m?"ms-2":"",children:i})]})})}),Ee=({breadcrumbs:t})=>{const n=b(U.XS),s=(t==null?void 0:t.length)||0,[c,d]=g.useState(!1),[m,i]=g.useState(!1),r=g.useRef(null);g.useEffect(()=>{const l=(t==null?void 0:t.reduce((u,N)=>u+N.name.length,0))??0;s>4&&l>Se&&d(!0)},[t==null?void 0:t.length]),g.useLayoutEffect(()=>{var l;m&&((l=r.current)==null||l.focus())},[r.current,m]);function x(){d(!1),i(!0)}if(!s||n&&s<2)return e.jsx(e.Fragment,{});if(n)return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:e.jsx(h,{breadcrumb:t[s-2],withBackIcon:!0})})});const f=e.jsx(h,{breadcrumb:t[0]}),j=s>2?e.jsx(h,{breadcrumb:t[1]}):e.jsx(e.Fragment,{}),v=s>3?e.jsx(h,{breadcrumb:t[s-2]}):e.jsx(e.Fragment,{}),o=s>1?e.jsx(h,{breadcrumb:t[s-1]}):e.jsx(e.Fragment,{}),I=t.slice(2,s-2);return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsxs("ol",{className:"breadcrumb m-0 p-0",children:[f,j,c?e.jsx("li",{className:"breadcrumb-item",children:e.jsx("button",{className:"btn-link",onClick:x,"aria-label":Ve("expand"),children:"..."})}):I.map((l,u)=>e.jsx(h,{breadcrumb:l,ref:u===0?r:null},u)),v,o]})})},Ae=g.memo(function({numItems:t=3}){return b(U.XS)?e.jsx("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:Ie.getPartialLoadingItems({numItems:t}).map(({width:s},c)=>e.jsx("li",{className:"breadcrumb-item",children:e.jsx("span",{className:"d-inline-block partial-loading-background",style:{width:s},dangerouslySetInnerHTML:{__html:" "}})},c))})})}),Me="_rowA_1gcwf_1",Fe="_videoEngagement_1gcwf_4",E={rowA:Me,videoEngagement:Fe},Re="reportsVideos.schoolVideoViews",A=O.encloseNamespace(Re);function mt(t){var M,F,R;const n=D(),[s]=Q(te.ANONYMISE_USERS),c=X(),d=z(),m=Y.getVideoRequest(t.id,t.typeId),i=w(m),r=w(ae.config()),x=w(L.videoHeatMapAggregation(t.id,c)),f=w(ne.createViewKey(t.id,re.MasterObject)),j=a=>L.videoHeatMap(t.id,c,a),v=a=>n(j(a)),{items:o,hasMore:I,isFetching:l,nextCursor:u,hasFirstPageCompleted:N}=ge(j,v),y=o==null?void 0:o.map(a=>a.userId).filter(a=>!!a),{items:V,hasFirstRequestCompleted:T}=he(y,se.getById);pe(i),J({title:A("title",{video:(M=i.data)==null?void 0:M.name})}),je((F=i.data)==null?void 0:F.name),xe(fe(i.data,B));function B(){var P;const a=ie.getCurrentAppLink(),C=(P=a==null?void 0:a.args)==null?void 0:P[0];let p="";return C&&(t.typeId===S.Interactive&&(p=`/interactives/${a==null?void 0:a.args[0]}`),t.typeId===S.Video&&(p=`/videos/${a==null?void 0:a.args[0]}`),t.typeId===S.Clip&&(p=`/clips/${a==null?void 0:a.args[0]}`)),p}function q(a){if(a.userId){const C=V==null?void 0:V[a.userId];return C||{id:a.userId,deleted:!0}}return{sessionId:a.sessionId}}const H=o==null?void 0:o.map(a=>({...q(a),percentage:a.engagementRate})),$=i.hasCompleted&&r.data&&f.data&&x.hasCompleted,G=!!i.hasCompleted&&N&&(T||!(y!=null&&y.length));return e.jsxs("div",{children:[e.jsx("div",{className:"mb-3",children:i.data?e.jsx(Ee,{breadcrumbs:[{name:A("videoViews"),appLink:{application:ee.VIDEOS,action:Z.Videos.HOME}},{name:i.data.name,active:!0}]}):e.jsx(Ae,{})}),e.jsxs("div",{className:"d-flex flex-column gap-3",children:[e.jsx("div",{className:`${E.rowA} w-100`,children:e.jsx(ve,{videoId:t.id,type:"user_type"})}),e.jsx("div",{className:"w-100",children:e.jsxs("div",{className:"row",children:[e.jsxs("div",{className:`${E.rowB} col row`,children:[e.jsx("div",{className:"col-6",children:e.jsx(ye,{videoId:t.id,type:"year_group"})}),e.jsx("div",{className:"col-6",children:e.jsx(Ce,{videoId:t.id})})]}),e.jsx("div",{className:E.videoEngagement,children:$?e.jsx(oe,{heading:A("totalEngagement"),className:"p-3 h-auto",engagement:x.data,viewKey:f.data.viewKey,playerApiUrl:r.data.playerApiUrl,imageCdnUrl:r.data.imageCdnUrl}):e.jsx(le,{hasHeading:!0})})]})}),G&&e.jsxs(e.Fragment,{children:[e.jsx(ce,{engagement:o,users:H,imageCdnUrl:(R=r.data)==null?void 0:R.imageCdnUrl,anonymiseUsers:s},de(d)),(I||l)&&e.jsx(ue,{isFetching:l,fetchNext:v,nextCursor:u})]})]})]})}export{mt as SchoolVideoViewsView};
|
|
2
|
+
//# sourceMappingURL=iTBVzKEZ.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iTBVzKEZ.chunk.js","sources":["../../../../libs/shared/src/utils/PartialLoadingHelper.ts","../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","../../src/apps/videos/views/school-video-views/SchoolVideoViewsView.tsx"],"sourcesContent":["const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, Engagement, PlayerViewKey, User, VideoTypes } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { PartialVideoEngagementOverlay } from 'shared/components/video-engagement-overlay/PartialVideoEngagementOverlay';\nimport { VideoEngagementOverlay } from 'shared/components/video-engagement-overlay/VideoEngagementOverlay';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { useGetObjectHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport styles from './school-video-views.module.scss';\n\nconst namespace = 'reportsVideos.schoolVideoViews';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SchoolVideoViewsViewProps {\n id: string;\n typeId: MasterType;\n}\n\nexport function SchoolVideoViewsView(props: SchoolVideoViewsViewProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const requestFilter = useGetRequestFilter();\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const videoRequest = VideoHelper.getVideoRequest(props.id, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const heatmapAggregation = Flight.useBasicFetch<Engagement>(\n VideoViewsV2Requests.videoHeatMapAggregation(props.id, requestFilter)\n );\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject)\n );\n\n const getRequest = (cursor?: string) => VideoViewsV2Requests.videoHeatMap(props.id, requestFilter, cursor);\n const fetchNext = (cursor?: string) => fetchAsync(getRequest(cursor));\n const {\n items: individualHeatmaps,\n hasMore,\n isFetching,\n nextCursor,\n hasFirstPageCompleted: heatmapFirstPageCompleted\n } = useInfiniteList<Engagement>(getRequest, fetchNext);\n\n const individualHeatmapUserIds = individualHeatmaps?.map(h => h.userId).filter(u => !!u);\n const {\n items: users,\n hasFirstRequestCompleted: usersFirstPageCompleted\n } = useGrowingBatchFetch<User>(\n individualHeatmapUserIds,\n UserRequests.getById\n );\n\n useHandleVideoError(video);\n\n useSetPageMetadata({ title: getPhrase('title', { video: video.data?.name }) });\n useSetHeaderTitle(video.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(video.data, getInsightsUrl));\n\n\n function getInsightsUrl(): string {\n const currentAppLink = AppLinkHelper.getCurrentAppLink();\n const videoId = currentAppLink?.args?.[0];\n let videoRoute = '';\n\n if (!videoId) return videoRoute;\n\n if (props.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${currentAppLink?.args[0]}`;\n\n if (props.typeId === MasterType.Video)\n videoRoute = `/videos/${currentAppLink?.args[0]}`;\n\n if (props.typeId === MasterType.Clip)\n videoRoute = `/clips/${currentAppLink?.args[0]}`;\n\n return videoRoute;\n }\n\n function getAnonUser(e: Engagement): AnonUser {\n if (e.userId) {\n const user = users?.[e.userId];\n\n if (!user)\n return { id: e.userId, deleted: true } as AnonUser;\n\n return user;\n }\n\n return { sessionId: e.sessionId } as AnonUser;\n }\n \n const viewers = individualHeatmaps?.map(e => ({ ...getAnonUser(e), percentage: e.engagementRate }));\n\n const playerLoaded = (\n video.hasCompleted &&\n config.data &&\n viewKey.data &&\n heatmapAggregation.hasCompleted\n );\n\n const tableDataLoaded = (\n !!video.hasCompleted &&\n heatmapFirstPageCompleted &&\n (usersFirstPageCompleted || !individualHeatmapUserIds?.length)\n );\n\n return (\n <div>\n <div className='mb-3'>\n {video.data ?\n <Breadcrumbs\n breadcrumbs={[\n {\n name: getPhrase('videoViews'),\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.HOME\n }\n }, {\n name: video.data.name,\n active: true\n }\n ]}\n />\n : <PartialBreadcrumbs />\n }\n </div>\n\n <div className='d-flex flex-column gap-3'>\n <div className={`${styles.rowA} w-100`}>\n <StreamsChartCardView videoId={props.id} type='user_type' />\n </div>\n <div className='w-100'>\n <div className='row'>\n <div className={`${styles.rowB} col row`}>\n <div className='col-6'>\n <StreamsBarChartCardView videoId={props.id} type='year_group' />\n </div>\n <div className='col-6'>\n <VideoViewsByRoleCardView videoId={props.id} />\n </div>\n </div>\n <div className={styles.videoEngagement}>\n {playerLoaded ?\n <VideoEngagementOverlay\n heading={getPhrase('totalEngagement')}\n className='p-3 h-auto'\n engagement={heatmapAggregation.data}\n viewKey={viewKey.data.viewKey}\n playerApiUrl={config.data.playerApiUrl}\n imageCdnUrl={config.data.imageCdnUrl}\n />\n : <PartialVideoEngagementOverlay hasHeading />\n }\n </div>\n </div>\n </div>\n {tableDataLoaded &&\n <>\n <EngagementTable\n key={getFilterParamsKey(filterQueryParams)}\n engagement={individualHeatmaps}\n users={viewers}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n />\n {(hasMore || isFetching) &&\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n }\n </>\n }\n </div>\n </div>\n );\n}"],"names":["DEFAULT_PARTIAL_LOADING_OPTIONS","PartialLoadingHelper","options","opts","getRandomFilterWidth","namespace","getPhrase","LanguageService","COLLAPSE_CHARACTER_COUNT","MAX_SEGMENT_LENGTH","BreadcrumbItem","React.forwardRef","props","ref","name","appLink","active","withBackIcon","trimmedName","title","jsx","jsxs","AppLink","SvgContainer","ChevronLeftSvg","SvgContainerSize","Breadcrumbs","breadcrumbs","isMobile","useMediaQuery","MediaQueryStrings","length","collapse","setCollapse","React.useState","shouldFocus","setShouldFocus","expandRef","React.useRef","React.useEffect","characterLength","prev","next","React.useLayoutEffect","_a","onClickExpand","Fragment","first","second","secondLast","last","rest","breadcrumb","idx","PartialBreadcrumbs","React.memo","numItems","width","SchoolVideoViewsView","fetchAsync","Flight.useGetFetchAsync","anonymiseUsers","useViewModel","ViewModelKeys","requestFilter","useGetRequestFilter","filterQueryParams","useGetAppLinkFilterParams","videoRequest","VideoHelper","video","Flight.useBasicFetch","config","ConfigRequests","heatmapAggregation","VideoViewsV2Requests","viewKey","PlayerRequests","MediaIdType","getRequest","cursor","fetchNext","individualHeatmaps","hasMore","isFetching","nextCursor","heatmapFirstPageCompleted","useInfiniteList","individualHeatmapUserIds","h","u","users","usersFirstPageCompleted","useGrowingBatchFetch","UserRequests","useHandleVideoError","useSetPageMetadata","useSetHeaderTitle","_b","useSetHeaderActions","useGetObjectHeaderActions","getInsightsUrl","currentAppLink","AppLinkHelper","videoId","videoRoute","MasterType","getAnonUser","e","user","viewers","playerLoaded","tableDataLoaded","AppChannels","Actions","styles","StreamsChartCardView","StreamsBarChartCardView","VideoViewsByRoleCardView","VideoEngagementOverlay","PartialVideoEngagementOverlay","EngagementTable","_c","getFilterParamsKey","InfiniteScrollFooter"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as a,O as h,bF as M,L as b,e as j,u as C,T as w,i as S,S as D,bD as r,ag as L,v as B}from"./app-BDrXtKwD.js";import{g as T,V as k,L as V}from"./bOC-mo3v.chunk.js";import{V as g}from"./SsbfqiCA.chunk.js";import{g as v,m as E}from"./Cu2SZCs_.chunk.js";const A="_image_1a110_1",F={image:A},I="shared.streamsBarChartCardEmptyState",f=b.encloseNamespace(I);function R(){return a.jsxs(h,{className:"flex-grow-1 justify-content-center",children:[a.jsx(h.Image,{src:M.EmptyStates.Shared.BagQuestionOrange,className:F.image}),a.jsx(h.Heading,{className:"h6",children:f("heading")}),a.jsx(h.Info,{className:"w-100",children:f("description")})]})}const G="shared.streamsBarChartCard";function z(e){const s=j(),o=C(e.videoId?g.videoAggregation(e.videoId,e.type,s):g.aggregation(e.type,s)),t=T(o.data,v(e.type)),c=t==null?void 0:t.reduce((i,d)=>i+d.y,0);return a.jsx("div",{className:"d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3",children:t?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex justify-content-between",children:[a.jsx("h2",{className:"h6 mb-1",children:a.jsx(w,{namespace:G,phrase:"totalViews",options:{views:c}})}),e.appLink&&e.appLinkText&&a.jsx(S,{appLink:e.appLink,className:"text-info",children:e.appLinkText})]}),t.length?a.jsx(D,{className:"position-relative",children:a.jsx("div",{className:"position-absolute w-100 pe-2",children:a.jsx(k,{data:t})})}):a.jsx(R,{})]}):a.jsx("div",{className:"partial-loading-background d-block w-50",children:" "})})}const x={MONTH:35,YEAR:365},u={day:"YYYY-MM-DD",month:"YYYY-MM",year:"YYYY"},y={day:"D MMM",month:"MMM",year:"YYYY"};function H(e){const s=r.diffBetween(e.end,e.start,"day");return s>x.YEAR?"year":s>x.MONTH?"month":"day"}function O(e,s){const o=[];let t=r.format(e.start,u[s]);for(;!r.isAfter(t,e.end,s);)o.push(t),t=r.format(r.add(t,1,s),u[s]);return o}function U(e,s,o){if(!e)return null;const t=H(s),c=O(s,t),i=new Map;e.forEach(n=>{const l=r.format(r.convertUTCToLocal(n.dateStreamed),u[t]),p=[L.System,"255"].includes(n.name)?null:n.name;let m=i.get(p);m||i.set(p,m=new Map);const N=m.get(l)??0;m.set(l,N+n.count)});const d=[...i.keys()];if(!d.length)return{categories:c.map(n=>r.format(n,y[t])),data:[]};const Y=v(o);return{categories:c.map(n=>r.format(n,y[t])),data:B.sortBy(d.map(n=>({name:Y(n),type:"line",data:c.map(l=>i.get(n).get(l)??0),color:E(n)})),"name")}}const _="reportsShared.streamsChartCard";function J(e){const s=j(),o=C(e.videoId?g.videoAggregationChart(e.videoId,e.type,s):g.aggregationChart(e.type,s)),t=U(o.data,s,e.type);return a.jsx("div",{className:"d-flex flex-column h-100 bg-white rounded p-3 position-relative",children:t?a.jsxs(a.Fragment,{children:[a.jsx("h2",{className:"position-absolute h6 mb-1",children:a.jsx(w,{namespace:_,phrase:"videoViews"})}),a.jsx(V,{categories:t.categories,data:t.data})]}):a.jsx("div",{className:"partial-loading-background w-25",children:" "})})}export{z as S,J as a};
|
|
2
|
+
//# sourceMappingURL=jhT3mG38.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jhT3mG38.chunk.js","sources":["../../src/shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState.tsx","../../src/shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView.tsx","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardViewUtils.ts","../../src/shared/views/overview-cards/streams-chart-card/StreamsChartCardView.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 = 'shared.streamsBarChartCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './total-views-by-group-card-empty-state.module.scss';\n\nexport function StreamsBarChartCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.BagQuestionOrange}\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 { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { VerticalBarChart } from 'shared/components/vertical-bar-chart/VerticalBarChart';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getCountByGroup } from 'shared/utils/BarChartByGroupUtils';\nimport { getLabelMapper } from 'shared/utils/UserUtils';\nimport { StreamsBarChartCardEmptyState } from 'shared/views/overview-cards/streams-bar-chart-card/empty-state/StreamsBarChartCardEmptyState';\n\nconst namespace = 'shared.streamsBarChartCard';\n\ninterface TotalViewsByGroupViewProps {\n type: StreamAggregationType;\n videoId?: string;\n appLink?: Core.AppLink;\n appLinkText?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsBarChartCardView(props: TotalViewsByGroupViewProps) {\n const requestFilter = useGetRequestFilter();\n\n const chartData = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregation(props.type, requestFilter));\n\n const grouped = getCountByGroup(\n chartData.data,\n getLabelMapper(props.type)\n );\n const total = grouped?.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 {grouped ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-1'><Text namespace={namespace} phrase='totalViews' options={{ views: total }} /></h2>\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n\n {grouped.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100 pe-2'>\n <VerticalBarChart data={grouped} />\n </div>\n </Scrollbars>\n : <StreamsBarChartCardEmptyState />\n }\n </>\n : <div className='partial-loading-background d-block 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 { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nimport { getLabelMapper, mapUserTypeToChartColour } 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 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: GroupedAnalyticsChartCount[],\n requestFilter: AnalyticsRequestFilter,\n type: StreamAggregationType\n): ChartData {\n if (!events) return null;\n\n const groupBy = getGroupBy(requestFilter);\n const fullDateRange = getFullDateRange(requestFilter, groupBy);\n \n const grouped = new Map<string, Map<string, number>>();\n \n events.forEach(ev => {\n const eventDate = DateHelper.format(DateHelper.convertUTCToLocal(ev.dateStreamed), DateFormats[groupBy]);\n \n // Bucketing System user data as Anonymous\n const name = [ UserGroup.System, '255' ].includes(ev.name) ? null : ev.name;\n\n let group = grouped.get(name);\n\n if (!group)\n grouped.set(name, group = new Map<string, number>);\n\n const oldCount = group.get(eventDate) ?? 0;\n group.set(eventDate, oldCount + ev.count);\n });\n\n const roles = [...grouped.keys()] as UserGroup[];\n\n if (!roles.length) return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data: []\n };\n\n const labelMapper = getLabelMapper(type);\n\n return {\n categories: fullDateRange.map(d => DateHelper.format(d, DisplayFormats[groupBy])),\n data:\n ArrayHelper.sortBy(roles.map(r => ({\n name: labelMapper(r),\n type: 'line',\n data: fullDateRange.map(d => grouped.get(r).get(d) ?? 0),\n color: mapUserTypeToChartColour(r)\n })), 'name')\n };\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsChartCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { StreamAggregationType } from 'libs/shared/apps/analytics/interfaces/StreamAggregationType';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { LineChart } from 'shared/components/line-chart/LineChart';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nimport { getChartData } from './StreamsChartCardViewUtils';\n\nconst namespace = 'reportsShared.streamsChartCard';\n\ninterface StreamsChartCardViewProps {\n type: StreamAggregationType;\n videoId?: string;\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StreamsChartCardView(props: StreamsChartCardViewProps) {\n const requestFilter = useGetRequestFilter();\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsChartCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregationChart(props.videoId, props.type, requestFilter) :\n VideoViewsV2Requests.aggregationChart(props.type, requestFilter));\n\n const chartData = getChartData(viewsByGroup.data, requestFilter, props.type);\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='videoViews' /></h2>\n <LineChart categories={chartData.categories} data={chartData.data} />\n </>\n : <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","StreamsBarChartCardEmptyState","jsxs","EmptyState","jsx","ImageUrls","styles","StreamsBarChartCardView","props","requestFilter","useGetRequestFilter","chartData","Flight.useBasicFetch","VideoViewsV2Requests","grouped","getCountByGroup","getLabelMapper","total","acc","group","Fragment","Text","AppLink","Scrollbars","VerticalBarChart","GroupByThresholds","DateFormats","DisplayFormats","getGroupBy","range","DateHelper","getFullDateRange","groupBy","currentDate","getChartData","events","type","fullDateRange","ev","eventDate","name","UserGroup","oldCount","roles","d","labelMapper","ArrayHelper","r","mapUserTypeToChartColour","StreamsChartCardView","viewsByGroup","LineChart"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lcnUAi0K.chunk.js","sources":["../../src/shared/hooks/UseGetExternalUrl.ts"],"sourcesContent":["import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { Product } from 'libs/shared/interfaces';\n\ntype ArgType = HashObject | string | number;\n\ntype ExternalUrlBuilder = (product: Product, ...args: ArgType[]) => string;\n\n/**\n * This should be updated to link to LaunchPad once it supports object links.\n */\nexport function useGetExternalUrl(urlBuilder: ExternalUrlBuilder): (...args: ArgType[]) => string {\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const primaryProduct = products.data?.find(p => p.id === ProductId.Primary);\n\n if (!primaryProduct)\n return;\n\n return args => urlBuilder(primaryProduct, args);\n}"],"names":["useGetExternalUrl","urlBuilder","primaryProduct","_a","Flight.useBasicFetch","ProductRequests","p","ProductId","args"],"mappings":"sDAcO,SAASA,EAAkBC,EAAgE,OAGhG,MAAMC,GAAiBC,EAFNC,EAAgCC,EAAgB,cAAc,EAE/C,OAAT,YAAAF,EAAe,QAAUG,EAAE,KAAOC,EAAU,SAEnE,GAAKL,EAGL,OAAOM,GAAQP,EAAWC,EAAgBM,CAAI,CAChD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{cr as E,r as p}from"./app-BDrXtKwD.js";var P=(function(){var o=function(r,e){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a])},o(r,e)};return function(r,e){o(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}})(),c="html",d="svg",g="http://www.w3.org/2000/svg",_=function(o,r){if(r===c)return o instanceof HTMLElement;if(r===d)return o instanceof SVGElement;throw new Error('Unrecognized element type "'+r+'" for validateElementType.')},v=function(o,r){var e={},t,n,a;if(o===c)a=document.createElement("div");else if(o===d)a=document.createElementNS(g,"g");else throw new Error('Invalid element type "'+o+'" for createPortalNode: must be "html" or "svg".');if(r&&typeof r=="object")for(var s=0,h=Object.entries(r.attributes);s<h.length;s++){var f=h[s],m=f[0],N=f[1];a.setAttribute(m,N)}var u={element:a,elementType:o,setPortalProps:function(i){e=i},getInitialPortalProps:function(){return e},mount:function(i,l){if(l!==n){if(u.unmount(),i!==t&&!_(i,o))throw new Error('Invalid element type for portal: "'+o+'" portalNodes must be used with '+o+" elements, but OutPortal is within <"+i.tagName+">.");i.replaceChild(u.element,l),t=i,n=l}},unmount:function(i){i&&i!==n||t&&n&&(t.replaceChild(n,u.element),t=void 0,n=void 0)}};return u},O=(function(o){P(r,o);function r(e){var t=o.call(this,e)||this;return t.addPropsChannel=function(){Object.assign(t.props.node,{setPortalProps:function(n){t.setState({nodeProps:n})}})},t.state={nodeProps:t.props.node.getInitialPortalProps()},t}return r.prototype.componentDidMount=function(){this.addPropsChannel()},r.prototype.componentDidUpdate=function(){this.addPropsChannel()},r.prototype.render=function(){var e=this,t=this.props,n=t.children,a=t.node;return E.createPortal(p.Children.map(n,function(s){return p.isValidElement(s)?p.cloneElement(s,e.state.nodeProps):s}),a.element)},r})(p.PureComponent),C=(function(o){P(r,o);function r(e){var t=o.call(this,e)||this;return t.placeholderNode=p.createRef(),t.passPropsThroughPortal(),t}return r.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},r.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},r.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},r.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},r.prototype.render=function(){return p.createElement("div",{ref:this.placeholderNode})},r})(p.PureComponent),w=v.bind(null,c);v.bind(null,d);export{O as I,C as O,w as c};
|
|
2
|
+
//# sourceMappingURL=mBxqWw8V.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mBxqWw8V.chunk.js","sources":["../../../../../node_modules/react-reverse-portal/dist/web/index.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n// Internally, the portalNode must be for either HTML or SVG elements\nvar ELEMENT_TYPE_HTML = 'html';\nvar ELEMENT_TYPE_SVG = 'svg';\n// ReactDOM can handle several different namespaces, but they're not exported publicly\n// https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/DOMNamespaces.js#L8-L10\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar validateElementType = function (domElement, elementType) {\n if (elementType === ELEMENT_TYPE_HTML) {\n return domElement instanceof HTMLElement;\n }\n if (elementType === ELEMENT_TYPE_SVG) {\n return domElement instanceof SVGElement;\n }\n throw new Error(\"Unrecognized element type \\\"\" + elementType + \"\\\" for validateElementType.\");\n};\n// This is the internal implementation: the public entry points set elementType to an appropriate value\nvar createPortalNode = function (elementType, options) {\n var initialProps = {};\n var parent;\n var lastPlaceholder;\n var element;\n if (elementType === ELEMENT_TYPE_HTML) {\n element = document.createElement('div');\n }\n else if (elementType === ELEMENT_TYPE_SVG) {\n element = document.createElementNS(SVG_NAMESPACE, 'g');\n }\n else {\n throw new Error(\"Invalid element type \\\"\" + elementType + \"\\\" for createPortalNode: must be \\\"html\\\" or \\\"svg\\\".\");\n }\n if (options && typeof options === \"object\") {\n for (var _i = 0, _a = Object.entries(options.attributes); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n element.setAttribute(key, value);\n }\n }\n var portalNode = {\n element: element,\n elementType: elementType,\n setPortalProps: function (props) {\n initialProps = props;\n },\n getInitialPortalProps: function () {\n return initialProps;\n },\n mount: function (newParent, newPlaceholder) {\n if (newPlaceholder === lastPlaceholder) {\n // Already mounted - noop.\n return;\n }\n portalNode.unmount();\n // To support SVG and other non-html elements, the portalNode's elementType needs to match\n // the elementType it's being rendered into\n if (newParent !== parent) {\n if (!validateElementType(newParent, elementType)) {\n throw new Error(\"Invalid element type for portal: \\\"\" + elementType + \"\\\" portalNodes must be used with \" + elementType + \" elements, but OutPortal is within <\" + newParent.tagName + \">.\");\n }\n }\n newParent.replaceChild(portalNode.element, newPlaceholder);\n parent = newParent;\n lastPlaceholder = newPlaceholder;\n },\n unmount: function (expectedPlaceholder) {\n if (expectedPlaceholder && expectedPlaceholder !== lastPlaceholder) {\n // Skip unmounts for placeholders that aren't currently mounted\n // They will have been automatically unmounted already by a subsequent mount()\n return;\n }\n if (parent && lastPlaceholder) {\n parent.replaceChild(lastPlaceholder, portalNode.element);\n parent = undefined;\n lastPlaceholder = undefined;\n }\n }\n };\n return portalNode;\n};\nvar InPortal = /** @class */ (function (_super) {\n __extends(InPortal, _super);\n function InPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.addPropsChannel = function () {\n Object.assign(_this.props.node, {\n setPortalProps: function (props) {\n // Rerender the child node here if/when the out portal props change\n _this.setState({ nodeProps: props });\n }\n });\n };\n _this.state = {\n nodeProps: _this.props.node.getInitialPortalProps(),\n };\n return _this;\n }\n InPortal.prototype.componentDidMount = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.componentDidUpdate = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, node = _a.node;\n return ReactDOM.createPortal(React.Children.map(children, function (child) {\n if (!React.isValidElement(child))\n return child;\n return React.cloneElement(child, _this.state.nodeProps);\n }), node.element);\n };\n return InPortal;\n}(React.PureComponent));\nvar OutPortal = /** @class */ (function (_super) {\n __extends(OutPortal, _super);\n function OutPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.placeholderNode = React.createRef();\n _this.passPropsThroughPortal();\n return _this;\n }\n OutPortal.prototype.passPropsThroughPortal = function () {\n var propsForTarget = Object.assign({}, this.props, { node: undefined });\n this.props.node.setPortalProps(propsForTarget);\n };\n OutPortal.prototype.componentDidMount = function () {\n var node = this.props.node;\n this.currentPortalNode = node;\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentDidUpdate = function () {\n // We re-mount on update, just in case we were unmounted (e.g. by\n // a second OutPortal, which has now been removed)\n var node = this.props.node;\n // If we're switching portal nodes, we need to clean up the current one first.\n if (this.currentPortalNode && node !== this.currentPortalNode) {\n this.currentPortalNode.unmount(this.placeholderNode.current);\n this.currentPortalNode.setPortalProps({});\n this.currentPortalNode = node;\n }\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentWillUnmount = function () {\n var node = this.props.node;\n node.unmount(this.placeholderNode.current);\n node.setPortalProps({});\n };\n OutPortal.prototype.render = function () {\n // Render a placeholder to the DOM, so we can get a reference into\n // our location in the DOM, and swap it out for the portaled node.\n // A <div> placeholder works fine even for SVG.\n return React.createElement(\"div\", { ref: this.placeholderNode });\n };\n return OutPortal;\n}(React.PureComponent));\nvar createHtmlPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_HTML);\nvar createSvgPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_SVG);\nexport { createHtmlPortalNode, createSvgPortalNode, InPortal, OutPortal, };\n//# sourceMappingURL=index.js.map"],"names":["__extends","extendStatics","d","b","p","__","ELEMENT_TYPE_HTML","ELEMENT_TYPE_SVG","SVG_NAMESPACE","validateElementType","domElement","elementType","createPortalNode","options","initialProps","parent","lastPlaceholder","element","_i","_a","_b","key","value","portalNode","props","newParent","newPlaceholder","expectedPlaceholder","InPortal","_super","_this","children","node","ReactDOM.createPortal","React.Children","child","React.isValidElement","React.cloneElement","React.PureComponent","OutPortal","React.createRef","propsForTarget","placeholder","React.createElement","createHtmlPortalNode"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{j as e,i as o,a5 as m,h as d,a0 as u,bR as x,bS as p}from"./app-BDrXtKwD.js";import{B as b,a as f}from"./H13OLF2T.chunk.js";const S="_pillTabSelector_a6f6x_1",j="_tab_a6f6x_4",k="_minWidth_a6f6x_21",y="_radiusSmall_a6f6x_24",_="_tabLink_a6f6x_35",n={pillTabSelector:S,tab:j,minWidth:k,radiusSmall:y,tabLink:_};function c(t){return e.jsxs(e.Fragment,{children:[!!t.tab.svg&&e.jsx("div",{className:t.tab.name?"pe-1":"",children:e.jsx(d,{svg:t.tab.svg})}),t.tab.name,typeof t.tab.count=="number"&&e.jsx("div",{className:"ps-2",children:e.jsx(b,{type:f.Count,data:t.tab.count})})]})}r.defaultProps={borderRadius:"lg"};function r(t){function s(a){a.active||!a.onSelect||(a.onSelect(),a.analyticsData&&a.analyticsOptions&&u.logUserAction(a.analyticsData,a.analyticsOptions))}return e.jsx("nav",{className:t.className??"",ref:t.containerRef,children:e.jsx("ul",{className:`
|
|
2
|
+
list-unstyled d-inline-block m-0 ${n.pillTabSelector}
|
|
3
|
+
${t.borderRadius?n.radiusSmall:""}
|
|
4
|
+
${t.listClassName}
|
|
5
|
+
`,children:t.tabs.map((a,i)=>e.jsx("li",{className:`
|
|
6
|
+
p-0 ${n.tab} ${a.active?"btn btn-dark":"btn btn-outline-dark"}
|
|
7
|
+
${a.name?n.minWidth:""} ${a.className}
|
|
8
|
+
`,children:a.appLink?e.jsx(o,{appLink:a.appLink,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,className:`
|
|
9
|
+
cursor-pointer d-flex align-items-center justify-content-center
|
|
10
|
+
text-decoration-none text-reset px-2 text-nowrap ${n.tabLink}
|
|
11
|
+
`,children:e.jsx(c,{tab:a})}):e.jsx(m,{className:`
|
|
12
|
+
cursor-pointer d-flex align-items-center justify-content-center
|
|
13
|
+
text-decoration-none text-reset px-2 text-nowrap ${n.tabLink}
|
|
14
|
+
`,onClick:()=>s(a),children:e.jsx(c,{tab:a})})},i))})})}function v(t){const s=t.items.map(a=>{var i,l;return{name:a.label,onSelect:()=>x.trigger(a.appLink),active:a.appLink.action===((l=(i=p.getCurrentRoute())==null?void 0:i.appLink)==null?void 0:l.action)}});return e.jsx(r,{className:"pb-3",tabs:s})}export{v as S};
|
|
15
|
+
//# sourceMappingURL=nR79RHo_.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nR79RHo_.chunk.js","sources":["../../../../libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","../../src/shared/components/sub-nav/SubNav.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.module.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svg && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svg={props.tab.svg} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svg?: SvgIcon;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { ContextService } from 'libs/shared/services/ContextService';\nexport interface SubNavItem {\n label: string;\n appLink: Core.AppLink;\n}\n\ninterface SubNavProps {\n items: SubNavItem[];\n}\n\nexport function SubNav(props: SubNavProps): JSX.Element {\n const tabs: PillTab[] = props.items.map(i => ({\n name: i.label,\n onSelect: () => Core.AppLinkHelper.trigger(i.appLink),\n active: i.appLink.action === ContextService.getCurrentRoute()?.appLink?.action\n }));\n\n return <PillTabSelector className='pb-3' tabs={tabs} />;\n}"],"names":["TabContents","props","jsxs","Fragment","jsx","SvgContainer","Badge","BadgeType","PillTabSelector","onSelectTab","tab","AnalyticsHelper","styles","index","AppLink","DivButton","SubNav","tabs","i","Core.AppLinkHelper","_b","_a","ContextService"],"mappings":"6TAqBA,SAASA,EAAYC,EAAsC,CACzD,OACEC,EAAAA,KAAAC,WAAA,CACG,SAAA,CAAA,CAAC,CAACF,EAAM,IAAI,KACXG,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAM,IAAI,KAAO,OAAS,GACxC,SAAAG,EAAAA,IAACC,EAAA,CAAa,IAAKJ,EAAM,IAAI,IAAK,EACpC,EAGDA,EAAM,IAAI,KAEV,OAAQA,EAAM,IAAI,OAAW,UAC5BG,EAAAA,IAAC,OAAI,UAAU,OACb,SAAAA,EAAAA,IAACE,EAAA,CAAM,KAAMC,EAAU,MAAO,KAAMN,EAAM,IAAI,MAAO,CAAA,CACvD,CAAA,EAEJ,CAEJ,CA0BAO,EAAgB,aAAe,CAC7B,aAAc,IAChB,EAEO,SAASA,EAAgBP,EAA0C,CACxE,SAASQ,EAAYC,EAAoB,CACnCA,EAAI,QAAU,CAACA,EAAI,WAGvBA,EAAI,SAAA,EAEAA,EAAI,eAAiBA,EAAI,kBAC3BC,EAAgB,cAAcD,EAAI,cAAeA,EAAI,gBAAgB,EACzE,CAEA,OACEN,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAM,WAAa,GAAI,IAAKA,EAAM,aAChD,SAAAG,EAAAA,IAAC,KAAA,CAAG,UAAW;AAAA,2CACsBQ,EAAO,eAAe;AAAA,UACvDX,EAAM,aAAeW,EAAO,YAAc,EAAE;AAAA,UAC5CX,EAAM,aAAa;AAAA,QAEpB,SAAAA,EAAM,KAAK,IAAI,CAACS,EAAKG,IAElBT,EAAAA,IAAC,KAAA,CACC,UAAW;AAAA,sBACHQ,EAAO,GAAG,IAAIF,EAAI,OAAS,eAAiB,sBAAsB;AAAA,kBACtEA,EAAI,KAAOE,EAAO,SAAW,EAAE,IAAIF,EAAI,SAAS;AAAA,gBAInD,WAAI,QACHN,EAAAA,IAACU,EAAA,CACC,QAASJ,EAAI,QACb,cAAeA,EAAI,cACnB,iBAAkBA,EAAI,iBACtB,UAAW;AAAA;AAAA,uEAE0CE,EAAO,OAAO;AAAA,oBAGnE,SAAAR,EAAAA,IAACJ,GAAY,IAAAU,CAAA,CAAU,CAAA,CAAA,EAGzBN,EAAAA,IAACW,EAAA,CACC,UAAW;AAAA;AAAA,uEAE0CH,EAAO,OAAO;AAAA,oBAEnE,QAAS,IAAMH,EAAYC,CAAG,EAE9B,SAAAN,EAAAA,IAACJ,GAAY,IAAAU,CAAA,CAAU,CAAA,CAAA,CACzB,EAvBGG,CAAA,CA2BV,EACH,EACF,CAEJ,CC9GO,SAASG,EAAOf,EAAiC,CACtD,MAAMgB,EAAkBhB,EAAM,MAAM,IAAIiB,GAAA,SAAM,OAC5C,KAAMA,EAAE,MACR,SAAU,IAAMC,EAAmB,QAAQD,EAAE,OAAO,EACpD,OAAQA,EAAE,QAAQ,WAAWE,GAAAC,EAAAC,EAAe,gBAAA,IAAf,YAAAD,EAAkC,UAAlC,YAAAD,EAA2C,OAAA,EACxE,EAEF,OAAOhB,EAAAA,IAACI,EAAA,CAAgB,UAAU,OAAO,KAAAS,CAAA,CAAY,CACvD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function y(o,r,u){if(!r)return o;let s=`${o}:${r.start}:${r.end}`;const d=Array.isArray(r.userId)?r.userId.sort().join(":"):r.userId,n=Array.isArray(r.groupId)?r.groupId.sort().join(":"):r.groupId,I=Array.isArray(r.customerId)?r.customerId.sort().join(":"):r.customerId;return d&&(s+=`:${d}`),n&&(s+=`:${n}`),I&&(s+=`:${I}`),u&&(s+=`:${u}`),s}export{y as g};
|
|
2
|
+
//# sourceMappingURL=sFV5nxD4.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sFV5nxD4.chunk.js","sources":["../../../../libs/shared/src/utils/AnalyticsRequestUtils.ts"],"sourcesContent":["import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, extra?: string): string {\n if (!filter)\n return baseKey;\n\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n const customerIdKey = Array.isArray(filter.customerId) ? filter.customerId.sort().join(':') : filter.customerId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (customerIdKey)\n key += `:${customerIdKey}`;\n\n if (extra)\n key += `:${extra}`;\n\n return key;\n}"],"names":["getAnalyticsRequestKey","baseKey","filter","extra","key","userIdKey","groupIdKey","customerIdKey"],"mappings":"AAEO,SAASA,EAAuBC,EAAiBC,EAAgCC,EAAwB,CAC9G,GAAI,CAACD,EACH,OAAOD,EAET,IAAIG,EAAM,GAAGH,CAAO,IAAIC,EAAO,KAAK,IAAIA,EAAO,GAAG,GAElD,MAAMG,EAAY,MAAM,QAAQH,EAAO,MAAM,EAAIA,EAAO,OAAO,KAAA,EAAO,KAAK,GAAG,EAAIA,EAAO,OACnFI,EAAa,MAAM,QAAQJ,EAAO,OAAO,EAAIA,EAAO,QAAQ,KAAA,EAAO,KAAK,GAAG,EAAIA,EAAO,QACtFK,EAAgB,MAAM,QAAQL,EAAO,UAAU,EAAIA,EAAO,WAAW,KAAA,EAAO,KAAK,GAAG,EAAIA,EAAO,WAErG,OAAIG,IACFD,GAAO,IAAIC,CAAS,IAElBC,IACFF,GAAO,IAAIE,CAAU,IAEnBC,IACFH,GAAO,IAAIG,CAAa,IAEtBJ,IACFC,GAAO,IAAID,CAAK,IAEXC,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p,ar as m,n as y,j as s,w as h,L as g,T as x,a4 as a,as as v,a0 as P,at as S,au as T,av as f,a3 as d}from"./app-BDrXtKwD.js";import{u as j}from"./CVftTaOh.chunk.js";const n="reports.removeLogo",o=g.encloseNamespace(n);function L(e){const[i,r]=p.useState(!1),u=m(),c=j(),t=y();async function l(){r(!0);try{await u(v.removeLogo(e.customerId,e.logoId)),c.success(o(t?"successTertiary":"success")),P.logUserAction({id:e.logoId},{actionType:d.Remove,entity:f.Logo,workflowPhase:T.Complete,location:S.Popup}),e.closePopup()}catch{c.success(o(t?"errorTertiary":"error")),r(!1)}}return s.jsxs(h,{closePopup:e.closePopup,title:o(t?"removeSchoolCrestTertiary":"removeSchoolCrest"),children:[s.jsx("p",{children:s.jsx(x,{namespace:n,phrase:t?"areYouSureTertiary":"areYouSure"})}),s.jsxs(a,{children:[s.jsx(a.Cancel,{onClick:e.closePopup}),s.jsx(a.Submit,{onClick:l,text:o("remove"),showSpinner:i,variant:"danger"})]})]})}export{L as RemoveLogoView};
|
|
2
|
+
//# sourceMappingURL=t5MCaEYl.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"t5MCaEYl.chunk.js","sources":["../../src/shared/views/remove-logo/RemoveLogoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { LogoRequests } from 'shared/flight-requests/LogoRequests';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\n\nconst namespace = 'reports.removeLogo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RemoveLogoViewProps extends PopupViewProps {\n logoId: string;\n customerId: string;\n}\n\nexport function RemoveLogoView(props: RemoveLogoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n const isTertiary = useIsTertiary();\n\n async function onClickRemove(): Promise<void> {\n setShowSpinner(true);\n\n try {\n await fetchAsync(LogoRequests.removeLogo(props.customerId, props.logoId));\n\n alerts.success(getPhrase(isTertiary ? 'successTertiary' : 'success'));\n\n AnalyticsHelper.logUserAction({\n id: props.logoId\n }, {\n actionType: UserAction.Remove,\n entity: EntityType.Logo,\n workflowPhase: WorkflowPhase.Complete,\n location: LocationContext.Popup\n });\n\n props.closePopup();\n } catch {\n alerts.success(getPhrase(isTertiary ? 'errorTertiary' : 'error'));\n setShowSpinner(false);\n }\n }\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={isTertiary ? getPhrase('removeSchoolCrestTertiary') : getPhrase('removeSchoolCrest')}\n >\n <p><Text namespace={namespace} phrase={isTertiary ? 'areYouSureTertiary' : 'areYouSure'} /></p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n onClick={onClickRemove}\n text={getPhrase('remove')}\n showSpinner={showSpinner}\n variant='danger'\n />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","RemoveLogoView","props","showSpinner","setShowSpinner","React","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","isTertiary","useIsTertiary","onClickRemove","LogoRequests","AnalyticsHelper","UserAction","EntityType","WorkflowPhase","LocationContext","jsxs","Popup","jsx","Text","PopupButtons"],"mappings":"4KAiBA,MAAMA,EAAY,qBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAOrD,SAASG,EAAeC,EAAyC,CACtE,KAAM,CAAEC,EAAaC,CAAe,EAAIC,EAAM,SAAS,EAAK,EAEtDC,EAAaC,EAAO,EAEpBC,EAASC,EAAA,EACTC,EAAaC,EAAA,EAEnB,eAAeC,GAA+B,CAC5CR,EAAe,EAAI,EAEnB,GAAI,CACF,MAAME,EAAWO,EAAa,WAAWX,EAAM,WAAYA,EAAM,MAAM,CAAC,EAExEM,EAAO,QAAQT,EAAUW,EAAa,kBAAoB,SAAS,CAAC,EAEpEI,EAAgB,cAAc,CAC5B,GAAIZ,EAAM,MAAA,EACT,CACD,WAAYa,EAAW,OACvB,OAAQC,EAAW,KACnB,cAAeC,EAAc,SAC7B,SAAUC,EAAgB,KAAA,CAC3B,EAEDhB,EAAM,WAAA,CACR,MAAQ,CACNM,EAAO,QAAQT,EAAUW,EAAa,gBAAkB,OAAO,CAAC,EAChEN,EAAe,EAAK,CACtB,CACF,CAEA,OACEe,EAAAA,KAACC,EAAA,CACC,WAAYlB,EAAM,WAClB,MAAoBH,EAAbW,EAAuB,4BAAyC,mBAAd,EAEzD,SAAA,CAAAW,EAAAA,IAAC,IAAA,CAAE,eAACC,EAAA,CAAK,UAAAxB,EAAsB,OAAQY,EAAa,qBAAuB,aAAc,CAAA,CAAE,SAE1Fa,EAAA,CACC,SAAA,CAAAF,EAAAA,IAACE,EAAa,OAAb,CAAoB,QAASrB,EAAM,WAAY,EAChDmB,EAAAA,IAACE,EAAa,OAAb,CACC,QAASX,EACT,KAAMb,EAAU,QAAQ,EACxB,YAAAI,EACA,QAAQ,QAAA,CAAA,CACV,CAAA,CACF,CAAA,CAAA,CAAA,CAGN"}
|