@clickview/streamable-learning 0.34.0 → 0.34.1-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/bundles.json +2 -2
- package/dist/css/B-attovs.chunk.css +9 -0
- package/dist/css/B1NucFMn.chunk.css +1 -0
- package/dist/css/BPdg7JW4.chunk.css +1 -0
- package/dist/css/BPrUSCaY.chunk.css +1 -0
- package/dist/css/BR0fUt9D.chunk.css +1 -0
- package/dist/css/BhYm6SRm.chunk.css +1 -0
- package/dist/css/BiRz4h1c.chunk.css +1 -0
- package/dist/css/Bq1ChJn4.chunk.css +1 -0
- package/dist/css/Bt85j9js.chunk.css +1 -0
- package/dist/css/BuYrqi9E.chunk.css +1 -0
- package/dist/css/BugV1Bpa.chunk.css +1 -0
- package/dist/css/BuuVPl7n.chunk.css +1 -0
- package/dist/css/C1NkrNqQ.chunk.css +1 -0
- package/dist/css/C1qv5jz5.chunk.css +1 -0
- package/dist/css/C7XoyEPr.chunk.css +1 -0
- package/dist/css/C7_MDu56.chunk.css +1 -0
- package/dist/css/CC5F5C8O.chunk.css +1 -0
- package/dist/css/CChSC6Ta.chunk.css +1 -0
- package/dist/css/CCsCPLDG.chunk.css +1 -0
- package/dist/css/CD1qrI1T.chunk.css +1 -0
- package/dist/css/CKqvCBj4.chunk.css +1 -0
- package/dist/css/CLZ0Ycds.chunk.css +1 -0
- package/dist/css/CO7M4rZW.chunk.css +1 -0
- package/dist/css/CY0yvCW4.chunk.css +1 -0
- package/dist/css/CYGsw8FT.chunk.css +1 -0
- package/dist/css/Cbi3KYBa.chunk.css +1 -0
- package/dist/css/CliS8Q8r.chunk.css +1 -0
- package/dist/css/D-kQKsZN.chunk.css +1 -0
- package/dist/css/D2NwUVrK.chunk.css +1 -0
- package/dist/css/D4g1IoUU.chunk.css +1 -0
- package/dist/css/DBgpcO3T.chunk.css +1 -0
- package/dist/css/DDnpOnVB.chunk.css +1 -0
- package/dist/css/DZJSONGP.chunk.css +1 -0
- package/dist/css/Dc0zNt2E.chunk.css +1 -0
- package/dist/css/DeAfaPiD.chunk.css +1 -0
- package/dist/css/Dj731zLm.chunk.css +1 -0
- package/dist/css/DjPPxa0A.chunk.css +1 -0
- package/dist/css/DlOtoSz0.chunk.css +1 -0
- package/dist/css/DwduQat7.chunk.css +1 -0
- package/dist/css/Dzuu2GTx.chunk.css +1 -0
- package/dist/css/JAvsJreH.chunk.css +1 -0
- package/dist/css/NKlFYVOc.chunk.css +1 -0
- package/dist/css/VZd8qGtK.chunk.css +1 -0
- package/dist/css/Y7U--2na.chunk.css +1 -0
- package/dist/css/ir3IcK_l.chunk.css +1 -0
- package/dist/css/jbMisi9r.chunk.css +1 -0
- package/dist/css/kS5aDtIJ.chunk.css +1 -0
- package/dist/css/mqCL1o7m.chunk.css +1 -0
- package/dist/css/qZzkUeZk.chunk.css +1 -0
- package/dist/css/sC_H3yXE.chunk.css +1 -0
- package/dist/css/wR_6C_NV.chunk.css +1 -0
- package/dist/en.json +1 -0
- package/dist/scripts/-Oi3rE3V.chunk.js +5 -0
- package/dist/scripts/-Oi3rE3V.chunk.js.map +1 -0
- package/dist/scripts/-cwk-1Iv.chunk.js +2 -0
- package/dist/scripts/-cwk-1Iv.chunk.js.map +1 -0
- package/dist/scripts/4oi1ldJ4.chunk.js +3 -0
- package/dist/scripts/4oi1ldJ4.chunk.js.map +1 -0
- package/dist/scripts/6UeJLeAd.chunk.js +2 -0
- package/dist/scripts/6UeJLeAd.chunk.js.map +1 -0
- package/dist/scripts/8zar0u1i.chunk.js +2 -0
- package/dist/scripts/8zar0u1i.chunk.js.map +1 -0
- package/dist/scripts/9NIa7Pi_.chunk.js +2 -0
- package/dist/scripts/9NIa7Pi_.chunk.js.map +1 -0
- package/dist/scripts/B5OOLcT3.chunk.js +2 -0
- package/dist/scripts/B5OOLcT3.chunk.js.map +1 -0
- package/dist/scripts/B8XJmK96.chunk.js +8 -0
- package/dist/scripts/B8XJmK96.chunk.js.map +1 -0
- package/dist/scripts/BA6k9XoA.chunk.js +2 -0
- package/dist/scripts/BA6k9XoA.chunk.js.map +1 -0
- package/dist/scripts/BBnDr_iy.chunk.js +2 -0
- package/dist/scripts/BBnDr_iy.chunk.js.map +1 -0
- package/dist/scripts/BEL0opwe.chunk.js +2 -0
- package/dist/scripts/BEL0opwe.chunk.js.map +1 -0
- package/dist/scripts/BHmtLW9C.chunk.js +2 -0
- package/dist/scripts/BHmtLW9C.chunk.js.map +1 -0
- package/dist/scripts/BJ0C6oH6.chunk.js +2 -0
- package/dist/scripts/BJ0C6oH6.chunk.js.map +1 -0
- package/dist/scripts/BPcJv8Nj.chunk.js +2 -0
- package/dist/scripts/BPcJv8Nj.chunk.js.map +1 -0
- package/dist/scripts/BQQ9SPei.chunk.js +10 -0
- package/dist/scripts/BQQ9SPei.chunk.js.map +1 -0
- package/dist/scripts/BQQZ0Zva.chunk.js +2 -0
- package/dist/scripts/BQQZ0Zva.chunk.js.map +1 -0
- package/dist/scripts/BRKKXF-k.chunk.js +2 -0
- package/dist/scripts/BRKKXF-k.chunk.js.map +1 -0
- package/dist/scripts/BUhbk0mt.chunk.js +2 -0
- package/dist/scripts/BUhbk0mt.chunk.js.map +1 -0
- package/dist/scripts/BXKrMYdw.chunk.js +2 -0
- package/dist/scripts/BXKrMYdw.chunk.js.map +1 -0
- package/dist/scripts/B_eK8A25.chunk.js +2 -0
- package/dist/scripts/B_eK8A25.chunk.js.map +1 -0
- package/dist/scripts/BbjveACT.chunk.js +2 -0
- package/dist/scripts/BbjveACT.chunk.js.map +1 -0
- package/dist/scripts/BdHxGaRy.chunk.js +2 -0
- package/dist/scripts/BdHxGaRy.chunk.js.map +1 -0
- package/dist/scripts/BeHz9c4V.chunk.js +2 -0
- package/dist/scripts/BeHz9c4V.chunk.js.map +1 -0
- package/dist/scripts/BexFb8rj.chunk.js +2 -0
- package/dist/scripts/BexFb8rj.chunk.js.map +1 -0
- package/dist/scripts/Bi8YRFeY.chunk.js +2 -0
- package/dist/scripts/Bi8YRFeY.chunk.js.map +1 -0
- package/dist/scripts/Bj3i6I7i.chunk.js +2 -0
- package/dist/scripts/Bj3i6I7i.chunk.js.map +1 -0
- package/dist/scripts/BktU87GA.chunk.js +2 -0
- package/dist/scripts/BktU87GA.chunk.js.map +1 -0
- package/dist/scripts/Bl1HvG0b.chunk.js +2 -0
- package/dist/scripts/Bl1HvG0b.chunk.js.map +1 -0
- package/dist/scripts/BnWlQ7-4.chunk.js +2 -0
- package/dist/scripts/BnWlQ7-4.chunk.js.map +1 -0
- package/dist/scripts/BoqzK1u7.chunk.js +2 -0
- package/dist/scripts/BoqzK1u7.chunk.js.map +1 -0
- package/dist/scripts/Bsa3zcW0.chunk.js +2 -0
- package/dist/scripts/Bsa3zcW0.chunk.js.map +1 -0
- package/dist/scripts/Bt3kaRtU.chunk.js +6 -0
- package/dist/scripts/Bt3kaRtU.chunk.js.map +1 -0
- package/dist/scripts/BtiKTu8r.chunk.js +2 -0
- package/dist/scripts/BtiKTu8r.chunk.js.map +1 -0
- package/dist/scripts/BwOoIPmc.chunk.js +2 -0
- package/dist/scripts/BwOoIPmc.chunk.js.map +1 -0
- package/dist/scripts/BwuSNwcs.chunk.js +2 -0
- package/dist/scripts/BwuSNwcs.chunk.js.map +1 -0
- package/dist/scripts/Byn8R7bs.chunk.js +2 -0
- package/dist/scripts/Byn8R7bs.chunk.js.map +1 -0
- package/dist/scripts/C2Zu5vKc.chunk.js +2 -0
- package/dist/scripts/C2Zu5vKc.chunk.js.map +1 -0
- package/dist/scripts/C2uxO8e2.chunk.js +2 -0
- package/dist/scripts/C2uxO8e2.chunk.js.map +1 -0
- package/dist/scripts/C35NlkUr.chunk.js +2 -0
- package/dist/scripts/C35NlkUr.chunk.js.map +1 -0
- package/dist/scripts/C5QPXJGU.chunk.js +15 -0
- package/dist/scripts/C5QPXJGU.chunk.js.map +1 -0
- package/dist/scripts/C6mGMCz4.chunk.js +2 -0
- package/dist/scripts/C6mGMCz4.chunk.js.map +1 -0
- package/dist/scripts/C8ZuWYfb.chunk.js +2 -0
- package/dist/scripts/C8ZuWYfb.chunk.js.map +1 -0
- package/dist/scripts/CEmtkty-.chunk.js +2 -0
- package/dist/scripts/CEmtkty-.chunk.js.map +1 -0
- package/dist/scripts/CICkmQW6.chunk.js +2 -0
- package/dist/scripts/CICkmQW6.chunk.js.map +1 -0
- package/dist/scripts/CLumRL-T.chunk.js +2 -0
- package/dist/scripts/CLumRL-T.chunk.js.map +1 -0
- package/dist/scripts/CO_D2O4I.chunk.js +2 -0
- package/dist/scripts/CO_D2O4I.chunk.js.map +1 -0
- package/dist/scripts/CPXlV0fg.chunk.js +2 -0
- package/dist/scripts/CPXlV0fg.chunk.js.map +1 -0
- package/dist/scripts/CQZOieOF.chunk.js +2 -0
- package/dist/scripts/CQZOieOF.chunk.js.map +1 -0
- package/dist/scripts/CQoWqq54.chunk.js +2 -0
- package/dist/scripts/CQoWqq54.chunk.js.map +1 -0
- package/dist/scripts/CRT9qru0.chunk.js +2 -0
- package/dist/scripts/CRT9qru0.chunk.js.map +1 -0
- package/dist/scripts/CU6iZ8MR.chunk.js +2 -0
- package/dist/scripts/CU6iZ8MR.chunk.js.map +1 -0
- package/dist/scripts/CUltMbyK.chunk.js +2 -0
- package/dist/scripts/CUltMbyK.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/CYlwi5iC.chunk.js +7 -0
- package/dist/scripts/CYlwi5iC.chunk.js.map +1 -0
- package/dist/scripts/CgJckl-g.chunk.js +2 -0
- package/dist/scripts/CgJckl-g.chunk.js.map +1 -0
- package/dist/scripts/Cj5ETNHP.chunk.js +2 -0
- package/dist/scripts/Cj5ETNHP.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/Cr8fUgj9.chunk.js +2 -0
- package/dist/scripts/Cr8fUgj9.chunk.js.map +1 -0
- package/dist/scripts/CtM_cXum.chunk.js +2 -0
- package/dist/scripts/CtM_cXum.chunk.js.map +1 -0
- package/dist/scripts/Cv1FGdNu.chunk.js +2 -0
- package/dist/scripts/Cv1FGdNu.chunk.js.map +1 -0
- package/dist/scripts/CvPDjx7y.chunk.js +2 -0
- package/dist/scripts/CvPDjx7y.chunk.js.map +1 -0
- package/dist/scripts/D0bydDVL.chunk.js +2 -0
- package/dist/scripts/D0bydDVL.chunk.js.map +1 -0
- package/dist/scripts/D1EE4AEz.chunk.js +356 -0
- package/dist/scripts/D1EE4AEz.chunk.js.map +1 -0
- package/dist/scripts/D84-WY3k.chunk.js +2 -0
- package/dist/scripts/D84-WY3k.chunk.js.map +1 -0
- package/dist/scripts/DAh7Ea13.chunk.js +2 -0
- package/dist/scripts/DAh7Ea13.chunk.js.map +1 -0
- package/dist/scripts/DBIkG3Bu.chunk.js +2 -0
- package/dist/scripts/DBIkG3Bu.chunk.js.map +1 -0
- package/dist/scripts/DCcI7sWt.chunk.js +2 -0
- package/dist/scripts/DCcI7sWt.chunk.js.map +1 -0
- package/dist/scripts/DEP24A-f.chunk.js +2 -0
- package/dist/scripts/DEP24A-f.chunk.js.map +1 -0
- package/dist/scripts/DGFORsAE.chunk.js +2 -0
- package/dist/scripts/DGFORsAE.chunk.js.map +1 -0
- package/dist/scripts/DGaf-Jy9.chunk.js +2 -0
- package/dist/scripts/DGaf-Jy9.chunk.js.map +1 -0
- package/dist/scripts/DJyZ6Hx7.chunk.js +2 -0
- package/dist/scripts/DJyZ6Hx7.chunk.js.map +1 -0
- package/dist/scripts/DOCam-GK.chunk.js +2 -0
- package/dist/scripts/DOCam-GK.chunk.js.map +1 -0
- package/dist/scripts/DSLX3H2r.chunk.js +2 -0
- package/dist/scripts/DSLX3H2r.chunk.js.map +1 -0
- package/dist/scripts/DSq4f4jm.chunk.js +2 -0
- package/dist/scripts/DSq4f4jm.chunk.js.map +1 -0
- package/dist/scripts/DXxBqeLg.chunk.js +2 -0
- package/dist/scripts/DXxBqeLg.chunk.js.map +1 -0
- package/dist/scripts/DZ6Jrm23.chunk.js +2 -0
- package/dist/scripts/DZ6Jrm23.chunk.js.map +1 -0
- package/dist/scripts/Daes5Wgy.chunk.js +2 -0
- package/dist/scripts/Daes5Wgy.chunk.js.map +1 -0
- package/dist/scripts/DeUbJqVo.chunk.js +2 -0
- package/dist/scripts/DeUbJqVo.chunk.js.map +1 -0
- package/dist/scripts/DgEqkZy0.chunk.js +8 -0
- package/dist/scripts/DgEqkZy0.chunk.js.map +1 -0
- package/dist/scripts/DhB-Uugx.chunk.js +2 -0
- package/dist/scripts/DhB-Uugx.chunk.js.map +1 -0
- package/dist/scripts/DhqAA1wT.chunk.js +2 -0
- package/dist/scripts/DhqAA1wT.chunk.js.map +1 -0
- package/dist/scripts/Di5-l4QJ.chunk.js +2 -0
- package/dist/scripts/Di5-l4QJ.chunk.js.map +1 -0
- package/dist/scripts/DiQkAtUx.chunk.js +53 -0
- package/dist/scripts/DiQkAtUx.chunk.js.map +1 -0
- package/dist/scripts/DireiQEp.chunk.js +2 -0
- package/dist/scripts/DireiQEp.chunk.js.map +1 -0
- package/dist/scripts/Dj66TI5y.chunk.js +2 -0
- package/dist/scripts/Dj66TI5y.chunk.js.map +1 -0
- package/dist/scripts/DkFkYS-j.chunk.js +2 -0
- package/dist/scripts/DkFkYS-j.chunk.js.map +1 -0
- package/dist/scripts/Dkq5GtOV.chunk.js +2 -0
- package/dist/scripts/Dkq5GtOV.chunk.js.map +1 -0
- package/dist/scripts/DmSSmUHZ.chunk.js +2 -0
- package/dist/scripts/DmSSmUHZ.chunk.js.map +1 -0
- package/dist/scripts/DoQU9vjn.chunk.js +2 -0
- package/dist/scripts/DoQU9vjn.chunk.js.map +1 -0
- package/dist/scripts/DtHh_hpg.chunk.js +2 -0
- package/dist/scripts/DtHh_hpg.chunk.js.map +1 -0
- package/dist/scripts/DvDdiDQN.chunk.js +7 -0
- package/dist/scripts/DvDdiDQN.chunk.js.map +1 -0
- package/dist/scripts/DwhG2uva.chunk.js +2 -0
- package/dist/scripts/DwhG2uva.chunk.js.map +1 -0
- package/dist/scripts/DxJlWHZr.chunk.js +2 -0
- package/dist/scripts/DxJlWHZr.chunk.js.map +1 -0
- package/dist/scripts/DxmeZ4C9.chunk.js +2 -0
- package/dist/scripts/DxmeZ4C9.chunk.js.map +1 -0
- package/dist/scripts/KuveJuNy.chunk.js +2 -0
- package/dist/scripts/KuveJuNy.chunk.js.map +1 -0
- package/dist/scripts/LKCLmV2A.chunk.js +2 -0
- package/dist/scripts/LKCLmV2A.chunk.js.map +1 -0
- package/dist/scripts/RnuR8yr3.chunk.js +2 -0
- package/dist/scripts/RnuR8yr3.chunk.js.map +1 -0
- package/dist/scripts/XxrnElSv.chunk.js +2 -0
- package/dist/scripts/XxrnElSv.chunk.js.map +1 -0
- package/dist/scripts/YF_QoXEj.chunk.js +3 -0
- package/dist/scripts/YF_QoXEj.chunk.js.map +1 -0
- package/dist/scripts/Z2sDSVPb.chunk.js +2 -0
- package/dist/scripts/Z2sDSVPb.chunk.js.map +1 -0
- package/dist/scripts/Zbze2j9b.chunk.js +2 -0
- package/dist/scripts/Zbze2j9b.chunk.js.map +1 -0
- package/dist/scripts/app-C56EnOMP.js +216 -0
- package/dist/scripts/app-C56EnOMP.js.map +1 -0
- package/dist/scripts/cvX-F_mx.chunk.js +2 -0
- package/dist/scripts/cvX-F_mx.chunk.js.map +1 -0
- package/dist/scripts/h34ZSRKe.chunk.js +2 -0
- package/dist/scripts/h34ZSRKe.chunk.js.map +1 -0
- package/dist/scripts/leubTuJo.chunk.js +2 -0
- package/dist/scripts/leubTuJo.chunk.js.map +1 -0
- package/dist/scripts/m5XtnRaH.chunk.js +2 -0
- package/dist/scripts/m5XtnRaH.chunk.js.map +1 -0
- package/dist/scripts/nay4aGaa.chunk.js +2 -0
- package/dist/scripts/nay4aGaa.chunk.js.map +1 -0
- package/dist/scripts/p61U8kXz.chunk.js +2 -0
- package/dist/scripts/p61U8kXz.chunk.js.map +1 -0
- package/dist/scripts/pkzD5BEm.chunk.js +2 -0
- package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
- package/dist/scripts/sc9-PV9Y.chunk.js +2 -0
- package/dist/scripts/sc9-PV9Y.chunk.js.map +1 -0
- package/dist/scripts/tAsRziXo.chunk.js +8 -0
- package/dist/scripts/tAsRziXo.chunk.js.map +1 -0
- package/dist/scripts/xrHhD6CF.chunk.js +8 -0
- package/dist/scripts/xrHhD6CF.chunk.js.map +1 -0
- package/dist/scripts/xxo027lm.chunk.js +2 -0
- package/dist/scripts/xxo027lm.chunk.js.map +1 -0
- package/package.json +5 -3
- package/typings/utils/imports.d.ts +2 -1
- package/vite.config.ts +6 -0
- package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +0 -7
- package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +0 -2
- package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +0 -50
- package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +0 -2
- package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +0 -34
- package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +0 -22
- package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +0 -2
- package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +0 -90
- package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +0 -9
- package/dist/css/5003-streamable-learning-b38d2ddbbe.chunk.css +0 -98
- package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +0 -13
- package/dist/css/6017-streamable-learning-098a205d01.chunk.css +0 -6
- package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +0 -1
- package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +0 -1
- package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +0 -5
- package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +0 -12
- package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +0 -1
- package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +0 -13
- package/dist/css/8601-streamable-learning-f525210660.chunk.css +0 -6
- package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +0 -2
- package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +0 -8
- package/dist/css/9842-streamable-learning-24729103f7.chunk.css +0 -4
- package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +0 -4
- package/dist/css/streamable-learning-dd0c1095d5.css +0 -23
- package/dist/languages/en.json +0 -1
- package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +0 -1
- package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +0 -2
- package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +0 -105
- package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +0 -2
- package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +0 -1
- package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +0 -1
- package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +0 -2
- package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +0 -9
- package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +0 -1
- package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +0 -1
- package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +0 -2
- package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +0 -1
- package/dist/scripts/2911-9e2725fd22-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +0 -1
- package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +0 -1
- package/dist/scripts/4254-ef581b8105-streamable-learning.chunk.js +0 -1
- package/dist/scripts/4607-36e8f52a55-streamable-learning.chunk.js +0 -2
- package/dist/scripts/4607-36e8f52a55-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +0 -2
- package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/5003-c23dd99aad-streamable-learning.chunk.js +0 -2
- package/dist/scripts/5003-c23dd99aad-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +0 -1
- package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +0 -1
- package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +0 -1
- package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +0 -2
- package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +0 -1
- package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +0 -2
- package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +0 -1
- package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/7347-e2b82be015-streamable-learning.chunk.js +0 -1
- package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +0 -2
- package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/7904-e07cdef2de-streamable-learning.chunk.js +0 -1
- package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8058-5333f0f01b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +0 -2
- package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +0 -60
- package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +0 -2
- package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9390-0f988af378-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9766-7c34cab592-streamable-learning.chunk.js +0 -2
- package/dist/scripts/9766-7c34cab592-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/9842-3add7f20d0-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9899-ca1a1a08c4-streamable-learning.chunk.js +0 -2
- package/dist/scripts/9899-ca1a1a08c4-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/bundle-91983aeacb.min.js +0 -2
- package/dist/scripts/bundle-91983aeacb.min.js.LICENSE.txt +0 -108
- package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +0 -2
- package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BUhbk0mt.chunk.js","sources":["../../../../libs/shared/src/images/svg/status/WarningOutlineSvg.tsx","../../../../libs/shared/src/components/widgets/curated-widgets/components/header/WidgetHeader.tsx","../../../../libs/shared/src/components/widgets/hooks/useWidgetKeyboard.ts","../../../../libs/shared/src/enums/CssMeasurement.ts","../../../../libs/shared/src/utils/DragHelper.ts","../../../../libs/shared/src/components/widgets/sliding-list/SlidingListContainer.tsx","../../../../libs/shared/src/enums/WidgetInteraction.ts"],"sourcesContent":["import React from 'react';\n\nexport function WarningOutlineSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m13.026 4.377 8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0M12 5 3.5 19h17zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2m.75-3.677a.69.69 0 0 1-.7.677.69.69 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677s.7.303.7.677z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { WarningOutlineSvg } from 'libs/shared/images/svg/status/WarningOutlineSvg';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport styles from './widget-header.module.scss';\n\nconst namespace = 'shared.widgetHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface WidgetHeaderProps {\n name: string;\n description?: string | JSX.Element;\n isPreviewing?: boolean;\n content?: any[];\n widgetTypeId?: WidgetTypeId;\n badgeComponent?: JSX.Element;\n\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n \n showSeeMoreLink?: boolean;\n onClick?: () => void;\n}\n\nfunction SeeMore(props: WidgetHeaderProps) {\n return (\n <div className={`ms-3 ${styles.seeMore}`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData }\n analyticsOptions={{\n location: LocationContext.SlidingList,\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.SeeMore\n }}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <p className='hover-text-underline text-dark curated-widget-heading'>{getPhrase('seeAll')}</p>\n </AppLink>\n </div>\n );\n}\n\nexport function WidgetHeader(props: WidgetHeaderProps): JSX.Element {\n const hasDescription = !!props.description;\n\n if (!props.name && !props.description)\n return <></>;\n\n const isBelowMinimum = WidgetHelper.isBelowContentMinimum(props.content, props.widgetTypeId);\n const minContent = WidgetTypeIdConfig[props.widgetTypeId]?.minContent ?? 0;\n\n return (\n <div className='curated-widget-header'>\n <div className='d-flex justify-content-between'>\n {!!props.name && (\n <div className='d-flex align-items-center'>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link text-reset' : ''}`}\n onClick={props.onClick}\n >\n <h2 className='h4 curated-widget-heading'>\n {props.isPreviewing && isBelowMinimum && (\n <SvgContainer\n svg={WarningOutlineSvg}\n title={`Widget is below the minimum content threshold of ${minContent} and won't be displayed.`}\n tooltipSpanHack\n tooltipSpanHackClassName='d-inline text-danger me-1'\n />\n )}\n {props.name}\n </h2>\n </AppLink>\n {!!React.isValidElement(props.badgeComponent) && props.badgeComponent}\n </div>\n )}\n {!!props.appLink && !hasDescription && !!props.showSeeMoreLink && <SeeMore {...props}/>}\n </div>\n \n {hasDescription && (\n <div className='d-flex justify-content-between align-items-end'>\n <p className={`description curated-widget-description`}>\n <span>{props.description}</span>\n </p>\n {!!props.appLink && !!props.showSeeMoreLink && <SeeMore {...props}/> }\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DynamicWidgetState } from 'libs/shared/components/widgets/dynamic-widget';\nimport { FixedWidgetState } from 'libs/shared/components/widgets/fixed-widget';\n\n// Sync with transition time in SlidingListContainer.tsx\nconst SLIDER_ANIMATION_TIME = 400;\n\ntype FixedWidgetKeyboardOptions = {\n type: 'fixed',\n state: FixedWidgetState,\n containerRef: React.MutableRefObject<HTMLElement>\n mediaQuery?: never;\n}\n\ntype DynamicWidgetKeyboardOptions = {\n type: 'dynamic',\n state: DynamicWidgetState,\n containerRef: React.MutableRefObject<HTMLElement>\n mediaQuery: string\n}\n\ntype UseWidgetKeyboard = FixedWidgetKeyboardOptions | DynamicWidgetKeyboardOptions\n\nexport function useWidgetKeyboard(options: UseWidgetKeyboard) {\n const { type, state, containerRef, mediaQuery } = options;\n\n const [ isTabbing, setIsTabbing ] = React.useState(false);\n const [ dynamicAttributes, setDynamicAttributes ] = React.useState<HashObject>({});\n const [ focusedWidgetIndex, setFocusedWidgetIndex ] = React.useState(null);\n\n const isTouch = React.useMemo(() => UserAgentHelper.isTouchScreen(), []);\n\n /**\n * Get accessibility attributes for dynamic widget items\n * */\n React.useEffect(() => {\n if (type !== 'dynamic' || !containerRef.current || !(state as DynamicWidgetState).containerLeftPosition || isTouch) return;\n\n setTimeout(() => getDynamicAttributes(), SLIDER_ANIMATION_TIME + 50);\n }, [\n containerRef.current,\n mediaQuery,\n (state as DynamicWidgetState).offset,\n (state as DynamicWidgetState).containerLeftPosition\n ]);\n\n function getDynamicAttributes() {\n const dynamicWidgetState = state as DynamicWidgetState;\n\n if (!containerRef.current?.children)\n return;\n\n const focusableItems = Array.from(containerRef.current.children).reduce((acc, item) => {\n const rect = item?.getBoundingClientRect();\n\n /**\n * When any part of the widget item is visible it should be focusable,\n * otherwise prevent interaction and the slider should be the next focusable element\n * */\n const isItemVisable =\n rect.left < dynamicWidgetState.containerRightPosition &&\n rect.right > dynamicWidgetState.containerLeftPosition;\n\n return {\n ...acc,\n [item.id]: isItemVisable\n ? {\n 'aria-hidden': false\n } : {\n 'aria-hidden': true,\n 'inert': 'true'\n }\n };\n }, {});\n\n setDynamicAttributes(focusableItems);\n }\n\n /**\n * Get accessibility attributes for fixed widget items\n * */\n function getFixedAttributes(index?: number) {\n const fixedWidgetState = state as FixedWidgetState;\n\n const isItemVisible =\n isTouch ||\n index >= (fixedWidgetState.offset - fixedWidgetState.viewableItems) &&\n index < fixedWidgetState.offset;\n if (isItemVisible) {\n return {\n 'aria-hidden': false\n };\n }\n\n return {\n 'inert': 'true',\n 'aria-hidden': true\n };\n }\n\n /**\n * When the user is not signed in, there may be videos which are not focusable.\n * setTimeout is required because the transition time is 400ms\n */\n function focusNext() {\n setTimeout(() => {\n if (!containerRef.current)\n return;\n\n const items = containerRef.current.querySelectorAll('li[aria-hidden]');\n\n let nextFocusableElement: HTMLElement = null;\n\n for (let i = (focusedWidgetIndex + 1); i < items.length; i++) {\n if (nextFocusableElement)\n break;\n\n nextFocusableElement = items[i].querySelector('a[tabindex=\"0\"]');\n }\n\n if (nextFocusableElement)\n nextFocusableElement.focus();\n }, SLIDER_ANIMATION_TIME + 100);\n }\n\n function focusPrev() {\n setTimeout(() => {\n if (!containerRef.current)\n return;\n\n const items = containerRef.current.querySelectorAll('li[aria-hidden]');\n\n let prevFocusableElement: HTMLElement = null;\n for (let i = focusedWidgetIndex - 1; i >= 0; i--) {\n if (prevFocusableElement) break;\n\n const item = items[i];\n prevFocusableElement = item.querySelector('a[tabindex=\"0\"]');\n }\n\n if (prevFocusableElement)\n prevFocusableElement.focus();\n }, SLIDER_ANIMATION_TIME + 100);\n }\n\n function onFocusWidget(index: number) {\n if (document.querySelector('.user-is-tabbing')) {\n setIsTabbing(true);\n setFocusedWidgetIndex(index);\n }\n }\n\n function onBlurWidget() {\n if (!document.querySelector('.user-is-tabbing')) {\n setIsTabbing(false);\n setFocusedWidgetIndex(null);\n }\n }\n\n return {\n isTabbing,\n onFocusWidget,\n onBlurWidget,\n getFixedAttributes,\n dynamicAttributes,\n focusNext,\n focusPrev\n };\n}","export enum CssMeasurement {\n Percentage = '%',\n Pixels = 'px'\n}","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst blankImage = new Image();\nblankImage.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=';\n\nexport const DragHelper = {\n // This removes the image that appears when you drag a draggable HTML element\n hideDragImage(event: React.DragEvent<HTMLElement>): void {\n if (!event.dataTransfer.setDragImage || !FunctionHelper.isFunction(event.dataTransfer.setDragImage))\n return;\n\n event.dataTransfer.setDragImage(blankImage, 0, 0);\n }\n};","import * as React from 'react';\n\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\nimport { DragHelper } from 'libs/shared/utils/DragHelper';\n\nconst isTouchScreen = UserAgentHelper.isTouchScreen();\n\nconst getPositionStyling = (xPosition: number, measurement: CssMeasurement, dragPercentage?: number) => {\n // Used in situations where a touch screen user is dragging the `<FixedWidget />`\n if (measurement === CssMeasurement.Percentage && dragPercentage)\n xPosition = xPosition - dragPercentage;\n \n return {\n transform: `translate3d(${xPosition}${measurement}, 0px, 0px)`,\n // Sync with transition time in useWidgetKeyboard.ts\n transition: 'transform .4s ease-in-out'\n };\n};\n\ninterface SlidingListContainerProps extends React.PropsWithChildren<unknown> {\n position: number;\n positionType: CssMeasurement;\n\n onDrag?: (event: React.DragEvent<HTMLUListElement>) => void;\n onDragEnd?: () => void;\n\n onTouchMove?: (event: React.TouchEvent<HTMLUListElement>) => void;\n onTouchEnd?: () => void;\n\n percentageDragged?: number;\n}\n\nexport const SlidingListContainer = React.forwardRef((\n props: SlidingListContainerProps,\n ref: React.MutableRefObject<HTMLUListElement>\n): JSX.Element => {\n const { children, positionType, onDrag, onDragEnd, onTouchMove, onTouchEnd, percentageDragged, position = 0 } = props;\n\n function getEventListeners(): HashObject {\n const listenerProps: HashObject = {};\n\n if (onDrag && onDragEnd) {\n listenerProps.draggable = true;\n listenerProps.onDragEnd = onDragEnd;\n listenerProps.onDragStart = DragHelper.hideDragImage;\n listenerProps.onDragOver = onDrag;\n }\n\n if (onTouchMove && onTouchEnd && isTouchScreen) {\n listenerProps.onTouchMoveCapture = onTouchMove;\n listenerProps.onTouchEndCapture = onTouchEnd;\n }\n\n return listenerProps;\n }\n\n return (\n <ul\n className='list-unstyled d-flex flex-nowrap position-relative w-100 mb-0'\n style={getPositionStyling(position, positionType, percentageDragged)}\n ref={ref}\n {...getEventListeners()}\n >\n {children}\n </ul>\n );\n});","export enum WidgetInteraction {\n Init = 'init',\n Next = 'next',\n Previous = 'previous',\n Resize = 'resize',\n Drag = 'drag',\n Update = 'update',\n JumpToIndex = 'jump-to-index'\n}"],"names":["WarningOutlineSvg","props","jsx","namespace","getPhrase","LanguageService","SeeMore","styles","AppLink","LocationContext","ClickDescriptor","WidgetHeader","hasDescription","Fragment","isBelowMinimum","WidgetHelper","minContent","_a","WidgetTypeIdConfig","jsxs","SvgContainer","React","SLIDER_ANIMATION_TIME","useWidgetKeyboard","options","type","state","containerRef","mediaQuery","isTabbing","setIsTabbing","dynamicAttributes","setDynamicAttributes","focusedWidgetIndex","setFocusedWidgetIndex","isTouch","UserAgentHelper","getDynamicAttributes","dynamicWidgetState","focusableItems","acc","item","rect","isItemVisable","getFixedAttributes","index","fixedWidgetState","focusNext","items","nextFocusableElement","i","focusPrev","prevFocusableElement","onFocusWidget","onBlurWidget","CssMeasurement","blankImage","DragHelper","event","FunctionHelper","isTouchScreen","getPositionStyling","xPosition","measurement","dragPercentage","SlidingListContainer","React.forwardRef","ref","children","positionType","onDrag","onDragEnd","onTouchMove","onTouchEnd","percentageDragged","position","getEventListeners","listenerProps","WidgetInteraction"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as t,a6 as s,D as n,Q as l}from"./app-C56EnOMP.js";import{a as o}from"./CEmtkty-.chunk.js";function c(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M9.2 6h5.6V4.6a.6.6 0 1 1 1.2 0V6h2a1 1 0 0 1 1 1v11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V7a1 1 0 0 1 1-1h2V4.6a.6.6 0 0 1 1.2 0zm8.8 5H6v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1zm-3.2 1.976a.51.51 0 0 0-.046-.706.477.477 0 0 0-.686.047l-3.063 3.598-1.092-1.122a.477.477 0 0 0-.688 0 .51.51 0 0 0 0 .707l1.46 1.5a.48.48 0 0 0 .71-.024z"})})}const d={livestream(e){return{url:s.urlBuilder(`/api/discover/v1/livestreams/${e}`,{query:"audiences,recording"}),key:`streamable:livestream:${e}}`}},calendarLivestreams(e){const i=Object.keys(e).map(r=>`${r}:${e[r]}`).join(":");return{url:s.urlBuilder("/api/discover/v1/livestreams",{status:o.Published,limit:100,query:"audiences",...e}),key:`streamable:calendar:livestreams:${i}`,normalize:!1,formatData:r=>r.data.map(a=>({id:a.id,startDate:n.format(l.convertUTCToTimezoneDate(a.startDateTime),"YYYY-MM-DD"),type:"Livestream",name:a.name,description:a.description,content:a}))}}};export{c as C,d as L};
|
|
2
|
+
//# sourceMappingURL=BXKrMYdw.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BXKrMYdw.chunk.js","sources":["../../../../libs/shared/src/images/svg/objects/CalendarCheckSvg.tsx","../../src/shared/flight-requests/LivestreamRequests.ts"],"sourcesContent":["import React from 'react';\n\nexport function CalendarCheckSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M9.2 6h5.6V4.6a.6.6 0 1 1 1.2 0V6h2a1 1 0 0 1 1 1v11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V7a1 1 0 0 1 1-1h2V4.6a.6.6 0 0 1 1.2 0zm8.8 5H6v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1zm-3.2 1.976a.51.51 0 0 0-.046-.706.477.477 0 0 0-.686.047l-3.063 3.598-1.092-1.122a.477.477 0 0 0-.688 0 .51.51 0 0 0 0 .707l1.46 1.5a.48.48 0 0 0 .71-.024z'\n />\n </svg>\n );\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { BasePaginatedCollection, CalendarEvent, Livestream } from 'libs/shared/interfaces';\n\nexport const LivestreamRequests = {\n livestream(\n id: string\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/discover/v1/livestreams/${id}`, { query: 'audiences,recording' }),\n key: `streamable:livestream:${id}}`\n };\n },\n calendarLivestreams(queryParams: HashObject): Flight.Request {\n const key = Object.keys(queryParams).map(param => `${param}:${queryParams[param]}`).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`/api/discover/v1/livestreams`, {\n status: CurationStatus.Published,\n limit: 100,\n query: 'audiences',\n ...queryParams\n }),\n key: `streamable:calendar:livestreams:${key}`,\n normalize: false,\n formatData: (paginatedData: BasePaginatedCollection<Livestream>): CalendarEvent<Livestream>[] => {\n return paginatedData.data.map(livestream => ({\n id: livestream.id,\n startDate: DateHelper.format(TimezoneHelper.convertUTCToTimezoneDate(livestream.startDateTime), 'YYYY-MM-DD'),\n type: 'Livestream',\n name: livestream.name,\n description: livestream.description,\n content: livestream\n }));\n }\n };\n }\n};"],"names":["CalendarCheckSvg","props","jsx","LivestreamRequests","id","UrlHelper","queryParams","key","param","CurationStatus","paginatedData","livestream","DateHelper","TimezoneHelper"],"mappings":"oGAEO,SAASA,EAAiBC,EAAsC,CACrE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,kUAAA,CAAA,EAEN,CAEJ,CCFO,MAAMC,EAAqB,CAChC,WACEC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WAAW,gCAAgCD,CAAE,GAAI,CAAE,MAAO,sBAAuB,EAChG,IAAK,yBAAyBA,CAAE,GAAA,CAEpC,EACA,oBAAoBE,EAAyC,CAC3D,MAAMC,EAAM,OAAO,KAAKD,CAAW,EAAE,IAAIE,GAAS,GAAGA,CAAK,IAAIF,EAAYE,CAAK,CAAC,EAAE,EAAE,KAAK,GAAG,EAE5F,MAAO,CACL,IAAKH,EAAU,WAAW,+BAAgC,CACxD,OAAQI,EAAe,UACvB,MAAO,IACP,MAAO,YACP,GAAGH,CAAA,CACJ,EACD,IAAK,mCAAmCC,CAAG,GAC3C,UAAW,GACX,WAAaG,GACJA,EAAc,KAAK,IAAIC,IAAe,CAC3C,GAAIA,EAAW,GACf,UAAWC,EAAW,OAAOC,EAAe,yBAAyBF,EAAW,aAAa,EAAG,YAAY,EAC5G,KAAM,aACN,KAAMA,EAAW,KACjB,YAAaA,EAAW,YACxB,QAASA,CAAA,EACT,CACJ,CAEJ,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as n,c,c0 as u,aj as C,Y as j,au as x,l as d,m as f}from"./app-C56EnOMP.js";import{a as g}from"./CEmtkty-.chunk.js";import{D as p}from"./BdHxGaRy.chunk.js";import{D as b}from"./leubTuJo.chunk.js";import{R as v,s as w}from"./RnuR8yr3.chunk.js";import{R as s}from"./cvX-F_mx.chunk.js";import{F as S}from"./Daes5Wgy.chunk.js";var l=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(l||{});function P(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z",clipRule:"evenodd"})})}function H(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z",fill:"currentColor"})})}function T(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z",fill:"currentColor"})})}function A(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39",fill:"currentColor"})})}function D(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z",fill:"currentColor"})})}function M(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z",fill:"currentColor"})})}function F(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z",fill:"currentColor"})})}function N(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z",fill:"currentColor"})})}const o="shared.shared-utils",R={mapRatingToClass(e){return e?(t=>{switch(!0){case t<32:return"bg-purple";case t<48:return"bg-green";case t<80:return"bg-blue";case t<96:return"bg-red";case t<128:return"bg-pink";case t>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case u.HostedLibrary:case u.CustomLibrary:return e.name;case u.Exchange:return c.getPhrase(o,"exchange");case u.Workspace:return c.getPhrase(o,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case u.HostedLibrary:case u.CustomLibrary:return"bg-blue";case u.Exchange:return"bg-green";case u.Workspace:default:return"bg-red"}},isInteractive(e){var r,t;return!!((t=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&t.length)},mapTypeToSvg(e){let t={[s.Pdf]:A,[s.Image]:S,[s.PowerPoint]:D,[s.Document]:F,[s.Excel]:T,[s.Zip]:N,[s.File]:M}[e];return t||(t=C),t},mapTypeToClass(e){switch(e){case s.Pdf:return"icon-red";case s.Image:return"icon-purple";case s.Document:return"icon-blue";case s.Excel:return"icon-green";case s.PowerPoint:return"icon-orange";case s.Zip:return"icon-teal";case s.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case s.Pdf:return c.getPhrase(o,"pdf");case s.Image:return c.getPhrase(o,"image");case s.Document:return c.getPhrase(o,"document");case s.Excel:return c.getPhrase(o,"spreadsheet");case s.PowerPoint:return c.getPhrase(o,"presentation");case s.Zip:return c.getPhrase(o,"zipArchive");case s.File:return c.getPhrase(o,"file");default:return""}}},q="shared.badges",E=c.encloseNamespace(q);var V=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(V||{});const L={xs:f.ExtraSmall,sm:f.Small,std:f.Standard,lg:f.Large},k={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function $(e){switch(e){case g.Published:case p.Published:return"bg-success";case g.Archived:case g.Rejected:case p.Archived:return"bg-danger";case g.Draft:case p.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case g.Pending:case g.Processing:return"bg-warning"}}function I(e){return e.includes(l.Streamable)?`px-1 text-nowrap d-flex align-items-center ${w.streamable}`:e.includes(l.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function Z(e,r,t){const i="badge",h=k[t];let a="";if(e==="duration-approximate"&&(a="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(a="duration-badge"),e==="interactive"&&(a="interactive-badge"),e==="rating"&&(a=`rating-badge text-shadow ${R.mapRatingToClass(r.value)}`),e==="production-year"&&(a="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${$(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${h}`;if(e==="count"&&(a="count-badge px-1 rounded"),e==="restriction"){const m=v.mapRestrictionToClass(r.restrictions);return x("restriction-badge rounded-pill px-2 d-flex align-items-center",m)}return e==="source"&&(a=I(r)),x(i,a)}function W(e,r,t){if(e==="interactive")return E("interactive");if(e==="duration-approximate")return b.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return b.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return n.jsx(d,{svg:H});if(e==="status")return typeof r=="number"?g[r]:r;if(e==="trending")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:P,size:L[t]}),n.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:v.mapRestrictionToSvg(r.restrictions)}),n.jsx("span",{children:v.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const i=r;return i.includes(l.Streamable)?"streamable":i.includes(l.MoviesAndTv)?"movies + tv":i.includes(l.Exchange)?"exchange":i.includes(l.Twig)?"twig":"-"}}function Y(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function _(e,r){var t,i;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((t=r==null?void 0:r.data)!=null&&t.length):e==="captions"?!!(r!=null&&r.length)||!!((i=r==null?void 0:r.data)!=null&&i.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function y(e){const{type:r,data:t,size:i="std"}=e;if(!_(r,t))return n.jsx(n.Fragment,{});let h=Z(r,t,i);h=`${h} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const a=W(r,t,i),m=Y(r,t),z=e.inline&&"d-inline-block";return m?n.jsx("div",{className:"badge-wrapper d-inline",children:n.jsx(j,{...m,spanHack:!0,spanHackClassName:z,children:n.jsx("span",{className:h,children:a})})}):n.jsx("span",{className:`${h} badge-wrapper`,children:a})}export{y as B,H as C,R as V,V as a};
|
|
2
|
+
//# sourceMappingURL=B_eK8A25.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"B_eK8A25.chunk.js","sources":["../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize} = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string} = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}"],"names":["VideoSource","TrendingSvg","props","jsx","CloseCaptionBadgeSvg","FileExcelSvg","FilePdfSvg","FilePptSvg","FileSvg","FileWordSvg","FileZipSvg","lang","VideoDetailsHelper","ratingValue","rating","library","hasLite","MasterObjectTypes","LanguageService","sourceType","video","_b","_a","type","mappedType","ResourceFileType","FileImgSvg","FolderSvg","namespace","getPhrase","BadgeType","badgeSvgContainerSizeMap","SvgContainerSize","badgeSizeClassNameMap","getStatusClassName","status","CurationStatus","DashboardStatus","getSourceClassName","sources","styles","getClassName","data","size","baseClass","sizeClass","typeClass","restrictionBgClass","RestrictionHelper","classNames","getBadgeContent","DurationHelper","SvgContainer","jsxs","Fragment","getTooltip","hasData","Badge","className","content","tooltip","spanHackClassName","Tooltip"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as h,g as C,aa as w,br as p,bc as re,O as ae,bs as P,be as G,as as N,aK as O,j as o,bt as U,bu as q,R as A,L as H,T as f,aA as Q,bv as se,a5 as te,bo as ne,a3 as ie,o as R,v as oe,aD as ue,bp as D,M as $,aJ as M,h as Y,i as _,k as z}from"./app-C56EnOMP.js";import{F as K}from"./DtHh_hpg.chunk.js";import{l as S,a as X,F as I}from"./Bt3kaRtU.chunk.js";import{S as le}from"./DoQU9vjn.chunk.js";import{U as T,S as me}from"./CO_D2O4I.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";import"./DAh7Ea13.chunk.js";import"./-cwk-1Iv.chunk.js";import"./CPXlV0fg.chunk.js";import"./Byn8R7bs.chunk.js";var t=(e=>(e.Ok="Ok",e.UsernameRequired="UsernameRequired",e.EmailRequired="EmailRequired",e.FirstnameRequired="FirstnameRequired",e.SurnameRequired="SurnameRequired",e.YearGroupRequired="YearGroupRequired",e.EmailAlreadyExisted="EmailAlreadyExisted",e.UsernameAlreadyExisted="UsernameAlreadyExisted",e.UserTypeRequired="UserTypeRequired",e.MasterYearGroupRequired="MasterYearGroupRequired",e.EmptyUserEntity="EmptyUserEntity",e.CustomerIdRequired="CustomerIdRequired",e.CustomerNotFoundInOnline="CustomerNotFoundInOnline",e.EmailTooLong="EmailTooLong",e.UsernameTooLong="UsernameTooLong",e.FirstnameTooLong="FirstnameTooLong",e.SurnameTooLong="SurnameTooLong",e.EmailInvalid="EmailInvalid",e.EmailInUse="EmailInUse",e.UsernameInvalid="UsernameInvalid",e.PasswordTooShort="PasswordTooShort",e.EmailDuplicated="EmailDuplicated",e.UsernameDuplicated="UsernameDuplicated",e.DisplayNameTooLong="DisplayNameTooLong",e.DisplayNameTooShort="DisplayNameTooShort",e.UsernameTooShort="UsernameTooShort",e.FirstnameInvalid="FirstnameInvalid",e.SurnameInvalid="SurnameInvalid",e.UserTypeMismatch="UserTypeMismatch",e.UserCanBeAddedInCustomer="UserCanBeAddedInCustomer",e.UserCanBeCreated="UserCanBeCreated",e.CustomerFoundInOnline="CustomerFoundInOnline",e.UserInCustomerWithOnline="UserInCustomerWithOnline",e.InvalidUserStatus="InvalidUserStatus",e.UserAlreadyExistsInCustomer="UserAlreadyExistsInCustomer",e.Rostered="UserRostered",e.InvalidYearGroup="InvalidYearGroup",e))(t||{});const de=8,k="userManager.utils",b={active:p.Active.toLowerCase(),deactivated:p.Disabled.toLowerCase(),pending:p.Inactive.toLowerCase()},j={filterIdenticalEntries(e){const i=a=>{var r,n,s,u,l,m,g;return[((r=a.firstName)==null?void 0:r.trim())??"",((n=a.surname)==null?void 0:n.trim())??"",((s=a.masterYearGroup)==null?void 0:s.id)??"",((l=(u=a.username)==null?void 0:u.toLowerCase())==null?void 0:l.trim())??"",((g=(m=a.email)==null?void 0:m.toLowerCase())==null?void 0:g.trim())??""].join(":")};return e.filter((a,r,n)=>r===n.findIndex(s=>i(s)===i(a)))},getNewDuplicates(e){if(!e)return null;const i=[],a=[],r={};e.forEach(s=>{if(!s.username){a.push(s);return}if(!r[s.username]){r[s.username]=[s];return}r[s.username].push(s)}),Object.keys(r).map(s=>{if(r[s].length===1){a.push(r[s][0]);return}i.push({errorCodes:[t.UsernameAlreadyExisted],users:r[s]})});const n={};return e.forEach(s=>{if(s.email){if(!n[s.email]){n[s.email]=[s];return}n[s.email].push(s)}}),Object.keys(n).map(s=>{if(n[s].length===1)return;const{username:u}=C.first(n[s]);if(!u||r[u].length===1)i.push({errorCodes:[t.EmailAlreadyExisted],users:n[s]});else{const l=i.findIndex(m=>C.first(m.users).username===u);i[l].errorCodes.push(t.EmailAlreadyExisted)}}),i},formatCreateOrValidateUserRequest(e,i,a){return{users:e.map(r=>{const n={firstName:r.firstName,email:r.email,surname:r.surname,username:r.username,userType:i,customerId:a,masterRole:r.masterRole||w.User,requirePasswordChange:!1,generatePassword:!!r.generatePassword,password:r.password,displayName:r.displayName||null};return i===N.Learner&&(n.masterYearGroup=r.masterYearGroup),n.username||delete n.username,n.password||delete n.password,n.password&&n.generatePassword&&(n.generatePassword=!1),r.userId&&(n.userId=r.userId),n})}},formatEditUserRequest(e){return e.displayName||(e.displayName=null),e},formatDeleteRequest(e,i,a){const r={customerId:e};if(!i.length){const n=O.DeserializeQueryParams(O.GetCurrentQueryString().substring(1));n.query&&(r.searchQuery=n.query);const s=n.status&&(Array.isArray(n.status)?n.status:[n.status]);s!=null&&s.length&&(r.userStatuses=[],s.forEach(u=>{u==="active"&&r.userStatuses.push(p.Active),u==="deactivated"&&r.userStatuses.push(p.Disabled),u==="pending"&&r.userStatuses.push(p.Inactive)})),n.yearGroup&&(r.yearGroupValues=Array.isArray(n.yearGroup)?n.yearGroup:[n.yearGroup])}return Object.keys(r).length===1?r.userIds=i.map(n=>n.id):r.userType=a,r},formatToggleStatusRequest(e,i,a){return{customerId:i,users:[{userId:e.id,status:a}]}},getErrorMessages(e,i,a,r){const n={},s=h.encloseNamespace("userManager.utils"),u={[t.Ok]:"",[t.UsernameRequired]:"",[t.EmailRequired]:s("emailRequired"),[t.FirstnameRequired]:s("nameRequired"),[t.SurnameRequired]:s("surnameRequired"),[t.YearGroupRequired]:s("yearGroupRequired"),[t.EmailAlreadyExisted]:s(a?"emailExistsShort":"emailExistsLong"),[t.UsernameAlreadyExisted]:s(a?"usernameExistsShort":"usernameExistsLong"),[t.UserTypeRequired]:"",[t.MasterYearGroupRequired]:s("yearGroupRequired"),[t.EmptyUserEntity]:"",[t.CustomerIdRequired]:"",[t.CustomerNotFoundInOnline]:"",[t.EmailTooLong]:s("emailExceeds"),[t.UsernameTooLong]:s("usernameExceeds"),[t.FirstnameTooLong]:s("nameExceeds"),[t.SurnameTooLong]:s("surnameExceeds"),[t.EmailInvalid]:s(a?"emailInvalidShort":"emailInvalidLong"),[t.EmailInUse]:s(a?"emailExistsShort":"emailExistsLong"),[t.UsernameInvalid]:s(a?"usernameInvalidShort":"usernameInvalidLong"),[t.PasswordTooShort]:s(a?"passwordTooShortShort":"passwordTooShortLong",{minLength:i}),[t.EmailDuplicated]:"",[t.UsernameDuplicated]:"",[t.DisplayNameTooLong]:s("displayNameExceeds"),[t.DisplayNameTooShort]:s("displayNameTooShort"),[t.UsernameTooShort]:s("usernameTooShort"),[t.FirstnameInvalid]:s("firstNameInvalid"),[t.SurnameInvalid]:s("surnameInvalid"),[t.CustomerFoundInOnline]:s("support"),[t.UserInCustomerWithOnline]:s("support"),[t.InvalidUserStatus]:s("support"),[t.UserTypeMismatch]:"",[t.UserCanBeAddedInCustomer]:"",[t.UserCanBeCreated]:"",[t.UserAlreadyExistsInCustomer]:"",[t.Rostered]:"",[t.InvalidYearGroup]:s("invalidYearGroupError")},l={[t.Ok]:"",[t.UsernameRequired]:"",[t.EmailRequired]:"email",[t.FirstnameRequired]:"firstName",[t.SurnameRequired]:"surname",[t.YearGroupRequired]:"masterYearGroup",[t.EmailAlreadyExisted]:"email",[t.UsernameAlreadyExisted]:"username",[t.UserTypeRequired]:"",[t.MasterYearGroupRequired]:"masterYearGroup",[t.EmptyUserEntity]:"",[t.CustomerIdRequired]:"",[t.CustomerNotFoundInOnline]:"",[t.EmailTooLong]:"email",[t.UsernameTooLong]:"username",[t.FirstnameTooLong]:"firstName",[t.SurnameTooLong]:"surname",[t.EmailInvalid]:"email",[t.EmailInUse]:"email",[t.UsernameInvalid]:"username",[t.PasswordTooShort]:"password",[t.EmailDuplicated]:"",[t.UsernameDuplicated]:"",[t.DisplayNameTooLong]:"displayName",[t.DisplayNameTooShort]:"displayName",[t.UsernameTooShort]:"username",[t.FirstnameInvalid]:"firstName",[t.SurnameInvalid]:"surname",[t.UserTypeMismatch]:"email",[t.UserCanBeAddedInCustomer]:"email",[t.UserCanBeCreated]:"email",[t.CustomerFoundInOnline]:"email",[t.UserInCustomerWithOnline]:"email",[t.InvalidUserStatus]:"email",[t.UserAlreadyExistsInCustomer]:"email",[t.Rostered]:"email",[t.InvalidYearGroup]:"masterYearGroup"};return e.forEach(m=>{var x;const g=(r==null?void 0:r[m])??u[m]??"";if(!g)return;const d=l[m];d&&(n[d]=((x=r==null?void 0:r[m])==null?void 0:x[d])??g)}),n},showEmptyState(e,i){var r;if(!e.data)return!1;const a=Object.keys(i).length;return"results"in e.data||a?!1:!((r=e.data.data)!=null&&r.length)},getFilters(e,i,a,r){const n=[P.SortBy(G.getNameSortOptions())];return i===N.Learner&&(a==null?void 0:a.length)>1&&n.push(P.YearGroup(G.getYearGroupOptions(a))),n.push(P.Status()),i===N.Staff&&n.push(P.IsAdmin(e,r)),n},getMinimumPasswordLength(e,i,a){var n;if(!e)return de;const r=(n=e.securitySettings)==null?void 0:n.find(s=>s.userRole===a&&s.userType===i);return r?r.minPasswordLength:a===w.Admin||a===w.SuperAdmin?e.defaultAdminMinPasswordLength:e.defaultMinPasswordLength},mapStatusParamsToValue(e){if(!e)return;const i=a=>{switch(a){case"active":return p.Active;case"deactivated":return p.Disabled;case"pending":return p.Inactive}};return Array.isArray(e)?e.map(i):[i(e)]},buildSearchData({customerId:e,userId:i,userType:a,queryParams:r={}}){const n=j.buildSearchFiltersData(e,a,r),s=j.buildSearchSortData(e,r);return{query:r.query,indices:["user"],searchType:"user",customerIdOverride:e,userId:i,customerId:e,filters:n,sorts:s}},buildSearchDataAndKey({customerId:e,userId:i,userType:a,queryParams:r,cursor:n}){const s=j.buildSearchData({customerId:e,userId:i||"",userType:a,queryParams:r||{}});n&&(s.cursor=n);let u=`search:users:${n||""}`;return u+=ae.flattenObjectToString(s),{key:u,data:s}},buildSearchParams(e,i,a={}){let r=j.buildSearchFiltersObject(e,i,a);return r=Object.keys(r).reduce((n,s)=>(n[`${re.FILTER_PARAM_PREFIX}${s}`]=r[s],n),{}),{query:a.query,index:"user",customerIdOverride:e,...r}},buildSearchSortData(e,i={}){const a={};if(i.sort)switch(i.sort){case"first-name-atoz":a.firstName="asc";break;case"first-name-ztoa":a.firstName="desc";break;case"surname-atoz":a.surname="asc";break;case"surname-ztoa":a.surname="desc";break;case"newest":a.userProfile={customerId:e,fieldOrders:{dateCreated:"desc"}};break;case"oldest":a.userProfile={customerId:e,fieldOrders:{dateCreated:"asc"}};break}else a.userProfile={customerId:e,fieldOrders:{dateCreated:"desc"}};return a},buildSearchFiltersData(e,i,a={}){const r={userType:i.toLowerCase()};return r.userProfile={customerId:e},a.isAdmin==="true"&&(r.userProfile.role=[w.Admin.toLowerCase(),w.SuperAdmin.toLowerCase()]),a.yearGroup&&(r.yearGroup={customerId:e},Array.isArray(a.yearGroup)?r.yearGroup.value=a.yearGroup:r.yearGroup.value=[a.yearGroup]),a.status&&(Array.isArray(a.status)?r.userProfile.status=a.status.map(n=>b[n]):r.userProfile.status=[b[a.status]]),r},buildSearchFiltersObject(e,i,a={}){const r={userType:i.toLowerCase(),customerId:e.toString()};return a.isAdmin==="true"&&(r.userRole=w.Admin.toLowerCase()),a.yearGroup&&(Array.isArray(a.yearGroup)?r.yearGroup=`${a.yearGroup.join(",")}`:r.yearGroup=a.yearGroup),a.status&&(Array.isArray(a.status)?r.userProfileStatus=a.status.map(n=>b[n]).join(","):r.userProfileStatus=b[a.status]),r},buildGetUsersQuery(e,i={}){const{yearGroup:a="",status:r="",isAdmin:n="",sort:s="newest"}=i,u=[`usertype:${e}`];if(a&&(Array.isArray(a)?u.push(`yeargroups.value:[${a.join(",")}]`):u.push(`yeargroups.value:${a}`)),n==="true"&&u.push(`userprofiles.role:${w.Admin}`),r&&(Array.isArray(r)?u.push(`status:[${r.map(l=>b[l]).join(",")}]`):u.push(`status:${b[r]}`)),s)switch(s){case"first-name-atoz":u.push("orderby:name");break;case"first-name-ztoa":u.push("orderbydesc:name");break;case"surname-atoz":u.push("orderby:surname");break;case"surname-ztoa":u.push("orderbydesc:surname");break;case"newest":u.push("orderbydesc:timestamp");break;case"oldest":u.push("orderby:timestamp");break}return`{${u.join(",")}}avatar`},shouldDisplayAuthenticationMethods(e){var r;return!(e!=null&&e.length)||!!!((r=C.first(e).authenticationMethods)!=null&&r.length)?!1:!!e.find(n=>{var u;return!!((u=n.authenticationMethods)==null?void 0:u.find(l=>!l.local))})},handleAsyncErrors(e,i,a,r){var u;const n=(u=e==null?void 0:e[0])==null?void 0:u.errorCodes;if(!(n!=null&&n.length))return!0;const s={};return(n.includes(t.EmailAlreadyExisted)||n.includes(t.EmailInUse))&&(!a||a.email!==i.email)&&(s.email=h.getPhrase(k,"emailExistsLong")),n.includes(t.UsernameAlreadyExisted)&&(!a||a.username!==i.username)&&(s.username=h.getPhrase(k,"usernameExistsLong")),Object.keys(s).length?(r({errors:s}),!1):!0},getInitialErrorsForInvalidYearGroups(e){return!e||e.value===0?{masterYearGroup:h.getPhrase(k,"yearGroupRequired")}:{}}},B="settings.emailSettings",ce=S.object().shape({email:S.string().required(()=>h.getPhrase(B,"emailRequired")).email(()=>h.getPhrase(B,"emailInvalid")).trim().default("")});function he(){return o.jsx(le,{children:o.jsx("svg",{viewBox:"0 0 24 24",children:o.jsx("path",{d:"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z"})})})}const Z="settings.emailSettings",F=h.encloseNamespace(Z);function pe(e){const i=U(q.MDDown),[a,r]=A.useState(!i),n=e.currentUser.emailVerified;return A.useEffect(()=>{!i&&!a&&r(!0)},[i,a]),o.jsxs(H.Provider,{value:Z,children:[o.jsxs("h2",{className:"h4 d-flex align-items-center",children:[o.jsx(f,{phrase:"heading"}),n&&o.jsxs("span",{className:"font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2",children:[o.jsx(f,{phrase:"verified"}),o.jsx(he,{})]})]}),n&&o.jsx("p",{children:o.jsx(f,{phrase:"info",options:{email:e.currentUser.email}})}),a?o.jsx(X,{initialValues:{email:e.currentUser.email||""},onSubmit:e.onChangeEmail,validationSchema:ce,children:o.jsxs(Q,{children:[o.jsx(I,{className:"w-75",name:"email",placeholder:F("emailPlaceholder"),autoComplete:"email"}),o.jsxs("div",{className:`d-flex justify-content-end w-75 ${i?"ms-n2":""}`,children:[i&&o.jsx("button",{type:"button",className:"btn btn-link me-2",onClick:()=>r(!1),children:o.jsx(f,{phrase:"cancel"})}),o.jsx(K,{isNew:!1,submitText:F(n?"updateEmail":"verifyEmail"),variant:n?"outline-dark":"dark"})]})]})}):o.jsx(o.Fragment,{children:o.jsx("div",{className:"d-flex",children:o.jsx("button",{className:"btn btn-outline-dark me-2",onClick:()=>r(!0),children:o.jsx(f,{phrase:"change"})})})})]})}const fe="_partialLabel_1h6pk_1",ge="_partialInfo_1h6pk_5",ye="_partialInput_1h6pk_10",we="_partialSubmit_1h6pk_14",Se="_partialNote_1h6pk_18",E={partialLabel:fe,partialInfo:ge,partialInput:ye,partialSubmit:we,partialNote:Se};function xe(){return o.jsxs("div",{className:"w-50",children:[o.jsx("div",{className:`partial-loading-background mb-2 ${E.partialLabel}`}),o.jsx("div",{className:`partial-loading-background ${E.partialInfo}`}),o.jsx("div",{className:"form-group",children:o.jsx("div",{className:`partial-loading-background ${E.partialInput}`})}),o.jsx("div",{className:`partial-loading-background ${E.partialSubmit}`}),o.jsx("div",{className:`partial-loading-background mt-2 ${E.partialNote}`})]})}const J="shared.changePasswordForm",y=h.encloseNamespace(J);V.defaultProps={submitVariant:"outline-dark",buttonContainerClass:"btn-container d-flex justify-content-end align-items-center",inputWidthClass:"w-100"};function V(e){const i=se();return o.jsxs(Q,{children:[!e.hideCurrentPassword&&o.jsx(I,{className:e.inputWidthClass,name:"currentPassword",label:y("currentPassword"),placeholder:y("currentPasswordPlaceholder"),type:"password",autoComplete:"current-password",showRequiredStar:!0}),o.jsx(I,{className:e.inputWidthClass,name:"newPassword",label:y("newPassword"),placeholder:y("newPasswordPlaceholder"),type:"password",autoComplete:"new-password",showRequiredStar:!0}),o.jsx(I,{className:e.inputWidthClass,name:"confirmPassword",label:y("confirmPassword"),placeholder:y("confirmPasswordPlaceholder"),type:"password",autoComplete:"off",showRequiredStar:!0}),e.showChangeOnNextLogin&&o.jsx(I,{id:"changeOnNextLogin",name:"changeOnNextLogin",label:y("changeOnNextLogin"),type:"checkbox",checked:i.values.changeOnNextLogin,checkboxLabelFontWeight:"normal"}),!e.hideButtons&&o.jsxs("div",{className:e.buttonContainerClass,children:[!e.hideCancelButton&&!!e.onClickCancel&&o.jsx("button",{type:"button",className:`btn btn-link me-2 ${e.buttonSize==="lg"?"btn-lg":""}`,onClick:e.onClickCancel,children:o.jsx(f,{namespace:J,phrase:"cancel"})}),o.jsx(K,{isNew:!1,submitText:e.submitText||y("save"),variant:e.submitVariant,size:e.buttonSize})]})]})}const be="settings.passwordSettings",v=h.encloseNamespace(be),Ee=e=>S.object().shape({currentPassword:S.string().required(()=>v("currentPasswordRequired")).trim().default(""),newPassword:S.string().required(()=>v("newPasswordRequired")).min(e,()=>v("newPasswordMinLength",{minLen:e})).trim().default(""),confirmPassword:S.string().required(()=>v("confirmPasswordRequired")).oneOf([S.ref("newPassword"),null],()=>v("passwordsDontMatch")).trim().default("")}),W="settings.passwordSettings",ve={currentPassword:"",newPassword:"",confirmPassword:""};function Ie(e){const i=U(q.MDDown),[a,r]=A.useState(!i);A.useEffect(()=>{!i&&!a&&r(!0)},[i,a]);function n(s,u){e.onChangePassword(s,u,()=>u({reset:!0}))}return o.jsxs(H.Provider,{value:W,children:[o.jsx("h2",{className:"h4",children:o.jsx(f,{phrase:"heading"})}),a?o.jsxs(o.Fragment,{children:[o.jsx("p",{children:o.jsx(f,{phrase:"info"})}),o.jsx(X,{initialValues:ve,onSubmit:n,validationSchema:Ee(e.minPasswordLength),children:o.jsx(V,{onClickCancel:()=>r(!1),hideCancelButton:!i,submitText:h.getPhrase(W,"savePassword"),buttonContainerClass:i?"d-flex justify-content-end ms-n2 w-75":"d-flex justify-content-end w-75",inputWidthClass:"w-75"})})]}):o.jsx("button",{className:"btn btn-outline-dark ",onClick:()=>r(!0),children:o.jsx(f,{phrase:"change"})})]})}const je={getCustomerSecuritySettings(e,i,a){return{url:`{gateway}/v1/customers/${e}/settings/security`,key:"customers:security:settings",normalize:!1,success:i,error:a}},setCustomerSecuritySettings(e,i,a,r){return{url:`{gateway}/v1/customers/${e}/settings/security`,key:"update:security:settings",invalidationKeys:"customers:security:settings",type:te.PUT,normalize:!1,data:i,success:a,error:r}}},Le="settings.accountSettings",c=h.encloseNamespace(Le);function Oe(){var g;const e=ne(),i=ie(),a=U(q.MDDown),r=R(ue.currentUser()),n=R(r.data&&T.getUser(r.data.id)),s=R(r.data&&je.getCustomerSecuritySettings(r.data.customerId));oe({title:c("heading")});function u(d,x){D(e,T.changeEmail(d.email,()=>{$.logUserAction({id:r.data.id,oldEmail:r.data.email,newEmail:d.email},{actionType:z.VerifyEmail,entity:_.User,location:Y.Settings,workflowPhase:M.Start}),i.success(c("changeEmailRequestSuccess",{email:d.email,escapeText:!0}))},()=>{i.error(c("changeEmailRequestError"))},x))}function l(d,x,ee){D(e,T.changePassword(d,()=>{$.logUserAction({id:r.data.id,oldPassword:d.currentPassword,newPassword:d.newPassword},{actionType:z.ChangePassword,entity:_.User,location:Y.Settings,workflowPhase:M.Complete}),i.success(c("changePasswordSuccess")),ee()},({responseJSON:L})=>{L.errorCode==="user.password-too-short"?i.error(c("changePasswordRequirementsError")):L.errorCode==="user.invalid-password"?i.error(c("changePasswordInvalid")):L.errorCode==="user.same-password"?i.error(c("changePasswordSame")):L.errorCode==="user.locked-out"?i.error(c("changePasswordLockedOut")):i.error(c("changePasswordError"))},x))}const m=j.getMinimumPasswordLength(s.data,(g=n.data)==null?void 0:g.userType,r.data.role);return o.jsxs(me,{heading:c("heading"),breadcrumbs:[c("breadcrumb")],children:[o.jsx("div",{className:a?"w-100":"w-50",children:r.data?o.jsx(pe,{currentUser:r.data,onChangeEmail:u}):o.jsx(xe,{})}),o.jsx("hr",{}),o.jsx("div",{className:a?"w-100":"w-50",children:s.data&&o.jsx(Ie,{onChangePassword:l,minPasswordLength:m})})]})}export{Oe as AccountSettingsView};
|
|
2
|
+
//# sourceMappingURL=BbjveACT.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BbjveACT.chunk.js","sources":["../../../../libs/shared/src/apps/user-manager/enums/UserValidationCode.ts","../../../../libs/shared/src/apps/user-manager/utils/UserManagerHelper.ts","../../src/apps/settings/components/email-settings/EmailSettingsValidationSchema.ts","../../src/apps/settings/components/email-settings/VerifiedEmailIcon.tsx","../../src/apps/settings/components/email-settings/EmailSettings.tsx","../../src/apps/settings/components/email-settings/partial-loading/PartialEmailSettings.tsx","../../../../libs/shared/src/apps/user-manager/components/change-password-form/ChangePasswordForm.tsx","../../src/apps/settings/components/password-settings/PasswordSettingsValidationSchema.ts","../../src/apps/settings/components/password-settings/PasswordSettings.tsx","../../src/apps/settings/flight-requests/SecuritySettingsRequests.ts","../../src/apps/settings/views/account-settings/AccountSettingsView.tsx"],"sourcesContent":["// Copied directly from User API\nexport enum UserValidationCode {\n Ok = 'Ok',\n UsernameRequired = 'UsernameRequired',\n EmailRequired = 'EmailRequired',\n FirstnameRequired = 'FirstnameRequired',\n SurnameRequired = 'SurnameRequired',\n YearGroupRequired = 'YearGroupRequired',\n EmailAlreadyExisted = 'EmailAlreadyExisted', // This means another user has this email address, and it's verified\n UsernameAlreadyExisted = 'UsernameAlreadyExisted',\n UserTypeRequired = 'UserTypeRequired',\n MasterYearGroupRequired = 'MasterYearGroupRequired',\n EmptyUserEntity = 'EmptyUserEntity',\n CustomerIdRequired = 'CustomerIdRequired',\n CustomerNotFoundInOnline = 'CustomerNotFoundInOnline',\n EmailTooLong = 'EmailTooLong',\n UsernameTooLong = 'UsernameTooLong',\n FirstnameTooLong = 'FirstnameTooLong',\n SurnameTooLong = 'SurnameTooLong',\n EmailInvalid = 'EmailInvalid',\n EmailInUse = 'EmailInUse', // This means another user has this email address, but it's unverified\n UsernameInvalid = 'UsernameInvalid',\n PasswordTooShort = 'PasswordTooShort',\n EmailDuplicated = 'EmailDuplicated', // Same email has been used in the same request\n UsernameDuplicated = 'UsernameDuplicated', // Same username has been used in the same request\n DisplayNameTooLong = 'DisplayNameTooLong',\n DisplayNameTooShort = 'DisplayNameTooShort',\n UsernameTooShort = 'UsernameTooShort',\n FirstnameInvalid = 'FirstnameInvalid',\n SurnameInvalid = 'SurnameInvalid',\n\n // user man 3.0\n UserTypeMismatch = 'UserTypeMismatch',\n UserCanBeAddedInCustomer = 'UserCanBeAddedInCustomer',\n UserCanBeCreated = 'UserCanBeCreated',\n CustomerFoundInOnline = 'CustomerFoundInOnline',\n UserInCustomerWithOnline = 'UserInCustomerWithOnline',\n InvalidUserStatus = 'InvalidUserStatus',\n UserAlreadyExistsInCustomer = 'UserAlreadyExistsInCustomer',\n\n // a user created by rostered\n Rostered='UserRostered',\n\n // Unknown year group\n InvalidYearGroup = 'InvalidYearGroup',\n}","import { FormikErrors } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\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 { SearchFilter, SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper, Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserValidationCode } from 'libs/shared/apps/user-manager/enums/UserValidationCode';\nimport { BulkCreateOrValidateUserRequest, BulkDeleteUsersRequest, BulkUpdateUserStatusRequest, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, User, UserCollection, YearGroup } from 'libs/shared/interfaces';\n\nimport { FilterConstants } from '../../search/constants/FilterConstants';\nimport { DuplicateUserSet } from '../interfaces/viewmodels/BulkUserUploadViewModel';\n\nconst FALLBACK_MIN_PASSWORD_LENGTH = 8;\nconst namespace = 'userManager.utils';\n\nconst StatusMap: HashObject = {\n active: ObjectStatus.Active.toLowerCase(),\n deactivated: ObjectStatus.Disabled.toLowerCase(),\n pending: ObjectStatus.Inactive.toLowerCase()\n};\n\nexport const UserManagerHelper = {\n filterIdenticalEntries(spreadsheetEntries: EditUserRequest[]): EditUserRequest[] {\n const identify = (u: EditUserRequest) => {\n return [\n u.firstName?.trim() ?? '',\n u.surname?.trim() ?? '',\n u.masterYearGroup?.id ?? '',\n u.username?.toLowerCase()?.trim() ?? '',\n u.email?.toLowerCase()?.trim() ?? ''\n ].join(':');\n };\n\n return spreadsheetEntries.filter((entry, index, self) =>\n index === self.findIndex(u => identify(u) === identify(entry)));\n },\n\n getNewDuplicates(users?: EditUserRequest[]): DuplicateUserSet[] {\n if (!users)\n return null;\n\n const duplicateSets: DuplicateUserSet[] = [];\n const validUsers: EditUserRequest[] = [];\n\n /**\n * Find all users in uploaded spreadsheet with duplicate usernames.\n */\n const usernameDuplicateLookup: { [ username: string ]: EditUserRequest[]; } = {};\n\n users.forEach(user => {\n if (!user.username) {\n validUsers.push(user);\n return;\n }\n\n if (!usernameDuplicateLookup[user.username]) {\n usernameDuplicateLookup[user.username] = [user];\n return;\n }\n\n usernameDuplicateLookup[user.username].push(user);\n });\n\n Object.keys(usernameDuplicateLookup).map(username => {\n if (usernameDuplicateLookup[username].length === 1) {\n validUsers.push(usernameDuplicateLookup[username][0]);\n return;\n }\n\n duplicateSets.push({\n errorCodes: [UserValidationCode.UsernameAlreadyExisted],\n users: usernameDuplicateLookup[username]\n });\n });\n\n /**\n * Find all remaining users in spreadsheet with duplicate emails\n */\n const emailDuplicateLookup: { [ email: string ]: EditUserRequest[]; } = {};\n\n users.forEach(user => {\n if (!user.email)\n return;\n\n if (!emailDuplicateLookup[user.email]) {\n emailDuplicateLookup[user.email] = [user];\n return;\n }\n\n emailDuplicateLookup[user.email].push(user);\n });\n\n Object.keys(emailDuplicateLookup).map(email => {\n if (emailDuplicateLookup[email].length === 1)\n return;\n\n const { username } = ArrayHelper.first(emailDuplicateLookup[email]);\n\n if (!username || usernameDuplicateLookup[username].length === 1) {\n duplicateSets.push({\n errorCodes: [UserValidationCode.EmailAlreadyExisted],\n users: emailDuplicateLookup[email]\n });\n } else {\n const dupeSetIndex = duplicateSets.findIndex(set => ArrayHelper.first(set.users).username === username);\n\n duplicateSets[dupeSetIndex].errorCodes.push(UserValidationCode.EmailAlreadyExisted);\n }\n });\n\n return duplicateSets;\n },\n\n formatCreateOrValidateUserRequest(\n users: EditUserRequest[],\n userType: UserGroup,\n customerId: string\n ): BulkCreateOrValidateUserRequest {\n return {\n users: users.map((u: EditUserRequest) => {\n const obj: EditUserRequest = {\n firstName: u.firstName,\n email: u.email,\n surname: u.surname,\n username: u.username,\n userType,\n customerId,\n masterRole: u.masterRole || UserRole.User,\n requirePasswordChange: false,\n generatePassword: !!u.generatePassword,\n password: u.password,\n displayName: u.displayName || null\n };\n\n if (userType === UserGroup.Learner)\n obj.masterYearGroup = u.masterYearGroup;\n\n if (!obj.username)\n delete obj.username;\n\n if (!obj.password)\n delete obj.password;\n\n if (obj.password && obj.generatePassword)\n obj.generatePassword = false;\n\n if (u.userId)\n obj.userId = u.userId;\n\n return obj;\n })\n };\n },\n\n formatEditUserRequest(user: EditUserRequest): EditUserRequest {\n if (!user.displayName)\n user.displayName = null;\n\n return user;\n },\n\n formatDeleteRequest(customerId: string, users?: User[], userType?: UserGroup): BulkDeleteUsersRequest {\n const body: BulkDeleteUsersRequest = {\n customerId\n };\n\n if (!users.length) {\n const queryParams = Core.LocationUtils.DeserializeQueryParams(\n Core.LocationUtils.GetCurrentQueryString().substring(1)\n );\n\n if (queryParams.query)\n body.searchQuery = queryParams.query;\n\n const statuses = queryParams.status &&\n (Array.isArray(queryParams.status) ? queryParams.status : [queryParams.status]);\n\n if (statuses?.length) {\n body.userStatuses = [];\n\n statuses.forEach(status => {\n if (status === 'active') body.userStatuses.push(ObjectStatus.Active);\n if (status === 'deactivated') body.userStatuses.push(ObjectStatus.Disabled);\n if (status === 'pending') body.userStatuses.push(ObjectStatus.Inactive);\n });\n }\n \n if (queryParams.yearGroup) {\n body.yearGroupValues = Array.isArray(queryParams.yearGroup) ? queryParams.yearGroup : [queryParams.yearGroup];\n }\n }\n\n if (Object.keys(body).length === 1) {\n body.userIds = users.map(u => u.id);\n } else {\n body.userType = userType;\n }\n\n return body;\n },\n\n formatToggleStatusRequest(user: User, customerId: string, newStatus: ObjectStatus): BulkUpdateUserStatusRequest {\n return {\n customerId,\n users: [{\n userId: user.id,\n status: newStatus\n }]\n };\n },\n\n getErrorMessages(\n errorCodes: UserValidationCode[],\n minPasswordLength: number,\n shortMessages?: boolean,\n localMessage?: HashObject\n ) {\n const messages: HashObject = {};\n\n const getPhrase = LanguageService.encloseNamespace('userManager.utils');\n\n const CodeToMessageMap = {\n [UserValidationCode.Ok]: '',\n [UserValidationCode.UsernameRequired]: '',\n [UserValidationCode.EmailRequired]: getPhrase('emailRequired'),\n [UserValidationCode.FirstnameRequired]: getPhrase('nameRequired'),\n [UserValidationCode.SurnameRequired]: getPhrase('surnameRequired'),\n [UserValidationCode.YearGroupRequired]: getPhrase('yearGroupRequired'),\n [UserValidationCode.EmailAlreadyExisted]: getPhrase(shortMessages ? 'emailExistsShort' : 'emailExistsLong'),\n [UserValidationCode.UsernameAlreadyExisted]: getPhrase(shortMessages ? 'usernameExistsShort' : 'usernameExistsLong'),\n [UserValidationCode.UserTypeRequired]: '',\n [UserValidationCode.MasterYearGroupRequired]: getPhrase('yearGroupRequired'),\n [UserValidationCode.EmptyUserEntity]: '',\n [UserValidationCode.CustomerIdRequired]: '',\n [UserValidationCode.CustomerNotFoundInOnline]: '',\n [UserValidationCode.EmailTooLong]: getPhrase('emailExceeds'),\n [UserValidationCode.UsernameTooLong]: getPhrase('usernameExceeds'),\n [UserValidationCode.FirstnameTooLong]: getPhrase('nameExceeds'),\n [UserValidationCode.SurnameTooLong]: getPhrase('surnameExceeds'),\n [UserValidationCode.EmailInvalid]: getPhrase(shortMessages ? 'emailInvalidShort' : 'emailInvalidLong'),\n [UserValidationCode.EmailInUse]: getPhrase(shortMessages ? 'emailExistsShort' : 'emailExistsLong'),\n [UserValidationCode.UsernameInvalid]: getPhrase(shortMessages ? 'usernameInvalidShort' : 'usernameInvalidLong'),\n [UserValidationCode.PasswordTooShort]: getPhrase(shortMessages ? 'passwordTooShortShort' : 'passwordTooShortLong', { minLength: minPasswordLength }),\n [UserValidationCode.EmailDuplicated]: '',\n [UserValidationCode.UsernameDuplicated]: '',\n [UserValidationCode.DisplayNameTooLong]: getPhrase('displayNameExceeds'),\n [UserValidationCode.DisplayNameTooShort]: getPhrase('displayNameTooShort'),\n [UserValidationCode.UsernameTooShort]: getPhrase('usernameTooShort'),\n [UserValidationCode.FirstnameInvalid]: getPhrase('firstNameInvalid'),\n [UserValidationCode.SurnameInvalid]: getPhrase('surnameInvalid'),\n [UserValidationCode.CustomerFoundInOnline]: getPhrase('support'),\n [UserValidationCode.UserInCustomerWithOnline]: getPhrase('support'),\n [UserValidationCode.InvalidUserStatus]: getPhrase('support'),\n [UserValidationCode.UserTypeMismatch]: '',\n [UserValidationCode.UserCanBeAddedInCustomer]: '',\n [UserValidationCode.UserCanBeCreated]: '',\n [UserValidationCode.UserAlreadyExistsInCustomer]: '',\n [UserValidationCode.Rostered]: '',\n [UserValidationCode.InvalidYearGroup]: getPhrase('invalidYearGroupError')\n };\n\n const CodeToFieldMap = {\n [UserValidationCode.Ok]: '',\n [UserValidationCode.UsernameRequired]: '',\n [UserValidationCode.EmailRequired]: 'email',\n [UserValidationCode.FirstnameRequired]: 'firstName',\n [UserValidationCode.SurnameRequired]: 'surname',\n [UserValidationCode.YearGroupRequired]: 'masterYearGroup',\n [UserValidationCode.EmailAlreadyExisted]: 'email',\n [UserValidationCode.UsernameAlreadyExisted]: 'username',\n [UserValidationCode.UserTypeRequired]: '',\n [UserValidationCode.MasterYearGroupRequired]: 'masterYearGroup',\n [UserValidationCode.EmptyUserEntity]: '',\n [UserValidationCode.CustomerIdRequired]: '',\n [UserValidationCode.CustomerNotFoundInOnline]: '',\n [UserValidationCode.EmailTooLong]: 'email',\n [UserValidationCode.UsernameTooLong]: 'username',\n [UserValidationCode.FirstnameTooLong]: 'firstName',\n [UserValidationCode.SurnameTooLong]: 'surname',\n [UserValidationCode.EmailInvalid]: 'email',\n [UserValidationCode.EmailInUse]: 'email',\n [UserValidationCode.UsernameInvalid]: 'username',\n [UserValidationCode.PasswordTooShort]: 'password',\n [UserValidationCode.EmailDuplicated]: '',\n [UserValidationCode.UsernameDuplicated]: '',\n [UserValidationCode.DisplayNameTooLong]: 'displayName',\n [UserValidationCode.DisplayNameTooShort]: 'displayName',\n [UserValidationCode.UsernameTooShort]: 'username',\n [UserValidationCode.FirstnameInvalid]: 'firstName',\n [UserValidationCode.SurnameInvalid]: 'surname',\n [UserValidationCode.UserTypeMismatch]: 'email',\n [UserValidationCode.UserCanBeAddedInCustomer]: 'email',\n [UserValidationCode.UserCanBeCreated]: 'email',\n [UserValidationCode.CustomerFoundInOnline]: 'email',\n [UserValidationCode.UserInCustomerWithOnline]: 'email',\n [UserValidationCode.InvalidUserStatus]: 'email',\n [UserValidationCode.UserAlreadyExistsInCustomer]: 'email',\n [UserValidationCode.Rostered]: 'email',\n [UserValidationCode.InvalidYearGroup]: 'masterYearGroup'\n };\n\n errorCodes.forEach(code => {\n const message = localMessage?.[code] ?? CodeToMessageMap[code] ?? '';\n\n if (!message)\n return;\n\n const field = CodeToFieldMap[code];\n\n if (!field)\n return;\n\n messages[field] = localMessage?.[code]?.[field] ?? message;\n });\n\n return messages;\n },\n\n showEmptyState(userRequest: Flight.Response<UserCollection | SearchResults<User>>, queryParams: HashObject): boolean {\n if (!userRequest.data)\n return false;\n\n const hasQueryParams = Object.keys(queryParams).length;\n\n if (('results' in userRequest.data) || hasQueryParams)\n return false;\n\n return !userRequest.data.data?.length;\n },\n\n getFilters(customer: Customer, userType: UserGroup, yearGroups?: YearGroup[], countryCode?: string): SearchFilter[] {\n const filters = [Filters.SortBy(FilterHelper.getNameSortOptions())];\n\n if (userType === UserGroup.Learner && yearGroups?.length > 1)\n filters.push(Filters.YearGroup(FilterHelper.getYearGroupOptions(yearGroups)));\n\n filters.push(Filters.Status());\n \n if (userType === UserGroup.Staff)\n filters.push(Filters.IsAdmin(customer, countryCode));\n\n return filters;\n },\n\n getMinimumPasswordLength(\n securitySettings: SecuritySettingsResponse,\n userType: UserGroup,\n userRole: UserRole\n ): number {\n if (!securitySettings)\n return FALLBACK_MIN_PASSWORD_LENGTH;\n\n const customSetting = securitySettings.securitySettings?.find(s => {\n return s.userRole === userRole && s.userType === userType;\n });\n\n if (customSetting)\n return customSetting.minPasswordLength;\n\n if (userRole === UserRole.Admin || userRole === UserRole.SuperAdmin)\n return securitySettings.defaultAdminMinPasswordLength;\n\n return securitySettings.defaultMinPasswordLength;\n },\n\n mapStatusParamsToValue(statusParam: string | string[]): ObjectStatus[] {\n if (!statusParam)\n return;\n\n const convertToValue = (status: string): ObjectStatus => {\n switch (status) {\n case 'active':\n return ObjectStatus.Active;\n case 'deactivated':\n return ObjectStatus.Disabled;\n case 'pending':\n return ObjectStatus.Inactive;\n }\n };\n\n if (!Array.isArray(statusParam))\n return [convertToValue(statusParam)];\n\n return statusParam.map(convertToValue);\n },\n\n buildSearchData({\n customerId,\n userId,\n userType,\n queryParams = {}\n }: {\n customerId: string,\n userId?: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams\n }): HashObject {\n const filters = UserManagerHelper.buildSearchFiltersData(customerId, userType, queryParams);\n const sorts = UserManagerHelper.buildSearchSortData(customerId, queryParams);\n\n return {\n query: queryParams.query,\n indices: ['user'],\n searchType: 'user',\n customerIdOverride: customerId,\n userId,\n customerId,\n filters,\n sorts\n };\n },\n\n buildSearchDataAndKey({\n customerId,\n userId,\n userType,\n queryParams,\n cursor\n }: {\n customerId: string,\n userId?: string,\n userType: UserGroup,\n queryParams?: UserManagerQueryParams,\n cursor?: string,\n }): {key: string, data: HashObject} {\n const data = UserManagerHelper.buildSearchData({\n customerId,\n userId: userId || '',\n userType,\n queryParams: queryParams || {}\n });\n\n if (cursor)\n data.cursor = cursor;\n\n let key = `search:users:${cursor || ''}`;\n key += ObjectHelper.flattenObjectToString(data);\n\n return { key, data };\n },\n\n buildSearchParams(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n let filters = UserManagerHelper.buildSearchFiltersObject(customerId, userType, queryParams);\n\n filters = Object.keys(filters).reduce((prev: HashObject, current) => {\n prev[`${FilterConstants.FILTER_PARAM_PREFIX}${current}`] = filters[current];\n return prev;\n }, {});\n\n return {\n query: queryParams.query,\n index: 'user',\n customerIdOverride: customerId,\n ...filters\n };\n },\n\n buildSearchSortData(customerId: string, queryParams: UserManagerQueryParams = {}): HashObject {\n const sorts: HashObject = {};\n\n if (queryParams.sort) {\n switch (queryParams.sort) {\n case 'first-name-atoz':\n sorts.firstName = 'asc';\n break;\n\n case 'first-name-ztoa':\n sorts.firstName = 'desc';\n break;\n\n case 'surname-atoz':\n sorts.surname = 'asc';\n break;\n\n case 'surname-ztoa':\n sorts.surname = 'desc';\n break;\n\n case 'newest':\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'desc'\n }\n };\n break;\n case 'oldest':\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'asc'\n }\n };\n break;\n\n default:\n break;\n }\n } else {\n // default to newest sort\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'desc'\n }\n };\n }\n\n return sorts;\n },\n\n buildSearchFiltersData(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n const filters: HashObject = {\n userType: userType.toLowerCase()\n };\n\n filters.userProfile = {\n customerId\n };\n\n if (queryParams.isAdmin === 'true')\n filters.userProfile.role = [ UserRole.Admin.toLowerCase(), UserRole.SuperAdmin.toLowerCase() ];\n\n if (queryParams.yearGroup) {\n filters.yearGroup = { customerId };\n if (Array.isArray(queryParams.yearGroup)) {\n filters.yearGroup.value = queryParams.yearGroup;\n } else {\n filters.yearGroup.value = [queryParams.yearGroup];\n }\n }\n\n if (queryParams.status) {\n if (!Array.isArray(queryParams.status)) {\n filters.userProfile.status = [StatusMap[queryParams.status]];\n } else {\n filters.userProfile.status = queryParams.status.map(val => StatusMap[val]);\n }\n }\n\n return filters;\n },\n\n buildSearchFiltersObject(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n const filters: HashObject = {\n userType: userType.toLowerCase(),\n customerId: customerId.toString()\n };\n\n if (queryParams.isAdmin === 'true')\n filters.userRole = UserRole.Admin.toLowerCase();\n\n if (queryParams.yearGroup) {\n if (Array.isArray(queryParams.yearGroup)) {\n filters.yearGroup = `${queryParams.yearGroup.join(',')}`;\n } else {\n filters.yearGroup = queryParams.yearGroup;\n }\n }\n\n if (queryParams.status) {\n if (!Array.isArray(queryParams.status)) {\n filters.userProfileStatus = StatusMap[queryParams.status];\n } else {\n filters.userProfileStatus = queryParams.status.map(val => StatusMap[val]).join(',');\n }\n }\n\n return filters;\n },\n\n buildGetUsersQuery(\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): string {\n const { yearGroup = '', status = '', isAdmin = '', sort = 'newest' } = queryParams;\n\n const filters = [`usertype:${userType}`];\n\n if (yearGroup) {\n if (Array.isArray(yearGroup)) {\n filters.push(`yeargroups.value:[${yearGroup.join(',')}]`);\n } else {\n filters.push(`yeargroups.value:${yearGroup}`);\n }\n }\n\n if (isAdmin === 'true')\n filters.push(`userprofiles.role:${UserRole.Admin}`);\n\n if (status) {\n if (!Array.isArray(status)) {\n filters.push(`status:${StatusMap[status]}`);\n } else {\n filters.push(`status:[${status.map(val => StatusMap[val]).join(',')}]`);\n }\n }\n\n if (sort) {\n switch (sort) {\n case 'first-name-atoz':\n filters.push('orderby:name');\n break;\n \n case 'first-name-ztoa':\n filters.push('orderbydesc:name');\n break;\n \n case 'surname-atoz':\n filters.push('orderby:surname');\n break;\n \n case 'surname-ztoa':\n filters.push('orderbydesc:surname');\n break;\n\n case 'newest':\n filters.push('orderbydesc:timestamp');\n break;\n\n case 'oldest':\n filters.push('orderby:timestamp');\n break;\n \n default:\n break;\n }\n }\n\n return `{${filters.join(',')}}avatar`;\n },\n\n shouldDisplayAuthenticationMethods(users: User[]): boolean {\n if (!users?.length)\n return false;\n\n const hasFetchedAuthenticationMethods = !!ArrayHelper.first(users).authenticationMethods?.length;\n\n if (!hasFetchedAuthenticationMethods)\n return false;\n\n const userWithSSO = users.find(u => {\n const ssoLoginMethod = u.authenticationMethods?.find(am => !am.local);\n\n return !!ssoLoginMethod;\n });\n\n /**\n * If any user in the list has an authentication method that isn't local (meaning it's SSO)\n * then we display authentication methods.\n * \n * Otherwise we don't show them, as every user list item would just say \"ClickView\"\n */\n if (userWithSSO)\n return true;\n\n return false;\n },\n\n handleAsyncErrors(\n errors: ErroredUsers,\n updatedUser: EditUserRequest,\n oldUser: User | null,\n onDone: (options: FormSubmissionOptions) => void\n ): boolean {\n const errorCodes = errors?.[0]?.errorCodes;\n\n if (!errorCodes?.length)\n return true;\n\n const errorMessages: FormikErrors<EditUserRequest> = {};\n\n if (\n errorCodes.includes(UserValidationCode.EmailAlreadyExisted) ||\n errorCodes.includes(UserValidationCode.EmailInUse)\n ) {\n if (!oldUser || oldUser.email !== updatedUser.email)\n errorMessages.email = LanguageService.getPhrase(namespace, 'emailExistsLong');\n }\n\n if (errorCodes.includes(UserValidationCode.UsernameAlreadyExisted)) {\n if (!oldUser || oldUser.username !== updatedUser.username)\n errorMessages.username = LanguageService.getPhrase(namespace, 'usernameExistsLong');\n }\n\n if (!Object.keys(errorMessages).length)\n return true;\n\n onDone({\n errors: errorMessages\n });\n\n return false;\n },\n\n getInitialErrorsForInvalidYearGroups(yearGroup: YearGroup): FormikErrors<EditUserRequest> {\n if (!yearGroup || yearGroup.value === 0)\n return {\n masterYearGroup: LanguageService.getPhrase(namespace, 'yearGroupRequired') as FormikErrors<YearGroup>\n };\n\n return {};\n }\n};","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.emailSettings';\n\nexport const EmailSettingsValidationSchema = object().shape({\n email: string()\n .required(() => LanguageService.getPhrase(namespace, 'emailRequired'))\n .email(() => LanguageService.getPhrase(namespace, 'emailInvalid'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\n\nexport function VerifiedEmailIcon(): JSX.Element {\n return (\n <SvgContainer2>\n <svg viewBox='0 0 24 24'>\n <path d='M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z'/>\n </svg>\n </SvgContainer2>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { EmailSettingsValidationSchema } from './EmailSettingsValidationSchema';\nimport { VerifiedEmailIcon } from './VerifiedEmailIcon';\n\nconst namespace = 'settings.emailSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface EmailSettingsModel {\n email: string;\n}\n\ninterface EmailSettingsProps {\n currentUser: CurrentUser;\n onChangeEmail: (emailModel: EmailSettingsModel) => void;\n}\n\nexport function EmailSettings(props: EmailSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n const isVerified = props.currentUser.emailVerified;\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4 d-flex align-items-center'>\n <Text phrase='heading' />\n {isVerified && (\n <span className='font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2'>\n <Text phrase='verified' />\n <VerifiedEmailIcon />\n </span>\n )}\n </h2>\n\n {isVerified && (\n <p><Text phrase='info' options={{ email: props.currentUser.email }} /></p>\n )}\n\n {!showForm\n ? (\n <>\n <div className='d-flex'>\n <button className='btn btn-outline-dark me-2' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n </div>\n </>\n ) : (\n <FormWrapper<EmailSettingsModel>\n initialValues={{ email: props.currentUser.email || '' }}\n onSubmit={props.onChangeEmail}\n validationSchema={EmailSettingsValidationSchema}\n >\n <Form>\n <FormField\n className='w-75'\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n autoComplete='email'\n />\n <div className={`d-flex justify-content-end w-75 ${isSmallScreen ? 'ms-n2' : ''}`}>\n {isSmallScreen && (\n <button type='button' className='btn btn-link me-2' onClick={() => setShowForm(false)}>\n <Text phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={isVerified ? getPhrase('updateEmail') : getPhrase('verifyEmail')}\n variant={isVerified ? 'outline-dark' : 'dark'}\n />\n </div>\n </Form>\n </FormWrapper>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport styles from './partial-email-settings.module.scss';\n\nexport function PartialEmailSettings(): JSX.Element {\n return (\n <div className='w-50'>\n <div className={`partial-loading-background mb-2 ${styles.partialLabel}`} />\n <div className={`partial-loading-background ${styles.partialInfo}`} />\n\n <div className='form-group'>\n <div className={`partial-loading-background ${styles.partialInput}`} />\n </div>\n <div className={`partial-loading-background ${styles.partialSubmit}`} />\n <div className={`partial-loading-background mt-2 ${styles.partialNote}`} />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField, FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.changePasswordForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChangePasswordFormProps {\n onClickCancel?: () => void;\n \n hideButtons?: boolean;\n buttonContainerClass?: string;\n buttonSize?: FormSize;\n hideCancelButton?: boolean;\n hideCurrentPassword?: boolean;\n inputWidthClass?: string;\n showChangeOnNextLogin?: boolean;\n\n submitText?: string;\n submitVariant?: ButtonProps['variant'];\n}\n\nChangePasswordForm.defaultProps = {\n submitVariant: 'outline-dark',\n buttonContainerClass: 'btn-container d-flex justify-content-end align-items-center',\n inputWidthClass: 'w-100'\n};\n\nexport function ChangePasswordForm(props: ChangePasswordFormProps): JSX.Element {\n const formikProps = useFormikContext<ChangePasswordRequest>();\n\n return (\n <Form>\n {!props.hideCurrentPassword && (\n <FormField\n className={props.inputWidthClass}\n name='currentPassword'\n label={getPhrase('currentPassword')}\n placeholder={getPhrase('currentPasswordPlaceholder')}\n type='password'\n autoComplete='current-password'\n showRequiredStar\n />\n )}\n\n <FormField\n className={props.inputWidthClass}\n name='newPassword'\n label={getPhrase('newPassword')}\n placeholder={getPhrase('newPasswordPlaceholder')}\n type='password'\n autoComplete='new-password'\n showRequiredStar\n />\n\n <FormField\n className={props.inputWidthClass}\n name='confirmPassword'\n label={getPhrase('confirmPassword')}\n placeholder={getPhrase('confirmPasswordPlaceholder')}\n type='password'\n autoComplete='off'\n showRequiredStar\n />\n\n {props.showChangeOnNextLogin &&\n <FormField\n id='changeOnNextLogin'\n name='changeOnNextLogin'\n label={getPhrase('changeOnNextLogin')}\n type='checkbox'\n checked={formikProps.values.changeOnNextLogin}\n checkboxLabelFontWeight={'normal'}\n />\n }\n \n {!props.hideButtons && (\n <div className={props.buttonContainerClass}>\n {(!props.hideCancelButton && !!props.onClickCancel) && (\n <button\n type='button'\n className={`btn btn-link me-2 ${props.buttonSize === 'lg' ? 'btn-lg' : ''}`}\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={props.submitText || getPhrase('save')}\n variant={props.submitVariant}\n size={props.buttonSize}\n />\n </div>\n )}\n </Form>\n );\n}","import { object, ref, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.passwordSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getPasswordSettingsValidationSchema = (minPasswordLength: number) => object().shape({\n currentPassword: string()\n .required(() => getPhrase('currentPasswordRequired'))\n .trim()\n .default(''),\n newPassword: string()\n .required(() => getPhrase('newPasswordRequired'))\n .min(minPasswordLength, () => getPhrase('newPasswordMinLength', { minLen: minPasswordLength }))\n .trim()\n .default(''),\n confirmPassword: string()\n .required(() => getPhrase('confirmPasswordRequired'))\n .oneOf([ ref('newPassword'), null ], () => getPhrase('passwordsDontMatch'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordForm } from 'libs/shared/apps/user-manager/components/change-password-form/ChangePasswordForm';\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\n\nimport { getPasswordSettingsValidationSchema } from './PasswordSettingsValidationSchema';\n\nconst namespace = 'settings.passwordSettings';\n\nconst initialValues: ChangePasswordRequest = {\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n};\n\ninterface PasswordSettingsProps {\n onChangePassword: (\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ) => void;\n minPasswordLength: number;\n}\n\nexport function PasswordSettings(props: PasswordSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n function onSubmitPassword(data: ChangePasswordRequest, onDone: (options?: FormSubmissionOptions) => void) {\n props.onChangePassword(data, onDone, () => onDone({ reset: true }));\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'><Text phrase='heading' /></h2>\n\n {!showForm\n ? (\n <button className='btn btn-outline-dark ' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n ) : (\n <>\n <p><Text phrase='info' /></p>\n\n <FormWrapper<ChangePasswordRequest>\n initialValues={initialValues}\n onSubmit={onSubmitPassword}\n validationSchema={getPasswordSettingsValidationSchema(props.minPasswordLength)}\n >\n <ChangePasswordForm\n onClickCancel={() => setShowForm(false)}\n hideCancelButton={!isSmallScreen}\n submitText={LanguageService.getPhrase(namespace, 'savePassword')}\n buttonContainerClass={isSmallScreen\n ? 'd-flex justify-content-end ms-n2 w-75'\n : 'd-flex justify-content-end w-75'\n }\n inputWidthClass='w-75'\n />\n </FormWrapper>\n </>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces/ChangePasswordRequest';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { EmailSettings, EmailSettingsModel } from 'apps/settings/components/email-settings/EmailSettings';\nimport { PartialEmailSettings } from 'apps/settings/components/email-settings/partial-loading/PartialEmailSettings';\nimport { PasswordSettings } from 'apps/settings/components/password-settings/PasswordSettings';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/settings/flight-requests/UserManagerRequests';\n\nconst namespace = 'settings.accountSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AccountSettingsView(): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const masterCurrentUser = Flight.useBasicFetch<User>(currentUser.data &&\n UserManagerRequests.getUser(currentUser.data.id));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n useSetPageMetadata({ title: getPhrase('heading') });\n\n function onChangeEmail(emailModel: EmailSettingsModel, onDone?: () => void): void {\n Flight.fetch(dispatch, UserManagerRequests.changeEmail(emailModel.email, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldEmail: currentUser.data.email,\n newEmail: emailModel.email\n }, {\n actionType: UserAction.VerifyEmail,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Start\n });\n\n alerts.success(getPhrase('changeEmailRequestSuccess', { email: emailModel.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('changeEmailRequestError'));\n }, onDone));\n }\n\n function onChangePassword(\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ): void {\n Flight.fetch(dispatch, UserManagerRequests.changePassword(passwordModel, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n }, {\n actionType: UserAction.ChangePassword,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('changePasswordSuccess'));\n onSuccess();\n }, ({ responseJSON }: JQuery.jqXHR) => {\n if (responseJSON.errorCode === 'user.password-too-short')\n alerts.error(getPhrase('changePasswordRequirementsError'));\n else if (responseJSON.errorCode === 'user.invalid-password')\n alerts.error(getPhrase('changePasswordInvalid'));\n else if (responseJSON.errorCode === 'user.same-password')\n alerts.error(getPhrase('changePasswordSame'));\n else if (responseJSON.errorCode === 'user.locked-out')\n alerts.error(getPhrase('changePasswordLockedOut'));\n else\n alerts.error(getPhrase('changePasswordError'));\n }, onDone));\n }\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n passwordPolicy.data,\n masterCurrentUser.data?.userType,\n currentUser.data.role\n );\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {(currentUser.data)\n ? (\n <EmailSettings\n currentUser={currentUser.data}\n onChangeEmail={onChangeEmail}\n />\n ) : <PartialEmailSettings />\n }\n </div>\n\n <hr />\n\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {passwordPolicy.data && (\n <PasswordSettings onChangePassword={onChangePassword} minPasswordLength={minPasswordLength} />\n )}\n </div>\n </SettingsLayout>\n );\n}"],"names":["UserValidationCode","FALLBACK_MIN_PASSWORD_LENGTH","namespace","StatusMap","ObjectStatus","UserManagerHelper","spreadsheetEntries","identify","u","_a","_b","_c","_e","_d","_g","_f","entry","index","self","users","duplicateSets","validUsers","usernameDuplicateLookup","user","username","emailDuplicateLookup","email","ArrayHelper","dupeSetIndex","set","userType","customerId","obj","UserRole","UserGroup","body","queryParams","Core.LocationUtils","statuses","status","newStatus","errorCodes","minPasswordLength","shortMessages","localMessage","messages","getPhrase","LanguageService","CodeToMessageMap","CodeToFieldMap","code","message","field","userRequest","hasQueryParams","customer","yearGroups","countryCode","filters","Filters","FilterHelper","securitySettings","userRole","customSetting","statusParam","convertToValue","userId","sorts","cursor","data","key","ObjectHelper","prev","current","FilterConstants","val","yearGroup","isAdmin","sort","am","errors","updatedUser","oldUser","onDone","errorMessages","EmailSettingsValidationSchema","object","string","VerifiedEmailIcon","jsx","SvgContainer2","EmailSettings","props","isSmallScreen","useMediaQuery","MediaQueryStrings","showForm","setShowForm","React","isVerified","jsxs","LanguageNamespaceContext","Text","FormWrapper","Form","FormField","FormButtons","Fragment","PartialEmailSettings","styles","ChangePasswordForm","formikProps","useFormikContext","getPasswordSettingsValidationSchema","ref","initialValues","PasswordSettings","onSubmitPassword","SecuritySettingsRequests","success","error","HttpVerbs","AccountSettingsView","dispatch","useDispatch","alerts","useAlerts","currentUser","Flight.useBasicFetch","UserRequests","masterCurrentUser","UserManagerRequests","passwordPolicy","useSetPageMetadata","onChangeEmail","emailModel","Flight.fetch","AnalyticsHelper","UserAction","EntityType","LocationContext","WorkflowPhase","onChangePassword","passwordModel","onSuccess","responseJSON","SettingsLayout"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var c=(i=>(i.Any="Any",i.Staff="Staff",i.Learner="Learner",i))(c||{}),n=(i=>(i.Draft="Draft",i.Published="Published",i.Archived="Archived",i))(n||{}),f=(i=>(i.Discover="discover",i.Classification="classification",i.ClassificationDirectory="classification-directory",i.ClassificationCurriculum="classification-curriculum",i.MoviesAndTv="movies-and-tv",i.Company="company",i.Search="search",i))(f||{});export{n as D,f as a,c as b};
|
|
2
|
+
//# sourceMappingURL=BdHxGaRy.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BdHxGaRy.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/Dashboard.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\nimport { BaseObject, BasePaginatedCollection, CuratedWidget, CuratedWidgetContent, CuratedWidgetData } from 'libs/shared/interfaces';\n\nexport enum DashboardLearningLevel {\n Any = 'Any',\n Level_1 = 'Level_1',\n Level_2 = 'Level_2',\n Level_3 = 'Level_3',\n Level_4 = 'Level_4',\n}\n\nexport enum DashboardUserType {\n Any = 'Any',\n Staff = 'Staff',\n Learner = 'Learner',\n}\n\nexport enum DashboardStatus {\n Draft = 'Draft',\n Published = 'Published',\n Archived = 'Archived',\n}\n\nexport interface Dashboard extends BaseObject {\n libraryType: LibraryType;\n customerType: CustomerType;\n userRole: number;\n}\n\nexport interface CuratedDashboard<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BaseObject {\n contentRegion: ContentRegion;\n description: string;\n learningLevel: DashboardLearningLevel;\n userType: DashboardUserType;\n status: DashboardStatus;\n target: string;\n widgets: CuratedWidget<TWidgetData, TWidgetContent>[];\n metadata: HashObject;\n datePublished: string;\n}\n\nexport interface CuratedDashboardCollection<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BasePaginatedCollection<CuratedDashboard<TWidgetData, TWidgetContent>>{}\n\n/**\n * Dashboard identification below\n */\nexport enum DashboardTargetType {\n Discover = 'discover',\n Classification = 'classification',\n ClassificationDirectory = 'classification-directory',\n ClassificationCurriculum = 'classification-curriculum',\n MoviesAndTv = 'movies-and-tv',\n Company = 'company',\n Search = 'search'\n}\n\ninterface DiscoverDashboardInfo {\n targetType: DashboardTargetType.Discover;\n presentationId: string;\n}\n\nexport interface ClassificationDashboardInfo {\n targetType: DashboardTargetType.Classification;\n classificationId: string;\n}\n\nexport interface ClassificationDirectoryInfo {\n targetType: DashboardTargetType.ClassificationDirectory;\n classificationId: string;\n}\n\nexport interface ClassificationCurriculumInfo {\n targetType: DashboardTargetType.ClassificationCurriculum;\n classificationId: string;\n}\n\ninterface MoviesAndTvDashboardInfo {\n targetType: DashboardTargetType.MoviesAndTv;\n presentationId: string;\n}\n\nexport interface CompanyDashboardInfo {\n targetType: DashboardTargetType.Company;\n companyId: string;\n presentationId: string;\n}\n\nexport type DashboardTargetInfo = DiscoverDashboardInfo |\n ClassificationDashboardInfo |\n ClassificationDirectoryInfo |\n ClassificationCurriculumInfo |\n MoviesAndTvDashboardInfo |\n CompanyDashboardInfo;\n\nexport interface UnknownDashboardTargetInfo {\n targetType: DashboardTargetType;\n presentationId: string;\n classificationId: string;\n companyId: string;\n}"],"names":["DashboardUserType","DashboardStatus","DashboardTargetType"],"mappings":"AAeO,IAAKA,GAAAA,IACXA,EAAA,IAAM,MACNA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAHCA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACXA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,SAAW,WAHAA,IAAAA,GAAA,CAAA,CAAA,EAmCAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,eAAiB,iBACjBA,EAAA,wBAA0B,2BAC1BA,EAAA,yBAA2B,4BAC3BA,EAAA,YAAc,gBACdA,EAAA,QAAU,UACVA,EAAA,OAAS,SAPCA,IAAAA,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{R as C,D as n,j as t,H as pe,L as se,E as k,c as E,T as j,d as P,e as ke,u as oe,f as xe,g as x,h as _,i as A,k as O,I as F,C as W,l as De,m as Ce,n as H,o as b,p as be,q as we,r as Ye,P as Le,s as Se,t as je,v as Ee,w as Pe,x as Te,O as ce,y as Ie,z as G,F as Q}from"./app-C56EnOMP.js";import{C as X}from"./Cr8fUgj9.chunk.js";import{S as V}from"./BJ0C6oH6.chunk.js";import{S as Ne,g as J,a as S,T as _e,C as K}from"./DGaf-Jy9.chunk.js";import{C as Ae}from"./-cwk-1Iv.chunk.js";import{C as Oe}from"./DSq4f4jm.chunk.js";import{C as He}from"./Cv1FGdNu.chunk.js";import{T as Ue}from"./DireiQEp.chunk.js";import{S as $e}from"./DZ6Jrm23.chunk.js";import{g as Z,S as Be}from"./DSLX3H2r.chunk.js";import{A as Ve}from"./DmSSmUHZ.chunk.js";import{C as qe}from"./9NIa7Pi_.chunk.js";import{S as ze}from"./C8ZuWYfb.chunk.js";import{L as I}from"./BXKrMYdw.chunk.js";import"./Bj3i6I7i.chunk.js";import"./m5XtnRaH.chunk.js";import"./B5OOLcT3.chunk.js";import"./CU6iZ8MR.chunk.js";import"./nay4aGaa.chunk.js";import"./-Oi3rE3V.chunk.js";import"./DkFkYS-j.chunk.js";import"./8zar0u1i.chunk.js";import"./6UeJLeAd.chunk.js";import"./p61U8kXz.chunk.js";import"./D0bydDVL.chunk.js";import"./Z2sDSVPb.chunk.js";import"./BdHxGaRy.chunk.js";import"./sc9-PV9Y.chunk.js";import"./DxmeZ4C9.chunk.js";import"./BUhbk0mt.chunk.js";import"./DEP24A-f.chunk.js";import"./CPXlV0fg.chunk.js";import"./C5QPXJGU.chunk.js";import"./B_eK8A25.chunk.js";import"./CEmtkty-.chunk.js";import"./leubTuJo.chunk.js";import"./RnuR8yr3.chunk.js";import"./cvX-F_mx.chunk.js";import"./Daes5Wgy.chunk.js";import"./pkzD5BEm.chunk.js";const Re="_wrapper_gw22e_1",Fe="_weekend_gw22e_4",ee={wrapper:Re,weekend:Fe};function We(e){return n.getWeekday(e)===0||n.getWeekday(e)===6}function Ge(e){var h;const{date:a,notCurrentMonth:r}=e,[i,s]=C.useState(0);let o=`position-relative border ${e.theme.border} ${ee.wrapper}`;We(a)&&(o+=` ${ee.weekend}`),r&&(o+="opacity-50");const c=((h=e.events)==null?void 0:h.filter(u=>n.isSame(e.date,u.startDate)))||[],l={...e,eventsOnDay:c,sliderStep:i,setSliderStep:s};return t.jsx("td",{className:o,children:(c==null?void 0:c.length)>0?t.jsx(pe,{hoverableComponent:X,componentProps:l,hoverScale:1.35}):t.jsx(X,{...l,isHovering:!1})})}const U="specialEvent.eventsEmptyState",te=E.encloseNamespace(U);function Qe(e){return t.jsx(se.Provider,{value:U,children:t.jsxs(k,{children:[t.jsx(k.Image,{src:e.imageUrl,altText:te("info")}),t.jsx(k.Heading,{children:e.heading||t.jsx(j,{phrase:"heading"})}),e.appLink&&t.jsx(k.Info,{children:t.jsxs(t.Fragment,{children:[t.jsx(j,{namespace:U,phrase:"info"}),t.jsx(P,{appLink:e.appLink,children:t.jsx("span",{className:"text-info",children:te("link")})})]})})]})})}const Xe="_date_ez4o2_1",Je="_first_ez4o2_4",ne={date:Xe,first:Je};function Ke(e){const a={};e.events.forEach(i=>{const s=i.startDate;a[s]?a[s].push(i):a[s]=[i]});const r=Object.keys(a);return r.sort((i,s)=>n.isBefore(i,s)?-1:0),t.jsx("div",{className:"py-1",children:r.map((i,s)=>{let o="",c="";return t.jsxs("div",{children:[t.jsx("div",{className:`h4 mt-4 ${ne.date} ${s===0?ne.first:""}`,children:V.getOrdinalDate(i)}),a[i].map(l=>{var h;return o=c,c=(h=e.getStartTime)==null?void 0:h.call(e,l.content),t.jsx(Ne,{getAppLink:(u,m)=>e.appLink(u,ke.slugify(m)),event:l,presentationId:e.presentationId,getIconUrl:e.getIconUrl,getBannerUrl:e.getBannerUrl,getBackgroundColor:e.getBackgroundColor,getActionLabel:()=>e.getActionLabel(l.content),getStartTime:e.getStartTime&&o!==c?e.getStartTime:null,isPastEvent:e.isPastEvent},l.content.id)})]},i)})})}const Ze="_header_dbicu_1",et="_thead_dbicu_4",ae={header:Ze,thead:et};le.defaultProps={theme:{border:"border-light-blue",background:"bg-light-blue"}};function le(e){var u;const{appLinks:a,imageUrls:r}=e,i=oe(),s=V.getEventsInMonth(e.events||[],e.viewingMonth),[o,c]=C.useState(!1),[l,h]=C.useState(null);return e.eventsLoaded&&!(s!=null&&s.length)?t.jsx(Qe,{imageUrl:r.emptyState,appLink:(u=a.emptyStateRedirect)==null?void 0:u.call(a),heading:e.emptyStateHeading}):e.viewMode==="list"||i.xs||i.sm||i.md?e.eventsLoaded?t.jsx(Ke,{events:s,presentationId:e.presentationId,appLink:e.appLinks.event,getIconUrl:e.getIconUrl,getBannerUrl:e.getBannerUrl,getBackgroundColor:e.getBackgroundColor,getActionLabel:e.getActionLabel,getStartTime:e.getStartTime,isPastEvent:e.isPastEvent}):t.jsx("div",{className:"d-flex justify-content-center align-items-center mb-4",children:t.jsx(xe,{as:"div",animation:"border",role:"status"})}):t.jsxs("table",{className:"user-select-none w-100 mt-3 overflow-hidden rounded-top-lg",children:[t.jsx("thead",{className:`border ${e.theme.border} ${ae.thead}`,children:t.jsx("tr",{className:`fw-semibold ${e.theme.background} ${ae.header}`,children:e.weekDaysHeader.map(m=>t.jsx("th",{className:"px-2 h4",scope:"col",children:m},m))})}),t.jsx("tbody",{children:e.weekDays.map(m=>t.jsx("tr",{children:m.map(d=>t.jsx(Ge,{date:d,notCurrentMonth:!!d.notCurrentMonth,events:e.events,monthQuery:e.monthQuery,hasInitialized:o,setHasInitialized:c,presentationId:e.presentationId,hoveredEvent:l,theme:e.theme,setHoveredEvent:h,getEventsListAppLink:()=>e.appLinks.eventList(e.monthQuery,d,e.presentationId),getTopicAppLink:(f,v)=>e.appLinks.event(f,v),getIconUrl:e.getIconUrl,getBackgroundColor:e.getBackgroundColor,getCoverUrl:e.getCoverUrl,getHardCodedEvent:e.getHardCodedEvent,fadePastEvents:e.fadePastEvents,timezone:e.timezone},d.toString()))},m[0].toString()))})]})}const $=new Date("2023-01-01"),tt=12;function nt(e){const a=n.daysInMonth(e),r=[];for(let i=1;i<=a;i++){const s=n.set(e,"date",i);r.push(Object.assign(s,{notCurrentMonth:!1}))}return r}function de(e,a){const r=n.startOf(e,"month"),i=n.getWeekday(r),s=[],o=a?i===0?6:i-1:i;for(let c=a?1:0;c<=o;c++){const l=r,h=n.weekday(l,i-c);s.push(Object.assign(h,{notCurrentMonth:!0}))}return s.reverse()}function me(e,a){const r=n.endOf(e,"month"),i=n.getWeekday(r),s=[],o=a?7-(i===0?7:i):7-i;for(let c=1;c<=o;c+=1){const l=n.add(r,c,"days");s.push(Object.assign(l,{notCurrentMonth:!0}))}return s}function at(e){const a=e?[1,2,3,4,5,6,0]:[0,1,2,3,4,5,6],r=new Date;return a.map(i=>n.format(n.weekday(r,i),"ddd"))}function it(e,a){const r=[],i={},s=de(e,a).concat(nt(e)).concat(me(e,a));for(let o=0,c=0;o<s.length;o=o+7){const l=s.slice(o,o+7);l.forEach((h,u)=>{i[n.format(h,"YYYY-MM-DD")]={row:c,col:u}}),r.push(l),c++}return{datePositionMap:i,weeksTable:r}}function rt(e){const a=n.startOf(e,"month");return n.getWeekday(a)===1?a:x.first(de(e,!0))}function st(e){const a=n.endOf(e,"month");return n.getWeekday(a)===0?a:x.last(me(e,!0))}function N(e){return[rt(e),st(e)]}function ue(e){return e.charAt(0).toUpperCase()+e.slice(1)}function ot(e){if(!e)return!0;const a=ue(e);if(!n.formatIsValid(a,"MMMM-YYYY",!0))return!1;const i=n.parseDateString(a,"MMMM-YYYY");return n.isSame(i,$,"month")||n.isAfter(i,$,"month")}const ct=new Date;function lt(e){const a=n.diffBetween(n.startOf(e,"month"),n.startOf(ct,"month"),"months"),r=n.isAfter(e,$,"month"),i=a<tt;return{showPrev:r,showNext:i}}function dt(e){if(!e)return n.parseDateString();const a=ue(e);return n.parseDateString(a,"MMMM-YYYY")}const mt="_chevron_d411m_1",ut="_left_d411m_4",ht="_right_d411m_10",gt="_viewModeContainer_d411m_16",D={chevron:mt,left:ut,right:ht,viewModeContainer:gt},ft="specialEventCalendar.calendarNav";function vt(e){return t.jsxs("div",{className:`${D.viewModeContainer} d-none d-lg-block`,children:[t.jsx(F,{svg:He,className:`${e.viewMode==="calendar"?"bg-dark text-white":""} btn btn-outline-dark rounded-start rounded-end-0 border-end-0 px-3 h-100`,onClick:()=>e.setViewMode("calendar"),analyticsData:{},analyticsOptions:{entity:A.AppLink,actionType:O.Click,descriptor:W.Calendar,location:_.CalendarNav}}),t.jsx(F,{svg:Ue,className:`${e.viewMode==="list"?"bg-dark text-white":""} btn btn-outline-dark rounded-end rounded-start-0 border-start-0 px-3 h-100`,onClick:()=>e.setViewMode("list"),analyticsData:{},analyticsOptions:{entity:A.AppLink,actionType:O.Click,descriptor:W.List,location:_.CalendarNav}})]})}function ie(e){const a=e.action==="previous"?Ae:Oe,r=e.action==="previous"?D.left:D.right;function i(){H.trigger(e.appLink),e.onClick()}return t.jsx(P,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:`${D.chevron} ${r} border border-dark rounded-circle bg-white d-flex align-items-center justify-content-center`,onClick:i,children:t.jsx(De,{svg:a,size:Ce.Medium,className:`svg-container d-inline-block ${D.svg}`})})}const re=new Date;function yt(e){const{appLinks:a}=e,r=oe();function i(d){var M,w;const f=n.format(d,"MMMM").toLocaleLowerCase(),v=a.month(f),y={};if(d){const T=new Date().getFullYear(),L=d.getFullYear();T!==L&&(y.year=L)}return(M=e.queryParams)!=null&&M.classification&&(y.classification=e.queryParams.classification),(w=e.queryParams)!=null&&w.yearGroup&&(y.yearGroup=e.queryParams.yearGroup),v.params=y,v}function s(){const d=n.add(e.monthDate,1,"month");e.setViewingMonthDate(d)}function o(){const d=n.subtract(e.monthDate,1,"month");e.setViewingMonthDate(d)}function c(){n.format(re,"M YY")!==n.format(e.monthDate,"M YY")&&e.setViewingMonthDate()}const{showPrev:l,showNext:h}=lt(e.monthDate),u={actionType:O.Click,entity:A.SpecialEvent,location:_.CalendarNav};function m(d){return n.format(d,"YYYY-MM-DD")}return t.jsxs("div",{className:"d-flex flex-wrap gap-3 justify-content-end align-items-center",children:[t.jsx("h1",{className:"mb-0 h2 me-auto",children:n.format(e.monthDate,r.xs?"MMM YYYY":"MMMM YYYY")}),e.children,e.setViewMode&&t.jsx(vt,{viewMode:e.viewMode,setViewMode:e.setViewMode}),t.jsxs("div",{className:"d-flex gap-3",children:[l&&t.jsx(ie,{appLink:i(n.startOf(n.subtract(e.monthDate,1,"month"),"month")),action:"previous",onClick:o,analyticsOptions:u,analyticsData:{action:"previous",date:m(n.startOf(n.add(e.monthDate,1,"month"),"month"))}}),t.jsx(P,{appLink:i(),className:`${D.todayWrapper} btn btn-outline-dark fw-semibold`,onClick:c,analyticsOptions:u,analyticsData:{action:"today",date:m(n.startOf(re,"month"))},children:E.getPhrase(ft,"today")}),h&&t.jsx(ie,{appLink:i(n.startOf(n.add(e.monthDate,1,"month"),"month")),analyticsOptions:u,analyticsData:{action:"next",date:m(n.startOf(n.add(e.monthDate,1,"month"),"month"))},action:"next",onClick:s})]})]})}const B="specialEvent.eventsErrorState",Mt=E.encloseNamespace(B);function pt(e){return t.jsx(se.Provider,{value:B,children:t.jsxs(k,{children:[t.jsx(k.Image,{src:e.imageUrl}),t.jsx(k.Heading,{children:t.jsx(j,{phrase:"heading"})}),t.jsxs(k.Info,{children:[t.jsx(j,{namespace:B,phrase:"info"}),t.jsx("br",{}),t.jsx(P,{appLink:e.appLink,children:t.jsx("span",{className:"text-info",children:Mt("link")})})]})]})})}const kt=new Date;function xt(e=kt,a,r=!0){const i=at(r),s=C.useRef({}),[o,c]=C.useState([]),l=n.format(e,"YYYY-MM");C.useEffect(()=>{const d=s.current[l];if(d)c(d.weeksTable);else{const{weeksTable:f,datePositionMap:v}=it(e,r);s.current[l]={weeksTable:f,datePositionMap:v},c(f)}},[n.format(e,"YYYY-MM")]);function h(d){if(!d){H.trigger(a.calendar());return}if(l!==n.format(d,"YYYY-MM")){const f=n.format(d,"MMMM").toLocaleLowerCase(),v=new Date().getFullYear(),y=e.getFullYear(),M=a.month(f);v!==y&&(M.params={year:y}),H.trigger(M)}}const u=x.first(x.first(o)),m=x.last(x.last(o));return{weekDaysHeader:i,weekDays:o,monthDate:e,setMonthDate:h,startDate:u,endDate:m}}function Dt(e,a){const[r,i]=N(e),s=n.add(e,1,"month"),[o,c]=N(s),l=n.subtract(e,1,"month"),[h,u]=N(l),m={};a.yearGroup&&(m.audienceId=a.yearGroup),a.classification&&(m.topicId=a.classification,m.includeChildrenTopics=!0);const d=b(r&&i&&I.calendarLivestreams({from:n.format(r,"YYYY-MM-DD"),to:n.format(i,"YYYY-MM-DD"),...m})),f=b(o&&c&&I.calendarLivestreams({from:n.format(o,"YYYY-MM-DD"),to:n.format(c,"YYYY-MM-DD"),...m})),v=b(h&&u&&I.calendarLivestreams({from:n.format(h,"YYYY-MM-DD"),to:n.format(u,"YYYY-MM-DD"),...m}));return{events:x.uniq([...v.data||[],...d.data||[],...f.data||[]],M=>M.id),loaded:d.hasCompleted}}const Ct="livestreamCalendar.calendarView",Y=E.encloseNamespace(Ct);function un(e){return e?ce.pick(e,["year","classification","yearGroup"]):{}}bt.defaultProps={queryParams:{}};function bt(e){var q,z,R;const[{viewMode:a},r]=be("calendar:mode",{viewMode:"calendar"},{storage:we.LocalStorage}),{hasPermissions:i}=Ye(),s=i(Le.StudentExperience),o=b(Se.streamablePresentation()),c=b(o.data&&Ve.presentationAudiences(o.data.id,je.StreamableLearning)),l=b(o.data&&qe.topicsFromAllAvailablePresentations([o.data.id])),h=ot(e.month),u=dt(e.month),{monthDate:m,setMonthDate:d,weekDays:f,weekDaysHeader:v,startDate:y,endDate:M}=xt(u,S()),{events:w,loaded:T}=Dt(u,e.queryParams),L=n.format(m,"MMMM YYYY");if(Ee(Pe.getDefaultMetadata({title:L,phraseContext:{phraseHandler:Y,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:ze.getCanonicalLink({allowedParams:["year"]}),allowIndexing:!0,product:Te.PRODUCT_NAME})),e.month!==null&&!h)return t.jsx(pt,{imageUrl:J().errorState,appLink:Z().calendar});const he=[{id:"classification",name:Y("subjectFilter"),options:(q=l.data)==null?void 0:q.topics.map(g=>({name:g.name,id:g.topicIds.join(":")})),type:"checkbox",compatibleIndices:[]},{id:"yearGroup",name:Y("gradeFilter"),type:"checkbox",options:(z=c.data)==null?void 0:z.map(g=>({name:g.name,id:g.masterId})),compatibleIndices:[]}];function ge(){const g=n.format(m,"MMMM").toLocaleLowerCase();new Date().getFullYear(),m.getFullYear();const p=S().month(g);return e.queryParams.classification&&e.queryParams.classification,e.queryParams.yearGroup&&e.queryParams.yearGroup,p}function fe(g){return s||n.isBefore(g.endDateTime,new Date)?"pastActionLabel":"actionLabel"}function ve(){if(!V.getEventsInMonth(w||[],u).length&&(e.queryParams.yearGroup||e.queryParams.classification))return Y("emptyStateText")}function ye(g){var p;return G.createUrl((p=g.company.logo)==null?void 0:p.url,{size:Q.Small})}function Me(g){var p;return G.createUrl((p=g.company.banner)==null?void 0:p.url,{size:Q.Large})}return t.jsxs("div",{className:"bg-white px-4",children:[t.jsx(Be,{appLinks:Z(),active:"calendar"}),t.jsx(yt,{monthDate:m,setViewingMonthDate:d,appLinks:S(),queryParams:e.queryParams,viewMode:a,setViewMode:g=>r({viewMode:g}),children:t.jsx("div",{className:"mx-n1 order-1 order-sm-0",children:t.jsx($e,{queryParams:ce.omit(e.queryParams,["year"]),mainFilters:he,appLink:ge(),isFetchingOptions:!l.data||!o.data||!c.data,alignResetButtonLeft:!0,hideDivider:!0,hideHeading:!0,hideCaret:!1})})}),t.jsxs("div",{className:`position-relative mt-3 ${a==="list"?"":"mt-lg-0"}`,children:[t.jsx("div",{className:`d-block ${a==="list"?"":"d-lg-none"} position-absolute top-0 end-0 mt-2`,children:t.jsx(_e,{})}),t.jsx(le,{weekDays:f,weekDaysHeader:v,events:w,monthQuery:{from:y==null?void 0:y.toString(),to:M==null?void 0:M.toString()},viewingMonth:u,eventsLoaded:T,presentationId:(R=o.data)==null?void 0:R.id,appLinks:S(),imageUrls:J(),viewMode:a,getActionLabel:g=>Y(fe(g)),getBackgroundColor:g=>{var p;return(p=g.company.metadata)==null?void 0:p.colour},getBannerUrl:Me,getIconUrl:ye,getStartTime:K.getStartTime,theme:{background:"bg-light-green",border:"border-light-green"},emptyStateHeading:ve(),fadePastEvents:!0,timezone:Ie.ET,isPastEvent:K.isPastEvent})]})]})}export{bt as CalendarView,un as sanitizeCalendarViewParams};
|
|
2
|
+
//# sourceMappingURL=BeHz9c4V.chunk.js.map
|