@clickview/streamable-learning 0.36.0 → 0.36.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/CgWQu_Ss.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/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/38Gc6FvJ.chunk.js +2 -0
- package/dist/scripts/38Gc6FvJ.chunk.js.map +1 -0
- package/dist/scripts/9vP26Hjl.chunk.js +2 -0
- package/dist/scripts/9vP26Hjl.chunk.js.map +1 -0
- package/dist/scripts/B-YTLo4E.chunk.js +2 -0
- package/dist/scripts/B-YTLo4E.chunk.js.map +1 -0
- package/dist/scripts/B2rqAGbQ.chunk.js +2 -0
- package/dist/scripts/B2rqAGbQ.chunk.js.map +1 -0
- package/dist/scripts/B46nd_gM.chunk.js +2 -0
- package/dist/scripts/B46nd_gM.chunk.js.map +1 -0
- package/dist/scripts/B61dxODs.chunk.js +2 -0
- package/dist/scripts/B61dxODs.chunk.js.map +1 -0
- package/dist/scripts/B928Y1m-.chunk.js +2 -0
- package/dist/scripts/B928Y1m-.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/BDwX0xO5.chunk.js +7 -0
- package/dist/scripts/BDwX0xO5.chunk.js.map +1 -0
- package/dist/scripts/BFcg4phV.chunk.js +15 -0
- package/dist/scripts/BFcg4phV.chunk.js.map +1 -0
- package/dist/scripts/BOH3SvVi.chunk.js +2 -0
- package/dist/scripts/BOH3SvVi.chunk.js.map +1 -0
- package/dist/scripts/BPzvNgkA.chunk.js +10 -0
- package/dist/scripts/BPzvNgkA.chunk.js.map +1 -0
- package/dist/scripts/BWkYFXR0.chunk.js +2 -0
- package/dist/scripts/BWkYFXR0.chunk.js.map +1 -0
- package/dist/scripts/BYrL8Bl0.chunk.js +2 -0
- package/dist/scripts/BYrL8Bl0.chunk.js.map +1 -0
- package/dist/scripts/BaMuTXqa.chunk.js +2 -0
- package/dist/scripts/BaMuTXqa.chunk.js.map +1 -0
- package/dist/scripts/Bbj3u3zY.chunk.js +2 -0
- package/dist/scripts/Bbj3u3zY.chunk.js.map +1 -0
- package/dist/scripts/Bd-gJLT1.chunk.js +2 -0
- package/dist/scripts/Bd-gJLT1.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/BdPgUz8g.chunk.js +2 -0
- package/dist/scripts/BdPgUz8g.chunk.js.map +1 -0
- package/dist/scripts/Be6BKGLG.chunk.js +356 -0
- package/dist/scripts/Be6BKGLG.chunk.js.map +1 -0
- package/dist/scripts/BfK6q73t.chunk.js +8 -0
- package/dist/scripts/BfK6q73t.chunk.js.map +1 -0
- package/dist/scripts/Bg1w511R.chunk.js +2 -0
- package/dist/scripts/Bg1w511R.chunk.js.map +1 -0
- package/dist/scripts/Bg6K2hsA.chunk.js +3 -0
- package/dist/scripts/Bg6K2hsA.chunk.js.map +1 -0
- package/dist/scripts/BiLpxxSD.chunk.js +2 -0
- package/dist/scripts/BiLpxxSD.chunk.js.map +1 -0
- package/dist/scripts/BmN5JsPi.chunk.js +5 -0
- package/dist/scripts/BmN5JsPi.chunk.js.map +1 -0
- package/dist/scripts/BnSh6tRF.chunk.js +2 -0
- package/dist/scripts/BnSh6tRF.chunk.js.map +1 -0
- package/dist/scripts/Bnt14Hw8.chunk.js +2 -0
- package/dist/scripts/Bnt14Hw8.chunk.js.map +1 -0
- package/dist/scripts/BpRVTpnA.chunk.js +8 -0
- package/dist/scripts/BpRVTpnA.chunk.js.map +1 -0
- package/dist/scripts/BsoISj2P.chunk.js +2 -0
- package/dist/scripts/BsoISj2P.chunk.js.map +1 -0
- package/dist/scripts/BuNZOfIz.chunk.js +2 -0
- package/dist/scripts/BuNZOfIz.chunk.js.map +1 -0
- package/dist/scripts/BvQxdtl3.chunk.js +2 -0
- package/dist/scripts/BvQxdtl3.chunk.js.map +1 -0
- package/dist/scripts/C2zcSUEr.chunk.js +2 -0
- package/dist/scripts/C2zcSUEr.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/C5Fq7Tf-.chunk.js +2 -0
- package/dist/scripts/C5Fq7Tf-.chunk.js.map +1 -0
- package/dist/scripts/CD-ZU1Sa.chunk.js +2 -0
- package/dist/scripts/CD-ZU1Sa.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/CO1Up6zQ.chunk.js +2 -0
- package/dist/scripts/CO1Up6zQ.chunk.js.map +1 -0
- package/dist/scripts/CPNjAJN5.chunk.js +2 -0
- package/dist/scripts/CPNjAJN5.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/CQJIB_e-.chunk.js +2 -0
- package/dist/scripts/CQJIB_e-.chunk.js.map +1 -0
- package/dist/scripts/CRusuLqR.chunk.js +2 -0
- package/dist/scripts/CRusuLqR.chunk.js.map +1 -0
- package/dist/scripts/CTWahyAB.chunk.js +2 -0
- package/dist/scripts/CTWahyAB.chunk.js.map +1 -0
- package/dist/scripts/CU5Dd7rS.chunk.js +2 -0
- package/dist/scripts/CU5Dd7rS.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/CX-Bc0hf.chunk.js +2 -0
- package/dist/scripts/CX-Bc0hf.chunk.js.map +1 -0
- package/dist/scripts/CY1om5lx.chunk.js +2 -0
- package/dist/scripts/CY1om5lx.chunk.js.map +1 -0
- package/dist/scripts/C_79jeAr.chunk.js +2 -0
- package/dist/scripts/C_79jeAr.chunk.js.map +1 -0
- package/dist/scripts/C_pobyVf.chunk.js +3 -0
- package/dist/scripts/C_pobyVf.chunk.js.map +1 -0
- package/dist/scripts/Cgf5lDwO.chunk.js +2 -0
- package/dist/scripts/Cgf5lDwO.chunk.js.map +1 -0
- package/dist/scripts/Ci9wGu6N.chunk.js +2 -0
- package/dist/scripts/Ci9wGu6N.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/Cp-yDIHE.chunk.js +2 -0
- package/dist/scripts/Cp-yDIHE.chunk.js.map +1 -0
- package/dist/scripts/CqWRz_Vd.chunk.js +2 -0
- package/dist/scripts/CqWRz_Vd.chunk.js.map +1 -0
- package/dist/scripts/Cs-XAmfP.chunk.js +2 -0
- package/dist/scripts/Cs-XAmfP.chunk.js.map +1 -0
- package/dist/scripts/CsxsnXoH.chunk.js +2 -0
- package/dist/scripts/CsxsnXoH.chunk.js.map +1 -0
- package/dist/scripts/CvuMDF0y.chunk.js +2 -0
- package/dist/scripts/CvuMDF0y.chunk.js.map +1 -0
- package/dist/scripts/CwRpHtAf.chunk.js +2 -0
- package/dist/scripts/CwRpHtAf.chunk.js.map +1 -0
- package/dist/scripts/D4OCofAF.chunk.js +2 -0
- package/dist/scripts/D4OCofAF.chunk.js.map +1 -0
- package/dist/scripts/D4x4hAdA.chunk.js +2 -0
- package/dist/scripts/D4x4hAdA.chunk.js.map +1 -0
- package/dist/scripts/DBaknZA7.chunk.js +2 -0
- package/dist/scripts/DBaknZA7.chunk.js.map +1 -0
- package/dist/scripts/DBdD19pY.chunk.js +53 -0
- package/dist/scripts/DBdD19pY.chunk.js.map +1 -0
- package/dist/scripts/DELBynwO.chunk.js +2 -0
- package/dist/scripts/DELBynwO.chunk.js.map +1 -0
- package/dist/scripts/DEixuHfi.chunk.js +2 -0
- package/dist/scripts/DEixuHfi.chunk.js.map +1 -0
- package/dist/scripts/DFhkO_lZ.chunk.js +2 -0
- package/dist/scripts/DFhkO_lZ.chunk.js.map +1 -0
- package/dist/scripts/DIIFVn0p.chunk.js +2 -0
- package/dist/scripts/DIIFVn0p.chunk.js.map +1 -0
- package/dist/scripts/DIhfGjAK.chunk.js +2 -0
- package/dist/scripts/DIhfGjAK.chunk.js.map +1 -0
- package/dist/scripts/DK1p1ffZ.chunk.js +2 -0
- package/dist/scripts/DK1p1ffZ.chunk.js.map +1 -0
- package/dist/scripts/DK6BRHnl.chunk.js +2 -0
- package/dist/scripts/DK6BRHnl.chunk.js.map +1 -0
- package/dist/scripts/DNbkIXc2.chunk.js +2 -0
- package/dist/scripts/DNbkIXc2.chunk.js.map +1 -0
- package/dist/scripts/DRmZj7Fw.chunk.js +2 -0
- package/dist/scripts/DRmZj7Fw.chunk.js.map +1 -0
- package/dist/scripts/DTcDjqUi.chunk.js +8 -0
- package/dist/scripts/DTcDjqUi.chunk.js.map +1 -0
- package/dist/scripts/DVmtgkhY.chunk.js +2 -0
- package/dist/scripts/DVmtgkhY.chunk.js.map +1 -0
- package/dist/scripts/DWkg1qc2.chunk.js +2 -0
- package/dist/scripts/DWkg1qc2.chunk.js.map +1 -0
- package/dist/scripts/D_nzH8Cw.chunk.js +2 -0
- package/dist/scripts/D_nzH8Cw.chunk.js.map +1 -0
- package/dist/scripts/DaJTPRJr.chunk.js +2 -0
- package/dist/scripts/DaJTPRJr.chunk.js.map +1 -0
- package/dist/scripts/Dal4C0kV.chunk.js +2 -0
- package/dist/scripts/Dal4C0kV.chunk.js.map +1 -0
- package/dist/scripts/DecSY6Xq.chunk.js +2 -0
- package/dist/scripts/DecSY6Xq.chunk.js.map +1 -0
- package/dist/scripts/DgL-ti6b.chunk.js +2 -0
- package/dist/scripts/DgL-ti6b.chunk.js.map +1 -0
- package/dist/scripts/Dhn0D6IV.chunk.js +2 -0
- package/dist/scripts/Dhn0D6IV.chunk.js.map +1 -0
- package/dist/scripts/DuidBpWd.chunk.js +2 -0
- package/dist/scripts/DuidBpWd.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/Dx9ncX-C.chunk.js +2 -0
- package/dist/scripts/Dx9ncX-C.chunk.js.map +1 -0
- package/dist/scripts/Dxt3JwJz.chunk.js +2 -0
- package/dist/scripts/Dxt3JwJz.chunk.js.map +1 -0
- package/dist/scripts/Dy57waqb.chunk.js +2 -0
- package/dist/scripts/Dy57waqb.chunk.js.map +1 -0
- package/dist/scripts/DzLh2mnb.chunk.js +2 -0
- package/dist/scripts/DzLh2mnb.chunk.js.map +1 -0
- package/dist/scripts/F-K8Bwdk.chunk.js +2 -0
- package/dist/scripts/F-K8Bwdk.chunk.js.map +1 -0
- package/dist/scripts/G4u5okSS.chunk.js +2 -0
- package/dist/scripts/G4u5okSS.chunk.js.map +1 -0
- package/dist/scripts/KAizYpNf.chunk.js +2 -0
- package/dist/scripts/KAizYpNf.chunk.js.map +1 -0
- package/dist/scripts/LIBRZSqN.chunk.js +8 -0
- package/dist/scripts/LIBRZSqN.chunk.js.map +1 -0
- package/dist/scripts/LgZBXsgq.chunk.js +2 -0
- package/dist/scripts/LgZBXsgq.chunk.js.map +1 -0
- package/dist/scripts/QlJI4d4R.chunk.js +2 -0
- package/dist/scripts/QlJI4d4R.chunk.js.map +1 -0
- package/dist/scripts/ShERxFU5.chunk.js +2 -0
- package/dist/scripts/ShERxFU5.chunk.js.map +1 -0
- package/dist/scripts/Ynb9IAgu.chunk.js +2 -0
- package/dist/scripts/Ynb9IAgu.chunk.js.map +1 -0
- package/dist/scripts/_8CvUiOV.chunk.js +2 -0
- package/dist/scripts/_8CvUiOV.chunk.js.map +1 -0
- package/dist/scripts/aXDrx9_z.chunk.js +6 -0
- package/dist/scripts/aXDrx9_z.chunk.js.map +1 -0
- package/dist/scripts/app-DiXzpOyg.js +220 -0
- package/dist/scripts/app-DiXzpOyg.js.map +1 -0
- package/dist/scripts/bww2eGbI.chunk.js +2 -0
- package/dist/scripts/bww2eGbI.chunk.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/gtdeja1H.chunk.js +2 -0
- package/dist/scripts/gtdeja1H.chunk.js.map +1 -0
- package/dist/scripts/m9wd_474.chunk.js +2 -0
- package/dist/scripts/m9wd_474.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/pkzD5BEm.chunk.js +2 -0
- package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
- package/dist/scripts/qO6ZefON.chunk.js +2 -0
- package/dist/scripts/qO6ZefON.chunk.js.map +1 -0
- package/dist/scripts/s4utqqzH.chunk.js +2 -0
- package/dist/scripts/s4utqqzH.chunk.js.map +1 -0
- package/dist/scripts/sxyRyCzh.chunk.js +2 -0
- package/dist/scripts/sxyRyCzh.chunk.js.map +1 -0
- package/dist/scripts/tzNty_oG.chunk.js +2 -0
- package/dist/scripts/tzNty_oG.chunk.js.map +1 -0
- package/dist/scripts/vjyJbQe4.chunk.js +2 -0
- package/dist/scripts/vjyJbQe4.chunk.js.map +1 -0
- package/dist/scripts/vuoBilPQ.chunk.js +2 -0
- package/dist/scripts/vuoBilPQ.chunk.js.map +1 -0
- package/dist/scripts/vwgUbn2Z.chunk.js +2 -0
- package/dist/scripts/vwgUbn2Z.chunk.js.map +1 -0
- package/dist/scripts/wOGv44_K.chunk.js +2 -0
- package/dist/scripts/wOGv44_K.chunk.js.map +1 -0
- package/dist/scripts/xbvkqJGe.chunk.js +2 -0
- package/dist/scripts/xbvkqJGe.chunk.js.map +1 -0
- package/dist/scripts/xywWSa0t.chunk.js +2 -0
- package/dist/scripts/xywWSa0t.chunk.js.map +1 -0
- package/dist/scripts/zUz4ZfV2.chunk.js +2 -0
- package/dist/scripts/zUz4ZfV2.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/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/9951-streamable-learning-e9a916b2ef.chunk.css +0 -99
- 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-2ec3a6600a-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-1e95cdfdf2-streamable-learning.chunk.js +0 -1
- package/dist/scripts/4607-2ef017d2ae-streamable-learning.chunk.js +0 -2
- package/dist/scripts/4607-2ef017d2ae-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/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-772848ba8a-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-96574373ca-streamable-learning.chunk.js +0 -1
- package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +0 -1
- package/dist/scripts/8058-51c4b442d6-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-bbaf07ad0f-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9766-855b276f54-streamable-learning.chunk.js +0 -2
- package/dist/scripts/9766-855b276f54-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/9842-ca3b069e5d-streamable-learning.chunk.js +0 -1
- package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +0 -2
- package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/9951-122cbba64f-streamable-learning.chunk.js +0 -2
- package/dist/scripts/9951-122cbba64f-streamable-learning.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/bundle-d51fd463b2.min.js +0 -2
- package/dist/scripts/bundle-d51fd463b2.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,2 @@
|
|
|
1
|
+
import{j as a,d as C,z,F as H,l as L,T as d,m as V,D as B,N as Ne,Q as je,a5 as Se,aZ as ye,V as Le,c as me,R as x,aB as Ae,ac as ke,aW as Ce,o as q,aC as Te,p as Pe,q as we,a_ as De,r as Fe,P as Ie,w as Ue,x as _e,a0 as Be,v as Ee,a1 as Re,a2 as Ve,a6 as qe,aE as Oe,$ as Me,aK as se,G as ze,n as M,e as ie,W as A,X as k,M as He,a$ as ne,h as $e,k as Ke,i as Ge,aX as re}from"./app-DiXzpOyg.js";import{a as We}from"./DvDdiDQN.chunk.js";import{S as Ye}from"./Bbj3u3zY.chunk.js";import{S as Je,a as Xe,J as Ze,u as Qe,b as ea,B as oe,c as aa,d as ta,e as sa}from"./CvuMDF0y.chunk.js";import{L as ia}from"./BmN5JsPi.chunk.js";import{B as de}from"./CX-Bc0hf.chunk.js";import{g as na,B as ra}from"./BBnDr_iy.chunk.js";import{C as oa,L as la}from"./DK6BRHnl.chunk.js";import{C as ca}from"./DIhfGjAK.chunk.js";import{G as ma}from"./DBaknZA7.chunk.js";import{T as da}from"./BaMuTXqa.chunk.js";import{A as ua}from"./DaJTPRJr.chunk.js";import{C as ga}from"./CEmtkty-.chunk.js";import{u as ha}from"./Dxt3JwJz.chunk.js";import{S as xa}from"./CPNjAJN5.chunk.js";import{a as pa,l as p,u as va,F as j}from"./aXDrx9_z.chunk.js";import"./G4u5okSS.chunk.js";import"./D4x4hAdA.chunk.js";import"./DgL-ti6b.chunk.js";import"./BYrL8Bl0.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";const fa="_logoContainer_vn3gg_1",ba={logoContainer:fa},Na="streamable.livestreamDetails";function ue(e){var h;function t(){return`${B.diffBetween(e.endTime,e.startTime,"minutes")}m`}function n(r){return je.convertUTCToTimezoneDate(r)}function l(r){return B.format(n(r),"h:mma")}function v(r){return B.format(n(r),"Do MMMM")}function m(r){var b;return(b=Ne[r])==null?void 0:b.name}function g(){var r;return(r=ua.getMergedPresentationAudienceString(e.audiences))==null?void 0:r.name}const f=na(e.companyName,ra);return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.logoUrl&&a.jsx(C,{appLink:e.companyAppLink,children:a.jsx("div",{className:`${ba.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`,children:a.jsx(de,{data:z.createUrl(e.logoUrl,{size:H.Small}),alt:e.companyName,className:!e.logoBgColour&&f,imageStyle:{backgroundColor:e.logoBgColour},preload:!0})})}),a.jsxs("div",{className:"d-flex flex-column justify-content-between",children:[e.companyName&&a.jsx(C,{appLink:e.companyAppLink,className:"text-uppercase text-wrap d-block text-truncate mb-0",title:e.companyName,children:e.companyName}),a.jsx("h1",{className:"h4 mb-0",children:e.eventName})]})]}),a.jsxs("div",{className:"d-flex gap-2 mb-3",children:[!!((h=e.audiences)!=null&&h.length)&&a.jsx("div",{className:"rounded-pill border border-dark px-2",children:g()}),a.jsx("div",{className:"rounded-pill fw-semibold bg-dark text-white px-2",children:a.jsx("span",{className:"align-middle",children:t()})})]}),e.isPastLivestream&&a.jsxs("div",{className:"d-inline-block bg-light-green rounded-pill mb-3",children:[a.jsx(L,{svg:oa}),a.jsx("p",{className:"d-inline ms-1 mb-0",children:a.jsx(d,{namespace:Na,phrase:"pastEvent"})})]}),!e.isPastLivestream&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:"mb-2",children:[a.jsx(L,{svg:da,size:V.Small}),a.jsx("span",{className:"ms-1",children:l(e.startTime)})]}),a.jsxs("p",{className:"mb-2",children:[a.jsx(L,{svg:ca,size:V.Small}),a.jsx("span",{className:"ms-1",children:v(e.startTime)})]}),a.jsxs("p",{className:"mb-3",children:[a.jsx(L,{svg:ma,size:V.Small}),a.jsx("span",{className:"ms-1",children:m(e.timezone)})]})]}),e.description&&a.jsx("p",{className:"mb-3 pre-wrap text-break",dangerouslySetInnerHTML:{__html:ia.linkifyText(e.description)}})]})}const ja={createBooking(e){return{publicUrl:"/api/integrations/api/v1/bookings",url:"{gateway}/v1/events/booking",key:"streamable:create:booking",type:Se.POST,data:e}}},Sa="_logo_1uhpx_1",ya={logo:Sa},le="streamable.bookingSuccess";function La(e){var t;return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:`${ya.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`,children:a.jsx(de,{data:z.createUrl((t=e.livestream.company.logo)==null?void 0:t.url,{size:H.Small}),alt:e.livestream.company.name,preload:!0})}),a.jsxs("div",{className:"d-flex align-items-center justify-content-center mb-3 gap-1",children:[a.jsx(L,{svg:ye,className:"svg-container std text-success"}),a.jsx("h1",{className:"h3 mb-0 fw-semibold",children:a.jsx(d,{namespace:le,phrase:"booked"})})]}),a.jsx("div",{className:"my-3",children:a.jsx(ue,{companyId:e.livestream.company.id,companyName:e.livestream.company.name,eventName:e.livestream.name,audiences:e.livestream.audiences,startTime:e.livestream.startDateTime,endTime:e.livestream.endDateTime,timezone:e.livestream.timezone})}),a.jsx("p",{children:a.jsx(d,{namespace:le,phrase:"emailReminder"})})]})}const Aa="_image_e4ebg_1",ce={image:Aa},O="streamable.bookingError";function ka(e){return a.jsxs("div",{className:"d-flex flex-column justify-content-center",children:[a.jsx("div",{className:`${ce.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`,children:a.jsx("img",{className:ce.image,src:Le.General.LOST_MESSAGE_BOTTLE})}),a.jsx("h3",{className:"text-center mb-3",children:a.jsx(d,{namespace:O,phrase:"heading"})}),a.jsx("p",{className:"text-center mb-3",children:a.jsx(d,{namespace:O,phrase:"description"})}),a.jsx("button",{className:"btn btn-dark",onClick:e.onTryAgain,children:a.jsx(d,{namespace:O,phrase:"buttonLabel"})})]})}function ge(e){return a.jsx("div",{className:`${e.className}`,style:e.coverImageUrl&&{backgroundImage:`url(${z._createUrl(e.coverImageUrl,{size:H.Large})})`}})}const he="streamable.livestreamView",i=me.encloseNamespace(he),xe=p.object({firstName:p.string().required(i("firstNameRequired")),lastName:p.string().required(i("lastNameRequired")),email:p.string().email(i("emailValid")).required(i("emailRequired")),attendees:p.string().required(i("attendeesRequired"))}),Ca=xe.concat(p.object({schoolOrDistrict:p.string().required(i("schoolOrDistrictRequired")),jobTitle:p.string().required(i("jobTitleRequired")),phoneNumber:p.string().required(i("phoneNumberRequired")).matches(/^[0-9]+$/,i("phoneNumberValid"))}));function Ta(e){var y,w,D,u,o,F,I,U,_;const t=va(),[n,l]=x.useState({}),[v,m]=x.useState(!1);function g(){t.setFieldValue("schoolOrDistrict",""),t.setFieldValue("country",""),t.setFieldValue("province",""),t.setFieldValue("prospectId",""),N()}function f(c){l({...n,...c}),g()}function h(){l({}),g()}function r(c){l({...n,...c}),t.setFieldValue("schoolOrDistrict",c.schoolName),t.setFieldValue("country",c.country),t.setFieldValue("province",c.province),t.setFieldValue("prospectId",c.prospectId),N()}function b(){l({...n,prospectId:void 0,schoolName:void 0,schoolPostCode:void 0}),g()}function P(c){m(!0),t.setFieldValue("schoolOrDistrict",c),N()}function N(){window.setTimeout(()=>t.validateForm(),0)}return a.jsxs(Ae,{children:[a.jsxs("div",{className:"row my-3",children:[a.jsx("div",{className:"col-12 col-sm-6",children:a.jsx(j,{label:i("firstName"),name:"firstName",placeholder:i("firstNamePlaceholder"),value:(y=t.values)==null?void 0:y.firstName,disabled:e.isAuthenticated,showRequiredStar:!e.isAuthenticated})}),a.jsx("div",{className:"col-12 col-sm-6",children:a.jsx(j,{label:i("lastName"),name:"lastName",placeholder:i("lastNamePlaceholder"),value:(w=t.values)==null?void 0:w.lastName,disabled:e.isAuthenticated,showRequiredStar:!e.isAuthenticated})}),a.jsx("div",{className:"col-12",children:a.jsx(j,{label:i("email"),name:"email",placeholder:i("emailPlaceholder"),value:(D=t.values)==null?void 0:D.email,disabled:e.isAuthenticated&&!!e.emailAddress,showRequiredStar:!e.isAuthenticated||!e.emailAddress})}),!e.isAuthenticated&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"col-12",children:v?a.jsx(j,{label:i("schoolOrDistrict"),name:"schoolOrDistrict",value:(u=t.values)==null?void 0:u.schoolOrDistrict,showRequiredStar:!0,placeholder:i("schoolOrDistrictPlaceholder"),autoFocus:!0}):a.jsxs(a.Fragment,{children:[a.jsx(Je,{data:n,setData:f,clearData:h,labelClassName:"form-label",geoLocation:{countryCode:"US"},googleMapsApiKey:e.googleMapsApiKey,required:!0,hideOnBlur:!0}),a.jsx(Xe,{data:n,setData:r,clearData:b,disabled:!n.schoolLocality,searchUrl:e.searchProspectsUrl,onClickNoSuggestions:P,required:!0,placeholder:!n.schoolLocality&&i("schoolPlaceholder"),hideOnBlur:!0})]})}),a.jsx("div",{className:"col-12",children:a.jsx(Ze,{id:"job-title",error:((o=t.touched)==null?void 0:o.jobTitle)&&((F=t.errors)==null?void 0:F.jobTitle),countryCode:ke.US,initialValue:(I=t.values)==null?void 0:I.jobTitle,onChange:c=>t.setFieldValue("jobTitle",c,!1),labelClassName:"form-label",isTertiary:!1,required:!0})})]}),a.jsx("div",{className:"col-12 col-sm-6 col-xl-4",children:a.jsx(j,{type:"number",label:i("attendees"),name:"attendees",placeholder:i("attendeesPlaceholder"),min:1,value:(U=t.values)==null?void 0:U.attendees,showRequiredStar:!0})}),!e.isAuthenticated&&a.jsx("div",{className:"col",children:a.jsx(j,{label:i("phoneNumber"),name:"phoneNumber",placeholder:i("phoneNumberPlaceholder"),value:(_=t.values)==null?void 0:_.phoneNumber,showRequiredStar:!0})})]}),a.jsx(Ce,{type:"submit",className:"w-100",variant:"dark",showSpinner:e.showSpinner,disabled:!t.isValid,children:a.jsx(d,{namespace:he,phrase:"book"})})]})}function Pa(e){return a.jsx(pa,{initialValues:e.initialValues,validationSchema:e.isAuthenticated?xe:Ca,validateOnMount:!0,onSubmit:e.onSubmit,children:a.jsx(Ta,{emailAddress:e.emailAddress,isAuthenticated:e.isAuthenticated,showSpinner:e.showSpinner,googleMapsApiKey:e.googleMapsApiKey,searchProspectsUrl:e.searchProspectsUrl})})}const wa="_noRecording_uwnqe_1",Da="_coverImage_uwnqe_4",Fa="_popup_uwnqe_10",Ia="_page_uwnqe_15",T={noRecording:wa,coverImage:Da,popup:Fa,page:Ia},S="streamable.livestreamView",Ua=me.encloseNamespace(S);function pe(e){var h,r;const t=M.getHref(M.getCurrentAppLink()),n=t!=="/"?{redirectUrl:t}:{},l=e.origin==="newsletter",v=!e.isAuthenticated&&!l&&!e.livestream.recording,m=!e.isPastLivestream&&!e.formStage&&(e.isAuthenticated&&!e.isStudent||l),g={application:k.DEFAULT,action:A.Default.CHALLENGE,params:n},f={application:k.DASHBOARD,action:A.Dashboard.COMPANY_DASHBOARD,args:[e.livestream.company.id,ie.slugify(e.livestream.company.name)]};return a.jsxs(a.Fragment,{children:[!e.success&&!e.error&&a.jsxs(a.Fragment,{children:[a.jsx(ue,{logoUrl:(h=e.livestream.company.logo)==null?void 0:h.url,logoBgColour:(r=e.livestream.company.metadata)==null?void 0:r.colour,companyId:e.livestream.company.id,companyName:e.livestream.company.name,eventName:e.livestream.name,audiences:e.livestream.audiences,startTime:e.livestream.startDateTime,endTime:e.livestream.endDateTime,timezone:e.livestream.timezone,description:!e.formStage&&e.livestream.description,isPastLivestream:e.isPastLivestream,companyAppLink:f}),e.formStage&&a.jsx(Pa,{emailAddress:e.emailAddress,initialValues:e.initialValues,isAuthenticated:e.isAuthenticated,showSpinner:e.showSpinner,onSubmit:e.onSubmit,googleMapsApiKey:e.googleMapsApiKey,searchProspectsUrl:e.searchProspectsUrl}),m&&a.jsx("button",{className:"btn btn-dark w-100",onClick:()=>e.setFormStage(!0),children:a.jsx(d,{namespace:S,phrase:"book"})}),e.isPastLivestream&&!e.livestream.recording&&a.jsx("div",{className:`${T.noRecording} p-2 rounded`,children:a.jsx(d,{namespace:S,phrase:"noRecording"})}),e.livestream.recording&&a.jsx(C,{appLink:{application:k.VIDEOS,action:A.Videos.PLAY_VIDEO,args:[e.livestream.recording.id,ie.slugify(e.livestream.recording.name)]},children:a.jsx("button",{className:"btn btn-outline-dark w-100",children:a.jsx(d,{namespace:S,phrase:"recording"})})}),v&&a.jsxs(a.Fragment,{children:[a.jsx(C,{className:"mt-3 btn btn-dark w-100",appLink:g,children:a.jsx(d,{namespace:S,phrase:"signInButton"})}),a.jsx(C,{className:"d-flex justify-content-center align-items-center mt-3 text-info",appLink:{application:k.DEFAULT,action:A.Default.CONTACT_US_POPUP},children:a.jsx(d,{namespace:S,phrase:"contactUsLink"})})]})]}),e.success&&a.jsx(La,{livestream:e.livestream}),e.error&&a.jsx(ka,{onTryAgain:e.onTryAgain})]})}function _a(e){var n;function t(){var m;e.closePopup(),Ye.preventScrollTop();const l=re.getCurrentRoute().appLink;l.application===k.LIVESTREAMS&&l.action===A.Livestreams.LIVESTREAM&&M.trigger((m=re.getPreviousRoute())==null?void 0:m.appLink)}return a.jsxs(ze,{size:"xl",bodyClassName:"rounded-3 overflow-hidden p-0",closePopup:t,children:[a.jsx("button",{className:"btn-close position-absolute top-0 end-0 p-3",onClick:t}),a.jsxs("div",{className:"row g-0",children:[a.jsx("div",{className:"col-12 col-lg-6",children:a.jsx(ge,{className:`${T.coverImage} ${T.popup}`,coverImageUrl:(n=e.livestream.company.cover)==null?void 0:n.url})}),a.jsx("div",{className:"col-12 col-lg p-4 m-lg-2",children:a.jsx(pe,{...e})})]})]})}function Ba(e){var t;return a.jsxs("div",{className:"row g-0 px-3",children:[a.jsx("div",{className:"col-12 col-md-6 col-lg-5",children:a.jsx(ge,{className:`${T.coverImage} ${T.page} rounded`,coverImageUrl:(t=e.livestream.company.cover)==null?void 0:t.url})}),a.jsx("div",{className:"col-12 col-md px-md-3 pt-2 pt-md-0",children:a.jsx(pe,{...e})})]})}function rt(e){var G,W,Y,J,X,Z;const t=q(Me.config()),n=Te(),l=Qe(),[v,m]=x.useState(!1),[g,f]=x.useState(!1),[h,r]=x.useState(!1),[b,P]=x.useState(!1),[N,y]=x.useState({firstName:"",lastName:"",email:"",attendees:"",schoolOrDistrict:"",jobTitle:"",phoneNumber:"",country:"",province:"",prospectId:""}),{createOrUpdateProfile:w}=ea(),[D]=Pe(De,null,{storage:we.SessionStorage}),u=q(Oe.currentUser()),o=q(la.livestream(e.id)),{hasPermissions:F}=Fe(),I=F(Ie.StudentExperience),U=Ue.getDefaultMetadata({title:(G=o.data)==null?void 0:G.name,description:(W=o.data)==null?void 0:W.description,phraseContext:{phraseHandler:Ua,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:xa.getCanonicalLink({customAppLink:Be.livestream(o.data)}),allowIndexing:!0,product:_e.PRODUCT_NAME});Ee({...U,_isPopupUp:!e.fromPageLoad}),ha(o),x.useEffect(()=>{var s;!o.data||((s=o.data)==null?void 0:s.status)===ga.Published||Re.throw(new Ve)},[(Y=o.data)==null?void 0:Y.status]),x.useEffect(()=>{var s;(s=u.data)!=null&&s.isAuthenticated&&y({...N,firstName:u.data.givenName,lastName:u.data.familyName,email:u.data.email})},[(J=u.data)==null?void 0:J.isAuthenticated]);async function _(s){var Q,ee,ae;try{if(P(!0),y(s),await n(ja.createBooking({eventId:o.data.id,eventType:"Livestream",firstName:s.firstName,lastName:s.lastName,email:s.email,attendees:s.attendees,status:1})),$(se.Complete),!((Q=u.data)!=null&&Q.isAuthenticated)){const E=await n(oe.checkEmail(s.email));let te;if(s.prospectId){const R=await n(oe.prospectLookups(s.prospectId));te=(ee=R==null?void 0:R.find(be=>be.type==="crm_id"))==null?void 0:ee.externalId}w({email:s.email,firstName:s.firstName,lastName:s.lastName,phone:s.phoneNumber,countryCode:s.country});const fe={email:s.email,firstName:s.firstName,lastName:s.lastName,phone:s.phoneNumber,custom:{accountAddress:s!=null&&s.province?{countryCode:s==null?void 0:s.country,province:aa.parseProvince((s==null?void 0:s.province)||"")}:void 0,accountName:s.schoolOrDistrict,jobTitle:s.jobTitle,syncToCrm:(ae=E==null?void 0:E.users)!=null&&ae.length?void 0:!0,crmId:te||void 0}};l.logFormSubmission({eventType:We.StreamableFormEvent.LivestreamBookingFormSubmit,source:sa.LivestreamBooking,topic:ta.LivestreamBooking,user:fe,productType:"sl"})}f(!0)}catch{r(!0),m(!1)}finally{P(!1)}}function c(){r(!1),m(!0)}function ve(){m(!0),$(se.Start)}function $(s){He.logUserAction({id:o.data.id,name:o.data.name},{entity:Ge.Livestream,actionType:Ke.Submit,location:$e.LivestreamBookingForm,descriptor:e.fromPageLoad?ne.FullPage:ne.Popup,workflowPhase:s})}if(!(o.hasCompleted&&t.hasCompleted))return a.jsx(a.Fragment,{});const K={livestream:o.data,formStage:v,initialValues:N,isAuthenticated:(X=u.data)==null?void 0:X.isAuthenticated,isStudent:I,success:g,error:h,isPastLivestream:B.isBefore(o.data.endDateTime,new Date),showSpinner:b,origin:D,onSubmit:_,onTryAgain:c,setFormStage:ve,googleMapsApiKey:t.data.googleMapsApiKey,searchProspectsUrl:qe.safeUrlConcat(t.data.gatewayApiUrl,"/v1/search/prospects"),emailAddress:(Z=u.data)==null?void 0:Z.email};return e.fromPageLoad?a.jsx(Ba,{...K}):a.jsx(_a,{...K,closePopup:e.closePopup})}export{rt as LivestreamView};
|
|
2
|
+
//# sourceMappingURL=DVmtgkhY.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DVmtgkhY.chunk.js","sources":["../../../../libs/shared/src/apps/streamable-learning/components/livestream-details/LivestreamDetails.tsx","../../../../libs/shared/src/apps/streamable-learning/flight-requests/BookingRequests.ts","../../src/apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess.tsx","../../src/apps/livestreams/components/livestream-boooking-error/LivestreamBookingError.tsx","../../src/apps/livestreams/components/livestream-cover-image/LivestreamCoverImage.tsx","../../src/apps/livestreams/components/livestream-form/LivestreamForm.tsx","../../src/apps/livestreams/views/LivestreamView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Timezone, TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CalendarCheckSvg } from 'libs/shared/images/svg/objects/CalendarCheckSvg';\nimport { CalendarSvg } from 'libs/shared/images/svg/objects/CalendarSvg';\nimport { GlobeSvg } from 'libs/shared/images/svg/objects/GlobeSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { Audience, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-details.module.scss';\n\nconst namespace = 'streamable.livestreamDetails';\n\ninterface LivestreamDetailsProps {\n logoUrl?: string;\n logoBgColour?: string;\n companyId?: string;\n companyName?: string;\n companyAppLink?: Core.AppLink;\n eventName: string;\n audiences?: Audience[];\n startTime: string;\n endTime: string;\n timezone: Timezone;\n description?: string;\n isPastLivestream?: boolean;\n}\n\nexport function LivestreamDetails(props: LivestreamDetailsProps) {\n function getDuration() {\n return `${DateHelper.diffBetween(props.endTime, props.startTime, 'minutes')}m`;\n }\n\n function getTimezoneDateTime(dateTime: string): Date {\n return TimezoneHelper.convertUTCToTimezoneDate(dateTime);\n }\n\n function getTime(time: string): string {\n return DateHelper.format(getTimezoneDateTime(time), 'h:mma');\n }\n\n function getDate(date: string): string {\n return DateHelper.format(getTimezoneDateTime(date), 'Do MMMM');\n }\n\n function getDisplayTimezone(timezone: Timezone): string {\n return TIMEZONES_US[timezone]?.name;\n }\n\n function getMergedAudienceName(): string {\n return AudienceHelper.getMergedPresentationAudienceString(props.audiences as PresentationAudience[])?.name;\n }\n\n const logoFallbackBgClassName = getBgColorClass(props.companyName, BG_COLOUR_CLASS_NAMES);\n\n return (\n <>\n <div className='d-flex align-items-center mb-2'>\n {props.logoUrl && (\n <AppLink\n appLink={props.companyAppLink}\n >\n <div className={`${styles.logoContainer} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background me-2`}>\n <BaseImage\n data={ImageHelper.createUrl(props.logoUrl, { size: ImageSize.Small })}\n alt={props.companyName}\n className={!props.logoBgColour && logoFallbackBgClassName}\n imageStyle={{\n backgroundColor: props.logoBgColour\n }}\n preload\n />\n </div>\n </AppLink>\n\n )}\n <div className='d-flex flex-column justify-content-between'>\n {props.companyName &&\n <AppLink\n appLink={props.companyAppLink}\n className='text-uppercase text-wrap d-block text-truncate mb-0'\n title={props.companyName}\n >\n {props.companyName}\n </AppLink>\n }\n <h1 className='h4 mb-0'>{props.eventName}</h1>\n </div>\n </div>\n\n <div className='d-flex gap-2 mb-3'>\n {!!props.audiences?.length && (\n <div className='rounded-pill border border-dark px-2'>\n {getMergedAudienceName()}\n </div>\n )}\n <div className='rounded-pill fw-semibold bg-dark text-white px-2'>\n <span className='align-middle'>{getDuration()}</span>\n </div>\n </div>\n\n {props.isPastLivestream && (\n <div className='d-inline-block bg-light-green rounded-pill mb-3'>\n <SvgContainer svg={CalendarCheckSvg} />\n <p className='d-inline ms-1 mb-0'><Text namespace={namespace} phrase='pastEvent' /></p>\n </div>\n )}\n\n {!props.isPastLivestream && (\n <>\n <p className='mb-2'>\n <SvgContainer svg={TimerSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getTime(props.startTime)}</span>\n </p>\n <p className='mb-2'>\n <SvgContainer svg={CalendarSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDate(props.startTime)}</span>\n </p>\n <p className='mb-3'>\n <SvgContainer svg={GlobeSvg} size={SvgContainerSize.Small} />\n <span className='ms-1'>{getDisplayTimezone(props.timezone)}</span>\n </p>\n </>\n )}\n\n {props.description && <p className='mb-3 pre-wrap text-break' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.description) }} />}\n </>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CreateBookingRequest } from 'libs/shared/apps/streamable-learning/requests/CreateBookingRequest';\n\nexport const BookingRequests = {\n createBooking(data: CreateBookingRequest): Flight.PublicRequest {\n return {\n publicUrl: '/api/integrations/api/v1/bookings',\n url: '{gateway}/v1/events/booking',\n key: `streamable:create:booking`,\n type: HttpVerbs.POST,\n data\n };\n }\n};","import React from 'react';\n\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { Livestream } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './livestream-booking-success.module.scss';\n\nconst namespace = 'streamable.bookingSuccess';\n\ninterface LivestreamBookingSuccessProps {\n livestream: Livestream;\n}\n\nexport function LivestreamBookingSuccess(props: LivestreamBookingSuccessProps) {\n return (\n <>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <BaseImage\n data={ImageHelper.createUrl(props.livestream.company.logo?.url, { size: ImageSize.Small })}\n alt={props.livestream.company.name}\n preload\n />\n </div>\n <div className='d-flex align-items-center justify-content-center mb-3 gap-1'>\n <SvgContainer svg={CheckCircleSvg} className='svg-container std text-success' />\n <h1 className='h3 mb-0 fw-semibold'><Text namespace={namespace} phrase='booked' /></h1>\n </div>\n <div className='my-3'>\n <LivestreamDetails\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n />\n </div>\n <p><Text namespace={namespace} phrase='emailReminder' /></p>\n </>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './livestream-booking-error.module.scss';\n\nconst namespace = 'streamable.bookingError';\n\ninterface LivestreamBookingErrorProps {\n onTryAgain: () => void\n}\n\nexport function LivestreamBookingError(props: LivestreamBookingErrorProps) {\n return (\n <div className='d-flex flex-column justify-content-center'>\n <div\n className={`${styles.logo} rounded-circle flex-shrink-0 overflow-hidden partial-loading-background mx-auto mb-3`}\n >\n <img\n className={styles.image}\n src={ImageUrls.General.LOST_MESSAGE_BOTTLE}\n />\n </div>\n <h3 className='text-center mb-3'><Text namespace={namespace} phrase='heading' /></h3>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='description' /></p>\n <button className='btn btn-dark' onClick={props.onTryAgain}><Text namespace={namespace} phrase='buttonLabel' /></button>\n </div>\n );\n}","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface LivestreamCoverImageProps {\n coverImageUrl: string;\n className?: string;\n}\n\nexport function LivestreamCoverImage(props: LivestreamCoverImageProps) {\n return (\n <div\n className={`${props.className}`}\n style={props.coverImageUrl && { backgroundImage: `url(${ImageHelper._createUrl(props.coverImageUrl, { size: ImageSize.Large })})` }}\n />\n );\n}","import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { SearchLocalityInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchLocalityInput';\nimport { SearchSchoolInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchSchoolInput';\nimport { SearchSchoolData } from 'libs/shared/apps/sign-up/interfaces/SearchSchoolData';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst baseValidationSchema = Yup.object({\n firstName: Yup.string().required(getPhrase('firstNameRequired')),\n lastName: Yup.string().required(getPhrase('lastNameRequired')),\n email: Yup.string().email(getPhrase('emailValid')).required(getPhrase('emailRequired')),\n attendees: Yup.string().required(getPhrase('attendeesRequired'))\n});\n\nconst guestValidationSchema = baseValidationSchema.concat(Yup.object({\n schoolOrDistrict: Yup.string().required(getPhrase('schoolOrDistrictRequired')),\n jobTitle: Yup.string().required(getPhrase('jobTitleRequired')),\n phoneNumber: Yup.string().required(getPhrase('phoneNumberRequired')).matches(/^[0-9]+$/, getPhrase('phoneNumberValid'))\n}));\n\ninterface LivestreamFormFieldsProps {\n isAuthenticated: boolean;\n showSpinner: boolean;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamFormFields(props: LivestreamFormFieldsProps) {\n const formikProps = useFormikContextWrapper<LivestreamBookingFormValues>();\n\n const [ searchSchoolData, setSearchSchoolData ] = React.useState<SearchSchoolData>({});\n const [ cantFindSchool, setCantFindSchool ] = React.useState<boolean>(false);\n\n function clearFormikSchoolData() {\n formikProps.setFieldValue('schoolOrDistrict', '');\n formikProps.setFieldValue('country', '');\n formikProps.setFieldValue('province', '');\n formikProps.setFieldValue('prospectId', '');\n triggerValidation();\n }\n\n function setLocalityData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n clearFormikSchoolData();\n }\n\n function clearLocalityData(): void {\n setSearchSchoolData({});\n clearFormikSchoolData();\n }\n\n function setSchoolData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n\n formikProps.setFieldValue('schoolOrDistrict', data.schoolName);\n formikProps.setFieldValue('country', data.country);\n formikProps.setFieldValue('province', data.province);\n formikProps.setFieldValue('prospectId', data.prospectId);\n\n triggerValidation();\n }\n\n function clearSchooldata(): void {\n setSearchSchoolData({\n ...searchSchoolData,\n prospectId: undefined,\n schoolName: undefined,\n schoolPostCode: undefined\n });\n clearFormikSchoolData();\n }\n\n function onClickNoSuggestions(name: string) {\n setCantFindSchool(true);\n\n formikProps.setFieldValue('schoolOrDistrict', name);\n\n triggerValidation();\n }\n\n function triggerValidation() {\n // For whatever reason, forcing the form the validate needs to happen in a setTimeout to work\n // I genuinely have no idea why - Sha\n window.setTimeout(() => formikProps.validateForm(), 0);\n }\n\n return (\n <Form>\n <div className='row my-3'>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('firstName')}\n name='firstName'\n placeholder={getPhrase('firstNamePlaceholder')}\n value={formikProps.values?.firstName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12 col-sm-6'>\n <FormField\n label={getPhrase('lastName')}\n name='lastName'\n placeholder={getPhrase('lastNamePlaceholder')}\n value={formikProps.values?.lastName}\n disabled={props.isAuthenticated}\n showRequiredStar={!props.isAuthenticated}\n />\n </div>\n <div className='col-12'>\n <FormField\n label={getPhrase('email')}\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n value={formikProps.values?.email}\n disabled={props.isAuthenticated && !!props.emailAddress}\n showRequiredStar={!props.isAuthenticated || !props.emailAddress}\n />\n </div>\n {!props.isAuthenticated &&\n <>\n <div className='col-12'>\n {!cantFindSchool ?\n <>\n <SearchLocalityInput\n data={searchSchoolData}\n setData={setLocalityData}\n clearData={clearLocalityData}\n labelClassName='form-label'\n geoLocation={{ countryCode: 'US' }}\n googleMapsApiKey={props.googleMapsApiKey}\n required\n hideOnBlur\n />\n <SearchSchoolInput\n data={searchSchoolData}\n setData={setSchoolData}\n clearData={clearSchooldata}\n disabled={!searchSchoolData.schoolLocality}\n searchUrl={props.searchProspectsUrl}\n onClickNoSuggestions={onClickNoSuggestions}\n required\n placeholder={!searchSchoolData.schoolLocality && getPhrase('schoolPlaceholder')}\n hideOnBlur\n />\n </> :\n <FormField\n label={getPhrase('schoolOrDistrict')}\n name='schoolOrDistrict'\n value={formikProps.values?.schoolOrDistrict}\n showRequiredStar={true}\n placeholder={getPhrase('schoolOrDistrictPlaceholder')}\n autoFocus\n />\n }\n </div>\n <div className='col-12'>\n <JobTitleInput\n id='job-title'\n error={formikProps.touched?.jobTitle && formikProps.errors?.jobTitle}\n countryCode={CountryCode.US}\n initialValue={formikProps.values?.jobTitle}\n onChange={jobTitle => formikProps.setFieldValue('jobTitle', jobTitle, false)}\n labelClassName='form-label'\n isTertiary={false}\n required\n />\n </div>\n </>\n }\n <div className='col-12 col-sm-6 col-xl-4'>\n <FormField\n type='number'\n label={getPhrase('attendees')}\n name='attendees'\n placeholder={getPhrase('attendeesPlaceholder')}\n min={1}\n value={formikProps.values?.attendees}\n showRequiredStar\n />\n </div>\n {!props.isAuthenticated && (\n <div className='col'>\n <FormField\n label={getPhrase('phoneNumber')}\n name='phoneNumber'\n placeholder={getPhrase('phoneNumberPlaceholder')}\n value={formikProps.values?.phoneNumber}\n showRequiredStar\n />\n </div>\n )}\n </div>\n <SpinnerButton type='submit' className='w-100' variant='dark' showSpinner={props.showSpinner} disabled={!formikProps.isValid} >\n <Text namespace={namespace} phrase='book' />\n </SpinnerButton>\n </Form>\n );\n}\n\nexport interface LivestreamBookingFormValues {\n firstName: string;\n lastName: string;\n email: string;\n attendees: string;\n schoolOrDistrict: string;\n jobTitle: string;\n phoneNumber: string;\n country: string;\n province: string;\n prospectId: string;\n}\n\ninterface LivestreamFormProps {\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n showSpinner: boolean;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nexport function LivestreamForm(props: LivestreamFormProps) {\n return (\n <FormWrapper<LivestreamBookingFormValues>\n initialValues={props.initialValues}\n validationSchema={props.isAuthenticated ? baseValidationSchema : guestValidationSchema}\n validateOnMount={true}\n onSubmit={props.onSubmit}>\n <LivestreamFormFields\n emailAddress={props.emailAddress}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n </FormWrapper>\n );\n}","import React from 'react';\nimport { type BrazeUser, StreamableFormEvent } from '@clickview/braze-client';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LivestreamBookingDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { LivestreamDetails } from 'libs/shared/apps/streamable-learning/components/livestream-details/LivestreamDetails';\nimport { BookingRequests } from 'libs/shared/apps/streamable-learning/flight-requests/BookingRequests';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Livestream } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { BrazeSource } from 'shared/enums/BrazeSource';\nimport { BrazeTopic } from 'shared/enums/BrazeTopic';\nimport { PUBLIC_ORIGIN_VIEW_MODEL_KEY, PublicOriginViewModel } from 'shared/filters/OriginFilter';\nimport { LivestreamRequests } from 'shared/flight-requests/LivestreamRequests';\nimport { useStreamableBrazeClientService } from 'shared/hooks/useStreamableBrazeClientService';\nimport { StreamableAppLinks } from 'shared/utils/StreamableAppLinks';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { LivestreamBookingSuccess } from 'apps/livestreams/components/livestream-booking-success/LivestreamBookingSuccess';\nimport { LivestreamBookingError } from 'apps/livestreams/components/livestream-boooking-error/LivestreamBookingError';\nimport { LivestreamCoverImage } from 'apps/livestreams/components/livestream-cover-image/LivestreamCoverImage';\nimport { LivestreamBookingFormValues, LivestreamForm } from 'apps/livestreams/components/livestream-form/LivestreamForm';\n\nimport styles from './livestream.module.scss';\n\nconst namespace = 'streamable.livestreamView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LivestreamBookingProps {\n livestream: Livestream;\n formStage: boolean;\n initialValues: LivestreamBookingFormValues;\n isAuthenticated: boolean;\n isStudent: boolean;\n success: boolean;\n error: boolean;\n isPastLivestream: boolean;\n showSpinner: boolean;\n origin?: PublicOriginViewModel;\n onSubmit: (values: LivestreamBookingFormValues) => void;\n onTryAgain: () => void;\n setFormStage: React.Dispatch<React.SetStateAction<boolean>>\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n emailAddress: string;\n}\n\nfunction LivestreamContent(props: LivestreamBookingProps) {\n const redirectUrl = Core.AppLinkHelper.getHref(Core.AppLinkHelper.getCurrentAppLink());\n const signInParams = redirectUrl !== '/' ? { redirectUrl } : {};\n const originNewsletter = props.origin === 'newsletter';\n const showSignInLink = !props.isAuthenticated && !originNewsletter && !props.livestream.recording;\n const showBook =\n !props.isPastLivestream &&\n !props.formStage &&\n ((props.isAuthenticated && !props.isStudent) || originNewsletter);\n\n const signInLink = {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: signInParams\n };\n\n const companyAppLink = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.COMPANY_DASHBOARD,\n args: [ props.livestream.company.id, TextHelper.slugify(props.livestream.company.name) ]\n };\n\n return (\n <>\n {!props.success && !props.error && (\n <>\n <LivestreamDetails\n logoUrl={props.livestream.company.logo?.url}\n logoBgColour={props.livestream.company.metadata?.colour}\n companyId={props.livestream.company.id}\n companyName={props.livestream.company.name}\n eventName={props.livestream.name}\n audiences={props.livestream.audiences}\n startTime={props.livestream.startDateTime}\n endTime={props.livestream.endDateTime}\n timezone={props.livestream.timezone}\n description={!props.formStage && props.livestream.description}\n isPastLivestream={props.isPastLivestream}\n companyAppLink={companyAppLink}\n />\n {props.formStage && (\n <LivestreamForm\n emailAddress={props.emailAddress}\n initialValues={props.initialValues}\n isAuthenticated={props.isAuthenticated}\n showSpinner={props.showSpinner}\n onSubmit={props.onSubmit}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n )}\n {showBook && (\n <button\n className='btn btn-dark w-100'\n onClick={() => props.setFormStage(true)}\n >\n <Text namespace={namespace} phrase='book' />\n </button>\n )}\n {props.isPastLivestream && !props.livestream.recording &&\n <div className={`${styles.noRecording} p-2 rounded`}>\n <Text namespace={namespace} phrase='noRecording' />\n </div>\n }\n {props.livestream.recording &&\n <AppLink\n appLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.livestream.recording.id, TextHelper.slugify(props.livestream.recording.name) ]\n }}>\n <button className='btn btn-outline-dark w-100'><Text namespace={namespace} phrase='recording' /></button>\n </AppLink>\n }\n {showSignInLink &&\n <>\n <AppLink\n className='mt-3 btn btn-dark w-100'\n appLink={signInLink}\n >\n <Text namespace={namespace} phrase='signInButton' />\n </AppLink>\n <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CONTACT_US_POPUP\n }}\n >\n <Text namespace={namespace} phrase='contactUsLink' />\n </AppLink>\n </>\n }\n </>\n )}\n {props.success && (\n <LivestreamBookingSuccess livestream={props.livestream} />\n )}\n {props.error && (\n <LivestreamBookingError onTryAgain={props.onTryAgain} />\n )}\n </>\n );\n}\n\ninterface LivestreamPopupProps extends LivestreamBookingProps {\n closePopup: () => void;\n}\n\nfunction LivestreamPopup(props: LivestreamPopupProps) {\n function onClose() {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const isLivestreamAppLink =\n currentAppLink.application === AppChannels.LIVESTREAMS &&\n currentAppLink.action === Actions.Livestreams.LIVESTREAM;\n if (isLivestreamAppLink)\n Core.AppLinkHelper.trigger(ContextService.getPreviousRoute()?.appLink);\n }\n\n return (\n <Popup\n size='xl'\n bodyClassName='rounded-3 overflow-hidden p-0'\n closePopup={onClose}\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={onClose} />\n\n <div className={`row g-0`}>\n <div className='col-12 col-lg-6'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.popup}`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className={`col-12 col-lg p-4 m-lg-2`}>\n <LivestreamContent {...props} />\n </div>\n </div>\n </Popup>\n );\n}\n\ninterface LivestreamPageProps extends LivestreamBookingProps { }\n\nfunction LivestreamPage(props: LivestreamPageProps) {\n return (\n <div className={`row g-0 px-3`}>\n <div className='col-12 col-md-6 col-lg-5'>\n <LivestreamCoverImage className={`${styles.coverImage} ${styles.page} rounded`} coverImageUrl={props.livestream.company.cover?.url} />\n </div>\n <div className={`col-12 col-md px-md-3 pt-2 pt-md-0`}>\n <LivestreamContent {...props} />\n </div>\n </div>\n );\n}\n\ninterface LivestreamViewProps extends PopupProps {\n id: string;\n fromPageLoad: boolean;\n}\n\nexport function LivestreamView(props: LivestreamViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const fetchAsync = useGetFetchAsync();\n const braze = useStreamableBrazeClientService();\n const [ formStage, _setFormStage ] = React.useState(false);\n const [ success, setSuccess ] = React.useState(false);\n const [ error, setError ] = React.useState(false);\n const [ submitting, setSubmitting ] = React.useState(false);\n const [ initialValues, setInitialValues ] = React.useState<LivestreamBookingFormValues>({\n firstName: '',\n lastName: '',\n email: '',\n attendees: '',\n schoolOrDistrict: '',\n jobTitle: '',\n phoneNumber: '',\n country: '',\n province: '',\n prospectId: ''\n });\n\n const { createOrUpdateProfile } = useProfileApiClient();\n\n const [origin] = useViewModel<PublicOriginViewModel>(\n PUBLIC_ORIGIN_VIEW_MODEL_KEY,\n null,\n { storage: StorageType.SessionStorage }\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const livestream = Flight.useBasicFetch<Livestream>(LivestreamRequests.livestream(props.id));\n\n const { hasPermissions } = usePermissions();\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const pageMetadata = PageMetadataHelper.getDefaultMetadata({\n title: livestream.data?.name,\n description: livestream.data?.description,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n customAppLink: StreamableAppLinks.livestream(livestream.data)\n }),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n });\n\n useSetPageMetadata({\n ...pageMetadata,\n _isPopupUp: !props.fromPageLoad\n });\n\n useHandleObjectError(livestream);\n\n React.useEffect(() => {\n if (!livestream.data || livestream.data?.status === CurationStatusString.Published) return;\n\n Core.ErrorHelper.throw(new NotFoundError());\n }, [livestream.data?.status]);\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n\n setInitialValues({\n ...initialValues,\n firstName: currentUser.data.givenName,\n lastName: currentUser.data.familyName,\n email: currentUser.data.email\n });\n }, [currentUser.data?.isAuthenticated]);\n\n async function onSubmit(values: LivestreamBookingFormValues) {\n try {\n setSubmitting(true);\n setInitialValues(values);\n\n await fetchAsync(BookingRequests.createBooking({\n eventId: livestream.data.id,\n eventType: 'Livestream',\n firstName: values.firstName,\n lastName: values.lastName,\n email: values.email,\n attendees: values.attendees,\n status: 1\n }));\n\n logEvent(WorkflowPhase.Complete);\n\n if (!currentUser.data?.isAuthenticated) {\n const checkEmail = await fetchAsync<BrazeCheckEmailResponse>(BrazeRequests.checkEmail(values.email));\n\n let crmId: string;\n if (values.prospectId) {\n const prospectLookups = await fetchAsync<ProspectLookup[]>(BrazeRequests.prospectLookups(values.prospectId));\n crmId = prospectLookups?.find(l => l.type === 'crm_id')?.externalId;\n }\n\n createOrUpdateProfile({\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n countryCode: values.country\n });\n\n const brazeUser: BrazeUser = {\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n custom: {\n accountAddress: values?.province ? {\n countryCode: values?.country,\n province: BrazeHelper.parseProvince(values?.province || '')\n } : undefined,\n accountName: values.schoolOrDistrict,\n jobTitle: values.jobTitle,\n syncToCrm: checkEmail?.users?.length ? undefined : true,\n crmId: crmId || undefined\n }\n };\n\n braze.logFormSubmission({\n eventType: StreamableFormEvent.LivestreamBookingFormSubmit,\n source: BrazeSource.LivestreamBooking,\n topic: BrazeTopic.LivestreamBooking,\n user: brazeUser,\n productType: 'sl'\n });\n }\n\n setSuccess(true);\n } catch {\n setError(true);\n _setFormStage(false);\n } finally {\n setSubmitting(false);\n }\n }\n\n function onTryAgain() {\n setError(false);\n _setFormStage(true);\n }\n\n function setFormStage() {\n _setFormStage(true);\n logEvent(WorkflowPhase.Start);\n }\n\n function logEvent(workflowPhase: WorkflowPhase) {\n AnalyticsHelper.logUserAction({\n id: livestream.data.id,\n name: livestream.data.name\n }, {\n entity: EntityType.Livestream,\n actionType: UserAction.Submit,\n location: LocationContext.LivestreamBookingForm,\n descriptor: props.fromPageLoad ?\n LivestreamBookingDescriptor.FullPage :\n LivestreamBookingDescriptor.Popup,\n workflowPhase\n });\n }\n\n const hasLoaded = (\n livestream.hasCompleted &&\n config.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n const livestreamBookingProps: LivestreamBookingProps = {\n livestream: livestream.data,\n formStage,\n initialValues,\n isAuthenticated: currentUser.data?.isAuthenticated,\n isStudent,\n success,\n error,\n isPastLivestream: DateHelper.isBefore(livestream.data.endDateTime, new Date()),\n showSpinner: submitting,\n origin,\n onSubmit,\n onTryAgain,\n setFormStage,\n googleMapsApiKey: config.data.googleMapsApiKey,\n searchProspectsUrl: UrlHelper.safeUrlConcat(config.data.gatewayApiUrl, '/v1/search/prospects'),\n emailAddress: currentUser.data?.email\n };\n\n if (props.fromPageLoad) {\n return (\n <LivestreamPage {...livestreamBookingProps} />\n );\n }\n\n return <LivestreamPopup {...livestreamBookingProps} closePopup={props.closePopup} />;\n}"],"names":["namespace","LivestreamDetails","props","getDuration","DateHelper","getTimezoneDateTime","dateTime","TimezoneHelper","getTime","time","getDate","date","getDisplayTimezone","timezone","_a","TIMEZONES_US","getMergedAudienceName","AudienceHelper","logoFallbackBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","jsxs","Fragment","jsx","AppLink","styles","BaseImage","ImageHelper","ImageSize","SvgContainer","CalendarCheckSvg","Text","TimerSvg","SvgContainerSize","CalendarSvg","GlobeSvg","LinkifyHelper","BookingRequests","data","HttpVerbs","LivestreamBookingSuccess","CheckCircleSvg","LivestreamBookingError","ImageUrls","LivestreamCoverImage","getPhrase","LanguageService","baseValidationSchema","Yup.object","Yup.string","guestValidationSchema","LivestreamFormFields","formikProps","useFormikContextWrapper","searchSchoolData","setSearchSchoolData","React","cantFindSchool","setCantFindSchool","clearFormikSchoolData","triggerValidation","setLocalityData","clearLocalityData","setSchoolData","clearSchooldata","onClickNoSuggestions","name","Form","FormField","_b","_c","_d","SearchLocalityInput","SearchSchoolInput","JobTitleInput","_e","_f","CountryCode","_g","jobTitle","_h","_i","SpinnerButton","LivestreamForm","FormWrapper","LivestreamContent","redirectUrl","Core.AppLinkHelper","signInParams","originNewsletter","showSignInLink","showBook","signInLink","AppChannels","Actions","companyAppLink","TextHelper","LivestreamPopup","onClose","ScrollHelper","currentAppLink","ContextService","Popup","LivestreamPage","LivestreamView","config","Flight.useBasicFetch","ConfigRequests","fetchAsync","useGetFetchAsync","braze","useStreamableBrazeClientService","formStage","_setFormStage","success","setSuccess","error","setError","submitting","setSubmitting","initialValues","setInitialValues","createOrUpdateProfile","useProfileApiClient","origin","useViewModel","PUBLIC_ORIGIN_VIEW_MODEL_KEY","StorageType","currentUser","UserRequests","livestream","LivestreamRequests","hasPermissions","usePermissions","isStudent","PermissionName","pageMetadata","PageMetadataHelper","SeoHelper","StreamableAppLinks","StreamableConstants","useSetPageMetadata","useHandleObjectError","CurationStatusString","Core.ErrorHelper","NotFoundError","onSubmit","values","logEvent","WorkflowPhase","checkEmail","BrazeRequests","crmId","prospectLookups","l","brazeUser","BrazeHelper","StreamableFormEvent","BrazeSource","BrazeTopic","onTryAgain","setFormStage","workflowPhase","AnalyticsHelper","EntityType","UserAction","LocationContext","LivestreamBookingDescriptor","livestreamBookingProps","UrlHelper"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ai as m,aO as B,cE as d,cF as R,j as $,aQ as j}from"./app-DiXzpOyg.js";const w=m.forwardRef(({bsPrefix:c,className:i,as:n="div",...o},l)=>{const t=B(c,"row"),f=d(),p=R(),u=`${t}-cols`,r=[];return f.forEach(s=>{const e=o[s];delete o[s];let a;e!=null&&typeof e=="object"?{cols:a}=e:a=e;const x=s!==p?`-${s}`:"";a!=null&&r.push(`${u}${x}-${a}`)}),$.jsx(n,{ref:l,...o,className:j(i,t,...r)})});w.displayName="Row";export{w as R};
|
|
2
|
+
//# sourceMappingURL=DWkg1qc2.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DWkg1qc2.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames"],"mappings":"8EAMK,MAACA,EAAmBC,EAAAA,WAAiB,CAAC,CACzC,SAAAC,EACA,UAAAC,EAEA,GAAIC,EAAY,MAChB,GAAGC,CACL,EAAGC,IAAQ,CACT,MAAMC,EAAoBC,EAAmBN,EAAU,KAAK,EACtDO,EAAcC,EAAuB,EACrCC,EAAgBC,EAAyB,EACzCC,EAAa,GAAGN,CAAiB,QACjCO,EAAU,CAAA,EAChB,OAAAL,EAAY,QAAQM,GAAY,CAC9B,MAAMC,EAAYX,EAAMU,CAAQ,EAChC,OAAOV,EAAMU,CAAQ,EACrB,IAAIE,EACAD,GAAa,MAAQ,OAAOA,GAAc,SAC3C,CACC,KAAAC,CACR,EAAUD,EAEJC,EAAOD,EAET,MAAME,EAAQH,IAAaJ,EAAgB,IAAII,CAAQ,GAAK,GACxDE,GAAQ,MAAMH,EAAQ,KAAK,GAAGD,CAAU,GAAGK,CAAK,IAAID,CAAI,EAAE,CAChE,CAAC,EACmBE,EAAAA,IAAKf,EAAW,CAClC,IAAKE,EACL,GAAGD,EACH,UAAWe,EAAWjB,EAAWI,EAAmB,GAAGO,CAAO,CAClE,CAAG,CACH,CAAC,EACDd,EAAI,YAAc","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as n,R as h,av as C,d as $,b7 as P,k as E,i as I,ae as W,c as A,z as T,F as O,T as w,a5 as x,a6 as p,bc as z}from"./app-DiXzpOyg.js";const D="_audience_1o527_1",M="_area_1o527_6",R="_code_1o527_11",B="_description_1o527_16",b={audience:D,area:M,code:R,description:B},L=()=>n.jsxs(n.Fragment,{children:[n.jsx("div",{className:`partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ${b.audience}`}),n.jsxs("div",{children:[n.jsx("div",{className:`partial-loading-background mb-1 ${b.area}`}),n.jsxs("div",{className:"mb-2 d-flex",children:[n.jsx("div",{className:`me-1 align-self-start ${b.code}`,children:n.jsx("div",{className:"partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100"})}),n.jsx("div",{className:`partial-loading-background ${b.description}`})]})]})]});function F(){return n.jsxs("div",{children:[n.jsx("div",{className:"mb-3",children:n.jsx(L,{})}),n.jsx("div",{className:"mb-3",children:n.jsx(L,{})}),n.jsx("div",{children:n.jsx(L,{})})]})}var o=(e=>(e.Subject="CurriculumSubject",e.Audience="CurriculumAudience",e.Area="CurriculumArea",e.Leaf="CurriculumLeaf",e))(o||{});const H="_curriculumSubject_snbcs_1",K="_curriculumSet_snbcs_2",q="_areaLeafSet_snbcs_3",U="_leafDescriptionOnly_snbcs_9",G="_tag_snbcs_12",Q="_cover_snbcs_17",V="_selected_snbcs_28",X="_codeAppLink_snbcs_34",u={curriculumSubject:H,curriculumSet:K,areaLeafSet:q,leafDescriptionOnly:U,tag:G,cover:Q,selected:V,codeAppLink:X},_=h.forwardRef((e,t)=>{let c=C("text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold bg-white border",e.faded?"border-secondary text-secondary":"border-dark",e.className);if(e.appLink)return c=C(c,`text-decoration-none ${u.codeAppLink}`),n.jsx($,{appLink:e.appLink,analyticsData:{id:e.id,code:e.code,description:e.description},analyticsOptions:{location:e.locationContext,entity:I.CurriculumCode,actionType:E.Click,descriptor:P.Search},className:c,ref:t,children:e.code});const r=e.as||"div";return n.jsx(r,{className:c,ref:t,children:e.code})}),J="shared.curriculumLinks",Y=A.encloseNamespace(J);function Z(e){var c;const{data:t}=e;return n.jsxs(W,{className:`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${u.tag} ${e.selected?u.selected:""}`,onClick:()=>e.onChangeCurriculum(t.id.toString()),"aria-label":`${Y("ariaFilter")} ${t.name}`,children:[((c=t.cover)==null?void 0:c.url)&&n.jsx("div",{className:`bg-white ${u.cover} rounded-circle border`,children:n.jsx("img",{src:T.createUrl(t.cover.url,{size:O.Small}),alt:t.name,className:"rounded-circle"})}),n.jsx("div",{className:"ms-2",children:t.name})]})}const ee=/(.*)\s\((.*)?\)/i,k="shared.curriculumLinks",ne="text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold";function te(e){var r,l;const t=h.useRef(null);if(h.useEffect(()=>{if(!t.current||!e.trySetMaxCodeWidth)return;const{width:a}=t.current.getBoundingClientRect();e.trySetMaxCodeWidth(a)},[t.current]),!e.code&&!e.description)return n.jsx(n.Fragment,{});if(e.code&&e.description)return n.jsxs("div",{className:"d-flex",children:[n.jsx("div",{className:"me-2 align-self-start",style:{minWidth:e.codeWidth?`${e.codeWidth}px`:"auto"},children:n.jsx(_,{ref:t,id:e.id,code:e.code,description:e.description,appLink:(r=e.getCodeAppLink)==null?void 0:r.call(e,e.code,!0),locationContext:e.locationContext})}),n.jsx("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.description}})]});if(!e.code&&e.uiContainsCodes)return n.jsxs("div",{className:"d-flex",children:[n.jsx("div",{className:"me-2 align-self-start",style:{minWidth:e.codeWidth?`${e.codeWidth}px`:"auto"},children:n.jsx(_,{ref:t,id:e.id,code:A.getPhrase(k,"noCode"),description:e.description,locationContext:e.locationContext,faded:!0})}),n.jsx("p",{className:"m-0 align-self-center",dangerouslySetInnerHTML:{__html:e.description}})]});const c=e.code||e.description;return n.jsxs("div",{className:"d-flex",children:[n.jsx("div",{className:"ms-2 me-1",children:"•"}),n.jsx($,{appLink:(l=e.getCodeAppLink)==null?void 0:l.call(e,c,!1),children:n.jsx("p",{className:"mb-0",dangerouslySetInnerHTML:{__html:c}})})]})}function se(e){const t={};let c=!1;e.linkSet.areasAndLeaves.forEach(a=>{const s=a[o.Area].map(i=>i.name).join(" - ");if(t[s]){a[o.Leaf].forEach(i=>{t[s].find(m=>m.name===i.name)||(t[s].push(i),i.name&&(c=!0))});return}t[s]=a[o.Leaf]});function r(){const a=e.linkSet[o.Audience].name,s=e.linkSet[o.Subject].name,i=a.match(ee);return i?`${i[1]} • ${i[2]} • ${s}`:`${a} • ${s}`}function l(a){const s="mb-2";return!a.name&&!c?s+" ms-4 "+u.leafDescriptionOnly:s}return n.jsxs(n.Fragment,{children:[n.jsx("h3",{className:`${ne} text-white bg-ultramarine fw-normal me-1 mb-2`,children:r()}),n.jsx("div",{className:`me-2 ${u.curriculumSubject}`,children:Object.keys(t).map((a,s)=>n.jsxs("div",{className:u.areaLeafSet,children:[a&&n.jsx("h4",{className:"mb-1 font-size-normal",children:a}),n.jsx("ul",{className:"list-unstyled",children:t[a].map(i=>n.jsx("li",{className:l(i),children:n.jsx(te,{id:i.id,code:i.name,description:i.description,codeWidth:e.codeWidth,trySetMaxCodeWidth:e.trySetMaxCodeWidth,uiContainsCodes:c,getCodeAppLink:e.getCodeAppLink,locationContext:e.locationContext})},i.id))})]},s))})]})}function ie(e){const[t,c]=h.useState(0),r=!e.curriculumLinks.length&&e.mappedCurriculums.length>0;function l(s){c(i=>i>=s?i:s)}const a=h.useMemo(()=>{var i;const s={};return(i=e.curriculumLinks)==null||i.forEach(m=>{let y=null,j=null;const v=[],g=[];if(m.forEach(f=>{switch(f.type){case o.Subject:y=f;break;case o.Audience:j=f;break;case o.Area:v.push(f);break;case o.Leaf:g.push(f);break}}),!y||!j)return;const S=`${y.id}:${j.id}`;if(s[S]){s[S].areasAndLeaves.push({[o.Area]:v,[o.Leaf]:g});return}s[S]={[o.Subject]:y,[o.Audience]:j,areasAndLeaves:[{[o.Area]:v,[o.Leaf]:g}]}}),s},[e.curriculumLinks]);return!e.hasCompleted||e.isFetching?n.jsx(F,{}):r?n.jsxs("div",{children:[n.jsx("div",{className:"mb-3",children:n.jsx(w,{namespace:k,phrase:"currentEmpty"})}),n.jsx("div",{className:"mb-3",children:n.jsx(w,{namespace:k,phrase:"currentEmptyInfo"})}),n.jsx("ul",{className:"list-unstyled mb-n2 d-flex flex-wrap",children:e.mappedCurriculums.map(s=>n.jsx("li",{className:"mb-2 me-2",children:n.jsx(Z,{data:s,onChangeCurriculum:e.onChangeCurriculum,selected:!1})},s.id))})]}):n.jsx("ul",{className:"list-unstyled m-0",children:Object.keys(a).map((s,i)=>n.jsx("li",{className:u.curriculumSet,children:n.jsx(se,{linkSet:a[s],trySetMaxCodeWidth:l,codeWidth:t,getCodeAppLink:e.getCodeAppLink,locationContext:e.locationContext})},`linkset-${i}`))})}const N=z.CLASSIFICATION_COLLECTION,d={allSubjectPreferences:()=>`{gateway}/v1/users/me/classifications/preferences?query=${N}&type=subject`,mySubjectPreferences:()=>`{gateway}/v1/users/me/classifications/following?query=${N}`,followSubjects:()=>"{gateway}/v1/users/me/classifications/following",unfollowSubjects:e=>p.urlBuilder("{gateway}/v1/users/me/classifications/following",{id:e}),allLevelPreferences:()=>"{gateway}/v1/users/me/audiences?type=subject",myLevelPreferences:()=>"{gateway}/v1/users/me/audiences/following",followLevels:()=>"{gateway}/v1/users/me/audiences/following",unfollowLevels:e=>p.urlBuilder("{gateway}/v1/users/me/audiences/following",{id:e}),getCurrentPresentations:e=>`{gateway}/v1/users/me/presentations${e?`?type=${e}`:""}`,getAvailablePresentations:e=>`{gateway}/v1/users/me/presentations/available${e?`?type=${e}`:""}`,setPresentation:e=>`{gateway}/v1/users/me/presentations/${e}`},ce={availablePresentations(e){return{url:d.getAvailablePresentations(e),key:`available:presentations:${e}`,normalizeOptions:{namespace:"presentation"}}},setPresentation(e,t,c,r){return{url:d.setPresentation(e.id),key:`set:${t}:presentation`,type:x.POST,data:{},normalizeOptions:{namespace:"presentation"},invalidationKeys:[`current:presentation:${t.toLocaleLowerCase()}`,"subject:preference:options","my:subject:preferences","level:preference:options","my:level:preferences","classifications","presentation:audiences","widgets:v3","content:update:videos","content:updates"],success:c,error:r}},allSubjectPreferences(){return{url:d.allSubjectPreferences(),key:"subject:preference:options"}},mySubjectPreferences(e){return{url:d.mySubjectPreferences(),key:"my:subject:preferences",normalize:!1,success:e}},followSubjects(e,t,c,r){return{url:d.followSubjects(),key:"follow:subjects",data:e,type:x.POST,success:t,error:c,always:r,invalidationKeys:[...e.map(l=>`classification:${l}`),"my:subject:preferences","classifications","content:updates"]}},unfollowSubjects(e,t,c,r){return{url:d.unfollowSubjects(e),key:"unfollow:subjects",type:x.DELETE,success:t,error:c,always:r,invalidationKeys:[...e.map(l=>`classification:${l}`),"my:subject:preferences","classifications","content:updates"]}},allLevelPreferences(){return{url:d.allLevelPreferences(),key:"level:preference:options",normalize:!1}},myLevelPreferences(e){return{url:d.myLevelPreferences(),key:"my:level:preferences",normalizeOptions:{idAttribute:"masterId"},success:e}},followLevels(e,t,c,r){return{url:d.followLevels(),key:"follow:levels",data:e.map(l=>l.masterId),normalize:!1,updateState:{keys:"my:level:preferences",updateData:l=>{const a=l["my:level:preferences"]??[];return e.forEach(s=>{a.find(i=>i.masterId===s.masterId)||a.push(s)}),{"my:level:preferences":a}}},type:x.POST,success:t,error:c,always:r}},unfollowLevels(e,t,c,r){return{url:d.unfollowLevels(e.map(l=>l.masterId)),key:"unfollow:levels",normalize:!1,updateState:{keys:"my:level:preferences",updateData:l=>{let a=l["my:level:preferences"]??[];return e.forEach(s=>{if(!a.find(m=>m.masterId===s.masterId))return;const i=a.findIndex(m=>m.masterId===s.masterId);a=[...a.slice(0,i),...a.slice(i+1)]}),{"my:level:preferences":a}}},type:x.DELETE,success:t,error:c,always:r}}};export{te as C,ce as P,o as a,ie as b};
|
|
2
|
+
//# sourceMappingURL=D_nzH8Cw.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"D_nzH8Cw.chunk.js","sources":["../../../../libs/shared/src/components/curriculum-links/partial-loading/PartialCurriculumLinks.tsx","../../../../libs/shared/src/enums/CurriculumType.ts","../../../../libs/shared/src/components/curriculum-links/CurriculumCodeTag.tsx","../../../../libs/shared/src/components/curriculum-links/CurriculumLinkItem.tsx","../../../../libs/shared/src/components/curriculum-links/CurriculumLinks.tsx","../../../../libs/shared/src/flight-requests/PreferenceRequests.ts"],"sourcesContent":["import React from 'react';\n\nimport styles from './partial-curriculum-links.module.scss';\n\nconst PartialCurriculumLinkSection = () => (\n <>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block me-1 mb-2 ${styles.audience}`} />\n <div>\n <div className={`partial-loading-background mb-1 ${styles.area}`} />\n\n <div className='mb-2 d-flex'>\n <div className={`me-1 align-self-start ${styles.code}`}>\n <div className={`partial-loading-background rounded-pill py-1 px-2 d-inline-block w-100 h-100`} />\n </div>\n \n <div className={`partial-loading-background ${styles.description}`} />\n </div>\n </div>\n </>\n);\n\nexport function PartialCurriculumLinks(): JSX.Element {\n return (\n <div>\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div className='mb-3'>\n <PartialCurriculumLinkSection />\n </div>\n\n <div>\n <PartialCurriculumLinkSection />\n </div>\n </div>\n );\n}","export enum CurriculumType {\n Subject = 'CurriculumSubject',\n Audience = 'CurriculumAudience',\n Area = 'CurriculumArea',\n Leaf = 'CurriculumLeaf'\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport styles from './curriculum-links.module.scss';\n\ninterface CurriculumCodeTagProps {\n id: string;\n code: string;\n description: string;\n locationContext: LocationContext;\n faded?: boolean;\n as?: React.ElementType;\n className?: string;\n appLink?: Core.AppLink;\n}\n\nexport const CurriculumCodeTag = React.forwardRef((props: CurriculumCodeTagProps, ref: React.Ref<HTMLElement>) => {\n let className = classNames(\n 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold bg-white border',\n props.faded ? 'border-secondary text-secondary' : 'border-dark',\n props.className\n );\n\n if (props.appLink) {\n className = classNames(className, `text-decoration-none ${styles.codeAppLink}`);\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={{\n id: props.id,\n code: props.code,\n description: props.description\n }}\n analyticsOptions={{\n location: props.locationContext,\n entity: EntityType.CurriculumCode,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Search\n }}\n className={className}\n ref={ref}\n >\n {props.code}\n </AppLink>\n );\n }\n\n const Component = props.as || 'div';\n\n return (\n <Component className={className} ref={ref}>\n {props.code}\n </Component>\n );\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CurriculumLinkItemProps {\n data: Presentation;\n onChangeCurriculum: (id: string) => any;\n selected: boolean;\n}\n\nexport function CurriculumLinkItem(props: CurriculumLinkItemProps): JSX.Element {\n const { data: curriculumTag } = props;\n\n return (\n <DivButton\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${styles.tag} ${props.selected ? styles.selected : ''}`}\n onClick={() => props.onChangeCurriculum(curriculumTag.id.toString())}\n aria-label={`${getPhrase('ariaFilter')} ${curriculumTag.name}`}\n >\n {curriculumTag.cover?.url && (\n <div className={`bg-white ${styles.cover} rounded-circle border`}>\n <img\n src={ImageHelper.createUrl(curriculumTag.cover.url, { size: ImageSize.Small })}\n alt={curriculumTag.name}\n className='rounded-circle'\n />\n </div>\n )}\n <div className='ms-2'>\n {curriculumTag.name}\n </div>\n </DivButton>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PartialCurriculumLinks } from 'libs/shared/components/curriculum-links/partial-loading/PartialCurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumType } from 'libs/shared/enums/CurriculumType';\nimport { Curriculum, Presentation } from 'libs/shared/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport { CurriculumCodeTag } from './CurriculumCodeTag';\nimport { CurriculumLinkItem } from './CurriculumLinkItem';\n\nimport styles from './curriculum-links.module.scss';\n\nconst BRACKET_SEGMENT_REGEX = /(.*)\\s\\((.*)?\\)/i;\n\nconst namespace = 'shared.curriculumLinks';\n\nconst BASE_PILL_CLASS = 'text-nowrap font-size-normal rounded-pill py-1 px-2 my-0 d-inline-block fw-semibold';\n\ninterface CurriculumStructure {\n [CurriculumType.Subject]: Curriculum<CurriculumType.Subject>;\n [CurriculumType.Audience]: Curriculum<CurriculumType.Audience>;\n areasAndLeaves: Array<{\n [CurriculumType.Area]: Curriculum<CurriculumType.Area>[];\n [CurriculumType.Leaf]: Curriculum<CurriculumType.Leaf>[];\n }>;\n}\n\ninterface CurriculumLeafProps {\n id: string;\n code: string;\n description: string;\n locationContext: LocationContext;\n codeWidth?: number;\n trySetMaxCodeWidth?: (width: number) => void;\n uiContainsCodes?: boolean;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n}\n\nexport function CurriculumLeaf(props: CurriculumLeafProps): JSX.Element {\n const codeRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!codeRef.current || !props.trySetMaxCodeWidth)\n return;\n\n const { width } = codeRef.current.getBoundingClientRect();\n\n props.trySetMaxCodeWidth(width);\n }, [codeRef.current]);\n\n if (!props.code && !props.description)\n return <></>;\n\n /**\n * The most ideal case (and most common) is that we have both a code\n * and a description to display for it.\n */\n if (props.code && props.description) {\n return (\n <div className='d-flex'>\n <div\n className='me-2 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <CurriculumCodeTag\n ref={codeRef}\n id={props.id}\n code={props.code}\n description={props.description}\n appLink={props.getCodeAppLink?.(props.code, true)}\n locationContext={props.locationContext}\n />\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n );\n }\n\n /**\n * If a leaf has no code but the rest of the UI has leaf nodes\n * with codes, we show a special \"No code\" pill. Example: https://imgur.com/3L1Ela3\n */\n if (!props.code && props.uiContainsCodes) {\n return (\n <div className='d-flex'>\n <div\n className='me-2 align-self-start'\n style={{ minWidth: props.codeWidth ? `${props.codeWidth}px` : 'auto' }}\n >\n <CurriculumCodeTag\n ref={codeRef}\n id={props.id}\n code={LanguageService.getPhrase(namespace, 'noCode')}\n description={props.description}\n locationContext={props.locationContext}\n faded\n />\n </div>\n <p className='m-0 align-self-center' dangerouslySetInnerHTML={{ __html: props.description }} />\n </div>\n );\n }\n\n /**\n * In this scenario, either the code or the description fields have been populated with\n * some text. In this case we just render the text like a bullet point.\n */\n const text = props.code || props.description;\n\n return (\n <div className='d-flex'>\n <div className='ms-2 me-1'>•</div>\n <AppLink appLink={props.getCodeAppLink?.(text, false)}>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: text }} />\n </AppLink>\n </div>\n );\n}\n\ninterface CurriculumSubjectProps {\n linkSet: CurriculumStructure;\n codeWidth: number;\n trySetMaxCodeWidth: React.Dispatch<React.SetStateAction<number>>;\n locationContext: LocationContext;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n}\n\nfunction CurriculumSubject(props: CurriculumSubjectProps): JSX.Element {\n const areaAndLeafSets: { [areaText: string]: Curriculum<CurriculumType.Leaf>[]; } = {};\n\n let uiContainsCodes = false;\n\n props.linkSet.areasAndLeaves.forEach(areaAndLeafSet => {\n const areaText = areaAndLeafSet[CurriculumType.Area].map(ca => ca.name).join(' - ');\n\n if (areaAndLeafSets[areaText]) {\n areaAndLeafSet[CurriculumType.Leaf].forEach(leaf => {\n if (!areaAndLeafSets[areaText].find(l => l.name === leaf.name)) {\n areaAndLeafSets[areaText].push(leaf);\n\n // We need the info on if _any_ leaf node has a code in it. See why in the comments in `<CurriculumLeaf />`\n if (leaf.name)\n uiContainsCodes = true;\n }\n });\n\n return;\n }\n\n areaAndLeafSets[areaText] = areaAndLeafSet[CurriculumType.Leaf];\n });\n\n function getAudienceText(): string {\n const audienceSegment = props.linkSet[CurriculumType.Audience].name;\n const subjectSegment = props.linkSet[CurriculumType.Subject].name;\n\n /**\n * In some curriculums, such as the UK curriculum, the audience string may contain a year level\n * in brackets. For example, it may be \"Lower Key Stage 2 (Year 4)\".\n * This regex will pull that segment out if it exists.\n */\n const audienceBracketSegments = audienceSegment.match(BRACKET_SEGMENT_REGEX);\n\n if (audienceBracketSegments)\n return `${audienceBracketSegments[1]} • ${audienceBracketSegments[2]} • ${subjectSegment}`;\n\n return `${audienceSegment} • ${subjectSegment}`;\n }\n\n function getLeafStyleClass(leaf: Curriculum<CurriculumType.Leaf>): string {\n const className = 'mb-2';\n\n if (!leaf.name && !uiContainsCodes)\n return className + ' ms-4 ' + styles.leafDescriptionOnly;\n\n return className;\n }\n\n return (\n <>\n <h3 className={`${BASE_PILL_CLASS} text-white bg-ultramarine fw-normal me-1 mb-2`}>\n {getAudienceText()}\n </h3>\n\n <div className={`me-2 ${styles.curriculumSubject}`}>\n {Object.keys(areaAndLeafSets).map((areaText, i) => {\n return (\n <div key={i} className={styles.areaLeafSet} >\n {areaText && <h4 className='mb-1 font-size-normal'>{areaText}</h4>}\n <ul className='list-unstyled'>\n {areaAndLeafSets[areaText].map(leaf => (\n <li key={leaf.id} className={getLeafStyleClass(leaf)}>\n <CurriculumLeaf\n id={leaf.id}\n code={leaf.name}\n description={leaf.description}\n codeWidth={props.codeWidth}\n trySetMaxCodeWidth={props.trySetMaxCodeWidth}\n uiContainsCodes={uiContainsCodes}\n getCodeAppLink={props.getCodeAppLink}\n locationContext={props.locationContext}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </div>\n </>\n );\n}\n\ninterface CurriculumLinksSet {\n [subjectAndAudienceIdKey: string]: CurriculumStructure\n}\n\ninterface CurriculumLinksProps {\n curriculumLinks: Curriculum[][];\n mappedCurriculums: Presentation[];\n onChangeCurriculum: (id: string) => void;\n hasCompleted: boolean;\n isFetching: boolean;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n locationContext: LocationContext;\n}\n\nexport function CurriculumLinks(props: CurriculumLinksProps): JSX.Element {\n const [ codeWidth, setCodeWidth ] = React.useState(0);\n\n const showOtherCurriculums = !props.curriculumLinks.length && props.mappedCurriculums.length > 0;\n\n function trySetMaxCodeWidth(width: number): void {\n /**\n * The width of the curriculum code column should be identical for each leaf node, meaning\n * the leaf description text will be perfectly vertically aligned all the way down.\n * See here for example: https://imgur.com/MbganZf\n * \n * This is achieved by us setting the state for the maximum code width, and forcing all\n * smaller codes to abide by that max width.\n * \n * This value is used in the `<CurriculumLeaf />` component.\n */\n setCodeWidth(currentVal => {\n if (currentVal >= width)\n return currentVal;\n\n return width;\n });\n }\n\n /**\n * Here, we're taking the structure of links from the backend, and restructuring it in a way\n * that resembles the structure of our UI more closely. The general idea is:\n * \n * CurriculumAudience - CurriculumSubject\n * CurriculumAreas\n * CurriculumLeaves\n */\n const curriculumLinkSets = React.useMemo(() => {\n const newSet: CurriculumLinksSet = {};\n\n props.curriculumLinks?.forEach(linkSet => {\n let subject: Curriculum<CurriculumType.Subject> = null;\n let audience: Curriculum<CurriculumType.Audience> = null;\n const areas: Curriculum<CurriculumType.Area>[] = [];\n const leaves: Curriculum<CurriculumType.Leaf>[] = [];\n \n linkSet.forEach(curriculumObj => {\n switch (curriculumObj.type) {\n case CurriculumType.Subject:\n subject = curriculumObj as Curriculum<CurriculumType.Subject>;\n break;\n case CurriculumType.Audience:\n audience = curriculumObj as Curriculum<CurriculumType.Audience>;\n break;\n case CurriculumType.Area:\n areas.push(curriculumObj as Curriculum<CurriculumType.Area>);\n break;\n case CurriculumType.Leaf:\n leaves.push(curriculumObj as Curriculum<CurriculumType.Leaf>);\n break;\n default:\n break;\n }\n });\n\n if (!subject || !audience)\n return;\n \n const key = `${subject.id}:${audience.id}`;\n \n if (newSet[key]) {\n newSet[key].areasAndLeaves.push({\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n });\n \n return;\n }\n \n newSet[key] = {\n [CurriculumType.Subject]: subject,\n [CurriculumType.Audience]: audience,\n areasAndLeaves: [{\n [CurriculumType.Area]: areas,\n [CurriculumType.Leaf]: leaves\n }]\n };\n });\n\n return newSet;\n }, [props.curriculumLinks]);\n\n if (!props.hasCompleted || props.isFetching)\n return <PartialCurriculumLinks />;\n \n if (showOtherCurriculums) {\n return (\n <div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmpty' />\n </div>\n <div className='mb-3'>\n <Text namespace={namespace} phrase='currentEmptyInfo' />\n </div>\n <ul className='list-unstyled mb-n2 d-flex flex-wrap'>\n {props.mappedCurriculums.map(curriculum => (\n <li key={curriculum.id} className='mb-2 me-2'>\n <CurriculumLinkItem\n data={curriculum}\n onChangeCurriculum={props.onChangeCurriculum}\n selected={false}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n return (\n <ul className='list-unstyled m-0'>\n {Object.keys(curriculumLinkSets).map((linkSetKey, i) => (\n <li key={`linkset-${i}`} className={styles.curriculumSet}>\n <CurriculumSubject\n linkSet={curriculumLinkSets[linkSetKey]}\n trySetMaxCodeWidth={trySetMaxCodeWidth}\n codeWidth={codeWidth}\n getCodeAppLink={props.getCodeAppLink}\n locationContext={props.locationContext}\n />\n </li>\n ))}\n </ul>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { Presentation, PresentationAudience } from 'libs/shared/interfaces';\n\nconst classificationQuery = SharedWithStatements.CLASSIFICATION_COLLECTION;\n\nconst endpoints = {\n // Subjects\n allSubjectPreferences: () => `{gateway}/v1/users/me/classifications/preferences?query=${classificationQuery}&type=subject`,\n mySubjectPreferences: () => `{gateway}/v1/users/me/classifications/following?query=${classificationQuery}`,\n followSubjects: () => '{gateway}/v1/users/me/classifications/following',\n unfollowSubjects: (ids: string[]) => UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications/following', { id: ids }),\n\n // Levels\n allLevelPreferences: () => `{gateway}/v1/users/me/audiences?type=subject`,\n myLevelPreferences: () => `{gateway}/v1/users/me/audiences/following`,\n followLevels: () => `{gateway}/v1/users/me/audiences/following`,\n unfollowLevels: (ids: string[]) => UrlHelper.urlBuilder('{gateway}/v1/users/me/audiences/following', { id: ids }),\n\n getCurrentPresentations: (type?: PresentationType) =>\n `{gateway}/v1/users/me/presentations${type ? `?type=${type}` : ''}`,\n getAvailablePresentations: (type?: PresentationType) =>\n `{gateway}/v1/users/me/presentations/available${type ? `?type=${type}` : ''}`,\n setPresentation: (id: string) => `{gateway}/v1/users/me/presentations/${id}`\n};\n\nexport const PreferenceRequests = {\n /**\n * Presentations\n */\n\n availablePresentations(type?: PresentationType): Flight.Request {\n return {\n url: endpoints.getAvailablePresentations(type),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n setPresentation(\n presentation: Presentation,\n type: PresentationType,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: endpoints.setPresentation(presentation.id),\n key: `set:${type}:presentation`,\n type: HttpVerbs.POST,\n data: {},\n normalizeOptions: {\n namespace: 'presentation'\n },\n invalidationKeys: [\n `current:presentation:${type.toLocaleLowerCase()}`,\n 'subject:preference:options',\n 'my:subject:preferences',\n 'level:preference:options',\n 'my:level:preferences',\n 'classifications',\n 'presentation:audiences',\n 'widgets:v3',\n 'content:update:videos',\n 'content:updates'\n ],\n success,\n error\n };\n },\n\n /**\n * Subjects\n */\n allSubjectPreferences(): Flight.Request {\n return {\n url: endpoints.allSubjectPreferences(),\n key: `subject:preference:options`\n };\n },\n\n mySubjectPreferences(success?: (data: any) => void): Flight.Request {\n return {\n url: endpoints.mySubjectPreferences(),\n key: `my:subject:preferences`,\n normalize: false,\n success\n };\n },\n\n followSubjects(\n subjectIds: string[],\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.followSubjects(),\n key: `follow:subjects`,\n data: subjectIds,\n type: HttpVerbs.POST,\n success,\n error,\n always,\n invalidationKeys: [ ...subjectIds.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications', 'content:updates' ]\n };\n },\n\n unfollowSubjects(\n subjectIds: string[],\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.unfollowSubjects(subjectIds),\n key: `unfollow:subjects`,\n type: HttpVerbs.DELETE,\n success,\n error,\n always,\n invalidationKeys: [ ...subjectIds.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications', 'content:updates' ]\n };\n },\n\n /**\n * Levels\n */\n allLevelPreferences(): Flight.Request {\n return {\n url: endpoints.allLevelPreferences(),\n key: `level:preference:options`,\n normalize: false\n };\n },\n\n myLevelPreferences(success?: (data: any) => void): Flight.Request {\n return {\n url: endpoints.myLevelPreferences(),\n key: `my:level:preferences`,\n normalizeOptions: {\n idAttribute: 'masterId'\n },\n success\n };\n },\n\n followLevels(\n levels: PresentationAudience[],\n success: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.followLevels(),\n key: `follow:levels`,\n data: levels.map(l => l.masterId),\n normalize: false,\n // Update the store to immediately reflect changes\n updateState: {\n keys: 'my:level:preferences',\n updateData: storeData => {\n const preferences = storeData['my:level:preferences'] ?? [] as PresentationAudience[];\n\n levels.forEach(newLevel => {\n if (preferences.find((p: PresentationAudience) => p.masterId === newLevel.masterId))\n return;\n\n preferences.push(newLevel);\n });\n\n return {\n 'my:level:preferences': preferences\n };\n }\n },\n type: HttpVerbs.POST,\n success,\n error,\n always\n };\n },\n\n unfollowLevels(\n levels: PresentationAudience[],\n success: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: endpoints.unfollowLevels(levels.map(l => l.masterId)),\n key: `unfollow:levels`,\n normalize: false,\n // Update the store to immediately reflect changes\n updateState: {\n keys: 'my:level:preferences',\n updateData: storeData => {\n let preferences = storeData['my:level:preferences'] ?? [] as PresentationAudience[];\n\n levels.forEach(oldLevel => {\n if (!preferences.find((p: PresentationAudience) => p.masterId === oldLevel.masterId))\n return;\n\n const idxOfValue = preferences.findIndex((p: PresentationAudience) => p.masterId === oldLevel.masterId);\n\n preferences = [ ...preferences.slice(0, idxOfValue), ...preferences.slice(idxOfValue + 1) ];\n });\n\n return {\n 'my:level:preferences': preferences\n };\n }\n },\n type: HttpVerbs.DELETE,\n success,\n error,\n always\n };\n }\n};"],"names":["PartialCurriculumLinkSection","jsxs","Fragment","jsx","styles","PartialCurriculumLinks","CurriculumType","CurriculumCodeTag","React","props","ref","className","classNames","AppLink","EntityType","UserAction","ClickDescriptor","Component","namespace","getPhrase","LanguageService","CurriculumLinkItem","curriculumTag","DivButton","_a","ImageHelper","ImageSize","BRACKET_SEGMENT_REGEX","BASE_PILL_CLASS","CurriculumLeaf","codeRef","width","text","_b","CurriculumSubject","areaAndLeafSets","uiContainsCodes","areaAndLeafSet","areaText","ca","leaf","l","getAudienceText","audienceSegment","subjectSegment","audienceBracketSegments","getLeafStyleClass","i","CurriculumLinks","codeWidth","setCodeWidth","showOtherCurriculums","trySetMaxCodeWidth","currentVal","curriculumLinkSets","newSet","linkSet","subject","audience","areas","leaves","curriculumObj","key","Text","curriculum","linkSetKey","classificationQuery","SharedWithStatements","endpoints","ids","UrlHelper","type","id","PreferenceRequests","presentation","success","error","HttpVerbs","subjectIds","always","levels","storeData","preferences","newLevel","p","oldLevel","idxOfValue"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{g as o,O as f}from"./app-DiXzpOyg.js";const l={SpecialEvents:{dlL00b3:{id:"dlL00b3",iconUrl:"https://img.clickviewapp.com/v2/covers/PGbNp0"}},Classifications:{Twig:{EnglandSecondary:{HUB:"yrg5vYN"},ScotlandSecondary:{HUB:"Y69j14M"},InternationalSecondary:{HUB:"MYM6GGM"},NewZealandSecondary:{HUB:"agNmRd9"},CanadaMiddle:{HUB:"RbEbJ4g"},CanadaHigh:{HUB:"xAzA6DP"}},Tigtag:{EnglandPrimary:{HUB:"D1218zx",TIGTAG_HUB:"odldxPJ",TIGTAG_JUNIOR_HUB:"nENExnL"},ScotlandPrimary:{HUB:"JjAONbj",TIGTAG_HUB:"3bNAGl1",TIGTAG_JUNIOR_HUB:"K6GKp43"},InternationalPrimary:{HUB:"W1xqbk2",TIGTAG_HUB:"ek3dJr8",TIGTAG_JUNIOR_HUB:"PGyKzpn"},NewZealandPrimary:{HUB:"odnkREE",TIGTAG_HUB:"kZJ4RPa",TIGTAG_JUNIOR_HUB:"zMg80DR"},CanadaElementary:{HUB:"2mgmJA6",TIGTAG_HUB:"69z9D1A",TIGTAG_JUNIOR_HUB:"ZJvJ1Lg"},CanadaMiddle:{HUB:"Jjajxyd",TIGTAG_HUB:"dq9qbe3",TIGTAG_JUNIOR_HUB:"K6a6qdL"}}},PresentationIds:{DEFAULT:1,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Images:{Level_1:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/dlM73E",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/WAe8MP",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/raRm7E",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/3kzeZ2"},Level_2:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/WAeKvP",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/9DAZJv",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/eKG2bq",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/xyn5eP"},Level_3:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/dl1d0g",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/R0Pz7A",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/8LYZ9R",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/nKDyRj"},Level_4:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/vYJPP5",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/PGPLLP"},STREAMABLE_TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/q6gnOn",STREAMABLE_TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/age95g"}},R=/\d/,u=1,m={yearsAndGradesBuilder(e){const i=e.map(s=>s.name).join(" "),n=i.split(" ").filter(s=>!isNaN(+s)).map(s=>+s)||[],r=i.split(" ").filter(s=>isNaN(+s))||[],t=e.find(s=>!R.test(s.name));let a=r.find(s=>s!==(t==null?void 0:t.name));if(e.length>1&&(a+="s"),t&&n.length)return`${a} ${t.name.charAt(0)} - ${n.pop()}`;const c=_(n);return`${a} ${c.join(", ")}`},internationalSecondaryBuilder(e){return m.englandSecondaryBuilder(e)},scotlandPrimaryBuilder(e){const i=o.first(e),n=o.last(e);let[r]=i.name.split(" "),[t]=n.name.split(" ");return r==="First"&&(r="1st"),t==="First"&&(t="1st"),r==="Second"&&(r="2nd"),t==="Second"&&(t="2nd"),r===t?`${r} Level`:`${r} - ${t} Level`},internationalPrimaryBuilder(e){const i=o.first(e),n=o.last(e);if(i.name===n.name)return i.name;let[r]=i.name.split(" "),[t]=n.name.split(" ");return r==="Lower"&&(r="Low"),t==="Lower"&&(t="Low"),r==="Middle"&&(r="Mid"),t==="Middle"&&(t="Mid"),`${r} - ${t} Pri`},englandSecondaryBuilder(e){const i=o.first(e),n=o.last(e);if(i.name===n.name)return i.name;if(n.name==="Advanced"){const[r]=i.name.split(" ");return r.toLowerCase()==="lower"?"Lower Sec - Adv":"Upper Sec - Adv"}return"Lower - Upper Sec"},scotlandSecondaryBuilder(e){const i=o.first(e),n=o.last(e);return i.name===n.name?i.name:n.name==="Senior Phase"?`${i.name} - Senior`:"Third - Fourth Level"},englandPrimaryBuilder(e){const i=o.first(e),n=o.last(e),r=o.first(i.name.split(" ")),t=o.first(n.name.split(" ")),a=i.name.split(" ").find(A=>!isNaN(+A)),c=n.name.split(" ").find(A=>!isNaN(+A));if(i===n)return r==="Key"||r==="Reception"?i.name:`${r} KS${a}`;let s="",d="";return r==="Reception"?s="R":s=`KS${a}`,d=`KS${c}`,r==="Lower"&&t==="Upper"?`L ${s} - U ${d}`:(r==="Lower"&&(s=`Lower ${s}`),t==="Upper"&&(d=`Upper ${d}`),t==="Key"&&(d=n.name),`${s} - ${d}`)}};function _(e){const i=u;let n,r,t=!1;const a=[];e=e.sort((d,A)=>d-A);let c,s;for(c=0;c<e.length;c++)s=c+1,t||(n=e[c]),r=e[s],e[c]+i===r?t=!0:t?(a.push(`${n} - ${e[c]}`),t=!1):(a.push(`${e[c]}`),t=!1);return a}const N=/([0-9]+)/ig,I=/\s|\+/ig,P=1,g={getSortedPresentationAudiences(e,i){const n=e.filter(t=>!!t).map(t=>t.id.toString());return i.filter(t=>n.includes(t.masterId.toString()))},getMergedPresentationAudienceString(e){const{presentationId:i}=o.first(e);let n="";switch(+i){case l.PresentationIds.DEFAULT:case l.PresentationIds.AU_SECONDARY:case l.PresentationIds.AU_PRIMARY:case l.PresentationIds.NZ_PRIMARY:case l.PresentationIds.NZ_SECONDARY:case l.PresentationIds.US_ELEMENTARY:case l.PresentationIds.CA_ELEMENTARY:case l.PresentationIds.STREAMABLE_LEARNING:if(e.length===1)return e[0];n=m.yearsAndGradesBuilder(e);break;case l.PresentationIds.INT_SECONDARY:if(e.length===1)return e[0];n=m.internationalSecondaryBuilder(e);break;case l.PresentationIds.INT_PRIMARY:n=m.internationalPrimaryBuilder(e);break;case l.PresentationIds.SCT_PRIMARY:n=m.scotlandPrimaryBuilder(e);break;case l.PresentationIds.ENG_SECONDARY:n=m.englandSecondaryBuilder(e);break;case l.PresentationIds.SCT_SECONDARY:n=m.scotlandSecondaryBuilder(e);break;case l.PresentationIds.ENG_PRIMARY:n=m.englandPrimaryBuilder(e);break}return n?{name:n}:null},sortMembersWithDuplicateNamesByAudience(e){const i=t=>{if(!t.length)return null;let a,c;return t.forEach(s=>{const d=+o.first(s.name.match(N));if(!a){a=s,c=d;return}d<c&&(a=s)}),a},n={};let r=[];return e.forEach(t=>{if(!n[t.name]){n[t.name]=1,r.push(t);return}r.push(t),n[t.name]++;const c=r.splice(r.length-n[t.name]).sort((s,d)=>{const A=i(s.subjectPresentationAudiences.data),p=i(d.subjectPresentationAudiences.data);if(!A&&p)return 1;if(!p)return-1;const E=A.name.localeCompare(p.name);return E===0?E:E>0?-1:1});r=r.concat(c)}),r},getActiveAudiencesFromParams(e,i={}){if(!f.isObject(i)||f.isEmpty(i)||!e||!e.length||!g.shouldShowAudiences(e))return;let{a:n}=i;if(!n)return;typeof n=="string"&&(n=[n]);const r=a=>a.replace(I,"").toLowerCase(),t=n.reduce((a,c)=>(a[r(c)]=c,a),{});return e.filter(a=>t[r(a.name)])},getAudienceParams(e){return e!=null&&e.length?{a:e.map(i=>i.name)}:null},shouldShowAudiences(e=[]){return e?e.length>P:!1}};export{g as A,l as H};
|
|
2
|
+
//# sourceMappingURL=DaJTPRJr.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DaJTPRJr.chunk.js","sources":["../../../../libs/shared/src/constants/HardCoded.ts","../../../../libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","../../../../libs/shared/src/utils/audience-helper/AudienceHelper.ts"],"sourcesContent":["export const HardCoded = {\n PublicTranscriptVideoIds: [\n '78902422',\n '8139055',\n '32102562',\n '36875667',\n '3713657',\n '9900524',\n '48278572',\n '39424302',\n '3712691',\n '54504550',\n '23852726',\n '3713563',\n '3714027',\n '51281358',\n '58785149',\n '7322586',\n '3716774',\n '36554689',\n '54192890',\n '6689791',\n '10749459',\n '3712691',\n '81764158',\n '43772092',\n '43974358',\n '48091365',\n '6430651',\n '3713735',\n '54096131',\n '57977558',\n '78840166',\n '57738254',\n '51666370',\n '49858722'\n ],\n SpecialEvents: {\n dlL00b3: {\n id: 'dlL00b3',\n iconUrl: 'https://img.clickviewapp.com/v2/covers/PGbNp0'\n }\n },\n Classifications: {\n Twig: {\n EnglandSecondary: {\n HUB: 'yrg5vYN'\n },\n ScotlandSecondary: {\n HUB: 'Y69j14M'\n },\n InternationalSecondary: {\n HUB: 'MYM6GGM'\n },\n NewZealandSecondary: {\n HUB: 'agNmRd9'\n },\n CanadaMiddle: {\n HUB: 'RbEbJ4g'\n },\n CanadaHigh: {\n HUB: 'xAzA6DP'\n }\n },\n Tigtag: {\n EnglandPrimary: {\n HUB: 'D1218zx',\n TIGTAG_HUB: 'odldxPJ',\n TIGTAG_JUNIOR_HUB: 'nENExnL'\n },\n ScotlandPrimary: {\n HUB: 'JjAONbj',\n TIGTAG_HUB: '3bNAGl1',\n TIGTAG_JUNIOR_HUB: 'K6GKp43'\n },\n InternationalPrimary: {\n HUB: 'W1xqbk2',\n TIGTAG_HUB: 'ek3dJr8',\n TIGTAG_JUNIOR_HUB: 'PGyKzpn'\n },\n NewZealandPrimary: {\n HUB: 'odnkREE',\n TIGTAG_HUB: 'kZJ4RPa',\n TIGTAG_JUNIOR_HUB: 'zMg80DR'\n },\n CanadaElementary: {\n HUB: '2mgmJA6',\n TIGTAG_HUB: '69z9D1A',\n TIGTAG_JUNIOR_HUB: 'ZJvJ1Lg'\n },\n CanadaMiddle: {\n HUB: 'Jjajxyd',\n TIGTAG_HUB: 'dq9qbe3',\n TIGTAG_JUNIOR_HUB: 'K6a6qdL'\n }\n }\n },\n // Production values. For testing in development, change these to staging preso values\n PresentationIds: {\n DEFAULT: 1,\n DEFAULT_CURRICULUM: 10,\n\n AU_PRIMARY: 18,\n AU_SECONDARY: 9,\n AU_TERTIARY: 81,\n US_ELEMENTARY: 13,\n US_MIDDLE: 14,\n US_HIGH: 15,\n CA_ELEMENTARY: 100,\n CA_MIDDLE: 101,\n CA_HIGH: 102,\n STREAMABLE_LEARNING: 68,\n ENG_PRIMARY: 16,\n ENG_SECONDARY: 47,\n SCT_PRIMARY: 12,\n SCT_SECONDARY: 24,\n UK_TERTIARY: 82,\n INT_PRIMARY: 19,\n INT_SECONDARY: 21,\n NZ_PRIMARY: 96,\n NZ_SECONDARY: 97\n },\n Libraries: {\n LICENCED_CONTENT_COLLECTION: '3700633',\n\n AU_PRIMARY: '10066675',\n AU_SECONDARY: '59401330',\n AU_TERTIARY: '5836680',\n US_ELEMENTARY: '38693445',\n US_MIDDLE: '39642303',\n US_HIGH: '38693435',\n CA_ELEMENTARY: '92862332',\n CA_MIDDLE: '92862334',\n CA_HIGH: '92862344',\n STREAMABLE_LEARNING: '78688869',\n ENG_PRIMARY: '35340580',\n ENG_SECONDARY: '59889793',\n SCT_PRIMARY: '33386791',\n SCT_SECONDARY: '59856733',\n UK_TERTIARY: '5815036',\n INT_PRIMARY: '3706428',\n INT_SECONDARY: '3706459',\n NZ_PRIMARY: '3705693',\n NZ_SECONDARY: '3705710',\n NZ_MTV: '26989676',\n\n TWIG: '88117784',\n TIGTAG: '80333935'\n },\n Rostering: {\n sources: {\n 0: { name: 'Unknown', iconUrl: '' },\n 1: { name: 'Clever', iconUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd' },\n 2: { name: 'ClassLink', iconUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5' },\n 3: { name: 'Google', iconUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL' },\n 4: { name: 'Microsoft', iconUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP' },\n 5: { name: 'Schoology', iconUrl: 'https://img.clickviewapp.com/v2/logos/kZNEyz' },\n 6: { name: 'PowerSchool', iconUrl: 'https://img.clickviewapp.com/v2/logos/m6aDmR' }\n }\n },\n Images: {\n Level_1: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dlM73E',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/WAe8MP',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/raRm7E',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/3kzeZ2'\n },\n Level_2: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/WAeKvP',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/9DAZJv',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/eKG2bq',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/xyn5eP'\n },\n Level_3: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dl1d0g',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/R0Pz7A',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/8LYZ9R',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/nKDyRj'\n },\n Level_4: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/vYJPP5',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/PGPLLP'\n },\n TOPIC_DEFAULT_BANNER: 'https://img.clickviewapp.com/v2/banners/yKvoG0',\n STREAMABLE_TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/q6gnOn',\n STREAMABLE_TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/age95g'\n },\n Onboarding: {\n Playlist: {\n COVER_FILE_ID: 'G149g3',\n BANNER_FILE_ID: 'bmPLkn'\n },\n LOADING_THUMBNAILS: [\n 'https://img.clickviewapp.com/v2/thumbnails/7m34ne',\n 'https://img.clickviewapp.com/v2/thumbnails/W1bjqJ',\n 'https://img.clickviewapp.com/v2/thumbnails/G14M1e',\n 'https://img.clickviewapp.com/v2/thumbnails/2mnv5x',\n 'https://img.clickviewapp.com/v2/thumbnails/xAEG91',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbyg',\n 'https://img.clickviewapp.com/v2/thumbnails/W13emP',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6j2vy',\n 'https://img.clickviewapp.com/v2/thumbnails/W1MJGE',\n 'https://img.clickviewapp.com/v2/thumbnails/OqDJqG',\n 'https://img.clickviewapp.com/v2/thumbnails/1My9Wn',\n 'https://img.clickviewapp.com/v2/thumbnails/G14MRe',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgKpl',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbp9',\n 'https://img.clickviewapp.com/v2/thumbnails/G147R1',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgMz5',\n 'https://img.clickviewapp.com/v2/thumbnails/G14Me5',\n 'https://img.clickviewapp.com/v2/thumbnails/5bEovE',\n 'https://img.clickviewapp.com/v2/thumbnails/odY4oZ',\n 'https://img.clickviewapp.com/v2/thumbnails/yrqwqD',\n 'https://img.clickviewapp.com/v2/thumbnails/K6pOmR',\n 'https://img.clickviewapp.com/v2/thumbnails/vYK3w4',\n 'https://img.clickviewapp.com/v2/thumbnails/agnD88',\n 'https://img.clickviewapp.com/v2/thumbnails/4rKmp7',\n 'https://img.clickviewapp.com/v2/thumbnails/0wM4r3',\n 'https://img.clickviewapp.com/v2/thumbnails/69A2jO',\n 'https://img.clickviewapp.com/v2/thumbnails/7m3Z3e',\n 'https://img.clickviewapp.com/v2/thumbnails/3bGL94',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6jwLo',\n 'https://img.clickviewapp.com/v2/thumbnails/1MyPby'\n ]\n }\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n internationalSecondaryBuilder(audiences: PresentationAudience[]): string {\n return AudienceStringBuilders.englandSecondaryBuilder(audiences);\n },\n\n scotlandPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'First')\n firstAudienceLevel = '1st';\n\n if (lastAudienceLevel === 'First')\n lastAudienceLevel = '1st';\n\n if (firstAudienceLevel === 'Second')\n firstAudienceLevel = '2nd';\n\n if (lastAudienceLevel === 'Second')\n lastAudienceLevel = '2nd';\n\n if (firstAudienceLevel === lastAudienceLevel)\n return `${firstAudienceLevel} Level`;\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Level`;\n },\n\n internationalPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'Lower')\n firstAudienceLevel = 'Low';\n\n if (lastAudienceLevel === 'Lower')\n lastAudienceLevel = 'Low';\n\n if (firstAudienceLevel === 'Middle')\n firstAudienceLevel = 'Mid';\n\n if (lastAudienceLevel === 'Middle')\n lastAudienceLevel = 'Mid';\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Pri`;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scotlandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n englandPrimaryBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, AudienceFilterParams, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.NZ_PRIMARY:\n case HardCoded.PresentationIds.NZ_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.CA_ELEMENTARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INT_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n // TODO: Implement this properly\n mergedAudienceString = AudienceStringBuilders.internationalSecondaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INT_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.internationalPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.SCT_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.scotlandPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENG_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englandSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCT_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scotlandSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENG_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.englandPrimaryBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n case HardCoded.PresentationIds.CA_MIDDLE:\n case HardCoded.PresentationIds.CA_HIGH:\n case HardCoded.PresentationIds.AU_TERTIARY:\n case HardCoded.PresentationIds.UK_TERTIARY:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): AudienceFilterParams {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n"],"names":["HardCoded","HAS_NUMBER_REGEX","COUNT_OFFSET","AudienceStringBuilders","audiences","combinedNames","a","numberList","name","num","wordList","audienceWithoutNum","p","prefix","audienceRange","processAudienceRanges","firstAudience","ArrayHelper","lastAudience","firstAudienceLevel","lastAudienceLevel","level","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","word","lastAudienceNumber","firstAudienceString","lastAudienceString","audienceValues","offset","initialVal","nextVal","isContinguous","ranges","b","i","j","DIGIT_REGEX","SPACE_REGEX","MIN_AUDIENCE_THRESHOLD","AudienceHelper","objectAudiences","presentationAudiences","objectAudienceIds","v","audience","presAudience","presentationId","mergedAudienceString","members","getLowestAudience","lowestAudience","lowestAudienceDigit","digit","nameCountMap","sorted","member","sortedSlice","firstObjLowestAudience","secondObjLowestAudience","comparison","params","ObjectHelper","normalizeAudienceName","audienceName","audienceLookup","state","audienceStr"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as D,q as x,t as l,R as d,o as f,aE as B,aC as H,a3 as K,r as _,bz as $,_ as z,c as G,g as j,M as J,ds as Q,k as W,i as X}from"./app-DiXzpOyg.js";import{C as s}from"./qO6ZefON.chunk.js";import{P as Y}from"./D_nzH8Cw.chunk.js";const Z="videos.hooks",m=new Map,te=a=>{var b,A;function k(e){return`${e.toLowerCase()}:${z.PRESENTATION_ID}`}const[h,v]=D(k(l.Curriculum),void 0,{storage:x.LocalStorage}),[i,g]=d.useState(null),[p,u]=d.useState(null),[w,S]=d.useState(!1),E=f(B.currentUser()),o=f(s.availablePresentations(l.Curriculum)),C=H(),M=K(),{hasLocalPermissions:R}=_(),L=R($.ManagePublicPresentation);function N(){var t;return isNaN(+h)?(t=j.first(o.data))==null?void 0:t.id:h}function T(){var t;if((t=E.data)!=null&&t.isAuthenticated)return s.presentation(l.Curriculum);const e=N();return e?s.presentationById(e):null}const n=f(T());d.useEffect(()=>{var e;n.data&&(g(n.data),a&&!p&&C(s.curriculumLinks(a,(e=n.data)==null?void 0:e.id)).then(t=>{var r,c;u(t),m.set((c=(r=n.data)==null?void 0:r.id)==null?void 0:c.toString(),t)}))},[(b=n.data)==null?void 0:b.id]);const y=((A=o.data)==null?void 0:A.map(e=>e.id))??[],P=f(a&&y.length&&s.getMappedCurriculums(a,y));async function U(e,t){if(i.id.toString()===e.toString())return;const r=o.data.find(c=>c.id.toString()===e.toString());g(r),L&&v(e);try{if(a&&await q(e),L)return;await C(Y.setPresentation(r,l.Curriculum)),F(r,t)}catch{M.error(G.getPhrase(Z,"curriculumUpdateError")),g(i)}}async function q(e){if(!a)return;if(m.has(e.toString())){u(m.get(e.toString()));return}if(!P.data.find(r=>r.id.toString()===e.toString())){u([]);return}S(!0);const t=await C(s.curriculumLinks(a,e));u(t),m.set(e.toString(),t),S(!1)}function F(e,t){if(!t.shouldLog)return;const r={id:e.id,name:e.id,description:e.description};t.video&&(r.videoId=t.video.id,r.videoName=t.video.name),J.logUserAction(r,{entity:X.Presentation,actionType:W.Select,descriptor:Q.Curriculum,location:t.locationContext})}function V(){return i?a?!!p&&P.hasCompleted:!0:!1}return{preferredCurriculum:i||n.data,curriculumLinks:p||[],availableCurriculums:o.data||[],mappedCurriculums:P.data||[],updateCurriculum:U,hasCompleted:V(),isFetching:w}};export{te as u};
|
|
2
|
+
//# sourceMappingURL=Dal4C0kV.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dal4C0kV.chunk.js","sources":["../../src/apps/videos/hooks/useCurriculums.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, PresentationDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { LocalPermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, Curriculum, CurriculumAnalyticsOptions, CurriculumData, Presentation } from 'libs/shared/interfaces';\n\nconst namespace = 'videos.hooks';\n\nconst curriculumLinksCache = new Map<string, Curriculum[][]>();\n\nexport const useCurriculums = (videoId?: string): CurriculumData => {\n function getPublicPresentationLocalStorageKey(type: PresentationType): string {\n return `${type.toLowerCase()}:${SharedViewModelKeys.PRESENTATION_ID}`;\n }\n\n const [ publicPresentationId, setPublicPresentationId ] = useViewModel<string>(\n getPublicPresentationLocalStorageKey(PresentationType.Curriculum),\n undefined,\n { storage: StorageType.LocalStorage }\n );\n\n const [ activeCurriculum, setActiveCurriculum ] = React.useState<Presentation>(null);\n const [ curriculumLinks, setCurriculumLinks ] = React.useState<Curriculum[][]>(null);\n const [ isFetching, setIsFetching ] = React.useState<boolean>(false);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const availableCurriculums = Flight.useBasicFetch<Presentation[]>(\n ClassificationRequests.availablePresentations(PresentationType.Curriculum)\n );\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n const { hasLocalPermissions } = usePermissions();\n const canManagePublicPresentation = hasLocalPermissions(LocalPermissionName.ManagePublicPresentation);\n \n function getAnonPresentationId(): string {\n /**\n * Where a public user has already nominated a presentation and \n * it's persisted in LocalStorage retrieve that.\n */\n const hasValidPublicPresentationId = !isNaN(+publicPresentationId);\n if (hasValidPublicPresentationId)\n return publicPresentationId;\n\n /**\n * Where the public user has yet to nominate a presentation, we'll preload with a Level 1 presentation\n * They'll be prompted to select a presentation\n */\n return ArrayHelper.first(availableCurriculums.data)?.id;\n }\n\n function getPreferredCurriculumRequest() {\n if (currentUser.data?.isAuthenticated)\n return ClassificationRequests.presentation(PresentationType.Curriculum);\n\n const anonPresentationId = getAnonPresentationId();\n\n if (!anonPresentationId)\n return null;\n\n return ClassificationRequests.presentationById(anonPresentationId);\n }\n\n const preferredCurriculum = Flight.useBasicFetch<Presentation>(getPreferredCurriculumRequest());\n\n React.useEffect(() => {\n if (!preferredCurriculum.data)\n return;\n\n setActiveCurriculum(preferredCurriculum.data);\n\n if (videoId && !curriculumLinks) {\n fetchAsync<Curriculum[][]>(ClassificationRequests.curriculumLinks(videoId, preferredCurriculum.data?.id))\n .then(links => {\n setCurriculumLinks(links);\n curriculumLinksCache.set(preferredCurriculum.data?.id?.toString(), links);\n });\n }\n }, [preferredCurriculum.data?.id]);\n \n const availableCurriculumIds = availableCurriculums.data?.map(c => c.id) ?? [];\n\n const mappedCurriculums = Flight.useBasicFetch<Presentation[]>(\n videoId &&\n availableCurriculumIds.length &&\n ClassificationRequests.getMappedCurriculums(\n videoId,\n availableCurriculumIds\n )\n );\n\n async function updateCurriculum(\n curriculumId: string,\n analyticsOptions: CurriculumAnalyticsOptions\n ): Promise<void> {\n if (activeCurriculum.id.toString() === curriculumId.toString())\n return;\n\n const curriculum = availableCurriculums.data.find(c => c.id.toString() === curriculumId.toString());\n\n setActiveCurriculum(curriculum);\n\n /**\n * In a public context, we'll persist the selected presentation's id to Local Storage\n */\n if (canManagePublicPresentation)\n setPublicPresentationId(curriculumId);\n\n try {\n if (videoId)\n await updateCurriculumLinks(curriculumId);\n\n if (canManagePublicPresentation)\n return;\n\n await fetchAsync(\n PreferenceRequests.setPresentation(curriculum, PresentationType.Curriculum)\n );\n\n logCurriculumChangeEvent(curriculum, analyticsOptions);\n } catch {\n alerts.error(LanguageService.getPhrase(namespace, 'curriculumUpdateError'));\n\n // If we fail to update, rollback to the previous curriculum\n setActiveCurriculum(activeCurriculum);\n }\n }\n\n async function updateCurriculumLinks(curriculumId: string) {\n if (!videoId)\n return;\n\n // If we've already fetched the links for this curriculum, use the cached data\n if (curriculumLinksCache.has(curriculumId.toString())) {\n setCurriculumLinks(curriculumLinksCache.get(curriculumId.toString()));\n return;\n }\n \n // If we don't have any curriculums mapped to our video, set the links to an empty array\n if (!mappedCurriculums.data.find(c => c.id.toString() === curriculumId.toString())) {\n setCurriculumLinks([]);\n return;\n }\n\n // Fetch the curriculum links for our video\n setIsFetching(true);\n\n const links = await fetchAsync<Curriculum[][]>(\n ClassificationRequests.curriculumLinks(videoId, curriculumId)\n );\n\n setCurriculumLinks(links);\n curriculumLinksCache.set(curriculumId.toString(), links);\n\n setIsFetching(false);\n }\n\n function logCurriculumChangeEvent(curriculum: Presentation, analyticsOptions: CurriculumAnalyticsOptions): void {\n if (!analyticsOptions.shouldLog)\n return;\n\n const analyticsData: HashObject = {\n id: curriculum.id,\n name: curriculum.id,\n description: curriculum.description\n };\n\n if (analyticsOptions.video) {\n analyticsData.videoId = analyticsOptions.video.id;\n analyticsData.videoName = analyticsOptions.video.name;\n }\n\n AnalyticsHelper.logUserAction(analyticsData, {\n entity: EntityType.Presentation,\n actionType: UserAction.Select,\n descriptor: PresentationDescriptor.Curriculum,\n location: analyticsOptions.locationContext\n });\n }\n\n function hasCompleted(): boolean {\n if (!activeCurriculum)\n return false;\n\n if (!videoId)\n return true;\n\n return !!curriculumLinks && mappedCurriculums.hasCompleted;\n }\n\n return {\n preferredCurriculum: activeCurriculum || preferredCurriculum.data,\n curriculumLinks: curriculumLinks || [],\n availableCurriculums: availableCurriculums.data || [],\n mappedCurriculums: mappedCurriculums.data || [],\n updateCurriculum,\n hasCompleted: hasCompleted(),\n isFetching\n };\n};"],"names":["namespace","curriculumLinksCache","useCurriculums","videoId","getPublicPresentationLocalStorageKey","type","SharedViewModelKeys","publicPresentationId","setPublicPresentationId","useViewModel","PresentationType","StorageType","activeCurriculum","setActiveCurriculum","React","curriculumLinks","setCurriculumLinks","isFetching","setIsFetching","currentUser","Flight.useBasicFetch","UserRequests","availableCurriculums","ClassificationRequests","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","hasLocalPermissions","usePermissions","canManagePublicPresentation","LocalPermissionName","getAnonPresentationId","_a","ArrayHelper","getPreferredCurriculumRequest","anonPresentationId","preferredCurriculum","links","_b","availableCurriculumIds","c","mappedCurriculums","updateCurriculum","curriculumId","analyticsOptions","curriculum","updateCurriculumLinks","PreferenceRequests","logCurriculumChangeEvent","LanguageService","analyticsData","AnalyticsHelper","EntityType","UserAction","PresentationDescriptor","hasCompleted"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as r}from"./app-DiXzpOyg.js";function o(t){return r.jsx("svg",{...t,children:r.jsx("path",{d:"m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466",fill:"currentColor"})})}export{o as C};
|
|
2
|
+
//# sourceMappingURL=DecSY6Xq.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecSY6Xq.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronLeftSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function ChevronLeftSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["ChevronLeftSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ai as v}from"./app-DiXzpOyg.js";var S=new Map,h=new WeakMap,A=0,x=void 0;function M(e){return e?(h.has(e)||(A+=1,h.set(e,A.toString())),h.get(e)):"0"}function O(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?M(e.root):e[t]}`).toString()}function T(e){const t=O(e);let n=S.get(t);if(!n){const u=new Map;let c;const i=new IntersectionObserver(s=>{s.forEach(r=>{var o;const g=r.isIntersecting&&c.some(a=>r.intersectionRatio>=a);e.trackVisibility&&typeof r.isVisible>"u"&&(r.isVisible=g),(o=u.get(r.target))==null||o.forEach(a=>{a(g,r)})})},e);c=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:u},S.set(t,n)}return n}function _(e,t,n={},u=x){if(typeof window.IntersectionObserver>"u"&&u!==void 0){const o=e.getBoundingClientRect();return t(u,{isIntersecting:u,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:o,intersectionRect:o,rootBounds:o}),()=>{}}const{id:c,observer:i,elements:s}=T(n),r=s.get(e)||[];return s.has(e)||s.set(e,r),r.push(t),i.observe(e),function(){r.splice(r.indexOf(t),1),r.length===0&&(s.delete(e),i.unobserve(e)),s.size===0&&(i.disconnect(),S.delete(c))}}function C({threshold:e,delay:t,trackVisibility:n,rootMargin:u,root:c,triggerOnce:i,skip:s,initialInView:r,fallbackInView:o,onChange:g}={}){var a;const[b,V]=v.useState(null),l=v.useRef(),[R,p]=v.useState({inView:!!r,entry:void 0});l.current=g,v.useEffect(()=>{if(s||!b)return;let d;return d=_(b,(E,I)=>{p({inView:E,entry:I}),l.current&&l.current(E,I),I.isIntersecting&&i&&d&&(d(),d=void 0)},{root:c,rootMargin:u,threshold:e,trackVisibility:n,delay:t},o),()=>{d&&d()}},[Array.isArray(e)?e.toString():e,b,c,u,i,s,n,o,t]);const w=(a=R.entry)==null?void 0:a.target,y=v.useRef();!b&&w&&!i&&!s&&y.current!==w&&(y.current=w,p({inView:!!r,entry:void 0}));const f=[V,R.inView,R.entry];return f.ref=f[0],f.inView=f[1],f.entry=f[2],f}export{C as u};
|
|
2
|
+
//# sourceMappingURL=DgL-ti6b.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DgL-ti6b.chunk.js","sources":["../../../../../node_modules/react-intersection-observer/index.mjs"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root)\n return \"0\";\n if (RootIds.has(root))\n return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip)\n return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef();\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref)\n return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current)\n callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef();\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map"],"names":["observerMap","RootIds","rootId","unsupportedValue","getRootId","root","optionsToId","options","key","createObserver","id","instance","elements","thresholds","observer","entries","entry","_a","inView","threshold","callback","observe","element","fallbackInView","bounds","callbacks","useInView","delay","trackVisibility","rootMargin","triggerOnce","skip","initialInView","onChange","ref","setRef","React2.useState","React2.useRef","state","setState","React2.useEffect","unobserve","entryTarget","previousEntryTarget","result"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a5 as u,a6 as c,bc as p,ao as l,D as w,a1 as d,bQ as _,c as E,i as f,P}from"./app-DiXzpOyg.js";import{a as o}from"./CEmtkty-.chunk.js";import{R as b,a as B}from"./Bnt14Hw8.chunk.js";import{P as I}from"./pkzD5BEm.chunk.js";import{V as h}from"./DIIFVn0p.chunk.js";var $=(e=>(e.Screenrights="screenrights",e.Era="era",e.ClickView="clickview",e))($||{});const T={clip(e,t){return{key:`clip:${e}:${t}`,url:c.urlBuilder(`{gateway}/v1/objects/${e}`,{query:p.CLIP,permissionFilterOption:t})}},videoClips(e,t,r){return{key:`video:${e}:clips:${t}:${r}`,url:c.urlBuilder(`{gateway}/v1/objects/${e}/clips`,{query:p.CLIP_COLLECTION,permissionFilterOption:t,cursor:r})}},clipWithAllInteractives(e,t){return{key:`clip:${e}:${t}:interactives`,url:c.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${p.CLIP},interactives{status:[0,1]}`,permissionFilterOption:t}),normalize:!1}},publicClip(e,t,r,a){return{key:`clip:${e}:public:${t}`,url:c.urlBuilder(`/api/objects/${e}`,{query:"_parentVideo,_canBeConsumed,_thumbnail",permissionFilterOption:I.StripMetadata,shareId:t}),bootstrapName:`shared:object:${e}`,success:r,error:a}},sharedClip(e,t,r,a){return{key:`shared:clip:${e}`,url:c.urlBuilder(`/api/objects/${e}`,{shareId:t,query:p.CLIP}),success:r,error:a}},createClip(e,t,r,a,s){return{key:"create:clip",url:`{gateway}/v1/objects/${e}/clips`,data:t,type:u.POST,invalidationKeys:[`videos:${e}`,"my:videos"],success:r,error:a,always:s}},updateClip(e,t,r,a,s){return{key:"update:clip",url:`{gateway}/v1/objects/${e}`,data:t,type:u.PUT,invalidationKeys:[`clip:${e}`],success:r,error:a,always:s}},deleteClip(e,t,r,a,s){return{key:"delete:clip",url:`{gateway}/v1/objects/${e}`,type:u.DELETE,invalidationKeys:[`videos:${t}`,"my:videos","videos"],success:r,error:a,always:s}}},k={interactiveMetadata(e,t){return{url:c.urlBuilder(`{gateway}/v1/objects/${e}`,{query:p.INTERACTIVE,permissionFilterOption:t}),key:`interactive:metadata:${e}:${t}`}},videoInteractives(e,t,r){return{key:`video:${e}:interactives:${t}:${r}`,url:c.urlBuilder(`{gateway}/v1/objects/${e}/interactives`,{query:p.INTERACTIVE_COLLECTION,cursor:r}),publicUrl:c.urlBuilder(`/api/objects/${e}/interactives`,{query:p.INTERACTIVE_COLLECTION,cursor:r})}},sharedInteractiveMetadata(e,t,r,a){return{url:c.urlBuilder(`/api/objects/${e}`,{shareId:t,query:p.INTERACTIVE}),key:`shared:interactive:metadata:${e}`,success:r,error:a}},publicInteractiveMetadata(e,t,r,a){return{url:c.urlBuilder(`/api/objects/${e}`,{query:"_parentVideo[_rating],_canBeConsumed,_thumbnail",permissionFilterOption:I.StripMetadata,shareId:t}),key:`interactive:metadata:${e}:public:${t}`,bootstrapName:`shared:object:${e}`,success:r,error:a}},interactive(e){return{url:`/api/domain/v1/interactives/${e}`,key:`interactive:${e}`,normalize:!1}},createInteractive(e,t,r){return{url:"/api/domain/v1/interactives",key:"create:interactive",type:u.POST,invalidationKeys:["my:videos"],data:e,success:t,error:r}},createInteractiveMetadata(e,t,r,a){return{url:`{gateway}/v1/objects/${e}/interactives`,key:"create:interactive:metadata",type:u.POST,data:t,success:r,error:a}},updateInteractive(e,t,r,a){return{url:`/api/domain/v1/interactives/${e}`,key:"update:interactive",type:u.PUT,data:t,success:r,error:a,formatData:()=>t,invalidationKeys:[`interactive:${e}`]}},updateInteractiveMetadata(e,t,r,a){return{url:`{gateway}/v1/objects/${e}`,key:"update:interactive:metadata",type:u.PUT,data:t,success:r,error:a}},interactiveResultSet(e,t){return{url:`/api/domain/v1/analytics/interactives/${e}/metadata/${t}`,key:`interactive:result:set:${e}:${t}`}},copyInteractive(e,t,r){return{url:`/api/domain/v1/interactives/${e}/copy`,key:"copy:interactive",type:u.POST,invalidationKeys:[`interactive:${e}`,"my:videos"],success:t,error:r}},deleteInteractiveMetadata(e,t,r){return{url:`{gateway}/v1/objects/${e}`,key:"delete:interactive",type:u.DELETE,invalidationKeys:[`interactive:${e}`,"my:videos","videos"],success:t,error:r}},removeInteractiveMetadata({libraryId:e,categoryId:t,interactiveMetadataId:r}){return{url:c.urlBuilder(`/api/domain/v1/libraries/${e}/videos`,{categoryId:t,videoIds:r}),key:`remove:interactive:metadata:${r}`,type:u.DELETE,invalidationKeys:[`interactive:${r}`,"my:videos","videos"]}},contributeToCommunity(e){return{url:`/api/domain/v2/interactives/${e}/contribute`,key:"contribute:interactive",type:u.POST}},revokefromCommunity(e){return{url:`/api/domain/v2/interactives/${e}/contribute`,key:"contribute:interactive",type:u.DELETE}},isContributed(e){return{url:`/api/domain/v2/interactives/${e}/contributed`,key:`iscontributed:${e}`,normalize:!1}},updateInteraction(e){return{url:`/api/domain/v1/interactions/bulk/${e.id}`,key:"contribute:interactive",data:e,type:u.PUT,invalidationKeys:[`interactive:${e.interactiveId}`]}}},R="shared.shared-utils",i=E.encloseNamespace(R),n={isVideo(e){return(e==null?void 0:e.typeId)===l.Video},isClip(e){return(e==null?void 0:e.typeId)===l.Clip},isInteractive(e){return(e==null?void 0:e.typeId)===l.Interactive},isVideoTypeArchived(e){return(e==null?void 0:e.status)===o.Archived},isVideoType(e){return n.isVideo(e)||n.isInteractive(e)||n.isClip(e)},hasSeries(e){var t;return!!((t=e==null?void 0:e.series)!=null&&t.id)},showVideoGuidance(e){return!e(P.StudentExperience)},showInteractivesGuidance(e){var r,a;return!e||n.isInteractive(e)?!1:!!(((a=(r=e.interactives)==null?void 0:r.data)==null?void 0:a.length)||0)},showResourcesGuidance(e){var r,a,s,m;return!e||n.isInteractive(e)?!1:!!((((a=(r=e.resources)==null?void 0:r.data)==null?void 0:a.length)||0)+(((m=(s=e.links)==null?void 0:s.data)==null?void 0:m.length)||0))},getVideoProgress(e){var t,r;return e!=null&&e.lastProgressPoint?e==null?void 0:e.lastProgressPoint:(t=e==null?void 0:e._videoProgress)!=null&&t.progress?(r=e==null?void 0:e._videoProgress)==null?void 0:r.progress:0},getThumbnail(e){var t,r,a;if(!e)return null;if(n.isVideo(e))return e.thumbnail;if(e!=null&&e._thumbnail)return e._thumbnail;if(n.isClip(e))return e.thumbnail||((t=e._parentVideo)==null?void 0:t.thumbnail);if(n.isInteractive(e))return((r=e._parentVideo)==null?void 0:r.thumbnail)||((a=e._parentClip)==null?void 0:a.thumbnail)},getDuration(e){var t,r;if(e){if(n.isVideo(e))return e.duration;if(n.isInteractive(e)){if((t=e._parentClip)!=null&&t.id)return(e._parentClip.endTime-e._parentClip.startTime)*1e3;if((r=e._parentVideo)!=null&&r.duration)return e._parentVideo.duration}if(n.isClip(e))return(e.endTime-e.startTime)*1e3}},getAnalyticsEntity(e){if(n.isVideo(e))return f.Video;if(n.isInteractive(e))return f.Interactive;if(n.isClip(e))return f.Clip},getAnalyticsData(e,t={}){var a,s,m,C,g,y;if(n.isVideo(e))return{...t||{},id:e.id,name:e.name};if(n.isClip(e)){const V={...t||{},id:e.id,name:e.name};return(a=e._parentVideo)!=null&&a.id&&(V.video={id:(s=e._parentVideo)==null?void 0:s.id,name:e._parentVideo.name}),V}const r={...t,id:e.id,interactiveId:e.interactiveId,name:e.name,status:e.status,originType:e.originType};return(m=e==null?void 0:e._parentClip)!=null&&m.id&&(r.clip={id:(C=e==null?void 0:e._parentClip)==null?void 0:C.id,name:e==null?void 0:e._parentClip.name}),(g=e==null?void 0:e._parentVideo)!=null&&g.id&&(r.video={id:(y=e==null?void 0:e._parentVideo)==null?void 0:y.id,name:e==null?void 0:e._parentVideo.name}),r},getCanBeConsumed(e){var t,r;return!e||!n.isVideoType(e)?{canNavigate:!1,canConsume:!1}:e._canBeConsumed?{canNavigate:((t=e._canBeConsumed)==null?void 0:t.reason)==="login-required"&&n.isVideo(e)||e._canBeConsumed.value===!0,canConsume:e._canBeConsumed.value,reason:(r=e._canBeConsumed)==null?void 0:r.reason}:{canNavigate:!0,canConsume:!0}},getPrivacyReasoning(e,t=!1){var g;const{canConsume:r,canNavigate:a,reason:s}=n.getCanBeConsumed(e),m=()=>n.isClip(e)?i("clipParentDeleted"):n.isInteractive(e)?i("interactiveParentDeleted"):i("videoDeleted"),C=()=>n.isClip(e)?i("clipLoginRequired"):n.isInteractive(e)?i("interactiveLoginRequired"):i("videoLoginRequired");if(!r&&!a){if(t)return C();switch(s){case"rating-not-allowed":return i("ratingNotAllowed");case"video-deleted":return m();case"clickview-private":return i("clickViewPrivate");case"private":return i("genericCannotAccess");case"login-required":return C();case"restricted-access":{const y=b.getWeightedRestriction((g=e._restrictions)==null?void 0:g.value);return(y==null?void 0:y.type)===B.Custom?i("awaitingApproval"):i("restrictedAccess")}default:return i("genericCannotAccess")}}return n.isInteractive(e)&&e.status===o.Draft?i("draftInteractive"):""},getTitle(e){if(e.name)return n.isInteractive(e)&&e.status===o.Draft?i("draftInteractiveTitle",{name:e.name}):e.name;const{canConsume:t,reason:r}=n.getCanBeConsumed(e);return i(!t&&r==="private"?"privateVideo":!t&&r==="video-deleted"?"videoUnavailable":"privateVideo")},getParentVideo(e){if(n.isVideo(e))return e;if(n.isClip(e)||n.isInteractive(e))return e._parentVideo},getRating(e){var t,r,a;return n.isVideo(e)?((t=e._rating)==null?void 0:t.value)||e.rating:(a=(r=e==null?void 0:e._parentVideo)==null?void 0:r._rating)==null?void 0:a.value},getVideoRequest(e,t,r){if(r){switch(t){case l.Video:return h.sharedVideo(e,r);case l.Clip:return T.sharedClip(e,r);case l.Interactive:return k.sharedInteractiveMetadata(e,r)}d.throw(new _("Unsupported master type"))}switch(t){case l.Video:return h.video(e);case l.Clip:return T.clip(e);case l.Interactive:return k.interactiveMetadata(e)}d.throw(new _("Unsupported master type"))},isBroadcast(e){var t,r;return!!((r=(t=e==null?void 0:e.contentLicences)==null?void 0:t.data)!=null&&r.some(a=>a.systemName===$.Era||a.systemName===$.Screenrights))},getReleaseDate(e){return e&&e.dateReleased&&n.isBroadcast(e)?w.format(e.dateReleased,"DD/MM/YYYY"):""},canViewOriginalVideo(e){var t,r;return!!((r=(t=e==null?void 0:e._parentVideo)==null?void 0:t._canBeConsumed)!=null&&r.value)},getTrackingCode(e){if(n.isVideo(e))return e.trackingCode;if(n.isClip(e)||n.isInteractive(e))return e._parentVideo.trackingCode},isInExchange(e){var t,r;return!!((r=(t=e==null?void 0:e.libraries)==null?void 0:t.data)!=null&&r.some(a=>a.typeId===l.ExchangeCollection))},canViewUploadDate(e){return!(!e||!e.dateCreated||!e._isClickViewCurated||e._isClickViewCurated.value)}};export{T as C,n as V};
|
|
2
|
+
//# sourceMappingURL=Dhn0D6IV.chunk.js.map
|