@clickview/streamable-learning 0.34.1-dev.2 → 0.35.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +7 -0
- package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +2 -0
- package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +50 -0
- package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +2 -0
- package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +34 -0
- package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +22 -0
- package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +2 -0
- package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +90 -0
- package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +9 -0
- package/dist/css/5003-streamable-learning-b38d2ddbbe.chunk.css +98 -0
- package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +13 -0
- package/dist/css/6017-streamable-learning-098a205d01.chunk.css +6 -0
- package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +1 -0
- package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +1 -0
- package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +5 -0
- package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +12 -0
- package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +1 -0
- package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +13 -0
- package/dist/css/8601-streamable-learning-f525210660.chunk.css +6 -0
- package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +2 -0
- package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +8 -0
- package/dist/css/9842-streamable-learning-24729103f7.chunk.css +4 -0
- package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +4 -0
- package/dist/css/streamable-learning-dd0c1095d5.css +23 -0
- package/dist/languages/en.json +1 -0
- package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +1 -0
- package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +2 -0
- package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +105 -0
- package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +2 -0
- package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +1 -0
- package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +1 -0
- package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +2 -0
- package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +9 -0
- package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +1 -0
- package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +1 -0
- package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +1 -0
- package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +1 -0
- package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +2 -0
- package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +1 -0
- package/dist/scripts/2911-2ec3a6600a-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +1 -0
- package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +1 -0
- package/dist/scripts/4254-ef581b8105-streamable-learning.chunk.js +1 -0
- package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js +2 -0
- package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +2 -0
- package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +1 -0
- package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js +2 -0
- package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +1 -0
- package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +1 -0
- package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +1 -0
- package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +1 -0
- package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +1 -0
- package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +1 -0
- package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +2 -0
- package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +1 -0
- package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +2 -0
- package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +1 -0
- package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +1 -0
- package/dist/scripts/7347-772848ba8a-streamable-learning.chunk.js +1 -0
- package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +2 -0
- package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/7904-96574373ca-streamable-learning.chunk.js +1 -0
- package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8058-51c4b442d6-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +2 -0
- package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +60 -0
- package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +2 -0
- package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +1 -0
- package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +1 -0
- package/dist/scripts/9390-bbaf07ad0f-streamable-learning.chunk.js +1 -0
- package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +1 -0
- package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js +2 -0
- package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/9842-36d830ee87-streamable-learning.chunk.js +1 -0
- package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +2 -0
- package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/bundle-7ea4deeaa8.min.js +2 -0
- package/dist/scripts/bundle-7ea4deeaa8.min.js.LICENSE.txt +108 -0
- package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +2 -0
- package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +21 -0
- package/package.json +3 -5
- package/typings/utils/imports.d.ts +1 -2
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/css/B-attovs.chunk.css +0 -9
- package/dist/css/B1NucFMn.chunk.css +0 -1
- package/dist/css/BPdg7JW4.chunk.css +0 -1
- package/dist/css/BPrUSCaY.chunk.css +0 -1
- package/dist/css/BR0fUt9D.chunk.css +0 -1
- package/dist/css/BhYm6SRm.chunk.css +0 -1
- package/dist/css/BiRz4h1c.chunk.css +0 -1
- package/dist/css/Bq1ChJn4.chunk.css +0 -1
- package/dist/css/Bt85j9js.chunk.css +0 -1
- package/dist/css/BuYrqi9E.chunk.css +0 -1
- package/dist/css/BugV1Bpa.chunk.css +0 -1
- package/dist/css/BuuVPl7n.chunk.css +0 -1
- package/dist/css/C1NkrNqQ.chunk.css +0 -1
- package/dist/css/C1qv5jz5.chunk.css +0 -1
- package/dist/css/C7XoyEPr.chunk.css +0 -1
- package/dist/css/C7_MDu56.chunk.css +0 -1
- package/dist/css/CC5F5C8O.chunk.css +0 -1
- package/dist/css/CChSC6Ta.chunk.css +0 -1
- package/dist/css/CCsCPLDG.chunk.css +0 -1
- package/dist/css/CD1qrI1T.chunk.css +0 -1
- package/dist/css/CKqvCBj4.chunk.css +0 -1
- package/dist/css/CLZ0Ycds.chunk.css +0 -1
- package/dist/css/CO7M4rZW.chunk.css +0 -1
- package/dist/css/CY0yvCW4.chunk.css +0 -1
- package/dist/css/CYGsw8FT.chunk.css +0 -1
- package/dist/css/Cbi3KYBa.chunk.css +0 -1
- package/dist/css/CliS8Q8r.chunk.css +0 -1
- package/dist/css/D-kQKsZN.chunk.css +0 -1
- package/dist/css/D2NwUVrK.chunk.css +0 -1
- package/dist/css/D4g1IoUU.chunk.css +0 -1
- package/dist/css/DBgpcO3T.chunk.css +0 -1
- package/dist/css/DDnpOnVB.chunk.css +0 -1
- package/dist/css/DZJSONGP.chunk.css +0 -1
- package/dist/css/Dc0zNt2E.chunk.css +0 -1
- package/dist/css/DeAfaPiD.chunk.css +0 -1
- package/dist/css/Dj731zLm.chunk.css +0 -1
- package/dist/css/DjPPxa0A.chunk.css +0 -1
- package/dist/css/DlOtoSz0.chunk.css +0 -1
- package/dist/css/DwduQat7.chunk.css +0 -1
- package/dist/css/Dzuu2GTx.chunk.css +0 -1
- package/dist/css/JAvsJreH.chunk.css +0 -1
- package/dist/css/NKlFYVOc.chunk.css +0 -1
- package/dist/css/VZd8qGtK.chunk.css +0 -1
- package/dist/css/Y7U--2na.chunk.css +0 -1
- package/dist/css/ir3IcK_l.chunk.css +0 -1
- package/dist/css/jbMisi9r.chunk.css +0 -1
- package/dist/css/kS5aDtIJ.chunk.css +0 -1
- package/dist/css/mqCL1o7m.chunk.css +0 -1
- package/dist/css/qZzkUeZk.chunk.css +0 -1
- package/dist/css/sC_H3yXE.chunk.css +0 -1
- package/dist/css/wR_6C_NV.chunk.css +0 -1
- package/dist/en.json +0 -1
- package/dist/scripts/7tlnqdEj.chunk.js +0 -2
- package/dist/scripts/7tlnqdEj.chunk.js.map +0 -1
- package/dist/scripts/82OY25pR.chunk.js +0 -2
- package/dist/scripts/82OY25pR.chunk.js.map +0 -1
- package/dist/scripts/8JOxjlae.chunk.js +0 -15
- package/dist/scripts/8JOxjlae.chunk.js.map +0 -1
- package/dist/scripts/B-_Kgmt0.chunk.js +0 -2
- package/dist/scripts/B-_Kgmt0.chunk.js.map +0 -1
- package/dist/scripts/B0KMLOp5.chunk.js +0 -2
- package/dist/scripts/B0KMLOp5.chunk.js.map +0 -1
- package/dist/scripts/B1QWJfPw.chunk.js +0 -3
- package/dist/scripts/B1QWJfPw.chunk.js.map +0 -1
- package/dist/scripts/B26T27lj.chunk.js +0 -2
- package/dist/scripts/B26T27lj.chunk.js.map +0 -1
- package/dist/scripts/B32lL5ga.chunk.js +0 -2
- package/dist/scripts/B32lL5ga.chunk.js.map +0 -1
- package/dist/scripts/B5lCwpXp.chunk.js +0 -2
- package/dist/scripts/B5lCwpXp.chunk.js.map +0 -1
- package/dist/scripts/B8qPNVvK.chunk.js +0 -2
- package/dist/scripts/B8qPNVvK.chunk.js.map +0 -1
- package/dist/scripts/BBnDr_iy.chunk.js +0 -2
- package/dist/scripts/BBnDr_iy.chunk.js.map +0 -1
- package/dist/scripts/BCQ0kOEO.chunk.js +0 -6
- package/dist/scripts/BCQ0kOEO.chunk.js.map +0 -1
- package/dist/scripts/BCyuhFou.chunk.js +0 -2
- package/dist/scripts/BCyuhFou.chunk.js.map +0 -1
- package/dist/scripts/BF7Uu3LW.chunk.js +0 -2
- package/dist/scripts/BF7Uu3LW.chunk.js.map +0 -1
- package/dist/scripts/BG6_Ss4G.chunk.js +0 -2
- package/dist/scripts/BG6_Ss4G.chunk.js.map +0 -1
- package/dist/scripts/BMrWb7Ku.chunk.js +0 -2
- package/dist/scripts/BMrWb7Ku.chunk.js.map +0 -1
- package/dist/scripts/BQH1xd9z.chunk.js +0 -2
- package/dist/scripts/BQH1xd9z.chunk.js.map +0 -1
- package/dist/scripts/BW1iqZG2.chunk.js +0 -2
- package/dist/scripts/BW1iqZG2.chunk.js.map +0 -1
- package/dist/scripts/BdHxGaRy.chunk.js +0 -2
- package/dist/scripts/BdHxGaRy.chunk.js.map +0 -1
- package/dist/scripts/BdniDID_.chunk.js +0 -2
- package/dist/scripts/BdniDID_.chunk.js.map +0 -1
- package/dist/scripts/BeTQIGnj.chunk.js +0 -2
- package/dist/scripts/BeTQIGnj.chunk.js.map +0 -1
- package/dist/scripts/Bf3WCYXw.chunk.js +0 -8
- package/dist/scripts/Bf3WCYXw.chunk.js.map +0 -1
- package/dist/scripts/Bh4NsrSi.chunk.js +0 -2
- package/dist/scripts/Bh4NsrSi.chunk.js.map +0 -1
- package/dist/scripts/BjOv-usB.chunk.js +0 -2
- package/dist/scripts/BjOv-usB.chunk.js.map +0 -1
- package/dist/scripts/BkGt8Gr1.chunk.js +0 -2
- package/dist/scripts/BkGt8Gr1.chunk.js.map +0 -1
- package/dist/scripts/BlFiywl_.chunk.js +0 -2
- package/dist/scripts/BlFiywl_.chunk.js.map +0 -1
- package/dist/scripts/BoNyBWaZ.chunk.js +0 -2
- package/dist/scripts/BoNyBWaZ.chunk.js.map +0 -1
- package/dist/scripts/Bvum7-8x.chunk.js +0 -8
- package/dist/scripts/Bvum7-8x.chunk.js.map +0 -1
- package/dist/scripts/BwDmMfAz.chunk.js +0 -2
- package/dist/scripts/BwDmMfAz.chunk.js.map +0 -1
- package/dist/scripts/BwgQZkdi.chunk.js +0 -2
- package/dist/scripts/BwgQZkdi.chunk.js.map +0 -1
- package/dist/scripts/C-7yn3rc.chunk.js +0 -2
- package/dist/scripts/C-7yn3rc.chunk.js.map +0 -1
- package/dist/scripts/C-pJ0Wi3.chunk.js +0 -2
- package/dist/scripts/C-pJ0Wi3.chunk.js.map +0 -1
- package/dist/scripts/C35NlkUr.chunk.js +0 -2
- package/dist/scripts/C35NlkUr.chunk.js.map +0 -1
- package/dist/scripts/C36-3UWl.chunk.js +0 -2
- package/dist/scripts/C36-3UWl.chunk.js.map +0 -1
- package/dist/scripts/C3fMNXil.chunk.js +0 -2
- package/dist/scripts/C3fMNXil.chunk.js.map +0 -1
- package/dist/scripts/C8Br2CdQ.chunk.js +0 -2
- package/dist/scripts/C8Br2CdQ.chunk.js.map +0 -1
- package/dist/scripts/CEmtkty-.chunk.js +0 -2
- package/dist/scripts/CEmtkty-.chunk.js.map +0 -1
- package/dist/scripts/CFs3kdQx.chunk.js +0 -53
- package/dist/scripts/CFs3kdQx.chunk.js.map +0 -1
- package/dist/scripts/CGNCg1fO.chunk.js +0 -2
- package/dist/scripts/CGNCg1fO.chunk.js.map +0 -1
- package/dist/scripts/CPXlV0fg.chunk.js +0 -2
- package/dist/scripts/CPXlV0fg.chunk.js.map +0 -1
- package/dist/scripts/CSoZBG8v.chunk.js +0 -2
- package/dist/scripts/CSoZBG8v.chunk.js.map +0 -1
- package/dist/scripts/CW7x8M-z.chunk.js +0 -2
- package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
- package/dist/scripts/CWHjB5Ye.chunk.js +0 -2
- package/dist/scripts/CWHjB5Ye.chunk.js.map +0 -1
- package/dist/scripts/CXslDtbb.chunk.js +0 -2
- package/dist/scripts/CXslDtbb.chunk.js.map +0 -1
- package/dist/scripts/CZLZ0bbA.chunk.js +0 -2
- package/dist/scripts/CZLZ0bbA.chunk.js.map +0 -1
- package/dist/scripts/CZafJWQk.chunk.js +0 -2
- package/dist/scripts/CZafJWQk.chunk.js.map +0 -1
- package/dist/scripts/CbFIe2Y6.chunk.js +0 -2
- package/dist/scripts/CbFIe2Y6.chunk.js.map +0 -1
- package/dist/scripts/Cg8SIDnK.chunk.js +0 -8
- package/dist/scripts/Cg8SIDnK.chunk.js.map +0 -1
- package/dist/scripts/Cib9o4sK.chunk.js +0 -2
- package/dist/scripts/Cib9o4sK.chunk.js.map +0 -1
- package/dist/scripts/Ciyuu-YU.chunk.js +0 -356
- package/dist/scripts/Ciyuu-YU.chunk.js.map +0 -1
- package/dist/scripts/CkMhHhda.chunk.js +0 -2
- package/dist/scripts/CkMhHhda.chunk.js.map +0 -1
- package/dist/scripts/CmAQo6rx.chunk.js +0 -2
- package/dist/scripts/CmAQo6rx.chunk.js.map +0 -1
- package/dist/scripts/CmcmWGL0.chunk.js +0 -2
- package/dist/scripts/CmcmWGL0.chunk.js.map +0 -1
- package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
- package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
- package/dist/scripts/CrkRNOU9.chunk.js +0 -2
- package/dist/scripts/CrkRNOU9.chunk.js.map +0 -1
- package/dist/scripts/CskJerl_.chunk.js +0 -2
- package/dist/scripts/CskJerl_.chunk.js.map +0 -1
- package/dist/scripts/Ct_IIxaS.chunk.js +0 -2
- package/dist/scripts/Ct_IIxaS.chunk.js.map +0 -1
- package/dist/scripts/Cuuw0EUi.chunk.js +0 -8
- package/dist/scripts/Cuuw0EUi.chunk.js.map +0 -1
- package/dist/scripts/Cz45aonc.chunk.js +0 -2
- package/dist/scripts/Cz45aonc.chunk.js.map +0 -1
- package/dist/scripts/D-I94wdL.chunk.js +0 -7
- package/dist/scripts/D-I94wdL.chunk.js.map +0 -1
- package/dist/scripts/D0UlXsF8.chunk.js +0 -2
- package/dist/scripts/D0UlXsF8.chunk.js.map +0 -1
- package/dist/scripts/D0cZC7S-.chunk.js +0 -2
- package/dist/scripts/D0cZC7S-.chunk.js.map +0 -1
- package/dist/scripts/D1D6Gqx1.chunk.js +0 -2
- package/dist/scripts/D1D6Gqx1.chunk.js.map +0 -1
- package/dist/scripts/D3tziVkG.chunk.js +0 -2
- package/dist/scripts/D3tziVkG.chunk.js.map +0 -1
- package/dist/scripts/D4MOOnR6.chunk.js +0 -2
- package/dist/scripts/D4MOOnR6.chunk.js.map +0 -1
- package/dist/scripts/D83kc0Wf.chunk.js +0 -2
- package/dist/scripts/D83kc0Wf.chunk.js.map +0 -1
- package/dist/scripts/D8dAIhzO.chunk.js +0 -2
- package/dist/scripts/D8dAIhzO.chunk.js.map +0 -1
- package/dist/scripts/DBp0J6X9.chunk.js +0 -2
- package/dist/scripts/DBp0J6X9.chunk.js.map +0 -1
- package/dist/scripts/DCds0mCy.chunk.js +0 -2
- package/dist/scripts/DCds0mCy.chunk.js.map +0 -1
- package/dist/scripts/DEwFBSVv.chunk.js +0 -2
- package/dist/scripts/DEwFBSVv.chunk.js.map +0 -1
- package/dist/scripts/DF55CDS8.chunk.js +0 -2
- package/dist/scripts/DF55CDS8.chunk.js.map +0 -1
- package/dist/scripts/DFw_xy-Y.chunk.js +0 -2
- package/dist/scripts/DFw_xy-Y.chunk.js.map +0 -1
- package/dist/scripts/DIGYepWa.chunk.js +0 -2
- package/dist/scripts/DIGYepWa.chunk.js.map +0 -1
- package/dist/scripts/DKeFeMvi.chunk.js +0 -2
- package/dist/scripts/DKeFeMvi.chunk.js.map +0 -1
- package/dist/scripts/DKqLfL60.chunk.js +0 -5
- package/dist/scripts/DKqLfL60.chunk.js.map +0 -1
- package/dist/scripts/DLJB8vZh.chunk.js +0 -2
- package/dist/scripts/DLJB8vZh.chunk.js.map +0 -1
- package/dist/scripts/DNtSrq_L.chunk.js +0 -2
- package/dist/scripts/DNtSrq_L.chunk.js.map +0 -1
- package/dist/scripts/DOHPsm0Q.chunk.js +0 -2
- package/dist/scripts/DOHPsm0Q.chunk.js.map +0 -1
- package/dist/scripts/DP-ErTOD.chunk.js +0 -2
- package/dist/scripts/DP-ErTOD.chunk.js.map +0 -1
- package/dist/scripts/DUwkrIwb.chunk.js +0 -2
- package/dist/scripts/DUwkrIwb.chunk.js.map +0 -1
- package/dist/scripts/DUyJfVnL.chunk.js +0 -2
- package/dist/scripts/DUyJfVnL.chunk.js.map +0 -1
- package/dist/scripts/DVfbSloY.chunk.js +0 -2
- package/dist/scripts/DVfbSloY.chunk.js.map +0 -1
- package/dist/scripts/DWvpibWQ.chunk.js +0 -2
- package/dist/scripts/DWvpibWQ.chunk.js.map +0 -1
- package/dist/scripts/DYmgSjx-.chunk.js +0 -10
- package/dist/scripts/DYmgSjx-.chunk.js.map +0 -1
- package/dist/scripts/D_EfITTc.chunk.js +0 -2
- package/dist/scripts/D_EfITTc.chunk.js.map +0 -1
- package/dist/scripts/DayWKE6G.chunk.js +0 -2
- package/dist/scripts/DayWKE6G.chunk.js.map +0 -1
- package/dist/scripts/DcOpKno_.chunk.js +0 -2
- package/dist/scripts/DcOpKno_.chunk.js.map +0 -1
- package/dist/scripts/DgMPP2NS.chunk.js +0 -2
- package/dist/scripts/DgMPP2NS.chunk.js.map +0 -1
- package/dist/scripts/DhWvZ3GP.chunk.js +0 -2
- package/dist/scripts/DhWvZ3GP.chunk.js.map +0 -1
- package/dist/scripts/Digrmnl9.chunk.js +0 -2
- package/dist/scripts/Digrmnl9.chunk.js.map +0 -1
- package/dist/scripts/DjWOPQVv.chunk.js +0 -2
- package/dist/scripts/DjWOPQVv.chunk.js.map +0 -1
- package/dist/scripts/DkSHJqHu.chunk.js +0 -2
- package/dist/scripts/DkSHJqHu.chunk.js.map +0 -1
- package/dist/scripts/Dpq10cRY.chunk.js +0 -2
- package/dist/scripts/Dpq10cRY.chunk.js.map +0 -1
- package/dist/scripts/DrsDxQ8i.chunk.js +0 -2
- package/dist/scripts/DrsDxQ8i.chunk.js.map +0 -1
- package/dist/scripts/DrsVPpSl.chunk.js +0 -3
- package/dist/scripts/DrsVPpSl.chunk.js.map +0 -1
- package/dist/scripts/DvDdiDQN.chunk.js +0 -7
- package/dist/scripts/DvDdiDQN.chunk.js.map +0 -1
- package/dist/scripts/DwU9lZgg.chunk.js +0 -2
- package/dist/scripts/DwU9lZgg.chunk.js.map +0 -1
- package/dist/scripts/I8EoNmf8.chunk.js +0 -2
- package/dist/scripts/I8EoNmf8.chunk.js.map +0 -1
- package/dist/scripts/Im8afRMN.chunk.js +0 -2
- package/dist/scripts/Im8afRMN.chunk.js.map +0 -1
- package/dist/scripts/N_QgBckB.chunk.js +0 -2
- package/dist/scripts/N_QgBckB.chunk.js.map +0 -1
- package/dist/scripts/SnHtKbiQ.chunk.js +0 -2
- package/dist/scripts/SnHtKbiQ.chunk.js.map +0 -1
- package/dist/scripts/U-eF69sj.chunk.js +0 -2
- package/dist/scripts/U-eF69sj.chunk.js.map +0 -1
- package/dist/scripts/XarUQJMp.chunk.js +0 -2
- package/dist/scripts/XarUQJMp.chunk.js.map +0 -1
- package/dist/scripts/ZYx7Po5r.chunk.js +0 -2
- package/dist/scripts/ZYx7Po5r.chunk.js.map +0 -1
- package/dist/scripts/app-DfSv_-O3.js +0 -220
- package/dist/scripts/app-DfSv_-O3.js.map +0 -1
- package/dist/scripts/awsfwCdu.chunk.js +0 -2
- package/dist/scripts/awsfwCdu.chunk.js.map +0 -1
- package/dist/scripts/b1pZWz43.chunk.js +0 -2
- package/dist/scripts/b1pZWz43.chunk.js.map +0 -1
- package/dist/scripts/cvX-F_mx.chunk.js +0 -2
- package/dist/scripts/cvX-F_mx.chunk.js.map +0 -1
- package/dist/scripts/lBHPAFYv.chunk.js +0 -2
- package/dist/scripts/lBHPAFYv.chunk.js.map +0 -1
- package/dist/scripts/mP-Ymt5z.chunk.js +0 -2
- package/dist/scripts/mP-Ymt5z.chunk.js.map +0 -1
- package/dist/scripts/nay4aGaa.chunk.js +0 -2
- package/dist/scripts/nay4aGaa.chunk.js.map +0 -1
- package/dist/scripts/pkzD5BEm.chunk.js +0 -2
- package/dist/scripts/pkzD5BEm.chunk.js.map +0 -1
- package/dist/scripts/tHf2V3t0.chunk.js +0 -2
- package/dist/scripts/tHf2V3t0.chunk.js.map +0 -1
- package/vite.config.ts +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DCds0mCy.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/curated-widget/CuratedWidget.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/enums/WidgetStatus.ts","../../../../libs/shared/src/utils/WidgetHelper.ts"],"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 { 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};","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};"],"names":["CuratedDashboardAppLink","CuratedWidgetCtaAppLink","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","TopicsConstants","classification","dashboard","w","targetType","DashboardTargetType","childClassificationCount","presentationId","t","CurationTag","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","TypeFilterOptions","SourceFilterOptions","WidgetStatus","WidgetHelper","UserAction","EntityType","ClickDescriptor","isPreviewing","preferences","removedItemIds","React","preferencesHash","acc","current","removedItemIdsHash","contentCopy","sortedContent","aIndex","bIndex","item","minContent","props","status","presentation","metadata","breakpoints","firstItem","MasterTypeHelper","MasterType"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e,E as n,V as k,T as d,c as w,R as p,aB as v,ac as K,aW as z,aC as G,o as R,n as W,aX as J,a6 as X,aE as Y,$ as Q,v as Z,w as ee,x as te,G as ae,aY as se,d as oe,W as re,X as ie}from"./app-DfSv_-O3.js";import{a as ne}from"./DvDdiDQN.chunk.js";import{S as ce}from"./Cib9o4sK.chunk.js";import{S as le,a as me,J as ue,u as de,b as he,B as O,c as ge,d as pe,e as fe}from"./CmAQo6rx.chunk.js";import{S as Se}from"./B-_Kgmt0.chunk.js";import{a as be,l as h,u as xe,F as C}from"./BCQ0kOEO.chunk.js";import"./DP-ErTOD.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";const Ne="_image_13xy1_1",je={image:Ne},q="default.contactUsError",ye=w.encloseNamespace(q);function Ce({className:t="",onTryAgain:i}){return e.jsxs(n,{className:t,children:[e.jsx(n.Image,{className:je.image,src:k.General.LOST_MESSAGE_BOTTLE}),e.jsx(n.Heading,{className:"w-100",children:e.jsx(d,{namespace:q,phrase:"errorHeading"})}),e.jsx(n.Info,{className:"w-100",children:e.jsx(d,{namespace:q,phrase:"errorMessage"})}),e.jsx(n.Cta,{text:ye("buttonLabel"),className:"btn btn-dark w-100",onClick:i})]})}const _="default.contactUsForm",o=w.encloseNamespace(_),Pe=h.object({firstName:h.string().required(o("firstNameRequired")),lastName:h.string().required(o("lastNameRequired")),email:h.string().email(o("emailValid")).required(o("emailRequired")),jobTitle:h.string().required(o("jobTitleRequired")),phoneNumber:h.string().required(o("phoneNumberRequired")).matches(/^[0-9]+$/,o("phoneNumberValid")),schoolOrDistrict:h.string().required(o("schoolOrDistrictRequired"))});function Ue(t){return e.jsx(be,{initialValues:t.initialValues,validateOnMount:!0,validationSchema:Pe,onSubmit:t.onSubmit,children:e.jsx(Fe,{showSpinner:t.showSpinner,googleMapsApiKey:t.googleMapsApiKey,searchProspectsUrl:t.searchProspectsUrl})})}function Fe(t){var b,x,a,N,j,u,y,A;const{showSpinner:i,googleMapsApiKey:f,searchProspectsUrl:c}=t,s=xe(),[l,m]=p.useState({}),[I,P]=p.useState(!1);function g(){s.setFieldValue("schoolOrDistrict",""),s.setFieldValue("country",""),s.setFieldValue("province",""),s.setFieldValue("prospectId",""),S()}function U(r){m({...l,...r}),g()}function D(){m({}),g()}function F(r){m({...l,...r}),s.setFieldValue("schoolOrDistrict",r.schoolName),s.setFieldValue("country",r.country),s.setFieldValue("province",r.province),s.setFieldValue("prospectId",r.prospectId),S()}function V(){m({...l,prospectId:void 0,schoolName:void 0,schoolPostCode:void 0}),g()}function L(r){P(!0),s.setFieldValue("schoolOrDistrict",r),S()}function S(){window.setTimeout(()=>s.validateForm(),0)}return e.jsxs(v,{children:[e.jsx(C,{label:o("firstName"),name:"firstName",value:(b=s.values)==null?void 0:b.firstName,showRequiredStar:!0,placeholder:o("firstNamePlaceholder")}),e.jsx(C,{label:o("lastName"),name:"lastName",value:(x=s.values)==null?void 0:x.lastName,showRequiredStar:!0,placeholder:o("lastNamePlaceholder")}),e.jsx(C,{label:o("email"),name:"email",value:(a=s.values)==null?void 0:a.email,showRequiredStar:!0,placeholder:o("emailPlaceholder")}),I?e.jsx(C,{label:o("schoolOrDistrict"),name:"schoolOrDistrict",value:(N=s.values)==null?void 0:N.schoolOrDistrict,showRequiredStar:!0,placeholder:o("schoolOrDistrictPlaceholder"),autoFocus:!0}):e.jsxs(e.Fragment,{children:[e.jsx(le,{data:l,setData:U,clearData:D,labelClassName:"form-label",geoLocation:{countryCode:"US"},googleMapsApiKey:f,required:!0,hideOnBlur:!0}),e.jsx(me,{data:l,setData:F,clearData:V,disabled:!l.schoolLocality,searchUrl:c,onClickNoSuggestions:L,required:!0,placeholder:!l.schoolLocality&&o("schoolPlaceholder"),hideOnBlur:!0})]}),e.jsx(ue,{id:"job-title",error:((j=s.touched)==null?void 0:j.jobTitle)&&((u=s.errors)==null?void 0:u.jobTitle),countryCode:K.US,initialValue:(y=s.values)==null?void 0:y.jobTitle,onChange:r=>s.setFieldValue("jobTitle",r,!1),labelClassName:"form-label",isTertiary:!1,required:!0}),e.jsx(C,{label:o("phoneNumber"),name:"phoneNumber",value:(A=s.values)==null?void 0:A.phoneNumber,showRequiredStar:!0,placeholder:o("phoneNumberPlaceholder")}),e.jsx(z,{type:"submit",className:"w-100 mt-3",variant:"dark",showSpinner:i,disabled:!s.isValid,children:e.jsx(d,{namespace:_,phrase:"contactUsButton"})})]})}const Ae="_image_13xy1_1",Te={image:Ae},M="default.contactUsSuccess",we=w.encloseNamespace(M);function Ie({className:t="",onClose:i}){return e.jsxs(n,{className:t,children:[e.jsx(n.Image,{className:Te.image,src:k.General.EMAIL_SENT}),e.jsx(n.Heading,{className:"w-100",children:e.jsx(d,{namespace:M,phrase:"successHeading"})}),e.jsx(n.Info,{className:"w-100",children:e.jsx(d,{namespace:M,phrase:"successMessage"})}),i&&e.jsx(n.Cta,{text:we("buttonLabel"),className:"btn btn-dark w-100",onClick:i})]})}const De="_logo_c400r_1",Ve="_pageContainer_c400r_5",H={logo:De,pageContainer:Ve},T="default.contactUs",E=w.encloseNamespace(T);function B(t){return e.jsxs(e.Fragment,{children:[t.formStage==="data-entry"&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"h2 text-center",children:e.jsx(d,{namespace:T,phrase:"contactUsHeading"})}),e.jsx("p",{className:"text-center mb-3",children:e.jsx(d,{namespace:T,phrase:"contactUsDescription"})}),e.jsx(Ue,{initialValues:t.initialFormValues,showSpinner:t.submitting,onSubmit:t.onSubmit,googleMapsApiKey:t.googleMapsApiKey,searchProspectsUrl:t.searchProspectsUrl}),t.showSignIn&&e.jsx(oe,{className:"d-flex justify-content-center align-items-center mt-3 text-info",appLink:{application:ie.DEFAULT,action:re.Default.CHALLENGE,params:t.loginParams},children:e.jsx(d,{namespace:T,phrase:"signInLink"})})]}),t.formStage==="error"&&e.jsx(Ce,{onTryAgain:t.onTryAgain}),t.formStage==="success"&&e.jsx(Ie,{onClose:t.closePopup})]})}function Le(t){return Z(ee.getDefaultMetadata({title:E("title"),phraseContext:{phraseHandler:E,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:Se.getCanonicalLink(),allowIndexing:!0,product:te.PRODUCT_NAME})),e.jsx("div",{className:`${H.pageContainer} bg-white mt-4 mx-4 mx-sm-auto p-3 mb-3 border border-gray-400 rounded-3 shadow-sm`,children:e.jsx(B,{formStage:t.formStage,initialFormValues:t.initialFormValues,loginParams:t.loginParams,onSubmit:t.onSubmit,onTryAgain:t.onTryAgain,submitting:t.submitting,googleMapsApiKey:t.googleMapsApiKey,searchProspectsUrl:t.searchProspectsUrl,showSignIn:t.showSignIn})})}function qe(t){function i(){t.closePopup(),ce.preventScrollTop()}return e.jsxs(ae,{title:E("title"),closePopup:i,bodyClassName:"p-5",hideTitle:!0,children:[e.jsx("button",{className:"btn-close position-absolute top-0 end-0 p-3",onClick:i}),e.jsx("div",{className:`${H.logo} position-absolute top-0 start-0 m-3`,children:e.jsx(se,{})}),e.jsx(B,{formStage:t.formStage,initialFormValues:t.initialFormValues,loginParams:t.loginParams,onSubmit:t.onSubmit,onTryAgain:t.onTryAgain,submitting:t.submitting,closePopup:i,googleMapsApiKey:t.googleMapsApiKey,searchProspectsUrl:t.searchProspectsUrl,showSignIn:t.showSignIn})]})}function ve(t){var x;const i=G(),f=R(Q.config()),c=R(Y.currentUser()),s=de(),[l,m]=p.useState("data-entry"),[I,P]=p.useState(!1),[g,U]=p.useState({firstName:"",lastName:"",email:"",schoolOrDistrict:"",jobTitle:"",phoneNumber:"",country:"",province:"",prospectId:""}),{createOrUpdateProfile:D}=he(),F=W.getHref(J.getCurrentRoute().appLink),V=F!=="/"?{redirectUrl:F}:{};p.useEffect(()=>{var a;(a=c.data)!=null&&a.isAuthenticated&&U({...g,firstName:c.data.givenName,lastName:c.data.familyName,email:c.data.email})},[(x=c.data)==null?void 0:x.isAuthenticated]);async function L(a){var N,j;try{P(!0),U(a);const u=await i(O.checkEmail(a.email));let y;if(a.prospectId){const r=await i(O.prospectLookups(a.prospectId));y=(N=r==null?void 0:r.find($=>$.type==="crm_id"))==null?void 0:N.externalId}const A={email:a.email,firstName:a.firstName,lastName:a.lastName,phone:a.phoneNumber,custom:{accountAddress:a!=null&&a.province?{countryCode:a==null?void 0:a.country,province:ge.parseProvince((a==null?void 0:a.province)||"")}:void 0,accountName:a.schoolOrDistrict,jobTitle:a.jobTitle,syncToCrm:(j=u==null?void 0:u.users)!=null&&j.length?void 0:!0,crmId:y||void 0}};D({email:a.email,firstName:a.firstName,lastName:a.lastName,phone:a.phoneNumber,countryCode:a.country}),s.logFormSubmission({user:A,eventType:ne.StreamableFormEvent.ContactUsFormSubmit,source:fe.ContactUs,topic:pe.ContactUs,productType:"sl"}),m("success")}catch(u){console.warn(u),m("error")}finally{P(!1)}}function S(){m("data-entry")}if(!f.hasCompleted||!c.hasCompleted)return e.jsx(e.Fragment,{});const b={formStage:l,initialFormValues:g,submitting:I,loginParams:V,onSubmit:L,onTryAgain:S,closePopup:t.closePopup,googleMapsApiKey:f.data.googleMapsApiKey,searchProspectsUrl:X.safeUrlConcat(f.data.gatewayApiUrl,"/v1/search/prospects"),showSignIn:!c.data.isAuthenticated};return t.fromPageLoad?e.jsx(Le,{...b}):e.jsx(qe,{...b})}export{ve as ContactUsView};
|
|
2
|
-
//# sourceMappingURL=DEwFBSVv.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DEwFBSVv.chunk.js","sources":["../../src/apps/default/views/contact-us/error/ContactUsError.tsx","../../src/apps/default/views/contact-us/form/ContactUsForm.tsx","../../src/apps/default/views/contact-us/success/ContactUsSuccess.tsx","../../src/apps/default/views/contact-us/StreamableContactUsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './contact-us-error.module.scss';\n\nconst namespace = 'default.contactUsError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContactUsErrorProps {\n className?: string;\n onTryAgain: () => void;\n}\n\nexport function ContactUsError({ className = '', onTryAgain }: ContactUsErrorProps) {\n return (\n <EmptyState className={className}>\n <EmptyState.Image className={styles.image} src={ImageUrls.General.LOST_MESSAGE_BOTTLE} />\n <EmptyState.Heading className='w-100'>\n <Text namespace={namespace} phrase='errorHeading' />\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n <Text namespace={namespace} phrase='errorMessage' />\n </EmptyState.Info>\n <EmptyState.Cta text={getPhrase('buttonLabel')} className='btn btn-dark w-100' onClick={onTryAgain} />\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { SearchLocalityInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchLocalityInput';\nimport { SearchSchoolInput } from 'libs/shared/apps/sign-up/components/steps/search-school-step-item/SearchSchoolInput';\nimport { SearchSchoolData } from 'libs/shared/apps/sign-up/interfaces/SearchSchoolData';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper, useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst namespace = 'default.contactUsForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst validationSchema = Yup.object({\n firstName: Yup.string().required(getPhrase('firstNameRequired')),\n lastName: Yup.string().required(getPhrase('lastNameRequired')),\n email: Yup.string().email(getPhrase('emailValid')).required(getPhrase('emailRequired')),\n jobTitle: Yup.string().required(getPhrase('jobTitleRequired')),\n phoneNumber: Yup.string().required(getPhrase('phoneNumberRequired')).matches(/^[0-9]+$/, getPhrase('phoneNumberValid')),\n schoolOrDistrict: Yup.string().required(getPhrase('schoolOrDistrictRequired'))\n});\n\nexport interface ContactUsFormValues {\n firstName: string;\n lastName: string;\n email: string;\n schoolOrDistrict: string;\n jobTitle: string;\n phoneNumber: string;\n country: string;\n province: string;\n prospectId: string;\n}\n\ninterface ContactUsFormProps {\n initialValues: ContactUsFormValues;\n showSpinner: boolean;\n onSubmit: (values: ContactUsFormValues) => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n}\n\nexport function ContactUsForm(props: ContactUsFormProps) {\n return (\n <FormWrapper<ContactUsFormValues>\n initialValues={props.initialValues}\n validateOnMount={true}\n validationSchema={validationSchema}\n onSubmit={props.onSubmit}\n >\n <ContactUsFormFields\n showSpinner={props.showSpinner}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n </FormWrapper>\n );\n}\n\ninterface ContactUsFormFieldsProps {\n showSpinner: boolean;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n}\n\nfunction ContactUsFormFields(props: ContactUsFormFieldsProps) {\n const { showSpinner, googleMapsApiKey, searchProspectsUrl } = props;\n const formikProps = useFormikContextWrapper<ContactUsFormValues>();\n\n const [ searchSchoolData, setSearchSchoolData ] = React.useState<SearchSchoolData>({});\n const [ cantFindSchool, setCantFindSchool ] = React.useState<boolean>(false);\n\n function clearFormikSchoolData() {\n formikProps.setFieldValue('schoolOrDistrict', '');\n formikProps.setFieldValue('country', '');\n formikProps.setFieldValue('province', '');\n formikProps.setFieldValue('prospectId', '');\n triggerValidation();\n }\n\n function setLocalityData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n clearFormikSchoolData();\n }\n\n function clearLocalityData(): void {\n setSearchSchoolData({});\n clearFormikSchoolData();\n }\n\n function setSchoolData(data: SearchSchoolData): void {\n setSearchSchoolData({ ...searchSchoolData, ...data });\n\n formikProps.setFieldValue('schoolOrDistrict', data.schoolName);\n formikProps.setFieldValue('country', data.country);\n formikProps.setFieldValue('province', data.province);\n formikProps.setFieldValue('prospectId', data.prospectId);\n\n triggerValidation();\n }\n\n function clearSchooldata(): void {\n setSearchSchoolData({\n ...searchSchoolData,\n prospectId: undefined,\n schoolName: undefined,\n schoolPostCode: undefined\n });\n clearFormikSchoolData();\n }\n\n function onClickNoSuggestions(name: string) {\n setCantFindSchool(true);\n\n formikProps.setFieldValue('schoolOrDistrict', name);\n\n triggerValidation();\n }\n\n function triggerValidation() {\n // For whatever reason, forcing the form the validate needs to happen in a setTimeout to work\n // I genuinely have no idea why - Sha\n window.setTimeout(() => formikProps.validateForm(), 0);\n }\n\n return (\n <Form>\n <FormField\n label={getPhrase('firstName')}\n name='firstName'\n value={formikProps.values?.firstName}\n showRequiredStar\n placeholder={getPhrase('firstNamePlaceholder')}\n />\n <FormField\n label={getPhrase('lastName')}\n name='lastName'\n value={formikProps.values?.lastName}\n showRequiredStar\n placeholder={getPhrase('lastNamePlaceholder')}\n />\n <FormField\n label={getPhrase('email')}\n name='email'\n value={formikProps.values?.email}\n showRequiredStar\n placeholder={getPhrase('emailPlaceholder')}\n />\n {!cantFindSchool ?\n <>\n <SearchLocalityInput\n data={searchSchoolData}\n setData={setLocalityData}\n clearData={clearLocalityData}\n labelClassName='form-label'\n geoLocation={{ countryCode: 'US' }}\n googleMapsApiKey={googleMapsApiKey}\n required\n hideOnBlur\n />\n <SearchSchoolInput\n data={searchSchoolData}\n setData={setSchoolData}\n clearData={clearSchooldata}\n disabled={!searchSchoolData.schoolLocality}\n searchUrl={searchProspectsUrl}\n onClickNoSuggestions={onClickNoSuggestions}\n required\n placeholder={!searchSchoolData.schoolLocality && getPhrase('schoolPlaceholder')}\n hideOnBlur\n />\n </> :\n <FormField\n label={getPhrase('schoolOrDistrict')}\n name='schoolOrDistrict'\n value={formikProps.values?.schoolOrDistrict}\n showRequiredStar\n placeholder={getPhrase('schoolOrDistrictPlaceholder')}\n autoFocus\n />\n }\n <JobTitleInput\n id='job-title'\n error={formikProps.touched?.jobTitle && formikProps.errors?.jobTitle}\n countryCode={CountryCode.US}\n initialValue={formikProps.values?.jobTitle}\n onChange={jobTitle => formikProps.setFieldValue('jobTitle', jobTitle, false)}\n labelClassName='form-label'\n isTertiary={false}\n required\n />\n <FormField\n label={getPhrase('phoneNumber')}\n name='phoneNumber'\n value={formikProps.values?.phoneNumber}\n showRequiredStar\n placeholder={getPhrase('phoneNumberPlaceholder')}\n />\n <SpinnerButton type='submit' className='w-100 mt-3' variant='dark' showSpinner={showSpinner} disabled={!formikProps.isValid} >\n <Text namespace={namespace} phrase='contactUsButton' />\n </SpinnerButton>\n </Form>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './contact-us-success.module.scss';\n\nconst namespace = 'default.contactUsSuccess';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ContactUsSuccessProps {\n className?: string;\n onClose?: () => void;\n}\n\nexport function ContactUsSuccess({ className = '', onClose }: ContactUsSuccessProps) {\n return (\n <EmptyState className={className}>\n <EmptyState.Image className={styles.image} src={ImageUrls.General.EMAIL_SENT} />\n <EmptyState.Heading className='w-100'>\n <Text namespace={namespace} phrase='successHeading' />\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n <Text namespace={namespace} phrase='successMessage' />\n </EmptyState.Info>\n {onClose && <EmptyState.Cta text={getPhrase('buttonLabel')} className='btn btn-dark w-100' onClick={onClose} />}\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { type BrazeUser, StreamableFormEvent } from '@clickview/braze-client';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { StreamableIconLogo } from 'shared/components/streamable-logo/StreamableLogo';\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { StreamableConstants } from 'shared/constants/StreamableConstants';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { BrazeSource } from 'shared/enums/BrazeSource';\nimport { BrazeTopic } from 'shared/enums/BrazeTopic';\nimport { useStreamableBrazeClientService } from 'shared/hooks/useStreamableBrazeClientService';\nimport { SeoHelper } from 'shared/utils/StreamableSeoHelper';\n\nimport { ContactUsError } from './error/ContactUsError';\nimport { ContactUsForm, ContactUsFormValues } from './form/ContactUsForm';\nimport { ContactUsSuccess } from './success/ContactUsSuccess';\n\nimport styles from './contact-us.module.scss';\n\nconst namespace = 'default.contactUs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ContactUsFormStage = 'data-entry' | 'success' | 'error';\n\ninterface ContactUsContentProps {\n formStage: ContactUsFormStage\n initialFormValues: ContactUsFormValues;\n submitting: boolean;\n loginParams: HashObject;\n onSubmit: (values: ContactUsFormValues) => void;\n onTryAgain: () => void;\n closePopup?: () => void;\n googleMapsApiKey: string;\n searchProspectsUrl: string;\n showSignIn: boolean;\n}\n\nfunction ContactUsContent(props: ContactUsContentProps) {\n return (\n <>\n {props.formStage === 'data-entry' &&\n <>\n <h1 className='h2 text-center'><Text namespace={namespace} phrase='contactUsHeading' /></h1>\n <p className='text-center mb-3'><Text namespace={namespace} phrase='contactUsDescription' /></p>\n <ContactUsForm\n initialValues={props.initialFormValues}\n showSpinner={props.submitting}\n onSubmit={props.onSubmit}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n />\n {props.showSignIn && <AppLink\n className='d-flex justify-content-center align-items-center mt-3 text-info'\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: props.loginParams\n }}\n >\n <Text namespace={namespace} phrase='signInLink' />\n </AppLink>}\n </>\n }\n {props.formStage === 'error' && <ContactUsError onTryAgain={props.onTryAgain} />}\n {props.formStage === 'success' && <ContactUsSuccess onClose={props.closePopup} />}\n </>\n );\n}\n\ninterface ContactUsPageProps extends ContactUsContentProps { }\n\nfunction ContactUsPage(props: ContactUsPageProps) {\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: getPhrase('title'),\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: true,\n product: StreamableConstants.PRODUCT_NAME\n }));\n\n return (\n <div className={`${styles.pageContainer} bg-white mt-4 mx-4 mx-sm-auto p-3 mb-3 border border-gray-400 rounded-3 shadow-sm`}>\n <ContactUsContent\n formStage={props.formStage}\n initialFormValues={props.initialFormValues}\n loginParams={props.loginParams}\n onSubmit={props.onSubmit}\n onTryAgain={props.onTryAgain}\n submitting={props.submitting}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n showSignIn={props.showSignIn}\n />\n </div>\n );\n}\n\ninterface ContactUsPopupProps extends ContactUsContentProps { }\n\nfunction ContactUsPopup(props: ContactUsPopupProps) {\n function onClose() {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={onClose}\n bodyClassName='p-5'\n hideTitle\n >\n <button className='btn-close position-absolute top-0 end-0 p-3' onClick={onClose} />\n <div className={`${styles.logo} position-absolute top-0 start-0 m-3`}>\n <StreamableIconLogo />\n </div>\n <ContactUsContent\n formStage={props.formStage}\n initialFormValues={props.initialFormValues}\n loginParams={props.loginParams}\n onSubmit={props.onSubmit}\n onTryAgain={props.onTryAgain}\n submitting={props.submitting}\n closePopup={onClose}\n googleMapsApiKey={props.googleMapsApiKey}\n searchProspectsUrl={props.searchProspectsUrl}\n showSignIn={props.showSignIn}\n />\n </Popup>\n );\n}\n\ninterface ContactUsViewProps extends PopupProps {\n fromPageLoad: boolean;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ContactUsView(props: ContactUsViewProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const braze = useStreamableBrazeClientService();\n const [ formStage, setFormStage ] = React.useState<ContactUsFormStage>('data-entry');\n const [ submitting, setSubmitting ] = React.useState(false);\n const [ initialFormValues, setInitialFormValues ] = React.useState<ContactUsFormValues>({\n firstName: '',\n lastName: '',\n email: '',\n schoolOrDistrict: '',\n jobTitle: '',\n phoneNumber: '',\n country: '',\n province: '',\n prospectId: ''\n });\n\n const { createOrUpdateProfile } = useProfileApiClient();\n\n const redirectUrl = Core.AppLinkHelper.getHref(ContextService.getCurrentRoute().appLink);\n const loginParams = redirectUrl !== '/' ? { redirectUrl } : {};\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated)\n return;\n\n setInitialFormValues({\n ...initialFormValues,\n firstName: currentUser.data.givenName,\n lastName: currentUser.data.familyName,\n email: currentUser.data.email\n });\n }, [currentUser.data?.isAuthenticated]);\n\n async function onSubmit(values: ContactUsFormValues) {\n try {\n setSubmitting(true);\n setInitialFormValues(values);\n\n const checkEmail = await fetchAsync<BrazeCheckEmailResponse>(BrazeRequests.checkEmail(values.email));\n\n let crmId: string;\n if (values.prospectId) {\n const prospectLookups = await fetchAsync<ProspectLookup[]>(BrazeRequests.prospectLookups(values.prospectId));\n crmId = prospectLookups?.find(l => l.type === 'crm_id')?.externalId;\n }\n\n const brazeUser: BrazeUser = {\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n custom: {\n accountAddress: values?.province ? {\n countryCode: values?.country,\n province: BrazeHelper.parseProvince(values?.province || '')\n } : undefined,\n accountName: values.schoolOrDistrict,\n jobTitle: values.jobTitle,\n syncToCrm: checkEmail?.users?.length ? undefined : true,\n crmId: crmId || undefined\n }\n };\n \n createOrUpdateProfile({\n email: values.email,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phoneNumber,\n countryCode: values.country\n });\n\n braze.logFormSubmission({\n user: brazeUser,\n eventType: StreamableFormEvent.ContactUsFormSubmit,\n source: BrazeSource.ContactUs,\n topic: BrazeTopic.ContactUs,\n productType: 'sl'\n });\n\n setFormStage('success');\n } catch (err) {\n console.warn(err);\n\n setFormStage('error');\n } finally {\n setSubmitting(false);\n }\n }\n\n function onTryAgain() {\n setFormStage('data-entry');\n }\n\n if (!config.hasCompleted || !currentUser.hasCompleted)\n return <></>;\n\n const contactUsProps = {\n formStage,\n initialFormValues,\n submitting,\n loginParams,\n onSubmit,\n onTryAgain,\n closePopup: props.closePopup,\n googleMapsApiKey: config.data.googleMapsApiKey,\n searchProspectsUrl: UrlHelper.safeUrlConcat(config.data.gatewayApiUrl, '/v1/search/prospects'),\n showSignIn: !currentUser.data.isAuthenticated\n };\n\n if (props.fromPageLoad)\n return <ContactUsPage {...contactUsProps} />;\n\n return (\n <ContactUsPopup {...contactUsProps} />\n );\n}"],"names":["namespace","getPhrase","LanguageService","ContactUsError","className","onTryAgain","jsxs","EmptyState","jsx","styles","ImageUrls","Text","validationSchema","Yup.object","Yup.string","ContactUsForm","props","FormWrapper","ContactUsFormFields","showSpinner","googleMapsApiKey","searchProspectsUrl","formikProps","useFormikContextWrapper","searchSchoolData","setSearchSchoolData","React","cantFindSchool","setCantFindSchool","clearFormikSchoolData","triggerValidation","setLocalityData","data","clearLocalityData","setSchoolData","clearSchooldata","onClickNoSuggestions","name","Form","FormField","_a","_b","_c","_d","Fragment","SearchLocalityInput","SearchSchoolInput","JobTitleInput","_e","_f","CountryCode","_g","jobTitle","_h","SpinnerButton","ContactUsSuccess","onClose","ContactUsContent","AppLink","AppChannels","Actions","ContactUsPage","useSetPageMetadata","PageMetadataHelper","SeoHelper","StreamableConstants","ContactUsPopup","ScrollHelper","Popup","StreamableIconLogo","ContactUsView","fetchAsync","Flight.useGetFetchAsync","config","Flight.useBasicFetch","ConfigRequests","currentUser","UserRequests","braze","useStreamableBrazeClientService","formStage","setFormStage","submitting","setSubmitting","initialFormValues","setInitialFormValues","createOrUpdateProfile","useProfileApiClient","redirectUrl","Core.AppLinkHelper","ContextService","loginParams","onSubmit","values","checkEmail","BrazeRequests","crmId","prospectLookups","l","brazeUser","BrazeHelper","StreamableFormEvent","BrazeSource","BrazeTopic","err","contactUsProps","UrlHelper"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as n,c,c1 as u,ak as C,Y as w,av as x,l as d,m as f}from"./app-DfSv_-O3.js";import{a as g}from"./CEmtkty-.chunk.js";import{D as p}from"./BdHxGaRy.chunk.js";import{D as b}from"./C3fMNXil.chunk.js";import{R as v,s as j}from"./C-pJ0Wi3.chunk.js";import{R as s}from"./cvX-F_mx.chunk.js";import{F as S}from"./CskJerl_.chunk.js";var l=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(l||{});function P(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z",clipRule:"evenodd"})})}function H(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z",fill:"currentColor"})})}function T(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z",fill:"currentColor"})})}function A(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39",fill:"currentColor"})})}function D(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z",fill:"currentColor"})})}function M(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z",fill:"currentColor"})})}function F(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z",fill:"currentColor"})})}function N(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z",fill:"currentColor"})})}const o="shared.shared-utils",R={mapRatingToClass(e){return e?(t=>{switch(!0){case t<32:return"bg-purple";case t<48:return"bg-green";case t<80:return"bg-blue";case t<96:return"bg-red";case t<128:return"bg-pink";case t>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case u.HostedLibrary:case u.CustomLibrary:return e.name;case u.Exchange:return c.getPhrase(o,"exchange");case u.Workspace:return c.getPhrase(o,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case u.HostedLibrary:case u.CustomLibrary:return"bg-blue";case u.Exchange:return"bg-green";case u.Workspace:default:return"bg-red"}},isInteractive(e){var r,t;return!!((t=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&t.length)},mapTypeToSvg(e){let t={[s.Pdf]:A,[s.Image]:S,[s.PowerPoint]:D,[s.Document]:F,[s.Excel]:T,[s.Zip]:N,[s.File]:M}[e];return t||(t=C),t},mapTypeToClass(e){switch(e){case s.Pdf:return"icon-red";case s.Image:return"icon-purple";case s.Document:return"icon-blue";case s.Excel:return"icon-green";case s.PowerPoint:return"icon-orange";case s.Zip:return"icon-teal";case s.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case s.Pdf:return c.getPhrase(o,"pdf");case s.Image:return c.getPhrase(o,"image");case s.Document:return c.getPhrase(o,"document");case s.Excel:return c.getPhrase(o,"spreadsheet");case s.PowerPoint:return c.getPhrase(o,"presentation");case s.Zip:return c.getPhrase(o,"zipArchive");case s.File:return c.getPhrase(o,"file");default:return""}}},q="shared.badges",E=c.encloseNamespace(q);var V=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(V||{});const k={xs:f.ExtraSmall,sm:f.Small,std:f.Standard,lg:f.Large},L={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function $(e){switch(e){case g.Published:case p.Published:return"bg-success";case g.Archived:case g.Rejected:case p.Archived:return"bg-danger";case g.Draft:case p.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case g.Pending:case g.Processing:return"bg-warning"}}function I(e){return e.includes(l.Streamable)?`px-1 text-nowrap d-flex align-items-center ${j.streamable}`:e.includes(l.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function Z(e,r,t){const i="badge",h=L[t];let a="";if(e==="duration-approximate"&&(a="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(a="duration-badge"),e==="interactive"&&(a="interactive-badge"),e==="rating"&&(a=`rating-badge text-shadow ${R.mapRatingToClass(r.value)}`),e==="production-year"&&(a="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${$(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${h}`;if(e==="count"&&(a="count-badge px-1 rounded"),e==="restriction"){const m=v.mapRestrictionToClass(r.restrictions);return x("restriction-badge rounded-pill px-2 d-flex align-items-center",m)}return e==="source"&&(a=I(r)),x(i,a)}function W(e,r,t){if(e==="interactive")return E("interactive");if(e==="duration-approximate")return b.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return b.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return n.jsx(d,{svg:H});if(e==="status")return typeof r=="number"?g[r]:r;if(e==="trending")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:P,size:k[t]}),n.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:v.mapRestrictionToSvg(r.restrictions)}),n.jsx("span",{children:v.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const i=r;return i.includes(l.Streamable)?"streamable":i.includes(l.MoviesAndTv)?"movies + tv":i.includes(l.Exchange)?"exchange":i.includes(l.Twig)?"twig":"-"}}function Y(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function _(e,r){var t,i;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((t=r==null?void 0:r.data)!=null&&t.length):e==="captions"?!!(r!=null&&r.length)||!!((i=r==null?void 0:r.data)!=null&&i.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function y(e){const{type:r,data:t,size:i="std"}=e;if(!_(r,t))return n.jsx(n.Fragment,{});let h=Z(r,t,i);h=`${h} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const a=W(r,t,i),m=Y(r,t),z=e.inline&&"d-inline-block";return m?n.jsx("div",{className:"badge-wrapper d-inline",children:n.jsx(w,{...m,spanHack:!0,spanHackClassName:z,children:n.jsx("span",{className:h,children:a})})}):n.jsx("span",{className:`${h} badge-wrapper`,children:a})}export{y as B,H as C,R as V,V as a};
|
|
2
|
-
//# sourceMappingURL=DF55CDS8.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DF55CDS8.chunk.js","sources":["../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize} = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string} = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}"],"names":["VideoSource","TrendingSvg","props","jsx","CloseCaptionBadgeSvg","FileExcelSvg","FilePdfSvg","FilePptSvg","FileSvg","FileWordSvg","FileZipSvg","lang","VideoDetailsHelper","ratingValue","rating","library","hasLite","MasterObjectTypes","LanguageService","sourceType","video","_b","_a","type","mappedType","ResourceFileType","FileImgSvg","FolderSvg","namespace","getPhrase","BadgeType","badgeSvgContainerSizeMap","SvgContainerSize","badgeSizeClassNameMap","getStatusClassName","status","CurationStatus","DashboardStatus","getSourceClassName","sources","styles","getClassName","data","size","baseClass","sizeClass","typeClass","restrictionBgClass","RestrictionHelper","classNames","getBadgeContent","DurationHelper","SvgContainer","jsxs","Fragment","getTooltip","hasData","Badge","className","content","tooltip","spanHackClassName","Tooltip"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ai as o,aO as c,j as a,aP as R,aQ as d,aR as D,aS as L,aT as p,aU as S,aV as $,v as b}from"./app-DfSv_-O3.js";const N=R("h4");N.displayName="DivStyledAsH4";const g=o.forwardRef(({className:e,bsPrefix:s,as:r=N,...n},t)=>(s=c(s,"alert-heading"),a.jsx(r,{ref:t,className:d(e,s),...n})));g.displayName="AlertHeading";const A=o.forwardRef(({className:e,bsPrefix:s,as:r=D,...n},t)=>(s=c(s,"alert-link"),a.jsx(r,{ref:t,className:d(e,s),...n})));A.displayName="AlertLink";const C=o.forwardRef((e,s)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:w,children:y,variant:m="primary",onClose:u,dismissible:h,transition:x=p,...f}=L(e,{show:"onClose"}),l=c(r,"alert"),E=S(H=>{u&&u(!1,H)}),i=x===!0?p:x,j=a.jsxs("div",{role:"alert",...i?void 0:f,ref:s,className:d(w,l,m&&`${l}-${m}`,h&&`${l}-dismissible`),children:[h&&a.jsx($,{onClick:E,"aria-label":t,variant:k}),y]});return i?a.jsx(i,{unmountOnExit:!0,...f,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:g});function V({error:e}){return b({title:"Dev Error"}),e?a.jsxs("div",{className:"px-3",children:[a.jsx("h1",{children:e.name}),a.jsx(v,{variant:"danger",children:a.jsx("h2",{children:e.message})}),a.jsxs(v,{variant:"warning",children:[a.jsx("h3",{children:"Call stack"}),a.jsx("code",{children:e.stack})]})]}):a.jsx(a.Fragment,{})}export{V as DevErrorView};
|
|
2
|
-
//# sourceMappingURL=DFw_xy-Y.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DFw_xy-Y.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}"],"names":["DivStyledAsH4","divWithClassName","AlertHeading","React.forwardRef","className","bsPrefix","Component","props","ref","useBootstrapPrefix","_jsx","classNames","AlertLink","Anchor","Alert","uncontrolledProps","show","closeLabel","closeVariant","children","variant","onClose","dismissible","transition","Fade","useUncontrolled","prefix","handleClose","useEventCallback","e","Transition","alert","_jsxs","CloseButton","Alert$1","DevErrorView","error","useSetPageMetadata","jsxs","jsx","Fragment"],"mappings":"qHAOA,MAAMA,EAAgBC,EAAiB,IAAI,EAC3CD,EAAc,YAAc,gBAC5B,MAAME,EAA4BC,EAAAA,WAAiB,CAAC,CAClD,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYN,EAChB,GAAGO,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,eAAe,EACnCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDL,EAAa,YAAc,eCf3B,MAAMU,EAAyBT,EAAAA,WAAiB,CAAC,CAC/C,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYO,EAChB,GAAGN,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,YAAY,EAChCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDK,EAAU,YAAc,YCPxB,MAAME,EAAqBX,EAAAA,WAAiB,CAACY,EAAmBP,IAAQ,CACtE,KAAM,CACJ,SAAAH,EACA,KAAAW,EAAO,GACP,WAAAC,EAAa,cACb,aAAAC,EACA,UAAAd,EACA,SAAAe,EACA,QAAAC,EAAU,UACV,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaC,EACb,GAAGjB,CACP,EAAMkB,EAAgBV,EAAmB,CACrC,KAAM,SACV,CAAG,EACKW,EAASjB,EAAmBJ,EAAU,OAAO,EAC7CsB,EAAcC,EAAiBC,GAAK,CACpCR,GACFA,EAAQ,GAAOQ,CAAC,CAEpB,CAAC,EACKC,EAAaP,IAAe,GAAOC,EAAOD,EAC1CQ,EAAqBC,EAAAA,KAAM,MAAO,CACtC,KAAM,QACN,GAAKF,EAAqB,OAARvB,EAClB,IAAKC,EACL,UAAWG,EAAWP,EAAWsB,EAAQN,GAAW,GAAGM,CAAM,IAAIN,CAAO,GAAIE,GAAe,GAAGI,CAAM,cAAc,EAClH,SAAU,CAACJ,GAA4BZ,EAAAA,IAAKuB,EAAa,CACvD,QAASN,EACT,aAAcV,EACd,QAASC,CACf,CAAK,EAAGC,CAAQ,CAChB,CAAG,EACD,OAAKW,EACepB,EAAAA,IAAKoB,EAAY,CACnC,cAAe,GACf,GAAGvB,EACH,IAAK,OACL,GAAIS,EACJ,SAAUe,CACd,CAAG,EAPuBf,EAAOe,EAAQ,IAQzC,CAAC,EACDjB,EAAM,YAAc,QACpB,MAAAoB,EAAe,OAAO,OAAOpB,EAAO,CAClC,KAAMF,EACN,QAASV,CACX,CAAC,ECnDM,SAASiC,EAAa,CAAE,MAAAC,GAAgD,CAG7E,OAFAC,EAAmB,CAAE,MAAO,YAAa,EAEpCD,EAIHE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,WAAM,IAAA,CAAK,EAChBA,EAAAA,IAACzB,GAAM,QAAQ,SACb,eAAC,KAAA,CAAI,SAAAsB,EAAM,QAAQ,CAAA,CACrB,EACAE,EAAAA,KAACxB,EAAA,CAAM,QAAQ,UACb,SAAA,CAAAyB,EAAAA,IAAC,MAAG,SAAA,YAAA,CAAU,EACdA,EAAAA,IAAC,OAAA,CAAM,SAAAH,EAAM,KAAA,CAAM,CAAA,CAAA,CACrB,CAAA,EACF,EAZOG,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CAcb","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{M as w,aK as m,i as p,k as c,a6 as i}from"./app-DfSv_-O3.js";let l=null;const s={getVideoDownloadUrl(o,t){return i.safeUrlConcat(i.makeHttps(o),`/download?token=${t}`)},downloadResource(o,t,e,n){var d;let a=l;l||(a=l=document.createElement("iframe"),document.body.appendChild(a),a.style.display="none"),a.src=o.url,n||w.logUserAction({id:o==null?void 0:o.id,name:o==null?void 0:o.name,resourceType:(d=o==null?void 0:o.metadata)==null?void 0:d.resourceType,...t},{actionType:c.Download,entity:p.Resource,workflowPhase:m.Complete,...e})},async downloadBlob(o,t){const e=await fetch(o);if(!e.ok)throw new Error("Error downloading file");const n=URL.createObjectURL(await e.blob()),a=document.createElement("a");a.href=n,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),window.setTimeout(()=>URL.revokeObjectURL(n),100)}};export{s as D};
|
|
2
|
-
//# sourceMappingURL=DIGYepWa.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DIGYepWa.chunk.js","sources":["../../../../libs/shared/src/utils/DownloadHelper.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Resource } from '../interfaces';\n\nlet downloadRef: HTMLIFrameElement = null;\n\nexport const DownloadHelper = {\n getVideoDownloadUrl(downloadProxyUrl: string, token: string): string {\n return UrlHelper.safeUrlConcat(UrlHelper.makeHttps(downloadProxyUrl), `/download?token=${token}`);\n },\n\n downloadResource(\n resource: Resource,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions,\n skipEventLogging?: boolean\n ): void {\n let iframe = downloadRef;\n\n if (!downloadRef) {\n iframe = downloadRef = document.createElement('iframe');\n document.body.appendChild(iframe);\n\n iframe.style.display = 'none';\n }\n\n iframe.src = resource.url;\n\n if (!skipEventLogging)\n AnalyticsHelper.logUserAction({\n id: resource?.id,\n name: resource?.name,\n resourceType: resource?.metadata?.resourceType,\n ...analyticsData\n }, {\n actionType: UserAction.Download,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete,\n ...analyticsOptions\n });\n },\n\n async downloadBlob(fileUrl: string, fileName: string): Promise<void> {\n const response = await fetch(fileUrl);\n\n if (!response.ok) {\n throw new Error('Error downloading file');\n }\n\n // Mime type is inferred from the download\n const downloadUrl = URL.createObjectURL(await response.blob());\n\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = fileName;\n\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Delay revoking the URL to ensure the download is initiated\n window.setTimeout(() => URL.revokeObjectURL(downloadUrl), 100);\n }\n};"],"names":["downloadRef","DownloadHelper","downloadProxyUrl","token","UrlHelper","resource","analyticsData","analyticsOptions","skipEventLogging","iframe","AnalyticsHelper","_a","UserAction","EntityType","WorkflowPhase","fileUrl","fileName","response","downloadUrl"],"mappings":"oEAQA,IAAIA,EAAiC,KAE9B,MAAMC,EAAiB,CAC5B,oBAAoBC,EAA0BC,EAAuB,CACnE,OAAOC,EAAU,cAAcA,EAAU,UAAUF,CAAgB,EAAG,mBAAmBC,CAAK,EAAE,CAClG,EAEA,iBACEE,EACAC,EACAC,EACAC,EACM,OACN,IAAIC,EAAST,EAERA,IACHS,EAAST,EAAc,SAAS,cAAc,QAAQ,EACtD,SAAS,KAAK,YAAYS,CAAM,EAEhCA,EAAO,MAAM,QAAU,QAGzBA,EAAO,IAAMJ,EAAS,IAEjBG,GACHE,EAAgB,cAAc,CAC5B,GAAIL,GAAA,YAAAA,EAAU,GACd,KAAMA,GAAA,YAAAA,EAAU,KAChB,cAAcM,EAAAN,GAAA,YAAAA,EAAU,WAAV,YAAAM,EAAoB,aAClC,GAAGL,CAAA,EACF,CACD,WAAYM,EAAW,SACvB,OAAQC,EAAW,SACnB,cAAeC,EAAc,SAC7B,GAAGP,CAAA,CACJ,CACL,EAEA,MAAM,aAAaQ,EAAiBC,EAAiC,CACnE,MAAMC,EAAW,MAAM,MAAMF,CAAO,EAEpC,GAAI,CAACE,EAAS,GACZ,MAAM,IAAI,MAAM,wBAAwB,EAI1C,MAAMC,EAAc,IAAI,gBAAgB,MAAMD,EAAS,MAAM,EAEvD,EAAI,SAAS,cAAc,GAAG,EACpC,EAAE,KAAOC,EACT,EAAE,SAAWF,EAEb,SAAS,KAAK,YAAY,CAAC,EAC3B,EAAE,MAAA,EACF,SAAS,KAAK,YAAY,CAAC,EAG3B,OAAO,WAAW,IAAM,IAAI,gBAAgBE,CAAW,EAAG,GAAG,CAC/D,CACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{o as r,s as I,v,c as B,p as E,q as y,_ as H,j as t,by as N,aE as R,$ as D,W as l,X as u,e as U}from"./app-DfSv_-O3.js";import{B as _,P as w}from"./N_QgBckB.chunk.js";import{P as F,B as O}from"./b1pZWz43.chunk.js";import{C as W,P as q}from"./BeTQIGnj.chunk.js";import{P as k}from"./D3tziVkG.chunk.js";import"./DrsVPpSl.chunk.js";import{H as M,A as V}from"./BwDmMfAz.chunk.js";import{W as z,b as G}from"./DCds0mCy.chunk.js";import{C as p}from"./B0KMLOp5.chunk.js";import"./DwU9lZgg.chunk.js";import"./CZafJWQk.chunk.js";import"./CZLZ0bbA.chunk.js";import"./DBp0J6X9.chunk.js";import"./C-7yn3rc.chunk.js";import"./C36-3UWl.chunk.js";import"./BBnDr_iy.chunk.js";import"./BQH1xd9z.chunk.js";import"./CPXlV0fg.chunk.js";import"./BCyuhFou.chunk.js";import"./BlFiywl_.chunk.js";import"./CbFIe2Y6.chunk.js";import"./CskJerl_.chunk.js";import"./DNtSrq_L.chunk.js";import"./DOHPsm0Q.chunk.js";import"./XarUQJMp.chunk.js";import"./B32lL5ga.chunk.js";import"./nay4aGaa.chunk.js";import"./BdHxGaRy.chunk.js";import"./pkzD5BEm.chunk.js";const J="_classificationPane_sns98_1",K={classificationPane:J},X="subjects.classificationsView",o=B.encloseNamespace(X);function $(e,s){const n=r(e&&p.classification(e,s));return e?n==null?void 0:n.data:{name:o("exploreAllTopicsHeading"),banner:{url:M.Images.STREAMABLE_TOPIC_BANNER}}}function Q(e){const s=r(e&&p.path(e));return e?s==null?void 0:s.data:[]}function ve(e){var C,A,P,L;const s=r(R.currentUser()),n=r(D.config()),c=r(I.streamablePresentation()),a=$(e.id,(C=s.data)==null?void 0:C.id),g=Q(e.id);v({title:o("exploreAllTopicsHeading")});const S=e.id?p.children(e.id):c.data&&p.topLevelTopics((A=c.data)==null?void 0:A.id),m=r(S),[T]=E(H.AUDIENCE_FILTER,void 0,{storage:y.SessionStorage}),f=i=>{const d=V.getAudienceParams(T);return{application:u.SUBJECTS,action:l.Subjects.CLASSIFICATION,args:i?[i.id,U.slugify(i.name)]:[],params:d||{}}};function x(){const i=[{name:o("discover"),appLink:{application:u.DASHBOARD,action:l.Dashboard.HOME}},{name:o("exploreAllTopicsHeading"),appLink:{application:u.SUBJECTS,action:l.Subjects.CLASSIFICATION_ALL},active:!e.id}];return g.forEach(d=>{i.push({name:d.name,appLink:f(d)})}),e.id&&i.push({name:o("subview"),active:!0}),i}const b=(e.id?!!a:!0)&&!!n.data&&m.data,h=!!g,j={presentationId:(P=c.data)==null?void 0:P.id,presentationName:(L=c.data)==null?void 0:L.name,currentClassificationName:a==null?void 0:a.name,widgetId:G.Classifications,templateId:z.CoverFixedPillListLarge};return t.jsxs("main",{className:"bg-white px-4",children:[b?t.jsx(_,{heading:a==null?void 0:a.name,banner:a==null?void 0:a.banner,imageCdnUrl:n.data.imageCdnUrl,actions:[],imageOptions:!e.id&&{resizeType:N.Cover}}):t.jsx(w,{}),t.jsx("div",{className:"py-3 mb-3 border-bottom",children:h?t.jsx(O,{breadcrumbs:x()}):t.jsx(F,{})}),t.jsx("div",{className:K.classificationPane,children:b?t.jsx(W,{name:"",description:"",analyticsData:j,content:m==null?void 0:m.data,appLinks:{classification:f},hasTableOfContents:!1,settings:{hasTopicDirectories:!1}}):t.jsx(k,{partialLoadingComponent:q})})]})}export{ve as StreamableClassificationsView};
|
|
2
|
-
//# sourceMappingURL=DKeFeMvi.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DKeFeMvi.chunk.js","sources":["../../src/apps/subjects/views/classifications/StreamableClassificationsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb, Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { CoverFixedPillListLargeWidgetTemplate } from 'libs/shared/components/widgets/curated-widgets/templates/cover-fixed-pill-list-large/CoverFixedPillListLargeWidgetTemplate';\nimport { PartialDynamicWidget } from 'libs/shared/components/widgets/dynamic-widget';\nimport { PartialSubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ResizeType } from 'libs/shared/enums/Images';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, Config, CurrentUser, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\nimport { PresentationRequests } from 'shared/flight-requests/PresentationRequests';\n\nimport styles from './classifications.module.scss';\n\nconst namespace = 'subjects.classificationsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useGetClassification(\n id?: string,\n userId?: string\n): Classification {\n /**\n * With an id, we're fetching the classification to show the child topics in the\n * classification list.\n */\n const classification = Flight.useBasicFetch<Classification>(\n id &&\n ClassificationRequests.classification(id, userId)\n );\n\n /**\n * Without an id, we should be displaying the All Subjects page. So we'll construct\n * a synthetic classification.\n */\n if (!id)\n return {\n name: getPhrase('exploreAllTopicsHeading'),\n banner: {\n url: HardCoded.Images.STREAMABLE_TOPIC_BANNER\n }\n } as Classification;\n\n return classification?.data;\n}\n\nfunction useGetPaths(id?: string): Classification[] {\n const path = Flight.useBasicFetch<Classification[]>(id && ClassificationRequests.path(id));\n\n if (!id)\n return [];\n\n return path?.data;\n}\n\n\ninterface StreamableClassificationsViewProps {\n id?: string;\n}\n\nexport function StreamableClassificationsView(props: StreamableClassificationsViewProps): JSX.Element {\n /**\n * Data fetching\n */\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.streamablePresentation()\n );\n\n const classification = useGetClassification(\n props.id,\n currentUser.data?.id\n );\n\n const paths = useGetPaths(props.id);\n\n useSetPageMetadata({ title: getPhrase('exploreAllTopicsHeading') });\n\n /**\n * With an id, we'll fetch the classification's children.\n * With a presentationId, we'll fetch the presentation's top level topics.\n * For public access, we will always have a presentationId available.\n */\n const request = props.id\n ? ClassificationRequests.children(props.id)\n : presentation.data && ClassificationRequests.topLevelTopics(presentation.data?.id);\n\n const children = Flight.useBasicFetch<Classification[]>(request);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const classificationAppLinkFn = (classification?: Classification) => {\n const params = AudienceHelper.getAudienceParams(activeAudiences);\n return {\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.CLASSIFICATION,\n args: classification ? [ classification.id, TextHelper.slugify(classification.name) ] : [],\n params: params || {}\n };\n };\n\n function getBreadcrumbs(): Breadcrumb[] {\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }, {\n name: getPhrase('exploreAllTopicsHeading'),\n appLink: { application: AppChannels.SUBJECTS, action: Actions.Subjects.CLASSIFICATION_ALL },\n active: !props.id\n }];\n\n paths.forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: classificationAppLinkFn(item)\n });\n });\n\n if (props.id)\n breadcrumbs.push({\n name: getPhrase('subview'),\n active: true\n });\n\n return breadcrumbs;\n }\n\n /**\n * Render Variable\n */\n const dataLoaded = (props.id ? !!classification : true) && !!config.data && children.data;\n const breadcrumbsDataLoaded = !!paths;\n\n /**\n * Additional subjects data to be mixed in with lower-level component analytics collection\n */\n const analyticsData = {\n presentationId: presentation.data?.id,\n presentationName: presentation.data?.name,\n currentClassificationName: classification?.name,\n widgetId: WidgetTypeId.Classifications,\n templateId: WidgetTemplate.CoverFixedPillListLarge\n };\n\n return (\n <main className='bg-white px-4'>\n {dataLoaded\n ? (\n <BannerHeader\n heading={classification?.name}\n banner={classification?.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n actions={[]}\n imageOptions={!props.id && { resizeType: ResizeType.Cover }}\n />\n ) : <PartialBannerHeader />\n }\n <div className={`py-3 mb-3 border-bottom`}>\n {(() => {\n if (!breadcrumbsDataLoaded)\n return <PartialBreadcrumbs />;\n\n return <Breadcrumbs breadcrumbs={getBreadcrumbs()} />;\n })()}\n </div>\n <div className={styles.classificationPane}>\n {dataLoaded\n ? (\n <CoverFixedPillListLargeWidgetTemplate\n name=''\n description=''\n analyticsData={analyticsData}\n content={children?.data}\n appLinks={{ classification: classificationAppLinkFn }}\n hasTableOfContents={false}\n settings={{\n hasTopicDirectories: false\n }}\n />\n ) : <PartialDynamicWidget partialLoadingComponent={PartialSubjectWidgetItem} />}\n </div>\n </main>\n );\n}"],"names":["namespace","getPhrase","LanguageService","useGetClassification","id","userId","classification","Flight.useBasicFetch","ClassificationRequests","HardCoded","useGetPaths","path","StreamableClassificationsView","props","currentUser","UserRequests","config","ConfigRequests","presentation","PresentationRequests","_a","paths","useSetPageMetadata","request","_b","children","activeAudiences","useViewModel","SharedViewModelKeys","StorageType","classificationAppLinkFn","params","AudienceHelper","AppChannels","Actions","TextHelper","getBreadcrumbs","breadcrumbs","item","dataLoaded","breadcrumbsDataLoaded","analyticsData","_c","_d","WidgetTypeId","WidgetTemplate","jsxs","jsx","BannerHeader","ResizeType","PartialBannerHeader","Breadcrumbs","PartialBreadcrumbs","styles","CoverFixedPillListLargeWidgetTemplate","PartialDynamicWidget","PartialSubjectWidgetItem"],"mappings":"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"}
|