@clickview/exchange 0.46.0 → 0.47.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/B57G3PZD.chunk.css +1 -0
- package/dist/css/BBV1d-ZI.chunk.css +1 -0
- package/dist/css/BDOTXlob.chunk.css +1 -0
- package/dist/css/BIeUeS4h.chunk.css +1 -0
- package/dist/css/BPdg7JW4.chunk.css +1 -0
- package/dist/css/BiRz4h1c.chunk.css +1 -0
- package/dist/css/Bt3pBBLn.chunk.css +1 -0
- package/dist/css/Bz8F9buU.chunk.css +1 -0
- package/dist/css/C2R4QydJ.chunk.css +1 -0
- package/dist/css/C7XoyEPr.chunk.css +1 -0
- package/dist/css/CAdv9Saa.chunk.css +1 -0
- package/dist/css/CC5F5C8O.chunk.css +1 -0
- package/dist/css/CCsCPLDG.chunk.css +1 -0
- package/dist/css/CD1qrI1T.chunk.css +1 -0
- package/dist/css/CDiJwtuL.chunk.css +1 -0
- package/dist/css/CM-cscAF.chunk.css +1 -0
- package/dist/css/CY0yvCW4.chunk.css +1 -0
- package/dist/css/Ci6HCTb5.chunk.css +1 -0
- package/dist/css/CifDVjr-.chunk.css +1 -0
- package/dist/css/CphXVlxY.chunk.css +1 -0
- package/dist/css/CrSv-tYo.chunk.css +1 -0
- package/dist/css/DD13UQOa.chunk.css +1 -0
- package/dist/css/DGyCCqtO.chunk.css +1 -0
- package/dist/css/DI4l_5OJ.chunk.css +1 -0
- package/dist/css/DL_jCfRl.chunk.css +1 -0
- package/dist/css/DRlDmMhN.chunk.css +1 -0
- package/dist/css/Dkh6sNpi.chunk.css +1 -0
- package/dist/css/DlOtoSz0.chunk.css +1 -0
- package/dist/css/DnhNnDZN.chunk.css +1 -0
- package/dist/css/EnQ3abug.chunk.css +1 -0
- package/dist/css/O777zV0C.chunk.css +1 -0
- package/dist/css/fs02hBfZ.chunk.css +1 -0
- package/dist/css/jbMisi9r.chunk.css +1 -0
- package/dist/css/w4TLT4f5.chunk.css +1 -0
- package/dist/en.json +1 -0
- package/dist/scripts/B-5ydzuM.chunk.js +2 -0
- package/dist/scripts/B-5ydzuM.chunk.js.map +1 -0
- package/dist/scripts/B3-JqlcP.chunk.js +2 -0
- package/dist/scripts/B3-JqlcP.chunk.js.map +1 -0
- package/dist/scripts/B668bf5B.chunk.js +2 -0
- package/dist/scripts/B668bf5B.chunk.js.map +1 -0
- package/dist/scripts/B7u1qZUC.chunk.js +2 -0
- package/dist/scripts/B7u1qZUC.chunk.js.map +1 -0
- package/dist/scripts/B8wzW7Yj.chunk.js +2 -0
- package/dist/scripts/B8wzW7Yj.chunk.js.map +1 -0
- package/dist/scripts/B9rPD6n8.chunk.js +2 -0
- package/dist/scripts/B9rPD6n8.chunk.js.map +1 -0
- package/dist/scripts/BF36nt4r.chunk.js +2 -0
- package/dist/scripts/BF36nt4r.chunk.js.map +1 -0
- package/dist/scripts/BGnfLy0q.chunk.js +15 -0
- package/dist/scripts/BGnfLy0q.chunk.js.map +1 -0
- package/dist/scripts/BNzrcPxP.chunk.js +2 -0
- package/dist/scripts/BNzrcPxP.chunk.js.map +1 -0
- package/dist/scripts/BO4-fm-e.chunk.js +2 -0
- package/dist/scripts/BO4-fm-e.chunk.js.map +1 -0
- package/dist/scripts/BPSvvoqU.chunk.js +362 -0
- package/dist/scripts/BPSvvoqU.chunk.js.map +1 -0
- package/dist/scripts/BPZ_jyzP.chunk.js +2 -0
- package/dist/scripts/BPZ_jyzP.chunk.js.map +1 -0
- package/dist/scripts/BRAYzUlB.chunk.js +2 -0
- package/dist/scripts/BRAYzUlB.chunk.js.map +1 -0
- package/dist/scripts/BRJXjLDa.chunk.js +2 -0
- package/dist/scripts/BRJXjLDa.chunk.js.map +1 -0
- package/dist/scripts/BVcQUV7q.chunk.js +2 -0
- package/dist/scripts/BVcQUV7q.chunk.js.map +1 -0
- package/dist/scripts/B_bz6ygY.chunk.js +2 -0
- package/dist/scripts/B_bz6ygY.chunk.js.map +1 -0
- package/dist/scripts/Be9uUZcG.chunk.js +2 -0
- package/dist/scripts/Be9uUZcG.chunk.js.map +1 -0
- package/dist/scripts/BgaIiZcl.chunk.js +2 -0
- package/dist/scripts/BgaIiZcl.chunk.js.map +1 -0
- package/dist/scripts/BietNZU2.chunk.js +2 -0
- package/dist/scripts/BietNZU2.chunk.js.map +1 -0
- package/dist/scripts/BkyZfdvv.chunk.js +3 -0
- package/dist/scripts/BkyZfdvv.chunk.js.map +1 -0
- package/dist/scripts/BlDVEZsX.chunk.js +2 -0
- package/dist/scripts/BlDVEZsX.chunk.js.map +1 -0
- package/dist/scripts/Bm-ruqha.chunk.js +2 -0
- package/dist/scripts/Bm-ruqha.chunk.js.map +1 -0
- package/dist/scripts/Bo-XjbmT.chunk.js +2 -0
- package/dist/scripts/Bo-XjbmT.chunk.js.map +1 -0
- package/dist/scripts/Bpa_PvUX.chunk.js +2 -0
- package/dist/scripts/Bpa_PvUX.chunk.js.map +1 -0
- package/dist/scripts/Bu8WHAmF.chunk.js +2 -0
- package/dist/scripts/Bu8WHAmF.chunk.js.map +1 -0
- package/dist/scripts/C-jOhSzY.chunk.js +2 -0
- package/dist/scripts/C-jOhSzY.chunk.js.map +1 -0
- package/dist/scripts/C1_c6qh4.chunk.js +2 -0
- package/dist/scripts/C1_c6qh4.chunk.js.map +1 -0
- package/dist/scripts/C7yAlGG9.chunk.js +2 -0
- package/dist/scripts/C7yAlGG9.chunk.js.map +1 -0
- package/dist/scripts/CDFiJlb4.chunk.js +2 -0
- package/dist/scripts/CDFiJlb4.chunk.js.map +1 -0
- package/dist/scripts/CHNNWZoa.chunk.js +2 -0
- package/dist/scripts/CHNNWZoa.chunk.js.map +1 -0
- package/dist/scripts/CI47nh5L.chunk.js +2 -0
- package/dist/scripts/CI47nh5L.chunk.js.map +1 -0
- package/dist/scripts/CIkmhMNR.chunk.js +2 -0
- package/dist/scripts/CIkmhMNR.chunk.js.map +1 -0
- package/dist/scripts/CJ3oIQlG.chunk.js +2 -0
- package/dist/scripts/CJ3oIQlG.chunk.js.map +1 -0
- package/dist/scripts/CPApz2KV.chunk.js +2 -0
- package/dist/scripts/CPApz2KV.chunk.js.map +1 -0
- package/dist/scripts/CRO8NV-g.chunk.js +2 -0
- package/dist/scripts/CRO8NV-g.chunk.js.map +1 -0
- package/dist/scripts/CUSpSpZ7.chunk.js +8 -0
- package/dist/scripts/CUSpSpZ7.chunk.js.map +1 -0
- package/dist/scripts/CWIqj_F3.chunk.js +2 -0
- package/dist/scripts/CWIqj_F3.chunk.js.map +1 -0
- package/dist/scripts/CY7w74ke.chunk.js +50 -0
- package/dist/scripts/CY7w74ke.chunk.js.map +1 -0
- package/dist/scripts/CYrgiYqL.chunk.js +2 -0
- package/dist/scripts/CYrgiYqL.chunk.js.map +1 -0
- package/dist/scripts/C_RBC04Q.chunk.js +2 -0
- package/dist/scripts/C_RBC04Q.chunk.js.map +1 -0
- package/dist/scripts/CePx6UH8.chunk.js +2 -0
- package/dist/scripts/CePx6UH8.chunk.js.map +1 -0
- package/dist/scripts/Cg5KzJdC.chunk.js +2 -0
- package/dist/scripts/Cg5KzJdC.chunk.js.map +1 -0
- package/dist/scripts/ChTv7GMQ.chunk.js +2 -0
- package/dist/scripts/ChTv7GMQ.chunk.js.map +1 -0
- package/dist/scripts/ChiWcyj1.chunk.js +2 -0
- package/dist/scripts/ChiWcyj1.chunk.js.map +1 -0
- package/dist/scripts/Ci-X7TGl.chunk.js +5 -0
- package/dist/scripts/Ci-X7TGl.chunk.js.map +1 -0
- package/dist/scripts/Ckz2DJ_U.chunk.js +2 -0
- package/dist/scripts/Ckz2DJ_U.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/CykxXZkx.chunk.js +2 -0
- package/dist/scripts/CykxXZkx.chunk.js.map +1 -0
- package/dist/scripts/D-ZSOo7Q.chunk.js +2 -0
- package/dist/scripts/D-ZSOo7Q.chunk.js.map +1 -0
- package/dist/scripts/D-likyuC.chunk.js +2 -0
- package/dist/scripts/D-likyuC.chunk.js.map +1 -0
- package/dist/scripts/D1pufNca.chunk.js +2 -0
- package/dist/scripts/D1pufNca.chunk.js.map +1 -0
- package/dist/scripts/D4CIz80G.chunk.js +2 -0
- package/dist/scripts/D4CIz80G.chunk.js.map +1 -0
- package/dist/scripts/D7VkMmnb.chunk.js +2 -0
- package/dist/scripts/D7VkMmnb.chunk.js.map +1 -0
- package/dist/scripts/D95rI9HN.chunk.js +2 -0
- package/dist/scripts/D95rI9HN.chunk.js.map +1 -0
- package/dist/scripts/DJpMcGX1.chunk.js +2 -0
- package/dist/scripts/DJpMcGX1.chunk.js.map +1 -0
- package/dist/scripts/DMCzbHMl.chunk.js +2 -0
- package/dist/scripts/DMCzbHMl.chunk.js.map +1 -0
- package/dist/scripts/DOs-gjWY.chunk.js +2 -0
- package/dist/scripts/DOs-gjWY.chunk.js.map +1 -0
- package/dist/scripts/DPtwsIzh.chunk.js +2 -0
- package/dist/scripts/DPtwsIzh.chunk.js.map +1 -0
- package/dist/scripts/DTpRellp.chunk.js +2 -0
- package/dist/scripts/DTpRellp.chunk.js.map +1 -0
- package/dist/scripts/DTtpo7W0.chunk.js +2 -0
- package/dist/scripts/DTtpo7W0.chunk.js.map +1 -0
- package/dist/scripts/DXjf6BeH.chunk.js +2 -0
- package/dist/scripts/DXjf6BeH.chunk.js.map +1 -0
- package/dist/scripts/DYgHg3xX.chunk.js +2 -0
- package/dist/scripts/DYgHg3xX.chunk.js.map +1 -0
- package/dist/scripts/DZpf3JyV.chunk.js +2 -0
- package/dist/scripts/DZpf3JyV.chunk.js.map +1 -0
- package/dist/scripts/D_mIsJh2.chunk.js +2 -0
- package/dist/scripts/D_mIsJh2.chunk.js.map +1 -0
- package/dist/scripts/DeT4vB6l.chunk.js +2 -0
- package/dist/scripts/DeT4vB6l.chunk.js.map +1 -0
- package/dist/scripts/DhC-T3Lw.chunk.js +2 -0
- package/dist/scripts/DhC-T3Lw.chunk.js.map +1 -0
- package/dist/scripts/DhZaCYmC.chunk.js +2 -0
- package/dist/scripts/DhZaCYmC.chunk.js.map +1 -0
- package/dist/scripts/DmWfOnj1.chunk.js +2 -0
- package/dist/scripts/DmWfOnj1.chunk.js.map +1 -0
- package/dist/scripts/DqCESxCM.chunk.js +2 -0
- package/dist/scripts/DqCESxCM.chunk.js.map +1 -0
- package/dist/scripts/DvNnjPg5.chunk.js +2 -0
- package/dist/scripts/DvNnjPg5.chunk.js.map +1 -0
- package/dist/scripts/DxQMPV5P.chunk.js +2 -0
- package/dist/scripts/DxQMPV5P.chunk.js.map +1 -0
- package/dist/scripts/DxSRnTZT.chunk.js +2 -0
- package/dist/scripts/DxSRnTZT.chunk.js.map +1 -0
- package/dist/scripts/FtezGuzd.chunk.js +2 -0
- package/dist/scripts/FtezGuzd.chunk.js.map +1 -0
- package/dist/scripts/IFRPGDQf.chunk.js +2 -0
- package/dist/scripts/IFRPGDQf.chunk.js.map +1 -0
- package/dist/scripts/JNMAKyNq.chunk.js +2 -0
- package/dist/scripts/JNMAKyNq.chunk.js.map +1 -0
- package/dist/scripts/Kj832An8.chunk.js +2 -0
- package/dist/scripts/Kj832An8.chunk.js.map +1 -0
- package/dist/scripts/MwatUxhm.chunk.js +2 -0
- package/dist/scripts/MwatUxhm.chunk.js.map +1 -0
- package/dist/scripts/NLYsyNLg.chunk.js +2 -0
- package/dist/scripts/NLYsyNLg.chunk.js.map +1 -0
- package/dist/scripts/P2J0rmbX.chunk.js +2 -0
- package/dist/scripts/P2J0rmbX.chunk.js.map +1 -0
- package/dist/scripts/PzQ6JDDL.chunk.js +2 -0
- package/dist/scripts/PzQ6JDDL.chunk.js.map +1 -0
- package/dist/scripts/QfCSKVqV.chunk.js +2 -0
- package/dist/scripts/QfCSKVqV.chunk.js.map +1 -0
- package/dist/scripts/QnZLc1Rx.chunk.js +2 -0
- package/dist/scripts/QnZLc1Rx.chunk.js.map +1 -0
- package/dist/scripts/RJLacO7e.chunk.js +2 -0
- package/dist/scripts/RJLacO7e.chunk.js.map +1 -0
- package/dist/scripts/SwyafJDN.chunk.js +2 -0
- package/dist/scripts/SwyafJDN.chunk.js.map +1 -0
- package/dist/scripts/ZJlVW2Ry.chunk.js +2 -0
- package/dist/scripts/ZJlVW2Ry.chunk.js.map +1 -0
- package/dist/scripts/_sYSSSUN.chunk.js +2 -0
- package/dist/scripts/_sYSSSUN.chunk.js.map +1 -0
- package/dist/scripts/aYSRXnKS.chunk.js +2 -0
- package/dist/scripts/aYSRXnKS.chunk.js.map +1 -0
- package/dist/scripts/app-DxIP7Chi.js +203 -0
- package/dist/scripts/app-DxIP7Chi.js.map +1 -0
- package/dist/scripts/cgmaXINJ.chunk.js +2 -0
- package/dist/scripts/cgmaXINJ.chunk.js.map +1 -0
- package/dist/scripts/cw5ndfQh.chunk.js +2 -0
- package/dist/scripts/cw5ndfQh.chunk.js.map +1 -0
- package/dist/scripts/oZTtKho4.chunk.js +2 -0
- package/dist/scripts/oZTtKho4.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/q-llueA4.chunk.js +2 -0
- package/dist/scripts/q-llueA4.chunk.js.map +1 -0
- package/dist/scripts/somfQ0OC.chunk.js +2 -0
- package/dist/scripts/somfQ0OC.chunk.js.map +1 -0
- package/dist/scripts/tcOwjCrz.chunk.js +6 -0
- package/dist/scripts/tcOwjCrz.chunk.js.map +1 -0
- package/dist/scripts/tjMjOV-C.chunk.js +2 -0
- package/dist/scripts/tjMjOV-C.chunk.js.map +1 -0
- package/dist/scripts/tzCBjHpZ.chunk.js +2 -0
- package/dist/scripts/tzCBjHpZ.chunk.js.map +1 -0
- package/dist/scripts/uFv_7m8b.chunk.js +2 -0
- package/dist/scripts/uFv_7m8b.chunk.js.map +1 -0
- package/dist/scripts/yBXeHdE_.chunk.js +2 -0
- package/dist/scripts/yBXeHdE_.chunk.js.map +1 -0
- package/package.json +7 -3
- package/typings/utils/imports.d.ts +1 -1
- package/vite.config.ts +6 -0
- package/dist/css/1068-exchange-b5eaf8af44.chunk.css +0 -35
- package/dist/css/1127-exchange-0eab318199.chunk.css +0 -40
- package/dist/css/1226-exchange-217b44f8b4.chunk.css +0 -57
- package/dist/css/137-exchange-2b71022801.chunk.css +0 -25
- package/dist/css/1861-exchange-7b60c00935.chunk.css +0 -85
- package/dist/css/2494-exchange-02d7a0249c.chunk.css +0 -2
- package/dist/css/2538-exchange-4cbfe56ba3.chunk.css +0 -1
- package/dist/css/3291-exchange-be9d9f0cdb.chunk.css +0 -11
- package/dist/css/3858-exchange-06944bdfa4.chunk.css +0 -1
- package/dist/css/4075-exchange-6d2304419c.chunk.css +0 -5
- package/dist/css/6298-exchange-78ece5c7c5.chunk.css +0 -37
- package/dist/css/6332-exchange-e4754ae27a.chunk.css +0 -1
- package/dist/css/6356-exchange-8c5b220bf6.chunk.css +0 -1
- package/dist/css/7095-exchange-4cbfe56ba3.chunk.css +0 -1
- package/dist/css/7759-exchange-23bb5dd175.chunk.css +0 -8
- package/dist/css/8294-exchange-c797263ac2.chunk.css +0 -1
- package/dist/css/8589-exchange-fa098d9131.chunk.css +0 -11
- package/dist/css/8866-exchange-e80e6c6649.chunk.css +0 -10
- package/dist/css/9212-exchange-d71527fc65.chunk.css +0 -1
- package/dist/css/9611-exchange-cbf2bb5621.chunk.css +0 -5
- package/dist/css/9958-exchange-1387f35e92.chunk.css +0 -14
- package/dist/css/lite-exchange-306a09841f.css +0 -15
- package/dist/languages/en.json +0 -1
- package/dist/scripts/1068-566868eb8c-exchange.chunk.js +0 -1
- package/dist/scripts/1127-eb466cd476-exchange.chunk.js +0 -1
- package/dist/scripts/1136-4377ddadf4-exchange.chunk.js +0 -2
- package/dist/scripts/1136-4377ddadf4-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/1226-fa8e17bf95-exchange.chunk.js +0 -1
- package/dist/scripts/137-6b0ee857ea-exchange.chunk.js +0 -1
- package/dist/scripts/1498-9bee5df65b-exchange.chunk.js +0 -1
- package/dist/scripts/1861-15bfde264d-exchange.chunk.js +0 -2
- package/dist/scripts/1861-15bfde264d-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/2087-bbc1fd721f-exchange.chunk.js +0 -1
- package/dist/scripts/2117-20b23f9bbb-exchange.chunk.js +0 -1
- package/dist/scripts/2127-fc4a027054-exchange.chunk.js +0 -1
- package/dist/scripts/2490-4016ce9cfb-exchange.chunk.js +0 -1
- package/dist/scripts/2494-ecc1094b7f-exchange.chunk.js +0 -2
- package/dist/scripts/2494-ecc1094b7f-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/2507-53a6bf28db-exchange.chunk.js +0 -1
- package/dist/scripts/2538-9c7c759517-exchange.chunk.js +0 -2
- package/dist/scripts/2538-9c7c759517-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/2648-4197959943-exchange.chunk.js +0 -1
- package/dist/scripts/2877-eee7fe484e-exchange.chunk.js +0 -1
- package/dist/scripts/3291-95c549eb51-exchange.chunk.js +0 -1
- package/dist/scripts/3858-c74650e41e-exchange.chunk.js +0 -1
- package/dist/scripts/4075-6dcb1f61d7-exchange.chunk.js +0 -1
- package/dist/scripts/4312-147461771f-exchange.chunk.js +0 -1
- package/dist/scripts/442-b8af9f9d0e-exchange.chunk.js +0 -1
- package/dist/scripts/455-ceeb969c54-exchange.chunk.js +0 -1
- package/dist/scripts/4558-f27e67b02b-exchange.chunk.js +0 -1
- package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +0 -1
- package/dist/scripts/5267-1cc5bd1419-exchange.chunk.js +0 -1
- package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +0 -1
- package/dist/scripts/6156-e13e898fed-exchange.chunk.js +0 -1
- package/dist/scripts/6298-d06394a4a0-exchange.chunk.js +0 -1
- package/dist/scripts/6332-147bbcfa6c-exchange.chunk.js +0 -1
- package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +0 -1
- package/dist/scripts/6725-356f308b5e-exchange.chunk.js +0 -1
- package/dist/scripts/6831-5b22edf7c6-exchange.chunk.js +0 -1
- package/dist/scripts/7095-0846ca984f-exchange.chunk.js +0 -2
- package/dist/scripts/7095-0846ca984f-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +0 -1
- package/dist/scripts/7659-80cd0d2cd7-exchange.chunk.js +0 -1
- package/dist/scripts/7759-10fb577e95-exchange.chunk.js +0 -1
- package/dist/scripts/7782-36924dba92-exchange.chunk.js +0 -1
- package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +0 -1
- package/dist/scripts/851-df1d9024fc-exchange.chunk.js +0 -2
- package/dist/scripts/851-df1d9024fc-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +0 -1
- package/dist/scripts/8589-ca7a347624-exchange.chunk.js +0 -1
- package/dist/scripts/8619-e5f595a594-exchange.chunk.js +0 -1
- package/dist/scripts/8866-3b72551318-exchange.chunk.js +0 -1
- package/dist/scripts/8937-727d080ed9-exchange.chunk.js +0 -1
- package/dist/scripts/9212-9ac522c425-exchange.chunk.js +0 -1
- package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +0 -2
- package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +0 -60
- package/dist/scripts/9484-bd599e2b9b-exchange.chunk.js +0 -1
- package/dist/scripts/9611-8803676bac-exchange.chunk.js +0 -1
- package/dist/scripts/9866-2d10067a4e-exchange.chunk.js +0 -1
- package/dist/scripts/9958-16a6d9263e-exchange.chunk.js +0 -2
- package/dist/scripts/9958-16a6d9263e-exchange.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/bundle-a390abeecb.min.js +0 -2
- package/dist/scripts/bundle-a390abeecb.min.js.LICENSE.txt +0 -108
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DhZaCYmC.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/curated-widget/CuratedWidget.ts","../../../../libs/shared/src/apps/search/interfaces/SearchFilter.ts","../../../../libs/shared/src/constants/TopicsConstants.ts","../../../../libs/shared/src/enums/CurationTag.ts","../../../../libs/shared/src/apps/onboarding/utils/OnboardingStorageHelper.ts","../../../../libs/shared/src/apps/onboarding/utils/OnboardingPathwayHelper.ts","../../../../libs/shared/src/enums/PresentationLearningLevel.ts","../../../../libs/shared/src/apps/subjects/enums/ClassificationNodeType.ts","../../../../libs/shared/src/enums/ClassificationType.ts","../../../../libs/shared/src/enums/TagType.ts","../../../../libs/shared/src/utils/topics-helper/TopicsHelper.ts","../../../../libs/shared/src/apps/onboarding/constants/ClassificationVideos.ts","../../../../libs/shared/src/apps/onboarding/constants/SharedOnboardingScreenPredicates.ts","../../../../libs/shared/src/apps/onboarding/constants/OnboardingScreenConfigs.ts","../../../../libs/shared/src/enums/WidgetTemplate.ts","../../../../libs/shared/src/enums/WidgetTypeId.ts","../../../../libs/shared/src/utils/DashboardHelper.ts","../../../../libs/shared/src/constants/WidgetTypeIdConfig.ts","../../../../libs/shared/src/images/svg/status/WarningOutlineSvg.tsx","../../../../libs/shared/src/enums/WidgetStatus.ts","../../../../libs/shared/src/utils/WidgetHelper.ts","../../../../libs/shared/src/components/widgets/curated-widgets/components/header/WidgetHeader.tsx","../../../../libs/shared/src/components/tags/TagItem.tsx"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AllWidgetTemplateProps } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { ButtonIcon } from 'libs/shared/constants/WidgetThemingConstants';\nimport { WidgetStatus } from 'libs/shared/enums/WidgetStatus';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { CuratedObjectsWidgetData, CuratedWidgetContent, CuratedWidgetData } from 'libs/shared/interfaces';\n\nexport enum CuratedDashboardAppLink {\n LatestReleases = 'latest-releases',\n ExploreAllTopics = 'explore-all-topics',\n ClassificationLatestReleases = 'classification-latest-releases',\n ClassificationDirectory = 'classification-directory',\n}\n\nexport enum CuratedWidgetCtaAppLink {\n TopicDirectory = 'topic-directory',\n TopicNewReleases = 'topic-new-releases',\n CuratedTopic = 'curated-topic'\n}\n\nexport interface BaseWidget<TContent extends HashObject = HashObject> {\n index: number;\n templateId: WidgetTemplate;\n widgetId: WidgetTypeId;\n name: string;\n description?: string;\n content?: TContent\n}\n\nexport interface WidgetCta {\n text?: string;\n href?: string;\n icon?: ButtonIcon;\n appLink?: CuratedWidgetCtaAppLink;\n}\n\nexport type WidgetMetadata = AllWidgetTemplateProps['metadata'] & {\n showInTableOfContents: boolean;\n tocIndentation: number;\n headingOptional: boolean;\n};\n\nexport interface WidgetPreference {\n id: string;\n index?: number;\n hidden?: boolean;\n}\n\nexport interface CuratedWidget<\n TData extends CuratedWidgetData = CuratedWidgetData,\n TContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BaseWidget<TContent> {\n id: string;\n dashboardId: string;\n data: TData;\n status: WidgetStatus;\n metadata?: Partial<WidgetMetadata>;\n preferences?: WidgetPreference[];\n\n // If a widget has curriculum IDs set, then it won't be accessible to anyone who doesn't have one of those curriculums\n curriculumIds?: string[];\n}\n\nexport type CuratedMediaWidget<\n TContent extends CuratedWidgetContent = CuratedWidgetContent\n> = CuratedWidget<CuratedObjectsWidgetData, TContent>;","import { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { FilterStateHash } from '../reducers';\n\nimport { FilterProps } from './FilterProps';\nimport { SearchIndices } from './SearchResults';\n\nconst FilterIdNames =\n[\n 'sort', // \"sort\" isn't even a filter but it tends to go with our filters in our designs\n 'classification',\n 'presentation',\n 'audience',\n 'yearGroup',\n 'moviesAndTv',\n 'type',\n 'rating',\n 'interactives',\n 'clips',\n 'classroom',\n 'hasResources',\n 'hasSubtitles',\n 'productionYear',\n 'isHd',\n 'producedByClickView',\n 'duration',\n 'tagOrClassification',\n 'status',\n 'isAdmin',\n 'bulkActionType',\n 'userType',\n 'filter',\n 'channel',\n 'dateBroadcast',\n 'categoryId',\n 'hasInteractives',\n 'jobStatus',\n 'source',\n 'customerStatus',\n 'specialEventType',\n 'customerType'\n] as const;\n\n/**\n * Any filters that shouldn't be sent to the backend as a filter\n * and are instead handled differently by the frontend\n */\nconst FilterBlacklist: Partial<Record<FilterIds, boolean>> = {\n type: true\n};\n\nexport type FilterIds = typeof FilterIdNames[number];\n\nexport const FilterWhitelist = FilterIdNames.reduce((acc, prev) => {\n return {\n ...acc,\n [prev]: !FilterBlacklist[prev]\n };\n}, {} as Record<FilterIds, boolean>);\n\nexport type FilterType = 'radio' | 'checkbox' | 'nested-checkbox' | 'grouped-checkbox' | 'switch' | 'more-filters' | 'rating' | 'dropdown' | 'tag' | 'button';\n\nexport interface SearchFilter<TFilterOptionId = string> {\n id: FilterIds;\n type: FilterType;\n compatibleIndices: SearchIndices[];\n\n name?: string;\n icon?: SvgIcon;\n description?: string;\n options?: FilterOption<TFilterOptionId>[];\n labelPrefix?: string;\n\n // For second layer options, for example 'presentation' checkbox filter has 'audience' as second layer option\n secondaryId?: FilterIds;\n\n customComponent?: (props: FilterProps) => JSX.Element;\n disabled?: boolean;\n disableOptions?: (options: FilterOption[], filters: SearchFilter[], state: FilterStateHash) => FilterOption[];\n}\n\nexport interface MoreFilters extends Omit<SearchFilter, 'id' | 'compatibleIndices'> {\n filters: SearchFilter[];\n id: string;\n}\n\nexport interface FilterOption<TId = string> {\n id: TId;\n name: string;\n default?: boolean;\n disabled?: boolean;\n secondLayerSelection?: FilterOption[];\n secondLayerOptions?: FilterOption[];\n group?: string;\n}\n\nexport type ProductionYearFilterOptions =\n 'any-year'\n | 'this-year'\n | 'last-3-years'\n | 'last-5-years';\n\nexport type DurationFilterOptions =\n 'bite-sized'\n | 'short'\n | 'medium'\n | 'long';\n\n\nexport enum SourceFilterOptions {\n MyVideos = 'my-videos',\n School = 'school',\n ExchangeArchive = 'exchange-archive',\n ClickView = 'clickview'\n}\n\nexport enum TypeFilterOptions {\n Video = 'video',\n Series = 'series',\n Playlist = 'playlist',\n Classification = 'classification',\n Clip = 'clip',\n Interactive = 'interactive',\n Company = 'company',\n Category = 'category'\n}","export const TopicsConstants = {\n MULTI_PRESENTATION_THRESHOLD: 2\n};","export enum CurationTag {\n CLICKVIEW_CURATED = 'is_clickview_curated',\n MOVIES_AND_TV = 'is_movies_and_tv',\n STREAMABLE_CURATED = 'is_streamable_learning_curated'\n}","import { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { PersonaId } from 'libs/shared/apps/onboarding/constants/JobTitlePersonaMapping';\nimport { OnboardingUsageIntention } from 'libs/shared/apps/onboarding/interfaces/OnboardingUsageIntention';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst ONBOARDING_PERSONA_KEY = 'onboarding:persona';\nconst ONBOARDING_USAGE_INTENTION_KEY = 'onboarding:usage:intention';\nconst ONBOARDING_JOB_TITLE_REDIRECT_KEY = 'onboarding:had:job:title';\nconst ONBOARDING_VIDEOS_V2 = 'onboarding:videos:v2';\n\nfunction getScopedKey(userId: string, key: string) {\n if (!userId)\n return key;\n\n return `${userId}:${key}`;\n}\n\nfunction get<T>(userId: string, key: string) {\n const value = LocalStorageHelper.get(key);\n const scopedKey = getScopedKey(userId, key);\n\n /**\n * When onboarding was first released, we persisted some state in local storage, but the\n * key was not scoped to the user's ID. This lead to bugs where if a user were to create a\n * new account and go through onboarding a second time, they would see the state from the\n * first account.\n * \n * We've now moved to scoping the keys to prevent this, and this is here to migrate the old\n * keys to the new format.\n */\n if (value !== null) {\n LocalStorageHelper.remove(key);\n LocalStorageHelper.set<T>(scopedKey, value);\n }\n\n return LocalStorageHelper.get<T>(scopedKey);\n}\n\nfunction set<T>(userId: string, key: string, value: T) {\n LocalStorageHelper.set<T>(getScopedKey(userId, key), value);\n}\n\nfunction remove(userId: string, key: string) {\n const value = LocalStorageHelper.get(key);\n\n if (value !== null)\n LocalStorageHelper.remove(key);\n\n LocalStorageHelper.remove(getScopedKey(userId, key));\n}\n\nexport const OnboardingStorageHelper = {\n getPersona(userId: string): PersonaId {\n return get<PersonaId>(userId, ONBOARDING_PERSONA_KEY);\n },\n\n updatePersona(userId: string, jobTitle: JobTitles | ''): void {\n const onboardingPersona = UserHelper.getPersonaFromJobTitle(jobTitle);\n set<PersonaId>(userId, ONBOARDING_PERSONA_KEY, onboardingPersona || 'teacher');\n },\n \n getUsageIntention(userId: string): OnboardingUsageIntention {\n return get<OnboardingUsageIntention>(userId, ONBOARDING_USAGE_INTENTION_KEY);\n },\n\n updateUsageIntention(userId: string, usageIntention: OnboardingUsageIntention): void {\n set<OnboardingUsageIntention>(userId, ONBOARDING_USAGE_INTENTION_KEY, usageIntention);\n },\n\n removeUsageIntention(userId: string): void {\n remove(userId, ONBOARDING_USAGE_INTENTION_KEY);\n },\n\n getJobTitleRedirect(userId: string, jobTitle: JobTitles): boolean {\n if (typeof get(userId, ONBOARDING_JOB_TITLE_REDIRECT_KEY) !== 'boolean')\n set(userId, ONBOARDING_JOB_TITLE_REDIRECT_KEY, !!jobTitle);\n \n return !get(userId, ONBOARDING_JOB_TITLE_REDIRECT_KEY);\n },\n\n getOnboardingVideoSelections<T>(userId: string) {\n return get<T>(userId, ONBOARDING_VIDEOS_V2);\n },\n\n setOnboardingVideoSelections<T>(userId: string, videos: T[]) {\n set<T[]>(userId, ONBOARDING_VIDEOS_V2, videos);\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { OnboardingContext, OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { OnboardingScreenAppLinks } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenAppLinks';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { SettingsLookup } from 'libs/shared/enums/SettingName';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Classification, CurrentUser, Customer, Presentation, User } from 'libs/shared/interfaces';\nimport { SettingsHelper } from 'libs/shared/utils/SettingsHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { OnboardingStorageHelper } from './OnboardingStorageHelper';\n\n/**\n * This is a big determining factor for when we want to redirect users to onboarding\n * upon login.\n * \n * Basically, all users who existed before onboarding was released to them should not be\n * automatically redirected to onboarding on login. They should just see the nag widget on\n * the Discover page instead.\n * \n * But, users who joined after onboarding was released for their customer _should_ be redirected\n * after they first activate their account.\n * \n * So, we check the dateCreated on the user to determine this.\n */\nfunction getOnboardingReleaseDate(\n presentations: Presentation[],\n customer: Customer\n): string {\n /**\n * Onboarding was initially released on March 26, 2024 to 10% of our existing customer base,\n * and 100% of new customers created from then on.\n */\n const initialReleaseDate = '2024-03-26';\n\n /**\n * Next, we upgraded all of Tertiary to the new product, and they all received access to the\n * new onboarding.\n */\n const tertiaryReleaseDate = '2024-11-28';\n\n /**\n * Finally, we released onboarding to the rest of our customer base.\n */\n const fullReleaseDate = '2024-12-11';\n\n const hasTertiaryPresentation = presentations.some(p => {\n return (\n p.id.toString() === HardCoded.PresentationIds.AU_TERTIARY.toString() ||\n p.id.toString() === HardCoded.PresentationIds.UK_TERTIARY.toString()\n );\n });\n\n // Tertiary customers created after this date will be redirected to onboarding\n if (hasTertiaryPresentation)\n return tertiaryReleaseDate;\n\n /**\n * Users who are a part of a customer that was created before the initial\n * onboarding release date will be redirected to onboarding only if they\n * were created after the full release date.\n */\n if (DateHelper.isBefore(customer?.dateCreated, initialReleaseDate))\n return fullReleaseDate;\n\n /**\n * Users who were created after the initial release date should be redirected to\n * onboarding.\n */\n return initialReleaseDate;\n}\n\ntype ScreenNode = {\n number?: number;\n progressBarNumber?: number;\n isComplete?: boolean;\n includeInProgressBar: boolean;\n next: OnboardingScreenId | null;\n previous: OnboardingScreenId | null;\n};\n\ntype ScreenNodeDictionary = {\n [key in OnboardingScreenId]?: ScreenNode;\n};\n\nexport interface OnboardingPathway {\n screens: ScreenNodeDictionary;\n currentScreen: OnboardingScreenId;\n totalScreens: number;\n totalScreensInProgressBar: number;\n hasCompletedAllSteps: boolean;\n}\n\ninterface GetPathwayArgs {\n jobTitle: JobTitles;\n userSettings: SettingsLookup;\n presentations: Presentation[];\n curriculums: Presentation[];\n preferredSubjects: Classification[];\n preferredPresentation: Presentation;\n appLink: Core.AppLink;\n appLinks: OnboardingScreenAppLinks;\n hasPermissions: HasPermissionsFunc;\n hasPlaylist: boolean;\n masterUser: User;\n customer: Customer;\n currentUser: CurrentUser;\n}\n\nexport const OnboardingPathwayHelper = {\n getOnboardingPathway(options: GetPathwayArgs): OnboardingPathway {\n const {\n jobTitle,\n userSettings,\n presentations,\n curriculums,\n preferredPresentation,\n preferredSubjects,\n hasPlaylist,\n appLink,\n appLinks,\n masterUser,\n customer,\n currentUser,\n hasPermissions\n } = options;\n \n const onboardingPersona = OnboardingStorageHelper.getPersona(currentUser?.id);\n\n if (!onboardingPersona && jobTitle)\n OnboardingStorageHelper.updatePersona(currentUser?.id, jobTitle);\n\n if (onboardingPersona && onboardingPersona !== UserHelper.getPersonaFromJobTitle(jobTitle))\n OnboardingStorageHelper.updatePersona(currentUser?.id, jobTitle);\n\n const onboardingContext: OnboardingContext = {\n jobTitle,\n hasPlaylist,\n masterUser,\n customer,\n presentations: presentations || [],\n curriculums: curriculums || [],\n preferredPresentation,\n preferredSubjects,\n instanceRegion: currentUser?.instanceRegion,\n hasPermissions,\n userSettings\n };\n\n // Get the current onboarding screen that the user is on\n let currentScreen = OnboardingPathwayHelper.getCurrentScreen(appLink, appLinks);\n\n const onboardingScreenConfigs = Object.values(OnboardingScreenConfigs);\n\n const graphDictionary: ScreenNodeDictionary = {};\n let previous: OnboardingScreenId = null;\n\n let firstScreenId: OnboardingScreenId = null;\n let screenNumber = 0;\n let progressBarNumber = 0;\n let hasCompletedAllSteps = true;\n\n onboardingScreenConfigs.forEach(screenConfig => {\n if (!screenConfig.predicate(onboardingContext))\n return;\n\n if (!firstScreenId)\n firstScreenId = screenConfig.id;\n\n const hasCompletedStep = SettingsHelper.get<boolean>(userSettings, screenConfig.setting);\n\n if (!hasCompletedStep)\n hasCompletedAllSteps = false;\n \n // If the user isn't currently viewing an onboarding screen, set the first incomplete screen as the current screen\n if (!currentScreen && !hasCompletedStep)\n currentScreen = screenConfig.id;\n\n screenNumber++;\n \n graphDictionary[screenConfig.id] = {\n isComplete: hasCompletedStep,\n next: null,\n previous,\n number: screenNumber,\n includeInProgressBar: false\n };\n\n if (screenConfig.includeInProgressBar(onboardingContext)) {\n progressBarNumber++;\n graphDictionary[screenConfig.id].progressBarNumber = progressBarNumber;\n graphDictionary[screenConfig.id].includeInProgressBar = true;\n }\n\n if (screenConfig.branches?.length) {\n screenConfig.branches.forEach(branch => {\n graphDictionary[branch] = {\n next: screenConfig.id,\n previous: screenConfig.id,\n includeInProgressBar: false\n };\n });\n }\n\n if (previous)\n graphDictionary[previous].next = screenConfig.id;\n\n previous = screenConfig.id;\n });\n\n if (!currentScreen && !hasCompletedAllSteps)\n currentScreen = firstScreenId;\n\n return {\n screens: graphDictionary,\n currentScreen,\n totalScreens: screenNumber,\n totalScreensInProgressBar: progressBarNumber,\n hasCompletedAllSteps\n };\n },\n\n getNextAppLink(pathway: OnboardingPathway, appLinks: OnboardingScreenAppLinks): Core.AppLink {\n const currentNode = pathway.screens[pathway.currentScreen];\n const nextScreenId = currentNode?.next;\n\n if (!nextScreenId)\n return null;\n\n return appLinks[nextScreenId];\n },\n\n getPreviousAppLink(pathway: OnboardingPathway, appLinks: OnboardingScreenAppLinks): Core.AppLink {\n const currentNode = pathway.screens[pathway.currentScreen];\n const previousScreenId = currentNode?.previous;\n\n if (!previousScreenId)\n return null;\n\n return appLinks[previousScreenId];\n },\n\n // Get the current screen that the user is on based on the current app route\n getCurrentScreen(currentAppLink: Core.AppLink, appLinks: OnboardingScreenAppLinks): OnboardingScreenId {\n const currentScreen = Object.entries(appLinks).find(([ , appLink ]) => {\n return appLink.action === currentAppLink.action;\n });\n\n if (!currentScreen)\n return null;\n\n return ArrayHelper.first(currentScreen) as keyof OnboardingScreenAppLinks;\n },\n\n getProgress(pathway: OnboardingPathway) {\n const currentStepNumber = pathway.screens[pathway.currentScreen]?.number;\n const currentStepProgressBarNumber = pathway.screens[pathway.currentScreen]?.progressBarNumber;\n const totalScreens = pathway.totalScreens;\n const totalScreensInProgressBar = pathway.totalScreensInProgressBar;\n\n const progressBarPercentage = (currentStepProgressBarNumber / totalScreensInProgressBar) * 100;\n const overallPercentage = ((currentStepNumber - 1) / totalScreens) * 100;\n\n return {\n showProgressBar: pathway.screens[pathway.currentScreen]?.includeInProgressBar,\n currentStepNumber,\n currentStepProgressBarNumber,\n totalScreens,\n totalScreensInProgressBar,\n progressBarPercentage,\n overallPercentage\n };\n },\n\n hasNonBdmTrial(hasPermissions: HasPermissionsFunc): boolean {\n return hasPermissions(PermissionName.ViewTrialUpgrade);\n },\n\n getOnboardingScreenStates(pathway: OnboardingPathway) {\n const completedScreens: OnboardingScreenId[] = [];\n const incompleteScreens: OnboardingScreenId[] = [];\n \n Object.keys(pathway.screens).forEach((screenId: OnboardingScreenId) => {\n if (pathway.screens[screenId].isComplete) {\n completedScreens.push(screenId);\n } else {\n incompleteScreens.push(screenId);\n }\n });\n \n return {\n completedScreens,\n incompleteScreens\n };\n },\n\n shouldRedirectToOnboarding(\n masterUser: User,\n customer: Customer,\n hasPermissions: HasPermissionsFunc,\n availablePresentations: Presentation[]\n ): boolean {\n /**\n * All users created after the release date of onboarding should be redirected into onboarding\n * the first time they open the product\n */\n if (masterUser?.dateCreated >= getOnboardingReleaseDate(availablePresentations, customer))\n return true;\n\n /**\n * If a trial user was created before the onboarding release date, but they don't have a job title,\n * we should redirect them to onboarding as we need to collect their job title.\n */\n if (OnboardingPathwayHelper.hasNonBdmTrial(hasPermissions)) {\n return OnboardingStorageHelper.getJobTitleRedirect(masterUser?.id, masterUser?.userProfile?.metadata?.jobTitle);\n }\n\n return false;\n }\n};","export enum PresentationLearningLevel {\n Level_1 = 1, // Primary/Elementary School\n Level_2 = 2, // Middle School\n Level_3 = 3, // Secondary/High School\n Level_4 = 4 // Tertiary/Post-Secondary\n}\n","export enum ClassificationNodeType {\n Root = 'root'\n}","// Maps to enum in SubjectApi but uses the\n// key rather than the value\nexport enum ClassificationType{\n Subject = 'Subject',\n CurriculumAudience = 'CurriculumAudience',\n CurriculumSubject = 'CurriculumSubject',\n CurriculumArea = 'CurriculumArea',\n CurriculumLeaf = 'CurriculumLeaf',\n CurriculumMetadata = 'CurriculumMetadata'\n}","export enum TagType {\n Normal = 'normal',\n Pedagogy = 'pedagogy',\n Hidden = 'hidden',\n Skill = 'skill',\n Curation = 'curation'\n}\n\n/**\n * This should **only** be used to create new tags in master (as it only accepts enum values).\n * Use the string enum above for all other cases.\n */\nexport enum TagTypeNumber {\n Normal = 0,\n Pedagogy = 1,\n Hidden = 2,\n Skill = 3,\n Curation = 4\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClassificationTab } from 'libs/shared/apps/subjects/components/classification-dashboard/classification-tabs/ClassificationTabs';\nimport { ClassificationNodeType } from 'libs/shared/apps/subjects/enums/ClassificationNodeType';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { BaseObject, CuratedDashboard, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\nimport { Classification } from 'libs/shared/interfaces/models/Classification';\n\nconst namespace = 'subjects.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TopicCounts {\n dashboardVideoCount: number;\n childDashboardVideoCount: number;\n\n dashboardResourceCount: number;\n childDashboardResourceCount: number;\n\n dashboardNewVideosCount: number;\n childDashboardNewVideoCount: number;\n childClassificationCount: number;\n}\n\ntype PresentationImageType = 'cover' | 'tall-poster' | 'topic-banner' | 'new-release-banner';\n\nexport const TopicsHelper = {\n isPresentation(obj: BaseObject): obj is Presentation {\n return 'learningLevel' in obj;\n },\n\n isTopicClassification(obj: BaseObject): obj is Classification {\n return obj?.type === ClassificationType.Subject;\n },\n\n getMappedPresentationLevel(presentationLevel: PresentationLearningLevel): string | PresentationLearningLevel {\n // Handle usage of both enum value and its stringified version (online vs. lite)\n return typeof presentationLevel === 'string'\n ? PresentationLearningLevel[presentationLevel]\n : presentationLevel;\n },\n\n getMappedPresentationBackgroundColourClass(presentationLevel: PresentationLearningLevel): string {\n switch (TopicsHelper.getMappedPresentationLevel(presentationLevel)) {\n case PresentationLearningLevel.Level_1:\n return 'bg-indigo';\n\n case PresentationLearningLevel.Level_3:\n return 'bg-blue';\n \n case PresentationLearningLevel.Level_4:\n return 'bg-navy';\n\n default:\n case PresentationLearningLevel.Level_2:\n return 'bg-green';\n }\n },\n\n // TODO: This should maybe live on the presentation metadata at some point instead.\n getMappedPresentationBackgroundColourCode(presentationLevel: PresentationLearningLevel): string {\n switch (TopicsHelper.getMappedPresentationLevel(presentationLevel)) {\n case PresentationLearningLevel.Level_1:\n return '#7A76E8';\n\n case PresentationLearningLevel.Level_3:\n return '#38A2E8';\n\n case PresentationLearningLevel.Level_4:\n return '#1B2D71';\n\n default:\n case PresentationLearningLevel.Level_2:\n return '#5DC786';\n }\n },\n\n getPresentationLevelImage(presentationLevel: PresentationLearningLevel, imageType: PresentationImageType): string {\n switch (TopicsHelper.getMappedPresentationLevel(presentationLevel)) {\n case PresentationLearningLevel.Level_1: {\n if (imageType === 'topic-banner')\n return HardCoded.Images.Level_1.TOPIC_BANNER;\n if (imageType === 'new-release-banner')\n return HardCoded.Images.Level_1.NEW_RELEASES_BANNER;\n if (imageType === 'cover')\n return HardCoded.Images.Level_1.TOPIC_COVER;\n if (imageType === 'tall-poster')\n return HardCoded.Images.Level_1.TOPIC_TALL_POSTER;\n }\n\n case PresentationLearningLevel.Level_2: {\n if (imageType === 'topic-banner')\n return HardCoded.Images.Level_2.TOPIC_BANNER;\n if (imageType === 'new-release-banner')\n return HardCoded.Images.Level_2.NEW_RELEASES_BANNER;\n if (imageType === 'cover')\n return HardCoded.Images.Level_2.TOPIC_COVER;\n if (imageType === 'tall-poster')\n return HardCoded.Images.Level_2.TOPIC_TALL_POSTER;\n }\n\n default:\n case PresentationLearningLevel.Level_3: {\n if (imageType === 'topic-banner')\n return HardCoded.Images.Level_3.TOPIC_BANNER;\n if (imageType === 'new-release-banner')\n return HardCoded.Images.Level_3.NEW_RELEASES_BANNER;\n if (imageType === 'cover')\n return HardCoded.Images.Level_3.TOPIC_COVER;\n if (imageType === 'tall-poster')\n return HardCoded.Images.Level_3.TOPIC_TALL_POSTER;\n }\n\n case PresentationLearningLevel.Level_4: {\n if (imageType === 'topic-banner')\n return HardCoded.Images.Level_4.TOPIC_BANNER;\n\n if (imageType === 'cover')\n return HardCoded.Images.Level_4.TOPIC_COVER;\n }\n }\n },\n\n getExploreAllTopicsTitle(presentationName: string, presentationCount: number): string {\n if (presentationCount < TopicsConstants.MULTI_PRESENTATION_THRESHOLD)\n return getPhrase('exploreAllTopicsHeading');\n\n return getPhrase('exploreAllTopicsDynamicHeading', { presentationName });\n },\n\n getExploreAllTopicsBreadcrumb(presentationName: string, presentationCount: number): string {\n if (presentationCount < TopicsConstants.MULTI_PRESENTATION_THRESHOLD)\n return getPhrase('exploreAllTopicsHeading');\n\n return presentationName;\n },\n\n isFollowing(classification: Classification): boolean {\n return classification?.followers?.data?.length === 1;\n },\n\n isTopLevelTopic(classification: Classification): boolean {\n return !!classification?.parentIds?.includes(ClassificationNodeType.Root);\n },\n\n canHaveVideoListTab(dashboard: CuratedDashboard): boolean {\n return dashboard?.widgets?.some(w => w.metadata?.showInTableOfContents);\n },\n\n getActiveTopicTab(classification: Classification, targetType: DashboardTargetType): ClassificationTab {\n if (TopicsHelper.isTopLevelTopic(classification))\n return targetType === DashboardTargetType.Classification ? 'new-releases' : 'all-topics';\n\n return targetType === DashboardTargetType.Classification ? 'curated-topic' : 'curriculum';\n },\n\n getCounts(classification: Classification): TopicCounts {\n const childClassificationCount = classification?.metadata?.childClassificationCount ?? 0;\n\n if (!classification?.externalMetadata) {\n return {\n childClassificationCount,\n\n dashboardVideoCount: 0,\n childDashboardVideoCount: 0,\n\n dashboardResourceCount: 0,\n childDashboardResourceCount: 0,\n\n dashboardNewVideosCount: 0,\n childDashboardNewVideoCount: 0\n };\n }\n\n return {\n childClassificationCount,\n\n dashboardVideoCount: classification.externalMetadata.dashboardVideoCount || 0,\n childDashboardVideoCount: classification.externalMetadata.childDashboardVideoCount || 0,\n\n dashboardResourceCount: classification.externalMetadata.dashboardResourceCount || 0,\n childDashboardResourceCount: classification.externalMetadata.childDashboardResourceCount || 0,\n\n dashboardNewVideosCount: classification.externalMetadata.dashboardNewVideosCount || 0,\n childDashboardNewVideoCount: classification.externalMetadata.childDashboardNewVideoCount || 0\n };\n },\n\n isTertiary(presentationId: string): boolean {\n return (\n presentationId?.toString() === HardCoded.PresentationIds.AU_TERTIARY.toString() ||\n presentationId?.toString() === HardCoded.PresentationIds.UK_TERTIARY.toString()\n );\n },\n\n isNewZealandTopic(presentationId: string): boolean {\n return (\n presentationId?.toString() === HardCoded.PresentationIds.NZ_PRIMARY.toString() ||\n presentationId?.toString() === HardCoded.PresentationIds.NZ_SECONDARY.toString()\n );\n },\n\n isCanadaTopic(presentationId: string): boolean {\n return (\n presentationId?.toString() === HardCoded.PresentationIds.CA_ELEMENTARY.toString() ||\n presentationId?.toString() === HardCoded.PresentationIds.CA_MIDDLE.toString() ||\n presentationId?.toString() === HardCoded.PresentationIds.CA_HIGH.toString()\n );\n },\n\n isInternationalTopic(presentationId: string): boolean {\n return (\n presentationId?.toString() === HardCoded.PresentationIds.INT_PRIMARY.toString() ||\n presentationId?.toString() === HardCoded.PresentationIds.INT_SECONDARY.toString()\n );\n },\n\n isMtv(classification: Classification): boolean {\n if (!classification?.tags?.data)\n return false;\n\n return classification.tags.data.some(t => t.tagType === TagType.Curation && t.name === CurationTag.MOVIES_AND_TV);\n },\n\n sortByLearningLevel(a: Classification, b: Classification, availablePresentations: Presentation[]): number {\n const aPresentation = availablePresentations.find(p => p?.id.toString() === a?.presentationId?.toString());\n const bPresentation = availablePresentations.find(p => p?.id.toString() === b?.presentationId?.toString());\n const aLearningLevel = PresentationLearningLevel[aPresentation?.learningLevel] as unknown as number; // ts does not play nice\n const bLearningLevel = PresentationLearningLevel[bPresentation?.learningLevel] as unknown as number;\n\n return aLearningLevel - bLearningLevel;\n }\n};","import ClassificationVideosMapJson from 'libs/shared/apps/onboarding/constants/classification-videos.json';\n\ntype Mappings = Record<string, Record<string, { name: string; videoIds: string[] }>>;\nconst ClassificationVideosMap = ClassificationVideosMapJson as Mappings;\n\nexport { ClassificationVideosMap };","import { ClassificationVideosMap } from './ClassificationVideos';\nimport { OnboardingContext } from './OnboardingScreenConfigs';\n\n\nexport const SharedOnboardingScreenPredicates = {\n CreatePlaylist: (context: OnboardingContext) => {\n /**\n * We don't want to prompt a user who has created a playlist in the past\n * to create their \"first\" playlist.\n */\n if (context.hasPlaylist)\n return false;\n\n /**\n * This is a safety check to make sure that we have videos to show the user based on the\n * presentation that they've selected. Just in case we introduce a new presentation and\n * accidentally forget to add hardcoded videos to `ClassificationVideosMap` for it.\n */\n if (context.preferredPresentation && !ClassificationVideosMap[context.preferredPresentation.id])\n return false;\n\n return true;\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { OnboardingPathwayHelper } from 'libs/shared/apps/onboarding/utils/OnboardingPathwayHelper';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { SettingName, SettingsLookup } from 'libs/shared/enums/SettingName';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Classification, Customer, Presentation, User } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { SharedOnboardingScreenPredicates } from './SharedOnboardingScreenPredicates';\n\nconst namespace = 'onboarding.constants';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface OnboardingContext {\n masterUser?: User;\n customer?: Customer;\n jobTitle?: JobTitles;\n instanceRegion?: InstanceRegion;\n presentations?: Presentation[];\n curriculums?: Presentation[];\n preferredPresentation?: Presentation;\n preferredSubjects?: Classification[];\n hasPlaylist?: boolean;\n hasPermissions?: HasPermissionsFunc;\n userSettings: SettingsLookup;\n}\n\nexport interface OnboardingScreenConfig {\n id: OnboardingScreenId;\n setting: SettingName;\n analyticsLocation: LocationContext;\n includeInProgressBar: (context: OnboardingContext) => boolean;\n predicate: (context: OnboardingContext) => boolean;\n getWidgetHeading: (isKdm: boolean) => string;\n getWidgetDescription: (isKdm: boolean) => string;\n getPageTitle: () => string;\n branches?: OnboardingScreenId[];\n}\n\nexport const OnboardingScreenConfigs: Record<OnboardingScreenId, OnboardingScreenConfig> = {\n /**\n * The welcome video screen plays an introductory video for new users.\n */\n 'welcome-video': {\n id: 'welcome-video',\n getPageTitle: () => getPhrase('welcomeVideoPageTitle'),\n predicate: context => {\n /**\n * Users who will be redirected to onboarding by the onboarding filter will always be\n * new users. This means that they should see the welcome video screen.\n */\n if (!OnboardingPathwayHelper.shouldRedirectToOnboarding(\n context.masterUser,\n context.customer,\n context.hasPermissions,\n context.presentations\n )) {\n return false;\n }\n\n // We currently only have a welcome video for the US.\n return context.instanceRegion === InstanceRegion.US;\n },\n setting: SettingName.HasCompletedOnboardingStepWelcomeVideo,\n analyticsLocation: LocationContext.OnboardingWelcomeVideoScreen,\n includeInProgressBar: () => false,\n getWidgetHeading: () => getPhrase('selectRoleHeading'),\n getWidgetDescription: () => getPhrase('selectRoleMessage')\n },\n\n 'select-role': {\n id: 'select-role',\n getPageTitle: () => getPhrase('selectRolePageTitle'),\n predicate: (context: OnboardingContext) => {\n /**\n * Some trial sign up flows include a step for users to select their job title\n * before they reach onboarding. This is the only circumstance where we won't show\n * this screen to users.\n */\n if (OnboardingPathwayHelper.hasNonBdmTrial(context.hasPermissions)) {\n // Trial users who don't have a job title set must see this screen\n if (!context.jobTitle)\n return true;\n\n /**\n * Trial users who do have a job title will continue seeing this screen if\n * we can determine that they set it during onboarding\n */\n if (context.userSettings?.[SettingName.HasCompletedOnboardingStepSelectRole]?.value)\n return true;\n\n return false;\n }\n \n return true;\n },\n setting: SettingName.HasCompletedOnboardingStepSelectRole,\n analyticsLocation: LocationContext.OnboardingSelectRoleScreen,\n includeInProgressBar: () => true,\n getWidgetHeading: () => getPhrase('selectRoleHeading'),\n getWidgetDescription: () => getPhrase('selectRoleMessage')\n },\n\n 'usage-intention': {\n id: 'usage-intention',\n getPageTitle: () => getPhrase('usageIntentionPageTitle'),\n predicate: () => true,\n setting: SettingName.HasCompletedOnboardingStepUsageIntention,\n analyticsLocation: LocationContext.OnboardingUsageIntentionScreen,\n includeInProgressBar: () => true,\n getWidgetHeading: () => getPhrase('usageIntentionHeading'),\n getWidgetDescription: () => getPhrase('usageIntentionMessage')\n },\n\n 'subjects-summary': {\n id: 'subjects-summary',\n getPageTitle: () => getPhrase('subjectsSummaryPageTitle'),\n predicate: context => {\n /**\n * This screen is exclusively for users who existed before we released onboarding,\n * and selected some subject preferences in the past.\n * It offers them the opportunity to optionally review and update their preferences.\n */\n if (!context.preferredSubjects?.length)\n return false;\n\n /**\n * If a user has completed any of these 3 steps, then they shouldn't be seeing the summary.\n */\n if (\n context.userSettings?.[SettingName.HasCompletedOnboardingStepSubjects]?.value ||\n context.userSettings?.[SettingName.HasCompletedOnboardingStepSelectCurriculum]?.value ||\n context.userSettings?.[SettingName.HasCompletedOnboardingStepSchoolLevel]?.value\n ) {\n return false;\n }\n\n return true;\n },\n setting: SettingName.HasCompletedOnboardingStepSubjectsSummary,\n analyticsLocation: LocationContext.OnboardingSubjectsSummaryScreen,\n includeInProgressBar: () => true,\n getWidgetHeading: () => getPhrase('subjectsHeading'),\n getWidgetDescription: () => getPhrase('subjectsMessage'),\n branches: [ 'school-level', 'subjects', 'select-curriculum' ]\n },\n\n 'school-level': {\n id: 'school-level',\n getPageTitle: () => getPhrase('schoolLevelPageTitle'),\n predicate: context => {\n if (OnboardingScreenConfigs['subjects-summary'].predicate(context))\n return false;\n\n if (context.presentations?.length < 2)\n return false;\n\n const hasTertiary = context.presentations?.some(p => {\n return TopicsHelper.getMappedPresentationLevel(p.learningLevel) === PresentationLearningLevel.Level_4;\n });\n\n if (hasTertiary)\n return false;\n\n return true;\n },\n setting: SettingName.HasCompletedOnboardingStepSchoolLevel,\n analyticsLocation: LocationContext.OnboardingSchoolLevelScreen,\n includeInProgressBar: ctx => !OnboardingScreenConfigs['subjects-summary'].predicate(ctx),\n getWidgetHeading: isKdm => getPhrase(isKdm ? 'schoolLevelHeadingKdm' : 'schoolLevelHeading'),\n getWidgetDescription: isKdm => getPhrase(isKdm ? 'schoolLevelMessageKdm' : 'schoolLevelMessage')\n },\n\n 'select-curriculum': {\n id: 'select-curriculum',\n getPageTitle: () => getPhrase('selectCurriculumPageTitle'),\n predicate: context => {\n if (OnboardingScreenConfigs['subjects-summary'].predicate(context))\n return false;\n\n if (context.curriculums?.length < 2)\n return false;\n\n return true;\n },\n setting: SettingName.HasCompletedOnboardingStepSelectCurriculum,\n analyticsLocation: LocationContext.OnboardingSelectCurriculumScreen,\n includeInProgressBar: ctx => !OnboardingScreenConfigs['subjects-summary'].predicate(ctx),\n getWidgetHeading: () => getPhrase('selectCurriculumHeading'),\n getWidgetDescription: () => getPhrase('selectCurriculumMessage')\n },\n\n 'subjects': {\n id: 'subjects',\n getPageTitle: () => getPhrase('subjectsPageTitle'),\n predicate: context => {\n if (OnboardingScreenConfigs['subjects-summary'].predicate(context))\n return false;\n\n return true;\n },\n setting: SettingName.HasCompletedOnboardingStepSubjects,\n analyticsLocation: LocationContext.OnboardingSubjectsScreen,\n includeInProgressBar: ctx => !OnboardingScreenConfigs['subjects-summary'].predicate(ctx),\n getWidgetHeading: isKdm => getPhrase(isKdm ? 'subjectsHeadingKdm' : 'subjectsHeading'),\n getWidgetDescription: () => getPhrase('subjectsMessage')\n },\n\n 'select-videos': {\n id: 'select-videos',\n getPageTitle: () => getPhrase('selectVideosPageTitle'),\n predicate: SharedOnboardingScreenPredicates.CreatePlaylist,\n setting: SettingName.HasCompletedOnboardingStepSelectVideos,\n analyticsLocation: LocationContext.OnboardingSelectVideosScreen,\n includeInProgressBar: () => true,\n getWidgetHeading: () => getPhrase('selectVideosHeading'),\n getWidgetDescription: isKdm => getPhrase(isKdm ? 'selectVideosMessageKdm' : 'selectVideosMessage')\n },\n\n 'create-playlist': {\n id: 'create-playlist',\n getPageTitle: () => getPhrase('createPlaylistPageTitle'),\n predicate: SharedOnboardingScreenPredicates.CreatePlaylist,\n setting: SettingName.HasCompletedOnboardingStepCreatePlaylist,\n analyticsLocation: LocationContext.OnboardingCreatePlaylistScreen,\n includeInProgressBar: () => true,\n getWidgetHeading: () => getPhrase('createPlaylistHeading'),\n getWidgetDescription: () => getPhrase('createPlaylistMessage')\n }\n};","export enum WidgetTemplate {\n // Videos\n ThumbnailHeroMedia = 'thumbnail_hero_media',\n ThumbnailFeaturedMedia = 'thumbnail_featured_media',\n ThumbnailSlidingListSmall = 'thumbnail_sliding_list_small',\n ThumbnailSlidingListSmallV2 = 'thumbnail_sliding_list_small_v2',\n ThumbnailSlidingListLarge = 'thumbnail_sliding_list_large',\n ThumbnailFixedListMediaSmall = 'thumbnail_fixed_list_media_small',\n ThumbnailFixedListMediaLarge = 'thumbnail_fixed_list_media_large',\n ThumbnailFixedListFolderSmall = 'thumbnail_fixed_list_folder_small',\n ThumbnailVerticalList = 'thumbnail_vertical_list',\n PopoutThumbnailSlidingListLarge = 'popout_thumbnail_sliding_list_large',\n PopoutThumbnailSlidingListSmall = 'popout_thumbnail_sliding_list_small',\n FeaturedThumbnailSlidingList = 'featured_thumbnail_sliding_list',\n ThumbnailFixedListXLarge = 'thumbnail_fixed_list_xlarge',\n\n // Topics\n CoverSlidingPillListSmall = 'cover_sliding_pill_list_small',\n CoverFixedPillListLarge = 'cover_fixed_pill_list_large',\n StatsCoverFixedPillListLarge = 'stats_cover_fixed_pill_list_large',\n CoverFixedPillListXSmall = 'cover_fixed_pill_list_xsmall',\n ThumbnailFixedListLarge = 'thumbnail_fixed_list_large',\n ThumbnailFixedListSmall = 'thumbnail_fixed_list_small',\n EditableCoverFixedPillListSmall = 'editable_cover_fixed_pill_list_small',\n HeroBanner = 'hero_banner',\n HeroThumbnailSmall = 'hero_thumbnail_small',\n HeroBlockColourSmall = 'hero_block_colour_small',\n\n // Curriculum\n CurriculumResourcesAccordion = 'curriculum_resources_accordion',\n CurriculumCodeSearchResults = 'curriculum_code_search_results',\n\n // Playlists\n CoverFixedTileList = 'cover_fixed_tile_list',\n\n // Topics & Series\n PosterSlidingListLarge = 'poster_sliding_list_large',\n PosterSlidingListMedium = 'poster_sliding_list_medium',\n PosterSlidingListSmall = 'poster_sliding_list_small',\n PosterFixedListLarge = 'poster_fixed_list_large',\n\n // Blurbs & Topics\n HeroBannerSmall = 'hero_banner_small',\n\n // Text-based blurbs\n Heading = 'heading',\n AuthorReviewer = 'author_reviewer',\n Question = 'question',\n QuestionAccordion = 'question_accordion',\n\n // Onboarding\n OnboardingSteps = 'onboarding_steps',\n\n // Companies / Studios / Content Partners\n CircleLogoSlidingList = 'circle_logo_sliding_list',\n\n // Rating filters\n FilterSlidingPillListSmall = 'filter_sliding_pill_list_small',\n\n // Special events\n EventIconSlidingList = 'event_icon_sliding_list',\n\n // Tags filter\n TagSlidingList = 'tag_sliding_list',\n\n SearchSuggestionsBlurb = 'search_suggestions_blurb'\n}","export enum WidgetTypeId {\n // Video group\n CuratedMedia = 'curated_media',\n PlaylistMedia = 'playlist_media',\n SeriesMedia = 'series_media',\n ClassificationMedia = 'classification_media',\n LatestReleasedVideos = 'latest_released_videos',\n ContinueWatching = 'continue_watching_videos',\n CompanyLatestReleasedVideo = 'company_latest_released_video',\n CompanyVideos = 'company_videos',\n ClassificationLatestReleasedVideo = 'classification_latest_released_video',\n ClassificationLatestReleasedVideosV2 = 'classification_latest_released_videos_v2',\n CompanyClassificationVideos = 'company_classification_videos',\n ClassificationDashboardMedia = 'classification_dashboard_media',\n ClassificationDashboardExternalMedia = 'classification_dashboard_external_media',\n SeasonalClassificationMedia = 'seasonal_classification_media',\n TrendingClassificationsMedia = 'trending_classifications_media',\n ClassificationCurriculumMedia = 'classification_curriculum_media',\n\n // Topics group\n CuratedClassifications = 'curated_classifications',\n Classifications = 'classifications',\n ClassificationLatestReleasedVideos = 'classification_latest_released_videos',\n SpecialEventClassifications = 'special_event_classifications',\n LatestReleasedClassifications = 'latest_released_classifications',\n TrendingClassifications = 'trending_classifications',\n\n // Series group\n CuratedSeries = 'curated_series',\n \n // Playlists group\n CuratedPlaylists = 'curated_playlists',\n\n // Blurb group\n Blurb = 'blurb',\n DynamicBlurb = 'dynamic_blurb',\n AuthorReviewer = 'author_reviewer',\n Faq = 'faq',\n\n // Network group\n CuratedCompanies = 'curated_companies',\n \n // Search filter group\n Ratings = 'ratings',\n\n // Presentations group\n Presentations = 'presentations',\n\n // Livestreams group\n UpcomingLivestreams = 'upcoming_livestreams',\n\n // Multimedia group\n CuratedMultimedia = 'curated_multimedia',\n\n // Legacy widget types\n ClassificationPlaylists = 'classification_playlists',\n ClassificationSeries = 'classification_series',\n ClassificationFeaturedVideo = 'classification_featured_video',\n ClassificationPinnedVideos = 'classification_pinned_videos',\n\n // Search widget types\n SearchRelevantTopics = 'search_relevant_topics',\n SearchCompanies = 'search_companies',\n SearchTopResults = 'search_top_results',\n SearchSeries = 'search_series',\n SearchPlaylists = 'search_playlists',\n SearchMyVideosFolder = 'search_my_videos_folders',\n SearchMySchoolLibraryFolder = 'search_my_school_library_folders',\n SearchMyVideos = 'search_my_videos',\n SearchMySchoolLibraryVideos = 'search_my_school_library_videos',\n SearchExchangeArchive = 'search_exchange_archive',\n SearchRelatedResults = 'search_related_results',\n SearchTags = 'search_tags',\n SearchCurriculumCode = 'search_curriculum_code',\n SearchSuggestions = 'search_suggestions'\n}","import { FormikContextType } from 'formik';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SearchResultObjectTypes } from 'libs/shared/apps/search/interfaces';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { OnlineUserRole } from 'libs/shared/enums/UserRole';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { BaseObject, ClassificationCurriculumInfo, ClassificationDashboardInfo, ClassificationDirectoryInfo, CuratedDashboard, CuratedMediaWidget, CuratedWidget, CuratedWidgetQueryParams, DashboardTargetInfo, DashboardTargetType, UnknownDashboardTargetInfo } from 'libs/shared/interfaces';\n\ninterface LatestReleasesTimeRange {\n from: string;\n to: string;\n}\n\nexport const DashboardHelper = {\n\n /**\n * Same implementation as GetUserGroup() in Online.\n * @param userRole \n */\n getUserGroup(userRole: OnlineUserRole): UserGroup {\n if (userRole === OnlineUserRole.Student)\n return UserGroup.Learner;\n\n return UserGroup.Staff;\n }\n};\n\nexport const CuratedDashboardHelper = {\n onSelectCuratedObject(\n selectedObj: SearchResultObjectTypes,\n formikProps: FormikContextType<CuratedMediaWidget<BaseObject[]>>\n ) {\n const data = {\n ...formikProps.values.data,\n objectIds: ArrayHelper.addOrRemoveImmutable(formikProps.values.data.objectIds || [], selectedObj.id)\n };\n \n formikProps.setFieldValue('data', data);\n \n formikProps.setTouched({\n ...formikProps.touched,\n data: {\n objectIds: true\n }\n });\n },\n\n onRemoveCuratedObject(\n objectId: string,\n formikProps: FormikContextType<CuratedMediaWidget<BaseObject[]>>\n ) {\n const newData = {\n ...formikProps.values.data,\n objectIds: formikProps.values.data.objectIds.filter(id => id !== objectId)\n };\n\n formikProps.setFieldValue('data', newData);\n },\n\n getDashboardTarget(info: DashboardTargetInfo): string {\n if (info.targetType === DashboardTargetType.Discover)\n return `discover:presentation:${info.presentationId}`;\n\n if (info.targetType === DashboardTargetType.Classification)\n return `classification:${info.classificationId}`;\n\n if (info.targetType === DashboardTargetType.ClassificationDirectory)\n return `classification:${info.classificationId}:directory`;\n\n if (info.targetType === DashboardTargetType.ClassificationCurriculum)\n return `classification:${info.classificationId}:curriculum`;\n\n if (info.targetType === DashboardTargetType.MoviesAndTv)\n return `moviesAndTv:presentation:${info.presentationId}`;\n\n if (info.targetType === DashboardTargetType.Company)\n return `company:${info.companyId}:presentation:${info.presentationId}`;\n\n return null;\n },\n\n getUnknownDashboardTarget(options: UnknownDashboardTargetInfo): string {\n const {\n presentationId,\n companyId,\n targetType,\n classificationId\n } = options;\n\n if (targetType === DashboardTargetType.Discover) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.Discover,\n presentationId\n });\n }\n \n if (targetType === DashboardTargetType.MoviesAndTv) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.MoviesAndTv,\n presentationId\n });\n }\n \n if (targetType === DashboardTargetType.Company) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.Company,\n presentationId,\n companyId\n });\n }\n \n if (targetType === DashboardTargetType.Classification) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.Classification,\n classificationId\n });\n }\n \n if (targetType === DashboardTargetType.ClassificationDirectory) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.ClassificationDirectory,\n classificationId\n });\n }\n \n if (targetType === DashboardTargetType.ClassificationCurriculum) {\n return CuratedDashboardHelper.getDashboardTarget({\n targetType: DashboardTargetType.ClassificationCurriculum,\n classificationId\n });\n }\n },\n\n getDashboardTargetInfo(dashboard: CuratedDashboard): DashboardTargetInfo {\n const type = CuratedDashboardHelper.getDashboardTargetType(dashboard);\n const split = dashboard?.target?.split(':');\n\n if (type === DashboardTargetType.Discover) {\n return {\n targetType: DashboardTargetType.Discover,\n presentationId: split[2]\n };\n }\n\n if (type === DashboardTargetType.Classification) {\n return {\n targetType: DashboardTargetType.Classification,\n classificationId: split[1]\n };\n }\n\n if (type === DashboardTargetType.ClassificationDirectory) {\n return {\n targetType: DashboardTargetType.ClassificationDirectory,\n classificationId: split[1]\n };\n }\n\n if (type === DashboardTargetType.ClassificationCurriculum) {\n return {\n targetType: DashboardTargetType.ClassificationCurriculum,\n classificationId: split[1]\n };\n }\n\n if (type === DashboardTargetType.MoviesAndTv) {\n return {\n targetType: DashboardTargetType.MoviesAndTv,\n presentationId: split[2]\n };\n }\n\n if (type === DashboardTargetType.Company) {\n return {\n targetType: DashboardTargetType.Company,\n companyId: split[1],\n presentationId: split[3]\n };\n }\n\n return null;\n },\n\n getDashboardTargetType(dashboard: CuratedDashboard): DashboardTargetType {\n if (!dashboard?.target)\n return null;\n\n if (dashboard.target.startsWith('discover'))\n return DashboardTargetType.Discover;\n\n if (dashboard.target.startsWith('classification')) {\n if (dashboard.target.endsWith('directory'))\n return DashboardTargetType.ClassificationDirectory;\n\n if (dashboard.target.endsWith('curriculum'))\n return DashboardTargetType.ClassificationCurriculum;\n\n return DashboardTargetType.Classification;\n }\n\n if (dashboard.target.startsWith('moviesAndTv'))\n return DashboardTargetType.MoviesAndTv;\n\n if (dashboard.target.startsWith('company')) {\n return DashboardTargetType.Company;\n }\n\n return null;\n },\n\n isType(dashboard: CuratedDashboard, target: DashboardTargetType): boolean {\n return CuratedDashboardHelper.getDashboardTargetType(dashboard) === target;\n },\n\n isCuratedDashboard(obj: BaseObject): obj is CuratedDashboard {\n const dashboard = obj as CuratedDashboard;\n\n const targetType = CuratedDashboardHelper.getDashboardTargetType(dashboard);\n\n if (targetType === DashboardTargetType.Discover)\n return true;\n\n if (targetType === DashboardTargetType.Classification)\n return true;\n\n if (targetType === DashboardTargetType.ClassificationDirectory)\n return true;\n\n if (targetType === DashboardTargetType.ClassificationCurriculum)\n return true;\n\n if (targetType === DashboardTargetType.MoviesAndTv)\n return true;\n\n if (targetType === DashboardTargetType.Company)\n return true;\n\n return false;\n },\n\n getLatestReleasedTimeRange(): LatestReleasesTimeRange {\n const now = new Date();\n const from = DateHelper.format(DateHelper.endOf(DateHelper.subtract(now, 2, 'month'), 'day'), 'YYYY-MM-DD');\n const to = DateHelper.format(DateHelper.endOf(now, 'day'), 'YYYY-MM-DD');\n return { from, to };\n },\n\n getWidgetParams(\n widgetTypeId: WidgetTypeId,\n templateId: WidgetTemplate,\n target: DashboardTargetType,\n audienceIds?: string | string[],\n preferredCurriculumId?: string\n ): CuratedWidgetQueryParams {\n const params: CuratedWidgetQueryParams = { };\n\n if (audienceIds)\n params.audienceId = audienceIds;\n\n if (widgetTypeId === WidgetTypeId.ClassificationCurriculumMedia)\n params.curriculumPresentationId = preferredCurriculumId;\n\n return {\n ...params,\n ...WidgetTypeIdConfig[widgetTypeId].getCustomParams(templateId, target)\n };\n },\n\n isSystemGeneratedDashboard(widgets: CuratedWidget[]): boolean {\n const systemGeneratedClassificationWidgetTypes = new Set<WidgetTypeId>([\n WidgetTypeId.ClassificationFeaturedVideo,\n WidgetTypeId.ClassificationPinnedVideos,\n WidgetTypeId.ClassificationPlaylists,\n WidgetTypeId.ClassificationSeries\n ]);\n\n return widgets?.some(widget => systemGeneratedClassificationWidgetTypes.has(widget.widgetId));\n },\n\n isClassificationDashboard(\n targetInfo: DashboardTargetInfo\n ): targetInfo is ClassificationDashboardInfo | ClassificationDirectoryInfo | ClassificationCurriculumInfo {\n return [\n DashboardTargetType.Classification,\n DashboardTargetType.ClassificationDirectory,\n DashboardTargetType.ClassificationCurriculum\n ].includes(targetInfo?.targetType);\n }\n};","import { Core } from 'libs/common/backbone/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { OnboardingScreenConfigs } from '../apps/onboarding/constants/OnboardingScreenConfigs';\nimport { SourceFilterOptions, TypeFilterOptions } from '../apps/search/interfaces';\nimport { WidgetAppLinks } from '../components/widgets/curated-widgets/WidgetProps';\nimport { SettingName } from '../enums/SettingName';\nimport { WidgetTemplate } from '../enums/WidgetTemplate';\nimport { WidgetTypeId } from '../enums/WidgetTypeId';\nimport { CuratedWidgetContent, CuratedWidgetQueryParams, DashboardTargetType, Series } from '../interfaces';\nimport { CuratedDashboardHelper } from '../utils/DashboardHelper';\n\ninterface WidgetTypeIdConfigType {\n getCustomParams: (widgetTemplate: WidgetTemplate, targetType: DashboardTargetType) => CuratedWidgetQueryParams;\n minContent?: number;\n getCollectionAppLink?: (appLinks: Partial<WidgetAppLinks>, content?: CuratedWidgetContent) => Core.AppLink;\n}\n\nexport const WidgetTypeIdConfig: Record<WidgetTypeId, WidgetTypeIdConfigType> = {\n [WidgetTypeId.CuratedMedia]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.PlaylistMedia]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.SeriesMedia]: {\n getCustomParams: (widgetTemplate: WidgetTemplate) => {\n switch (widgetTemplate) {\n case WidgetTemplate.ThumbnailFixedListMediaLarge:\n return { limit: 2 };\n case WidgetTemplate.ThumbnailHeroMedia:\n case WidgetTemplate.ThumbnailFeaturedMedia:\n return { limit: 1 };\n default:\n return { limit: 12 };\n }\n },\n getCollectionAppLink: (appLinks, content) => appLinks?.series?.(ArrayHelper.first(content) as Series)\n },\n [WidgetTypeId.ClassificationMedia]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.LatestReleasedVideos]: {\n getCustomParams: () => {\n return CuratedDashboardHelper.getLatestReleasedTimeRange();\n }\n },\n [WidgetTypeId.ContinueWatching]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks?.watchHistory?.()\n },\n [WidgetTypeId.CompanyLatestReleasedVideo]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.CompanyVideos]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationLatestReleasedVideo]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationLatestReleasedVideosV2]: {\n getCustomParams: () => {\n return {\n limit: 12\n };\n },\n minContent: 4\n },\n [WidgetTypeId.SeasonalClassificationMedia]: {\n getCustomParams: () => {\n return {\n limit: 12\n };\n },\n minContent: 4\n },\n [WidgetTypeId.CompanyClassificationVideos]: {\n getCustomParams: () => ({}),\n minContent: 4\n },\n [WidgetTypeId.TrendingClassificationsMedia]: {\n getCustomParams: () => {\n return {\n limit: 12\n };\n },\n minContent: 4\n },\n\n [WidgetTypeId.CuratedClassifications]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.TrendingClassifications]: {\n getCustomParams: () => {\n return {\n limit: 6\n };\n },\n minContent: 3\n },\n [WidgetTypeId.Classifications]: {\n getCustomParams: (template: WidgetTemplate, targetType: DashboardTargetType) => {\n if (targetType === DashboardTargetType.Discover) {\n if (template === WidgetTemplate.EditableCoverFixedPillListSmall) {\n return {\n canBePreferred: true,\n isFollowing: true\n };\n }\n\n if ([ WidgetTemplate.PosterSlidingListSmall, WidgetTemplate.CoverFixedPillListXSmall ].includes(template)) {\n return {\n canBePreferred: true\n };\n }\n }\n\n return {};\n }\n },\n [WidgetTypeId.ClassificationLatestReleasedVideos]: {\n getCustomParams: () => {\n return CuratedDashboardHelper.getLatestReleasedTimeRange();\n }\n },\n [WidgetTypeId.SpecialEventClassifications]: {\n getCustomParams: () => ({\n from: DateHelper.format(new Date(), 'YYYY-MM-DD')\n })\n },\n [WidgetTypeId.LatestReleasedClassifications]: {\n getCustomParams: () => {\n return {\n limit: 6\n };\n },\n minContent: 3\n },\n\n [WidgetTypeId.CuratedSeries]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.CuratedPlaylists]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.Blurb]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.DynamicBlurb]: {\n getCustomParams: (templateId: WidgetTemplate) => {\n if (templateId === WidgetTemplate.OnboardingSteps) {\n return {\n customerSetting: [SettingName.HasNewOnboarding],\n userSettings: [\n ...Object.values(OnboardingScreenConfigs).map(c => c.setting),\n SettingName.HasCompletedOnboardingV2,\n SettingName.HasExitedOnboarding\n ]\n };\n }\n\n return {};\n }\n },\n [WidgetTypeId.AuthorReviewer]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.Faq]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.CuratedCompanies]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.Ratings]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.Presentations]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.UpcomingLivestreams]: {\n getCustomParams: () => ({\n from: DateHelper.format(new Date(), 'YYYY-MM-DD')\n })\n },\n\n [WidgetTypeId.CuratedMultimedia]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.ClassificationPlaylists]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationSeries]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationFeaturedVideo]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationPinnedVideos]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationDashboardExternalMedia]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationDashboardMedia]: {\n getCustomParams: () => ({})\n },\n\n [WidgetTypeId.SearchRelevantTopics]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchRelevantTopics],\n type: [TypeFilterOptions.Classification]\n })\n },\n [WidgetTypeId.SearchCompanies]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchCompanies],\n type: [TypeFilterOptions.Company]\n })\n },\n [WidgetTypeId.SearchSeries]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchSeries],\n type: [TypeFilterOptions.Series]\n })\n },\n [WidgetTypeId.SearchPlaylists]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchPlaylists],\n type: [TypeFilterOptions.Playlist]\n })\n },\n [WidgetTypeId.SearchMyVideosFolder]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchMyVideosFolder],\n source: [SourceFilterOptions.MyVideos]\n })\n },\n [WidgetTypeId.SearchMySchoolLibraryFolder]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchMySchoolLibraryFolder],\n source: [SourceFilterOptions.School]\n })\n },\n [WidgetTypeId.SearchMyVideos]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchMyVideos],\n source: [SourceFilterOptions.MyVideos]\n })\n },\n [WidgetTypeId.SearchMySchoolLibraryVideos]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchMySchoolLibraryVideos],\n source: [SourceFilterOptions.School]\n })\n },\n [WidgetTypeId.SearchExchangeArchive]: {\n getCustomParams: () => ({}),\n getCollectionAppLink: appLinks => appLinks.searchHome({\n focus: [WidgetTypeId.SearchExchangeArchive],\n source: [SourceFilterOptions.ExchangeArchive]\n })\n },\n [WidgetTypeId.SearchRelatedResults]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.SearchTopResults]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.ClassificationCurriculumMedia]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.SearchTags]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.SearchCurriculumCode]: {\n getCustomParams: () => ({})\n },\n [WidgetTypeId.SearchSuggestions]: {\n getCustomParams: () => ({})\n }\n};","import React from 'react';\n\nexport function WarningOutlineSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m13.026 4.377 8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0M12 5 3.5 19h17zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2m.75-3.677a.69.69 0 0 1-.7.677.69.69 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677s.7.303.7.677z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export enum WidgetStatus {\n Draft = 0,\n Published = 1,\n Archived = 2\n}\n\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { WidgetStatus } from 'libs/shared/enums/WidgetStatus';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { CuratedDashboardAppLink, CuratedWidget, CuratedWidgetContent, Playlist, Presentation, Series, Video, VideoTypes, VideoWidgetTemplateContent, WidgetMetadata, WidgetPreference } from 'libs/shared/interfaces';\n\nimport { AnyWidgetTemplateProps } from '../components/widgets/curated-widgets/WidgetProps';\nimport { WidgetTypeIdConfig } from '../constants/WidgetTypeIdConfig';\nimport { MasterType } from '../enums/MasterType';\n\nimport { MasterTypeHelper } from './MasterTypeHelper';\n\nenum WidgetStatusString {\n Draft = 'Draft',\n Published = 'Published',\n Archived = 'Archived'\n}\n\nexport const WidgetHelper = {\n /**\n * Used by both the FixedWidget and DynamicWidget\n */\n getSliderAnalyticsOptions: (): AnalyticsOptions => ({\n actionType: UserAction.Click,\n location: LocationContext.SlidingList,\n entity: EntityType.Widget,\n descriptor: ClickDescriptor.Slide\n }),\n\n /**\n * Used by both the FixedWidget and DynamicWidget\n */\n getSliderItemAnalyticsOptions: (): AnalyticsOptions => ({\n location: LocationContext.SlidingListItem\n }),\n\n getSliderHeadingAnalyticsOptions: (): AnalyticsOptions => ({\n actionType: UserAction.Click,\n location: LocationContext.SlidingList,\n entity: EntityType.Widget,\n descriptor: ClickDescriptor.Title\n }),\n\n useGetContent(\n content: CuratedWidgetContent,\n widgetTypeId: WidgetTypeId,\n isPreviewing: boolean,\n preferences: WidgetPreference[],\n removedItemIds: string[]\n ): { content: CuratedWidgetContent; unfilteredContent: CuratedWidgetContent; } {\n return React.useMemo(() => {\n if (!content)\n return { content: null, unfilteredContent: null };\n\n if (!Array.isArray(content))\n return { content, unfilteredContent: content };\n\n const preferencesHash = preferences?.reduce((acc: HashObject, current) => {\n acc[current.id] = current;\n return acc;\n }, {}) ?? {};\n\n const removedItemIdsHash = removedItemIds.reduce((acc: HashObject, current) => {\n acc[current] = true;\n return acc;\n }, {});\n\n const contentCopy = [...content];\n \n const sortedContent = contentCopy.sort((a, b) => {\n if (!('id' in a) || !('id' in b))\n return 0;\n\n const aIndex = preferencesHash[a.id]?.index ?? contentCopy.findIndex(c => 'id' in c && c.id === a.id);\n const bIndex = preferencesHash[b.id]?.index ?? contentCopy.findIndex(c => 'id' in c && c.id === b.id);\n\n if (aIndex < bIndex)\n return -1;\n\n if (aIndex > bIndex)\n return 1;\n\n return 0;\n });\n\n if (WidgetHelper.isBelowContentMinimum(sortedContent, widgetTypeId) && !isPreviewing) {\n return {\n content: [],\n unfilteredContent: sortedContent\n };\n }\n\n const filteredContent = sortedContent.filter(item => {\n if (preferencesHash['id' in item && item.id]?.hidden)\n return false;\n\n if (removedItemIdsHash['id' in item && item.id])\n return false;\n\n return true;\n });\n\n return {\n content: filteredContent,\n unfilteredContent: sortedContent\n };\n }, [ content, preferences ]);\n },\n\n isBelowContentMinimum(content: CuratedWidgetContent, widgetTypeId: WidgetTypeId): boolean {\n const minContent = WidgetTypeIdConfig[widgetTypeId]?.minContent || 0;\n return content?.length < minContent;\n },\n\n getCustomAppLink(props: AnyWidgetTemplateProps): Core.AppLink | null {\n if (\n !('metadata' in props) ||\n !('appLinks' in props) ||\n !('appLink' in props.metadata)\n ) {\n return null;\n }\n\n if (props.metadata?.appLink === CuratedDashboardAppLink.LatestReleases && 'latestReleases' in props.appLinks)\n return props.appLinks?.latestReleases?.();\n\n if (props.metadata?.appLink === CuratedDashboardAppLink.ExploreAllTopics && 'allTopics' in props.appLinks && 'presentation' in props)\n return props.appLinks?.allTopics?.(props.presentation.id);\n\n return null;\n },\n\n getWidgetStatus(widget: CuratedWidget): WidgetStatus {\n let status = widget.status;\n\n if (typeof (status) === 'string') {\n switch (status) {\n case WidgetStatusString.Archived:\n status = WidgetStatus.Archived;\n break;\n case WidgetStatusString.Published:\n status = WidgetStatus.Published;\n break;\n case WidgetStatusString.Draft:\n status = WidgetStatus.Draft;\n break;\n }\n }\n\n return status;\n },\n\n formatResponseData(widget: CuratedWidget, presentation?: Presentation): CuratedWidget {\n const content = widget.content;\n\n if (!content)\n return widget;\n\n if ('author' in content) {\n widget.content = [content] as CuratedWidgetContent;\n return widget;\n }\n\n if ('data' in content)\n widget.content = content.data as CuratedWidgetContent;\n else if (!Array.isArray(content))\n widget.content = [content]; // Handle `classification_featured_video` widgets, which don't return content as an array\n\n switch (widget.widgetId) {\n case WidgetTypeId.ClassificationSeries:\n widget.content = widget.content.filter((c): c is Series => 'tallPoster' in c && !!c.tallPoster?.id);\n break;\n case WidgetTypeId.ClassificationPlaylists:\n widget.content = widget.content.filter((c): c is Playlist => 'cover' in c && !!c.cover?.id);\n break;\n case WidgetTypeId.ContinueWatching:\n widget.content = widget.content.map(c => 'object' in c && c.object);\n default:\n break;\n case WidgetTypeId.Presentations:\n widget.content = widget.content.filter((c): c is Presentation => 'id' in c && c.id.toString() !== presentation?.id?.toString());\n break;\n }\n\n return widget;\n },\n \n isWidgetInTableOfContents(metadata: Partial<WidgetMetadata>): boolean {\n return !!metadata?.showInTableOfContents;\n },\n\n /**\n * Widget container view won't render a widget with no content typically,\n * but some widgets (such as blurbs) have no content, but should render anyway.\n */\n hasNoContent(widgetTypeId: WidgetTypeId): boolean {\n if (widgetTypeId === WidgetTypeId.Blurb)\n return true;\n\n return false;\n },\n\n /**\n * If any widgets should be hidden on smaller screen sizes, add them here.\n * If this needs to be more flexible at some point, it should be added to\n * the widget settings and metadata object.\n */\n canDisplayOnScreenSize(\n breakpoints: Breakpoints,\n widgetTypeId: WidgetTypeId,\n widgetTemplate: WidgetTemplate\n ): boolean {\n if (widgetTypeId === WidgetTypeId.Blurb && widgetTemplate === WidgetTemplate.HeroBannerSmall)\n return !breakpoints.xs && !breakpoints.sm;\n\n return true;\n },\n\n isCompanyWidget(widgetTypeId: WidgetTypeId): boolean {\n switch (widgetTypeId) {\n case WidgetTypeId.CompanyLatestReleasedVideo:\n case WidgetTypeId.CompanyVideos:\n case WidgetTypeId.UpcomingLivestreams:\n return true;\n default:\n return false;\n }\n },\n\n getVideoContent(content: VideoWidgetTemplateContent): VideoTypes[] {\n const firstItem = ArrayHelper.first<Video | Series>(content);\n\n if (MasterTypeHelper.isType<Series>(firstItem, MasterType.Series))\n return firstItem.videos.data;\n\n return content as VideoTypes[];\n },\n\n showRemoveButton(widgetTypeId: WidgetTypeId): boolean {\n return widgetTypeId === WidgetTypeId.ContinueWatching;\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetTypeIdConfig } from 'libs/shared/constants/WidgetTypeIdConfig';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { WarningOutlineSvg } from 'libs/shared/images/svg/status/WarningOutlineSvg';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport styles from './widget-header.module.scss';\n\nconst namespace = 'shared.widgetHeader';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface WidgetHeaderProps {\n name: string;\n description?: string | JSX.Element;\n isPreviewing?: boolean;\n content?: any[];\n widgetTypeId?: WidgetTypeId;\n badgeComponent?: JSX.Element;\n\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n \n showSeeMoreLink?: boolean;\n onClick?: () => void;\n}\n\nfunction SeeMore(props: WidgetHeaderProps) {\n return (\n <div className={`ms-3 ${styles.seeMore}`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData }\n analyticsOptions={{\n location: LocationContext.SlidingList,\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.SeeMore\n }}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link' : ''}`}\n >\n <p className='hover-text-underline text-dark curated-widget-heading'>{getPhrase('seeAll')}</p>\n </AppLink>\n </div>\n );\n}\n\nexport function WidgetHeader(props: WidgetHeaderProps): JSX.Element {\n const hasDescription = !!props.description;\n\n if (!props.name && !props.description)\n return <></>;\n\n const isBelowMinimum = WidgetHelper.isBelowContentMinimum(props.content, props.widgetTypeId);\n const minContent = WidgetTypeIdConfig[props.widgetTypeId]?.minContent ?? 0;\n\n return (\n <div className='curated-widget-header'>\n <div className='d-flex justify-content-between'>\n {!!props.name && (\n <div className='d-flex align-items-center'>\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n className={`text-decoration-none ${props.appLink ? 'curated-widget-link text-reset' : ''}`}\n onClick={props.onClick}\n >\n <h2 className='h4 curated-widget-heading'>\n {props.isPreviewing && isBelowMinimum && (\n <SvgContainer\n svg={WarningOutlineSvg}\n title={`Widget is below the minimum content threshold of ${minContent} and won't be displayed.`}\n tooltipSpanHack\n tooltipSpanHackClassName='d-inline text-danger me-1'\n />\n )}\n {props.name}\n </h2>\n </AppLink>\n {!!React.isValidElement(props.badgeComponent) && props.badgeComponent}\n </div>\n )}\n {!!props.appLink && !hasDescription && !!props.showSeeMoreLink && <SeeMore {...props}/>}\n </div>\n \n {hasDescription && (\n <div className='d-flex justify-content-between align-items-end'>\n <p className={`description curated-widget-description`}>\n <span>{props.description}</span>\n </p>\n {!!props.appLink && !!props.showSeeMoreLink && <SeeMore {...props}/> }\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { Tag, ThemeColours } from 'libs/shared/interfaces';\n\nimport styles from './tags.module.scss';\n\nconst namespace = 'shared.tags';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TagItemProps {\n tag: Tag;\n themeColours?: ThemeColours;\n appLink?: Core.AppLink;\n onClick?: () => void;\n onRemove?: () => void;\n disabled?: boolean;\n tagClass?: string;\n}\n\nfunction getTagTypeClass(tagType: TagType, hasThemeColour: boolean): string {\n switch (tagType) {\n case TagType.Pedagogy:\n case TagType.Skill:\n return 'pedagogy-tag text-white';\n\n case TagType.Hidden:\n return 'hidden-tag fw-normal';\n\n case TagType.Normal:\n if (!hasThemeColour)\n return 'bg-gray-100 fw-normal';\n return '';\n\n default:\n return '';\n }\n}\n\nexport function TagItem(props: TagItemProps): JSX.Element {\n const { tag, appLink, onClick, disabled, tagClass = 'tag' } = props;\n\n const name = tag.name.toLowerCase();\n const tagType = tag.tagType?.toLowerCase() as TagType;\n\n const hasThemeColour = (tagType === TagType.Normal && props.themeColours) && !!props.themeColours?.secondary;\n let classNames = `${styles.badgeBase} rounded-pill py-1 px-2 my-1 me-1 ${tagClass} ${getTagTypeClass(tagType, hasThemeColour)}`;\n let textContainerClass = `text-truncate text-nowrap`;\n\n if (hasThemeColour)\n classNames += ' text-white';\n\n if ((appLink || onClick) && !disabled)\n classNames += ' cursor-pointer';\n\n if (disabled)\n classNames += ' ' + styles.disabled;\n\n if (props.onRemove) {\n classNames += ' ' + styles.removeBadge;\n textContainerClass += ' ' + `${styles.removeBadgeText} d-inline-flex align-items-center lh-1`;\n }\n if (!appLink)\n classNames += ' d-inline-block';\n\n const style: React.CSSProperties = hasThemeColour\n ? { backgroundColor: props.themeColours.secondary }\n : {};\n\n if (appLink) {\n return (\n <AppLink\n onClick={onClick}\n appLink={appLink}\n className={classNames}\n title={name}\n style={style}\n >\n <span className={textContainerClass}>{name}</span>\n </AppLink>\n );\n }\n\n return (\n <button\n onClick={onClick}\n className={classNames}\n title={name}\n style={style}\n aria-label={`${getPhrase('ariaFilter')} ${name}`}\n >\n <span className={textContainerClass}>\n {name}\n {props.onRemove &&\n <button\n onClick={props.onRemove}\n className={`${styles.close} btn-close font-size-normal`}\n role='button'\n aria-label='Close'\n />\n }\n </span>\n </button>\n );\n}"],"names":["CuratedDashboardAppLink","FilterIdNames","FilterBlacklist","FilterWhitelist","acc","prev","SourceFilterOptions","TypeFilterOptions","TopicsConstants","CurationTag","ONBOARDING_PERSONA_KEY","ONBOARDING_USAGE_INTENTION_KEY","ONBOARDING_JOB_TITLE_REDIRECT_KEY","ONBOARDING_VIDEOS_V2","getScopedKey","userId","key","get","value","LocalStorageHelper","scopedKey","set","remove","OnboardingStorageHelper","jobTitle","onboardingPersona","UserHelper","usageIntention","videos","getOnboardingReleaseDate","presentations","customer","initialReleaseDate","tertiaryReleaseDate","fullReleaseDate","p","HardCoded","DateHelper","OnboardingPathwayHelper","options","userSettings","curriculums","preferredPresentation","preferredSubjects","hasPlaylist","appLink","appLinks","masterUser","currentUser","hasPermissions","onboardingContext","currentScreen","onboardingScreenConfigs","OnboardingScreenConfigs","graphDictionary","previous","firstScreenId","screenNumber","progressBarNumber","hasCompletedAllSteps","screenConfig","hasCompletedStep","SettingsHelper","_a","branch","pathway","currentNode","nextScreenId","previousScreenId","currentAppLink","ArrayHelper","currentStepNumber","currentStepProgressBarNumber","_b","totalScreens","totalScreensInProgressBar","progressBarPercentage","overallPercentage","_c","PermissionName","completedScreens","incompleteScreens","screenId","availablePresentations","PresentationLearningLevel","ClassificationNodeType","ClassificationType","TagType","namespace","getPhrase","LanguageService","TopicsHelper","obj","presentationLevel","imageType","presentationName","presentationCount","classification","dashboard","w","targetType","DashboardTargetType","childClassificationCount","presentationId","t","a","b","aPresentation","bPresentation","aLearningLevel","bLearningLevel","ClassificationVideosMap","ClassificationVideosMapJson","SharedOnboardingScreenPredicates","context","InstanceRegion","SettingName","LocationContext","_e","_d","_g","_f","ctx","isKdm","WidgetTemplate","WidgetTypeId","CuratedDashboardHelper","selectedObj","formikProps","data","objectId","newData","id","info","companyId","classificationId","type","split","target","now","from","to","widgetTypeId","templateId","audienceIds","preferredCurriculumId","params","WidgetTypeIdConfig","widgets","systemGeneratedClassificationWidgetTypes","widget","targetInfo","widgetTemplate","content","template","c","WarningOutlineSvg","props","jsx","WidgetStatus","WidgetHelper","UserAction","EntityType","ClickDescriptor","isPreviewing","preferences","removedItemIds","React","preferencesHash","current","removedItemIdsHash","contentCopy","sortedContent","aIndex","bIndex","item","minContent","status","presentation","metadata","breakpoints","firstItem","MasterTypeHelper","MasterType","SeeMore","styles","AppLink","WidgetHeader","hasDescription","Fragment","isBelowMinimum","jsxs","SvgContainer","getTagTypeClass","tagType","hasThemeColour","TagItem","tag","onClick","disabled","tagClass","name","classNames","textContainerClass","style"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as i,B as a}from"./app-DxIP7Chi.js";function s(e){return i.jsx("svg",{...e,children:i.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M16.247 7.341a1 1 0 0 1 1.506 1.318l-7 8a1 1 0 0 1-1.46.048l-3-3a1 1 0 1 1 1.414-1.414l2.244 2.244z",clipRule:"evenodd"})})}const l="_circle_15nxd_1",n="_img_15nxd_6",r={circle:l,img:n};t.defaultProps={textVariant:"white"};function t(e){return!e.imageUrl&&!e.svg?i.jsx(i.Fragment,{}):e.imageUrl?i.jsx("div",{className:`${r.img} rounded-circle h-100 w-100`,style:{backgroundImage:`url(${e.imageUrl})`},children:" "}):i.jsx("div",{className:`${r.circle} ${e.variant?`bg-${e.variant}`:""} text-${e.textVariant} rounded-circle h-100 w-100 ${e.svgWrapperClassName??""}`,children:i.jsx(a,{svg:e.svg,size:e.svgSize})})}export{s as C,t as I};
|
|
2
|
+
//# sourceMappingURL=DmWfOnj1.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DmWfOnj1.chunk.js","sources":["../../../../libs/shared/src/images/svg/status/CheckSvg.tsx","../../../../libs/shared/src/components/icon-circle/IconCircle.tsx"],"sourcesContent":["import React from 'react';\n\nexport function CheckSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M16.247 7.341a1 1 0 0 1 1.506 1.318l-7 8a1 1 0 0 1-1.46.048l-3-3a1 1 0 1 1 1.414-1.414l2.244 2.244z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './icon-circle.module.scss';\n\ninterface IconCircleProps {\n svg?: SvgIcon;\n imageUrl?: string;\n svgSize?: SvgContainerSize;\n variant?: ButtonProps['variant'];\n textVariant?: ButtonProps['variant'];\n svgWrapperClassName?: string;\n}\n\nIconCircle.defaultProps = {\n textVariant: 'white'\n};\n\nexport function IconCircle(props: IconCircleProps): JSX.Element {\n if (!props.imageUrl && !props.svg)\n return <></>;\n\n if (props.imageUrl) {\n return (\n <div className={`${styles.img} rounded-circle h-100 w-100`} style={{ backgroundImage: `url(${props.imageUrl})` }}>\n \n </div>\n );\n }\n\n return (\n <div className={`${styles.circle} ${props.variant ? `bg-${props.variant}` : ''} text-${props.textVariant} rounded-circle h-100 w-100 ${props.svgWrapperClassName ?? ''}`}>\n <SvgContainer svg={props.svg} size={props.svgSize} />\n </div>\n );\n}"],"names":["CheckSvg","props","jsx","IconCircle","Fragment","styles","SvgContainer"],"mappings":"6CAEO,SAASA,EAASC,EAAsC,CAC7D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,SAAS,UACT,EAAE,sGACF,SAAS,SAAA,CAAA,EAEb,CAEJ,+DCIAC,EAAW,aAAe,CACxB,YAAa,OACf,EAEO,SAASA,EAAWF,EAAqC,CAC9D,MAAI,CAACA,EAAM,UAAY,CAACA,EAAM,IACrBC,EAAAA,IAAAE,EAAAA,SAAA,EAAE,EAEPH,EAAM,SAENC,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGG,EAAO,GAAG,8BAA+B,MAAO,CAAE,gBAAiB,OAAOJ,EAAM,QAAQ,GAAA,EAAO,SAAA,IAElH,EAKFC,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGG,EAAO,MAAM,IAAIJ,EAAM,QAAU,MAAMA,EAAM,OAAO,GAAK,EAAE,SAASA,EAAM,WAAW,+BAA+BA,EAAM,qBAAuB,EAAE,GACpK,SAAAC,MAACI,EAAA,CAAa,IAAKL,EAAM,IAAK,KAAMA,EAAM,QAAS,EACrD,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e,ak as i,z as d,w as n,L as c,B as o,aH as r,a1 as m,P as x,aA as u}from"./app-DxIP7Chi.js";const h="_myVideosButton_5ybcl_1",y={myVideosButton:h},a="shared.alreadyAdded",j=c.encloseNamespace(a);function g(s){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-auto w-75 mt-1 mb-2",children:e.jsx("img",{src:i.General.CONFETTI,className:"img-fluid",draggable:!1})}),e.jsxs("div",{className:"text-center pb-3",children:[e.jsx("h4",{children:s.alreadyAdded?e.jsx(d,{namespace:a,phrase:"alreadyAdded"}):e.jsx(d,{namespace:a,phrase:"successfullyAdded"})}),!s.alreadyAdded&&e.jsx("p",{children:e.jsx(d,{namespace:a,phrase:"successfullyAddedDescription"})})]}),e.jsxs(n,{children:[e.jsx(n.Cancel,{text:j(s.alreadyAdded?"addAnyway":"close"),onClick:s.onClickClose,variant:"link"}),e.jsxs("a",{href:`${s.liteUrl}${s.videoId?"/videos/"+s.videoId:"/my-videos"}`,className:`${y.myVideosButton} btn btn-dark d-flex align-items-center`,children:[e.jsx("span",{className:"me-1",children:e.jsx(d,{namespace:a,phrase:s.videoId?"watchVideo":"myVideos"})}),e.jsx(o,{svg:r})]})]})]})}const A="shared.alreadyAdded",v=c.encloseNamespace(A);function p(s){const{alreadyAdded:l}=s.params,t=m(u.config());return e.jsx(x,{title:v("title"),closePopup:s.closePopup,children:e.jsx(g,{liteUrl:t.data.liteUrl,alreadyAdded:l,onClickClose:s.closePopup})})}export{p as TvAlreadyAddedView};
|
|
2
|
+
//# sourceMappingURL=DqCESxCM.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DqCESxCM.chunk.js","sources":["../../src/shared/components/already-added/AlreadyAdded.tsx","../../src/apps/tv/views/tv-already-added/TvAlreadyAddedView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './already-added.module.scss';\n\nconst namespace = 'shared.alreadyAdded';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AlreadyAddedProps {\n liteUrl: string;\n videoId?: string;\n alreadyAdded?: boolean;\n onClickClose: () => void;\n}\n\nexport function AlreadyAdded(props: AlreadyAddedProps) {\n return (\n <>\n <div className='mx-auto w-75 mt-1 mb-2'>\n <img src={ImageUrls.General.CONFETTI} className='img-fluid' draggable={false} />\n </div>\n\n <div className='text-center pb-3'>\n <h4>\n {props.alreadyAdded\n ? <Text namespace={namespace} phrase={'alreadyAdded'} />\n : <Text namespace={namespace} phrase={'successfullyAdded'} />\n }\n </h4>\n {!props.alreadyAdded && <p><Text namespace={namespace} phrase='successfullyAddedDescription' /></p>}\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(props.alreadyAdded ? 'addAnyway' : 'close')}\n onClick={props.onClickClose}\n variant='link'\n />\n <a\n href={`${props.liteUrl}${props.videoId ? '/videos/' + props.videoId : '/my-videos'}`}\n className={`${styles.myVideosButton} btn btn-dark d-flex align-items-center`}\n >\n <span className='me-1'>\n <Text namespace={namespace} phrase={props.videoId ? 'watchVideo' : 'myVideos'} />\n </span>\n <SvgContainer svg={NewWindowSvg} />\n </a>\n </PopupButtons>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { AlreadyAdded } from 'shared/components/already-added/AlreadyAdded';\n\nconst namespace = 'shared.alreadyAdded';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvAlreadyAddedViewProps extends PopupViewProps {\n params: HashObject;\n}\n\nexport function TvAlreadyAddedView(props: TvAlreadyAddedViewProps): JSX.Element {\n const { alreadyAdded } = props.params;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n >\n <AlreadyAdded\n liteUrl={config.data.liteUrl}\n alreadyAdded={alreadyAdded}\n onClickClose={props.closePopup}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","AlreadyAdded","props","jsxs","Fragment","jsx","ImageUrls","Text","PopupButtons","styles","SvgContainer","NewWindowSvg","TvAlreadyAddedView","alreadyAdded","config","Flight.useBasicFetch","ConfigRequests","Popup"],"mappings":"gKAaMA,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EASrD,SAASG,EAAaC,EAA0B,CACrD,OACEC,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKC,EAAU,QAAQ,SAAU,UAAU,YAAY,UAAW,GAAO,EAChF,EAEAH,EAAAA,KAAC,MAAA,CAAI,UAAU,mBACb,SAAA,CAAAE,MAAC,KAAA,CACE,SAAAH,EAAM,aACHG,EAAAA,IAACE,aAAKT,EAAsB,OAAQ,cAAA,CAAgB,EACpDO,EAAAA,IAACE,EAAA,CAAA,UAAKT,EAAsB,OAAQ,oBAAqB,EAE/D,EACC,CAACI,EAAM,cAAgBG,MAAC,IAAA,CAAE,eAACE,EAAA,CAAA,UAAKT,EAAsB,OAAO,8BAAA,CAA+B,CAAA,CAAE,CAAA,EACjG,SAECU,EAAA,CACC,SAAA,CAAAH,EAAAA,IAACG,EAAa,OAAb,CACC,KAAMT,EAAUG,EAAM,aAAe,YAAc,OAAO,EAC1D,QAASA,EAAM,aACf,QAAQ,MAAA,CAAA,EAEVC,EAAAA,KAAC,IAAA,CACC,KAAM,GAAGD,EAAM,OAAO,GAAGA,EAAM,QAAU,WAAaA,EAAM,QAAU,YAAY,GAClF,UAAW,GAAGO,EAAO,cAAc,0CAEnC,SAAA,CAAAJ,EAAAA,IAAC,OAAA,CAAK,UAAU,OACd,SAAAA,EAAAA,IAACE,EAAA,CAAA,UAAKT,EAAsB,OAAQI,EAAM,QAAU,aAAe,UAAA,CAAY,EACjF,EACAG,EAAAA,IAACK,EAAA,CAAa,IAAKC,CAAA,CAAc,CAAA,CAAA,CAAA,CACnC,CAAA,CACF,CAAA,EACF,CAEJ,CC9CA,MAAMb,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASc,EAAmBV,EAA6C,CAC9E,KAAM,CAAE,aAAAW,GAAiBX,EAAM,OAEzBY,EAASC,EAA6BC,EAAe,QAAQ,EAEnE,OACEX,EAAAA,IAACY,EAAA,CACC,MAAOlB,EAAU,OAAO,EACxB,WAAYG,EAAM,WAElB,SAAAG,EAAAA,IAACJ,EAAA,CACC,QAASa,EAAO,KAAK,QACrB,aAAAD,EACA,aAAcX,EAAM,UAAA,CAAA,CACtB,CAAA,CAGN"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{R as o,j as e,B as c,A as i,a as h,b as p}from"./app-DxIP7Chi.js";import{S as l}from"./DXjf6BeH.chunk.js";const u="_searchBar_w17nz_1",m={searchBar:u};function x(s){const[r,t]=o.useState(s.query??"");function n(a){a.preventDefault(),r&&i.trigger({application:p.EXCHANGE,action:h.Exchange.SEARCH,params:{query:r}})}return e.jsx("form",{onSubmit:n,children:e.jsxs("div",{className:`${m.searchBar} d-flex border border-dark rounded align-items-center mb-3`,children:[e.jsx(c,{svg:l}),e.jsx("input",{type:"text",className:"form-control h-100 w-100 py-0 border-0 shadow-none",placeholder:"Search for resources in the Exchange Archive",value:r,onChange:a=>t(a.target.value),autoComplete:"off"})]})})}export{x as E};
|
|
2
|
+
//# sourceMappingURL=DvNnjPg5.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DvNnjPg5.chunk.js","sources":["../../src/apps/exchange/components/exchange-search-bar/ExchangeSearchBar.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SearchSvg } from 'libs/shared/images/svg/actions/SearchSvg';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport styles from './exchange-search-bar.module.scss';\n\ninterface ExchangeSearchBarProps {\n query?: string;\n}\n\nexport function ExchangeSearchBar(props: ExchangeSearchBarProps): JSX.Element {\n const [ query, setQuery ] = React.useState(props.query ?? '');\n\n function onSubmit(event: React.FormEvent): void {\n event.preventDefault();\n\n if (!query)\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.SEARCH,\n params: { query }\n });\n }\n\n return (\n <form onSubmit={onSubmit}>\n <div className={`${styles.searchBar} d-flex border border-dark rounded align-items-center mb-3`}>\n <SvgContainer svg={SearchSvg} />\n <input\n type='text'\n className='form-control h-100 w-100 py-0 border-0 shadow-none'\n placeholder='Search for resources in the Exchange Archive'\n value={query}\n onChange={e => setQuery(e.target.value)}\n autoComplete='off'\n />\n </div>\n </form>\n );\n}"],"names":["ExchangeSearchBar","props","query","setQuery","React","onSubmit","event","Core.AppLinkHelper","AppChannels","Actions","jsx","jsxs","styles","SvgContainer","SearchSvg","e"],"mappings":"8JAgBO,SAASA,EAAkBC,EAA4C,CAC5E,KAAM,CAAEC,EAAOC,CAAS,EAAIC,EAAM,SAASH,EAAM,OAAS,EAAE,EAE5D,SAASI,EAASC,EAA8B,CAC9CA,EAAM,eAAA,EAEDJ,GAGLK,EAAmB,QAAQ,CACzB,YAAaC,EAAY,SACzB,OAAQC,EAAQ,SAAS,OACzB,OAAQ,CAAE,MAAAP,CAAA,CAAM,CACjB,CACH,CAEA,OACEQ,EAAAA,IAAC,QAAK,SAAAL,EACJ,SAAAM,EAAAA,KAAC,OAAI,UAAW,GAAGC,EAAO,SAAS,6DACjC,SAAA,CAAAF,EAAAA,IAACG,EAAA,CAAa,IAAKC,CAAA,CAAW,EAC9BJ,EAAAA,IAAC,QAAA,CACC,KAAK,OACL,UAAU,qDACV,YAAY,+CACZ,MAAOR,EACP,SAAUa,GAAKZ,EAASY,EAAE,OAAO,KAAK,EACtC,aAAa,KAAA,CAAA,CACf,CAAA,CACF,CAAA,CACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./app-DxIP7Chi.js";var x={exports:{}},o;function u(){return o||(o=1,(function(r){function s(){return r.exports=s=Object.assign?Object.assign.bind():function(i){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(i[a]=n[a])}return i},r.exports.__esModule=!0,r.exports.default=r.exports,s.apply(null,arguments)}r.exports=s,r.exports.__esModule=!0,r.exports.default=r.exports})(x)),x.exports}function f(r){return e.jsxs("svg",{...r,children:[e.jsx("defs",{children:e.jsx("path",{id:"a",d:"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6",fill:"currentColor"})}),e.jsx("use",{xlinkHref:"#a",fill:"#333"})]})}export{f as V,u as r};
|
|
2
|
+
//# sourceMappingURL=DxQMPV5P.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DxQMPV5P.chunk.js","sources":["../../../../../node_modules/@babel/runtime/helpers/extends.js","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx"],"sourcesContent":["function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='a'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#a' fill='#333' />\n </svg>\n );\n}\n"],"names":["_extends","module","n","e","t","r","VisibleOnSvg","props","jsxs","jsx"],"mappings":"oGAAA,SAASA,GAAW,CAClB,OAAOC,EAAA,QAAiBD,EAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAUE,EAAG,CACrF,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAI,UAAUD,CAAC,EACnB,QAASE,KAAKD,GAAI,CAAA,GAAI,eAAe,KAAKA,EAAGC,CAAC,IAAMH,EAAEG,CAAC,EAAID,EAAEC,CAAC,EACpE,CACI,OAAOH,CACX,EAAKD,qBAA4B,GAAMA,EAAO,QAAQ,QAAaA,EAAO,QAASD,EAAS,MAAM,KAAM,SAAS,CACjH,CACAC,EAAA,QAAiBD,EAAUC,EAAA,QAAA,WAA4B,GAAMA,EAAO,QAAQ,QAAaA,EAAO,wBCPzF,SAASK,EAAaC,EAAsC,CACjE,OACEC,EAAAA,KAAC,MAAA,CAAK,GAAGD,EACP,SAAA,CAAAE,MAAC,OAAA,CACC,SAAAA,EAAAA,IAAC,OAAA,CACC,GAAG,IACH,EAAE,qQACF,KAAK,cAAA,CAAA,EAET,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,KAAK,KAAK,MAAA,CAAO,CAAA,EAClC,CAEJ","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DxSRnTZT.chunk.js","sources":["../../../../libs/common/src/backbone/utils/ScrollHelper.ts"],"sourcesContent":["import { Radio } from 'backbone';\n\nimport { CommonChannels } from '../constants/CommonChannels';\n\nexport const ScrollHelper = {\n // Will prevent scrolling to the top of the page when applinks are triggered\n preventScrollTop(): void {\n Radio.channel(CommonChannels.SHELL).trigger('prevent:scroll:top');\n }\n};"],"names":["ScrollHelper","Radio","CommonChannels"],"mappings":"+CAIO,MAAMA,EAAe,CAE1B,kBAAyB,CACvBC,EAAAA,MAAM,QAAQC,EAAe,KAAK,EAAE,QAAQ,oBAAoB,CAClE,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{j as e}from"./app-DxIP7Chi.js";import{s}from"./C-jOhSzY.chunk.js";function n(a){return e.jsx("svg",{...a,children:e.jsx("path",{d:"M4.5 6a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5l12.313.035a.478.478 0 0 1 .337.816l-.007.006a.49.49 0 0 1-.345.143H4.5A1.5 1.5 0 0 1 3 17.5v-11A1.5 1.5 0 0 1 4.5 5h15A1.5 1.5 0 0 1 21 6.5v4.293a.5.5 0 0 1-1 0V6.5a.5.5 0 0 0-.5-.5zm5.538 3.123a.26.26 0 0 0-.038.133v5.479a.256.256 0 0 0 .39.218l4.482-2.74a.256.256 0 0 0 0-.436l-4.482-2.74a.256.256 0 0 0-.352.086m10.867 4.348a.46.46 0 0 0-.463-.471h-.046a.467.467 0 0 0-.464.47v2.03h-1.974c-.153.013-.458.123-.458.465v.07c0 .377.305.467.458.465l1.974-.001v2.03c0 .271.208.471.464.471h.046c.257 0 .463-.21.463-.47v-2.031l1.975.001c.25 0 .458-.208.458-.465v-.07a.464.464 0 0 0-.458-.465h-1.975z",fill:"currentColor"})})}function r(a){let l=`d-flex align-items-center badge-list ${s.minHeight}`;return a.className&&(l+=` ${a.className}`),e.jsx("div",{className:l,children:a.children})}export{n as A,r as B};
|
|
2
|
+
//# sourceMappingURL=FtezGuzd.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FtezGuzd.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/AddVideoSvg.tsx","../../../../libs/shared/src/components/badges/BadgeListContainer.tsx"],"sourcesContent":["import React from 'react';\n\nexport function AddVideoSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M4.5 6a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5l12.313.035a.478.478 0 0 1 .337.816l-.007.006a.49.49 0 0 1-.345.143H4.5A1.5 1.5 0 0 1 3 17.5v-11A1.5 1.5 0 0 1 4.5 5h15A1.5 1.5 0 0 1 21 6.5v4.293a.5.5 0 0 1-1 0V6.5a.5.5 0 0 0-.5-.5zm5.538 3.123a.26.26 0 0 0-.038.133v5.479a.256.256 0 0 0 .39.218l4.482-2.74a.256.256 0 0 0 0-.436l-4.482-2.74a.256.256 0 0 0-.352.086m10.867 4.348a.46.46 0 0 0-.463-.471h-.046a.467.467 0 0 0-.464.47v2.03h-1.974c-.153.013-.458.123-.458.465v.07c0 .377.305.467.458.465l1.974-.001v2.03c0 .271.208.471.464.471h.046c.257 0 .463-.21.463-.47v-2.031l1.975.001c.25 0 .458-.208.458-.465v-.07a.464.464 0 0 0-.458-.465h-1.975z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport styles from './badge.module.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}"],"names":["AddVideoSvg","props","jsx","BadgeListContainer","className","styles"],"mappings":"yEAEO,SAASA,EAAYC,EAAsC,CAChE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,+nBACF,KAAK,cAAA,CAAA,EAET,CAEJ,CCHO,SAASC,EAAmBF,EAAsE,CACvG,IAAIG,EAAY,wCAAwCC,EAAO,SAAS,GAExE,OAAIJ,EAAM,YACRG,GAAa,IAAIH,EAAM,SAAS,IAGhCC,EAAAA,IAAC,MAAA,CAAI,UAAAE,EACF,SAAAH,EAAM,SACT,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{al as j,U as o,m as L,S as l,j as s,ah as A,a1 as b,l as k,am as N,a as w,b as C,L as I,aa as q,ad as B,ac as O,ab as U,a3 as R}from"./app-DxIP7Chi.js";import{P as T,B as W,V as F}from"./D95rI9HN.chunk.js";import{P as S,u as H,I as G}from"./CHNNWZoa.chunk.js";import{u as _,a as D,V as M}from"./CY7w74ke.chunk.js";import{h as X}from"./C7yAlGG9.chunk.js";import{u as Y}from"./ChTv7GMQ.chunk.js";import{u as Q}from"./B_bz6ygY.chunk.js";import{E as z}from"./tzCBjHpZ.chunk.js";import{a as J}from"./NLYsyNLg.chunk.js";import{b as K,a as Z}from"./oZTtKho4.chunk.js";import"./_sYSSSUN.chunk.js";import"./CDFiJlb4.chunk.js";import"./D7VkMmnb.chunk.js";import"./Be9uUZcG.chunk.js";import"./cgmaXINJ.chunk.js";import"./Bpa_PvUX.chunk.js";import"./SwyafJDN.chunk.js";import"./BNzrcPxP.chunk.js";import"./DxSRnTZT.chunk.js";import"./D-likyuC.chunk.js";import"./BlDVEZsX.chunk.js";import"./C-jOhSzY.chunk.js";import"./pkzD5BEm.chunk.js";import"./DJpMcGX1.chunk.js";import"./CI47nh5L.chunk.js";import"./FtezGuzd.chunk.js";import"./Ci-X7TGl.chunk.js";import"./DTpRellp.chunk.js";import"./P2J0rmbX.chunk.js";import"./CWIqj_F3.chunk.js";import"./Kj832An8.chunk.js";import"./B7u1qZUC.chunk.js";import"./DeT4vB6l.chunk.js";const f={sharedSeries:(e,t)=>o.urlBuilder(`/api/objects/${e}`,{query:l.SERIES,shareId:t}),seriesWithVideos:(e,t=3)=>`{gateway}/v1/objects/${e}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${t}}`},ee={series(e){const t={query:l.SERIES};return{url:o.urlBuilder(`{gateway}/v1/objects/${e}`,t),publicUrl:o.urlBuilder(`/api/objects/${e}`,t),key:`series:${e}`}},sharedSeries(e,t){return{url:f.sharedSeries(e,t),key:`shared:series:${e}:${t}`}},seriesWithVideos(e,t=3){return{url:f.seriesWithVideos(e,t),key:`series:${e}:with:videos:${t}`}},seriesWithThumbnailAndCount(e){return{url:`{gateway}/v1/objects/${e}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,key:`series:${e}:thumbnail:count`}},seriesVideos(e,t,n,r){const a=j.getVideoSortParam(n),u=["series",e,"videos",r,n].filter(c=>!!c).join(":");return{url:o.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:`{${a}}${l.VIDEO_COLLECTION}`,cursor:r}),publicUrl:o.urlBuilder(`/api/objects/collections/${e}/videos`,{query:`{${a}}${L.VIDEO_COLLECTION}`,cursor:r}),key:u}}};function se(){return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"partial-loading-background pb-4 mb-3 w-50"}),s.jsx("div",{className:"d-flex align-items-center justify-content-between mb-2",children:s.jsx(T,{})}),s.jsx("div",{className:"mx-n2",children:s.jsx(S,{})})]})}const te="exchange.exchangeSeries",g=I.encloseNamespace(te);function Oe(e){var x;const t=A(),n=Y(),r=b(ee.series(e.seriesId)),a=b(R.currentUser());k({title:(x=r.data)==null?void 0:x.name}),Q(r);const{commonVideoProps:u}=_(),c=!!a.data&&j.getOrSetSortType(a.data.id,e.sort,N.ProductionYear,"series"),{items:d,hasMore:y,isFetching:m,nextCursor:v}=H(p,h,V);function p(i){return z.seriesVideos(e.seriesId,c,i)}function h(i){return t(p(i))}function V(i,$){if(i===1)return X($);n.error(g("error"))}const E=J("video-list"),P=r.data?[{name:g("exchangeArchive"),appLink:{application:C.EXCHANGE,action:w.Exchange.INDEX}},{name:r.data.name,active:!0}]:[];return!r.data||m?s.jsx(se,{}):s.jsxs(D.Provider,{value:E,children:[s.jsx("h1",{className:"h2",children:r.data.name}),s.jsxs("div",{className:"d-flex justify-content-between align-items-center",children:[s.jsx(W,{breadcrumbs:P}),s.jsx(F,{variant:"outline-dark",type:c,getSortAppLink:i=>K(r.data,i),analyticsOptions:{location:U.VideoListHeader,entity:O.Video,actionType:B.Sort,workflowPhase:q.Complete},includeProductionYear:!0})]}),s.jsxs("div",{className:"pb-3",children:[d?s.jsx(M,{videos:d,getVideoAppLink:Z,presentationAudiences:null,getPreviewQuestionsAppLink:()=>null,hasPermissions:()=>!1,hideVideoGuidance:!0,commonVideoProps:u}):s.jsx("div",{className:"mx-n2",children:s.jsx(S,{})}),(y||m)&&s.jsx(G,{isFetching:m,fetchNext:h,nextCursor:v})]})]})}export{Oe as ExchangeSeriesView};
|
|
2
|
+
//# sourceMappingURL=IFRPGDQf.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IFRPGDQf.chunk.js","sources":["../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../src/apps/exchange/views/exchange-series/partial-loading/PartialExchangeSeries.tsx","../../src/apps/exchange/views/exchange-series/ExchangeSeriesView.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nexport function PartialExchangeSeries() {\n return (\n <>\n <div\n className='partial-loading-background pb-4 mb-3 w-50'\n ></div>\n\n <div className='d-flex align-items-center justify-content-between mb-2'>\n <PartialBreadcrumbs />\n </div>\n \n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Series, Video } from 'libs/shared/interfaces';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { useCommonVideoProps } from 'apps/exchange/hooks/useCommonVideoProps';\nimport { useGetExchangeActions } from 'apps/exchange/hooks/useGetExchangeActions';\nimport { getSeriesAppLink, getVideoAppLink } from 'apps/exchange/utils/ExchangeUtils';\n\nimport { PartialExchangeSeries } from './partial-loading/PartialExchangeSeries';\n\nconst namespace = 'exchange.exchangeSeries';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSeriesViewProps {\n seriesId: string;\n sort: VideoSortType;\n}\n\nexport function ExchangeSeriesView(props: ExchangeSeriesViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useSetPageMetadata({ title: series.data?.name });\n useHandleObjectError(series);\n\n const { commonVideoProps } = useCommonVideoProps();\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data\n && VideoSortHelper.getOrSetSortType(currentUser.data.id, props.sort, VideoSortType.ProductionYear, 'series');\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<Video>(getVideosRequest, fetchNextVideos, onError);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return ExchangeRequests.seriesVideos(props.seriesId, sort, cursor);\n }\n\n function fetchNextVideos(cursor?: string): void {\n return fetch(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const videoActions = useGetExchangeActions('video-list');\n\n const breadcrumbs = series.data ? [{\n name: getPhrase('exchangeArchive'),\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.INDEX\n }\n }, {\n name: series.data.name,\n active: true\n }] : [];\n\n if (!series.data || isFetching)\n return <PartialExchangeSeries />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <h1 className='h2'>{series.data.name}</h1>\n\n <div className='d-flex justify-content-between align-items-center'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getSeriesAppLink(series.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n includeProductionYear\n />\n </div>\n\n <div className='pb-3'>\n {videos ? (\n <VideoList\n videos={videos}\n getVideoAppLink={getVideoAppLink}\n presentationAudiences={null}\n getPreviewQuestionsAppLink={() => null}\n hasPermissions={() => false}\n hideVideoGuidance\n commonVideoProps={commonVideoProps}\n />) : (\n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n )}\n\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNextVideos}\n nextCursor={nextCursor}\n />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}"],"names":["endpoints","id","shareId","UrlHelper","SharedWithStatements","videoCount","SeriesRequests","queryStringObj","userId","sort","cursor","sortFilter","VideoSortHelper","key","k","PublicWithStatement","PartialExchangeSeries","jsxs","Fragment","jsx","PartialBreadcrumbs","PartialVideoList","namespace","getPhrase","LanguageService","ExchangeSeriesView","props","fetch","Flight.useGetFetch","alerts","useAlerts","series","Flight.useBasicFetch","currentUser","UserRequests","useSetPageMetadata","_a","useHandleObjectError","commonVideoProps","useCommonVideoProps","VideoSortType","videos","hasMore","isFetching","nextCursor","useInfiniteList","getVideosRequest","fetchNextVideos","onError","ExchangeRequests","pageNumber","httpStatus","handleHttpError","videoActions","useGetExchangeActions","breadcrumbs","AppChannels","Actions","VideoActionsContext","Breadcrumbs","VideoSortSelect","getSeriesAppLink","LocationContext","EntityType","UserAction","WorkflowPhase","VideoList","getVideoAppLink","InfiniteScrollFooter"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aI as S,j as e,z as h,aJ as k,L as j,R as y,v as T,aK as $,ay as I,$ as B,w as V,a0 as D,a1 as x,P as M,aA as U,a3 as Y,A as H,a9 as O,aa as G,ab as W,aF as z,ac as J,ad as K}from"./app-DxIP7Chi.js";import{S as Q}from"./DxSRnTZT.chunk.js";import{F as _}from"./BRAYzUlB.chunk.js";import{l as m,a as X,F as f}from"./tcOwjCrz.chunk.js";import{F as Z}from"./B9rPD6n8.chunk.js";import{B as ee}from"./CYrgiYqL.chunk.js";import{R as ae}from"./QfCSKVqV.chunk.js";import{V as te}from"./DJpMcGX1.chunk.js";import{u as se}from"./ChTv7GMQ.chunk.js";import{u as re}from"./BPZ_jyzP.chunk.js";import{E as ne}from"./tzCBjHpZ.chunk.js";import{u as oe}from"./somfQ0OC.chunk.js";import"./DxQMPV5P.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./B7u1qZUC.chunk.js";const L="shared.flagRemovalRadio",p=j.encloseNamespace(L);function ie(){const t=S();function l(o){t.setFieldValue("suggestion",o)}function a(){return[p("nonEducational"),p("poorQuality"),p("offensive"),p("copyright"),p("ageAppropriate"),p("audio"),p("other")]}return e.jsxs("div",{className:"mb-3",children:[e.jsxs("label",{className:"form-label",children:[e.jsx(h,{namespace:L,phrase:"flagRemovalReasonLabel"}),e.jsx("span",{className:"text-danger",children:"*"})]}),a().map((o,d)=>e.jsx(k.Check,{type:"radio",label:o,name:o,id:`flag-${d}`,onChange:()=>l(o),checked:t.values.suggestion===o,className:"mb-2"},d))]})}const C="shared.suggestEditForm";function le(t){const l=S(),[a,o]=y.useState(),[d,n]=y.useState(!1);function g(r){const u=(l==null?void 0:l.values.property)&&t.metadataValue===r.name;l.setFieldValue("suggestion",u?"":r.name),o(r),n(u)}return e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:e.jsx(h,{namespace:C,phrase:"suggestLabel"})}),e.jsx("div",{"aria-describedby":"suggestEditRatingError",children:e.jsx(ee,{children:t.ratings.map(r=>e.jsx(T,{onClick:()=>g(r),className:`btn ${r.id===(a==null?void 0:a.id)?"btn-dark":"btn-outline-dark"}`,children:r.code},r.id))})}),d&&e.jsx(Z,{name:"suggestEditRating",children:e.jsx(h,{namespace:C,phrase:"ratingError"})})]})}const ce="shared.suggestEditValidation",F=j.encloseNamespace(ce);function de(){return m.object().shape({property:m.string().required(F("metadata")),reason:m.string().when("property",{is:t=>t==="FlagRemoval",then:m.string().notRequired(),otherwise:m.string().required(F("reason"))}),suggestion:m.string().required(F("suggestion")),currentValue:m.string()})}const v={VideoTitle:{name:"video title",property:"name"},Description:{name:"description",property:"description"},Rating:{name:"rating",property:"rating.name"},SeriesTitle:{name:"series title",property:"series.name"},Season:{name:"season number",property:"season.number"},EpisodeNumber:{name:"episode number",property:"episodeNumber"},BroadcastDate:{name:"broadcast date",property:"dateBroadcast"},Channel:{name:"channel",property:"channel.name"},ProductionYear:{name:"production year",property:"productionYear"},Distributors:{name:"distributors",property:"distributors",collection:!0},ProductionCompanies:{name:"production companies",property:"productionCompanies",collection:!0},Directors:{name:"directors",property:"directors",collection:!0},Producers:{name:"producers",property:"producers",collection:!0},FlagRemoval:{name:"flag for removal"},Other:{name:"other"}},N="shared.suggestEditForm",i=j.encloseNamespace(N),ue={property:"",suggestion:"",reason:"",currentValue:""};function me(t){var r,u;const l=(r=t.ratings)==null?void 0:r.filter(s=>s.code),a=S(),[o,d]=y.useState(),n=a==null?void 0:a.values.property;y.useEffect(()=>{const s=g();a.setValues({property:n,reason:"",suggestion:"",currentValue:s||""}),a.setTouched({}),d(s)},[n]);function g(){const s=v[n];if(!s||!s.property)return null;let c=$(t.video,s.property);if(!c||s.collection&&!c.data.length)return i("none");switch(s.collection&&(c=c.data.map(R=>R.name).join(", ")),n){case"BroadcastDate":return I.format(c,"D MMMM YYYY");default:return c}}return e.jsxs(B,{children:[e.jsxs(f,{as:"select",label:i("metadataLabel"),id:"property",name:"property",value:n,className:"text-capitalize",showRequiredStar:!0,children:[e.jsx("option",{value:"",children:i("metadataPlaceholder")}),Object.keys(v).map((s,c)=>e.jsx("option",{value:s,children:v[s].name},c))]}),n&&e.jsxs(e.Fragment,{children:[o&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"fw-semibold mb-0",children:[e.jsx(h,{namespace:N,phrase:"currentValueLabel"})," ",e.jsx("span",{children:(u=v[n])==null?void 0:u.name})]}),e.jsx("p",{children:o})]}),n==="Rating"&&e.jsx(le,{ratings:l,metadataValue:o}),n==="FlagRemoval"&&e.jsx(ie,{}),n!=="Rating"&&n!=="FlagRemoval"&&e.jsx(f,{label:i("suggestLabel"),placeholder:i("suggestPlaceholder"),type:"text",id:"suggestion",name:"suggestion",value:a==null?void 0:a.values.suggestion,showRequiredStar:!0}),n==="FlagRemoval"?e.jsx(f,{label:i("flagRemovalCommentsLabel"),placeholder:i("flagRemovalCommentsPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason}):e.jsx(f,{label:i("reasonLabel"),placeholder:i("reasonPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason,showRequiredStar:!0})]}),e.jsxs(V,{children:[e.jsx(V.Cancel,{text:i("cancel"),onClick:t.closePopup,variant:"link"}),e.jsx(_,{variant:"dark",submitText:i("submit")})]})]})}function pe(t){return e.jsx(X,{initialValues:ue,validationSchema:de(),onSubmit:t.onClickSubmit,children:e.jsx(me,{...t})})}const w="exchange.suggestEdit",b=j.encloseNamespace(w);function Pe(t){const l=D(),a=se(),{loading:o,handleGenerateReportError:d}=re(),n=x(U.config()),g=x(Y.currentUser()),r=x(te.video(t.videoId)),u=x(ae.ratings()),{previewContext:s,clearPreviewContext:c}=oe(t.videoId,!1);async function R(P,q){try{await l(ne.suggestEdit(r.data.id,P)),a.success(b("success")),E(),O.logUserAction({id:r.data.id,name:r.data.name},{actionType:K.Submit,entity:J.Video,descriptor:z.SuggestEdit,location:W.Popup,workflowPhase:G.Complete})}catch(A){d(A,b("error"),b("noEmailError"))}finally{q()}}function E(){t.closePopup(),s!=null&&s.appLink&&(Q.preventScrollTop(),H.trigger(s.appLink),c())}return n.hasCompleted&&g.hasCompleted&&r.hasCompleted&&u.hasCompleted?e.jsxs(M,{title:b("title"),closePopup:E,showLoadingSpinner:o,children:[e.jsx("p",{children:e.jsx(h,{namespace:w,phrase:"description"})}),e.jsx(pe,{video:r.data,ratings:u.data,closePopup:E,onClickSubmit:R})]}):e.jsx(e.Fragment,{})}export{Pe as ExchangeSuggestEditView};
|
|
2
|
+
//# sourceMappingURL=JNMAKyNq.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JNMAKyNq.chunk.js","sources":["../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval.tsx","../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector.tsx","../../../../libs/shared/src/components/suggest-edit-form/validation/SuggestEditValidation.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditMetadataTypes.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditForm.tsx","../../src/apps/exchange/views/exchange-suggest-edit/ExchangeSuggestEditView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.flagRemovalRadio';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditFlagRemoval() {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n function onSelectOption(option: string) {\n formikProps.setFieldValue('suggestion', option);\n }\n\n function flagRemovalRadioOptions() {\n return [\n getPhrase('nonEducational'),\n getPhrase('poorQuality'),\n getPhrase('offensive'),\n getPhrase('copyright'),\n getPhrase('ageAppropriate'),\n getPhrase('audio'),\n getPhrase('other')\n ];\n }\n\n return (\n <div className='mb-3'>\n <label className='form-label'>\n <Text namespace={namespace} phrase='flagRemovalReasonLabel' />\n <span className='text-danger'>*</span>\n </label>\n {flagRemovalRadioOptions().map((option, index) => (\n <Form.Check\n type='radio'\n key={index}\n label={option}\n name={option}\n id={`flag-${index}`}\n onChange={() => onSelectOption(option)}\n checked={formikProps.values.suggestion === option}\n className='mb-2'\n />\n ))}\n </div>\n );\n}","import React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { Rating } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.suggestEditForm';\n\ninterface SuggestEditRatingSelectorProps {\n ratings: Rating[];\n metadataValue: string\n}\n\nexport function SuggestEditRatingSelector(props: SuggestEditRatingSelectorProps) {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ selectedRating, setSelectedRating ] = React.useState<Rating>();\n const [ isRatingInvalid, setIsRatingInvalid ] = React.useState<boolean>(false);\n \n function onRatingSelect(rating: Rating) {\n const isRatingInvalid = formikProps?.values.property && props.metadataValue === rating.name;\n formikProps.setFieldValue('suggestion', !isRatingInvalid ? rating.name : '');\n setSelectedRating(rating);\n setIsRatingInvalid(isRatingInvalid);\n }\n\n return (\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='suggestLabel' /></label>\n <div aria-describedby='suggestEditRatingError'>\n <ButtonGroup>\n {props.ratings.map(rating => (\n <DivButton key={rating.id} onClick={() => onRatingSelect(rating)} className={`btn ${rating.id === selectedRating?.id ? 'btn-dark' : 'btn-outline-dark'}`}>\n {rating.code}\n </DivButton>\n ))}\n </ButtonGroup>\n </div>\n {isRatingInvalid && <FormFeedback name='suggestEditRating'><Text namespace={namespace} phrase='ratingError' /></FormFeedback>}\n </div>\n );\n}","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.suggestEditValidation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditValidation() {\n return object().shape({\n property: string().required((getPhrase('metadata'))),\n reason: string().when('property', {\n is: propertyValue => propertyValue === 'FlagRemoval',\n then: string().notRequired(),\n otherwise: string().required(getPhrase('reason'))\n }),\n suggestion: string().required(getPhrase('suggestion')),\n currentValue: string()\n });\n}","export enum MetadataType {\n VideoTitle = 'video title',\n Description = 'description',\n Rating = 'rating',\n SeriesTitle = 'series title',\n Season = 'season number',\n EpisodeNumber = 'episode number',\n BroadcastDate = 'broadcast date',\n Channel = 'channel',\n ProductionYear = 'production year',\n Distributors = 'distributors',\n ProductionCompanies = 'production companies',\n Directors = 'directors',\n Producers = 'producers',\n FlagRemoval = 'flag for removal',\n Other = 'other'\n}\n\nexport type MetadataTypeKey = keyof typeof MetadataType;\n\nexport type MetadataTypeMap = {\n [K in MetadataTypeKey]: {\n name: MetadataType;\n property?: string;\n collection?: boolean;\n };\n};\n\nexport const MetadataTypes: MetadataTypeMap = {\n VideoTitle: {\n name: MetadataType.VideoTitle,\n property: 'name'\n },\n Description: {\n name: MetadataType.Description,\n property: 'description'\n },\n Rating: {\n name: MetadataType.Rating,\n property: 'rating.name'\n },\n SeriesTitle: {\n name: MetadataType.SeriesTitle,\n property: 'series.name'\n },\n Season: {\n name: MetadataType.Season,\n property: 'season.number'\n },\n EpisodeNumber: {\n name: MetadataType.EpisodeNumber,\n property: 'episodeNumber'\n },\n BroadcastDate: {\n name: MetadataType.BroadcastDate,\n property: 'dateBroadcast'\n },\n Channel: {\n name: MetadataType.Channel,\n property: 'channel.name'\n },\n ProductionYear: {\n name: MetadataType.ProductionYear,\n property: 'productionYear'\n },\n Distributors: {\n name: MetadataType.Distributors,\n property: 'distributors',\n collection: true\n },\n ProductionCompanies: {\n name: MetadataType.ProductionCompanies,\n property: 'productionCompanies',\n collection: true\n },\n Directors: {\n name: MetadataType.Directors,\n property: 'directors',\n collection: true\n },\n Producers: {\n name: MetadataType.Producers,\n property: 'producers',\n collection: true\n },\n FlagRemoval: {\n name: MetadataType.FlagRemoval\n },\n Other: {\n name: MetadataType.Other\n }\n};","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport get from 'lodash/get';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SuggestEditFlagRemoval } from 'libs/shared/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval';\nimport { SuggestEditRatingSelector } from 'libs/shared/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { SuggestEditValidation } from './validation/SuggestEditValidation';\nimport { MetadataTypeKey, MetadataTypes } from './SuggestEditMetadataTypes';\n\nconst namespace = 'shared.suggestEditForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INITIAL_VALUES = {\n property: '',\n suggestion: '',\n reason: '',\n currentValue: ''\n};\n\ninterface SuggestEditFormProps {\n video: Video;\n ratings: Rating[];\n onClickSubmit: (\n data: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) => void;\n closePopup: () => void\n}\n\nfunction SuggestEditForm(props: SuggestEditFormProps) {\n const ratings = props.ratings?.filter(rating => rating.code);\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ metadataValue, setMetadataValue ] = React.useState<string>();\n\n const metadata = formikProps?.values.property as MetadataTypeKey;\n\n React.useEffect(() => {\n const metadataValue = getMetadataValue();\n formikProps.setValues({\n property: metadata,\n reason: '',\n suggestion: '',\n currentValue: metadataValue || ''\n });\n formikProps.setTouched({});\n setMetadataValue(metadataValue);\n }, [metadata]);\n\n function getMetadataValue(): string {\n const metadataType = MetadataTypes[metadata];\n\n if (!metadataType || !metadataType.property)\n return null;\n\n let currentValue = get(props.video, metadataType.property);\n\n if (!currentValue || (metadataType.collection && !currentValue.data.length))\n return getPhrase('none');\n\n if (metadataType.collection) {\n currentValue = (currentValue.data as BaseObject[]).map(obj => obj.name).join(', ');\n }\n\n switch (metadata) {\n case 'BroadcastDate':\n return DateHelper.format(currentValue, 'D MMMM YYYY');\n default:\n return currentValue;\n }\n }\n\n return (\n <Form>\n <FormField\n as='select'\n label={getPhrase('metadataLabel')}\n id='property'\n name='property'\n value={metadata}\n className='text-capitalize'\n showRequiredStar\n >\n <option value=''>{getPhrase('metadataPlaceholder')}</option>\n {Object.keys(MetadataTypes).map((metadata, index) => (\n <option key={index} value={metadata}>\n {MetadataTypes[metadata as keyof typeof MetadataTypes].name}\n </option>\n ))}\n </FormField>\n\n {metadata &&\n <>\n {metadataValue && (\n <>\n <p className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='currentValueLabel' /> <span>{MetadataTypes[metadata as MetadataTypeKey]?.name}</span>\n </p>\n <p>{metadataValue}</p>\n </>\n )}\n\n {metadata === 'Rating' && <SuggestEditRatingSelector ratings={ratings} metadataValue={metadataValue} />}\n {metadata === 'FlagRemoval' && <SuggestEditFlagRemoval />}\n {metadata !== 'Rating' && metadata !== 'FlagRemoval' &&\n <FormField\n label={getPhrase('suggestLabel')}\n placeholder={getPhrase('suggestPlaceholder')}\n type='text'\n id='suggestion'\n name='suggestion'\n value={formikProps?.values.suggestion}\n showRequiredStar\n />\n }\n\n {\n metadata === 'FlagRemoval' ? (\n <FormField\n label={getPhrase('flagRemovalCommentsLabel')}\n placeholder={getPhrase('flagRemovalCommentsPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n />\n ) : (\n <FormField\n label={getPhrase('reasonLabel')}\n placeholder={getPhrase('reasonPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n showRequiredStar\n />\n )\n }\n </>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <FormButtons variant='dark' submitText={getPhrase('submit')} />\n </PopupButtons>\n </Form>\n );\n}\n\nexport function SuggestEditFormWrapper(props: SuggestEditFormProps) {\n return (\n <FormWrapper<SuggestEditModel>\n initialValues={INITIAL_VALUES}\n validationSchema={SuggestEditValidation()}\n onSubmit={props.onClickSubmit}\n >\n <SuggestEditForm {...props} />\n </FormWrapper>\n );\n}","\nimport React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SuggestEditFormWrapper } from 'libs/shared/components/suggest-edit-form/SuggestEditForm';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { Config, CurrentUser, PopupViewProps, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\nconst namespace = 'exchange.suggestEdit';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSuggestEditProps extends PopupViewProps {\n videoId: string;\n}\n\nexport function ExchangeSuggestEditView(props: ExchangeSuggestEditProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.videoId, false);\n\n async function onClickSubmit(\n values: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) {\n try {\n await fetchAsync(ExchangeRequests.suggestEdit(video.data.id, values));\n alerts.success(getPhrase('success'));\n closePopup();\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.SuggestEdit,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (xhr) {\n handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError'));\n } finally {\n onDone();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n const hasLoaded = (\n config.hasCompleted &&\n currentUser.hasCompleted &&\n video.hasCompleted &&\n ratings.hasCompleted\n );\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={loading}\n >\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <SuggestEditFormWrapper\n video={video.data}\n ratings={ratings.data}\n closePopup={closePopup}\n onClickSubmit={onClickSubmit}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","SuggestEditFlagRemoval","formikProps","useFormikContext","onSelectOption","option","flagRemovalRadioOptions","jsxs","jsx","Text","index","Form","SuggestEditRatingSelector","props","selectedRating","setSelectedRating","React","isRatingInvalid","setIsRatingInvalid","onRatingSelect","rating","ButtonGroup","DivButton","FormFeedback","SuggestEditValidation","object","string","propertyValue","MetadataTypes","INITIAL_VALUES","SuggestEditForm","ratings","_a","metadataValue","setMetadataValue","metadata","getMetadataValue","metadataType","currentValue","get","obj","DateHelper","FormField","Fragment","_b","PopupButtons","FormButtons","SuggestEditFormWrapper","FormWrapper","ExchangeSuggestEditView","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","loading","handleGenerateReportError","useVerifiedEmailRequiredErrorHandler","config","Flight.useBasicFetch","ConfigRequests","currentUser","UserRequests","video","VideoRequests","RatingRequests","previewContext","clearPreviewContext","usePreviewContext","onClickSubmit","values","onDone","ExchangeRequests","closePopup","AnalyticsHelper","UserAction","EntityType","VideoActionDescriptor","LocationContext","WorkflowPhase","xhr","ScrollHelper","Core.AppLinkHelper","Popup"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const E={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},Libraries:{TWIG:"88117784",TIGTAG:"80333935"},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"}}};export{E as H};
|
|
2
|
+
//# sourceMappingURL=Kj832An8.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Kj832An8.chunk.js","sources":["../../../../libs/shared/src/constants/HardCoded.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};"],"names":["HardCoded"],"mappings":"AAAO,MAAMA,EAAY,CAkGvB,gBAAiB,CACf,QAAS,EAGT,WAAY,GACZ,aAAc,EACd,YAAa,GACb,cAAe,GAGf,cAAe,IACf,UAAW,IACX,QAAS,IACT,oBAAqB,GACrB,YAAa,GACb,cAAe,GACf,YAAa,GACb,cAAe,GACf,YAAa,GACb,YAAa,GACb,cAAe,GACf,WAAY,GACZ,aAAc,EAAA,EAEhB,UAAW,CAwBT,KAAM,WACN,OAAQ,UAAA,EAaV,OAAQ,CACN,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,+CAAA,CAKjB,CAuCF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{L as x,aI as O,ay as R,j as a,$ as Q,z as v,w as D,a0 as X,a1 as C,a2 as Z,P as S,bJ as ee,a3 as ae,a9 as U,aP as k,aa as E,ab as Y,ac as V,ad as $}from"./app-DxIP7Chi.js";import{l as o,F as h,a as se}from"./tcOwjCrz.chunk.js";import{I as B}from"./CJ3oIQlG.chunk.js";import{u as ne}from"./ChTv7GMQ.chunk.js";import{u as te}from"./BPZ_jyzP.chunk.js";import{a as oe,T as I}from"./cw5ndfQh.chunk.js";import{g as M}from"./Cg5KzJdC.chunk.js";import{F as re}from"./BRAYzUlB.chunk.js";import"./DxQMPV5P.chunk.js";var G=(e=>(e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465",e.StudentSharingGuide="50326395499417",e.Sharing="49512742828953",e))(G||{}),H=(e=>(e[e.BbcRes=0]="BbcRes",e))(H||{});const ie="tv.requestProgramValidation",f=x.encloseNamespace(ie);function ce(e){return e?o.object().shape({channelId:o.string().required(f("channelRequired")),title:o.string().required(f("programRequired")),broadcastDate:o.string().required(f("dateRequired")),broadcastTime:o.string().required(f("timeRequired")),closedCaptions:o.string(),comments:o.string()}):o.object().shape({title:o.string().required(f("programRequired")),comments:o.string()})}const g="tv.requestProgramForm",r=x.encloseNamespace(g);function le(e){const c=O(),b=R.format(R.add(new Date,4,"days"),"YYYY-MM-DD"),i=R.format(R.add(b,11,"days"),"YYYY-MM-DD"),s=M(e.instanceRegion);return a.jsxs(Q,{children:[e.channels&&a.jsxs(h,{as:"select",label:r("channelLabel"),name:"channelId",value:c.values.channelId,showRequiredStar:!0,children:[a.jsx("option",{value:"",children:x.getPhrase(g,"channelPlaceholder")},0),e.channels.map(l=>a.jsx("option",{value:l.id,children:`${l.name} - (${l.number})`},l.id))]}),a.jsx(h,{label:r("programLabel"),placeholder:r("programPlaceholder"),type:"text",name:"title",value:c.values.title,showRequiredStar:!0}),e.channels&&a.jsxs("div",{className:"d-flex",children:[a.jsx("div",{className:"w-50 me-2",children:a.jsx(h,{label:r("broadcastDateLabel"),type:"date",name:"broadcastDate",value:c.values.broadcastDate,min:b,max:i,showRequiredStar:!0})}),a.jsx("div",{className:"w-50",children:a.jsx(h,{label:r("broadcastTimeLabel"),type:"time",name:"broadcastTime",value:c.values.broadcastTime,className:"mb-0",showRequiredStar:!0})})]}),a.jsx("p",{className:"mt-n1",children:a.jsx("small",{children:a.jsx(v,{namespace:g,phrase:s.programGuidePhraseKey})})}),e.channels&&a.jsxs("div",{className:"d-flex",children:[a.jsx("div",{className:"w-50 me-2",children:a.jsxs(h,{as:"select",label:r("ccLabel"),name:"closedCaptions",value:c.values.closedCaptions,children:[a.jsx("option",{value:"",children:x.getPhrase(g,"ccNo")}),a.jsx("option",{value:"yes",children:x.getPhrase(g,"ccYes")})]})}),a.jsx("div",{className:"w-50"})]}),a.jsx(h,{label:r(e.channels?"commentsLabel":"additionalInfoLabel"),placeholder:r(e.channels?"commentsPlaceholder":"additionalInfoPlaceholder"),type:"text",name:"comments",value:c.values.comments}),a.jsx("p",{children:a.jsx(v,{namespace:g,phrase:"note",options:{tv:s.tv}})}),a.jsxs(D,{children:[a.jsx(D.Cancel,{text:r("cancel"),onClick:e.onClickCancel,variant:"link"}),a.jsx(re,{variant:"dark",submitText:r("request")})]})]})}const de={channelId:"",title:"",broadcastDate:"",broadcastTime:"",closedCaptions:"",comments:""},p="tv.requestProgram",P=x.encloseNamespace(p);function Pe(e){const c=X(),b=ne(),i=e.instanceRegion===B.AU,s=C(ae.currentUser()),l=e.instanceRegion===B.UK,y=C(l&&Z.customer(s.data.customerId)),q=C(i&&I.payTvChannels()),d=M(e.instanceRegion);function K(){e.closePopup()}const{loading:W,handleGenerateReportError:z}=te();function J(n){var m;if(i){const t=(m=q.data)==null?void 0:m.find(j=>String(j.id)===n.channelId);b.success(P("successChannel",{tv:d.tv,program:n.title,channel:t==null?void 0:t.name})),U.logUserAction({channel:t.id,name:t.name,program:n.title,region:e.region},{actionType:$.Submit,entity:V.Video,location:Y.Popup,workflowPhase:E.Complete,descriptor:k.RequestProgram})}else b.success(P("successNoChannel",{tv:d.tv,program:n.title})),U.logUserAction({program:n.title,region:e.region},{actionType:$.Submit,entity:V.Video,location:Y.Popup,workflowPhase:E.Complete,descriptor:k.RequestProgram})}function _(n){var T,w,F,N;const{broadcastDate:m,broadcastTime:t,closedCaptions:j,...u}=n;return l?{title:u.title,comments:u.comments,crmId:y.data.crmId,customerName:y.data.name,email:s.data.email,type:H.BbcRes,username:s.data.username}:i?{...u,closedCaptions:!!j,regionCode:e.region,programDateTime:`${m}T${t}`,userId:(T=s.data)==null?void 0:T.id,customerId:(w=s.data)==null?void 0:w.customerId}:{...u,regionCode:e.region,userId:(F=s.data)==null?void 0:F.id,customerId:(N=s.data)==null?void 0:N.customerId}}async function A(n,m){const t=_(n),j=l?I.requestProgramUk(t):I.requestProgram(t);try{await c(j),m(),J(n)}catch(u){z(u,P("error"),P("noEmailError"))}e.closePopup()}const L=s.hasCompleted&&(i&&q.hasCompleted||!i);return a.jsxs(S,{title:P("title",{tv:d.tv}),closePopup:e.closePopup,showLoadingSpinner:!L||W,children:[oe.isHolidayPeriod()&&a.jsxs("div",{className:"alert alert-warning",role:"alert",children:[a.jsx("h3",{className:"h5",children:a.jsx(v,{namespace:p,phrase:"requestAlertHeading"})}),a.jsx("p",{className:"m-0",children:a.jsx(v,{namespace:p,phrase:"requestAlertBody",options:{tv:d.tv}})})]}),a.jsx("p",{children:a.jsx(v,{namespace:p,phrase:"description",options:{tv:d.tv}})}),a.jsx("p",{children:a.jsx(v,{namespace:p,phrase:"moreInfo",options:{tv:d.tv,faqUrl:ee.getLiteArticle(G.FoxtelFaq)}})}),q&&a.jsx(se,{initialValues:de,validationSchema:ce(i),onSubmit:A,children:a.jsx(le,{onClickCancel:K,channels:i&&q.data,instanceRegion:e.instanceRegion})})]})}export{Pe as TvRequestProgramView};
|
|
2
|
+
//# sourceMappingURL=MwatUxhm.chunk.js.map
|