@clickview/reports 0.72.0 → 0.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/bundles.json +2 -3
- package/dist/css/1VpVng8x.chunk.css +1 -0
- package/dist/css/BDijM1kt.chunk.css +1 -0
- package/dist/css/BMPwvOki.chunk.css +1 -0
- package/dist/css/BNt45Kgy.chunk.css +1 -0
- package/dist/css/BSGhUWzl.chunk.css +1 -0
- package/dist/css/BZ3_uhDP.chunk.css +1 -0
- package/dist/css/BaadNO4A.chunk.css +1 -0
- package/dist/css/BdUNjJqp.chunk.css +1 -0
- package/dist/css/BdeI0FAV.chunk.css +1 -0
- package/dist/css/BxcMGr8Y.chunk.css +1 -0
- package/dist/css/ByuL_xKJ.chunk.css +1 -0
- package/dist/css/C-A0Pj_7.chunk.css +1 -0
- package/dist/css/C4jMfPWU.chunk.css +1 -0
- package/dist/css/C7XoyEPr.chunk.css +1 -0
- package/dist/css/C8sxda3R.chunk.css +1 -0
- package/dist/css/CD1qrI1T.chunk.css +1 -0
- package/dist/css/CFO--d_R.chunk.css +1 -0
- package/dist/css/CX9nw8t8.chunk.css +1 -0
- package/dist/css/C_qGRdC2.chunk.css +1 -0
- package/dist/css/CdC6ugQR.chunk.css +1 -0
- package/dist/css/ClRRGXPb.chunk.css +1 -0
- package/dist/css/Cr1bwtZG.chunk.css +1 -0
- package/dist/css/DBlPz5Fw.chunk.css +1 -0
- package/dist/css/DDnpOnVB.chunk.css +1 -0
- package/dist/css/DFZQCLLg.chunk.css +1 -0
- package/dist/css/DJwAbl6l.chunk.css +1 -0
- package/dist/css/DWjg_0sz.chunk.css +1 -0
- package/dist/css/DYV9jjVn.chunk.css +1 -0
- package/dist/css/Dgeh4AqU.chunk.css +9 -0
- package/dist/css/DlOtoSz0.chunk.css +1 -0
- package/dist/css/DlxOgKUu.chunk.css +1 -0
- package/dist/css/Dp3arkyy.chunk.css +1 -0
- package/dist/css/DwgaDUzz.chunk.css +1 -0
- package/dist/css/FPQ_LmXH.chunk.css +1 -0
- package/dist/css/H09rC9gw.chunk.css +1 -0
- package/dist/css/LAFr2dPT.chunk.css +1 -0
- package/dist/css/Pg1TlYG6.chunk.css +1 -0
- package/dist/css/PsQn3-kb.chunk.css +1 -0
- package/dist/css/alkEuPrr.chunk.css +1 -0
- package/dist/css/k4DgCj_g.chunk.css +1 -0
- package/dist/en.json +1 -0
- package/dist/scripts/2nrjFQG6.chunk.js +2 -0
- package/dist/scripts/2nrjFQG6.chunk.js.map +1 -0
- package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
- package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
- package/dist/scripts/6SDR31f9.chunk.js +15 -0
- package/dist/scripts/6SDR31f9.chunk.js.map +1 -0
- package/dist/scripts/6bLX1DNm.chunk.js +2 -0
- package/dist/scripts/6bLX1DNm.chunk.js.map +1 -0
- package/dist/scripts/AhdqfBDC.chunk.js +2 -0
- package/dist/scripts/AhdqfBDC.chunk.js.map +1 -0
- package/dist/scripts/B-PpJIqi.chunk.js +6 -0
- package/dist/scripts/B-PpJIqi.chunk.js.map +1 -0
- package/dist/scripts/B-ZRPp91.chunk.js +2 -0
- package/dist/scripts/B-ZRPp91.chunk.js.map +1 -0
- package/dist/scripts/B0keXzHm.chunk.js +2 -0
- package/dist/scripts/B0keXzHm.chunk.js.map +1 -0
- package/dist/scripts/B17N2umP.chunk.js +2 -0
- package/dist/scripts/B17N2umP.chunk.js.map +1 -0
- package/dist/scripts/B2Eafs31.chunk.js +2 -0
- package/dist/scripts/B2Eafs31.chunk.js.map +1 -0
- package/dist/scripts/B5Y7eket.chunk.js +2 -0
- package/dist/scripts/B5Y7eket.chunk.js.map +1 -0
- package/dist/scripts/B7E0FLQT.chunk.js +2 -0
- package/dist/scripts/B7E0FLQT.chunk.js.map +1 -0
- package/dist/scripts/B7fZs_l2.chunk.js +2 -0
- package/dist/scripts/B7fZs_l2.chunk.js.map +1 -0
- package/dist/scripts/B8DfvvPE.chunk.js +2 -0
- package/dist/scripts/B8DfvvPE.chunk.js.map +1 -0
- package/dist/scripts/B8dw4aip.chunk.js +2 -0
- package/dist/scripts/B8dw4aip.chunk.js.map +1 -0
- package/dist/scripts/BAaa7KIR.chunk.js +2 -0
- package/dist/scripts/BAaa7KIR.chunk.js.map +1 -0
- package/dist/scripts/BBmrqSNv.chunk.js +2 -0
- package/dist/scripts/BBmrqSNv.chunk.js.map +1 -0
- package/dist/scripts/BGX0h6W4.chunk.js +2 -0
- package/dist/scripts/BGX0h6W4.chunk.js.map +1 -0
- package/dist/scripts/BOeg7AfB.chunk.js +2 -0
- package/dist/scripts/BOeg7AfB.chunk.js.map +1 -0
- package/dist/scripts/BOeiDHFY.chunk.js +2 -0
- package/dist/scripts/BOeiDHFY.chunk.js.map +1 -0
- package/dist/scripts/BRRS4PKg.chunk.js +2 -0
- package/dist/scripts/BRRS4PKg.chunk.js.map +1 -0
- package/dist/scripts/BRV-uFtb.chunk.js +2 -0
- package/dist/scripts/BRV-uFtb.chunk.js.map +1 -0
- package/dist/scripts/BZfWKvo2.chunk.js +42 -0
- package/dist/scripts/BZfWKvo2.chunk.js.map +1 -0
- package/dist/scripts/B_rCaFK4.chunk.js +2 -0
- package/dist/scripts/B_rCaFK4.chunk.js.map +1 -0
- package/dist/scripts/BiFq1JkI.chunk.js +2 -0
- package/dist/scripts/BiFq1JkI.chunk.js.map +1 -0
- package/dist/scripts/BmX8J1Ve.chunk.js +2 -0
- package/dist/scripts/BmX8J1Ve.chunk.js.map +1 -0
- package/dist/scripts/Bn0dkU5Y.chunk.js +2 -0
- package/dist/scripts/Bn0dkU5Y.chunk.js.map +1 -0
- package/dist/scripts/BncpEV2O.chunk.js +2 -0
- package/dist/scripts/BncpEV2O.chunk.js.map +1 -0
- package/dist/scripts/Bodl5h9Z.chunk.js +2 -0
- package/dist/scripts/Bodl5h9Z.chunk.js.map +1 -0
- package/dist/scripts/Br5YjgjU.chunk.js +2 -0
- package/dist/scripts/Br5YjgjU.chunk.js.map +1 -0
- package/dist/scripts/Br_GRaAX.chunk.js +2 -0
- package/dist/scripts/Br_GRaAX.chunk.js.map +1 -0
- package/dist/scripts/C-A1kCBK.chunk.js +2 -0
- package/dist/scripts/C-A1kCBK.chunk.js.map +1 -0
- package/dist/scripts/C-Bnglks.chunk.js +2 -0
- package/dist/scripts/C-Bnglks.chunk.js.map +1 -0
- package/dist/scripts/C3KFo3Z8.chunk.js +2 -0
- package/dist/scripts/C3KFo3Z8.chunk.js.map +1 -0
- package/dist/scripts/C9tiioy8.chunk.js +2 -0
- package/dist/scripts/C9tiioy8.chunk.js.map +1 -0
- package/dist/scripts/CAfDUf5-.chunk.js +2 -0
- package/dist/scripts/CAfDUf5-.chunk.js.map +1 -0
- package/dist/scripts/CEPQucRi.chunk.js +2 -0
- package/dist/scripts/CEPQucRi.chunk.js.map +1 -0
- package/dist/scripts/CFprhMg1.chunk.js +10 -0
- package/dist/scripts/CFprhMg1.chunk.js.map +1 -0
- package/dist/scripts/CHlm4fQa.chunk.js +4 -0
- package/dist/scripts/CHlm4fQa.chunk.js.map +1 -0
- package/dist/scripts/CHqxDe0w.chunk.js +2 -0
- package/dist/scripts/CHqxDe0w.chunk.js.map +1 -0
- package/dist/scripts/CIb-6ujT.chunk.js +2 -0
- package/dist/scripts/CIb-6ujT.chunk.js.map +1 -0
- package/dist/scripts/CNA329cN.chunk.js +2 -0
- package/dist/scripts/CNA329cN.chunk.js.map +1 -0
- package/dist/scripts/CObSk_oj.chunk.js +2 -0
- package/dist/scripts/CObSk_oj.chunk.js.map +1 -0
- package/dist/scripts/CSdY8TC0.chunk.js +10 -0
- package/dist/scripts/CSdY8TC0.chunk.js.map +1 -0
- package/dist/scripts/CT2oDRt5.chunk.js +2 -0
- package/dist/scripts/CT2oDRt5.chunk.js.map +1 -0
- package/dist/scripts/CTdrOjLq.chunk.js +2 -0
- package/dist/scripts/CTdrOjLq.chunk.js.map +1 -0
- package/dist/scripts/CW7x8M-z.chunk.js +2 -0
- package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
- package/dist/scripts/CX5q-0jT.chunk.js +2 -0
- package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
- package/dist/scripts/CcURCjqv.chunk.js +3 -0
- package/dist/scripts/CcURCjqv.chunk.js.map +1 -0
- package/dist/scripts/Cg_qt_Rk.chunk.js +2 -0
- package/dist/scripts/Cg_qt_Rk.chunk.js.map +1 -0
- package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
- package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
- package/dist/scripts/CpDqrbAS.chunk.js +2 -0
- package/dist/scripts/CpDqrbAS.chunk.js.map +1 -0
- package/dist/scripts/Cr_-BIsS.chunk.js +2 -0
- package/dist/scripts/Cr_-BIsS.chunk.js.map +1 -0
- package/dist/scripts/CsmuPVPc.chunk.js +2 -0
- package/dist/scripts/CsmuPVPc.chunk.js.map +1 -0
- package/dist/scripts/Cvic0YnD.chunk.js +2 -0
- package/dist/scripts/Cvic0YnD.chunk.js.map +1 -0
- package/dist/scripts/CySrdBwK.chunk.js +2 -0
- package/dist/scripts/CySrdBwK.chunk.js.map +1 -0
- package/dist/scripts/Cyyw1SCS.chunk.js +3 -0
- package/dist/scripts/Cyyw1SCS.chunk.js.map +1 -0
- package/dist/scripts/CztNQjFH.chunk.js +2 -0
- package/dist/scripts/CztNQjFH.chunk.js.map +1 -0
- package/dist/scripts/D-6R65i0.chunk.js +2 -0
- package/dist/scripts/D-6R65i0.chunk.js.map +1 -0
- package/dist/scripts/D-LQhb27.chunk.js +2 -0
- package/dist/scripts/D-LQhb27.chunk.js.map +1 -0
- package/dist/scripts/D-uzbGYL.chunk.js +2 -0
- package/dist/scripts/D-uzbGYL.chunk.js.map +1 -0
- package/dist/scripts/D2zM4Kzz.chunk.js +2 -0
- package/dist/scripts/D2zM4Kzz.chunk.js.map +1 -0
- package/dist/scripts/D7o6GeeF.chunk.js +2 -0
- package/dist/scripts/D7o6GeeF.chunk.js.map +1 -0
- package/dist/scripts/DA9TJjID.chunk.js +2 -0
- package/dist/scripts/DA9TJjID.chunk.js.map +1 -0
- package/dist/scripts/DBskBTCv.chunk.js +4 -0
- package/dist/scripts/DBskBTCv.chunk.js.map +1 -0
- package/dist/scripts/DDeXXa-Z.chunk.js +2 -0
- package/dist/scripts/DDeXXa-Z.chunk.js.map +1 -0
- package/dist/scripts/DEFJUMtW.chunk.js +2 -0
- package/dist/scripts/DEFJUMtW.chunk.js.map +1 -0
- package/dist/scripts/DEgmC0Yv.chunk.js +2 -0
- package/dist/scripts/DEgmC0Yv.chunk.js.map +1 -0
- package/dist/scripts/DFFdinDv.chunk.js +2 -0
- package/dist/scripts/DFFdinDv.chunk.js.map +1 -0
- package/dist/scripts/DGgXamq8.chunk.js +2 -0
- package/dist/scripts/DGgXamq8.chunk.js.map +1 -0
- package/dist/scripts/DIQhtsg6.chunk.js +2 -0
- package/dist/scripts/DIQhtsg6.chunk.js.map +1 -0
- package/dist/scripts/DJcBw7EJ.chunk.js +2 -0
- package/dist/scripts/DJcBw7EJ.chunk.js.map +1 -0
- package/dist/scripts/DLmWeya6.chunk.js +2 -0
- package/dist/scripts/DLmWeya6.chunk.js.map +1 -0
- package/dist/scripts/DNEgb5v1.chunk.js +2 -0
- package/dist/scripts/DNEgb5v1.chunk.js.map +1 -0
- package/dist/scripts/DNODoEV9.chunk.js +2 -0
- package/dist/scripts/DNODoEV9.chunk.js.map +1 -0
- package/dist/scripts/DNRcL1e9.chunk.js +2 -0
- package/dist/scripts/DNRcL1e9.chunk.js.map +1 -0
- package/dist/scripts/DUnqV5wd.chunk.js +2 -0
- package/dist/scripts/DUnqV5wd.chunk.js.map +1 -0
- package/dist/scripts/DW5KxGbM.chunk.js +380 -0
- package/dist/scripts/DW5KxGbM.chunk.js.map +1 -0
- package/dist/scripts/D_WfHgZP.chunk.js +2 -0
- package/dist/scripts/D_WfHgZP.chunk.js.map +1 -0
- package/dist/scripts/DbBlo1x3.chunk.js +34 -0
- package/dist/scripts/DbBlo1x3.chunk.js.map +1 -0
- package/dist/scripts/DbxJfn_n.chunk.js +2 -0
- package/dist/scripts/DbxJfn_n.chunk.js.map +1 -0
- package/dist/scripts/DePDakSd.chunk.js +2 -0
- package/dist/scripts/DePDakSd.chunk.js.map +1 -0
- package/dist/scripts/DeoNhQh0.chunk.js +3 -0
- package/dist/scripts/DeoNhQh0.chunk.js.map +1 -0
- package/dist/scripts/DsbeU03P.chunk.js +2 -0
- package/dist/scripts/DsbeU03P.chunk.js.map +1 -0
- package/dist/scripts/DtbthThZ.chunk.js +2 -0
- package/dist/scripts/DtbthThZ.chunk.js.map +1 -0
- package/dist/scripts/Dtv-7Q3n.chunk.js +2 -0
- package/dist/scripts/Dtv-7Q3n.chunk.js.map +1 -0
- package/dist/scripts/Dvas_dD0.chunk.js +2 -0
- package/dist/scripts/Dvas_dD0.chunk.js.map +1 -0
- package/dist/scripts/HCxw4efP.chunk.js +2 -0
- package/dist/scripts/HCxw4efP.chunk.js.map +1 -0
- package/dist/scripts/J7X3wFpY.chunk.js +2 -0
- package/dist/scripts/J7X3wFpY.chunk.js.map +1 -0
- package/dist/scripts/JUNXcGbu.chunk.js +2 -0
- package/dist/scripts/JUNXcGbu.chunk.js.map +1 -0
- package/dist/scripts/LS1BGGIr.chunk.js +2 -0
- package/dist/scripts/LS1BGGIr.chunk.js.map +1 -0
- package/dist/scripts/MqKLZ7-F.chunk.js +2 -0
- package/dist/scripts/MqKLZ7-F.chunk.js.map +1 -0
- package/dist/scripts/NRnV1wHl.chunk.js +2 -0
- package/dist/scripts/NRnV1wHl.chunk.js.map +1 -0
- package/dist/scripts/QDAMoZNu.chunk.js +2 -0
- package/dist/scripts/QDAMoZNu.chunk.js.map +1 -0
- package/dist/scripts/RoUeokG0.chunk.js +2 -0
- package/dist/scripts/RoUeokG0.chunk.js.map +1 -0
- package/dist/scripts/Tgco-VxU.chunk.js +2 -0
- package/dist/scripts/Tgco-VxU.chunk.js.map +1 -0
- package/dist/scripts/_KIo6cb1.chunk.js +2 -0
- package/dist/scripts/_KIo6cb1.chunk.js.map +1 -0
- package/dist/scripts/aRYKkB2W.chunk.js +2 -0
- package/dist/scripts/aRYKkB2W.chunk.js.map +1 -0
- package/dist/scripts/app-DhPN-zNB.js +228 -0
- package/dist/scripts/app-DhPN-zNB.js.map +1 -0
- package/dist/scripts/daCZeWsQ.chunk.js +2 -0
- package/dist/scripts/daCZeWsQ.chunk.js.map +1 -0
- package/dist/scripts/hqhdC5CE.chunk.js +2 -0
- package/dist/scripts/hqhdC5CE.chunk.js.map +1 -0
- package/dist/scripts/kuc-jC8N.chunk.js +6 -0
- package/dist/scripts/kuc-jC8N.chunk.js.map +1 -0
- package/dist/scripts/mjKop7CA.chunk.js +2 -0
- package/dist/scripts/mjKop7CA.chunk.js.map +1 -0
- package/dist/scripts/nIjQqCoO.chunk.js +2 -0
- package/dist/scripts/nIjQqCoO.chunk.js.map +1 -0
- package/dist/scripts/rLITk9YY.chunk.js +3 -0
- package/dist/scripts/rLITk9YY.chunk.js.map +1 -0
- package/dist/scripts/rMiqL-Tq.chunk.js +2 -0
- package/dist/scripts/rMiqL-Tq.chunk.js.map +1 -0
- package/dist/scripts/sFV5nxD4.chunk.js +2 -0
- package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
- package/dist/scripts/u3riYA0x.chunk.js +2 -0
- package/dist/scripts/u3riYA0x.chunk.js.map +1 -0
- package/dist/scripts/wnQZ7WYP.chunk.js +8 -0
- package/dist/scripts/wnQZ7WYP.chunk.js.map +1 -0
- package/package.json +5 -3
- package/typings/utils/env.d.ts +3 -0
- package/typings/utils/imports.d.ts +1 -1
- package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
- package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
- package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
- package/dist/css/209-reports-c33663a53e.chunk.css +0 -11
- package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
- package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
- package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
- package/dist/css/2999-reports-f190450b10.chunk.css +0 -60
- package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
- package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
- package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
- package/dist/css/6031-reports-d558076846.chunk.css +0 -6
- package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
- package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
- package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
- package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
- package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
- package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
- package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
- package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
- package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
- package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
- package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
- package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
- package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
- package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
- package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
- package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
- package/dist/css/reports-app-b4c4ec5632.css +0 -32
- package/dist/languages/en.json +0 -1
- package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
- package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
- package/dist/scripts/1456-b7f437ef87-reports.chunk.js +0 -1
- package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
- package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
- package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
- package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
- package/dist/scripts/209-72e77f375e-reports.chunk.js +0 -1
- package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +0 -1
- package/dist/scripts/2217-15fa35197a-reports.chunk.js +0 -1
- package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
- package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
- package/dist/scripts/2997-444b5bdaf0-reports.chunk.js +0 -1
- package/dist/scripts/2999-f5ee243b25-reports.chunk.js +0 -2
- package/dist/scripts/2999-f5ee243b25-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
- package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
- package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
- package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
- package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
- package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
- package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
- package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
- package/dist/scripts/5051-ff0ec9348d-reports.chunk.js +0 -1
- package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
- package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
- package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
- package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
- package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
- package/dist/scripts/6007-42edca6bba-reports.chunk.js +0 -1
- package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
- package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
- package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
- package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
- package/dist/scripts/645-e8b19128e5-reports.chunk.js +0 -1
- package/dist/scripts/6545-eadce8e749-reports.chunk.js +0 -1
- package/dist/scripts/6811-40ded4c089-reports.chunk.js +0 -1
- package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
- package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
- package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
- package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
- package/dist/scripts/7747-bc33e51d7b-reports.chunk.js +0 -2
- package/dist/scripts/7747-bc33e51d7b-reports.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
- package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
- package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +0 -1
- package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
- package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
- package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
- package/dist/scripts/8622-a422eff0c4-reports.chunk.js +0 -1
- package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
- package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
- package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
- package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
- package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
- package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
- package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
- package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
- package/dist/scripts/9822-1b202f9d49-reports.chunk.js +0 -1
- package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
- package/dist/scripts/9949-63e32c6733-reports.chunk.js +0 -1
- package/dist/scripts/bundle-8754f0e6b8.min.js +0 -2
- package/dist/scripts/bundle-8754f0e6b8.min.js.LICENSE.txt +0 -108
- package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B2Eafs31.chunk.js","sources":["../../../../libs/shared/src/apps/share/components/embed-size/EmbedSize.tsx","../../../../../node_modules/toggle-selection/index.js","../../../../../node_modules/copy-to-clipboard/index.js","../../../../../node_modules/react-copy-to-clipboard/lib/Component.js","../../../../../node_modules/react-copy-to-clipboard/lib/index.js","../../../../libs/shared/src/components/copy-input/CopyInput.tsx","../../../../libs/shared/src/utils/EmbedHelper.ts","../../../../libs/shared/src/apps/share/components/copy-embed-html/CopyEmbedHtml.tsx","../../../../libs/shared/src/apps/share/views/share/components/copy-embed/CopyEmbed.tsx","../../../../libs/shared/src/images/svg/objects/CodeSvg.tsx","../../../../libs/shared/src/apps/share/components/get-embed-code/GetEmbedCode.tsx","../../../../libs/shared/src/apps/share/components/share-link-info/ShareLinkInfo.tsx","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/avatars/GoogleClassroomAvatar.tsx","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/avatars/MicrosoftTeamsAvatar.tsx","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/ShareIntegrationsStack.tsx","../../../../libs/shared/src/apps/share/views/share/components/share-as-link/ShareAsLink.tsx","../../../../libs/shared/src/hooks/useScript.ts","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/useGoogleClassrooms.ts","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/useMicrosoftTeamsShare.ts","../../../../libs/shared/src/components/looking-for-integration/LookingForIntegration.tsx","../../../../libs/shared/src/enums/IntegrationId.ts","../../../../libs/shared/src/apps/share/views/share/components/share-integrations/ShareIntegrations.tsx","../../../../libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","../../../../libs/shared/src/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge.tsx","../../../../libs/shared/src/apps/share/views/share/components/share-message/ShareMessage.tsx","../../../../libs/shared/src/apps/share/views/share/components/main-share/MainShare.tsx","../../../../libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","../../../../libs/shared/src/apps/share/components/link-expiry/LinkExpiry.tsx","../../../../libs/shared/src/apps/share/components/set-password-input/SetPasswordInput.tsx","../../../../libs/shared/src/apps/share/components/link-password/LinkPassword.tsx","../../../../libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","../../../../libs/shared/src/apps/share/views/share/components/share-settings/ShareSettings.tsx","../../../../libs/shared/src/utils/IntegrationHelper.ts","../../../../libs/shared/src/apps/share/views/share/ShareView.tsx"],"sourcesContent":["import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nconst namespace = 'share.embedSize';\n\ninterface EmbedSizeProps {\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n}\n\nexport function EmbedSize(props: EmbedSizeProps): React.ReactElement {\n const {\n autoplay,\n setAutoplay,\n videoSize,\n setVideoSize,\n videoSizes\n } = props;\n\n return (\n <div className='d-flex align-items-center'>\n {!!videoSizes.length &&\n <>\n <div className='me-1'>\n <Text namespace={namespace} phrase='videoSize' />\n </div>\n <div className='pe-3'>\n <Dropdown>\n <Dropdown.Toggle id='embed-resolution' variant='outline-dark'>\n {videoSize.label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n {videoSizes.map(size => (\n <Dropdown.Item\n key={`${size.width}x${size.height}`}\n onClick={() => setVideoSize(size)}\n >\n {size.label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n </>\n }\n <div className='me-2'>\n <Text namespace={namespace} phrase='autoplay' />\n </div>\n <Checkbox id='autoplay-checkbox' checked={autoplay} onChange={() => setAutoplay(!autoplay)} />\n </div>\n );\n}","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { CopySvg } from 'libs/shared/images/svg/actions/CopySvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\n\nimport { IconButton } from '../icon-button/IconButton';\n\nimport styles from './copy-input.module.scss';\n\nconst namespace = 'shared.copyInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CopyInputProps {\n value: string;\n label?: string;\n // Greyed means the input will be greyed out. Normal means it will appear like a normal input\n styling?: 'greyed' | 'normal' | 'normal-v2';\n onCopy?: () => void;\n copyText?: string;\n copiedText?: string;\n showCopiedText?: boolean;\n extraButtonClassNames?: string;\n textarea?: boolean;\n hasInputBg?: boolean;\n rows?: number;\n textAreaClassName?: string;\n}\n\nCopyInput.defaultProps = {\n styling: 'normal'\n};\n\nexport function CopyInput(props: CopyInputProps): JSX.Element {\n const [ localShowCopiedText, setLocalShowCopiedText ] = React.useState(props.showCopiedText || false);\n\n function revertLocalShowCopiedText() {\n setTimeout(() => setLocalShowCopiedText(false), 2000);\n }\n\n function onCopy(): void {\n if (props.onCopy)\n props.onCopy();\n\n if (localShowCopiedText)\n return;\n\n setLocalShowCopiedText(true);\n revertLocalShowCopiedText();\n }\n\n React.useEffect(() => {\n if (!props.showCopiedText)\n return;\n \n revertLocalShowCopiedText();\n }, [props.showCopiedText]);\n\n function Button() {\n if (props.styling === 'normal-v2') {\n return (\n <CopyToClipboard text={props.value} onCopy={onCopy}>\n <IconButton\n role={localShowCopiedText ? 'status' : ''}\n svg={localShowCopiedText ? CheckSvg : CopySvg}\n className={classNames(\n styles.copyBtn,\n 'btn py-0 text-nowrap',\n localShowCopiedText ? 'btn-success text-white' : 'btn-outline-dark border-secondary',\n props.extraButtonClassNames\n )}\n >\n {localShowCopiedText ?\n props.copiedText || getPhrase('copiedLink') :\n props.copyText || getPhrase('copy')\n }\n </IconButton>\n </CopyToClipboard>\n );\n }\n\n return (\n <CopyToClipboard text={props.value} onCopy={onCopy}>\n <button\n role={localShowCopiedText ? 'status' : ''}\n className={classNames(\n 'btn btn-outline-dark border border-secondary py-0 text-nowrap',\n props.extraButtonClassNames\n )}\n >\n {localShowCopiedText ?\n props.copiedText || getPhrase('copied') :\n props.copyText || getPhrase('copy')\n }\n </button>\n </CopyToClipboard>\n );\n }\n\n const input = (\n <div className={props.styling === 'normal-v2' ? 'd-flex flex-row gap-2 position-relative w-100' : 'input-group'}>\n {props.textarea\n ? <textarea\n className={classNames('form-control rounded w-100 h-100', !props.hasInputBg && styles.embedHtmlInput, props.textAreaClassName)}\n spellCheck={false}\n value={props.value}\n rows={props.rows || 7}\n readOnly\n />\n : <input\n type='text'\n autoComplete='off'\n className={classNames(\n 'form-control',\n props.styling === 'normal' && props.styling\n )}\n spellCheck={false}\n value={props.value}\n readOnly\n />\n }\n \n <Button />\n </div>\n );\n\n if (props.label) {\n return (\n <Form.Group className='form-group'>\n <Form.Label>{props.label}</Form.Label>\n {input}\n </Form.Group>\n );\n }\n\n return input;\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nconst namespace = 'shared.shared-utils';\n\nexport interface EmbedResolution {\n width: '100%' | '640' | '1014' | '1280';\n height: '100%' | '360' | '576' | '720';\n label: string;\n}\n\nexport const EmbedHelper = {\n getEmbedResolutions(includeResponsive: boolean = true): EmbedResolution[] {\n const resolutions: EmbedResolution[] = [\n {\n label: LanguageService.getPhrase(namespace, 'small'),\n width: '640',\n height: '360'\n },\n {\n label: LanguageService.getPhrase(namespace, 'medium'),\n width: '1014',\n height: '576'\n },\n {\n label: LanguageService.getPhrase(namespace, 'large'),\n width: '1280',\n height: '720'\n }\n ];\n\n if (includeResponsive) {\n resolutions.unshift({\n label: LanguageService.getPhrase(namespace, 'responsive'),\n width: '100%',\n height: '100%'\n });\n }\n return resolutions;\n },\n getEmbedString(options: {\n size: EmbedResolution;\n url: string;\n }): string {\n const { url, size } = options;\n\n const isResponsive = size.width === '100%';\n\n const dynamicAttributes = isResponsive\n ? 'style=\"position:absolute; top:0; left:0; width:100%; height:100%;\"'\n : `width=\"${size.width}\" height=\"${size.height}\"`;\n\n const fixedAttributes = 'frameborder=\"0\" allowfullscreen webkitallowfullscreen mozallowfullscreen allow=\"autoplay\"';\n\n const src = `src=\"${url}\"`;\n\n const iframe = `<iframe ${dynamicAttributes} ${fixedAttributes} ${src}></iframe>`;\n\n if (isResponsive)\n return `<div style=\"padding:56.25% 0 0 0; position:relative;\">${iframe}</div>`;\n\n return iframe;\n },\n buildEmbedUrl(options: {\n embedUrl: string;\n host: string;\n shareId: string;\n autoplay: boolean;\n consumerKey?: string;\n }): string {\n const { embedUrl, host, shareId, autoplay, consumerKey } = options;\n\n /**\n * embedUrl didn't always exist in Share API. So we use it if it's there, but fall back to building\n * the share link if it's not. - Sha\n */\n let baseUrl = embedUrl;\n\n if (!baseUrl)\n baseUrl = UrlHelper.safeUrlConcat(host, `share/embed/${shareId}`);\n\n const params: HashObject = {};\n\n if (autoplay)\n params.a = true;\n\n if (consumerKey)\n params.consumerKey = consumerKey;\n\n return UrlHelper.urlBuilder(baseUrl, params);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { EmbedSize } from 'libs/shared/apps/share/components/embed-size/EmbedSize';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { BaseObject, PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\nimport { EmbedHelper, EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nimport styles from './copy-embed-html.module.scss';\n\nconst namespace = 'share.copyEmbedHtml';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface EmbedDetails {\n size: EmbedResolution;\n autoplay: boolean;\n}\n\ntype CopyEmbedHtmlProps = PropsWithAnalyticsOptions<{\n entity: BaseObject;\n entityType: SharableEntityType;\n liteUrl: string;\n entityId: string;\n shareId: string;\n embedUrl: string;\n hideLabel?: boolean;\n hasInputBg?: boolean;\n onCopy?: (details: EmbedDetails) => void;\n showEmbedCopiedText?: boolean;\n styling?: 'greyed' | 'normal' | 'normal-v2';\n}>;\n\nCopyEmbedHtml.defaultProps = {\n styling: 'normal'\n};\n\nexport function CopyEmbedHtml(props: CopyEmbedHtmlProps): JSX.Element {\n const videoSizes = EmbedHelper.getEmbedResolutions();\n\n const [ copied, setCopied ] = React.useState<boolean>(!!props.showEmbedCopiedText);\n const [ autoplay, setAutoplay ] = React.useState(false);\n const [ videoSize, setVideoSize ] = React.useState<EmbedResolution>(videoSizes.find(s => s.width === '100%'));\n\n /**\n * When going to the CopyEmbedView from the CreateShareView we want to show the copied text\n * for a short period of time.\n * - Sha\n */\n React.useEffect(() => {\n if (!props.showEmbedCopiedText)\n return;\n\n setTimeout(() => setCopied(false), 2000);\n }, [props.showEmbedCopiedText]);\n\n const [ logged, setLogged ] = React.useState(false);\n function onCopy(): void {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n\n // Because our users are double clickers\n if (logged)\n return;\n\n setLogged(true);\n\n if (typeof props.onCopy === 'function') {\n props.onCopy({\n size: videoSize,\n autoplay\n });\n return;\n }\n\n AnalyticsHelper.logUserAction({\n ...props.entity,\n embedDetails: {\n size: videoSize,\n autoplay\n }\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), [\n {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.CopyEmbedHtml,\n eventVersion: EventVersion.V3\n },\n props.analyticsOptions\n ]));\n }\n\n const url = EmbedHelper.buildEmbedUrl({\n embedUrl: props.embedUrl,\n host: props.liteUrl,\n shareId: props.shareId,\n autoplay\n });\n \n const embedString = EmbedHelper.getEmbedString({\n url,\n size: videoSize\n });\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <CopyInput\n value={embedString}\n onCopy={onCopy}\n copiedText={props.styling === 'normal-v2' ? getPhrase('copiedV2') : getPhrase('copied')}\n copyText={getPhrase('copy')}\n showCopiedText={copied}\n styling={props.styling}\n extraButtonClassNames={classNames('position-absolute bottom-0 end-0', styles.copyBtnContainer)}\n hasInputBg={props.hasInputBg}\n label={props.hideLabel ? undefined : getPhrase('label')}\n textarea\n />\n <EmbedSize\n autoplay={autoplay}\n setAutoplay={setAutoplay}\n videoSize={videoSize}\n setVideoSize={setVideoSize}\n videoSizes={videoSizes}\n />\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CopyEmbedHtml } from 'libs/shared/apps/share/components/copy-embed-html/CopyEmbedHtml';\nimport { SharableEntity, SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\n\ninterface CopyEmbedProps {\n entity: SharableEntity;\n entityType: SharableEntityType;\n shareLink: ShareLink;\n liteUrl: string;\n entityId: string;\n analyticsOptions: AnalyticsOptions;\n onClickCancel: () => void;\n}\n\nexport function CopyEmbed(props: CopyEmbedProps) {\n return (\n <>\n <div className='mb-3'>\n <CopyEmbedHtml\n embedUrl={props.shareLink.embedUrl}\n entity={props.entity}\n entityType={props.entityType}\n liteUrl={props.liteUrl}\n entityId={props.entityId}\n shareId={props.shareLink.id}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n\n <PopupButtons>\n <DivButton onClick={props.onClickCancel} className='btn btn-outline-dark'>\n <Text namespace={namespace} phrase='back' />\n </DivButton>\n </PopupButtons>\n </>\n );\n}","import React from 'react';\n\nexport function CodeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M9.758 8.424a.6.6 0 1 0-.849-.848l-4 4a.6.6 0 0 0 0 .848l4 4a.6.6 0 0 0 .849-.848L6.182 12zm5.333-.848a.6.6 0 1 0-.849.848L17.818 12l-3.576 3.576a.6.6 0 0 0 .849.848l4-4a.6.6 0 0 0 0-.848z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CodeSvg } from 'libs/shared/images/svg/objects/CodeSvg';\n\nconst namespace = 'share.getEmbedCode';\n\ninterface GetEmbedCodeProps {\n onClickGetEmbedCode: () => void\n minimal?: boolean;\n}\n\nexport function GetEmbedCode(props: GetEmbedCodeProps) {\n return (\n <DivButton\n onClick={props.onClickGetEmbedCode}\n className={`d-inline-block p-1 pe-2 rounded-1 hover-bg-light-blue`}\n >\n <div className='d-flex align-items-center'>\n <div className={classNames('me-2', !props.minimal && 'bg-dark text-white rounded-1')}>\n <SvgContainer\n svg={CodeSvg}\n size={props.minimal ? SvgContainerSize.Standard : SvgContainerSize.Large}\n />\n </div>\n <Text namespace={namespace} phrase='getEmbedCode' />\n </div>\n </DivButton>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\n\nimport { SharePrivacyResponse } from '../../interfaces/responses/SharePrivacyResponse';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkInfoProps {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n onClickSavePrivacy?: (privacy: SharePrivacy, onClickSavePrivacy: boolean) => void;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\ninterface ShareLinkItemProps {\n active: boolean;\n title: string;\n description: string;\n onClick: () => void\n}\n\nfunction ShareLinkItem(props: ShareLinkItemProps) {\n const { active, title, description, onClick } = props;\n\n return (\n <button\n className={`${active ? 'bg-light-blue' : ''} dropdown-item d-flex align-items-center justify-content-between`}\n onClick={!active ? onClick : null}\n type='button'\n >\n <div className='me-4'>\n <p className='fw-semibold mb-1'>{title}</p>\n <p className='font-size-sm mb-0'>{description}</p>\n </div>\n {active && <SvgContainer svg={CheckSvg} />}\n </button>\n );\n}\n\nexport function ShareLinkInfo(props: ShareLinkInfoProps): JSX.Element {\n const [ canManageAccess, setCanManageAccess ] = React.useState(false);\n const [ privacy, setPrivacy ] = React.useState<SharePrivacy>(null);\n\n const { icon, text } = ShareLinkHelper.getIconAndText(props);\n\n React.useEffect(() => {\n setCanManageAccess(props.privacy.canManageAccess);\n setPrivacy(props.privacy.privacy);\n }, [props.privacy]);\n\n const canManageAccessPrivacy = canManageAccess ? 'just_my_customer' : 'protected';\n\n const canUpdatePrivacy = (\n !props.isPasswordProtected &&\n !props.linkExpireDate &&\n (props.shareOverrideRestrictions && !props.hasStudentExp)\n );\n\n return (\n <div className='d-flex align-items-center'>\n {(canUpdatePrivacy)\n ? (\n <div className='btn-group'>\n <button\n className={`btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover`}\n data-bs-toggle='dropdown'\n aria-label={getPhrase('ariaPrivacy')}\n >\n <SvgContainer svg={icon} className='svg-container me-1' />\n <span className='me-1'>{text}</span>\n </button>\n <ul className='dropdown-menu cursor-pointer'>\n {canManageAccess &&\n <li>\n <ShareLinkItem\n active={privacy === 'public'}\n title={getPhrase('public')}\n description={getPhrase('publicDescription')}\n onClick={() => props.onClickSavePrivacy('public', false)}\n />\n </li>\n }\n <li>\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && props.privacy.overrideRestrictions}\n title={getPhrase('justMySchool')}\n description={canManageAccess ? getPhrase('justMySchoolDescription') : getPhrase('clickViewOnly')}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, true)}\n />\n </li>\n <li>\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && !props.privacy.overrideRestrictions}\n title={getPhrase('respectRatings')}\n description={ShareLinkHelper.getRespectRatingText(\n props.entity,\n props.yearGroups,\n props.hasStudentExp\n )}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, false)}\n />\n </li>\n <li>\n <ShareLinkItem\n active={privacy === 'private'}\n title={getPhrase('private')}\n description={getPhrase('privateDescription')}\n onClick={() => props.onClickSavePrivacy('private', false)}\n />\n </li>\n </ul>\n </div>\n )\n : (\n <>\n <SvgContainer svg={icon} className='svg-container me-1' />\n <span>{text}</span>\n </>\n )\n }\n </div>\n );\n}","import React from 'react';\n\nexport function GoogleClassroomAvatar(): JSX.Element {\n return (\n <svg width='24' height='24' viewBox='0 0 24 24' fill='none'>\n <circle cx='12' cy='12' r='12' fill='url(#pattern0)'/>\n <defs>\n <pattern id='pattern0' patternContentUnits='objectBoundingBox' width='1' height='1'>\n <use xlinkHref='#image0_3558_14996' transform='scale(0.00520833)'/>\n </pattern>\n <image id='image0_3558_14996' width='192' height='192' xlinkHref='data:image/png;base64,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'/>\n </defs>\n </svg>\n );\n}","import React from 'react';\n\nexport function MicrosoftTeamsAvatar(): JSX.Element {\n return (\n <svg viewBox='0 0 40 40' fill='none'>\n <path d='M29.692 15.31c.58 0 1.146-.173 1.628-.5a2.96 2.96 0 001.078-1.331 3.004 3.004 0 00-.634-3.235 2.918 2.918 0 00-1.5-.812 2.894 2.894 0 00-1.693.169 2.938 2.938 0 00-1.314 1.093 2.997 2.997 0 00.364 3.748 2.91 2.91 0 002.071.869zM20.043 26.267V13.849a.9.9 0 00-.259-.633.877.877 0 00-.624-.262H6.883a.877.877 0 00-.624.262.9.9 0 00-.259.633v12.418c0 .24.092.469.257.64.165.172.39.27.626.276H19.16a.899.899 0 00.626-.276.923.923 0 00.257-.64zm-3.51-10.389v1.92h-2.37v6.68H11.88V17.93H9.51v-2.182h7.022v.13z' fill='#fff'/>\n <path d='M21.874 14.132v.917a4.03 4.03 0 002.05-1.47c.512-.699.79-1.545.793-2.415 0-1.1-.431-2.154-1.199-2.932a4.065 4.065 0 00-2.893-1.214 4.065 4.065 0 00-2.894 1.214 4.175 4.175 0 00-1.199 2.932h2.391a2.996 2.996 0 012.061.887c.55.552.868 1.297.89 2.081zM26.332 17.1h-4.458v8.883c0 .8-.309 1.566-.86 2.138-.552.57-1.302.9-2.091.917h-4.588a7.047 7.047 0 003.265 3.317c1.427.7 3.046.887 4.593.532a6.99 6.99 0 003.918-2.486 7.152 7.152 0 001.535-4.418v-7.551a1.348 1.348 0 00-.385-.942 1.313 1.313 0 00-.929-.39zM32.772 17.1h-3.597c.206.414.316.87.323 1.332v7.551a9.1 9.1 0 01-.516 2.859c.236.021.474.021.71 0a4.28 4.28 0 003.046-1.278A4.394 4.394 0 0034 24.477v-6.045c0-.339-.126-.665-.354-.912a1.307 1.307 0 00-.874-.42z' fill='#fff'/>\n </svg>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport { GoogleClassroomAvatar } from './avatars/GoogleClassroomAvatar';\nimport { MicrosoftTeamsAvatar } from './avatars/MicrosoftTeamsAvatar';\n\nimport styles from './share-integrations.module.scss';\n\nconst namespace = 'share.shareIntegrations';\n\ninterface ShareIntegrationsStackProps {\n size?: 'sm' | 'md';\n noTooltip?: boolean;\n}\n\nexport function ShareIntegrationsStack(props?: ShareIntegrationsStackProps): JSX.Element {\n const className = classNames(\n styles.avatar,\n props?.size === 'sm' && styles.small,\n props?.size !== 'sm' && 'border',\n 'rounded-circle overflow-hidden'\n );\n\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'shareThroughIntegrations')} spanHack disable={props.noTooltip}>\n <ul className='list-unstyled d-flex mb-0'>\n <li className={className} style={{ zIndex: 1 }}>\n <GoogleClassroomAvatar />\n </li>\n\n <li className={`${className} ${styles.msTeamsContainer}`} style={{ zIndex: 0 }}>\n <MicrosoftTeamsAvatar />\n </li>\n </ul>\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EventVersion, ShareDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareLinkInfo } from 'libs/shared/apps/share/components/share-link-info/ShareLinkInfo';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { BaseObject, ShareLink, YearGroup } from 'libs/shared/interfaces';\n\n\nconst namespace = 'share.shareAsLink';\n\ninterface ShareAsLinkProps {\n entity: BaseObject;\n entityType: SharableEntityType;\n shareLink: ShareLink;\n onClickShowSettings: () => void;\n onClickCreateLink: () => void;\n shareLinkIsLoading?: boolean;\n canAddPolicies: boolean;\n privacy: SharePrivacyResponse;\n entityTypeId: MasterType;\n onClickSavePrivacy: (privacy: SharePrivacy, overrideRestrictions: boolean) => void;\n enableIntegrations: boolean;\n hasStudentExp: boolean;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareAsLink(props: ShareAsLinkProps): React.ReactElement {\n const [ logged, setLogged ] = React.useState(false);\n\n function onCopy(): void {\n // Because our users are double clickers\n if (logged)\n return;\n\n setLogged(true);\n\n AnalyticsHelper.logUserAction({\n id: props.entity.id,\n name: props.entity.name\n }, AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(props.entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.CopyLink,\n eventVersion: EventVersion.V3\n }));\n }\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n <div className={`${props.shareLink ? 'w-100' : 'w-75 d-flex align-items-center'}`}>\n {props.shareLink\n ? (\n <>\n <div className='d-flex justify-content-between align-items-center mb-1'>\n <ShareLinkInfo\n linkExpireDate={props.shareLink.linkExpireDate}\n isPasswordProtected={props.shareLink.isPasswordProtected}\n privacy={props.privacy}\n entityTypeId={props.shareLink.objectTypeId}\n status={props.shareLink.status}\n onClickSavePrivacy={props.onClickSavePrivacy}\n hasStudentExp={props.hasStudentExp}\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </div>\n <CopyInput value={props.shareLink.url} onCopy={onCopy} />\n </>\n ) : (\n <div className='d-flex align-items-center'>\n <div className='me-2'>\n {props.enableIntegrations ? (\n <ShareIntegrationsStack />\n ) : (\n <SvgContainer svg={LinkSvg} className='svg-container' />\n )}\n </div>\n \n <span className='fw-semibold'><Text namespace={namespace} phrase='createLink' /></span>\n </div>\n )\n }\n </div>\n {!props.shareLink &&\n <DivButton className='info-link' onClick={props.onClickCreateLink}>\n <Text phrase='createLink' />\n </DivButton>\n }\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\n/**\n * We only need to load any script once.\n */\nconst loadedScripts: HashObject<boolean> = {};\n\nexport function useScript(src: string, shouldLoad: boolean): boolean {\n const [ loaded, setLoaded ] = React.useState(false);\n\n React.useEffect(() => {\n if (!src || !shouldLoad || loadedScripts[src])\n return;\n\n const script = document.createElement('script');\n\n script.src = src;\n script.async = true;\n script.onload = () => {\n loadedScripts[src] = true;\n /**\n * Onload event is fired before script content is parsed.\n * By calling set timeout, we ensure setLoaded is called after\n * the script is parsed in the event loop.\n */\n window.setTimeout(() => setLoaded(true), 0);\n };\n\n document.body.appendChild(script);\n\n return () => {\n script.onload = null;\n document.body.removeChild(script);\n };\n }, [ src, shouldLoad ]);\n\n return loadedScripts[src] || loaded;\n}","import React from 'react';\n\nimport { useScript } from 'libs/shared/hooks/useScript';\n\nconst GOOGLE_CLASSROOM_CONTAINER_ID = 'g-share-to-classroom';\n\nexport function useGoogleClassrooms(shouldLoad: boolean): string {\n /**\n * Google sdk reads the config off the window.\n */\n if (shouldLoad)\n (window as any).___gcfg = { parsetags: 'explicit' };\n\n const loaded = useScript('https://apis.google.com/js/platform.js', shouldLoad);\n\n React.useEffect(() => {\n if (!shouldLoad || !loaded)\n return;\n\n window.gapi?.sharetoclassroom?.go(GOOGLE_CLASSROOM_CONTAINER_ID);\n }, [ shouldLoad, loaded ]);\n\n return GOOGLE_CLASSROOM_CONTAINER_ID;\n}","import React from 'react';\n\nimport { useScript } from 'libs/shared/hooks/useScript';\n\nexport function useMicrosoftTeamsShare(shouldLoad: boolean): void {\n const loaded = useScript('https://teams.microsoft.com/share/launcher.js', shouldLoad);\n\n React.useEffect(() => {\n if (!shouldLoad || !loaded)\n return;\n\n window.shareToMicrosoftTeams?.renderButtons();\n }, [ shouldLoad, loaded ]);\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\n\n\nconst namespace = 'shared.lookingForIntegration';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface LookingForIntegrationProps {\n appLink: Core.AppLink;\n closePopup?: () => void;\n hideDismiss?: boolean;\n hideBackground?: boolean;\n normalText?: boolean;\n}\n\ninterface LookingForIntegrationViewModel {\n show: boolean;\n}\n\nexport function LookingForIntegration(props: LookingForIntegrationProps): JSX.Element {\n const [ visibility, setVisibility ] = useViewModel<LookingForIntegrationViewModel>(\n SharedViewModelKeys.LOOKING_FOR_INTEGRATION,\n { show: true },\n { storage: StorageType.LocalStorage }\n );\n\n if (!visibility.show)\n return <></>;\n\n return (\n <div className={classNames(`d-flex justify-content-between`, !props.hideBackground && 'rounded p-2 bg-light-blue')}>\n <AppLink\n appLink={props.appLink}\n onClick={() => props.closePopup?.()}\n className='d-inline-flex align-items-center mb-0'\n >\n <span className={classNames('ms-1 text-info', !props.normalText && 'fw-semibold')}>\n <Text namespace={namespace} phrase='lookingForIntegration' />\n </span>\n </AppLink>\n {!props.hideDismiss &&\n <button onClick={() => setVisibility({ show: false })} aria-label={`${getPhrase('ariaClose')}`}>\n <SvgContainer\n svg={CloseSvg}\n size={SvgContainerSize.Small}\n className='text-info d-inline-block svg-container'\n />\n </button>\n }\n </div>\n );\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import React from 'react';\n\nimport { AppLink } from 'libs/common/backbone/core';\n\nimport { useGoogleClassrooms } from 'libs/shared/apps/share/views/share/components/share-integrations/useGoogleClassrooms';\nimport { useMicrosoftTeamsShare } from 'libs/shared/apps/share/views/share/components/share-integrations/useMicrosoftTeamsShare';\nimport { LookingForIntegration } from 'libs/shared/components/looking-for-integration/LookingForIntegration';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\n\nimport styles from './share-integrations.module.scss';\n\nconst DEFAULT_ICON_SIZE = '32';\n\ninterface ShareIntegrationsProps {\n integrations: IntegrationId[];\n url: string;\n appLink?: AppLink;\n iconSize?: 'sm' | 'md';\n closePopup?: () => void;\n hideLookingForIntegrations?: boolean;\n}\n\nexport function ShareIntegrations(props: ShareIntegrationsProps): JSX.Element {\n const googleContainerId = useGoogleClassrooms(props.integrations?.includes(IntegrationId.GoogleClassroom));\n useMicrosoftTeamsShare(props.integrations?.includes(IntegrationId.MicrosoftTeams));\n\n if (!props.integrations.length && !props.hideLookingForIntegrations)\n return (\n <LookingForIntegration\n appLink={props.appLink}\n closePopup={props.closePopup}\n />\n );\n\n function getIconSize() {\n switch (props.iconSize) {\n case 'sm': return '24';\n case 'md':\n default: return DEFAULT_ICON_SIZE;\n }\n }\n\n const iconSize = getIconSize();\n const integrationsContainerStyle = { height: `${iconSize}px`, width: `${iconSize}px` };\n\n return (\n <div className='d-flex gap-1 align-items-start'>\n {props.integrations.includes(IntegrationId.GoogleClassroom) &&\n <div\n id={googleContainerId}\n className={`rounded partial-loading-background`}\n style={integrationsContainerStyle}\n >\n <div\n className='g-sharetoclassroom'\n data-size={iconSize}\n data-url={props.url}\n />\n </div>\n }\n {props.integrations.includes(IntegrationId.MicrosoftTeams) &&\n <div className={`rounded overflow-hidden ${styles.hoverable}`}>\n <div\n className={`teams-share-button ${styles.msTeamsContainer}`}\n style={integrationsContainerStyle}\n data-href={props.url}\n data-button-type='smallTransWhite'\n data-preview='false'\n data-icon-px-size={iconSize}\n />\n </div>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import React from 'react';\n\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemRestrictionBadgeProps {\n video: VideoTypes;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function VideoItemRestrictionBadge(props: VideoItemRestrictionBadgeProps): JSX.Element {\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!hasRestrictions || !props.yearGroups || !canConsume)\n return <></>;\n \n return (\n <BadgeListContainer className={props.className || 'pt-1'}>\n <RestrictionBadge restrictions={props.video._restrictions} yearGroups={props.yearGroups} />\n </BadgeListContainer>\n );\n}","import React from 'react';\nimport { Form as FormikForm } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharableEntity } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { VideoItemRestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge';\nimport { YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst getPhrase = LanguageService.encloseNamespace('share.shareMessage');\n\nconst MessageValidationSchema = Yup.object().shape({\n message: Yup.string()\n .max(280, () => getPhrase('maxMessageLen'))\n});\n\ninterface ShareMessageRequest {\n message?: string;\n}\n\ninterface ShareMessageFormProps {\n entity: SharableEntity;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nfunction ShareMessageForm(props: ShareMessageFormProps): React.ReactElement {\n const formikProps = useFormikContextWrapper<ShareMessageRequest>();\n\n return (\n <FormikForm>\n <FormField\n component='textarea'\n name='message'\n id='message'\n placeholder={getPhrase('placeholder')}\n value={formikProps.values.message}\n label={getPhrase('label')}\n showOptionalLabel\n />\n {!props.shareOverrideRestrictions && VideoHelper.isVideoType(props.entity) &&\n <div className='mb-3'><VideoItemRestrictionBadge video={props.entity} yearGroups={props.yearGroups} /></div>}\n <PopupButtons>\n <PopupButtons.Submit variant='dark' text={getPhrase('share')} />\n </PopupButtons>\n </FormikForm>\n );\n}\n\ninterface ShareMessageProps {\n onClickShare: (message: string, onDone: () => void) => void;\n entity: SharableEntity;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareMessage(props: ShareMessageProps): React.ReactElement {\n function onSubmit(data: ShareMessageRequest, onDone: () => void): void {\n let message: string = null;\n\n if (data.message)\n message = data.message;\n\n props.onClickShare(message, onDone);\n }\n\n return (\n <FormWrapper<ShareMessageRequest>\n initialValues={{ message: '' }}\n validationSchema={MessageValidationSchema}\n onSubmit={onSubmit}\n allowInitialSubmit={true}\n >\n <ShareMessageForm\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { TypeFilter } from 'libs/shared/apps/search/interfaces/TypedFilter';\nimport { GetEmbedCode } from 'libs/shared/apps/share/components/get-embed-code/GetEmbedCode';\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT, TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { ShareAsLink } from 'libs/shared/apps/share/views/share/components/share-as-link/ShareAsLink';\nimport { ShareIntegrations } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrations';\nimport { ShareMessage } from 'libs/shared/apps/share/views/share/components/share-message/ShareMessage';\nimport { SharableEntity, SharableEntityType, SharableRecipient } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { HasLocalPermissionsFunc, usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classroom, ClassroomGroup, CurrentUser, PropsWithAnalyticsOptions, ShareLink, ShareSearchResponse, UserCollection, YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction filterSearchResults(\n recipientsToFilter: SharableRecipient[],\n currentSelections: SharableRecipient[],\n existingShareRecipients: SharableRecipient[],\n currentUserId: string\n): SharableRecipient[] {\n if (!recipientsToFilter)\n return [];\n\n const selectedIds = [ ...currentSelections, ...existingShareRecipients ].map(s => s.id);\n\n return recipientsToFilter.filter(s => {\n // Prevent users from sharing to other users who have already been shared this resource\n if (selectedIds.includes(s.id))\n return false;\n\n // Prevent users from sharing to themselves\n if (s.id === currentUserId)\n return false;\n\n return true;\n });\n}\n\ntype MainShareProps = PropsWithAnalyticsOptions<{\n entity: SharableEntity;\n entityType: SharableEntityType,\n directShareRecipients: SharableRecipient[];\n recentlySharedTo: SharableRecipient[];\n onClickCreateLink: () => void;\n onClickShowSettings: () => void;\n onClickShare: (recipients: SharableRecipient[], message: string, onDone?: () => void) => void;\n onClickRemoveRecipient: (recipientId: string, onError?: () => void) => void;\n onClickSavePrivacy: (privacy: SharePrivacy, overrideRestrictions: boolean) => void;\n onClickGetEmbedCode: () => void;\n gatewayApiUrl: string;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n searchRequestHeaders?: HashObject;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n integrations: IntegrationId[];\n shareLink?: ShareLink;\n shareLinkIsLoading?: boolean;\n fetchRecipientUsers?: (id: string, callback: (users: UserCollection) => void) => void;\n canAddPolicies: boolean;\n privacy: SharePrivacyResponse;\n integrationSettingAppLink?: Core.AppLink;\n messagePopupAppLink?: Core.AppLink;\n closePopup: () => void;\n enableIntegrationBanner?: boolean;\n canEmbed?: boolean;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n hasLocalPermissions: HasLocalPermissionsFunc;\n}>;\n\nexport function MainShare(props: MainShareProps): JSX.Element {\n const [ selections, setSelections ] = React.useState<SharableRecipient[]>([]);\n const [ showShareLinkSpinner, setShowShareLinkSpinner ] = React.useState(false);\n\n const { hasPermissions } = usePermissions();\n const { hasClassrooms } = useSettings(null);\n const hasManageIntegrationsPermission = hasPermissions(PermissionName.ManageIntegrations);\n\n function onClickShare(message: string, onDone: () => void): void {\n props.onClickShare(\n selections,\n message,\n () => {\n setSelections([]);\n onDone();\n }\n );\n }\n\n function fetchSelectionMembers(id: string): void {\n if (!props.fetchRecipientUsers)\n return;\n\n const callback = (users: UserCollection) => {\n const newSelections: SharableRecipient[] = [];\n\n selections.forEach(selection => {\n if (selection.id !== id)\n return newSelections.push(selection);\n\n const updatedSelection = ObjectHelper.deepClone<Classroom | ClassroomGroup>(selection);\n\n if (!users?.data?.length) {\n updatedSelection.users = { count: 0, data: [], pagination: null };\n } else {\n updatedSelection.users = users;\n }\n\n newSelections.push(updatedSelection);\n });\n\n setSelections(ArrayHelper.uniq(newSelections, 'id'));\n };\n\n props.fetchRecipientUsers(id, callback);\n }\n\n function getRemotePostBody(query: string): HashObject {\n const indices: TypeFilter[] = [];\n\n if (hasPermissions(PermissionName.ShareToUsers)) {\n indices.push({\n index: 'user',\n filters: {\n userType: [ UserGroup.Staff, UserGroup.Learner ],\n userProfile: {\n status: [`${ObjectStatus.Active.toLowerCase()}`],\n customerId: props.currentUser.customerId\n }\n }\n });\n }\n\n if (hasPermissions(PermissionName.ShareToClassrooms))\n indices.push({ index: 'classroom' });\n\n if (hasPermissions(PermissionName.ShareToClassroomGroups))\n indices.push({ index: 'classroom_group' });\n\n return {\n query,\n indices,\n searchType: 'user',\n limit: TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT\n };\n }\n\n const canDirectShare = hasClassrooms && (\n hasPermissions(PermissionName.ShareToUsers) ||\n hasPermissions(PermissionName.ShareToClassrooms) ||\n hasPermissions(PermissionName.ShareToClassroomGroups)\n );\n\n const recentSearches = filterSearchResults(\n props.recentlySharedTo,\n selections,\n props.directShareRecipients,\n props.currentUser.id\n );\n\n function onClickCreateShareLink(): void {\n setShowShareLinkSpinner(true);\n props.onClickCreateLink();\n }\n\n React.useEffect(() => {\n setShowShareLinkSpinner(!!props.shareLinkIsLoading);\n }, [props.shareLinkIsLoading]);\n\n return (\n <>\n {canDirectShare && (\n <div className='bg-white rounded-bottom-3 pt-3 px-3 mb-2'>\n <div className={`d-flex justify-content-between align-items-center pb-3`}>\n <TokenizedTypeahead\n // This key is used to re-initialize TokenizedTypeahead whenever recentSearches changes\n key={recentSearches?.map(s => s.id).join(':') ?? 'share:search'}\n getRemoteUrl={() => UrlHelper.safeUrlConcat(props.gatewayApiUrl, 'v4/search')}\n getRemotePostBody={getRemotePostBody}\n requestHeaders={props.searchRequestHeaders}\n formatRemoteSuggestions={(suggestions: ShareSearchResponse) =>\n filterSearchResults(\n suggestions?.results,\n selections,\n props.directShareRecipients,\n props.currentUser.id\n )\n }\n recentSearches={recentSearches}\n selections={selections}\n onSuggestionSelected={selection => setSelections([ ...selections, selection ])}\n removeSelection={selection => setSelections(selections.filter(s => s.id !== selection.id))}\n placeholder={hasClassrooms\n ? getPhrase('searchPlaceholder')\n : getPhrase('searchPlaceholderNoClassrooms')}\n imageCdnUrl={props.imageCdnUrl}\n activationLength={2}\n fetchSelectionMembers={props.fetchRecipientUsers && fetchSelectionMembers}\n debounceTime={300}\n emptyStateImageUrl={props.emptyStateImageUrl}\n errorStateImageUrl={props.errorStateImageUrl}\n hasStudentExperience={hasPermissions(PermissionName.StudentExperience)}\n />\n </div>\n\n {(!selections.length && props.directShareRecipients.length)\n ? (\n <div>\n <h3 className='font-size-normal'><Text phrase='sharedTo' /></h3>\n <Scrollbars autoHeight>\n <ul className='list-unstyled'>\n {props.directShareRecipients.map(d => (\n <li key={d.id} className='mb-2 pe-1'>\n <RecipientItem\n entity={d}\n imageCdnUrl={props.imageCdnUrl}\n removeRecipient={props.onClickRemoveRecipient}\n showDisplayName={hasPermissions(PermissionName.StudentExperience)}\n />\n </li>\n ))}\n </ul>\n </Scrollbars>\n </div>\n ) : <></>\n }\n {!!selections.length && (\n // The form submit inside of ShareMessage is used as the Share button\n <div className='pb-3'>\n <ShareMessage\n onClickShare={onClickShare}\n entity={props.entity}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </div>\n )}\n </div>\n )}\n\n {!selections.length && !showShareLinkSpinner && (\n <div className={`bg-white p-3 ${canDirectShare ? 'rounded-3' : 'rounded-bottom-3'}`}>\n <div>\n {props.shareLink && (\n <div className='fw-semibold mb-2'><Text namespace={namespace} phrase='shareLink' /></div>\n )}\n <ShareAsLink\n entity={props.entity}\n entityType={props.entityType}\n shareLink={props.shareLink}\n onClickShowSettings={props.onClickShowSettings}\n onClickCreateLink={onClickCreateShareLink}\n shareLinkIsLoading={props.shareLinkIsLoading}\n canAddPolicies={props.canAddPolicies}\n privacy={props.privacy}\n entityTypeId={props.entity.typeId}\n onClickSavePrivacy={props.onClickSavePrivacy}\n enableIntegrations={props.enableIntegrationBanner}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n yearGroups={props.yearGroups}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n {props.shareLink && props.enableIntegrationBanner && (\n <div className={`${props.integrations?.length && props.canEmbed ? 'float-end' : ''} mt-1 pt-1`}>\n <ShareIntegrations\n integrations={props.integrations}\n url={props.shareLink.url}\n closePopup={props.closePopup}\n appLink={hasManageIntegrationsPermission\n ? props.integrationSettingAppLink\n : props.messagePopupAppLink\n }\n />\n </div>\n )}\n {props.shareLink && props.canEmbed && (\n <div className='mt-1'>\n <GetEmbedCode onClickGetEmbedCode={props.onClickGetEmbedCode} />\n </div>\n )}\n {props.shareLink && props.canAddPolicies &&\n <button className='btn btn-link text-info mt-2 p-0' onClick={props.onClickShowSettings}>\n <Text namespace={namespace} phrase='advancedSettings' />\n </button>\n }\n </div>\n </div>\n )}\n\n {showShareLinkSpinner && (\n <div className='bg-white rounded-3 p-3 text-center'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n </>\n );\n}\n","const LINK_EXPIRY_TIME = 30; // days\nexport function getLinkExpiryDate(shouldExpire: boolean): string | null {\n if (!shouldExpire)\n return null;\n\n const date = new Date();\n date.setDate(date.getDate() + LINK_EXPIRY_TIME);\n\n return date.toISOString();\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'shared.linkExpiry';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkExpiryProps {\n passwordProtectLink: boolean;\n}\n\nexport function LinkExpiry(props: LinkExpiryProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n function setLinkExpireDate(): void {\n if (props.passwordProtectLink)\n return;\n\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!formikProps.values.linkExpireDate));\n }\n\n return (\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='linkExpirationHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='linkExpirationInfo' /></p>\n </div>\n <Tooltip\n title={getPhrase('passwordProtected')}\n disable={!props.passwordProtectLink}\n spanHack\n trigger='hover'\n >\n <ToggleSwitch\n onClick={setLinkExpireDate}\n on={!!formikProps.values.linkExpireDate}\n disabled={props.passwordProtectLink}\n showStateWhenDisabled\n />\n </Tooltip>\n </div>\n );\n}","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { VisibleOffSvg } from 'libs/shared/images/svg/actions/VisibleOffSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\n\nimport styles from './set-password-input.module.scss';\n\nconst namespace = 'share.setPasswordInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SetPasswordInputProps {\n value: string;\n onChange: (value: string) => void;\n onReset?: () => void;\n /**\n * Allow user to view and edit current value.\n */\n canEdit?: boolean;\n /**\n * Don't allow user to view/edit current value\n * but allow them to clear it and enter a new value.\n */\n canReset?: boolean;\n placeholder?: string;\n}\n\nexport function SetPasswordInput(props: SetPasswordInputProps): JSX.Element {\n const [ revealPassword, setRevealPassword ] = React.useState(false);\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n const errorMsg = formikProps.errors?.password;\n\n return (\n <>\n <input\n className={`form-control ${errorMsg ? 'is-invalid' : ''}`}\n value={props.value}\n onChange={e => {\n !!props.canEdit && props.onChange(e.target.value);\n }}\n type={revealPassword ? 'text' : 'password'}\n placeholder={props.placeholder || getPhrase('passwordPlaceholder')}\n readOnly={!props.canEdit}\n />\n {!!errorMsg && (\n <Form.Control.Feedback type='invalid'>{errorMsg}</Form.Control.Feedback>\n )}\n {!!props.canEdit &&\n <DivButton className={styles.passwordButton} onClick={() => setRevealPassword(!revealPassword)}>\n <SvgContainer\n svg={revealPassword ? VisibleOnSvg : VisibleOffSvg}\n title={getPhrase(revealPassword ? 'hidePassword' : 'revealPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n {!props.canEdit && !!props.canReset && !!props.onReset &&\n <DivButton className={styles.passwordButton} onClick={props.onReset}>\n <SvgContainer\n svg={CloseSvg} title={getPhrase('resetPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { SetPasswordInput } from 'libs/shared/apps/share/components/set-password-input/SetPasswordInput';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.linkPassword';\n\nconst PASSWORD_PLACEHOLDER = '********';\n\ninterface LinkPasswordProps {\n shareLink: ShareLink;\n passwordProtectLink: boolean;\n setPasswordProtectLink: (protect: boolean) => void;\n}\n\nexport function LinkPassword(props: LinkPasswordProps): React.ReactElement {\n const { passwordProtectLink, setPasswordProtectLink } = props;\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const [ readonlyPassword, setReadonlyPassword ] = React.useState(!!props.shareLink?.isPasswordProtected);\n\n function onTogglePasswordProtect(): void {\n if (props.shareLink?.isPasswordProtected)\n formikProps.setFieldValue('removePassword', passwordProtectLink);\n\n formikProps.setFieldValue('password', '');\n\n setPasswordProtectLink(!passwordProtectLink);\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!passwordProtectLink));\n }\n\n function setPassword(password: string): void {\n formikProps.setFieldValue('password', password);\n }\n\n function resetPassword(): void {\n formikProps.setFieldValue('password', '');\n formikProps.setFieldValue('removePassword', true);\n setReadonlyPassword(false);\n }\n\n return (\n <div className='pb-3'>\n <div className='d-flex justify-content-between align-items-center'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='passwordProtectHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='passwordProtectInfo' /></p>\n </div>\n <ToggleSwitch onClick={onTogglePasswordProtect} on={passwordProtectLink} />\n </div>\n\n {passwordProtectLink &&\n <div className='position-relative mt-2'>\n <SetPasswordInput\n value={readonlyPassword ? PASSWORD_PLACEHOLDER : formikProps.values.password}\n onChange={setPassword}\n onReset={resetPassword}\n canEdit={!readonlyPassword}\n canReset\n />\n </div>\n }\n </div>\n );\n}","import { boolean, object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'share.validation';\n\nexport const ShareLinkSettingsValidationSchema = object().shape({\n removePassword: boolean(),\n resourceId: string(),\n linkExpireDate: string().nullable(),\n password: string()\n .test({\n name: 'password-length',\n exclusive: false,\n params: {},\n message: LanguageService.getPhrase(namespace, 'minPassword'),\n test: val => {\n const removePassword = ((this as any)?.parent as any)?.removePassword;\n\n if (removePassword)\n return true;\n\n if (!val?.length)\n return true;\n\n if (val.length < 3)\n return false;\n\n return true;\n }\n })\n .default('')\n});","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LinkExpiry } from 'libs/shared/apps/share/components/link-expiry/LinkExpiry';\nimport { LinkPassword } from 'libs/shared/apps/share/components/link-password/LinkPassword';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkSettingsValidationSchema } from 'libs/shared/apps/share/validation/ShareLinkSettingsValidationSchema';\nimport { SharableEntity, SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config } from 'libs/shared/interfaces';\nimport { PropsWithAnalyticsOptions, ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ShareSettingsFormProps = PropsWithAnalyticsOptions<{\n entity: SharableEntity;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n onClickCancel: () => void;\n onClickDeleteLink: () => void;\n canEmbed?: boolean;\n privacy: SharePrivacyResponse;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}>;\n\nfunction ShareSettingsForm(props: ShareSettingsFormProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const [ passwordProtectLink, setPasswordProtectLink ] = React.useState(!!props.shareLink.isPasswordProtected);\n\n return (\n <Form>\n {props.onClickDeleteLink &&\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='mb-0'><Text namespace={namespace} phrase='deleteLinkLabel' /></label>\n <p className='mb-0'><Text namespace={namespace} phrase='deleteLinkDescription' /></p>\n </div>\n <DivButton onClick={props.onClickDeleteLink} className='info-link justify-self-start'>\n <Text namespace={namespace} phrase='deleteLink' />\n </DivButton>\n </div>\n }\n {hasPermissions(PermissionName.ManageShareLinkSettings) && (\n <>\n <LinkExpiry passwordProtectLink={passwordProtectLink} />\n {props.shareOverrideRestrictions &&\n <LinkPassword\n shareLink={props.shareLink}\n passwordProtectLink={passwordProtectLink}\n setPasswordProtectLink={setPasswordProtectLink}\n />\n }\n </>\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} text={getPhrase('back')} variant='link' />\n <PopupButtons.Submit variant='dark' />\n </PopupButtons>\n </Form>\n );\n}\n\ninterface ShareSettingsProps {\n entity: SharableEntity;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n privacy: SharePrivacyResponse;\n onClickSaveLink: (data: EditShareLinkRequest, onError: () => void) => void;\n onClickCancel: () => void;\n onClickDeleteLink?: () => void;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareSettings(props: PropsWithAnalyticsOptions<ShareSettingsProps>): JSX.Element {\n const initialValues: EditShareLinkRequest = {\n password: '',\n removePassword: false,\n linkExpireDate: props.shareLink.linkExpireDate,\n overrideRestrictions: props.shareLink.overrideRestrictions\n };\n\n return (\n <>\n <FormWrapper<EditShareLinkRequest>\n initialValues={initialValues}\n onSubmit={props.onClickSaveLink}\n castInitialValues={false}\n validationSchema={ShareLinkSettingsValidationSchema}\n >\n <ShareSettingsForm\n entity={props.entity}\n entityType={props.entityType}\n config={props.config}\n shareLink={props.shareLink}\n entityId={props.entityId}\n onClickCancel={props.onClickCancel}\n analyticsOptions={props.analyticsOptions}\n privacy={props.privacy}\n onClickDeleteLink={props.onClickDeleteLink}\n hasStudentExp={props.hasStudentExp}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n </>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { AppLink } from 'libs/common/backbone/core';\nimport { AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { RecentShareHelper } from 'libs/shared/apps/share/utils/RecentShareHelper';\nimport { CopyEmbed } from 'libs/shared/apps/share/views/share/components/copy-embed/CopyEmbed';\nimport { MainShare } from 'libs/shared/apps/share/views/share/components/main-share/MainShare';\nimport { ShareSettings } from 'libs/shared/apps/share/views/share/components/share-settings/ShareSettings';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport {\n Config, CurrentUser,\n DirectShare, PopupViewProps, ShareLink, ShareRecipient, UserCollection, YearGroup\n} from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nimport { SharableEntityType, SharableRecipient, ShareViewHelper } from './ShareViewHelper';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getTitle(type: SharableEntityType): string {\n switch (type) {\n case 'video': return getPhrase('titleVideo');\n case 'clip': return getPhrase('titleClip');\n case 'interactive': return getPhrase('titleInteractive');\n case 'series': return getPhrase('titleSeries');\n case 'playlist': return getPhrase('titlePlaylist');\n case 'subject': return getPhrase('titleTopic');\n }\n}\n\nfunction getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n}\n\n/**\n * I realise these are all the same right now, but they're technically different things - Sha\n */\nconst canEmbed = (type: SharableEntityType) => type === 'video' || type === 'interactive' || type === 'clip';\nconst canAddPolicies = (type: SharableEntityType) => type === 'video' || type === 'interactive' || type === 'clip';\n\ntype ShareScreen = 'main' | 'link-settings' | 'copy-embed';\n\ninterface ShareViewProps extends PopupViewProps {\n entityId: string;\n entityType: SharableEntityType;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n gatewayApiUrl?: string;\n integrationSettingAppLink?: AppLink;\n messagePopupAppLink?: AppLink;\n enableIntegrationBanner?: boolean\n}\n\nexport function ShareView(props: ShareViewProps): JSX.Element {\n const dispatch = useDispatch();\n\n const alerts = useAlerts();\n\n // If the gateway api url is passed down in props and not pulled from the config, we don't need to fetch the user token\n const shouldFetchUserToken = !props.gatewayApiUrl;\n\n /**\n * Our screen is initially set to null, and it is set to it's initial state\n * by ShareViewHelper.useRestrictionWarning.\n */\n const [ screen, setScreen ] = React.useState<ShareScreen>('main');\n\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.entityId, currentUser.data?.id);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const userToken = Flight.useBasicFetch<HashObject>(shouldFetchUserToken && UserRequests.token());\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.entityId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.entityId)\n );\n const recipients = Flight.useBasicFetch<SharableRecipient[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n\n const recentlySharedToIds = currentUser.data && RecentShareHelper.getRecentlySharedTo(currentUser.data.id);\n\n const hasRecentlySharedRecipients = !!recentlySharedToIds?.length;\n const recentlySharedTo = Flight.useBasicFetch<SharableRecipient[]>(hasRecentlySharedRecipients &&\n ShareRequests.getRecipientsById(recentlySharedToIds, currentUser.data.customerId));\n\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequests.getPrivacy(props.entityId));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const {\n shareToGoogleClassroom,\n shareToMicrosoftTeams,\n shareOverrideRestrictions,\n isLoadingSettings\n } = useSettings(null);\n\n /**\n * We need to manually re-fetch the recipients they're updated on the directShare object.\n * See ShareRequests.getDirectShareRecipientsById for an explanation\n * of why we are doing this.\n */\n function fetchRecipients(customerId: string, directShare: DirectShare): void {\n if (directShare.recipients?.length)\n Flight.getFetch(dispatch)(ShareViewHelper.getDirectShareRecipientsRequest(customerId, directShare));\n }\n\n function fetchRecipientUsers(id: string, callback: (users: UserCollection) => void): void {\n Flight.getFetch(dispatch)(ShareRequests.getRecipientUsers(id, callback));\n }\n\n function onClickCreateLink(): void {\n if (shareLink.data)\n return;\n\n ShareViewHelper.createLink({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n alerts\n });\n }\n\n function onClickSaveLink(data: EditShareLinkRequest, onError: () => void): void {\n ShareViewHelper.updateLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n data,\n alerts,\n () => setScreen('main'),\n onError\n );\n }\n\n function onClickDeleteLink(): void {\n ShareViewHelper.deleteLink(\n dispatch,\n entity.data,\n props.entityType,\n shareLink.data,\n alerts,\n () => setScreen('main')\n );\n }\n\n function onClickShare(recipients: SharableRecipient[], message: string, onDone?: () => void): void {\n const shareRecipients = recipients.map(s => ({ id: s.id, typeId: s.typeId })) as ShareRecipient[];\n\n ShareViewHelper.createOrUpdateDirectShare({\n dispatch,\n entity: entity.data,\n entityType: props.entityType,\n currentUser: currentUser.data,\n recipients: shareRecipients,\n message,\n sentDirectShare: sentDirectShare.data,\n onSuccess: directShare => {\n fetchRecipients(currentUser.data.customerId, directShare);\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('directShareSuccess', { object: entity.data.name, recipients: ShareViewHelper.getShareRecipientsPhrase(recipients) }),\n type: AlertType.Success\n });\n },\n onError: () => alerts.error(getPhrase('directShareError', { name: entity.data.name })),\n onDone\n });\n }\n\n function onClickRemoveRecipient(recipientId: string, onError?: () => void): void {\n ShareViewHelper.removeDirectShareRecipient(\n dispatch,\n recipientId,\n props.entityType,\n sentDirectShare.data,\n directShare => fetchRecipients(currentUser.data.customerId, directShare),\n () => {\n alerts.error(getPhrase('removeDirectShareError'));\n onError && onError();\n }\n );\n }\n\n function onClickSavePrivacy(privacy: SharePrivacy, overrideRestrictions: boolean): void {\n if (privacy === 'private') {\n onClickDeleteLink();\n return;\n }\n\n Flight.fetch(\n dispatch,\n ShareRequests.updatePrivacy(\n shareLink.data.id,\n privacy,\n overrideRestrictions,\n () => alerts.success(getPhrase('privaciesSuccess', { name: entity.data.name })),\n () => alerts.error(getPhrase('privaciesError', { name: entity.data.name }))\n )\n );\n }\n\n function getSearchRequestHeaders(): HashObject {\n if (!shouldFetchUserToken)\n return null;\n\n return {\n authorization: `Bearer ${userToken.data.value}`\n };\n }\n\n /**\n * We are intentionally not checking to see if recipients.data or recentlySharedTo.data\n * have loaded because:\n * 1. Adding the first recipient will trigger fetching recipients for the first time\n * which would trigger the loading spinner.\n * 2. Adding and recipient will update the list of recently shared to which causes\n * recentlySharedTo to be re-fetched.\n */\n const dataLoaded = !!currentUser.data\n && !!config.data\n && (!shouldFetchUserToken || !!userToken.data)\n && !!sentDirectShare.hasCompleted\n && !!privacy.data\n && !!entity.data\n && !isLoadingSettings\n && !!yearGroups.hasCompleted;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getTitle(props.entityType)}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n contentClassName={(dataLoaded && screen) ? 'bg-transparent border-0' : ''}\n bodyClassName='p-0'\n >\n {(() => {\n if (!dataLoaded)\n return <></>;\n\n switch (screen) {\n case 'main':\n return (\n <MainShare\n shareLink={shareLink.data}\n shareLinkIsLoading={shareLink.isFetching}\n entity={entity.data}\n entityType={props.entityType}\n directShareRecipients={recipients.data || []}\n recentlySharedTo={recentlySharedTo.data || []}\n onClickCreateLink={onClickCreateLink}\n onClickShowSettings={() => setScreen('link-settings')}\n onClickShare={onClickShare}\n onClickRemoveRecipient={onClickRemoveRecipient}\n onClickGetEmbedCode={() => setScreen('copy-embed')}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n gatewayApiUrl={props.gatewayApiUrl || config.data.gatewayApiUrl}\n imageCdnUrl={config.data.imageCdnUrl}\n searchRequestHeaders={getSearchRequestHeaders()}\n currentUser={currentUser.data}\n fetchRecipientUsers={fetchRecipientUsers}\n privacy={privacy.data}\n onClickSavePrivacy={onClickSavePrivacy}\n canAddPolicies={canAddPolicies(props.entityType)}\n emptyStateImageUrl={props.emptyStateImageUrl}\n errorStateImageUrl={props.errorStateImageUrl}\n integrations={getEnabledIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams)}\n integrationSettingAppLink={props.integrationSettingAppLink}\n messagePopupAppLink={props.messagePopupAppLink}\n closePopup={props.closePopup}\n enableIntegrationBanner={props.enableIntegrationBanner}\n canEmbed={canEmbed(props.entityType)}\n yearGroups={yearGroups.data}\n shareOverrideRestrictions={shareOverrideRestrictions}\n hasLocalPermissions={hasLocalPermissions}\n />\n );\n case 'link-settings':\n return (\n <div className='bg-white p-3 rounded-bottom-3'>\n <ShareSettings\n entity={entity.data}\n entityType={props.entityType}\n config={config.data}\n shareLink={shareLink.data}\n entityId={props.entityId}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickSaveLink={onClickSaveLink}\n onClickDeleteLink={onClickDeleteLink}\n onClickCancel={() => setScreen('main')}\n privacy={privacy.data}\n hasStudentExp={hasPermissions(PermissionName.StudentExperience)}\n shareOverrideRestrictions={shareOverrideRestrictions}\n />\n </div>\n );\n case 'copy-embed':\n return (\n <div className='bg-white p-3 rounded-bottom-3'>\n <CopyEmbed\n entity={entity.data}\n entityType={props.entityType}\n liteUrl={config.data.liteUrl}\n shareLink={shareLink.data}\n entityId={props.entityId}\n analyticsOptions={ShareViewHelper.getAnalyticsOptions(props.entityType)}\n onClickCancel={() => setScreen('main')}\n />\n </div>\n );\n }\n })()}\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"names":["namespace","EmbedSize","props","autoplay","setAutoplay","videoSize","setVideoSize","videoSizes","jsxs","Fragment","jsx","Text","Dropdown","size","Checkbox","toggleSelection","selection","active","ranges","i","range","deselectCurrent","require$$0","clipboardToIE11Formatting","defaultMessage","format","message","copyKey","copy","text","options","debug","reselectPrevious","mark","success","e","successful","err","copyToClipboard","_typeof","obj","Component","_react","_interopRequireDefault","_copyToClipboard","require$$1","_excluded","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","o","p","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","result","NewTarget","_possibleConstructorReturn","self","call","_assertThisInitialized","value","CopyToClipboard","_React$PureComponent","_super","_this","_len","args","_key","event","_this$props","onCopy","children","elem","_this$props2","_require","lib","getPhrase","LanguageService","CopyInput","localShowCopiedText","setLocalShowCopiedText","React.useState","revertLocalShowCopiedText","React.useEffect","Button","IconButton","CheckSvg","CopySvg","classNames","styles","input","Form","EmbedHelper","includeResponsive","resolutions","url","isResponsive","dynamicAttributes","fixedAttributes","src","iframe","embedUrl","host","shareId","consumerKey","baseUrl","UrlHelper","params","CopyEmbedHtml","copied","setCopied","React","s","logged","setLogged","AnalyticsHelper","ShareViewHelper","UserAction","ShareDescriptors","EventVersion","embedString","LanguageNamespaceContext","CopyEmbed","PopupButtons","DivButton","CodeSvg","GetEmbedCode","SvgContainer","SvgContainerSize","ShareLinkItem","title","description","onClick","ShareLinkInfo","canManageAccess","setCanManageAccess","privacy","setPrivacy","icon","ShareLinkHelper","canManageAccessPrivacy","canUpdatePrivacy","GoogleClassroomAvatar","MicrosoftTeamsAvatar","ShareIntegrationsStack","className","Tooltip","ShareAsLink","LinkSvg","loadedScripts","useScript","shouldLoad","loaded","setLoaded","script","GOOGLE_CLASSROOM_CONTAINER_ID","useGoogleClassrooms","_b","_a","useMicrosoftTeamsShare","LookingForIntegration","visibility","setVisibility","useViewModel","SharedViewModelKeys","StorageType","AppLink","CloseSvg","IntegrationId","DEFAULT_ICON_SIZE","ShareIntegrations","googleContainerId","getIconSize","iconSize","integrationsContainerStyle","RestrictionBadge","Badge","BadgeType","VideoItemRestrictionBadge","hasRestrictions","RestrictionHelper","canConsume","VideoHelper","BadgeListContainer","MessageValidationSchema","Yup.object","Yup.string","ShareMessageForm","formikProps","useFormikContextWrapper","FormikForm","FormField","ShareMessage","onSubmit","data","onDone","FormWrapper","filterSearchResults","recipientsToFilter","currentSelections","existingShareRecipients","currentUserId","selectedIds","MainShare","selections","setSelections","showShareLinkSpinner","setShowShareLinkSpinner","hasPermissions","usePermissions","hasClassrooms","useSettings","hasManageIntegrationsPermission","PermissionName","onClickShare","fetchSelectionMembers","id","callback","users","newSelections","updatedSelection","ObjectHelper","ArrayHelper","getRemotePostBody","query","indices","UserGroup","ObjectStatus","TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT","canDirectShare","recentSearches","onClickCreateShareLink","TokenizedTypeahead","suggestions","Scrollbars","d","RecipientItem","Spinner","LINK_EXPIRY_TIME","getLinkExpiryDate","shouldExpire","date","LinkExpiry","useFormikContext","setLinkExpireDate","ToggleSwitch","SetPasswordInput","revealPassword","setRevealPassword","errorMsg","VisibleOnSvg","VisibleOffSvg","PASSWORD_PLACEHOLDER","LinkPassword","passwordProtectLink","setPasswordProtectLink","readonlyPassword","setReadonlyPassword","onTogglePasswordProtect","setPassword","password","resetPassword","ShareLinkSettingsValidationSchema","boolean","string","val","ShareSettingsForm","ShareSettings","initialValues","IntegrationHelper","googleClassroomSetting","msftTeamsSetting","SettingName","getTitle","type","getEnabledIntegrations","canEmbed","canAddPolicies","ShareView","dispatch","useDispatch","alerts","useAlerts","shouldFetchUserToken","screen","setScreen","hasLocalPermissions","currentUser","Flight.useBasicFetch","UserRequests","entity","config","ConfigRequests","userToken","shareLink","ShareRequests","sentDirectShare","recipients","recentlySharedToIds","RecentShareHelper","hasRecentlySharedRecipients","recentlySharedTo","yearGroups","_c","CustomerRequests","shareToGoogleClassroom","shareToMicrosoftTeams","shareOverrideRestrictions","isLoadingSettings","fetchRecipients","customerId","directShare","Flight.getFetch","fetchRecipientUsers","onClickCreateLink","onClickSaveLink","onError","onClickDeleteLink","shareRecipients","DefaultAlertHeading","AlertType","onClickRemoveRecipient","recipientId","onClickSavePrivacy","overrideRestrictions","Flight.fetch","getSearchRequestHeaders","dataLoaded","Popup"],"mappings":"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","x_google_ignoreList":[1,2,3,4]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as o,y as c,j as e,z as D,B as d,G as L,H as R,J as p,K as $,M as b,a as B}from"./app-DhPN-zNB.js";const N=D("h4");N.displayName="DivStyledAsH4";const g=o.forwardRef(({className:s,bsPrefix:a,as:r=N,...n},t)=>(a=c(a,"alert-heading"),e.jsx(r,{ref:t,className:d(s,a),...n})));g.displayName="AlertHeading";const A=o.forwardRef(({className:s,bsPrefix:a,as:r=L,...n},t)=>(a=c(a,"alert-link"),e.jsx(r,{ref:t,className:d(s,a),...n})));A.displayName="AlertLink";const C=o.forwardRef((s,a)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:y,children:w,variant:m="primary",onClose:u,dismissible:h,transition:x=p,...f}=R(s,{show:"onClose"}),l=c(r,"alert"),E=$(H=>{u&&u(!1,H)}),i=x===!0?p:x,j=e.jsxs("div",{role:"alert",...i?void 0:f,ref:a,className:d(y,l,m&&`${l}-${m}`,h&&`${l}-dismissible`),children:[h&&e.jsx(b,{onClick:E,"aria-label":t,variant:k}),w]});return i?e.jsx(i,{unmountOnExit:!0,...f,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:g});function F({error:s}){return B({title:"Dev Error"}),s?e.jsxs("div",{className:"px-3",children:[e.jsx("h1",{children:s.name}),e.jsx(v,{variant:"danger",children:e.jsx("h2",{children:s.message})}),e.jsxs(v,{variant:"warning",children:[e.jsx("h3",{children:"Call stack"}),e.jsx("code",{children:s.stack})]})]}):e.jsx(e.Fragment,{})}export{F as DevErrorView};
|
|
2
|
+
//# sourceMappingURL=B5Y7eket.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B5Y7eket.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}"],"names":["DivStyledAsH4","divWithClassName","AlertHeading","React.forwardRef","className","bsPrefix","Component","props","ref","useBootstrapPrefix","_jsx","classNames","AlertLink","Anchor","Alert","uncontrolledProps","show","closeLabel","closeVariant","children","variant","onClose","dismissible","transition","Fade","useUncontrolled","prefix","handleClose","useEventCallback","e","Transition","alert","_jsxs","CloseButton","Alert$1","DevErrorView","error","useSetPageMetadata","jsxs","jsx","Fragment"],"mappings":"4GAOA,MAAMA,EAAgBC,EAAiB,IAAI,EAC3CD,EAAc,YAAc,gBAC5B,MAAME,EAA4BC,EAAAA,WAAiB,CAAC,CAClD,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYN,EAChB,GAAGO,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,eAAe,EACnCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDL,EAAa,YAAc,eCf3B,MAAMU,EAAyBT,EAAAA,WAAiB,CAAC,CAC/C,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYO,EAChB,GAAGN,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,YAAY,EAChCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDK,EAAU,YAAc,YCPxB,MAAME,EAAqBX,EAAAA,WAAiB,CAACY,EAAmBP,IAAQ,CACtE,KAAM,CACJ,SAAAH,EACA,KAAAW,EAAO,GACP,WAAAC,EAAa,cACb,aAAAC,EACA,UAAAd,EACA,SAAAe,EACA,QAAAC,EAAU,UACV,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaC,EACb,GAAGjB,CACP,EAAMkB,EAAgBV,EAAmB,CACrC,KAAM,SACV,CAAG,EACKW,EAASjB,EAAmBJ,EAAU,OAAO,EAC7CsB,EAAcC,EAAiBC,GAAK,CACpCR,GACFA,EAAQ,GAAOQ,CAAC,CAEpB,CAAC,EACKC,EAAaP,IAAe,GAAOC,EAAOD,EAC1CQ,EAAqBC,EAAAA,KAAM,MAAO,CACtC,KAAM,QACN,GAAKF,EAAqB,OAARvB,EAClB,IAAKC,EACL,UAAWG,EAAWP,EAAWsB,EAAQN,GAAW,GAAGM,CAAM,IAAIN,CAAO,GAAIE,GAAe,GAAGI,CAAM,cAAc,EAClH,SAAU,CAACJ,GAA4BZ,EAAAA,IAAKuB,EAAa,CACvD,QAASN,EACT,aAAcV,EACd,QAASC,CACf,CAAK,EAAGC,CAAQ,CAChB,CAAG,EACD,OAAKW,EACepB,EAAAA,IAAKoB,EAAY,CACnC,cAAe,GACf,GAAGvB,EACH,IAAK,OACL,GAAIS,EACJ,SAAUe,CACd,CAAG,EAPuBf,EAAOe,EAAQ,IAQzC,CAAC,EACDjB,EAAM,YAAc,QACpB,MAAAoB,EAAe,OAAO,OAAOpB,EAAO,CAClC,KAAMF,EACN,QAASV,CACX,CAAC,ECnDM,SAASiC,EAAa,CAAE,MAAAC,GAAgD,CAG7E,OAFAC,EAAmB,CAAE,MAAO,YAAa,EAEpCD,EAIHE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,WAAM,IAAA,CAAK,EAChBA,EAAAA,IAACzB,GAAM,QAAQ,SACb,eAAC,KAAA,CAAI,SAAAsB,EAAM,QAAQ,CAAA,CACrB,EACAE,EAAAA,KAACxB,EAAA,CAAM,QAAQ,UACb,SAAA,CAAAyB,EAAAA,IAAC,MAAG,SAAA,YAAA,CAAU,EACdA,EAAAA,IAAC,OAAA,CAAM,SAAAH,EAAM,KAAA,CAAM,CAAA,CAAA,CACrB,CAAA,EACF,EAZOG,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CAcb","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,2 @@
|
|
|
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-DhPN-zNB.js";import{u as v,g as j}from"./mjKop7CA.chunk.js";import{u as f}from"./HCxw4efP.chunk.js";import{u}from"./NRnV1wHl.chunk.js";import{U as C,P as N}from"./D-LQhb27.chunk.js";import{L as d}from"./CHqxDe0w.chunk.js";import{u as p}from"./DFFdinDv.chunk.js";import{U as y,E as P,P as L}from"./CpDqrbAS.chunk.js";import"./DNRcL1e9.chunk.js";import"./aRYKkB2W.chunk.js";import"./hqhdC5CE.chunk.js";import"./rLITk9YY.chunk.js";import"./CEPQucRi.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=B7E0FLQT.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B7E0FLQT.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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as r,P as d,e as m,c as h,V as l,r as E}from"./app-DhPN-zNB.js";import{u as F}from"./DEFJUMtW.chunk.js";function I(a){const{hasPermissions:n}=r(),o=n(d.ViewCustomerAnalytics),s=m(),e=F(o&&!!s&&a,{start:s==null?void 0:s.start,end:s==null?void 0:s.end}),[,i]=h(l.AUDIENCE_FILTER_SUGGESTIONS);E.useEffect(()=>{var t,u;e.data&&i("users",(u=(t=e.data)==null?void 0:t.students)==null?void 0:u.map(c=>c.user.id))},[e.isFetching])}export{I as u};
|
|
2
|
+
//# sourceMappingURL=B7fZs_l2.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B7fZs_l2.chunk.js","sources":["../../src/apps/interactives/hooks/UseSetSuggestedInteractiveResultsAudience.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { AudienceFilterSuggestions } from 'libs/shared/apps/analytics/interfaces/AudienceFilterSuggestions';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\n\n/**\n * This hooks fetches interactive results for all users within the set date range\n * (ignoring the audience filter) and sets any users with results as audience suggestions.\n * \n * Note: this is only for admins as teachers have a different audience filter.\n */\nexport function useSetSuggestedInteractiveResultsAudience(interactiveMetadataId: string): void {\n const { hasPermissions } = usePermissions();\n const canViewCustomerAnalytics = hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const filter = useGetRequestFilter();\n\n const shouldFetch = canViewCustomerAnalytics && !!filter;\n\n const results = useFetchInteractiveResults(\n shouldFetch && interactiveMetadataId,\n { start: filter?.start, end: filter?.end }\n );\n\n const [ , setSuggestions ] = useViewModel<AudienceFilterSuggestions>(ViewModelKeys.AUDIENCE_FILTER_SUGGESTIONS);\n\n useEffect(() => {\n if (!results.data)\n return;\n\n setSuggestions('users', results.data?.students?.map(s => s.user.id));\n }, [results.isFetching]);\n}"],"names":["useSetSuggestedInteractiveResultsAudience","interactiveMetadataId","hasPermissions","usePermissions","canViewCustomerAnalytics","PermissionName","filter","useGetRequestFilter","results","useFetchInteractiveResults","setSuggestions","useViewModel","ViewModelKeys","useEffect","_b","_a","s"],"mappings":"iHAmBO,SAASA,EAA0CC,EAAqC,CAC7F,KAAM,CAAE,eAAAC,CAAA,EAAmBC,EAAA,EACrBC,EAA2BF,EAAeG,EAAe,qBAAqB,EAE9EC,EAASC,EAAA,EAITC,EAAUC,EAFIL,GAA4B,CAAC,CAACE,GAGjCL,EACf,CAAE,MAAOK,GAAA,YAAAA,EAAQ,MAAO,IAAKA,GAAA,YAAAA,EAAQ,GAAA,CAAI,EAGrC,CAAA,CAAII,CAAe,EAAIC,EAAwCC,EAAc,2BAA2B,EAE9GC,EAAAA,UAAU,IAAM,SACTL,EAAQ,MAGbE,EAAe,SAASI,GAAAC,EAAAP,EAAQ,OAAR,YAAAO,EAAc,WAAd,YAAAD,EAAwB,IAAIE,GAAKA,EAAE,KAAK,GAAG,CACrE,EAAG,CAACR,EAAQ,UAAU,CAAC,CACzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,d as u,c as i,V as o}from"./app-DhPN-zNB.js";import{g as f}from"./CX5q-0jT.chunk.js";function E(e){const[s,t]=a.useState(!1),n=f(u());return a.useEffect(()=>{t(r=>!r)},[e.isFetching]),a.useEffect(()=>{t(r=>!r)},[n]),s}function d(e){var t;const[,s]=i(o.AUDIENCE_FILTER_SELECTED_COUNT);a.useEffect(()=>{if(!e.data){s(null);return}s(e.data.studentCount)},[(t=e.data)==null?void 0:t.studentCount])}export{E as a,d as u};
|
|
2
|
+
//# sourceMappingURL=B8DfvvPE.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B8DfvvPE.chunk.js","sources":["../../src/apps/interactives/hooks/UseRefreshInteractiveResults.ts","../../src/apps/interactives/hooks/UseSetInteractiveResultsAudienceFilterCount.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nexport function useRefreshInteractiveResults(results: Flight.Response<InteractiveResultSet>): boolean {\n const [ refresh, setRefresh ] = useState(false);\n\n const filterKey = getFilterParamsKey(useGetAppLinkFilterParams());\n\n useEffect(() => {\n setRefresh(r => !r);\n }, [results.isFetching]);\n\n useEffect(() => {\n setRefresh(r => !r);\n }, [filterKey]);\n \n return refresh;\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\n/**\n * So that we can display the number of selected users in the audience filter\n * (including users in classrooms and groups), we read it from the InteractiveResultSet and\n * set it in a view model so that it can be read in AudienceFilterToggle.\n */\nexport function useSetInteractiveResultsAudienceFilterCount(results: Flight.Response<InteractiveResultSet>): void {\n const [ , setFilterCount ] = useViewModel<number>(ViewModelKeys.AUDIENCE_FILTER_SELECTED_COUNT);\n\n useEffect(() => {\n if (!results.data) {\n setFilterCount(null);\n return;\n }\n \n setFilterCount(results.data.studentCount);\n }, [results.data?.studentCount]);\n}"],"names":["useRefreshInteractiveResults","results","refresh","setRefresh","useState","filterKey","getFilterParamsKey","useGetAppLinkFilterParams","useEffect","useSetInteractiveResultsAudienceFilterCount","setFilterCount","useViewModel","ViewModelKeys","_a"],"mappings":"mGASO,SAASA,EAA6BC,EAAyD,CACpG,KAAM,CAAEC,EAASC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EAExCC,EAAYC,EAAmBC,GAA2B,EAEhEC,OAAAA,EAAAA,UAAU,IAAM,CACdL,EAAW,GAAK,CAAC,CAAC,CACpB,EAAG,CAACF,EAAQ,UAAU,CAAC,EAEvBO,EAAAA,UAAU,IAAM,CACdL,EAAW,GAAK,CAAC,CAAC,CACpB,EAAG,CAACE,CAAS,CAAC,EAEPH,CACT,CCTO,SAASO,EAA4CR,EAAsD,OAChH,KAAM,CAAA,CAAIS,CAAe,EAAIC,EAAqBC,EAAc,8BAA8B,EAE9FJ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,EAAQ,KAAM,CACjBS,EAAe,IAAI,EACnB,MACF,CAEAA,EAAeT,EAAQ,KAAK,YAAY,CAC1C,EAAG,EAACY,EAAAZ,EAAQ,OAAR,YAAAY,EAAc,YAAY,CAAC,CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B8dw4aip.chunk.js","sources":["../../../../libs/shared/src/context/player-context/PlayerContext.tsx"],"sourcesContent":["import React from 'react';\nimport { createHtmlPortalNode, HtmlPortalNode } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerContextState } from 'libs/shared/context/player-context/interfaces/PlayerContextState';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { playerContextReducer } from 'libs/shared/context/player-context/reducer/PlayerContextReducer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nexport interface PlayerContextValues extends PlayerContextState {\n playerRef?: React.MutableRefObject<PlayerReference>;\n portalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n\n useInitialize?: (initializeData: PlayerInitializationData) => void;\n dispose?: () => void;\n setPlayerRef?: (player: any) => void;\n setPlayerMode?: (mode: PlayerMode) => void;\n setStarted?: (started: boolean) => void;\n setPersist?: () => void;\n\n /**\n * Tells components if an instance of <PlayerContextProvider /> exists\n * above them in the tree. I.e. When this is used in curator.\n */\n hasProvider: boolean;\n}\n\nconst PlayerContext = React.createContext<PlayerContextValues>({ hasProvider: false });\n\nexport function usePlayerContext() {\n return React.useContext(PlayerContext);\n}\n\nexport function PlayerContextProvider(props: React.PropsWithChildren) {\n const [ state, dispatch ] = React.useReducer(playerContextReducer, {});\n\n const { hasPreviewVideos } = useSettings(null);\n\n const playerRef = React.useRef<any>(null);\n const portalNode = React.useMemo(() => createHtmlPortalNode(\n { attributes: { class: 'cv-theatre-mode-video-container' } }\n ), []);\n\n const questionListPortalNode = React.useMemo(createHtmlPortalNode, []);\n\n function setPlayerRef(player: PlayerReference) {\n playerRef.current = player;\n }\n\n function useInitialize(initializeData: PlayerInitializationData) {\n const enabled = hasPreviewVideos || initializeData.mode !== 'hover';\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n /**\n * Cannot initialize a hover player if we already have a player elsewhere.\n */\n if (initializeData.mode === 'hover' && state.mode)\n return;\n\n /**\n * No hover to play on interactives. This feature is ComingSoon™️ - Sha\n */\n if (initializeData.mode === 'hover' && initializeData.objectTypeId === MasterType.Interactive)\n return;\n\n dispatch({\n type: 'initialize',\n data: initializeData\n });\n\n return disposeInternal;\n }, []);\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n return () => {\n if (!state.disposed)\n return;\n\n playerRef.current = null;\n };\n }, [state.disposed]);\n }\n\n function setPlayerMode(mode: PlayerMode) {\n dispatch({ type: 'mode', data: { mode } });\n }\n\n function setStarted(): void {\n dispatch({ type: 'started' });\n }\n\n function disposeInternal(force: boolean = false): void {\n dispatch({ type: 'dispose', data: { force: force } });\n }\n\n function setPersist(): void {\n dispatch({ type: 'persist' });\n }\n\n /**\n * If anything external calls dispose, we ignore the persist flag and force a disposal\n */\n function dispose(): void {\n disposeInternal(true);\n }\n\n const playerContextValues: PlayerContextValues = {\n ...state,\n playerRef,\n setPlayerRef,\n portalNode,\n questionListPortalNode,\n useInitialize,\n setPlayerMode,\n setStarted,\n dispose,\n setPersist,\n hasProvider: true\n };\n\n return (\n <PlayerContext.Provider value={playerContextValues}>\n {props.children}\n </PlayerContext.Provider>\n );\n}"],"names":["PlayerContext","React","usePlayerContext"],"mappings":"kEA8BA,MAAMA,EAAgBC,EAAM,cAAmC,CAAE,YAAa,GAAO,EAE9E,SAASC,GAAmB,CACjC,OAAOD,EAAM,WAAWD,CAAa,CACvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aK as Y,bX as X,j as t,O as m,L as h,T as x,p as C,a7 as J,v as d,h as Z,a6 as ee,bY as te,r as se,w as ne,a4 as M,c as re,u as A,bO as H,e as ae,a as ie,bF as R,V as ce,C as le}from"./app-DhPN-zNB.js";import{I as oe,a as de,M as ue,u as me}from"./DbBlo1x3.chunk.js";import{I as _,a as g}from"./BZfWKvo2.chunk.js";import{a as ge}from"./Cyyw1SCS.chunk.js";import{d as W,I as O,e as D,f as p,a as he,b as fe,h as N,i as xe}from"./Bodl5h9Z.chunk.js";import{P as be}from"./Cr_-BIsS.chunk.js";import{P as je,a as Ie}from"./DDeXXa-Z.chunk.js";import{T as Se}from"./wnQZ7WYP.chunk.js";import{u as we}from"./DEFJUMtW.chunk.js";import{u as ye}from"./DtbthThZ.chunk.js";import{u as pe}from"./NRnV1wHl.chunk.js";import{P as ve}from"./DUnqV5wd.chunk.js";import{u as ke}from"./BncpEV2O.chunk.js";import{u as Ne,a as Ce}from"./mjKop7CA.chunk.js";import{u as Me}from"./HCxw4efP.chunk.js";import{u as Ae,I as Re}from"./D7o6GeeF.chunk.js";import{u as Ue,a as Te}from"./B8DfvvPE.chunk.js";import{u as $e}from"./B7fZs_l2.chunk.js";import"./hqhdC5CE.chunk.js";import"./DNEgb5v1.chunk.js";import"./DePDakSd.chunk.js";import"./BRRS4PKg.chunk.js";import"./5O9SdVRZ.chunk.js";import"./sFV5nxD4.chunk.js";import"./DNRcL1e9.chunk.js";import"./aRYKkB2W.chunk.js";import"./6SDR31f9.chunk.js";import"./CztNQjFH.chunk.js";import"./C-Bnglks.chunk.js";import"./6bLX1DNm.chunk.js";import"./RoUeokG0.chunk.js";import"./CX5q-0jT.chunk.js";const Pe={preventScrollTop(){Y.Radio.channel(X.SHELL).trigger("prevent:scroll:top")}},Fe="shared.interactionQuestionsEmptyState",Ee=h.encloseNamespace(Fe);function qe(e){return t.jsxs(m,{className:"rounded h-100 bg-white justify-content-center py-4",children:[t.jsx(m.Image,{src:e.emptyStateImageUrl,size:"small"}),t.jsx(m.Info,{className:"w-100",children:Ee("emptyStateText")})]})}const v="shared.interactionResponseList";function Le(e){function s(){switch(e.filter){case"correct":return e.correctImageUrl;case"incorrect":return e.incorrectImageUrl;case"marking_required":return e.markingRequiredImageUrl;case"skipped":return e.skippedImageUrl}}function n(){switch(e.filter){case"correct":return"correctEmptyState";case"incorrect":return"incorrectEmptyState";case"marking_required":return"markingRequiredEmptyState";case"skipped":return"skippedEmptyState"}}return t.jsx(t.Fragment,{children:t.jsxs(m,{className:"m-4",children:[t.jsx(m.Image,{src:s(),className:"w-25 h-auto"}),t.jsx(m.Info,{children:t.jsx(x,{namespace:v,phrase:n()})})]})})}function He(e){function s(r){return r===e.filter}function n(r){return`rounded-pill bg-light ${s(r)?"bg-dark text-white":""}`}return t.jsxs("div",{className:"d-flex gap-2 m-3",children:[t.jsx("button",{className:n("marking_required"),onClick:()=>e.toggleFilter("marking_required"),children:t.jsx(x,{namespace:v,phrase:"markingRequired"})}),t.jsx("button",{className:n("correct"),onClick:()=>e.toggleFilter("correct"),children:t.jsx(x,{namespace:v,phrase:"correct"})}),t.jsx("button",{className:n("incorrect"),onClick:()=>e.toggleFilter("incorrect"),children:t.jsx(x,{namespace:v,phrase:"incorrect"})}),t.jsx("button",{className:n("skipped"),onClick:()=>e.toggleFilter("skipped"),children:t.jsx(x,{namespace:v,phrase:"skipped"})})]})}const We="interactives.interactionResponseListHeader",Be=h.encloseNamespace(We);function Qe(e){var n;const s=(n=e.interaction.data)==null?void 0:n.suggestedResponse;return t.jsx("div",{className:"rounded bg-white",children:t.jsxs("div",{className:"p-2 position-relative",children:[t.jsx("div",{className:"d-flex",children:t.jsx(_,{interaction:e.interaction,iconClassName:"flex-shrink-0"})}),!!s&&t.jsxs("div",{className:"mt-2",children:[t.jsx("strong",{children:Be("suggestedResponse")}),t.jsx("p",{className:"m-0",children:s})]})]})})}const _e="shared.submitMarkedAnswers",Oe=h.encloseNamespace(_e);function B(e){return t.jsx("div",{className:"d-flex justify-content-end",children:t.jsx("button",{className:"btn btn-outline-dark",onClick:e.submit,disabled:e.disabled,children:Oe("submitAnswers")})})}const De="_awaitingMarking_1nhv5_1",Ve={awaitingMarking:De},V="shared.interactionResponseList",U=h.encloseNamespace(V);function ze(e,s){return s.filter(r=>O.isInteractionCorrect(e,D(r))===p.AwaitingMarking).reduce((r,i)=>{var l,c;return{...r,[((l=i.user)==null?void 0:l.id)||((c=i.user)==null?void 0:c.sessionId)]:!0}},{})}function Ke(e){var u;const[s,n]=C.useState(),r=ze(e.interaction,e.results.students),i=Object.keys(e.markedAnswers).length;if(!((u=e.results.students)!=null&&u.length))return t.jsx("div",{className:"d-flex flex-column h-100",children:t.jsxs(m,{className:"bg-white rounded mt-2 py-5 flex-grow-1 justify-content-center",children:[t.jsx(m.Image,{src:e.emptyStateImageUrl,size:"small"}),t.jsx(m.Heading,{children:U("emptyStateHeading")}),t.jsx(m.Info,{className:"w-100",children:U("emptyStateDescription")})]})});function l(o){n(s===o?null:o)}function c(){return e.results.students.filter(o=>{const b=D(o),j=O.isInteractionCorrect(e.interaction,b),I={correct:p.Correct,incorrect:p.Incorrect,marking_required:p.AwaitingMarking,skipped:p.UnAnswered};return!s||s in I&&j===I[s]})}const a=c();return t.jsxs(t.Fragment,{children:[e.reportsStyling&&t.jsx(Qe,{interaction:e.interaction}),t.jsxs("div",{className:e.reportsStyling?"d-flex justify-content-end":"d-flex align-items-center justify-content-between border-bottom px-3 py-2",children:[!e.reportsStyling&&t.jsx("p",{className:"fw-semibold mb-0",children:t.jsx(x,{namespace:V,phrase:"studentAnswers"})}),!!Object.keys(r).length&&t.jsx(J,{id:"submitAnswers",title:U("demoOnly"),spanHack:e.isDemo,children:t.jsx("div",{className:`${e.isDemo?"pointer-events-none":""} ${e.reportsStyling?"mt-2":""}`,children:t.jsx(B,{submit:e.submitMarkedAnswers,disabled:!i})})})]}),t.jsxs(t.Fragment,{children:[!e.reportsStyling&&t.jsx(He,{filter:s,toggleFilter:l}),!e.reportsStyling&&!a.length&&s&&t.jsx(Le,{filter:s,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl}),a&&t.jsx("ul",{className:"list-unstyled mb-0",children:a.map((o,b)=>{var w,y;const j=ge(o.user,e.anonymiseUsers),I=r[((w=o.user)==null?void 0:w.id)||((y=o.user)==null?void 0:y.sessionId)];let S=e.reportsStyling?"bg-white p-2":"bg-white px-3 pt-3 pb-2";return I&&(S+=` ${Ve.awaitingMarking} my-1`),t.jsx("li",{className:e.reportsStyling?"":"border-bottom",children:e.reportsStyling?t.jsx(oe,{interaction:e.interaction,studentResults:o,markedStatus:W(e.interaction.id,o,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:j,className:S,showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):t.jsx(de,{interaction:e.interaction,studentResults:o,markedStatus:W(e.interaction.id,o,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,showStudentDetails:!0,anonymisedUserName:j,className:S,showFeedback:!0})},b)})}),e.reportsStyling&&!!r.length&&t.jsx("div",{className:"mt-2",children:t.jsx(B,{submit:e.submitMarkedAnswers,disabled:!i})})]})]})}function Ge(e){const s=n=>n?n.split(/({\d+})/).map((r,i)=>{const l=r.match(/{(\d+)}/);if(l){const c=l[1],a=e.interaction.actionableItems.find(u=>+u.order==+c);if(a)return t.jsx("span",{className:"bg-white border border-gray-300 rounded p-1 lh-lg",children:a.name},i)}return r}):"";return t.jsx("div",{children:t.jsx("p",{className:"mb-0",children:s(e.interaction.data.sentence)})})}const Ye="_answerWidth_nmntd_10",$={answerWidth:Ye};function Xe(e){var n,r;return!((r=d.first((n=e.interaction)==null?void 0:n.actionableItems).data)!=null&&r.imageUrl)?t.jsx("ul",{className:`${$.answerWidth} list-unstyled row g-2`,children:e.interaction.actionableItems.map(i=>t.jsx("li",{className:"col-12",children:t.jsxs("div",{className:`${i.isCorrect?"bg-light-green border-green":"bg-light-red border-red"} rounded border py-1 px-2 m-0`,children:[t.jsxs("span",{className:"fw-semibold",children:[e.indexToLetter(i.order),". "]}),t.jsx("span",{children:i.name})]})},i.id))}):t.jsx("div",{className:$.answerWidth,children:t.jsx(ue,{interaction:e.interaction,size:"sm",showFeedback:!1,showCorrectnessIcons:!0,isDisplayOnly:!0})})}const Je="shared.questionTable";function Ze(e){var n;const s=(n=e.interaction.data)==null?void 0:n.suggestedResponse;return s?t.jsxs("div",{className:`${$.answerWidth} bg-light-blue rounded p-2 mb-2`,children:[t.jsx("div",{className:"d-flex justify-content-between",children:t.jsx("p",{className:"fw-semibold mb-2",children:t.jsx(x,{namespace:Je,phrase:"suggestedResponse"})})}),t.jsx("p",{className:"mb-0",children:s})]}):t.jsx(t.Fragment,{})}function et(e){return t.jsx("ul",{className:"list-unstyled d-flex gap-2",children:e.interaction.actionableItems.map(s=>t.jsxs("li",{className:`${s.isCorrect?"bg-light-green border-green":"bg-light-red border-red"} rounded border px-2 py-1 mb-2 w-50`,children:[t.jsxs("span",{className:"fw-semibold",children:[e.indexToLetter(s.order),". "]}),t.jsx("span",{children:s.name})]},s.id))})}function tt(e){function s(){switch(e.interaction.typeId){case g.MultipleChoice:return t.jsx(Xe,{interaction:e.interaction,indexToLetter:F});case g.TrueOrFalse:return t.jsx(et,{interaction:e.interaction,indexToLetter:F});case g.ShortAnswer:return t.jsx(Ze,{interaction:e.interaction});case g.MissingWord:return t.jsx(Ge,{interaction:e.interaction});default:return null}}const n=s();return n?t.jsx("div",{className:"w-100 mt-3",children:n}):t.jsx(t.Fragment,{})}const st="shared.questionTable",z=h.encloseNamespace(st);function nt(e,s,n){const r=e.cells.find(l=>l.column.id===n).value,i=s.cells.find(l=>l.column.id===n).value;return r.awaitingMarking?-1:i.awaitingMarking||r.percentCorrect>=i.percentCorrect?1:-1}function P(e){return t.jsx("div",{className:`d-flex ${e.className??""}`,children:e.children})}function T(e){return t.jsx(P,{className:e.column.isSorted&&"fw-bold",children:z(e.phraseKey)})}function rt(e){return[{Header:({column:s})=>t.jsx(T,{column:s,phraseKey:"#"}),accessor:"questionNumber",id:"index",Cell:({row:{original:{questionNumber:s}}})=>t.jsxs(P,{children:[s+1,"."]}),width:15,disableSortBy:!0},{Header:({column:s})=>t.jsx(T,{column:s,phraseKey:"question"}),accessor:"data",Cell:({row:{original:s},initialState:{selectedRowIds:n}})=>{const r=n==null?void 0:n[s==null?void 0:s.id];return t.jsxs(P,{className:"flex-column",children:[t.jsx("div",{className:`${r?"":"clamp-1"} pe-2`,children:t.jsx(_,{interaction:s,containerClassName:"d-flex"})}),e&&r&&t.jsx(tt,{interaction:s})]})},disableSortBy:!0},{Header:({column:s})=>t.jsx(T,{column:s,phraseKey:"score"}),accessor:"resultsSummary",id:"correctlyAnswered",Cell:({value:{percentCorrect:s,awaitingMarking:n}})=>n?t.jsx(be,{title:z("markingRequired"),className:"flex-grow-1",tooltipClassName:"d-block",showLabel:!0}):t.jsx(je,{percentage:s,layout:Ie.LabelBefore}),width:60,sortDescFirst:!0,sortType:nt}]}function at(e,s,n,r){return C.useMemo(()=>{const i=he(e),l=i.reduce((a,u,o)=>({...a,[u.id]:o}),{}),c=i.map(a=>({...a,questionNumber:l[a.id],resultsSummary:fe(a,s)}));if((r==null?void 0:r.id)==="correctlyAnswered"){const a=d.sortBy(c,u=>u.resultsSummary.awaitingMarking?-1:u.resultsSummary.percentCorrect);return r.desc?a.reverse():a}return c},[n,r])}function F(e){return String.fromCharCode(e+65)}const it="shared.questionTable",f=h.encloseNamespace(it);function ct(e,s){const n=e.actionableItems.map((r,i)=>({id:r.id,label:e.typeId===g.MultipleChoice?F(i):r.name,isCorrect:r.isCorrect,count:0}));return s.students.forEach(r=>{const i=d.last(r.results).attempts,l=d.findWhere(i,{id:e.id});l&&l.answers.forEach(c=>{const a=d.findWhere(n,{id:c.id});a&&a.count++})}),n}function lt(e,s){const n=e.actionableItems.map(r=>({id:r.id,label:r.name,isCorrect:r.isCorrect,count:0}));return n.push({label:f("incorrect"),count:0,isCorrect:!1}),s.students.forEach(r=>{const i=d.last(r.results).attempts,l=d.findWhere(i,{id:e.id});l&&l.answers.forEach(c=>{const a=d.findWhere(n,{id:c.id});if(a&&c.status===N.Correct)a.count++;else{const u=d.findWhere(n,{label:f("incorrect")});u.count++}})}),n}function ot(e,s){const n=[{label:f("correct"),isCorrect:!0,count:0},{label:f("incorrect"),isCorrect:!1,count:0}];return s.students.forEach(r=>{const i=d.last(r.results).attempts,l=d.findWhere(i,{id:e.id});l&&l.answers.forEach(c=>{if(c.status===N.Correct){const a=d.findWhere(n,{label:f("correct")});a.count++}if(c.status===N.Incorrect){const a=d.findWhere(n,{label:f("incorrect")});a.count++}if(c.status===N.PendingReview){let a=d.findWhere(n,{label:f("pending")});a||(n.push({label:f("pending"),count:0,isCorrect:!1}),a=d.findWhere(n,{label:f("pending")})),a.count++}})}),n}function dt(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M12 4c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.62 1.384 1.384 1.384h4.308c.763 0 1.385-.621 1.385-1.385v-3.77A6 6 0 0 0 18 10c0-3.308-2.692-6-6-6m.461 8a2.62 2.62 0 0 1 2.154-2.575v.113a2.62 2.62 0 0 1-2.154 2.575zm-.922.113a2.62 2.62 0 0 1-2.154-2.575v-.113A2.62 2.62 0 0 1 11.539 12zm3.076 4.656v.616h-5.23v-.616zm-.461 2.308H9.846a.46.46 0 0 1-.461-.462v-.307h5.23v.307a.46.46 0 0 1-.461.462m.666-4.855a.46.46 0 0 0-.205.384v1.24h-2.154v-2.8a3.544 3.544 0 0 0 3.078-3.508v-.615a.46.46 0 0 0-.462-.461A3.54 3.54 0 0 0 12 10.254a3.54 3.54 0 0 0-3.077-1.792.46.46 0 0 0-.461.461v.615a3.544 3.544 0 0 0 3.077 3.509v2.8H9.385v-1.241a.46.46 0 0 0-.205-.384A5.07 5.07 0 0 1 6.923 10c0-2.8 2.278-5.077 5.077-5.077S17.077 7.201 17.077 10a5.07 5.07 0 0 1-2.257 4.222"})})}const K="shared.questionTable",ut=h.encloseNamespace(K);function mt(e){const s=r(),n=i();function r(){if(!e.interaction||!e.results)return;let c;switch(e.interaction.typeId){case g.ShortAnswer:case g.Illustration:c=ot;break;case g.MissingWord:c=lt;break;case g.MultipleChoice:case g.TrueOrFalse:c=ct;break}return c(e.interaction,e.results)}function i(){return s==null?void 0:s.reduce((c,a)=>a.count>c?a.count:c,0)}function l(c){const a="border rounded me-2";return c.count?c.label===ut("pending")?`${a} border-blue bg-light-blue`:c.isCorrect?`${a} border-green bg-light-green`:`${a} border-red bg-light-red`:`${a} border bg-light px-1`}return t.jsxs("div",{className:"border border rounded p-3 mb-3",children:[t.jsxs("div",{className:"d-flex align-items-center gap-2 mb-3",children:[t.jsx("div",{className:"rounded-circle bg-light-teal text-teal",children:t.jsx(Z,{svg:dt,size:ee.Large})}),t.jsx("h2",{className:"h6 mb-0",children:t.jsx("span",{children:t.jsx(x,{namespace:K,phrase:"questionSummary"})})})]}),t.jsxs("div",{className:"d-flex gap-2",children:[t.jsx("div",{className:"max-w-25",children:s==null?void 0:s.map(c=>t.jsx("p",{className:"text-truncate mb-2",children:c.label},c.label))}),t.jsx("div",{className:"flex-grow-1",children:s==null?void 0:s.map((c,a)=>t.jsxs("div",{className:"d-flex mb-2",children:[t.jsx("div",{className:l(c),style:{width:`${c.count/n*100}%`,height:20}}),t.jsx("span",{children:c.count})]},`${e.interaction.id}${a}`))})]})]})}const gt="shared.selectedInteractionEmptyState",ht=h.encloseNamespace(gt);function ft(e){return t.jsxs(m,{className:"rounded h-100 bg-white justify-content-center py-4",children:[t.jsx(m.Image,{src:e.emptyStateUrl,size:"small"}),t.jsx(m.Info,{className:"w-100",children:ht("emptyStateText")})]})}function xt(e,s){switch(e){case"score_desc":return[{id:s,desc:!0}];case"score_asc":return[{id:s,desc:!1}];default:return[]}}function bt(e){var c;const[s,n]=C.useState(xt(e.sortBy,"correctlyAnswered")),r=at(e.interactive,e.results,e.refreshTable,d.first(s)),i=e.selectedInteractionId&&xe(e.interactive,e.selectedInteractionId);function l({original:a}){Pe.preventScrollTop(),te.updateParams({interactionId:a.id},{merge:!0})}return t.jsxs("div",{className:"row",children:[t.jsx("div",{className:"col-6 flex-grow-1",children:t.jsx(Se,{columns:rt(e.showAnswersInTable),data:r,theme:e.theme,onSelectRow:l,initialSelectedRowIds:i?[i.id]:null,getRowId:a=>a.id,enableSort:!0,manualSort:!0,onSort:n,initialSortBy:s,emptyState:t.jsx(qe,{emptyStateImageUrl:e.emptyQuestionsStateImageUrl})},e.selectedInteractionId)}),t.jsxs("div",{className:"col-6 d-flex flex-column",children:[!e.reportsStyling&&e.selectedInteractionId&&!!((c=e.results.students)!=null&&c.length)&&t.jsx(mt,{interaction:i,results:e.results}),t.jsxs("div",{className:`rounded flex-grow-1 ${e.reportsStyling?"":"border"}`,children:[!!i&&t.jsx(Ke,{interaction:i,results:e.results,markedAnswers:e.markedAnswers,addMarkedAnswers:e.addMarkedAnswers,submitMarkedAnswers:e.submitMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymiseUsers:e.anonymiseUsers,emptyStateImageUrl:e.emptyResponseStateImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,correctImageUrl:e.correctImageUrl,incorrectImageUrl:e.incorrectImageUrl,skippedImageUrl:e.skippedImageUrl,reportsStyling:e.reportsStyling,isDemo:e.isDemo}),!i&&t.jsx(ft,{emptyStateUrl:e.selectQuestionImageUrl})]})]})]})}const jt="shared.confirmationPopup",Q=h.encloseNamespace(jt);G.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"};function G(e){const[s,n]=se.useState(!1);return t.jsx(ne,{title:e.title,closePopup:e.closePopup,children:t.jsxs(t.Fragment,{children:[e.children,t.jsxs(M,{children:[t.jsx(M.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||Q("cancel")}),t.jsx(M.Submit,{onClick:()=>{n(!0),e.onClickConfirm()},text:e.confirmButtonText||Q("confirm"),variant:e.confirmButtonVariant,showSpinner:s,disabled:e.disabledConfirmButton})]})]})})}const It="_row_1ygni_1",St={row:It},wt={table:"bg-white rounded pb-2",header:"border-bottom px-2",headerCell:"p-2 d-flex align-items-center",cell:"px-2",row:`m-2 rounded py-1 ${St.row}`,selectedRow:"bg-light",sortIndicator:"ms-2"},yt="interactives.interactiveQuestionList",k=h.encloseNamespace(yt);function ts(e){var w,y,E,q,L;const[s]=re(ce.ANONYMISE_USERS),[n,r]=C.useState(!1),i=A(H.interactiveMetadata(e.interactiveMetadataId)),l=A((w=i.data)!=null&&w.interactiveId?H.interactive(i.data.interactiveId):null),c=ae(),a=we(e.interactiveMetadataId,c),u=A(le.config());ie({title:k("pageTitle",{interactive:(y=i.data)==null?void 0:y.name})}),Me((E=i.data)==null?void 0:E.name),Ne(Ce(i.data)),$e(e.interactiveMetadataId),Ue(a),Ae(e.interactiveMetadataId),ye(i),ke(i),pe([l,a,u]);const o=Te(a),{markedAnswers:b,addMarkedAnswers:j,submitMarkedAnswers:I}=me((q=l.data)==null?void 0:q.id,(L=i.data)==null?void 0:L.id,()=>r(!1)),S=!!l.data&&!!a.data&&!!u.data;return t.jsxs(t.Fragment,{children:[t.jsxs("div",{children:[t.jsx(Re,{interactiveMetadataId:e.interactiveMetadataId}),S?t.jsx(bt,{emptyResponseStateImageUrl:R.EmptyStates.Interactives.NoResponses,emptyQuestionsStateImageUrl:R.EmptyStates.Interactives.NoQuestions,selectQuestionImageUrl:R.EmptyStates.Interactives.NoData,anonymiseUsers:s,interactive:l.data,results:a.data,markedAnswers:b,addMarkedAnswers:j,submitMarkedAnswers:()=>r(!0),imageCdnUrl:u.data.imageCdnUrl,selectedInteractionId:e.interactionId,refreshTable:o,theme:wt,reportsStyling:!0}):t.jsx("div",{className:"row",children:t.jsx("div",{className:"col-6",children:t.jsx(ve,{})})})]}),n&&t.jsx(G,{title:k("markPopupTitle",{smartCount:Object.keys(b).length??0}),closePopup:()=>r(!1),confirmButtonText:k("submit"),confirmButtonVariant:"dark",onClickConfirm:I,children:t.jsx("p",{children:k("markPopupBody")})})]})}export{ts as InteractiveQuestionListView};
|
|
2
|
+
//# sourceMappingURL=BAaa7KIR.chunk.js.map
|