@clickview/reports 0.69.1-dev.1 → 0.70.0-rc.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/bundles.json +3 -2
- package/dist/css/1103-reports-d3d5cc00db.chunk.css +31 -0
- package/dist/css/1456-reports-4a5871a275.chunk.css +9 -0
- package/dist/css/1648-reports-012456ba48.chunk.css +2 -0
- package/dist/css/209-reports-c33663a53e.chunk.css +11 -0
- package/dist/css/2150-reports-84ec0e9770.chunk.css +4 -0
- package/dist/css/2217-reports-74dec0a3fe.chunk.css +32 -0
- package/dist/css/2997-reports-e08318f14b.chunk.css +9 -0
- package/dist/css/2999-reports-f190450b10.chunk.css +60 -0
- package/dist/css/4582-reports-d3d5cc00db.chunk.css +31 -0
- package/dist/css/5304-reports-22c2d8d635.chunk.css +9 -0
- package/dist/css/6007-reports-5ba77c55a3.chunk.css +8 -0
- package/dist/css/6031-reports-d558076846.chunk.css +6 -0
- package/dist/css/6356-reports-8c5b220bf6.chunk.css +1 -0
- package/dist/css/6811-reports-baf2e97e71.chunk.css +35 -0
- package/dist/css/7723-reports-8c6d3c414b.chunk.css +4 -0
- package/dist/css/7747-reports-2d9e191b5a.chunk.css +12 -0
- package/dist/css/8087-reports-cfe23ba648.chunk.css +10 -0
- package/dist/css/8294-reports-c797263ac2.chunk.css +1 -0
- package/dist/css/8418-reports-0ada3f3ce2.chunk.css +29 -0
- package/dist/css/8450-reports-06493dfde5.chunk.css +9 -0
- package/dist/css/8622-reports-9e8970cc7f.chunk.css +8 -0
- package/dist/css/8839-reports-8e46644943.chunk.css +1 -0
- package/dist/css/8989-reports-92b4f1dde8.chunk.css +8 -0
- package/dist/css/9059-reports-a2ac630ebc.chunk.css +35 -0
- package/dist/css/9285-reports-5b9af8380f.chunk.css +13 -0
- package/dist/css/9661-reports-7435e94a85.chunk.css +4 -0
- package/dist/css/9822-reports-a1db1900c7.chunk.css +8 -0
- package/dist/css/9949-reports-f22fa2b407.chunk.css +15 -0
- package/dist/css/reports-app-b4c4ec5632.css +32 -0
- package/dist/languages/en.json +1 -0
- package/dist/scripts/1103-d77d388f5b-reports.chunk.js +1 -0
- package/dist/scripts/1177-7cf7817e74-reports.chunk.js +1 -0
- package/dist/scripts/1456-019d93e620-reports.chunk.js +1 -0
- package/dist/scripts/1648-e892604f5a-reports.chunk.js +1 -0
- package/dist/scripts/1934-ca8497c768-reports.chunk.js +2 -0
- package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +9 -0
- package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +1 -0
- package/dist/scripts/209-79eb8be706-reports.chunk.js +1 -0
- package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +1 -0
- package/dist/scripts/2217-15fa35197a-reports.chunk.js +1 -0
- package/dist/scripts/2476-a700f69dc4-reports.chunk.js +1 -0
- package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +1 -0
- package/dist/scripts/2997-62d81c3442-reports.chunk.js +1 -0
- package/dist/scripts/2999-c1890ca868-reports.chunk.js +2 -0
- package/dist/scripts/2999-c1890ca868-reports.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/312-8b006e92ff-reports.chunk.js +1 -0
- package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +1 -0
- package/dist/scripts/4372-26474a3318-reports.chunk.js +1 -0
- package/dist/scripts/438-b444dfb8c6-reports.chunk.js +1 -0
- package/dist/scripts/4582-230f130f41-reports.chunk.js +1 -0
- package/dist/scripts/4752-db4247883d-reports.chunk.js +2 -0
- package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +118 -0
- package/dist/scripts/4979-7e14b09f33-reports.chunk.js +1 -0
- package/dist/scripts/5051-72c53737e2-reports.chunk.js +1 -0
- package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +1 -0
- package/dist/scripts/5173-cce3b37672-reports.chunk.js +1 -0
- package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +1 -0
- package/dist/scripts/5304-d5674b32b4-reports.chunk.js +1 -0
- package/dist/scripts/5802-2125536755-reports.chunk.js +1 -0
- package/dist/scripts/6007-673706aa31-reports.chunk.js +1 -0
- package/dist/scripts/6031-b1c60cc409-reports.chunk.js +1 -0
- package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +1 -0
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +2 -0
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/6198-189ddde870-reports.chunk.js +1 -0
- package/dist/scripts/6356-a1b313c73e-reports.chunk.js +1 -0
- package/dist/scripts/645-e8b19128e5-reports.chunk.js +1 -0
- package/dist/scripts/6545-f07bcd318a-reports.chunk.js +1 -0
- package/dist/scripts/6811-40ded4c089-reports.chunk.js +1 -0
- package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +1 -0
- package/dist/scripts/7562-748e60c3fc-reports.chunk.js +1 -0
- package/dist/scripts/7709-82750ee317-reports.chunk.js +1 -0
- package/dist/scripts/7723-1799f5aa26-reports.chunk.js +1 -0
- package/dist/scripts/7747-d34db3ff10-reports.chunk.js +2 -0
- package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +1 -0
- package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +1 -0
- package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +1 -0
- package/dist/scripts/8418-9f96caf039-reports.chunk.js +1 -0
- package/dist/scripts/8450-f2d5d99614-reports.chunk.js +1 -0
- package/dist/scripts/8591-4811082ab0-reports.chunk.js +1 -0
- package/dist/scripts/8622-ee045574e2-reports.chunk.js +1 -0
- package/dist/scripts/8839-711793a97f-reports.chunk.js +1 -0
- package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +1 -0
- package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +1 -0
- package/dist/scripts/9162-7ffc692736-reports.chunk.js +1 -0
- package/dist/scripts/9285-ecddd01efb-reports.chunk.js +1 -0
- package/dist/scripts/9590-41bb23ae71-reports.chunk.js +1 -0
- package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +1 -0
- package/dist/scripts/9661-2dee4c3417-reports.chunk.js +1 -0
- package/dist/scripts/9822-621fac26e6-reports.chunk.js +1 -0
- package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +1 -0
- package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +1 -0
- package/dist/scripts/bundle-44f8e893eb.min.js +2 -0
- package/dist/scripts/bundle-44f8e893eb.min.js.LICENSE.txt +108 -0
- package/dist/scripts/polyfills-3db3f009d4.min.js +1 -0
- package/package.json +3 -5
- package/typings/utils/imports.d.ts +1 -1
- 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/css/1VpVng8x.chunk.css +0 -1
- package/dist/css/BBwBgFf_.chunk.css +0 -1
- package/dist/css/BDijM1kt.chunk.css +0 -1
- package/dist/css/BMPwvOki.chunk.css +0 -1
- package/dist/css/BNt45Kgy.chunk.css +0 -1
- package/dist/css/BSGhUWzl.chunk.css +0 -1
- package/dist/css/BZ3_uhDP.chunk.css +0 -1
- package/dist/css/BaadNO4A.chunk.css +0 -1
- package/dist/css/BdUNjJqp.chunk.css +0 -1
- package/dist/css/BdeI0FAV.chunk.css +0 -1
- package/dist/css/BxcMGr8Y.chunk.css +0 -1
- package/dist/css/ByuL_xKJ.chunk.css +0 -1
- package/dist/css/C-A0Pj_7.chunk.css +0 -1
- package/dist/css/C4jMfPWU.chunk.css +0 -1
- package/dist/css/C7XoyEPr.chunk.css +0 -1
- package/dist/css/C8sxda3R.chunk.css +0 -1
- package/dist/css/CD1qrI1T.chunk.css +0 -1
- package/dist/css/CFO--d_R.chunk.css +0 -1
- package/dist/css/CX9nw8t8.chunk.css +0 -1
- package/dist/css/C_qGRdC2.chunk.css +0 -1
- package/dist/css/CdC6ugQR.chunk.css +0 -1
- package/dist/css/ClRRGXPb.chunk.css +0 -1
- package/dist/css/Cr1bwtZG.chunk.css +0 -1
- package/dist/css/DBlPz5Fw.chunk.css +0 -1
- package/dist/css/DDnpOnVB.chunk.css +0 -1
- package/dist/css/DFZQCLLg.chunk.css +0 -1
- package/dist/css/DJwAbl6l.chunk.css +0 -1
- package/dist/css/DWjg_0sz.chunk.css +0 -1
- package/dist/css/DYV9jjVn.chunk.css +0 -1
- package/dist/css/Dgeh4AqU.chunk.css +0 -9
- package/dist/css/DlOtoSz0.chunk.css +0 -1
- package/dist/css/DlxOgKUu.chunk.css +0 -1
- package/dist/css/DwgaDUzz.chunk.css +0 -1
- package/dist/css/FPQ_LmXH.chunk.css +0 -1
- package/dist/css/H09rC9gw.chunk.css +0 -1
- package/dist/css/LAFr2dPT.chunk.css +0 -1
- package/dist/css/Pg1TlYG6.chunk.css +0 -1
- package/dist/css/PsQn3-kb.chunk.css +0 -1
- package/dist/css/alkEuPrr.chunk.css +0 -1
- package/dist/css/k4DgCj_g.chunk.css +0 -1
- package/dist/en.json +0 -1
- package/dist/scripts/5JDMPiCK.chunk.js +0 -2
- package/dist/scripts/5JDMPiCK.chunk.js.map +0 -1
- package/dist/scripts/5O9SdVRZ.chunk.js +0 -2
- package/dist/scripts/5O9SdVRZ.chunk.js.map +0 -1
- package/dist/scripts/B8i2s45X.chunk.js +0 -2
- package/dist/scripts/B8i2s45X.chunk.js.map +0 -1
- package/dist/scripts/BBOfq9my.chunk.js +0 -2
- package/dist/scripts/BBOfq9my.chunk.js.map +0 -1
- package/dist/scripts/BE7zUNFh.chunk.js +0 -3
- package/dist/scripts/BE7zUNFh.chunk.js.map +0 -1
- package/dist/scripts/BIbP_ulq.chunk.js +0 -380
- package/dist/scripts/BIbP_ulq.chunk.js.map +0 -1
- package/dist/scripts/BJe4D9vd.chunk.js +0 -2
- package/dist/scripts/BJe4D9vd.chunk.js.map +0 -1
- package/dist/scripts/BKx5S6xk.chunk.js +0 -2
- package/dist/scripts/BKx5S6xk.chunk.js.map +0 -1
- package/dist/scripts/BMba67Uf.chunk.js +0 -2
- package/dist/scripts/BMba67Uf.chunk.js.map +0 -1
- package/dist/scripts/BUM8Ub4p.chunk.js +0 -2
- package/dist/scripts/BUM8Ub4p.chunk.js.map +0 -1
- package/dist/scripts/BW-tzVdx.chunk.js +0 -2
- package/dist/scripts/BW-tzVdx.chunk.js.map +0 -1
- package/dist/scripts/B_1LOG5E.chunk.js +0 -2
- package/dist/scripts/B_1LOG5E.chunk.js.map +0 -1
- package/dist/scripts/BaHk6QZB.chunk.js +0 -2
- package/dist/scripts/BaHk6QZB.chunk.js.map +0 -1
- package/dist/scripts/Bbpuxobz.chunk.js +0 -2
- package/dist/scripts/Bbpuxobz.chunk.js.map +0 -1
- package/dist/scripts/BfG3wCTD.chunk.js +0 -2
- package/dist/scripts/BfG3wCTD.chunk.js.map +0 -1
- package/dist/scripts/BfkzHBdb.chunk.js +0 -2
- package/dist/scripts/BfkzHBdb.chunk.js.map +0 -1
- package/dist/scripts/BiDX0yuI.chunk.js +0 -2
- package/dist/scripts/BiDX0yuI.chunk.js.map +0 -1
- package/dist/scripts/BkcNwg7K.chunk.js +0 -2
- package/dist/scripts/BkcNwg7K.chunk.js.map +0 -1
- package/dist/scripts/BlAGsOOw.chunk.js +0 -2
- package/dist/scripts/BlAGsOOw.chunk.js.map +0 -1
- package/dist/scripts/BmScDBcl.chunk.js +0 -2
- package/dist/scripts/BmScDBcl.chunk.js.map +0 -1
- package/dist/scripts/BnqNywwJ.chunk.js +0 -2
- package/dist/scripts/BnqNywwJ.chunk.js.map +0 -1
- package/dist/scripts/BrLXFCMV.chunk.js +0 -2
- package/dist/scripts/BrLXFCMV.chunk.js.map +0 -1
- package/dist/scripts/BsFynggy.chunk.js +0 -2
- package/dist/scripts/BsFynggy.chunk.js.map +0 -1
- package/dist/scripts/Bt3gUzzG.chunk.js +0 -2
- package/dist/scripts/Bt3gUzzG.chunk.js.map +0 -1
- package/dist/scripts/BuHHZnEg.chunk.js +0 -2
- package/dist/scripts/BuHHZnEg.chunk.js.map +0 -1
- package/dist/scripts/ByllnMKt.chunk.js +0 -2
- package/dist/scripts/ByllnMKt.chunk.js.map +0 -1
- package/dist/scripts/BzBFC5UE.chunk.js +0 -2
- package/dist/scripts/BzBFC5UE.chunk.js.map +0 -1
- package/dist/scripts/C4382UCA.chunk.js +0 -2
- package/dist/scripts/C4382UCA.chunk.js.map +0 -1
- package/dist/scripts/C6H2bU7H.chunk.js +0 -2
- package/dist/scripts/C6H2bU7H.chunk.js.map +0 -1
- package/dist/scripts/C6eAAaNL.chunk.js +0 -2
- package/dist/scripts/C6eAAaNL.chunk.js.map +0 -1
- package/dist/scripts/CAh5UtFh.chunk.js +0 -2
- package/dist/scripts/CAh5UtFh.chunk.js.map +0 -1
- package/dist/scripts/CFIWZ5KT.chunk.js +0 -2
- package/dist/scripts/CFIWZ5KT.chunk.js.map +0 -1
- package/dist/scripts/CKLfLzhr.chunk.js +0 -34
- package/dist/scripts/CKLfLzhr.chunk.js.map +0 -1
- package/dist/scripts/COgPEQMR.chunk.js +0 -2
- package/dist/scripts/COgPEQMR.chunk.js.map +0 -1
- package/dist/scripts/CRWOsqvB.chunk.js +0 -2
- package/dist/scripts/CRWOsqvB.chunk.js.map +0 -1
- package/dist/scripts/CU-I5G45.chunk.js +0 -2
- package/dist/scripts/CU-I5G45.chunk.js.map +0 -1
- package/dist/scripts/CV5ioe9U.chunk.js +0 -2
- package/dist/scripts/CV5ioe9U.chunk.js.map +0 -1
- package/dist/scripts/CW7x8M-z.chunk.js +0 -2
- package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
- package/dist/scripts/CX5q-0jT.chunk.js +0 -2
- package/dist/scripts/CX5q-0jT.chunk.js.map +0 -1
- package/dist/scripts/CXK1uNgx.chunk.js +0 -2
- package/dist/scripts/CXK1uNgx.chunk.js.map +0 -1
- package/dist/scripts/CXhesQTd.chunk.js +0 -2
- package/dist/scripts/CXhesQTd.chunk.js.map +0 -1
- package/dist/scripts/CaiGBx50.chunk.js +0 -2
- package/dist/scripts/CaiGBx50.chunk.js.map +0 -1
- package/dist/scripts/CbmUUNB4.chunk.js +0 -2
- package/dist/scripts/CbmUUNB4.chunk.js.map +0 -1
- package/dist/scripts/CdoC9Mtd.chunk.js +0 -2
- package/dist/scripts/CdoC9Mtd.chunk.js.map +0 -1
- package/dist/scripts/CdzMtbgC.chunk.js +0 -2
- package/dist/scripts/CdzMtbgC.chunk.js.map +0 -1
- package/dist/scripts/Cl51qIgL.chunk.js +0 -2
- package/dist/scripts/Cl51qIgL.chunk.js.map +0 -1
- package/dist/scripts/ClLzLF-_.chunk.js +0 -2
- package/dist/scripts/ClLzLF-_.chunk.js.map +0 -1
- package/dist/scripts/ClcYw2ra.chunk.js +0 -42
- package/dist/scripts/ClcYw2ra.chunk.js.map +0 -1
- package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
- package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
- package/dist/scripts/CpwEUwsc.chunk.js +0 -2
- package/dist/scripts/CpwEUwsc.chunk.js.map +0 -1
- package/dist/scripts/CqSaPgvV.chunk.js +0 -2
- package/dist/scripts/CqSaPgvV.chunk.js.map +0 -1
- package/dist/scripts/CqyCLTzN.chunk.js +0 -2
- package/dist/scripts/CqyCLTzN.chunk.js.map +0 -1
- package/dist/scripts/CrlegiVC.chunk.js +0 -2
- package/dist/scripts/CrlegiVC.chunk.js.map +0 -1
- package/dist/scripts/CsD4Xb6n.chunk.js +0 -2
- package/dist/scripts/CsD4Xb6n.chunk.js.map +0 -1
- package/dist/scripts/Ct187YvN.chunk.js +0 -2
- package/dist/scripts/Ct187YvN.chunk.js.map +0 -1
- package/dist/scripts/CwyVC768.chunk.js +0 -2
- package/dist/scripts/CwyVC768.chunk.js.map +0 -1
- package/dist/scripts/Cy4L5XsI.chunk.js +0 -2
- package/dist/scripts/Cy4L5XsI.chunk.js.map +0 -1
- package/dist/scripts/CzF-hI_x.chunk.js +0 -2
- package/dist/scripts/CzF-hI_x.chunk.js.map +0 -1
- package/dist/scripts/D1U_fPVs.chunk.js +0 -2
- package/dist/scripts/D1U_fPVs.chunk.js.map +0 -1
- package/dist/scripts/D9POXla0.chunk.js +0 -2
- package/dist/scripts/D9POXla0.chunk.js.map +0 -1
- package/dist/scripts/DAocQXXC.chunk.js +0 -2
- package/dist/scripts/DAocQXXC.chunk.js.map +0 -1
- package/dist/scripts/DD-2boW1.chunk.js +0 -2
- package/dist/scripts/DD-2boW1.chunk.js.map +0 -1
- package/dist/scripts/DFhb3ZfO.chunk.js +0 -2
- package/dist/scripts/DFhb3ZfO.chunk.js.map +0 -1
- package/dist/scripts/DFp9UBZB.chunk.js +0 -4
- package/dist/scripts/DFp9UBZB.chunk.js.map +0 -1
- package/dist/scripts/DHqmPVfK.chunk.js +0 -2
- package/dist/scripts/DHqmPVfK.chunk.js.map +0 -1
- package/dist/scripts/DJLuyZJi.chunk.js +0 -2
- package/dist/scripts/DJLuyZJi.chunk.js.map +0 -1
- package/dist/scripts/DK7va7iQ.chunk.js +0 -2
- package/dist/scripts/DK7va7iQ.chunk.js.map +0 -1
- package/dist/scripts/DMoPMSgN.chunk.js +0 -2
- package/dist/scripts/DMoPMSgN.chunk.js.map +0 -1
- package/dist/scripts/DNTR3iW5.chunk.js +0 -2
- package/dist/scripts/DNTR3iW5.chunk.js.map +0 -1
- package/dist/scripts/DNt9Tv5W.chunk.js +0 -2
- package/dist/scripts/DNt9Tv5W.chunk.js.map +0 -1
- package/dist/scripts/DQtbfeRV.chunk.js +0 -2
- package/dist/scripts/DQtbfeRV.chunk.js.map +0 -1
- package/dist/scripts/DRQ39FRr.chunk.js +0 -2
- package/dist/scripts/DRQ39FRr.chunk.js.map +0 -1
- package/dist/scripts/DTFFRoLz.chunk.js +0 -2
- package/dist/scripts/DTFFRoLz.chunk.js.map +0 -1
- package/dist/scripts/DU5sOcpt.chunk.js +0 -3
- package/dist/scripts/DU5sOcpt.chunk.js.map +0 -1
- package/dist/scripts/DWv8V3Lc.chunk.js +0 -2
- package/dist/scripts/DWv8V3Lc.chunk.js.map +0 -1
- package/dist/scripts/DYFT7QHy.chunk.js +0 -2
- package/dist/scripts/DYFT7QHy.chunk.js.map +0 -1
- package/dist/scripts/DZAYXeaL.chunk.js +0 -2
- package/dist/scripts/DZAYXeaL.chunk.js.map +0 -1
- package/dist/scripts/D_Erj5Yn.chunk.js +0 -10
- package/dist/scripts/D_Erj5Yn.chunk.js.map +0 -1
- package/dist/scripts/DeY3SuCM.chunk.js +0 -2
- package/dist/scripts/DeY3SuCM.chunk.js.map +0 -1
- package/dist/scripts/DecstRlc.chunk.js +0 -8
- package/dist/scripts/DecstRlc.chunk.js.map +0 -1
- package/dist/scripts/Df8zbYVK.chunk.js +0 -10
- package/dist/scripts/Df8zbYVK.chunk.js.map +0 -1
- package/dist/scripts/DgHfAOys.chunk.js +0 -2
- package/dist/scripts/DgHfAOys.chunk.js.map +0 -1
- package/dist/scripts/DgWHvURU.chunk.js +0 -2
- package/dist/scripts/DgWHvURU.chunk.js.map +0 -1
- package/dist/scripts/DmGrKXgL.chunk.js +0 -2
- package/dist/scripts/DmGrKXgL.chunk.js.map +0 -1
- package/dist/scripts/Dp_vnjo0.chunk.js +0 -3
- package/dist/scripts/Dp_vnjo0.chunk.js.map +0 -1
- package/dist/scripts/DuNeLCIS.chunk.js +0 -15
- package/dist/scripts/DuNeLCIS.chunk.js.map +0 -1
- package/dist/scripts/DxJzyDBL.chunk.js +0 -2
- package/dist/scripts/DxJzyDBL.chunk.js.map +0 -1
- package/dist/scripts/DxUueJN7.chunk.js +0 -2
- package/dist/scripts/DxUueJN7.chunk.js.map +0 -1
- package/dist/scripts/DykFRaNZ.chunk.js +0 -4
- package/dist/scripts/DykFRaNZ.chunk.js.map +0 -1
- package/dist/scripts/Fd0gT6QK.chunk.js +0 -2
- package/dist/scripts/Fd0gT6QK.chunk.js.map +0 -1
- package/dist/scripts/MaYDtnoS.chunk.js +0 -2
- package/dist/scripts/MaYDtnoS.chunk.js.map +0 -1
- package/dist/scripts/T4Chmiqz.chunk.js +0 -2
- package/dist/scripts/T4Chmiqz.chunk.js.map +0 -1
- package/dist/scripts/UWjf2h5X.chunk.js +0 -2
- package/dist/scripts/UWjf2h5X.chunk.js.map +0 -1
- package/dist/scripts/VSmYRJOj.chunk.js +0 -2
- package/dist/scripts/VSmYRJOj.chunk.js.map +0 -1
- package/dist/scripts/W5zJjbqu.chunk.js +0 -2
- package/dist/scripts/W5zJjbqu.chunk.js.map +0 -1
- package/dist/scripts/YDhSgJI6.chunk.js +0 -2
- package/dist/scripts/YDhSgJI6.chunk.js.map +0 -1
- package/dist/scripts/Yi67NERS.chunk.js +0 -2
- package/dist/scripts/Yi67NERS.chunk.js.map +0 -1
- package/dist/scripts/app-BqRx5tK8.js +0 -228
- package/dist/scripts/app-BqRx5tK8.js.map +0 -1
- package/dist/scripts/cRQEJA0-.chunk.js +0 -2
- package/dist/scripts/cRQEJA0-.chunk.js.map +0 -1
- package/dist/scripts/g3bqr4mt.chunk.js +0 -6
- package/dist/scripts/g3bqr4mt.chunk.js.map +0 -1
- package/dist/scripts/h4z9gHMh.chunk.js +0 -2
- package/dist/scripts/h4z9gHMh.chunk.js.map +0 -1
- package/dist/scripts/kGI4LAzn.chunk.js +0 -6
- package/dist/scripts/kGI4LAzn.chunk.js.map +0 -1
- package/dist/scripts/kt1K5Xlc.chunk.js +0 -2
- package/dist/scripts/kt1K5Xlc.chunk.js.map +0 -1
- package/dist/scripts/mdJqhxeb.chunk.js +0 -2
- package/dist/scripts/mdJqhxeb.chunk.js.map +0 -1
- package/dist/scripts/sFV5nxD4.chunk.js +0 -2
- package/dist/scripts/sFV5nxD4.chunk.js.map +0 -1
- package/dist/scripts/tCFcWStO.chunk.js +0 -2
- package/dist/scripts/tCFcWStO.chunk.js.map +0 -1
- package/dist/scripts/wND_WD0i.chunk.js +0 -2
- package/dist/scripts/wND_WD0i.chunk.js.map +0 -1
- package/dist/scripts/xkqdG021.chunk.js +0 -2
- package/dist/scripts/xkqdG021.chunk.js.map +0 -1
- package/dist/scripts/zaMwD-xl.chunk.js +0 -3
- package/dist/scripts/zaMwD-xl.chunk.js.map +0 -1
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{j as e,i as o,a2 as m,h as d,Z as u,bR as x,bS as p}from"./app-BqRx5tK8.js";import{B as b,a as f}from"./DeY3SuCM.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=DuNeLCIS.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DuNeLCIS.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":"4TAqBA,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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{e as l,u as m,j as e,L as n,O as a,bF as h,a as x}from"./app-BqRx5tK8.js";import{u as v,g as j}from"./BlAGsOOw.chunk.js";import{u as f}from"./C6H2bU7H.chunk.js";import{u}from"./DxUueJN7.chunk.js";import{U as C,P as N}from"./DAocQXXC.chunk.js";import{L as d}from"./BiDX0yuI.chunk.js";import{u as p}from"./CaiGBx50.chunk.js";import{U as y,E as P,P as L}from"./CV5ioe9U.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./DHqmPVfK.chunk.js";import"./Dp_vnjo0.chunk.js";import"./BMba67Uf.chunk.js";import"./sFV5nxD4.chunk.js";const S="shared.loginCountBarChartCard",w=n.encloseNamespace(S);function E(i){const s=l(),t=m(!!s&&d.logins(s));return u(t),p(t),e.jsx("div",{className:`bg-white rounded p-3 ${i.className??""}`,children:t.data?e.jsx(C,{events:t.data.data,getEventDate:g=>g.groupedLoggedOn,title:w("loginActivity")}):e.jsx(N,{})})}const A="shared.loginCountPieChartEmptyState",o=n.encloseNamespace(A);function $(){return e.jsxs(a,{className:"flex-grow-1 justify-content-center",children:[e.jsx(a.Image,{src:h.EmptyStates.Shared.LoginCount,className:"w-50 h-auto"}),e.jsx(a.Heading,{children:o("heading")}),e.jsx(a.Info,{className:"w-100",children:o("description")})]})}function U(i){const s=l(),t=m(!!s&&d.logins(s));return u(t),p(t),e.jsx("div",{className:`bg-white rounded p-3 position-relative d-flex flex-column ${i.className??""}`,children:t.data?e.jsx(y,{eventType:P.Login,events:t.data,emptyStateComponent:e.jsx($,{})}):e.jsx(L,{})})}const F="_column2_1cfp0_1",_="_column1_1cfp0_1",r={column2:F,column1:_},B="logins.loginOverview",c=n.encloseNamespace(B);function K(){return x({title:c("loginTitle")}),f(c("loginTitle")),v(j()),e.jsx("div",{children:e.jsxs("div",{className:"d-flex",children:[e.jsx("div",{className:`pe-2 ${r.column1}`,children:e.jsx(U,{className:"h-100"})}),e.jsx("div",{className:`ps-2 ${r.column2}`,children:e.jsx(E,{className:"h-100"})})]})})}export{K as LoginOverviewView};
|
|
2
|
-
//# sourceMappingURL=DxJzyDBL.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DxJzyDBL.chunk.js","sources":["../../src/shared/views/overview-cards/login-count-bar-chart-card/LoginCountBarChartCardView.tsx","../../src/shared/views/overview-cards/login-count-pie-chart-card/components/login-count-pie-chart-empty-state/LoginCountPieChartEmptyState.tsx","../../src/shared/views/overview-cards/login-count-pie-chart-card/LoginCountPieChartCardView.tsx","../../src/apps/logins/views/login-overview/LoginOverviewView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LoginEvent, LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\n\nimport { PartialUserActivityBarChart } from 'shared/components/user-activity-bar-chart/PartialUserActivityBarChart';\nimport { UserActivityBarChart } from 'shared/components/user-activity-bar-chart/UserActivityBarChart';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\n\nconst namespace = 'shared.loginCountBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LoginCountBarChartCardViewProps {\n /**\n * className is required as a height must be specified.\n */\n className: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function LoginCountBarChartCardView(props: LoginCountBarChartCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(!!requestFilter &&\n LoginRequests.logins(requestFilter));\n\n useHandleObjectError(logins);\n useSetAudienceFilterCount(logins);\n\n return (\n <div className={`bg-white rounded p-3 ${props.className ?? ''}`}>\n {logins.data\n ? <UserActivityBarChart\n events={logins.data.data}\n getEventDate={(ev: LoginEvent) => ev.groupedLoggedOn}\n title={getPhrase('loginActivity')}\n />\n : <PartialUserActivityBarChart />\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nconst namespace = 'shared.loginCountPieChartEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function LoginCountPieChartEmptyState(): JSX.Element {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.LoginCount}\n className='w-50 h-auto'\n />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\n\nimport { PartialUserActivityPieChart } from 'shared/components/user-activity-pie-chart/partial-loading/PartialUserActivityPieChart';\nimport { UserActivityPieChart } from 'shared/components/user-activity-pie-chart/UserActivityPieChart';\nimport { EventType } from 'shared/enums/EventType';\nimport { LoginRequests } from 'shared/flight-requests/LoginRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\n\nimport { LoginCountPieChartEmptyState } from './components/login-count-pie-chart-empty-state/LoginCountPieChartEmptyState';\n\ninterface LoginCountPieChartCardViewProps {\n /**\n * className is required as a height must be specified.\n */\n className: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function LoginCountPieChartCardView(props: LoginCountPieChartCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const logins = Flight.useBasicFetch<LoginEventResponse>(!!requestFilter &&\n LoginRequests.logins(requestFilter));\n\n useHandleObjectError(logins);\n useSetAudienceFilterCount(logins);\n\n return (\n <div className={`bg-white rounded p-3 position-relative d-flex flex-column ${props.className ?? ''}`}>\n {logins.data\n ? <UserActivityPieChart\n eventType={EventType.Login}\n events={logins.data}\n emptyStateComponent={<LoginCountPieChartEmptyState />}\n />\n : <PartialUserActivityPieChart />\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getLoginHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { LoginCountBarChartCardView } from 'shared/views/overview-cards/login-count-bar-chart-card/LoginCountBarChartCardView';\nimport { LoginCountPieChartCardView } from 'shared/views/overview-cards/login-count-pie-chart-card/LoginCountPieChartCardView';\n\nimport styles from './login-overview.module.scss';\n\nconst namespace = 'logins.loginOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function LoginOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('loginTitle') });\n useSetHeaderTitle(getPhrase('loginTitle'));\n useSetHeaderActions(getLoginHeaderActions());\n\n return (\n <div>\n <div className='d-flex'>\n <div className={`pe-2 ${styles.column1}`}>\n <LoginCountPieChartCardView className='h-100' />\n </div>\n <div className={`ps-2 ${styles.column2}`}>\n <LoginCountBarChartCardView className='h-100' />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","LoginCountBarChartCardView","props","requestFilter","useGetRequestFilter","logins","Flight.useBasicFetch","LoginRequests","useHandleObjectError","useSetAudienceFilterCount","jsx","UserActivityBarChart","ev","PartialUserActivityBarChart","LoginCountPieChartEmptyState","jsxs","EmptyState","ImageUrls","LoginCountPieChartCardView","UserActivityPieChart","EventType","PartialUserActivityPieChart","LoginOverviewView","useSetPageMetadata","useSetHeaderTitle","useSetHeaderActions","getLoginHeaderActions","styles"],"mappings":"wiBAcA,MAAMA,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAUrD,SAASG,EAA2BC,EAAqD,CAC9F,MAAMC,EAAgBC,EAAA,EAEhBC,EAASC,EAAyC,CAAC,CAACH,GACxDI,EAAc,OAAOJ,CAAa,CAAC,EAErC,OAAAK,EAAqBH,CAAM,EAC3BI,EAA0BJ,CAAM,EAG9BK,EAAAA,IAAC,OAAI,UAAW,wBAAwBR,EAAM,WAAa,EAAE,GAC1D,SAAAG,EAAO,KACJK,EAAAA,IAACC,EAAA,CACD,OAAQN,EAAO,KAAK,KACpB,aAAeO,GAAmBA,EAAG,gBACrC,MAAOb,EAAU,eAAe,CAAA,CAAA,EAEhCW,MAACG,EAAA,CAAA,CAA4B,EAEnC,CAEJ,CCtCA,MAAMf,EAAY,sCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASgB,GAA4C,CAC1D,OACEC,EAAAA,KAACC,EAAA,CAAW,UAAU,qCACpB,SAAA,CAAAN,EAAAA,IAACM,EAAW,MAAX,CACC,IAAKC,EAAU,YAAY,OAAO,WAClC,UAAU,aAAA,CAAA,QAEXD,EAAW,QAAX,CACE,SAAAjB,EAAU,SAAS,EACtB,EACAW,MAACM,EAAW,KAAX,CAAgB,UAAU,QACxB,SAAAjB,EAAU,aAAa,CAAA,CAC1B,CAAA,EACF,CAEJ,CCFO,SAASmB,EAA2BhB,EAAqD,CAC9F,MAAMC,EAAgBC,EAAA,EAEhBC,EAASC,EAAyC,CAAC,CAACH,GACxDI,EAAc,OAAOJ,CAAa,CAAC,EAErC,OAAAK,EAAqBH,CAAM,EAC3BI,EAA0BJ,CAAM,EAG9BK,EAAAA,IAAC,OAAI,UAAW,6DAA6DR,EAAM,WAAa,EAAE,GAC/F,SAAAG,EAAO,KACJK,EAAAA,IAACS,EAAA,CACD,UAAWC,EAAU,MACrB,OAAQf,EAAO,KACf,0BAAsBS,EAAA,CAAA,CAA6B,CAAA,CAAA,EAEnDJ,MAACW,EAAA,CAAA,CAA4B,EAEnC,CAEJ,yEC/BMvB,EAAY,uBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASwB,GAAiC,CAC/C,OAAAC,EAAmB,CAAE,MAAOxB,EAAU,YAAY,EAAG,EACrDyB,EAAkBzB,EAAU,YAAY,CAAC,EACzC0B,EAAoBC,GAAuB,EAGzChB,EAAAA,IAAC,MAAA,CACC,SAAAK,EAAAA,KAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAL,EAAAA,IAAC,MAAA,CAAI,UAAW,QAAQiB,EAAO,OAAO,GACpC,SAAAjB,EAAAA,IAACQ,EAAA,CAA2B,UAAU,OAAA,CAAQ,EAChD,EACAR,EAAAA,IAAC,MAAA,CAAI,UAAW,QAAQiB,EAAO,OAAO,GACpC,SAAAjB,EAAAA,IAACT,EAAA,CAA2B,UAAU,OAAA,CAAQ,CAAA,CAChD,CAAA,CAAA,CACF,CAAA,CACF,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{cM as g,L as o,az as a,bZ as u,cP as f,cS as h,r as p}from"./app-BqRx5tK8.js";const i="shared.regionLockedResourceError";class E extends g{constructor(){super(o.getPhrase(i,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return o.getPhrase(i,"heading")}get description(){return o.getPhrase(i,"description")}}const c="shared.privateResourceError";class d extends g{constructor(){super(o.getPhrase(c,"title"))}get name(){return"PrivateResourceError"}get heading(){return o.getPhrase(c,"heading")}get description(){return o.getPhrase(c,"description")}}const l={notFound:h,forbidden:{rating:d,yearLevel:d,region:E,privacy:d},badRequest:f,internalServerError:f};function R(r,n={},t={}){if(!r)return;let e;typeof r=="number"?e=r:e=r.status;const s={...l,...n};if(e&&a.isStatusCodeError(e)){if(e===u.InternalServer){t.internalServerError||a.throw(new f);return}if(e===u.NotFound){t.notFound||a.throw(new s.notFound);return}if(e===u.Forbidden){t.forbidden||a.throw(new s.forbidden.privacy);return}t.badRequest||a.throw(new s.badRequest)}}function v(r){return r.map(n=>n.statusCode).join(":")}function b(r,n,t){const e=Array.isArray(r)?r:[r];p.useEffect(()=>{e.forEach(s=>{R(s.statusCode,n,t)})},[v(e),n,t])}export{E as R,b as u};
|
|
2
|
-
//# sourceMappingURL=DxUueJN7.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DxUueJN7.chunk.js","sources":["../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts","../../../../libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["namespace","RegionLockedResourceError","ErrorPageError","LanguageService","PrivateResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect"],"mappings":"qFAIA,MAAMA,EAAY,mCAEX,MAAMC,UAAkCC,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,8BAEX,MAAMI,UAA6BF,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQF,EACR,UAAWA,EACX,OAAQH,EACR,QAASG,CAAA,EAEX,WAAYG,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD,CCxFA,SAASG,EAAiBC,EAAiD,CACzE,OAAOA,EAAW,IAAIC,GAAOA,EAAI,UAAU,EAAE,KAAK,GAAG,CACvD,CAGO,SAASC,EACdC,EACAC,EACAC,EACM,CACN,MAAML,EAAa,MAAM,QAAQG,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE1EG,EAAAA,UAAU,IAAM,CACdN,EAAW,QAAQC,GAAO,CACxBV,EAAgBU,EAAI,WAAYG,EAAcC,CAAY,CAC5D,CAAC,CACH,EAAG,CAAEN,EAAiBC,CAAU,EAAGI,EAAcC,CAAa,CAAC,CACjE"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{j as e,u,bO as h,e as f,L as v,v as w,O as p,bF as $,c as H,V,d as L,i as T,A as q,g as D,b as F,ad as O,a as G,P as U,T as B}from"./app-BqRx5tK8.js";import{u as S}from"./UWjf2h5X.chunk.js";import{u as Q}from"./Fd0gT6QK.chunk.js";import{u as N}from"./DxUueJN7.chunk.js";import{u as b}from"./C6eAAaNL.chunk.js";import{u as K,a as W}from"./BlAGsOOw.chunk.js";import{u as z}from"./C6H2bU7H.chunk.js";import{P as Y,E as J}from"./zaMwD-xl.chunk.js";import{V as X}from"./CXK1uNgx.chunk.js";import{V as Z}from"./BmScDBcl.chunk.js";import{u as ee,I as te}from"./T4Chmiqz.chunk.js";import{M as ae}from"./CsD4Xb6n.chunk.js";import{O as se}from"./COgPEQMR.chunk.js";import{u as ne}from"./BaHk6QZB.chunk.js";import{g as re,a as ie,b as ce,c as de}from"./cRQEJA0-.chunk.js";import{S as g}from"./5O9SdVRZ.chunk.js";import{I as oe}from"./ClcYw2ra.chunk.js";import{P as k,a as C}from"./DFhb3ZfO.chunk.js";import{a as le}from"./DU5sOcpt.chunk.js";import{E as me}from"./CrlegiVC.chunk.js";import"./sFV5nxD4.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./DHqmPVfK.chunk.js";import"./BE7zUNFh.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./DAocQXXC.chunk.js";import"./Dp_vnjo0.chunk.js";import"./BMba67Uf.chunk.js";import"./CaiGBx50.chunk.js";import"./CV5ioe9U.chunk.js";import"./D1U_fPVs.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./BBOfq9my.chunk.js";const ue="_container_eav1c_1",he={container:ue};function ge(t){return e.jsx("div",{className:`rounded bg-white p-3 ${he.container}`,children:t.children})}function xe(t){return t>=g.HIGH?"text-success":t>=g.MODERATE?"text-warning":"text-danger"}function ve(t){return`${Math.round(t*100)}%`}function pe(t){return t.markingRequired?{subheading:"markingRequiredSubheading",description:"markingRequiredDescription"}:typeof t.score!="number"?{subheading:"noScoresSubheading",description:"noScoresDescription"}:t.score>=g.HIGH?{subheading:"highScoreSubheading",description:"highScoreDescription"}:t.score>=g.MODERATE?{subheading:"moderateScoreSubheading",description:"moderateScoreDescription"}:{subheading:"lowScoreSubheading",description:"lowScoreDescription"}}function je(t,n){const s=[];let r=!1;return n.students.forEach(c=>{const a=re(t,c);s.push(a.percentCorrect),a.awaitingMarking&&(r=!0)}),{score:s.length?s.reduce((c,a)=>c+a,0)/s.length:null,markingRequired:r}}const Ie="_percentage_aor5o_1",fe={percentage:Ie},Se="interactives.averageScoreCard",j=v.encloseNamespace(Se);function Ne(t){var x;const n=u(h.interactiveMetadata(t.interactiveMetadataId)),s=u((x=n.data)!=null&&x.interactiveId?h.interactive(n.data.interactiveId):null),r=f(),c=S(t.interactiveMetadataId,r);b(n),N([n,c]);const a=!!s.data&&!!c.data,i=a&&je(s.data,c.data),{subheading:d,description:o}=pe(i);return a?e.jsxs("div",{className:"rounded bg-white p-3",children:[e.jsx("h3",{className:"h6 mb-3",children:j("heading")}),e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${fe.percentage} text-center py-2`,children:!i.markingRequired&&typeof i.score=="number"?e.jsx("span",{className:xe(i.score),children:ve(i.score)}):e.jsx("span",{className:"text-info",children:"--%"})}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"m-0",children:e.jsx("strong",{children:j(d)})}),e.jsx("p",{className:"m-0",children:j(o)})]})]})]}):e.jsx(ge,{children:e.jsx("h3",{className:"h6",children:j("heading")})})}const be="interactives.hardestQuestionCard",R=v.encloseNamespace(be);function ye(t,n){const r=ie(t).map(a=>({...a,resultsSummary:ce(a,n)})).filter(a=>!!a.resultsSummary.answered&&!a.resultsSummary.awaitingMarking),c=w.sortBy(r,a=>a.resultsSummary.percentCorrect);return w.first(c)}function we(t){var d,o;const n=u(h.interactiveMetadata(t.interactiveMetadataId)),s=u((d=n.data)!=null&&d.interactiveId?h.interactive(n.data.interactiveId):null),r=f(),c=S(t.interactiveMetadataId,r);b(n),N([n,c]);const a=!!s.data&&!!c.data,i=a&&ye(s.data,c.data);return e.jsxs("div",{className:"rounded bg-white p-3",children:[e.jsx("h3",{className:"h6 mb-2",children:R("heading")}),a&&e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(k,{percentage:(o=i==null?void 0:i.resultsSummary)==null?void 0:o.percentCorrect,layout:C.LabelInside}),i?e.jsx("div",{className:"d-flex ms-2",children:e.jsx(oe,{interaction:i,iconClassName:"flex-shrink-0"})}):e.jsx("span",{className:"ms-2",children:R("empty")})]}),!a&&e.jsx(Y,{layout:C.LabelInside})]})}const Ce="_container_1n7u9_1",Me={container:Ce};function y(){return e.jsx("div",{className:`bg-white rounded mt-3 ${Me.container}`})}const _e="_emptyState_f6c1y_1",Re={emptyState:_e},Ee="interactives.studentResultInsightsEmptyState",E=v.encloseNamespace(Ee);function Pe(){return e.jsxs(p,{className:`${Re.emptyState} justify-content-center`,children:[e.jsx(p.Image,{src:$.EmptyStates.Interactives.StudentInsights,className:"w-75 h-auto"}),e.jsx(p.Heading,{children:E("heading")}),e.jsx(p.Info,{className:"w-100",children:E("description")})]})}const ke="_numberCircle_11ecw_1",Ae="_studentsContainer_11ecw_5",$e="_studentRow_11ecw_8",He="_indicatorRing_11ecw_11",Ve="_ringSuccess_11ecw_29",Le="_ringDanger_11ecw_32",Te="_ringInfo_11ecw_35",qe="_percentageIndicator_11ecw_38",m={numberCircle:ke,studentsContainer:Ae,studentRow:$e,indicatorRing:He,ringSuccess:Ve,ringDanger:Le,ringInfo:Te,percentageIndicator:qe},De="0.3rem";function Fe(t){const n=w.first(t);return n.summary.awaitingMarking?"bg-blue":n.summary.percentCorrect>=g.HIGH?"bg-success":"bg-danger"}function Oe(t){return t.summary.awaitingMarking?m.ringInfo:t.summary.percentCorrect>=g.HIGH?m.ringSuccess:m.ringDanger}I.defaultProps={displayLimit:3};function I(t){const[n]=H(V.ANONYMISE_USERS);return e.jsxs("div",{className:"bg-white rounded p-3 mt-3",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-2",children:[e.jsx("h4",{className:"h6 m-0",children:e.jsx(me,{emoji:t.headingEmoji,children:t.heading})}),!!t.students.length&&e.jsx("div",{className:`
|
|
2
|
-
text-white text-center rounded-circle
|
|
3
|
-
${m.numberCircle} ${Fe(t.students)}`,children:t.students.length})]}),e.jsx("div",{className:m.studentsContainer,children:t.students.length?e.jsx("ul",{className:"list-unstyled m-0",children:t.students.slice(0,t.displayLimit).map((s,r)=>e.jsxs("li",{className:`d-flex justify-content-between align-items-center ${m.studentRow}`,children:[e.jsxs("span",{className:"d-flex align-items-center text-truncate",children:[e.jsx("div",{className:m.indicatorRing,children:e.jsx("svg",{children:e.jsx("circle",{r:De,className:Oe(s)})})}),e.jsx("span",{className:"text-truncate",children:le(s.user,n)})]}),!s.summary.awaitingMarking&&e.jsx("span",{className:m.percentageIndicator,children:e.jsx(k,{percentage:s.summary.percentCorrect,layout:C.LabelBefore})})]},r))}):e.jsx("p",{className:"mt-1 mb-0",children:t.emptyStateText})})]})}const Ge="interactives.studentResultInsightsCard",l=v.encloseNamespace(Ge);function Ue(t){var o;const n=L(),s=u(h.interactiveMetadata(t.interactiveMetadataId)),r=u((o=s.data)!=null&&o.interactiveId?h.interactive(s.data.interactiveId):null),c=f(),a=S(t.interactiveMetadataId,c);b(s),N([s,a]);const i=!!r.data&&!!a.data,d=i&&de(r.data,a.data);return e.jsxs("div",{className:"d-flex flex-column",children:[e.jsxs("div",{className:"bg-white rounded p-3",children:[e.jsx("h3",{className:"h6 m-0",children:l("heading")}),i&&!a.data.students.length&&e.jsx(Pe,{})]}),i&&!!a.data.students.length&&e.jsxs(e.Fragment,{children:[e.jsx(I,{heading:l("markingRequired"),headingEmoji:"📝",students:d.markingRequired,emptyStateText:l("markingRequiredEmpty")}),e.jsx(I,{heading:l("needHelp"),headingEmoji:"✋",students:d.lowScore,emptyStateText:l("needHelpEmpty")}),e.jsx(I,{heading:l("topAchievers"),headingEmoji:"🏅",students:d.highScore,emptyStateText:l("topAchieversEmpty")}),e.jsx(T,{className:"btn btn-outline-dark mt-3",appLink:{application:D.INTERACTIVES,action:q.Interactives.RESULTS,args:[t.interactiveMetadataId],params:n},children:l("seeAll")})]}),!i&&e.jsxs(e.Fragment,{children:[e.jsx(y,{}),e.jsx(y,{}),e.jsx(y,{}),e.jsx("button",{className:"btn btn-outline-dark mt-3 cursor-default",children:" "})]})]})}const Be="_pieChart_1xbkb_1",Qe="_barChart_1xbkb_4",P={pieChart:Be,barChart:Qe},A="reportsInteractives.interactiveOverview",Ke=v.encloseNamespace(A);function kt(t){var o,x,M,_;const{hasPermissions:n}=F(),{hasShareFlowV2:s}=O(null),r=u(h.interactiveMetadata(t.interactiveMetadataId)),c=u((o=r.data)!=null&&o.interactiveId?h.interactive(r.data.interactiveId):null),a=f(),i=S(t.interactiveMetadataId,a);G({title:Ke("pageTitle",{interactive:(x=r.data)==null?void 0:x.name})}),z((M=r.data)==null?void 0:M.name),K(W(r.data)),ne(t.interactiveMetadataId),ee(t.interactiveMetadataId),b(r),N([c,i]),Q(r);const d=s&&n(U.ViewMyShares);return e.jsxs("div",{children:[e.jsx(te,{interactiveMetadataId:t.interactiveMetadataId,hasInsights:d}),!d&&!!c.data&&!!i.data&&e.jsx(ae,{interactive:c.data,results:i.data,interactiveMetadataId:t.interactiveMetadataId}),e.jsxs("div",{className:"row",children:[e.jsxs("div",{className:"col-4",children:[e.jsx(Z,{objectId:t.interactiveMetadataId,useSharerId:!0,className:P.pieChart}),!d&&e.jsx("div",{className:"mt-3",children:e.jsx(Ne,{interactiveMetadataId:t.interactiveMetadataId})})]}),e.jsxs("div",{className:"col-5",children:[e.jsx(X,{objectId:t.interactiveMetadataId,useSharerId:!0,className:P.barChart}),((_=i.data)==null?void 0:_.hasWatchedInLite)===!1?e.jsxs("div",{className:"mt-3 bg-white p-3 pb-3",children:[e.jsx("h3",{className:"h6 mb-2",children:e.jsx(B,{namespace:A,phrase:"averageAmountPlaceholder"})}),e.jsx(se,{})]}):e.jsx("div",{className:"mt-3",children:e.jsx(J,{objectId:t.interactiveMetadataId,layout:"horizontal",useSharerId:!0})}),!d&&e.jsx("div",{className:"mt-3",children:e.jsx(we,{interactiveMetadataId:t.interactiveMetadataId})})]}),!d&&e.jsx("div",{className:"col-3",children:e.jsx(Ue,{interactiveMetadataId:t.interactiveMetadataId})})]})]})}export{kt as InteractiveOverviewView};
|
|
4
|
-
//# sourceMappingURL=DykFRaNZ.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DykFRaNZ.chunk.js","sources":["../../src/apps/interactives/views/overview-cards/average-score/components/partial-average-score-card/PartialAverageScoreCard.tsx","../../src/apps/interactives/views/overview-cards/average-score/AverageScoreCardUtils.ts","../../src/apps/interactives/views/overview-cards/average-score/AverageScoreCardView.tsx","../../src/apps/interactives/views/overview-cards/hardest-question-card/HardestQuestionCardView.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/partial-student-insights-section/PartialStudentInsightsSection.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/student-result-insights-empty-state/StudentResultInsightsEmptyState.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/student-result-insights-section/StudentResultInsightsSection.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/StudentResultInsightsCardView.tsx","../../src/apps/interactives/views/interactive-overview/InteractiveOverviewView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport styles from './partial-average-score-card.module.scss';\n\nexport function PartialAverageScoreCard(props: React.PropsWithChildren<HashObject>): JSX.Element {\n return (\n <div className={`rounded bg-white p-3 ${styles.container}`}>\n {props.children}\n </div>\n );\n}","import { getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { ScoreThresholdDefaults } from 'libs/shared/constants/ScoreThresholds';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\n\ninterface AverageScoreSummary {\n markingRequired: boolean;\n score?: number;\n}\n\nexport function getTextColourClass(score: number): string {\n if (score >= ScoreThresholdDefaults.HIGH)\n return 'text-success';\n\n if (score >= ScoreThresholdDefaults.MODERATE)\n return 'text-warning';\n\n return 'text-danger';\n}\n\nexport function formatPercentage(score: number): string {\n return `${Math.round(score * 100)}%`;\n}\n\nexport function getPhraseKeys(averageScoreSummary: AverageScoreSummary): { subheading: string; description: string } {\n if (averageScoreSummary.markingRequired)\n return { subheading: 'markingRequiredSubheading', description: 'markingRequiredDescription' };\n\n if (typeof averageScoreSummary.score !== 'number')\n return { subheading: 'noScoresSubheading', description: 'noScoresDescription' };\n\n if (averageScoreSummary.score >= ScoreThresholdDefaults.HIGH)\n return { subheading: 'highScoreSubheading', description: 'highScoreDescription' };\n\n if (averageScoreSummary.score >= ScoreThresholdDefaults.MODERATE)\n return { subheading: 'moderateScoreSubheading', description: 'moderateScoreDescription' };\n\n return { subheading: 'lowScoreSubheading', description: 'lowScoreDescription' };\n}\n\nexport function getAverageScoreSummary(interactive: Interactive, results: InteractiveResultSet): AverageScoreSummary {\n const scores: number[] = [];\n let markingRequired = false;\n\n results.students.forEach(s => {\n const summary = getStudentResultsSummary(interactive, s);\n scores.push(summary.percentCorrect);\n\n if (summary.awaitingMarking)\n markingRequired = true;\n });\n\n return {\n score: scores.length ? scores.reduce((a, b) => a + b, 0) / scores.length : null,\n markingRequired\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nimport { PartialAverageScoreCard } from './components/partial-average-score-card/PartialAverageScoreCard';\nimport { formatPercentage, getAverageScoreSummary, getPhraseKeys, getTextColourClass } from './AverageScoreCardUtils';\n\nimport styles from './average-score-card.module.scss';\n\nconst namespace = 'interactives.averageScoreCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AverageScoreCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function AverageScoreCardView(props: AverageScoreCardViewProps): JSX.Element {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const averageScore = dataLoaded && getAverageScoreSummary(interactive.data, results.data);\n\n const { subheading, description } = getPhraseKeys(averageScore);\n\n if (!dataLoaded) {\n return (\n <PartialAverageScoreCard>\n <h3 className='h6'>{getPhrase('heading')}</h3>\n </PartialAverageScoreCard>\n );\n }\n\n return (\n <div className='rounded bg-white p-3'>\n <h3 className='h6 mb-3'>{getPhrase('heading')}</h3>\n <>\n <div className={`${styles.percentage} text-center py-2`}>\n {(!averageScore.markingRequired && typeof averageScore.score === 'number')\n ? <span className={getTextColourClass(averageScore.score)}>{formatPercentage(averageScore.score)}</span>\n : <span className='text-info'>--%</span>\n }\n </div>\n <div className='text-center'>\n <p className='m-0'><strong>{getPhrase(subheading)}</strong></p>\n <p className='m-0'>{getPhrase(description)}</p>\n </div>\n </>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PartialPercentageIndicator } from 'libs/shared/components/percentage-indicator/PartialPercentageIndicator';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nconst namespace = 'interactives.hardestQuestionCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHardestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.first(sortedInteractions);\n}\n\ninterface HardestQuestionCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function HardestQuestionCardView(props: HardestQuestionCardViewProps): JSX.Element {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const hardestQuestion = dataLoaded && getHardestQuestion(interactive.data, results.data);\n\n return (\n <div className='rounded bg-white p-3'>\n <h3 className='h6 mb-2'>{getPhrase('heading')}</h3>\n {dataLoaded &&\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={hardestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {hardestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={hardestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('empty')}</span>\n }\n </div>\n }\n {!dataLoaded && <PartialPercentageIndicator layout={PercentageIndicatorLayout.LabelInside} />}\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-student-insights-section.module.scss';\n\nexport function PartialStudentInsightsSection(): JSX.Element {\n return (\n <div className={`bg-white rounded mt-3 ${styles.container}`} />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './student-results-insights-empty-state.module.scss';\n\nconst namespace = 'interactives.studentResultInsightsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function StudentResultInsightsEmptyState(): JSX.Element {\n return (\n <EmptyState className={`${styles.emptyState} justify-content-center`}>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Interactives.StudentInsights}\n className='w-75 h-auto'\n />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { ScoreThresholdDefaults } from 'libs/shared/constants/ScoreThresholds';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nimport styles from './student-result-insights-section.module.scss';\n\n// If this is changed it must be changed in student-result-insights-section.scss too\nconst INDICATOR_RING_RADIUS = '0.3rem';\n\nfunction getIndicatorBackgroundColour(students: StudentResultsWithSummary[]): string {\n const firstStudent = ArrayHelper.first(students);\n\n if (firstStudent.summary.awaitingMarking)\n return 'bg-blue';\n\n if (firstStudent.summary.percentCorrect >= ScoreThresholdDefaults.HIGH)\n return 'bg-success';\n\n return 'bg-danger';\n}\n\nfunction getIndicatorRingColourClass(student: StudentResultsWithSummary): string {\n if (student.summary.awaitingMarking)\n return styles.ringInfo;\n\n if (student.summary.percentCorrect >= ScoreThresholdDefaults.HIGH)\n return styles.ringSuccess;\n\n return styles.ringDanger;\n}\n\ninterface StudentResultInsightsSectionProps {\n heading: string;\n headingEmoji: string;\n students: StudentResultsWithSummary[];\n emptyStateText: string;\n displayLimit: number;\n}\n\nStudentResultInsightsSection.defaultProps = {\n displayLimit: 3\n};\n\nexport function StudentResultInsightsSection(props: StudentResultInsightsSectionProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n return (\n <div className='bg-white rounded p-3 mt-3'>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <h4 className='h6 m-0'>\n <EmojiText emoji={props.headingEmoji}>{props.heading}</EmojiText>\n </h4>\n {!!props.students.length &&\n <div\n className={`\n text-white text-center rounded-circle\n ${styles.numberCircle} ${getIndicatorBackgroundColour(props.students)}`\n }\n >\n {props.students.length}\n </div>\n }\n </div>\n <div className={styles.studentsContainer}>\n {props.students.length\n ? <ul className='list-unstyled m-0'>\n {props.students.slice(0, props.displayLimit).map((s, idx) => (\n <li key={idx} className={`d-flex justify-content-between align-items-center ${styles.studentRow}`}>\n <span className='d-flex align-items-center text-truncate'>\n <div className={styles.indicatorRing}>\n <svg>\n <circle r={INDICATOR_RING_RADIUS} className={getIndicatorRingColourClass(s)} />\n </svg>\n </div>\n <span className='text-truncate'>{anonymiseUserName(s.user, anonymiseUsers)}</span>\n </span>\n {!s.summary.awaitingMarking &&\n <span className={styles.percentageIndicator}>\n <PercentageIndicator\n percentage={s.summary.percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n />\n </span>\n }\n </li>\n ))}\n </ul>\n : <p className='mt-1 mb-0'>{props.emptyStateText}</p>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { groupStudents } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nimport { PartialStudentInsightsSection } from './components/partial-student-insights-section/PartialStudentInsightsSection';\nimport { StudentResultInsightsEmptyState } from './components/student-result-insights-empty-state/StudentResultInsightsEmptyState';\nimport { StudentResultInsightsSection } from './components/student-result-insights-section/StudentResultInsightsSection';\n\nconst namespace = 'interactives.studentResultInsightsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultInsightsCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StudentResultInsightsCardView(props: StudentResultInsightsCardViewProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const studentGroups = dataLoaded && groupStudents(interactive.data, results.data);\n\n return (\n <div className='d-flex flex-column'>\n <div className='bg-white rounded p-3'>\n <h3 className='h6 m-0'>{getPhrase('heading')}</h3>\n {dataLoaded && !results.data.students.length &&\n <StudentResultInsightsEmptyState />\n }\n </div>\n {dataLoaded && !!results.data.students.length &&\n <>\n <StudentResultInsightsSection\n heading={getPhrase('markingRequired')}\n headingEmoji='📝'\n students={studentGroups.markingRequired}\n emptyStateText={getPhrase('markingRequiredEmpty')}\n />\n <StudentResultInsightsSection\n heading={getPhrase('needHelp')}\n headingEmoji='✋'\n students={studentGroups.lowScore}\n emptyStateText={getPhrase('needHelpEmpty')}\n />\n <StudentResultInsightsSection\n heading={getPhrase('topAchievers')}\n headingEmoji='🏅'\n students={studentGroups.highScore}\n emptyStateText={getPhrase('topAchieversEmpty')}\n />\n <AppLink\n className='btn btn-outline-dark mt-3'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.RESULTS,\n args: [props.interactiveMetadataId],\n params: filterQueryParams\n }}\n >\n {getPhrase('seeAll')}\n </AppLink>\n </>\n }\n {!dataLoaded &&\n <>\n <PartialStudentInsightsSection />\n <PartialStudentInsightsSection />\n <PartialStudentInsightsSection />\n <button className='btn btn-outline-dark mt-3 cursor-default'>\n \n </button>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { useGetObjectHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { EngagementOverviewCardView } from 'shared/views/overview-cards/engagement-overview-card/EngagementOverviewCardView';\nimport { ViewCountBarChartCardView } from 'shared/views/overview-cards/view-count-bar-chart-card/ViewCountBarChartCardView';\nimport { ViewCountPieChartCardView } from 'shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView';\n\nimport { InteractiveNav } from 'apps/interactives/components/interactive-nav/InteractiveNav';\nimport { MarkingRequiredAlert } from 'apps/interactives/components/marking-required-alert/MarkingRequiredAlert';\nimport { OnlineDataWarning } from 'apps/interactives/components/online-data-warning/OnlineDataWarning';\nimport { useNoResultsPopup } from 'apps/interactives/hooks/UseNoResultsPopup';\nimport { useSetSuggestedInteractiveResultsAudience } from 'apps/interactives/hooks/UseSetSuggestedInteractiveResultsAudience';\nimport { AverageScoreCardView } from 'apps/interactives/views/overview-cards/average-score/AverageScoreCardView';\nimport { HardestQuestionCardView } from 'apps/interactives/views/overview-cards/hardest-question-card/HardestQuestionCardView';\nimport { StudentResultInsightsCardView } from 'apps/interactives/views/overview-cards/student-result-insights-card/StudentResultInsightsCardView';\n\nimport styles from './interactive-overview.module.scss';\n\nconst namespace = 'reportsInteractives.interactiveOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveOverviewViewProps {\n interactiveMetadataId: string;\n}\n\nexport function InteractiveOverviewView(props: InteractiveOverviewViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useSetPageMetadata({ title: getPhrase('pageTitle', { interactive: interactiveMetadata.data?.name }) });\n useSetHeaderTitle(interactiveMetadata.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(interactiveMetadata.data));\n useSetSuggestedInteractiveResultsAudience(props.interactiveMetadataId);\n useNoResultsPopup(props.interactiveMetadataId);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactive, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewMyShares);\n\n return (\n <div>\n <InteractiveNav\n interactiveMetadataId={props.interactiveMetadataId}\n hasInsights={hasInsightsPermission}\n />\n {!hasInsightsPermission && !!interactive.data && !!results.data &&\n <MarkingRequiredAlert\n interactive={interactive.data}\n results={results.data}\n interactiveMetadataId={props.interactiveMetadataId}\n />\n }\n <div className='row'>\n <div className='col-4'>\n <ViewCountPieChartCardView\n objectId={props.interactiveMetadataId}\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n className={styles.pieChart}\n />\n {!hasInsightsPermission && <div className='mt-3'>\n <AverageScoreCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n <div className='col-5'>\n <ViewCountBarChartCardView\n objectId={props.interactiveMetadataId}\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n className={styles.barChart}\n />\n {results.data?.hasWatchedInLite === false\n ? <div className='mt-3 bg-white p-3 pb-3'>\n <h3 className='h6 mb-2'><Text namespace={namespace} phrase='averageAmountPlaceholder' /></h3>\n <OnlineDataWarning />\n </div>\n : <div className='mt-3'>\n <EngagementOverviewCardView\n objectId={props.interactiveMetadataId}\n layout='horizontal'\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n />\n </div>\n }\n {!hasInsightsPermission && <div className='mt-3'>\n <HardestQuestionCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n {!hasInsightsPermission && <div className='col-3'>\n <StudentResultInsightsCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n </div>\n );\n}"],"names":["PartialAverageScoreCard","props","jsx","styles","getTextColourClass","score","ScoreThresholdDefaults","formatPercentage","getPhraseKeys","averageScoreSummary","getAverageScoreSummary","interactive","results","scores","markingRequired","s","summary","getStudentResultsSummary","a","b","namespace","getPhrase","LanguageService","AverageScoreCardView","interactiveMetadata","Flight.useBasicFetch","InteractiveRequests","_a","requestFilter","useGetRequestFilter","useFetchInteractiveResults","useHandleVideoError","useHandleObjectError","dataLoaded","averageScore","subheading","description","jsxs","Fragment","getHardestQuestion","answeredInteractions","getInteractions","i","getInteractionResultsSummary","sortedInteractions","ArrayHelper","HardestQuestionCardView","hardestQuestion","PercentageIndicator","_b","PercentageIndicatorLayout","InteractionLabel","PartialPercentageIndicator","PartialStudentInsightsSection","StudentResultInsightsEmptyState","EmptyState","ImageUrls","INDICATOR_RING_RADIUS","getIndicatorBackgroundColour","students","firstStudent","getIndicatorRingColourClass","student","StudentResultInsightsSection","anonymiseUsers","useViewModel","ViewModelKeys","EmojiText","idx","StudentResultInsightsCardView","filterQueryParams","useGetAppLinkFilterParams","studentGroups","groupStudents","AppLink","AppChannels","Actions","InteractiveOverviewView","hasPermissions","usePermissions","hasShareFlowV2","useSettings","useSetPageMetadata","useSetHeaderTitle","_c","useSetHeaderActions","useGetObjectHeaderActions","useSetSuggestedInteractiveResultsAudience","useNoResultsPopup","useCannotConsumeError","hasInsightsPermission","PermissionName","InteractiveNav","MarkingRequiredAlert","ViewCountPieChartCardView","ViewCountBarChartCardView","_d","Text","OnlineDataWarning","EngagementOverviewCardView"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{cM as a,L as i,cN as T,cO as I,cp as R,l as r,u as V,U as N,p as b,az as L,cP as x}from"./app-BqRx5tK8.js";import{R as S}from"./DxUueJN7.chunk.js";const p="shared.restrictedLibraryError";class A extends a{constructor(){super(i.getPhrase(p,"title"))}get name(){return"RestrictedLibraryError"}get heading(){return i.getPhrase(p,"heading")}get description(){return i.getPhrase(p,"description")}get cta(){return{text:i.getPhrase(p,"cta"),url:T.getLiteArticle(I.StudentSharingGuide),openInNewTab:!0}}}const w="shared.loginRequired",u=i.encloseNamespace(w);function q(e){return r.isClip(e)?u("clipDescription"):r.isInteractive(e)?u("interactiveDescription"):u("videoDescription")}class g extends R{constructor(t){super(u("title")),this.video=t}get name(){return"LoginRequiredError"}get heading(){return u("title")}get description(){return q(this.video)}}const U="shared.videoNotInSubscriptionError",h=i.encloseNamespace(U);class y extends a{constructor(t){super("VideoNotInSubscriptionError"),this.video=t}get name(){return"VideoNotInSubscriptionError"}get heading(){return h("title")}get description(){return h("description")}}const k="shared.parentVideoDeletedError",n=i.encloseNamespace(k);function v(e){return r.isClip(e)?n("clipTitle"):r.isInteractive(e)?n("interactiveTitle"):n("videoTitle")}function H(e){return r.isClip(e)?n("clipDescription"):r.isInteractive(e)?n("interactiveDescription"):n("videoDescription")}class M extends a{constructor(t){super(v(t)),this.video=t}get name(){return"ParentVideoDeletedError"}get heading(){return v(this.video)}get description(){return H(this.video)}}const B="shared.videoPrivateError",s=i.encloseNamespace(B);function f(e){return r.isClip(e)?s("clipTitle"):r.isInteractive(e)?s("interactiveTitle"):s("videoTitle")}function z(e){return r.isClip(e)?s("clipDescription"):r.isInteractive(e)?s("interactiveDescription"):s("videoDescription")}class F extends a{constructor(t){super(f(t)),this.video=t}get name(){return"VideoPrivateError"}get heading(){return f(this.video)}get description(){return z(this.video)}}const G="shared.videoRatingAccess",o=i.encloseNamespace(G);function m(e){return r.isClip(e)?o("clipTitle"):r.isInteractive(e)?o("interactiveTitle"):o("videoTitle")}function O(e){return r.isClip(e)?o("clipDescription"):r.isInteractive(e)?o("interactiveDescription"):o("videoDescription")}class j extends a{constructor(t){super(m(t)),this.video=t}get name(){return"VideoRatingAccessError"}get heading(){return m(this.video)}get description(){return O(this.video)}}const J="shared.videoRestrictedError",c=i.encloseNamespace(J);function E(e){return r.isClip(e)?c("clipTitle"):r.isInteractive(e)?c("interactiveTitle"):c("videoTitle")}function K(e){return r.isClip(e)?c("clipDescription"):r.isInteractive(e)?c("interactiveDescription"):c("videoDescription")}class Q extends a{constructor(t){super(E(t)),this.video=t}get name(){return"VideoRestrictedError"}get heading(){return E(this.video)}get description(){return K(this.video)}}const D={"rating-not-allowed":j,"video-deleted":M,private:F,"clickview-private":y,"login-required":g,"restricted-access":Q,"content-region-violated":S,"restricted-library":A},W={...D,private:g,"clickview-private":g},_=(e,t={})=>{const d=V(N.currentUser());b.useEffect(()=>{if(!e.hasCompleted||!d.hasCompleted)return;const l=e.data;if(!l)return;const{canConsume:C,reason:$}=r.getCanBeConsumed(l);if(C)return;const P={...d.data.isAuthenticated?D:W,...t}[$??"private"]??x;L.throw(new P(l))},[e.hasCompleted,d.hasCompleted])};export{_ as u};
|
|
2
|
-
//# sourceMappingURL=Fd0gT6QK.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Fd0gT6QK.chunk.js","sources":["../../../../libs/shared/src/errors/general/library-restricted/RestrictedLibraryError.ts","../../../../libs/shared/src/errors/videos/login-required/LoginRequiredError.ts","../../../../libs/shared/src/errors/videos/not-in-subscription-error/VideoNotInSubscriptionError.ts","../../../../libs/shared/src/errors/videos/parent-video-deleted/ParentVideoDeletedError.ts","../../../../libs/shared/src/errors/videos/video-private/VideoPrivateError.ts","../../../../libs/shared/src/errors/videos/video-rating-access/VideoRatingAccessError.ts","../../../../libs/shared/src/errors/videos/video-restricted/VideoRestrictedError.ts","../../../../libs/shared/src/hooks/useCannotConsumeError.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nconst namespace = 'shared.restrictedLibraryError';\n\nexport class RestrictedLibraryError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RestrictedLibraryError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n\n // @ts-ignore\n public get cta(): ErrorCta {\n return {\n text: LanguageService.getPhrase(namespace, 'cta'),\n url: ArticleHelper.getLiteArticle(LiteSupportArticle.StudentSharingGuide),\n openInNewTab: true\n };\n }\n}\n","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.loginRequired';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDescription(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipDescription');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveDescription');\n\n return getPhrase('videoDescription');\n}\n\nexport class LoginRequiredError extends Core.SilentError {\n public video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super(getPhrase('title'));\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'LoginRequiredError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getPhrase('title');\n }\n\n // @ts-ignore\n public get description(): string {\n return getDescription(this.video);\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoNotInSubscriptionError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport class VideoNotInSubscriptionError extends ErrorPageError {\n private video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super('VideoNotInSubscriptionError');\n\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VideoNotInSubscriptionError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getPhrase('title');\n }\n\n // @ts-ignore\n public get description(): string {\n return getPhrase('description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.parentVideoDeletedError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipTitle');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveTitle');\n\n return getPhrase('videoTitle');\n}\n\nfunction getDescription(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipDescription');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveDescription');\n\n return getPhrase('videoDescription');\n}\n\nexport class ParentVideoDeletedError extends ErrorPageError {\n private video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super(getTitle(video));\n\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'ParentVideoDeletedError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getTitle(this.video);\n }\n\n // @ts-ignore\n public get description(): string {\n return getDescription(this.video);\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.videoPrivateError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipTitle');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveTitle');\n\n return getPhrase('videoTitle');\n}\n\nfunction getDescription(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipDescription');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveDescription');\n\n return getPhrase('videoDescription');\n}\n\nexport class VideoPrivateError extends ErrorPageError {\n private video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super(getTitle(video));\n\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VideoPrivateError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getTitle(this.video);\n }\n\n // @ts-ignore\n public get description(): string {\n return getDescription(this.video);\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.videoRatingAccess';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipTitle');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveTitle');\n\n return getPhrase('videoTitle');\n}\n\nfunction getDescription(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipDescription');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveDescription');\n\n return getPhrase('videoDescription');\n}\n\nexport class VideoRatingAccessError extends ErrorPageError {\n private video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super(getTitle(video));\n\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VideoRatingAccessError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getTitle(this.video);\n }\n\n // @ts-ignore\n public get description(): string {\n return getDescription(this.video);\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.videoRestrictedError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipTitle');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveTitle');\n\n return getPhrase('videoTitle');\n}\n\nfunction getDescription(video: VideoTypes): string {\n if (VideoHelper.isClip(video))\n return getPhrase('clipDescription');\n\n if (VideoHelper.isInteractive(video))\n return getPhrase('interactiveDescription');\n\n return getPhrase('videoDescription');\n}\n\nexport class VideoRestrictedError extends ErrorPageError {\n private video: VideoTypes;\n\n constructor(video: VideoTypes) {\n super(getTitle(video));\n\n this.video = video;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VideoRestrictedError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return getTitle(this.video);\n }\n\n // @ts-ignore\n public get description(): string {\n return getDescription(this.video);\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { RestrictedLibraryError } from 'libs/shared/errors/general/library-restricted/RestrictedLibraryError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { LoginRequiredError } from 'libs/shared/errors/videos/login-required/LoginRequiredError';\nimport { VideoNotInSubscriptionError } from 'libs/shared/errors/videos/not-in-subscription-error/VideoNotInSubscriptionError';\nimport { ParentVideoDeletedError } from 'libs/shared/errors/videos/parent-video-deleted/ParentVideoDeletedError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { VideoRatingAccessError } from 'libs/shared/errors/videos/video-rating-access/VideoRatingAccessError';\nimport { VideoRestrictedError } from 'libs/shared/errors/videos/video-restricted/VideoRestrictedError';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\n/**\n * NOTE: The logic for these errors is similar to logic in `ShareLinkFilter`.\n * If you update this, please also update `ShareLinkFilter`\n */\ntype ErrorReason =\n | 'rating-not-allowed'\n | 'video-deleted'\n | 'private'\n | 'clickview-private'\n | 'login-required'\n | 'restricted-access'\n | 'content-region-violated'\n | 'restricted-library';\n\ntype ErrorMap = Partial<Record<\n ErrorReason,\n new (video?: VideoTypes) => Core.Error\n>>;\n\nconst signedInErrorMap: ErrorMap = {\n 'rating-not-allowed': VideoRatingAccessError,\n 'video-deleted': ParentVideoDeletedError,\n 'private': VideoPrivateError,\n 'clickview-private': VideoNotInSubscriptionError,\n 'login-required': LoginRequiredError,\n 'restricted-access': VideoRestrictedError,\n 'content-region-violated': RegionLockedResourceError,\n 'restricted-library': RestrictedLibraryError\n};\n\nconst publicErrorMap: ErrorMap = {\n ...signedInErrorMap,\n 'private': LoginRequiredError,\n 'clickview-private': LoginRequiredError\n};\n\nexport const useCannotConsumeError = (\n videoResponse: Flight.Response<VideoTypes>,\n customErrorHandlers: ErrorMap = {}\n) => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n React.useEffect(() => {\n if (!videoResponse.hasCompleted || !currentUser.hasCompleted)\n return;\n\n const video = videoResponse.data;\n\n if (!video)\n return;\n\n const { canConsume, reason } = VideoHelper.getCanBeConsumed(video);\n\n if (canConsume)\n return;\n\n const errors = {\n ...(currentUser.data.isAuthenticated ? signedInErrorMap : publicErrorMap),\n ...customErrorHandlers\n };\n\n const errorCtor = errors[reason ?? 'private'] ?? UnspecifiedError;\n\n Core.ErrorHelper.throw(new errorCtor(video));\n }, [ videoResponse.hasCompleted, currentUser.hasCompleted ]);\n};"],"names":["namespace","RestrictedLibraryError","ErrorPageError","LanguageService","ArticleHelper","LiteSupportArticle","getPhrase","getDescription","video","VideoHelper","LoginRequiredError","Core.SilentError","VideoNotInSubscriptionError","getTitle","ParentVideoDeletedError","VideoPrivateError","VideoRatingAccessError","VideoRestrictedError","signedInErrorMap","RegionLockedResourceError","publicErrorMap","useCannotConsumeError","videoResponse","customErrorHandlers","currentUser","Flight.useBasicFetch","UserRequests","React","canConsume","reason","errorCtor","UnspecifiedError","Core.ErrorHelper"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as s,L as t,j as e}from"./app-BqRx5tK8.js";import{u as r,b as m}from"./BlAGsOOw.chunk.js";import{u as a}from"./C6H2bU7H.chunk.js";import{V as c}from"./CXK1uNgx.chunk.js";import{V as p}from"./BmScDBcl.chunk.js";import{C as n}from"./ClLzLF-_.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./DHqmPVfK.chunk.js";import"./BE7zUNFh.chunk.js";import"./sFV5nxD4.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./DxUueJN7.chunk.js";import"./DAocQXXC.chunk.js";import"./Dp_vnjo0.chunk.js";import"./BMba67Uf.chunk.js";import"./CaiGBx50.chunk.js";import"./CV5ioe9U.chunk.js";import"./D1U_fPVs.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";const d="_column2_1cfp0_1",l="_column1_1cfp0_1",o={column2:d,column1:l},u="videos.customerVideoOverview",i=t.encloseNamespace(u);function T(){return s({title:i("videos")}),a(i("videos")),r(m()),e.jsxs("div",{children:[e.jsx(n,{}),e.jsxs("div",{className:"d-flex",children:[e.jsx("div",{className:`pe-2 ${o.column1}`,children:e.jsx(p,{className:"h-100"})}),e.jsx("div",{className:`ps-2 ${o.column2}`,children:e.jsx(c,{className:"h-100"})})]})]})}export{T as CustomerVideoOverviewView};
|
|
2
|
-
//# sourceMappingURL=MaYDtnoS.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MaYDtnoS.chunk.js","sources":["../../src/apps/videos/views/customer-video-overview/CustomerVideoOverviewView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { ViewCountBarChartCardView } from 'shared/views/overview-cards/view-count-bar-chart-card/ViewCountBarChartCardView';\nimport { ViewCountPieChartCardView } from 'shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView';\n\nimport { CustomerVideosNav } from 'apps/videos/components/customer-videos-nav/CustomerVideosNav';\n\nimport styles from './customer-video-overview.module.scss';\n\nconst namespace = 'videos.customerVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function CustomerVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <CustomerVideosNav />\n <div className='d-flex'>\n <div className={`pe-2 ${styles.column1}`}>\n <ViewCountPieChartCardView className='h-100' />\n </div>\n <div className={`ps-2 ${styles.column2}`}>\n <ViewCountBarChartCardView className='h-100' />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","CustomerVideoOverviewView","useSetPageMetadata","useSetHeaderTitle","useSetHeaderActions","getVideoHeaderActions","jsx","CustomerVideosNav","jsxs","styles","ViewCountPieChartCardView","ViewCountBarChartCardView"],"mappings":"m0BAgBMA,EAAY,+BACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASG,GAAyC,CACvD,OAAAC,EAAmB,CAAE,MAAOH,EAAU,QAAQ,EAAG,EACjDI,EAAkBJ,EAAU,QAAQ,CAAC,EACrCK,EAAoBC,GAAuB,SAGxC,MAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAkB,EACnBC,EAAAA,KAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAW,QAAQG,EAAO,OAAO,GACpC,SAAAH,EAAAA,IAACI,EAAA,CAA0B,UAAU,OAAA,CAAQ,EAC/C,EACAJ,EAAAA,IAAC,MAAA,CAAI,UAAW,QAAQG,EAAO,OAAO,GACpC,SAAAH,EAAAA,IAACK,EAAA,CAA0B,UAAU,OAAA,CAAQ,CAAA,CAC/C,CAAA,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as C,j as n,A as o,g as r,L as b,bG as N,e as T,u as E,bZ as v,p as k,b_ as A,bR as j,O as c,bF as y}from"./app-BqRx5tK8.js";import{S as x}from"./DuNeLCIS.chunk.js";import{u as F}from"./UWjf2h5X.chunk.js";import{S as R}from"./BBOfq9my.chunk.js";const P="reportsInteractives.interactiveNav",i=b.encloseNamespace(P);function D(e,t,s){const a=[e];return[{label:i("overview"),appLink:{application:r.INTERACTIVES,action:o.Interactives.OVERVIEW,args:a,params:t}},...s?[]:[{label:i("results"),appLink:{application:r.INTERACTIVES,action:o.Interactives.RESULTS,args:a,params:t}},{label:i("questions"),appLink:{application:r.INTERACTIVES,action:o.Interactives.QUESTION_LIST,args:a,params:t}}],{label:i("engagement"),appLink:{application:r.INTERACTIVES,action:o.Interactives.ENGAGEMENT,args:a,params:t}}]}function U(e){const t=C(),s=D(e.interactiveMetadataId,t,e.hasInsights);return n.jsx(x,{items:s})}const H="reportsInteractives.hooks",p=b.encloseNamespace(H);function G(e){return`no:interactive:results:warning:${e}`}function V(){return n.jsxs(c,{className:"py-3",children:[n.jsx(c.Image,{src:y.EmptyStates.Interactives.NoData,className:"w-50 h-auto"}),n.jsx(c.Heading,{children:p("noResultsHeading")}),n.jsx(c.Info,{className:"w-100",children:p("noResultsDescription")})]})}function $(e){var I,g;const t=G(e),s=N.cacheGet(t),a=T(),l=F(e,a),d=(g=(I=l.data)==null?void 0:I.students)==null?void 0:g.length,u=!!l.data&&!d,h=E(u&&R.getShareLinkByObjectId(e)),m=E(u&&R.getSentDirectShareByObjectId(e)),f=!!h.hasCompleted&&h.statusCode===v.NotFound,L=!!m.hasCompleted&&m.statusCode===v.NotFound,S=f&&L;k.useEffect(()=>{!S||s||(N.cacheSet(t,!0),A.render(n.jsx(V,{}),{title:p("shareInteractive"),buttonContainerClassName:"border-top-0 justify-content-center mt-n4 pb-3",submitButtonProps:{text:p("shareInteractive"),onClick:()=>{j.trigger({application:r.DEFAULT,action:o.Default.SHARE,args:[e],params:{entityType:"interactive"}})},variant:"dark",className:"me-2"}}))},[S,s])}export{U as I,$ as u};
|
|
2
|
-
//# sourceMappingURL=T4Chmiqz.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"T4Chmiqz.chunk.js","sources":["../../src/apps/interactives/components/interactive-nav/InteractiveNav.tsx","../../src/apps/interactives/hooks/UseNoResultsPopup.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsInteractives.interactiveNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(interactiveMetadataId: string, params: FilterQueryParams, hasInsights: boolean): SubNavItem[] {\n const args = [interactiveMetadataId];\n\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.INTERACTIVES, action: Actions.Interactives.OVERVIEW, args, params }\n },\n ...(!hasInsights ? [\n {\n label: getPhrase('results'),\n appLink: { application: AppChannels.INTERACTIVES, action: Actions.Interactives.RESULTS, args, params }\n },\n {\n label: getPhrase('questions'),\n appLink: { application: AppChannels.INTERACTIVES, action: Actions.Interactives.QUESTION_LIST, args, params }\n }\n ] : []),\n {\n label: getPhrase('engagement'),\n appLink: { application: AppChannels.INTERACTIVES, action: Actions.Interactives.ENGAGEMENT, args, params }\n }\n ];\n}\n\ninterface InteractiveNavProps {\n interactiveMetadataId: string;\n hasInsights?: boolean;\n}\n\nexport function InteractiveNav(props: InteractiveNavProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(props.interactiveMetadataId, filterQueryParams, props.hasInsights);\n\n return (\n <SubNav items={navItems} />\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { DirectShare, ShareLink } from 'libs/shared/interfaces';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\n\nconst namespace = 'reportsInteractives.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLocalStorageKey(interactiveMetadataId: string): string {\n return `no:interactive:results:warning:${interactiveMetadataId}`;\n}\n\nfunction PopupContent(): JSX.Element {\n return (\n <EmptyState className='py-3'>\n <EmptyState.Image src={ImageUrls.EmptyStates.Interactives.NoData} className='w-50 h-auto' />\n <EmptyState.Heading>\n {getPhrase('noResultsHeading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('noResultsDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n\nexport function useNoResultsPopup(interactiveMetadataId: string): void {\n const localStorageKey = getLocalStorageKey(interactiveMetadataId);\n const hasSeenPopup = LocalStorageHelper.cacheGet(localStorageKey);\n\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(interactiveMetadataId, requestFilter);\n\n const hasResults = results.data?.students?.length;\n\n const shouldCheckShare = !!results.data && !hasResults;\n\n const shareLink = Flight.useBasicFetch<ShareLink>(shouldCheckShare &&\n ShareRequests.getShareLinkByObjectId(interactiveMetadataId));\n\n const directShare = Flight.useBasicFetch<DirectShare>(shouldCheckShare &&\n ShareRequests.getSentDirectShareByObjectId(interactiveMetadataId));\n\n const noShareLink = !!shareLink.hasCompleted && shareLink.statusCode === HttpStatus.NotFound;\n\n const noDirectShare = !!directShare.hasCompleted && directShare.statusCode === HttpStatus.NotFound;\n\n const showWarning = noShareLink && noDirectShare;\n\n React.useEffect(() => {\n if (!showWarning || hasSeenPopup)\n return;\n\n LocalStorageHelper.cacheSet(localStorageKey, true);\n\n DialogHelper.render(\n <PopupContent />,\n {\n title: getPhrase('shareInteractive'),\n buttonContainerClassName: 'border-top-0 justify-content-center mt-n4 pb-3',\n submitButtonProps: {\n text: getPhrase('shareInteractive'),\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [interactiveMetadataId],\n params: { entityType: 'interactive' }\n });\n },\n variant: 'dark',\n className: 'me-2'\n }\n }\n );\n }, [ showWarning, hasSeenPopup ]);\n}"],"names":["namespace","getPhrase","LanguageService","getNavItems","interactiveMetadataId","params","hasInsights","args","AppChannels","Actions","InteractiveNav","props","filterQueryParams","useGetAppLinkFilterParams","navItems","jsx","SubNav","getLocalStorageKey","PopupContent","jsxs","EmptyState","ImageUrls","useNoResultsPopup","localStorageKey","hasSeenPopup","LocalStorageHelper","requestFilter","useGetRequestFilter","results","useFetchInteractiveResults","hasResults","_b","_a","shouldCheckShare","shareLink","Flight.useBasicFetch","ShareRequests","directShare","noShareLink","HttpStatus","noDirectShare","showWarning","React","DialogHelper","Core.AppLinkHelper"],"mappings":"8PAWA,MAAMA,EAAY,qCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAYC,EAA+BC,EAA2BC,EAAoC,CACjH,MAAMC,EAAO,CAACH,CAAqB,EAEnC,MAAO,CACL,CACE,MAAOH,EAAU,UAAU,EAC3B,QAAS,CAAE,YAAaO,EAAY,aAAc,OAAQC,EAAQ,aAAa,SAAU,KAAAF,EAAM,OAAAF,CAAA,CAAO,EAExG,GAAKC,EASD,CAAA,EATe,CACjB,CACE,MAAOL,EAAU,SAAS,EAC1B,QAAS,CAAE,YAAaO,EAAY,aAAc,OAAQC,EAAQ,aAAa,QAAS,KAAAF,EAAM,OAAAF,CAAA,CAAO,EAEvG,CACE,MAAOJ,EAAU,WAAW,EAC5B,QAAS,CAAE,YAAaO,EAAY,aAAc,OAAQC,EAAQ,aAAa,cAAe,KAAAF,EAAM,OAAAF,CAAA,CAAO,CAC7G,EAEF,CACE,MAAOJ,EAAU,YAAY,EAC7B,QAAS,CAAE,YAAaO,EAAY,aAAc,OAAQC,EAAQ,aAAa,WAAY,KAAAF,EAAM,OAAAF,CAAA,CAAO,CAC1G,CAEJ,CAOO,SAASK,EAAeC,EAAyC,CACtE,MAAMC,EAAoBC,EAAA,EAEpBC,EAAWX,EAAYQ,EAAM,sBAAuBC,EAAmBD,EAAM,WAAW,EAE9F,OACEI,EAAAA,IAACC,EAAA,CAAO,MAAOF,CAAA,CAAU,CAE7B,CChCA,MAAMd,EAAY,4BACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASiB,EAAmBb,EAAuC,CACjE,MAAO,kCAAkCA,CAAqB,EAChE,CAEA,SAASc,GAA4B,CACnC,OACEC,EAAAA,KAACC,EAAA,CAAW,UAAU,OACpB,SAAA,CAAAL,EAAAA,IAACK,EAAW,MAAX,CAAiB,IAAKC,EAAU,YAAY,aAAa,OAAQ,UAAU,aAAA,CAAc,QACzFD,EAAW,QAAX,CACE,SAAAnB,EAAU,kBAAkB,EAC/B,EACAc,MAACK,EAAW,KAAX,CAAgB,UAAU,QACxB,SAAAnB,EAAU,sBAAsB,CAAA,CACnC,CAAA,EACF,CAEJ,CAEO,SAASqB,EAAkBlB,EAAqC,SACrE,MAAMmB,EAAkBN,EAAmBb,CAAqB,EAC1DoB,EAAeC,EAAmB,SAASF,CAAe,EAE1DG,EAAgBC,EAAA,EAChBC,EAAUC,EAA2BzB,EAAuBsB,CAAa,EAEzEI,GAAaC,GAAAC,EAAAJ,EAAQ,OAAR,YAAAI,EAAc,WAAd,YAAAD,EAAwB,OAErCE,EAAmB,CAAC,CAACL,EAAQ,MAAQ,CAACE,EAEtCI,EAAYC,EAAgCF,GAChDG,EAAc,uBAAuBhC,CAAqB,CAAC,EAEvDiC,EAAcF,EAAkCF,GACpDG,EAAc,6BAA6BhC,CAAqB,CAAC,EAE7DkC,EAAc,CAAC,CAACJ,EAAU,cAAgBA,EAAU,aAAeK,EAAW,SAE9EC,EAAgB,CAAC,CAACH,EAAY,cAAgBA,EAAY,aAAeE,EAAW,SAEpFE,EAAcH,GAAeE,EAEnCE,EAAM,UAAU,IAAM,CAChB,CAACD,GAAejB,IAGpBC,EAAmB,SAASF,EAAiB,EAAI,EAEjDoB,EAAa,aACVzB,EAAA,EAAa,EACd,CACE,MAAOjB,EAAU,kBAAkB,EACnC,yBAA0B,iDAC1B,kBAAmB,CACjB,KAAMA,EAAU,kBAAkB,EAClC,QAAS,IAAM,CACb2C,EAAmB,QAAQ,CACzB,YAAapC,EAAY,QACzB,OAAQC,EAAQ,QAAQ,MACxB,KAAM,CAACL,CAAqB,EAC5B,OAAQ,CAAE,WAAY,aAAA,CAAc,CACrC,CACH,EACA,QAAS,OACT,UAAW,MAAA,CACb,CACF,EAEJ,EAAG,CAAEqC,EAAajB,CAAa,CAAC,CAClC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{aw as c,u as o,U as v,bO as d}from"./app-BqRx5tK8.js";import{g as m}from"./sFV5nxD4.chunk.js";function p(t,e,a){return{currentUserId:t.id,currentCustomerId:t.customerId,dateRange:e?{start:e.start,end:e.end}:void 0,userIds:e==null?void 0:e.userId,classroomsAndGroups:e==null?void 0:e.groupId,shareId:a}}const l={interactiveResultSet(t,e,a,n,s,r,i,u){return{url:s?`/api/domain/v3/analytics/interactives/${t}/metadata/${e}`:`/api/domain/v2/analytics/interactives/${t}/metadata/${e}`,key:m(`interactive:result:set:${t}:${e}:${s}`,n),data:p(a,n,s),type:c.POST,normalize:!1,success:r,error:i,always:u}},mark(t,e,a,n,s,r,i){return{url:`/api/domain/v1/analytics/answers/${a}`,key:`mark:answer:${a}:${n.resultId}`,type:c.PUT,data:n,normalize:!1,invalidationKeys:`interactive:result:set:${t}:${e}`,success:s,error:r,always:i}},pendingReviews(t){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:`interactives:pending:reviews:${t.interactives.map(a=>`${a.interactiveId}:${a.metadataId}:${a.shareId}`).join(",")}`,type:c.POST,data:t,normalize:!1}},interactiveResultsReport(t){return{url:"/api/domain/v3/analytics/interactives/report",key:"interactive:results:report",data:t,type:c.POST,normalize:!1}}};function R(t,e,a){var u;const n=o(v.currentUser()),s=o(!!t&&d.interactiveMetadata(t)),r=o(!!((u=s.data)!=null&&u.interactiveId)&&d.interactive(s.data.interactiveId)),i=!!n.data&&!!r.data;return o(i&&l.interactiveResultSet(s.data.interactiveId,s.data.id,n.data,e,a))}export{l as I,R as u};
|
|
2
|
-
//# sourceMappingURL=UWjf2h5X.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UWjf2h5X.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","../../../../libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n shareId?: string;\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n shareId?: string\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: filter ? { start: filter.start, end: filter.end } : undefined,\n userIds: filter?.userId,\n classroomsAndGroups: filter?.groupId,\n shareId: shareId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter?: AnalyticsRequestFilter,\n shareId?: string,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: shareId ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}:${shareId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter, shareId),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n const key = data.interactives.map(interactive => `${interactive.interactiveId}:${interactive.metadataId}:${interactive.shareId}`).join(',');\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews:${key}`,\n type: HttpVerbs.POST,\n data,\n normalize: false\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '/api/domain/v3/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter?: AnalyticsRequestFilter,\n shareId?: string\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data;\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n shareId\n ));\n}"],"names":["getInteractiveResultFilters","currentUser","filter","shareId","InteractiveResultsRequests","interactiveId","interactiveMetadataId","success","error","always","getAnalyticsRequestKey","HttpVerbs","answerId","data","interactive","useFetchInteractiveResults","requestFilter","Flight.useBasicFetch","UserRequests","interactiveMetadata","InteractiveRequests","_a","shouldFetchResults"],"mappings":"qGAkBA,SAASA,EACPC,EACAC,EACAC,EAC0B,CAC1B,MAAO,CACL,cAAeF,EAAY,GAC3B,kBAAmBA,EAAY,WAC/B,UAAWC,EAAS,CAAE,MAAOA,EAAO,MAAO,IAAKA,EAAO,GAAA,EAAQ,OAC/D,QAASA,GAAA,YAAAA,EAAQ,OACjB,oBAAqBA,GAAA,YAAAA,EAAQ,QAC7B,QAAAC,CAAA,CAEJ,CAEO,MAAMC,EAA6B,CAMxC,qBACEC,EACAC,EACAL,EACAC,EACAC,EACAI,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKN,EACH,yCAAyCE,CAAa,aAAaC,CAAqB,GACxF,yCAAyCD,CAAa,aAAaC,CAAqB,GAC1F,IAAKI,EAAuB,0BAA0BL,CAAa,IAAIC,CAAqB,IAAIH,CAAO,GAAID,CAAM,EACjH,KAAMF,EAA4BC,EAAaC,EAAQC,CAAO,EAC9D,KAAMQ,EAAU,KAChB,UAAW,GACX,QAAAJ,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,EAMA,KACEJ,EACAC,EACAM,EACAC,EACAN,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAK,oCAAoCG,CAAQ,GACjD,IAAK,eAAeA,CAAQ,IAAIC,EAAK,QAAQ,GAC7C,KAAMF,EAAU,IAChB,KAAAE,EACA,UAAW,GACX,iBAAkB,0BAA0BR,CAAa,IAAIC,CAAqB,GAClF,QAAAC,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,EAEA,eAAeI,EAAyD,CAEtE,MAAO,CACL,IAAK,gEACL,IAAK,gCAHKA,EAAK,aAAa,IAAIC,GAAe,GAAGA,EAAY,aAAa,IAAIA,EAAY,UAAU,IAAIA,EAAY,OAAO,EAAE,EAAE,KAAK,GAAG,CAGhG,GACxC,KAAMH,EAAU,KAChB,KAAAE,EACA,UAAW,EAAA,CAEf,EAEA,yBAAyBA,EAAgD,CACvE,MAAO,CACL,IAAK,+CACL,IAAK,6BACL,KAAAA,EACA,KAAMF,EAAU,KAChB,UAAW,EAAA,CAEf,CACF,ECtGO,SAASI,EACdT,EACAU,EACAb,EACuC,OACvC,MAAMF,EAAcgB,EAAkCC,EAAa,aAAa,EAE1EC,EAAsBF,EAA0C,CAAC,CAACX,GACtEc,EAAoB,oBAAoBd,CAAqB,CAAC,EAE1DQ,EAAcG,EAAkC,CAAC,GAACI,EAAAF,EAAoB,OAApB,MAAAE,EAA0B,gBAChFD,EAAoB,YAAYD,EAAoB,KAAK,aAAa,CAAC,EAEnEG,EAAqB,CAAC,CAACrB,EAAY,MAAQ,CAAC,CAACa,EAAY,KAE/D,OAAOG,EAA2CK,GAChDlB,EAA2B,qBACzBe,EAAoB,KAAK,cACzBA,EAAoB,KAAK,GACzBlB,EAAY,KACZe,EACAb,CAAA,CACD,CACL"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as r}from"./app-BqRx5tK8.js";function l(o){return r.jsx("svg",{...o,children:r.jsx("path",{d:"M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0",fill:"currentColor"})})}export{l as C};
|
|
2
|
-
//# sourceMappingURL=VSmYRJOj.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VSmYRJOj.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronDownSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function ChevronDownSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["ChevronDownSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as v}from"./app-BqRx5tK8.js";var S=new Map,h=new WeakMap,A=0,x=void 0;function M(e){return e?(h.has(e)||(A+=1,h.set(e,A.toString())),h.get(e)):"0"}function O(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?M(e.root):e[t]}`).toString()}function T(e){const t=O(e);let n=S.get(t);if(!n){const u=new Map;let c;const i=new IntersectionObserver(s=>{s.forEach(r=>{var o;const g=r.isIntersecting&&c.some(d=>r.intersectionRatio>=d);e.trackVisibility&&typeof r.isVisible>"u"&&(r.isVisible=g),(o=u.get(r.target))==null||o.forEach(d=>{d(g,r)})})},e);c=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:u},S.set(t,n)}return n}function _(e,t,n={},u=x){if(typeof window.IntersectionObserver>"u"&&u!==void 0){const o=e.getBoundingClientRect();return t(u,{isIntersecting:u,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),()=>{}}const{id:c,observer:i,elements:s}=T(n),r=s.get(e)||[];return s.has(e)||s.set(e,r),r.push(t),i.observe(e),function(){r.splice(r.indexOf(t),1),r.length===0&&(s.delete(e),i.unobserve(e)),s.size===0&&(i.disconnect(),S.delete(c))}}function C({threshold:e,delay:t,trackVisibility:n,rootMargin:u,root:c,triggerOnce:i,skip:s,initialInView:r,fallbackInView:o,onChange:g}={}){var d;const[b,V]=v.useState(null),l=v.useRef(),[R,p]=v.useState({inView:!!r,entry:void 0});l.current=g,v.useEffect(()=>{if(s||!b)return;let a;return a=_(b,(E,I)=>{p({inView:E,entry:I}),l.current&&l.current(E,I),I.isIntersecting&&i&&a&&(a(),a=void 0)},{root:c,rootMargin:u,threshold:e,trackVisibility:n,delay:t},o),()=>{a&&a()}},[Array.isArray(e)?e.toString():e,b,c,u,i,s,n,o,t]);const w=(d=R.entry)==null?void 0:d.target,y=v.useRef();!b&&w&&!i&&!s&&y.current!==w&&(y.current=w,p({inView:!!r,entry:void 0}));const f=[V,R.inView,R.entry];return f.ref=f[0],f.inView=f[1],f.entry=f[2],f}export{C as u};
|
|
2
|
-
//# sourceMappingURL=W5zJjbqu.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"W5zJjbqu.chunk.js","sources":["../../../../../node_modules/react-intersection-observer/index.mjs"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root)\n return \"0\";\n if (RootIds.has(root))\n return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip)\n return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref)\n return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current)\n callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map"],"names":["observerMap","RootIds","rootId","unsupportedValue","getRootId","root","optionsToId","options","key","createObserver","id","instance","elements","thresholds","observer","entries","entry","_a","inView","threshold","callback","observe","element","fallbackInView","bounds","callbacks","useInView","delay","trackVisibility","rootMargin","triggerOnce","skip","initialInView","onChange","ref","setRef","React2.useState","React2.useRef","state","setState","React2.useEffect","unobserve","entryTarget","previousEntryTarget","result"],"mappings":"sCAYA,IAAIA,EAA8B,IAAI,IAClCC,EAA0B,IAAI,QAC9BC,EAAS,EACTC,EAAmB,OAIvB,SAASC,EAAUC,EAAM,CACvB,OAAKA,GAEDJ,EAAQ,IAAII,CAAI,IAEpBH,GAAU,EACVD,EAAQ,IAAII,EAAMH,EAAO,SAAQ,CAAE,GAC5BD,EAAQ,IAAII,CAAI,GALd,GAMX,CACA,SAASC,EAAYC,EAAS,CAC5B,OAAO,OAAO,KAAKA,CAAO,EAAE,KAAI,EAAG,OAChCC,GAAQD,EAAQC,CAAG,IAAM,MAC9B,EAAI,IAAKA,GACE,GAAGA,CAAG,IAAIA,IAAQ,OAASJ,EAAUG,EAAQ,IAAI,EAAIA,EAAQC,CAAG,CAAC,EACzE,EAAE,SAAQ,CACb,CACA,SAASC,EAAeF,EAAS,CAC/B,MAAMG,EAAKJ,EAAYC,CAAO,EAC9B,IAAII,EAAWX,EAAY,IAAIU,CAAE,EACjC,GAAI,CAACC,EAAU,CACb,MAAMC,EAA2B,IAAI,IACrC,IAAIC,EACJ,MAAMC,EAAW,IAAI,qBAAsBC,GAAY,CACrDA,EAAQ,QAASC,GAAU,CACzB,IAAIC,EACJ,MAAMC,EAASF,EAAM,gBAAkBH,EAAW,KAAMM,GAAcH,EAAM,mBAAqBG,CAAS,EACtGZ,EAAQ,iBAAmB,OAAOS,EAAM,UAAc,MACxDA,EAAM,UAAYE,IAEnBD,EAAKL,EAAS,IAAII,EAAM,MAAM,IAAM,MAAgBC,EAAG,QAASG,GAAa,CAC5EA,EAASF,EAAQF,CAAK,CACxB,CAAC,CACH,CAAC,CACH,EAAGT,CAAO,EACVM,EAAaC,EAAS,aAAe,MAAM,QAAQP,EAAQ,SAAS,EAAIA,EAAQ,UAAY,CAACA,EAAQ,WAAa,CAAC,GACnHI,EAAW,CACT,GAAAD,EACA,SAAAI,EACA,SAAAF,CACN,EACIZ,EAAY,IAAIU,EAAIC,CAAQ,CAC9B,CACA,OAAOA,CACT,CACA,SAASU,EAAQC,EAASF,EAAUb,EAAU,CAAA,EAAIgB,EAAiBpB,EAAkB,CACnF,GAAI,OAAO,OAAO,qBAAyB,KAAeoB,IAAmB,OAAQ,CACnF,MAAMC,EAASF,EAAQ,sBAAqB,EAC5C,OAAAF,EAASG,EAAgB,CACvB,eAAgBA,EAChB,OAAQD,EACR,kBAAmB,OAAOf,EAAQ,WAAc,SAAWA,EAAQ,UAAY,EAC/E,KAAM,EACN,mBAAoBiB,EACpB,iBAAkBA,EAClB,WAAYA,CAClB,CAAK,EACM,IAAM,CACb,CACF,CACA,KAAM,CAAE,GAAAd,EAAI,SAAAI,EAAU,SAAAF,CAAQ,EAAKH,EAAeF,CAAO,EACnDkB,EAAYb,EAAS,IAAIU,CAAO,GAAK,CAAA,EAC3C,OAAKV,EAAS,IAAIU,CAAO,GACvBV,EAAS,IAAIU,EAASG,CAAS,EAEjCA,EAAU,KAAKL,CAAQ,EACvBN,EAAS,QAAQQ,CAAO,EACjB,UAAqB,CAC1BG,EAAU,OAAOA,EAAU,QAAQL,CAAQ,EAAG,CAAC,EAC3CK,EAAU,SAAW,IACvBb,EAAS,OAAOU,CAAO,EACvBR,EAAS,UAAUQ,CAAO,GAExBV,EAAS,OAAS,IACpBE,EAAS,WAAU,EACnBd,EAAY,OAAOU,CAAE,EAEzB,CACF,CAgHA,SAASgB,EAAU,CACjB,UAAAP,EACA,MAAAQ,EACA,gBAAAC,EACA,WAAAC,EACA,KAAAxB,EACA,YAAAyB,EACA,KAAAC,EACA,cAAAC,EACA,eAAAT,EACA,SAAAU,CACF,EAAI,GAAI,CACN,IAAIhB,EACJ,KAAM,CAACiB,EAAKC,CAAM,EAAIC,EAAAA,SAAgB,IAAI,EACpChB,EAAWiB,EAAAA,OAAa,EACxB,CAACC,EAAOC,CAAQ,EAAIH,WAAgB,CACxC,OAAQ,CAAC,CAACJ,EACV,MAAO,MACX,CAAG,EACDZ,EAAS,QAAUa,EACnBO,EAAAA,UACE,IAAM,CACJ,GAAIT,GAAQ,CAACG,EACX,OACF,IAAIO,EACJ,OAAAA,EAAYpB,EACVa,EACA,CAAChB,EAAQF,IAAU,CACjBuB,EAAS,CACP,OAAArB,EACA,MAAAF,CACZ,CAAW,EACGI,EAAS,SACXA,EAAS,QAAQF,EAAQF,CAAK,EAC5BA,EAAM,gBAAkBc,GAAeW,IACzCA,EAAS,EACTA,EAAY,OAEhB,EACA,CACE,KAAApC,EACA,WAAAwB,EACA,UAAAV,EAEA,gBAAAS,EAEA,MAAAD,CACV,EACQJ,CACR,EACa,IAAM,CACPkB,GACFA,EAAS,CAEb,CACF,EAGA,CAEE,MAAM,QAAQtB,CAAS,EAAIA,EAAU,SAAQ,EAAKA,EAClDe,EACA7B,EACAwB,EACAC,EACAC,EACAH,EACAL,EACAI,CACN,CACA,EACE,MAAMe,GAAezB,EAAKqB,EAAM,QAAU,KAAO,OAASrB,EAAG,OACvD0B,EAAsBN,EAAAA,OAAa,EACrC,CAACH,GAAOQ,GAAe,CAACZ,GAAe,CAACC,GAAQY,EAAoB,UAAYD,IAClFC,EAAoB,QAAUD,EAC9BH,EAAS,CACP,OAAQ,CAAC,CAACP,EACV,MAAO,MACb,CAAK,GAEH,MAAMY,EAAS,CAACT,EAAQG,EAAM,OAAQA,EAAM,KAAK,EACjD,OAAAM,EAAO,IAAMA,EAAO,CAAC,EACrBA,EAAO,OAASA,EAAO,CAAC,EACxBA,EAAO,MAAQA,EAAO,CAAC,EAChBA,CACT","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as n,a5 as r,L as o}from"./app-BqRx5tK8.js";import{P as l}from"./DFhb3ZfO.chunk.js";const m="interactives.pendingIndicator",d=o.encloseNamespace(m);function u(e){let t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=` ${e.className}`),t}function g(e){const{title:t,showLabel:a,tooltipClassName:c,showIndicator:i=!0}=e,s=()=>n.jsxs("div",{className:u(e),children:[!!a&&n.jsx("em",{children:d("pending")}),!!i&&n.jsx(l,{})]});return t?n.jsx(r,{title:t,spanHack:!0,spanHackClassName:c||"h-100 w-100 d-flex align-items-center",children:n.jsx(s,{})}):n.jsx(s,{})}export{g as P};
|
|
2
|
-
//# sourceMappingURL=YDhSgJI6.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"YDhSgJI6.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n showIndicator?: boolean;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const { title, showLabel, tooltipClassName, showIndicator = true } = props;\n\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n {!!showIndicator &&\n <PercentageIndicator />\n }\n </div>\n );\n\n if (!title)\n return <Indicator />;\n\n return (\n <Tooltip title={title} spanHack spanHackClassName={tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}"],"names":["namespace","getPhrase","LanguageService","getClassName","props","className","PendingIndicator","title","showLabel","tooltipClassName","showIndicator","Indicator","jsxs","jsx","PercentageIndicator","Tooltip"],"mappings":"6FAOA,MAAMA,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAaC,EAAsC,CAC1D,IAAIC,EAAY,kCAEhB,OAAAA,GAAaD,EAAM,UAAY,2BAA6B,0BAExDA,EAAM,YACRC,GAAa,IAAID,EAAM,SAAS,IAE3BC,CACT,CAUO,SAASC,EAAiBF,EAA2C,CAC1E,KAAM,CAAE,MAAAG,EAAO,UAAAC,EAAW,iBAAAC,EAAkB,cAAAC,EAAgB,IAASN,EAE/DO,EAAY,IAChBC,EAAAA,KAAC,OAAI,UAAWT,EAAaC,CAAK,EAC/B,SAAA,CAAA,CAAC,CAACI,GACDK,EAAAA,IAAC,KAAA,CAAI,SAAAZ,EAAU,SAAS,EAAE,EAE3B,CAAC,CAACS,GACDG,MAACC,EAAA,CAAA,CAAoB,CAAA,EAEzB,EAGF,OAAKP,EAIHM,EAAAA,IAACE,EAAA,CAAQ,MAAAR,EAAc,SAAQ,GAAC,kBAAmBE,GAAoB,wCACrE,SAAAI,EAAAA,IAACF,EAAA,CAAA,CAAU,CAAA,CACb,QALQA,EAAA,EAAU,CAOtB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,T as o,e as g,u as v,S as b,h as f,N as S,E as w,d as y,L as N,i as j,A as m,g as p,k as V,I as k,l as T,m as C,n as _,a as I}from"./app-BqRx5tK8.js";import{T as L}from"./D1U_fPVs.chunk.js";import{u as A}from"./C6H2bU7H.chunk.js";import{S as E,a as F}from"./DgHfAOys.chunk.js";import{T as O}from"./tCFcWStO.chunk.js";import{S as D}from"./DWv8V3Lc.chunk.js";import{u as P}from"./CqyCLTzN.chunk.js";import{V as q,T as $,a as R}from"./D_Erj5Yn.chunk.js";import{u as M}from"./Cl51qIgL.chunk.js";import{V as H}from"./BzBFC5UE.chunk.js";import"./sFV5nxD4.chunk.js";import"./CbmUUNB4.chunk.js";import"./Dp_vnjo0.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./CwyVC768.chunk.js";import"./DHqmPVfK.chunk.js";import"./xkqdG021.chunk.js";import"./CdzMtbgC.chunk.js";import"./B_1LOG5E.chunk.js";import"./BUM8Ub4p.chunk.js";const z="reportsDashboard.topSearchesCardEmptyStateV2";function B(){return e.jsx("div",{className:"d-flex align-items-center justify-content-center text-center h-100",children:e.jsx(o,{namespace:z,phrase:"message"})})}function G(){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"partial-loading-background w-50 mb-3",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-25",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-33",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-33",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-50",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-25",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-100",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-25",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-75",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-33",children:" "}),e.jsx("div",{className:"partial-loading-background mb-3 w-100",children:" "})]})}const U="reportsDashboard.topSearchesCardV2";function Q(){const i=g(),s=v(D.topSearches(i)),n=P(w.getPrimarySearchUrl);return e.jsx("div",{className:"d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3",children:s.data?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"h6 mb-3",children:e.jsx(o,{namespace:U,phrase:"topSearches"})}),s.data.length?e.jsx(e.Fragment,{children:e.jsx(b,{className:"position-relative",children:e.jsx("ol",{className:"position-absolute w-100 ps-4",children:s.data.map((t,d)=>e.jsx("li",{className:"mb-3",children:e.jsxs("a",{href:n(t.query),target:"_blank",className:"position-relative d-flex justify-content-between align-items-center pe-5",children:[e.jsx("span",{children:t.query}),e.jsx("div",{className:"position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3",children:e.jsx(f,{svg:S})})]})},d))})})}):e.jsx(B,{})]}):e.jsx(G,{})})}const W="reportsDashboard.topStreamsCardEmptyState";function J(){return e.jsx("div",{className:"d-flex align-items-center justify-content-center text-center h-100",children:e.jsx(o,{namespace:W,phrase:"message"})})}function K(){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"partial-loading-background w-50 mb-3",children:" "}),e.jsx("div",{className:"position-relative",children:e.jsx("ul",{className:"list-unstyled position-absolute top-0 start-0 w-100 h-100",children:Array(10).fill(null).map((i,s)=>e.jsx("li",{className:"mb-3",children:e.jsxs("div",{className:"row g-0",children:[e.jsx("div",{className:"col-5",children:e.jsx("div",{className:"ratio ratio-16x9 rounded partial-loading-background"})}),e.jsx("div",{className:"col-7 d-flex align-items-center",children:e.jsxs("div",{className:"mx-2 w-100",children:[e.jsx("div",{className:"w-100 partial-loading-background mb-1",children:" "}),e.jsx("div",{className:"w-75 partial-loading-background",children:" "})]})})]})},s))})})]})}const h="reportsDashboard.topStreamsCard",X=N.encloseNamespace(h),Y=10;function Z(){var x,u;const i=y(),s=g(),n=v(H.topStreams(Y,s)),t=M(((x=n.data)==null?void 0:x.map(c=>c.objectId))??[],C.videos),d=n.hasCompleted&&!t.isFetching;return e.jsx("div",{className:"d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3",children:d?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx("h2",{className:"h6 mb-3",children:X("topVideos")}),e.jsx(j,{appLink:{application:p.VIDEOS,action:m.Videos.TOP_VIDEOS},className:"text-info",children:e.jsx(o,{namespace:h,phrase:"seeAll"})})]}),(u=t.itemsArr)!=null&&u.length?e.jsx(b,{className:"position-relative",children:e.jsx("div",{className:"position-absolute w-100",children:e.jsx("ul",{className:"list-unstyled",children:n.data.map(c=>{const a=t.items[c.objectId];if(a)return e.jsx("li",{className:"mb-3",children:e.jsx(j,{appLink:V(a,i),children:e.jsxs("div",{className:"row g-0",children:[e.jsx("div",{className:"col-5",children:e.jsx(q,{video:a,imageOptions:{size:k.Small},textPosition:$.Independent,type:"cosmetic",hideMask:!0,size:"sm"})}),e.jsx("div",{className:"col-7",children:e.jsxs("div",{className:"d-flex flex-column mx-2",children:[T.isVideoType(a)&&e.jsx(R,{type:"series",video:a,analyticsOptions:null,className:"d-inline clamp-1"}),e.jsx("span",{className:"clamp-2 fw-medium",children:a.name}),e.jsx(o,{namespace:h,phrase:"views",options:{smartCount:c.count}})]})})]})})},a.id)})})})}):e.jsx(J,{})]}):e.jsx(K,{})})}const ee="_column1_1303k_1",se="_column2_1303k_4",ae="_column3_1303k_7",ie="_videoViews_1303k_14",te="_topClassifications_1303k_20",l={column1:ee,column2:se,column3:ae,videoViews:ie,topClassifications:te},re=10,ne="reportsDashboard.schoolAnalyticsDashboard",r=N.encloseNamespace(ne);function Ae(){const i=_(),s=r(i?"tertiaryDashboard":"dashboard");return I({title:s}),A(s),e.jsxs("div",{className:"d-flex",children:[e.jsxs("div",{className:`d-flex flex-column gap-3 ${l.column1}`,children:[e.jsx("div",{className:"h-50",children:e.jsx(E,{type:"year_group",appLink:{application:p.VIDEOS,action:m.Videos.HOME},appLinkText:r("seeOverview")})}),e.jsx("div",{className:"h-50",children:e.jsx(Q,{})})]}),e.jsx("div",{className:`${l.column2} px-3`,children:e.jsx(Z,{})}),e.jsxs("div",{className:`d-flex flex-column gap-3 ${l.column3}`,children:[e.jsx("div",{className:l.videoViews,children:e.jsx(F,{type:"user_type"})}),e.jsx("div",{className:l.topClassifications,children:e.jsx(O,{type:L.RootTopic,heading:r("subjects"),appLink:{application:p.VIDEOS,action:m.Videos.HOME},appLinkText:r("seeOverview"),emptyStateText:r("emptySubjects"),limit:re})})]})]})}export{Ae as SchoolAnalyticsDashboardView};
|
|
2
|
-
//# sourceMappingURL=Yi67NERS.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Yi67NERS.chunk.js","sources":["../../src/apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2.tsx","../../src/apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard.tsx","../../src/apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView.tsx","../../src/apps/dashboard/views/school-analytics-dashboard/SchoolAnalyticsDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topSearchesCardEmptyStateV2';\n\nexport function TopSearchesCardEmptyStateV2() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}","import React from 'react';\n\nexport function PartialTopSearchesCardV2() {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-50'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n <div className='partial-loading-background mb-3 w-25'> </div>\n <div className='partial-loading-background mb-3 w-75'> </div>\n <div className='partial-loading-background mb-3 w-33'> </div>\n <div className='partial-loading-background mb-3 w-100'> </div>\n </>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { SearchRequests } from 'shared/flight-requests/SearchRequests';\nimport { useGetExternalUrl } from 'shared/hooks/UseGetExternalUrl';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopSearch } from 'shared/interfaces';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\n\nimport { TopSearchesCardEmptyStateV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/empty-state/TopSearchesCardEmptyStateV2';\nimport { PartialTopSearchesCardV2 } from 'apps/dashboard/views/overview-cards/top-searches-v2/partial-loading/PartialTopSearchesCardV2';\n\nconst namespace = 'reportsDashboard.topSearchesCardV2';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopSearchesCardV2View() {\n const requestFilter = useGetRequestFilter();\n\n const searches = Flight.useBasicFetch<TopSearch[]>(SearchRequests.topSearches(requestFilter));\n\n const getSearchUrl = useGetExternalUrl(ExternalRouteHelper.getPrimarySearchUrl);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {searches.data ? (\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='topSearches' /></h2>\n\n {searches.data.length ?\n <>\n <Scrollbars className='position-relative'>\n <ol className='position-absolute w-100 ps-4'>\n {searches.data.map((s, idx) => {\n return (\n <li\n key={idx}\n className='mb-3'\n >\n <a\n href={getSearchUrl(s.query)}\n target='_blank'\n className='position-relative d-flex justify-content-between align-items-center pe-5'\n >\n <span>\n {s.query}\n </span>\n <div className='position-absolute w-100 text-end opacity-0 opacity-100-hover pe-3'>\n <SvgContainer svg={NewWindowSvg} />\n </div>\n </a>\n </li>\n );\n })}\n </ol>\n </Scrollbars>\n </>\n : <TopSearchesCardEmptyStateV2 />\n }\n </>\n ) : <PartialTopSearchesCardV2 />}\n </div>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'reportsDashboard.topStreamsCardEmptyState';\n\nexport function TopStreamsCardEmptyState() {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}","import React from 'react';\n\nexport function PartialTopStreamsCard(): JSX.Element {\n return (\n <>\n <div className='partial-loading-background w-50 mb-3'> </div>\n\n <div className='position-relative'>\n <ul className='list-unstyled position-absolute top-0 start-0 w-100 h-100'>\n {Array(10).fill(null).map((_, i) => (\n <li key={i} className='mb-3'>\n <div className='row g-0'>\n <div className='col-5'>\n <div className='ratio ratio-16x9 rounded partial-loading-background' />\n </div>\n <div className='col-7 d-flex align-items-center'>\n <div className='mx-2 w-100'>\n <div className='w-100 partial-loading-background mb-1'> </div>\n <div className='w-75 partial-loading-background'> </div>\n </div>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopVideoV2 } from 'shared/interfaces';\nimport { getSchoolVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { TopStreamsCardEmptyState } from 'apps/dashboard/views/overview-cards/top-streams/empty-state/TopStreamsCardEmptyState';\nimport { PartialTopStreamsCard } from 'apps/dashboard/views/overview-cards/top-streams/partial-loading/PartialTopStreamsCard';\n\nconst namespace = 'reportsDashboard.topStreamsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 10;\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopStreamsCardView() {\n const filterQueryParams = useGetAppLinkFilterParams();\n const requestFilter = useGetRequestFilter();\n\n const topStreams = Flight.useBasicFetch<TopVideoV2[]>(VideoViewsV2Requests.topStreams(LIMIT, requestFilter));\n\n const videos = useBatchFetch<VideoTypes>(\n topStreams.data?.map(v => v.objectId) ?? [],\n VideoRequests.videos\n );\n\n const hasLoaded = (\n topStreams.hasCompleted &&\n !videos.isFetching\n );\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden px-3 rounded pt-3'>\n {hasLoaded ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{getPhrase('topVideos')}</h2>\n <AppLink\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.TOP_VIDEOS }}\n className='text-info'\n >\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n </div>\n\n {videos.itemsArr?.length ?\n <Scrollbars className='position-relative'>\n <div className='position-absolute w-100'>\n <ul className='list-unstyled'>\n {topStreams.data.map(stream => {\n const video = videos.items[stream.objectId];\n\n if (!video)\n return;\n\n return (\n <li key={video.id} className='mb-3'>\n <AppLink appLink={getSchoolVideoAppLink(video, filterQueryParams)}>\n <div className='row g-0'>\n <div className='col-5'>\n <VideoThumbnail\n video={video}\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n size='sm'\n />\n </div>\n <div className='col-7'>\n <div className='d-flex flex-column mx-2'>\n {VideoHelper.isVideoType(video) && (\n <VideoSubText\n type='series'\n video={video}\n analyticsOptions={null}\n className='d-inline clamp-1'\n />\n )}\n <span className='clamp-2 fw-medium'>\n {video.name}\n </span>\n <Text namespace={namespace} phrase='views' options={{ smartCount: stream.count }} />\n </div>\n </div>\n </div>\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n </Scrollbars>\n : <TopStreamsCardEmptyState />\n }\n </>\n : <PartialTopStreamsCard />\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useIsTertiary } from 'shared/hooks/useIsTertiary';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\n\nimport { TopSearchesCardV2View } from 'apps/dashboard/views/overview-cards/top-searches-v2/TopSearchesCardV2View';\nimport { TopStreamsCardView } from 'apps/dashboard/views/overview-cards/top-streams/TopStreamsCardView';\n\nimport styles from './school-analytics-dashboard.module.scss';\n\nconst TOP_CLASSIFICATIONS_LIMIT = 10;\n\nconst namespace = 'reportsDashboard.schoolAnalyticsDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SchoolAnalyticsDashboardView(): JSX.Element {\n const isTertiary = useIsTertiary();\n\n const header = isTertiary ? getPhrase('tertiaryDashboard') : getPhrase('dashboard');\n\n useSetPageMetadata({ title: header });\n useSetHeaderTitle(header);\n\n return (\n <div className='d-flex'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className='h-50'>\n <StreamsBarChartCardView\n type='year_group'\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n />\n </div>\n <div className='h-50'>\n <TopSearchesCardV2View />\n </div>\n </div>\n <div className={`${styles.column2} px-3`}>\n <TopStreamsCardView />\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column3}`}>\n <div className={styles.videoViews}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.topClassifications}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('subjects')}\n appLink={{ application: AppChannels.VIDEOS, action: Actions.Videos.HOME }}\n appLinkText={getPhrase('seeOverview')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","TopSearchesCardEmptyStateV2","jsx","Text","PartialTopSearchesCardV2","jsxs","Fragment","TopSearchesCardV2View","requestFilter","useGetRequestFilter","searches","Flight.useBasicFetch","SearchRequests","getSearchUrl","useGetExternalUrl","ExternalRouteHelper","Scrollbars","s","idx","SvgContainer","NewWindowSvg","TopStreamsCardEmptyState","PartialTopStreamsCard","_","i","getPhrase","LanguageService","LIMIT","TopStreamsCardView","filterQueryParams","useGetAppLinkFilterParams","topStreams","VideoViewsV2Requests","videos","useBatchFetch","_a","v","VideoRequests","hasLoaded","AppLink","AppChannels","Actions","_b","stream","video","getSchoolVideoAppLink","VideoThumbnail","ImageSize","ThumbnailTextPosition","VideoHelper","VideoSubText","TOP_CLASSIFICATIONS_LIMIT","SchoolAnalyticsDashboardView","isTertiary","useIsTertiary","header","useSetPageMetadata","useSetHeaderTitle","styles","StreamsBarChartCardView","StreamsChartCardView","TopClassificationsCardView","TopicAnalyticsType"],"mappings":"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"}
|