@clickview/exchange 0.47.1-dev.4 → 0.48.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/1068-exchange-b5eaf8af44.chunk.css +35 -0
- package/dist/css/1127-exchange-0eab318199.chunk.css +40 -0
- package/dist/css/1226-exchange-217b44f8b4.chunk.css +57 -0
- package/dist/css/1861-exchange-f3ff7e4f0d.chunk.css +85 -0
- package/dist/css/2494-exchange-02d7a0249c.chunk.css +2 -0
- package/dist/css/2538-exchange-4cbfe56ba3.chunk.css +1 -0
- package/dist/css/3291-exchange-3a8e198338.chunk.css +11 -0
- package/dist/css/3858-exchange-06944bdfa4.chunk.css +1 -0
- package/dist/css/4075-exchange-6d2304419c.chunk.css +5 -0
- package/dist/css/5027-exchange-2284222ca6.chunk.css +25 -0
- package/dist/css/6298-exchange-78ece5c7c5.chunk.css +37 -0
- package/dist/css/6332-exchange-2a22bfa655.chunk.css +1 -0
- package/dist/css/6356-exchange-8c5b220bf6.chunk.css +1 -0
- package/dist/css/7095-exchange-4cbfe56ba3.chunk.css +1 -0
- package/dist/css/7759-exchange-23bb5dd175.chunk.css +8 -0
- package/dist/css/8294-exchange-c797263ac2.chunk.css +1 -0
- package/dist/css/8589-exchange-71b6bc18f9.chunk.css +11 -0
- package/dist/css/8866-exchange-e80e6c6649.chunk.css +10 -0
- package/dist/css/9212-exchange-d71527fc65.chunk.css +1 -0
- package/dist/css/9611-exchange-cbf2bb5621.chunk.css +5 -0
- package/dist/css/9958-exchange-1387f35e92.chunk.css +14 -0
- package/dist/css/lite-exchange-306a09841f.css +15 -0
- package/dist/languages/en.json +1 -0
- package/dist/scripts/1068-0b00683666-exchange.chunk.js +1 -0
- package/dist/scripts/1127-356b23351e-exchange.chunk.js +1 -0
- package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js +2 -0
- package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/1226-a4c0643661-exchange.chunk.js +1 -0
- package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js +2 -0
- package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/2087-bbc1fd721f-exchange.chunk.js +1 -0
- package/dist/scripts/2117-5d867c698d-exchange.chunk.js +1 -0
- package/dist/scripts/2127-71bf57d74b-exchange.chunk.js +1 -0
- package/dist/scripts/2494-98cce57764-exchange.chunk.js +2 -0
- package/dist/scripts/2494-98cce57764-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/2507-1911a9bdb2-exchange.chunk.js +1 -0
- package/dist/scripts/2538-997edb9433-exchange.chunk.js +2 -0
- package/dist/scripts/2538-997edb9433-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/2648-4197959943-exchange.chunk.js +1 -0
- package/dist/scripts/2877-eee7fe484e-exchange.chunk.js +1 -0
- package/dist/scripts/3291-f9ccc2ea28-exchange.chunk.js +1 -0
- package/dist/scripts/3858-cd9d38c31c-exchange.chunk.js +1 -0
- package/dist/scripts/4075-6624f96fc6-exchange.chunk.js +1 -0
- package/dist/scripts/4299-36e5929cc6-exchange.chunk.js +1 -0
- package/dist/scripts/4312-7d095d2f30-exchange.chunk.js +1 -0
- package/dist/scripts/442-47e3927b49-exchange.chunk.js +1 -0
- package/dist/scripts/455-ceeb969c54-exchange.chunk.js +1 -0
- package/dist/scripts/4558-057650ef22-exchange.chunk.js +1 -0
- package/dist/scripts/5027-357264982b-exchange.chunk.js +1 -0
- package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +1 -0
- package/dist/scripts/5267-443f3cdd59-exchange.chunk.js +1 -0
- package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +1 -0
- package/dist/scripts/6156-2bf99d5991-exchange.chunk.js +1 -0
- package/dist/scripts/6298-1c7a0ba516-exchange.chunk.js +1 -0
- package/dist/scripts/6332-9d2d42e2f9-exchange.chunk.js +1 -0
- package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +1 -0
- package/dist/scripts/6725-25d1542dec-exchange.chunk.js +1 -0
- package/dist/scripts/6831-30fa3e741e-exchange.chunk.js +1 -0
- package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js +2 -0
- package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +1 -0
- package/dist/scripts/7759-2740213eb8-exchange.chunk.js +1 -0
- package/dist/scripts/7782-36924dba92-exchange.chunk.js +1 -0
- package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +1 -0
- package/dist/scripts/851-d89fb94a66-exchange.chunk.js +2 -0
- package/dist/scripts/851-d89fb94a66-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +1 -0
- package/dist/scripts/8589-912ab9f055-exchange.chunk.js +1 -0
- package/dist/scripts/8619-e5f595a594-exchange.chunk.js +1 -0
- package/dist/scripts/8866-0993e6b43a-exchange.chunk.js +1 -0
- package/dist/scripts/8937-727d080ed9-exchange.chunk.js +1 -0
- package/dist/scripts/9212-e8bde56a84-exchange.chunk.js +1 -0
- package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +2 -0
- package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +60 -0
- package/dist/scripts/9566-0625fb0cbe-exchange.chunk.js +1 -0
- package/dist/scripts/9611-6fe32ccc83-exchange.chunk.js +1 -0
- package/dist/scripts/9866-2d10067a4e-exchange.chunk.js +1 -0
- package/dist/scripts/9899-2b571c961b-exchange.chunk.js +1 -0
- package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js +2 -0
- package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/bundle-be81211eaf.min.js +2 -0
- package/dist/scripts/bundle-be81211eaf.min.js.LICENSE.txt +108 -0
- package/package.json +4 -7
- package/typings/utils/imports.d.ts +1 -1
- 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/B57G3PZD.chunk.css +0 -1
- package/dist/css/BBV1d-ZI.chunk.css +0 -1
- package/dist/css/BDOTXlob.chunk.css +0 -1
- package/dist/css/BIeUeS4h.chunk.css +0 -1
- package/dist/css/BPdg7JW4.chunk.css +0 -1
- package/dist/css/BiRz4h1c.chunk.css +0 -1
- package/dist/css/Bt3pBBLn.chunk.css +0 -1
- package/dist/css/Bz8F9buU.chunk.css +0 -1
- package/dist/css/C2R4QydJ.chunk.css +0 -1
- package/dist/css/C7XoyEPr.chunk.css +0 -1
- package/dist/css/CAdv9Saa.chunk.css +0 -1
- package/dist/css/CC5F5C8O.chunk.css +0 -1
- package/dist/css/CCsCPLDG.chunk.css +0 -1
- package/dist/css/CD1qrI1T.chunk.css +0 -1
- package/dist/css/CDiJwtuL.chunk.css +0 -1
- package/dist/css/CM-cscAF.chunk.css +0 -1
- package/dist/css/CY0yvCW4.chunk.css +0 -1
- package/dist/css/Ci6HCTb5.chunk.css +0 -1
- package/dist/css/CifDVjr-.chunk.css +0 -1
- package/dist/css/CphXVlxY.chunk.css +0 -1
- package/dist/css/CrSv-tYo.chunk.css +0 -1
- package/dist/css/DD13UQOa.chunk.css +0 -1
- package/dist/css/DGyCCqtO.chunk.css +0 -1
- package/dist/css/DI4l_5OJ.chunk.css +0 -1
- package/dist/css/DL_jCfRl.chunk.css +0 -1
- package/dist/css/DRlDmMhN.chunk.css +0 -1
- package/dist/css/Dkh6sNpi.chunk.css +0 -1
- package/dist/css/DlOtoSz0.chunk.css +0 -1
- package/dist/css/DnhNnDZN.chunk.css +0 -1
- package/dist/css/EnQ3abug.chunk.css +0 -1
- package/dist/css/O777zV0C.chunk.css +0 -1
- package/dist/css/fs02hBfZ.chunk.css +0 -1
- package/dist/css/jbMisi9r.chunk.css +0 -1
- package/dist/css/w4TLT4f5.chunk.css +0 -1
- package/dist/en.json +0 -1
- package/dist/scripts/0eZyUL6x.chunk.js +0 -2
- package/dist/scripts/0eZyUL6x.chunk.js.map +0 -1
- package/dist/scripts/2tJmZ2Oi.chunk.js +0 -2
- package/dist/scripts/2tJmZ2Oi.chunk.js.map +0 -1
- package/dist/scripts/81elAOH1.chunk.js +0 -2
- package/dist/scripts/81elAOH1.chunk.js.map +0 -1
- package/dist/scripts/AkCv9mUX.chunk.js +0 -2
- package/dist/scripts/AkCv9mUX.chunk.js.map +0 -1
- package/dist/scripts/B-Dp4NBp.chunk.js +0 -2
- package/dist/scripts/B-Dp4NBp.chunk.js.map +0 -1
- package/dist/scripts/B-DrhpV6.chunk.js +0 -2
- package/dist/scripts/B-DrhpV6.chunk.js.map +0 -1
- package/dist/scripts/B-Ve87B8.chunk.js +0 -2
- package/dist/scripts/B-Ve87B8.chunk.js.map +0 -1
- package/dist/scripts/B3fiTt0v.chunk.js +0 -2
- package/dist/scripts/B3fiTt0v.chunk.js.map +0 -1
- package/dist/scripts/B3gC_Ph0.chunk.js +0 -2
- package/dist/scripts/B3gC_Ph0.chunk.js.map +0 -1
- package/dist/scripts/B5GSz7JC.chunk.js +0 -2
- package/dist/scripts/B5GSz7JC.chunk.js.map +0 -1
- package/dist/scripts/B5ReN0O-.chunk.js +0 -2
- package/dist/scripts/B5ReN0O-.chunk.js.map +0 -1
- package/dist/scripts/B668bf5B.chunk.js +0 -2
- package/dist/scripts/B668bf5B.chunk.js.map +0 -1
- package/dist/scripts/B6J5cgUO.chunk.js +0 -2
- package/dist/scripts/B6J5cgUO.chunk.js.map +0 -1
- package/dist/scripts/B70bPb5E.chunk.js +0 -2
- package/dist/scripts/B70bPb5E.chunk.js.map +0 -1
- package/dist/scripts/BAJmnmDG.chunk.js +0 -2
- package/dist/scripts/BAJmnmDG.chunk.js.map +0 -1
- package/dist/scripts/BBtnCImF.chunk.js +0 -2
- package/dist/scripts/BBtnCImF.chunk.js.map +0 -1
- package/dist/scripts/BDF37jEe.chunk.js +0 -2
- package/dist/scripts/BDF37jEe.chunk.js.map +0 -1
- package/dist/scripts/BHYvYUqt.chunk.js +0 -2
- package/dist/scripts/BHYvYUqt.chunk.js.map +0 -1
- package/dist/scripts/BIU8qa9K.chunk.js +0 -2
- package/dist/scripts/BIU8qa9K.chunk.js.map +0 -1
- package/dist/scripts/BKI4hXQ7.chunk.js +0 -2
- package/dist/scripts/BKI4hXQ7.chunk.js.map +0 -1
- package/dist/scripts/BMZLL3_m.chunk.js +0 -2
- package/dist/scripts/BMZLL3_m.chunk.js.map +0 -1
- package/dist/scripts/BO2QSQWF.chunk.js +0 -2
- package/dist/scripts/BO2QSQWF.chunk.js.map +0 -1
- package/dist/scripts/BPdCNtlr.chunk.js +0 -2
- package/dist/scripts/BPdCNtlr.chunk.js.map +0 -1
- package/dist/scripts/BSruPC6q.chunk.js +0 -2
- package/dist/scripts/BSruPC6q.chunk.js.map +0 -1
- package/dist/scripts/BXEZ_cH6.chunk.js +0 -2
- package/dist/scripts/BXEZ_cH6.chunk.js.map +0 -1
- package/dist/scripts/BXihGKiH.chunk.js +0 -2
- package/dist/scripts/BXihGKiH.chunk.js.map +0 -1
- package/dist/scripts/BZWC2UjJ.chunk.js +0 -2
- package/dist/scripts/BZWC2UjJ.chunk.js.map +0 -1
- package/dist/scripts/BZiHvyg-.chunk.js +0 -2
- package/dist/scripts/BZiHvyg-.chunk.js.map +0 -1
- package/dist/scripts/BlDVEZsX.chunk.js +0 -2
- package/dist/scripts/BlDVEZsX.chunk.js.map +0 -1
- package/dist/scripts/BmeqRFWF.chunk.js +0 -2
- package/dist/scripts/BmeqRFWF.chunk.js.map +0 -1
- package/dist/scripts/BqNPVwUS.chunk.js +0 -2
- package/dist/scripts/BqNPVwUS.chunk.js.map +0 -1
- package/dist/scripts/BxCjtYxH.chunk.js +0 -2
- package/dist/scripts/BxCjtYxH.chunk.js.map +0 -1
- package/dist/scripts/BxIUA4rE.chunk.js +0 -2
- package/dist/scripts/BxIUA4rE.chunk.js.map +0 -1
- package/dist/scripts/BzTPaPHA.chunk.js +0 -362
- package/dist/scripts/BzTPaPHA.chunk.js.map +0 -1
- package/dist/scripts/C4qPC8G0.chunk.js +0 -2
- package/dist/scripts/C4qPC8G0.chunk.js.map +0 -1
- package/dist/scripts/C88MKPgQ.chunk.js +0 -3
- package/dist/scripts/C88MKPgQ.chunk.js.map +0 -1
- package/dist/scripts/C8QZE6Un.chunk.js +0 -2
- package/dist/scripts/C8QZE6Un.chunk.js.map +0 -1
- package/dist/scripts/CAm4-U8J.chunk.js +0 -2
- package/dist/scripts/CAm4-U8J.chunk.js.map +0 -1
- package/dist/scripts/CBHt08r_.chunk.js +0 -2
- package/dist/scripts/CBHt08r_.chunk.js.map +0 -1
- package/dist/scripts/CC6EHIeg.chunk.js +0 -2
- package/dist/scripts/CC6EHIeg.chunk.js.map +0 -1
- package/dist/scripts/CCj-BH4j.chunk.js +0 -2
- package/dist/scripts/CCj-BH4j.chunk.js.map +0 -1
- package/dist/scripts/CFa5wiAZ.chunk.js +0 -2
- package/dist/scripts/CFa5wiAZ.chunk.js.map +0 -1
- package/dist/scripts/CHtfOuwt.chunk.js +0 -2
- package/dist/scripts/CHtfOuwt.chunk.js.map +0 -1
- package/dist/scripts/CJ3oIQlG.chunk.js +0 -2
- package/dist/scripts/CJ3oIQlG.chunk.js.map +0 -1
- package/dist/scripts/CKvmo9qU.chunk.js +0 -2
- package/dist/scripts/CKvmo9qU.chunk.js.map +0 -1
- package/dist/scripts/CLGeYsiU.chunk.js +0 -2
- package/dist/scripts/CLGeYsiU.chunk.js.map +0 -1
- package/dist/scripts/CW29yRhD.chunk.js +0 -2
- package/dist/scripts/CW29yRhD.chunk.js.map +0 -1
- package/dist/scripts/CXB1Dc5J.chunk.js +0 -2
- package/dist/scripts/CXB1Dc5J.chunk.js.map +0 -1
- package/dist/scripts/CY2lx-Xj.chunk.js +0 -2
- package/dist/scripts/CY2lx-Xj.chunk.js.map +0 -1
- package/dist/scripts/CacmfpJ3.chunk.js +0 -2
- package/dist/scripts/CacmfpJ3.chunk.js.map +0 -1
- package/dist/scripts/CbAEl-Vm.chunk.js +0 -2
- package/dist/scripts/CbAEl-Vm.chunk.js.map +0 -1
- package/dist/scripts/CcijYrFA.chunk.js +0 -2
- package/dist/scripts/CcijYrFA.chunk.js.map +0 -1
- package/dist/scripts/CdvQhnVd.chunk.js +0 -2
- package/dist/scripts/CdvQhnVd.chunk.js.map +0 -1
- package/dist/scripts/Cdw__lc8.chunk.js +0 -2
- package/dist/scripts/Cdw__lc8.chunk.js.map +0 -1
- package/dist/scripts/Cg9HJsEZ.chunk.js +0 -2
- package/dist/scripts/Cg9HJsEZ.chunk.js.map +0 -1
- package/dist/scripts/Ch0LKWIV.chunk.js +0 -50
- package/dist/scripts/Ch0LKWIV.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/CqytaiSJ.chunk.js +0 -2
- package/dist/scripts/CqytaiSJ.chunk.js.map +0 -1
- package/dist/scripts/CubAa6F_.chunk.js +0 -2
- package/dist/scripts/CubAa6F_.chunk.js.map +0 -1
- package/dist/scripts/CwOHSynR.chunk.js +0 -2
- package/dist/scripts/CwOHSynR.chunk.js.map +0 -1
- package/dist/scripts/D19_0c-8.chunk.js +0 -2
- package/dist/scripts/D19_0c-8.chunk.js.map +0 -1
- package/dist/scripts/D1S6hwZq.chunk.js +0 -2
- package/dist/scripts/D1S6hwZq.chunk.js.map +0 -1
- package/dist/scripts/D7pbmK0q.chunk.js +0 -6
- package/dist/scripts/D7pbmK0q.chunk.js.map +0 -1
- package/dist/scripts/D7uBkU79.chunk.js +0 -8
- package/dist/scripts/D7uBkU79.chunk.js.map +0 -1
- package/dist/scripts/D8Hat_q8.chunk.js +0 -2
- package/dist/scripts/D8Hat_q8.chunk.js.map +0 -1
- package/dist/scripts/D8zZvitu.chunk.js +0 -5
- package/dist/scripts/D8zZvitu.chunk.js.map +0 -1
- package/dist/scripts/DCeinDae.chunk.js +0 -2
- package/dist/scripts/DCeinDae.chunk.js.map +0 -1
- package/dist/scripts/DEimCdra.chunk.js +0 -2
- package/dist/scripts/DEimCdra.chunk.js.map +0 -1
- package/dist/scripts/DKoiUoAQ.chunk.js +0 -2
- package/dist/scripts/DKoiUoAQ.chunk.js.map +0 -1
- package/dist/scripts/DLihS4mZ.chunk.js +0 -2
- package/dist/scripts/DLihS4mZ.chunk.js.map +0 -1
- package/dist/scripts/DS4k_cAQ.chunk.js +0 -2
- package/dist/scripts/DS4k_cAQ.chunk.js.map +0 -1
- package/dist/scripts/DVrUHsk4.chunk.js +0 -2
- package/dist/scripts/DVrUHsk4.chunk.js.map +0 -1
- package/dist/scripts/De8m6Vtf.chunk.js +0 -15
- package/dist/scripts/De8m6Vtf.chunk.js.map +0 -1
- package/dist/scripts/Dg-4fBAS.chunk.js +0 -2
- package/dist/scripts/Dg-4fBAS.chunk.js.map +0 -1
- package/dist/scripts/DgBm4Z5H.chunk.js +0 -2
- package/dist/scripts/DgBm4Z5H.chunk.js.map +0 -1
- package/dist/scripts/Dh8xoOSf.chunk.js +0 -2
- package/dist/scripts/Dh8xoOSf.chunk.js.map +0 -1
- package/dist/scripts/DlrCPMdZ.chunk.js +0 -2
- package/dist/scripts/DlrCPMdZ.chunk.js.map +0 -1
- package/dist/scripts/DnMWAYTf.chunk.js +0 -2
- package/dist/scripts/DnMWAYTf.chunk.js.map +0 -1
- package/dist/scripts/DtLhe3Mi.chunk.js +0 -2
- package/dist/scripts/DtLhe3Mi.chunk.js.map +0 -1
- package/dist/scripts/DzdwUdxf.chunk.js +0 -2
- package/dist/scripts/DzdwUdxf.chunk.js.map +0 -1
- package/dist/scripts/IV3bbn1E.chunk.js +0 -2
- package/dist/scripts/IV3bbn1E.chunk.js.map +0 -1
- package/dist/scripts/K3QqEeXP.chunk.js +0 -2
- package/dist/scripts/K3QqEeXP.chunk.js.map +0 -1
- package/dist/scripts/Kj832An8.chunk.js +0 -2
- package/dist/scripts/Kj832An8.chunk.js.map +0 -1
- package/dist/scripts/QfCSKVqV.chunk.js +0 -2
- package/dist/scripts/QfCSKVqV.chunk.js.map +0 -1
- package/dist/scripts/RAnkajCC.chunk.js +0 -2
- package/dist/scripts/RAnkajCC.chunk.js.map +0 -1
- package/dist/scripts/RfKhDEFx.chunk.js +0 -2
- package/dist/scripts/RfKhDEFx.chunk.js.map +0 -1
- package/dist/scripts/RjaJ7sQ8.chunk.js +0 -2
- package/dist/scripts/RjaJ7sQ8.chunk.js.map +0 -1
- package/dist/scripts/Us_3OHJ6.chunk.js +0 -2
- package/dist/scripts/Us_3OHJ6.chunk.js.map +0 -1
- package/dist/scripts/W5aHBnKW.chunk.js +0 -2
- package/dist/scripts/W5aHBnKW.chunk.js.map +0 -1
- package/dist/scripts/_sYSSSUN.chunk.js +0 -2
- package/dist/scripts/_sYSSSUN.chunk.js.map +0 -1
- package/dist/scripts/aWiaSYnf.chunk.js +0 -2
- package/dist/scripts/aWiaSYnf.chunk.js.map +0 -1
- package/dist/scripts/ajQ8aa2Z.chunk.js +0 -2
- package/dist/scripts/ajQ8aa2Z.chunk.js.map +0 -1
- package/dist/scripts/app-BOVAF25L.js +0 -219
- package/dist/scripts/app-BOVAF25L.js.map +0 -1
- package/dist/scripts/fryHFjND.chunk.js +0 -2
- package/dist/scripts/fryHFjND.chunk.js.map +0 -1
- package/dist/scripts/gaXZzMcg.chunk.js +0 -2
- package/dist/scripts/gaXZzMcg.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/rZLzwqIY.chunk.js +0 -2
- package/dist/scripts/rZLzwqIY.chunk.js.map +0 -1
- package/dist/scripts/sQODx69W.chunk.js +0 -2
- package/dist/scripts/sQODx69W.chunk.js.map +0 -1
- package/dist/scripts/tP6Wmg__.chunk.js +0 -2
- package/dist/scripts/tP6Wmg__.chunk.js.map +0 -1
- package/vite.config.ts +0 -6
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as o,d,j as e,e as D,f as c,g as L,h as R,i as p,k as $,C as b,l as S}from"./app-BOVAF25L.js";const g=D("h4");g.displayName="DivStyledAsH4";const N=o.forwardRef(({className:s,bsPrefix:a,as:r=g,...n},t)=>(a=d(a,"alert-heading"),e.jsx(r,{ref:t,className:c(s,a),...n})));N.displayName="AlertHeading";const A=o.forwardRef(({className:s,bsPrefix:a,as:r=L,...n},t)=>(a=d(a,"alert-link"),e.jsx(r,{ref:t,className:c(s,a),...n})));A.displayName="AlertLink";const C=o.forwardRef((s,a)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:w,children:y,variant:h="primary",onClose:m,dismissible:u,transition:f=p,...x}=R(s,{show:"onClose"}),l=d(r,"alert"),E=$(H=>{m&&m(!1,H)}),i=f===!0?p:f,j=e.jsxs("div",{role:"alert",...i?void 0:x,ref:a,className:c(w,l,h&&`${l}-${h}`,u&&`${l}-dismissible`),children:[u&&e.jsx(b,{onClick:E,"aria-label":t,variant:k}),y]});return i?e.jsx(i,{unmountOnExit:!0,...x,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:N});function F({error:s}){return S({title:"Dev Error"}),s?e.jsxs("div",{className:"px-3",children:[e.jsx("h1",{children:s.name}),e.jsx(v,{variant:"danger",children:e.jsx("h2",{children:s.message})}),e.jsxs(v,{variant:"warning",children:[e.jsx("h3",{children:"Call stack"}),e.jsx("code",{children:s.stack})]})]}):e.jsx(e.Fragment,{})}export{F as DevErrorView};
|
|
2
|
-
//# sourceMappingURL=C4qPC8G0.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"C4qPC8G0.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":"uGAOA,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,3 +0,0 @@
|
|
|
1
|
-
import{j as t,ap as v,as as he,ao as R,at as Ne,Q as Ie,V as pe,B as y,au as C,ad as L,ae as P,ac as k,av as b,A as Ve,aw as Te,aa as $e,R as z,ax as Oe,O as De,I as we,ay as Re,L as ge,az as Fe,aq as xe,r as Ee,a as D,b as w,c as qe,T as re,aj as He,ak as q,al as Ue,a2 as $,a4 as Me,ai as Ge,aA as Be,S as J,U as H,H as U,l as ze}from"./app-BOVAF25L.js";import{B as ne,u as F}from"./BBtnCImF.chunk.js";import{V as p}from"./DKoiUoAQ.chunk.js";import{I as We,C as Xe}from"./B-Ve87B8.chunk.js";import{g as ye,B as fe,I as W,a as E}from"./D19_0c-8.chunk.js";import{M as Qe}from"./CcijYrFA.chunk.js";import{S as Ye,T as Ze,a as Je}from"./BPdCNtlr.chunk.js";import{b as X,c as ce,d as Ke,T as et,e as tt,f as at,A as Q,g as it,M as st,h as je,C as nt,I as ct,u as lt,a as rt}from"./Ch0LKWIV.chunk.js";import{B as N,a as I}from"./BKI4hXQ7.chunk.js";import{B as ve}from"./B70bPb5E.chunk.js";import{V as ot,S as le,a as dt}from"./D8zZvitu.chunk.js";import{R as Y,V as K,u as mt,I as ut,P as ht}from"./DS4k_cAQ.chunk.js";import{a as gt}from"./CbAEl-Vm.chunk.js";import{A as xt}from"./DEimCdra.chunk.js";import{F as _,a as oe,b as O,S as yt}from"./BMZLL3_m.chunk.js";import{E as ft}from"./BmeqRFWF.chunk.js";import{a as jt}from"./IV3bbn1E.chunk.js";import{R as vt}from"./QfCSKVqV.chunk.js";import{E as ae}from"./CBHt08r_.chunk.js";import{h as Lt}from"./ajQ8aa2Z.chunk.js";import{u as Ct}from"./B-DrhpV6.chunk.js";import{S as kt}from"./tP6Wmg__.chunk.js";import"./B6J5cgUO.chunk.js";import"./BlDVEZsX.chunk.js";import"./2tJmZ2Oi.chunk.js";import"./pkzD5BEm.chunk.js";import"./C8QZE6Un.chunk.js";import"./B-Dp4NBp.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./rZLzwqIY.chunk.js";import"./D8Hat_q8.chunk.js";import"./BZWC2UjJ.chunk.js";import"./Dh8xoOSf.chunk.js";import"./B3fiTt0v.chunk.js";import"./_sYSSSUN.chunk.js";import"./B3gC_Ph0.chunk.js";import"./CubAa6F_.chunk.js";import"./RfKhDEFx.chunk.js";import"./CXB1Dc5J.chunk.js";import"./Dg-4fBAS.chunk.js";const At="_appLink_1diix_1",bt="_name_1diix_4",Pt="_selectedMask_1diix_7",St="_widgetItem_1diix_15",_t="_hasThemeColor_1diix_19",Nt="_text_1diix_26",It="_imagePanel_1diix_29",pt="_selected_1diix_7",Vt="_image_1diix_29",Tt="_large_1diix_59",$t="_comingSoonPanel_1diix_69",Ot="_newVideos_1diix_75",j={appLink:At,name:bt,selectedMask:Pt,widgetItem:St,hasThemeColor:_t,text:Nt,imagePanel:It,selected:pt,image:Vt,large:Tt,comingSoonPanel:$t,newVideos:Ot},Le="shared.subjectWidgetItem",Dt=({name:e,multiline:a,noUnderLine:i})=>{let s=`${j.comingSoonPanel}
|
|
2
|
-
d-flex flex-column align-items-center justify-content-center px-3 text-center`,n="";return a?n+=` ${j.clamped} clamp-2`:(s+=" text-nowrap",n+=" text-truncate"),t.jsxs("div",{className:s,children:[t.jsx("small",{className:"text-secondary",children:t.jsx(y,{namespace:Le,phrase:"comingSoon"})}),t.jsx("p",{className:`${i?"":j.name} h6`,children:t.jsx("span",{className:n,children:e})})]})},wt=({name:e,multiline:a,subtitle:i,noUnderLine:s,newVideosCount:n})=>{let c="px-3 d-flex flex-column justify-content-center",l=`${s?"":j.name} h6`;return a?l+=` ${n?"clamp-2":"clamp-3"} text-start`:(c+=" text-nowrap text-truncate",l+=" text-truncate mb-0"),t.jsxs("div",{className:c,children:[i&&t.jsx("div",{className:`text-secondary clamp-1 ${j.text}`,children:i}),t.jsx("div",{className:l,title:e,children:e}),!!n&&t.jsx("div",{className:`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${j.newVideos}`,children:t.jsx(y,{namespace:Le,phrase:"newVideos",options:{smartCount:n}})})]})};ie.defaultProps={showFallbackBackgroundColour:!0};function ie(e){var l;const a=he.createUrl(e.coverUrl,{size:e.isLarge?R.Medium:R.Small});let i;Qe.isClassification(e.data)&&(i=e.data);const s={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?(l=i==null?void 0:i.externalMetadata)==null?void 0:l.childDashboardNewVideoCount:0},n={backgroundImage:a?`url('${a}')`:null,backgroundColor:e.coverBgColor},c=ye(e.data.name,fe);return t.jsxs("div",{className:`${e.themeColor?j.hasThemeColor:"border"} d-flex position-relative ${e.className} ${j.widgetItem} ${e.isSelected?"border-success border-2":""} ${e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""}`,style:e.themeColor?{"--themeColor":e.themeColor}:{},id:`${e.data.id}-${Ne.getRandomInt()}`,children:[e.isSelected&&t.jsx("div",{className:`${j.selectedMask} border-2`}),t.jsxs("div",{className:`${j.imagePanel} ${e.isLarge?j.large:""}`,children:[e.isSelected&&!e.hideCheckmark&&t.jsx("div",{className:j.selected,children:t.jsx(We,{svg:Xe,svgSize:Ie.Large,textVariant:"white",variant:"green"})}),a&&t.jsx("div",{className:pe(j.image,e.imageClassName,!e.coverBgColor&&e.showFallbackBackgroundColour&&c),style:n}),!e.hideFallback&&t.jsx(W,{type:E.Subject,extraClasses:e.isLarge?j.large:""})]}),e.isComingSoon?t.jsx(Dt,{...s}):t.jsx(wt,{...s})]})}function Ce(e){var i;const a=e.getChildAppLink?e.getChildAppLink(e.data):null;return t.jsx(t.Fragment,{children:a?t.jsx(v,{className:j.appLink,appLink:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:(i=e.getChildAppLinkOptions)==null?void 0:i.call(e),children:t.jsx(ie,{...e})}):t.jsx(ie,{...e})})}function Rt(e){var s,n,c,l;const a={...e.analyticsData,id:(s=e.data)==null?void 0:s.id,name:(n=e.data)==null?void 0:n.name},i={location:k.ClassificationListItem,...e.analyticsOptions,actionType:P.Click,entity:L.Company,descriptor:C.Cover};return t.jsx(Ce,{...e,analyticsData:a,analyticsOptions:i,coverUrl:(c=e.data.logo)==null?void 0:c.url,coverBgColor:(l=e.data.metadata)==null?void 0:l.colour})}function Ft(e){return t.jsx(b,{as:"li",sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:t.jsx("div",{className:"position-relative px-1 mb-2",children:t.jsx(Rt,{data:e.item,getChildAppLink:e.appLinks.getCompanyAppLink,getChildAppLinkOptions:()=>{var a,i;return(i=(a=e.appLinks).getCompanyAppLinkOptions)==null?void 0:i.call(a,e.item)},analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle})})})}const Et="_videoList_14pgo_1",Z={videoList:Et},M="search.exchangeVideoGroup",de=3;function qt(e){const a=e.item.showCount>=de?de:e.item.showCount;function i(){return e.pagePositionIndex===0?"border-bottom pb-1 mb-3":"border-top border-bottom pt-3 mt-2 pb-1 mb-3"}const s=Ve.getCurrentAppLink(),n=s.params??{};let c=(n==null?void 0:n.source)??[];c&&!Array.isArray(c)&&(c=[c]);const l={...s,params:{...n,source:[...c,Ye.ExchangeArchive]}},r={query:e.queryParams.query,itemIndex:e.itemIndex,pagePositionIndex:e.pagePositionIndex},o={entity:L.SearchResults,location:k.ExchangeSearchGroupItem,actionType:P.Click,descriptor:Te.ExchangeArchive};return t.jsxs("div",{className:i(),children:[t.jsx(v,{appLink:l,analyticsData:r,analyticsOptions:o,children:t.jsx("h2",{className:"h4",children:t.jsx(y,{namespace:M,phrase:"heading"})})}),t.jsxs("p",{children:[t.jsx(y,{namespace:M,phrase:"message"})," ",t.jsx(v,{appLink:e.appLinks.searchSettings,className:"text-info",analyticsData:r,analyticsOptions:{...o,descriptor:C.Settings},children:t.jsx(y,{namespace:M,phrase:"searchSettings"})}),"."]}),t.jsx("div",{className:`position-relative ${Z.videoList}`,children:e.item.videos.slice(0,a).map((h,u)=>t.jsx(X,{video:h,getVideoAppLink:e.appLinks.getVideoAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:h._score,maxScore:h._maxScore,featured:h._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps},u))}),t.jsx("div",{className:"text-center py-2",children:t.jsx(v,{className:"text-secondary",appLink:l,analyticsData:r,analyticsOptions:o,children:t.jsx(y,{namespace:M,phrase:"seeMore"})})})]})}const Ht="_guidance_pydn0_30",Ut="_responsiveGuidance_pydn0_41",Mt="_description_pydn0_56",Gt="_details_pydn0_82",G={guidance:Ht,responsiveGuidance:Ut,description:Mt,details:Gt};ke.defaultProps={newDurationStyle:!0,badgePosition:"thumbnail"};function ke(e){var c,l,r,o,h,u;const a=(l=(c=e.video)==null?void 0:c.subjectPresentationAudiences)==null?void 0:l.data,i=ce(a,e.presentationAudiences),s=$e.mergeOptions(e.analyticsOptions,{location:k.ClassificationHero,entity:p.getAnalyticsEntity(e.video)}),n=z.useRef(null);return e.video?t.jsxs(Y,{children:[t.jsx(b,{xs:12,md:6,children:t.jsx("div",{ref:n,children:t.jsx(Ke,{analyticsOptions:s,video:e.video,appLink:(r=e.getVideoAppLink)==null?void 0:r.call(e,e.video,{}),imageOptions:{size:R.Medium},textPosition:et.Independent,type:"static",audience:e.badgePosition==="thumbnail"?i:null,hideRating:e.badgePosition==="thumbnail"?!!i:!0,commonVideoProps:e.commonVideoProps})})}),t.jsxs(b,{xs:12,md:6,className:`${G.details} position-relative`,children:[t.jsxs("div",{className:"d-flex justify-content-between",children:[t.jsxs("div",{className:"overflow-hidden",children:[t.jsx(ot,{type:e.commonVideoProps.subTextType,appLink:(h=(o=e.commonVideoProps).getSubTextAppLink)==null?void 0:h.call(o,e.video),analyticsData:e.analyticsData,analyticsOptions:s,video:e.video,className:"text-reset clamp-1"}),t.jsx(tt,{yearGroups:e.commonVideoProps.yearGroups,video:e.video,analyticsData:e.analyticsData,analyticsOptions:s,appLink:(u=e.getVideoAppLink)==null?void 0:u.call(e,e.video,{}),titleSize:"h4",showNewVideoIndicator:e.showNewVideoIndicator,showPadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience,titleClassName:e.titleClassName,clampLevel:2})]}),t.jsx(at,{analyticsData:e.analyticsData,analyticsOptions:s,video:e.video})]}),e.badgePosition==="info-panel"&&t.jsxs(ve,{className:"pb-1",children:[!e.hideInteractiveBadge&&t.jsx(N,{type:I.Interactive,data:e.video.interactives}),t.jsx(N,{type:I.Rating,data:p.getRating(e.video)}),t.jsx(N,{type:I.ProductionYear,data:e.video.productionYear})]}),t.jsx("p",{className:"mb-1",children:t.jsx("span",{className:G.description,children:e.video.description})}),e.badgePosition==="info-panel"&&t.jsx(Q,{audience:i,className:"mt-1",border:"dark"}),e.showVideoGuidance&&t.jsx(it,{video:e.video,analyticsData:e.analyticsData,analyticsOptions:s,containerClassName:`d-flex ${G.guidance}`,responsiveClassName:G.responsiveGuidance,commonVideoProps:e.commonVideoProps})]})]}):t.jsx(t.Fragment,{})}function Bt(e){return t.jsx("div",{className:"pb-3",children:t.jsx(ke,{video:e.item,presentationAudiences:e.audiences,getVideoAppLink:(a,i)=>e.appLinks.getVideoAppLink(a,i),analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hideInteractiveBadge:!0,showVideoGuidance:p.showVideoGuidance(e.hasPermissions),commonVideoProps:e.commonVideoProps})})}const zt="_playlistItem_euqll_1",Wt="_playlistItemGradient_euqll_4",Xt="_playlistMetadata_euqll_13",Qt="_ownerAvatarContainer_euqll_24",T={playlistItem:zt,playlistItemGradient:Wt,playlistMetadata:Xt,ownerAvatarContainer:Qt};var Yt=["second","minute","hour","day","week","month","year"];function Zt(e,a){if(a===0)return["just now","right now"];var i=Yt[Math.floor(a/2)];return e>1&&(i+="s"),[e+" "+i+" ago","in "+e+" "+i]}var Jt=["秒","分钟","小时","天","周","个月","年"];function Kt(e,a){if(a===0)return["刚刚","片刻后"];var i=Jt[~~(a/2)];return[e+" "+i+"前",e+" "+i+"后"]}var se={},Ae=function(e,a){se[e]=a},ea=function(e){return se[e]||se.en_US},ee=[60,60,24,7,365/7/12,12];function ta(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}function aa(e,a){var i=e<0?1:0;e=Math.abs(e);for(var s=e,n=0;e>=ee[n]&&n<ee.length;n++)e/=ee[n];return e=Math.floor(e),n*=2,e>(n===0?9:1)&&(n+=1),a(e,n,s)[i].replace("%s",e.toString())}function ia(e,a){var i=new Date;return(+i-+ta(e))/1e3}var sa=function(e,a,i){var s=ia(e);return aa(s,ea(a))};Ae("en_US",Zt);Ae("zh_CN",Kt);const na="playlists.playlistCount";function ca(e){var n,c,l;if(!e)return!1;const a=((n=e.videos)==null?void 0:n.count)??0,i=((c=e.interactives)==null?void 0:c.count)??0,s=((l=e.clips)==null?void 0:l.count)??0;return a+i+s}function la(e){const a=ca(e.playlist);return a===!1||Number.isNaN(a)?t.jsx(t.Fragment,{}):t.jsx("span",{className:"text-shadow font-size-sm",children:t.jsx(y,{namespace:na,phrase:"count",options:{smartCount:a}})})}const ra="_avatar_obb0e_1",oa={avatar:ra};function da(){return t.jsx("div",{className:oa.avatar,children:t.jsx(Oe,{})})}function ma(e){var n,c,l;const{_liteOwner:a}=e.playlist;if((n=e.playlist._isClickViewCurated)!=null&&n.value)return t.jsx(da,{});if(!(a!=null&&a.id)||!((c=e.currentUser)!=null&&c.id))return t.jsx(t.Fragment,{});if(a.id.toString()===e.currentUser.id.toString())return t.jsx(t.Fragment,{});const s=typeof a.avatar=="string"?a.avatar:(l=a.avatar)==null?void 0:l.url;return t.jsx(De,{imageUrl:s,imageCdnUrl:e.imageCdnUrl,initials:we.getInitials(a.name,a.surname)})}const ua="playlists.playlistList";be.defaultProps={itemStyle:"square"};function be(e){var h,u;const a=he.createUrl(e.data.cover&&e.data.cover.url,{size:R.Medium,resizeType:Re.Cover}),i=e.data.subjectPresentationAudiences&&e.data.subjectPresentationAudiences.data,s=ce(i,e.presentationAudiences);let n=T.playlistItem;const c=!!a||!!e.showFallbackImage;c&&(n+=` ${T.playlistItemGradient}`),!c&&e.bgColourClassNames&&(n+=` ${T.playlistItem} ${ye(e.data.name,e.bgColourClassNames)}`),e.itemStyle==="round"&&(n+=" rounded-3 overflow-hidden"),e.itemStyle==="round-left"&&(n+=" rounded-start-lg overflow-hidden");const l={...e.analyticsData,id:(h=e.data)==null?void 0:h.id,name:(u=e.data)==null?void 0:u.name},r={...e.analyticsOptions,entity:L.Playlist},o=()=>{var m;return!e.data.contentModifiedDate||(m=e.data._isClickViewCurated)!=null&&m.value?"":ge.getPhrase(ua,"lastUpdated",{timeago:sa(Fe.convertUTCToLocal(e.data.contentModifiedDate))})};return t.jsx(v,{appLink:e.appLink,analyticsData:l,analyticsOptions:r,title:o(),children:t.jsxs(ne,{data:a,alt:e.data.name,className:n,children:[!!e.showFallbackImage&&t.jsx(W,{type:E.Playlist}),t.jsxs("div",{className:`text-white ${T.playlistMetadata}`,children:[!!e.showCount&&t.jsx(la,{playlist:e.data}),t.jsx("h5",{className:`mb-0 ${e.titleClassName||""}`,children:t.jsx("span",{className:"text-shadow clamp-2",children:e.data.name})}),!!i&&!!i.length&&!!s&&t.jsx(Q,{className:`${e.audienceLabelClass?e.audienceLabelClass:""} mt-1`,audience:s,border:"white"})]}),!!e.showOwner&&!!e.imageCdnUrl&&t.jsx("div",{className:T.ownerAvatarContainer,children:t.jsx(ma,{playlist:e.data,currentUser:e.currentUser,imageCdnUrl:e.imageCdnUrl})})]})})}P.Click,L.Playlist,k.PlaylistListItem,C.Cover;const ha="_videoList_182nk_1",ga={videoList:ha},xa="search.playlistWithVideos";function ya(){const e=F();return e.xl||e.xxl?3:2}function fa(e){const a=ya(),i=e.playlist.videos.data.slice(0,a),s={actionType:P.Click,entity:L.Playlist,location:k.PlaylistWithVideos},n={...e.analyticsData,id:e.playlist.id,name:e.playlist.name};return t.jsx("div",{className:"ps-2 py-2",children:t.jsxs(Y,{className:"g-0 border rounded-3",children:[t.jsx(b,{xs:4,lg:3,className:"pe-3",children:t.jsx(be,{appLink:e.playlistAppLink,analyticsData:e.analyticsData,analyticsOptions:{...s,descriptor:C.Cover},data:e.playlist,presentationAudiences:e.presentationAudiences,bgColourClassNames:fe,itemStyle:"round-left",imageCdnUrl:e.commonVideoProps.imageCdnUrl,currentUser:e.currentUser,showCount:!1,showOwner:!0})}),t.jsx(b,{xs:8,lg:9,children:t.jsxs("div",{className:"d-flex justify-content-between",children:[t.jsx("div",{className:`pt-3 mb-n2 ${ga.videoList}`,children:i==null?void 0:i.map(c=>{const l={...n,videoId:c.id,videoName:c.name};return t.jsx("div",{className:"mb-2",children:t.jsx(X,{video:c,getVideoAppLink:e.getVideoAppLink,analyticsData:l,analyticsOptions:{entity:L.Video,location:k.PlaylistWithVideos},size:"sm",hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},c.id)})}),t.jsx("div",{className:"text-end pt-3 pe-3",children:t.jsx(v,{className:"info-link fw-semibold",appLink:e.playlistAppLink,analyticsData:n,analyticsOptions:{...s,descriptor:C.Link},children:t.jsx(y,{namespace:xa,phrase:"seeAllVideos"})})})]})})]})})}function ja(e){return t.jsx("div",{className:"mx-n2",children:t.jsx(fa,{playlist:e.item,playlistAppLink:e.appLinks.getPlaylistAppLink(e.item),presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},currentUser:e.currentUser,preloadImage:!0,getVideoAppLink:e.appLinks.getVideoAppLink,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}const va="_labelContainer_1rf8p_1",La="_labelContainerOverlay_1rf8p_15",Ca="_hoverActive_1rf8p_23",ka="_mask_1rf8p_37",Aa="_largeHoverTitle_1rf8p_50",ba="_smallHoverTitle_1rf8p_69",Pa="_largeHoverDescription_1rf8p_99",Sa="_hasTableOfContents_1rf8p_141",_a="_smallHoverDescription_1rf8p_194",A={labelContainer:va,labelContainerOverlay:La,hoverActive:Ca,mask:ka,largeHoverTitle:Aa,smallHoverTitle:ba,largeHoverDescription:Pa,hasTableOfContents:Sa,smallHoverDescription:_a};function Na(e){return t.jsxs("div",{className:`py-3 mx-2 px-2 rounded bg-white text-center ${A.mask} d-flex flex-column align-items-center`,children:[t.jsx("h3",{className:`fw-semibold mb-0 ${A.hoverTitle} ${e.isSmall?A.smallHoverTitle:A.largeHoverTitle}`,children:t.jsx("span",{className:"clamp-3",children:e.series.name})}),!!e.series.description&&t.jsx("p",{className:`${e.hasTableOfContents?A.hasTableOfContents:""} ${A.hoverDescription} ${e.isSmall?A.smallHoverDescription:A.largeHoverDescription} mb-0`,children:e.series.description}),t.jsx("div",{className:`${A.labelContainerOverlay}`,children:e.mergedAudience?t.jsx(Q,{audience:e.mergedAudience,border:"dark",className:"mt-2 w-fit"}):t.jsx(N,{type:I.Rating,data:le.getRating(e.series),className:"mt-2"})})]})}function Ia(e){const[a,i]=gt({className:A.hoverActive}),s=e.series&&e.series.subjectPresentationAudiences&&e.series.subjectPresentationAudiences.data||[],n=ce(s,e.presentationAudiences),c=!!(s&&s.length&&n);return t.jsx("div",{ref:a,children:t.jsxs(ne,{data:e.series.tallPoster,alt:e.series.name,imageType:xe.TallPosters,preload:e.preloadImage,imageOptions:{size:R.Large},imageClassName:e.imageClass?e.imageClass:"rounded-3",children:[i&&t.jsx(Na,{isSmall:e.isSmall,series:e.series,mergedAudience:s&&s.length?n:null,hasTableOfContents:e.hasTableOfContents}),t.jsx(W,{type:E.Series}),t.jsx("div",{className:`position-absolute text-white text-shadow ${A.labelContainer}`,children:c?t.jsx(Q,{audience:n,border:"white"}):t.jsx(N,{type:I.Rating,data:le.getRating(e.series)})})]})})}const pa="_videoList_182nk_1",Va={videoList:pa},Ta="search.seriesWithVideos";function $a(){const e=F();return e.xl||e.xxl?5:e.lg||e.md?4:3}function Oa(e){const a=$a(),i=e.series.videos.data.slice(0,a),s={actionType:P.Click,entity:L.Series,location:k.SeriesWithVideos},n={...e.analyticsData,id:e.series.id,name:e.series.name};return t.jsx("div",{className:"ps-2 py-2",children:t.jsxs(Y,{className:"g-0 border rounded-3",children:[t.jsx(b,{xs:4,lg:3,className:"pe-3",children:t.jsx(v,{appLink:e.seriesAppLink,className:"position-relative",analyticsData:n,analyticsOptions:{...s,descriptor:C.TallPoster},children:t.jsx(Ia,{series:e.series,presentationAudiences:e.presentationAudiences,preloadImage:e.preloadImage,imageClass:"rounded-start-lg"})})}),t.jsx(b,{xs:8,lg:9,children:t.jsxs("div",{className:"d-flex justify-content-between",children:[t.jsx("div",{className:`pt-3 mb-n2 ${Va.videoList}`,children:i==null?void 0:i.map(c=>{const l={...n,videoId:c.id,videoName:c.name};return c={...c,series:e.series},t.jsx("div",{className:"mb-2",children:t.jsx(X,{video:c,getVideoAppLink:e.getVideoAppLink,analyticsData:l,analyticsOptions:{entity:L.Video,location:k.SeriesWithVideos},size:"sm",hasPermissions:e.hasPermissions,hideVideoGuidance:!0,commonVideoProps:e.commonVideoProps})},c.id)})}),t.jsx("div",{className:"text-end pt-3 pe-3",children:t.jsx(v,{className:"info-link fw-semibold",appLink:e.seriesAppLink,analyticsData:n,analyticsOptions:{...s,descriptor:C.Link},children:t.jsx(y,{namespace:Ta,phrase:"seeAllVideos"})})})]})})]})})}function Da(e){return t.jsx("div",{className:"mx-n2",children:t.jsx(Oa,{presentationAudiences:e.audiences,series:e.item,seriesAppLink:e.appLinks.getSeriesAppLink(e.item),getVideoAppLink:e.appLinks.getVideoAppLink,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},preloadImage:!0,hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}const wa="search.collectionVideoList";function Ra(){const e=F();return e.xs?2:e.sm?1:3}function Fa(e){const a=Ra(),i={analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions};return t.jsxs(t.Fragment,{children:[t.jsx("ul",{className:"list-unstyled my-1",children:e.videos.slice(0,a).map(s=>{var c;const n=!!s.episodeNumber&&!!((c=s.season)!=null&&c.id);return t.jsx("li",{className:"d-flex align-items-center",children:t.jsxs(v,{...i,className:"clamp-1",appLink:e.getVideoAppLink(s),children:[n&&t.jsxs(t.Fragment,{children:[t.jsx(dt,{video:s})," "]}),s.name]})},`${e.collectionId}:${s.id}`)})}),t.jsx(v,{...i,className:"info-link",appLink:e.appLink,children:t.jsx(y,{namespace:wa,phrase:"seeAll"})})]})}const Ea="_overlay_1tsto_1",qa={overlay:Ea},Ha="search.collectionThumbnail";function Pe(e){var h,u,m;const a=F(),s=K.getSize(a,"md")==="sm",n=!!((u=(h=e.collection.videos)==null?void 0:h.data)!=null&&u.length),c=n&&e.collection.videos.data.find(d=>{var x;return!!((x=d.thumbnail)!=null&&x.url)});function l(){const d={...e.analyticsData,id:e.collection.id,name:e.collection.name};return c&&(d.videoId=c.id,d.videoName=c.name),d}const r=l(),o=e.collectionType==="series";return t.jsxs("div",{className:`row g-0 ${s?"":"py-2"}`,children:[t.jsx(b,{...K.getThumbnailColumns(),className:`flex-column align-items-flex-start ${s?"pb-2 pe-2":"mb-1 px-2"}`,children:t.jsx("div",{className:`position-relative overflow-hidden ${s?"rounded":"rounded-3"}`,children:t.jsxs(ne,{data:c==null?void 0:c.thumbnail,appLink:e.appLink,imageType:xe.Thumbnails,analyticsData:r,analyticsOptions:{...e.analyticsOptions,descriptor:C.Thumbnail},children:[t.jsx(st,{type:e.maskType}),t.jsx(W,{type:e.imageFallbackType}),t.jsx("div",{className:`d-flex flex-column align-items-center justify-content-center text-white h-100 ${qa.overlay}`,children:t.jsx(y,{namespace:Ha,phrase:"seeAll"})})]})})}),t.jsxs(b,{...K.getDetailsColumns(),className:s?"pb-2":"px-2",children:[!e.isPlugin&&t.jsx(xt,{actions:e.getCollectionActions(e.collection,e.showActions,e.collectionType,e.analyticsOptions),className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1"}),t.jsx(v,{appLink:e.appLink,analyticsData:r,analyticsOptions:{...e.analyticsOptions,descriptor:C.Title},children:t.jsx("h5",{className:"m-0 mb-1",children:t.jsx("span",{className:"clamp-1",children:e.collection.name})})}),o&&!e.hideBadges&&t.jsxs(ve,{children:[t.jsx(N,{type:I.Rating,data:le.getRating(e.collection)}),t.jsx(N,{type:I.ProductionYear,data:(m=e.collection.metadata)==null?void 0:m.year})]}),n&&t.jsx(Fa,{collectionId:e.collection.id,videos:e.collection.videos.data,appLink:e.appLink,analyticsData:r,analyticsOptions:{...e.analyticsOptions,descriptor:C.Link},getVideoAppLink:e.getVideoAppLink})]})]})}function Ua(e){return t.jsx("div",{className:`position-relative ${Z.videoList}`,children:t.jsx(Pe,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:L.Playlist,actionType:P.Click,location:k.PlaylistListItem},appLink:e.appLinks.getPlaylistAppLink(e.item),showActions:e.showActions,collection:e.item,collectionType:"playlist",maskType:je.Playlist,imageFallbackType:E.PlaylistThumbnail,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}function Ma(e){return t.jsx("div",{className:`position-relative ${Z.videoList}`,children:t.jsx(Pe,{analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},analyticsOptions:{entity:L.Series,actionType:P.Click,location:k.SeriesListItem},appLink:e.appLinks.getSeriesAppLink(e.item),collectionType:"series",collection:e.item,showActions:e.showActions,maskType:je.Series,imageFallbackType:E.SeriesThumbnail,hideBadges:!0,isPlugin:e.commonVideoProps.isPlugin,getVideoAppLink:e.appLinks.getVideoAppLink,getCollectionActions:e.appLinks.getCollectionActions})})}var Se=(e=>(e.Draft="Draft",e.ComingSoon="ComingSoon",e.Published="Published",e))(Se||{});function Ga(e,a){var s;if((a==null?void 0:a.length)>=Ze.MULTI_PRESENTATION_THRESHOLD)return(s=a==null?void 0:a.find(n=>n.id===e))==null?void 0:s.name}function Ba(e){var c,l,r,o,h,u,m,d,x,g,f,V;const a=((c=e.data)==null?void 0:c.status)===Se.ComingSoon,i=Ga(e.data.presentationId,e==null?void 0:e.availablePresentations),s={...e.analyticsData,id:((l=e.analyticsData)==null?void 0:l.id)||((r=e.data)==null?void 0:r.id),name:(o=e.data)==null?void 0:o.name,presentationId:((h=e.analyticsData)==null?void 0:h.presentationId)||e.data.presentationId,comingSoon:!!a},n={location:k.ClassificationListItem,entity:L.Classification,...e.analyticsOptions,actionType:P.Click,descriptor:C.Cover};return t.jsx(Ce,{...e,analyticsData:s,analyticsOptions:n,coverUrl:(u=e.data.cover)==null?void 0:u.url,coverBgColor:(d=(m=e.data)==null?void 0:m.metadata)==null?void 0:d.backgroundColor,subtitle:((x=e.getSubtitle)==null?void 0:x.call(e,e.data))||i,isComingSoon:a,themeColor:(g=e.shouldHighlight)!=null&&g.call(e,e.data)?((V=(f=e.data)==null?void 0:f.metadata)==null?void 0:V.backgroundColor)??"":""})}const za=Ee.memo(Ba);P.Click,L.UserSetting,C.Tile;P.Click,L.Url,C.Tile;function Wa(e){return t.jsx(b,{as:"li",sm:6,md:e.useLargeStyle?6:4,lg:e.useLargeStyle?4:3,children:t.jsx("div",{className:"position-relative px-1 mb-2",children:t.jsx(za,{data:e.item,getChildAppLink:e.appLinks.getClassificationAppLink,getChildAppLinkOptions:()=>{var a,i;return(i=(a=e.appLinks).getClassificationAppLinkOptions)==null?void 0:i.call(a,e.item)},availablePresentations:e.availablePresentations,analyticsData:{itemIndex:e.itemIndex,search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:0},isLarge:e.useLargeStyle,highlightOnHover:e.commonVideoProps.showNewVideoIndicator})})})}function Xa(e){function a(s){return p.isClip(s)?nt:p.isInteractive(s)?ct:X}const i=a(e.item);return t.jsx("div",{className:`position-relative ${Z.videoList}`,children:t.jsx(i,{video:e.item,getVideoAppLink:e.appLinks.getVideoAppLink,getPreviewQuestionsAppLink:e.appLinks.getPreviewQuestionsAppLink,presentationAudiences:e.audiences,analyticsData:{search:{query:e.queryParams.query,score:e.item._score,maxScore:e.item._maxScore,featured:e.item._featured},pagePositionIndex:e.pagePositionIndex},hasPermissions:e.hasPermissions,commonVideoProps:e.commonVideoProps})})}const Qa="shared.mixedSearchResults",Ya=8,Za=z.memo(function(e){var c,l,r,o,h,u;const a=F(),i=a.xs||a.sm;if(!((c=e.results)!=null&&c.length)&&!((l=e.topics)!=null&&l.totalResults)&&!((r=e.companies)!=null&&r.totalResults))return t.jsx(t.Fragment,{});const s=[...((o=e.companies)==null?void 0:o.results)??[],...((h=e.topics)==null?void 0:h.results)??[]],n={useLargeStyle:s.length<4,...e};return t.jsxs("div",{className:"position-relative",children:[t.jsx("p",{role:"status",className:"visually-hidden",children:t.jsx(y,{namespace:Qa,phrase:"ariaSearch"})}),!!s.length&&t.jsx(Y,{as:"ul",className:"list-unstyled g-0 pb-3 mx-n1",children:s.slice(0,Ya).map((m,d)=>{switch(m.type.toLowerCase()){case"company":return t.jsx(Ft,{item:m,itemIndex:d,...n},d);case"subject":return t.jsx(Wa,{item:m,itemIndex:d,...n},d)}})}),(u=e.results)==null?void 0:u.map((m,d)=>{var g,f;const x=s.length?d+1:d;if("isExchangeVideoGroup"in m&&m.isExchangeVideoGroup)return t.jsx(qt,{item:m,pagePositionIndex:x,...n},d);switch((g=m.type)==null?void 0:g.toLowerCase()){case"interactive":case"clip":case"video":return d===0&&m._featured&&p.isVideo(m)?t.jsx(Bt,{item:m,pagePositionIndex:x,...n},d):t.jsx(Xa,{item:m,pagePositionIndex:x,...n},d);case"playlist":return i?t.jsx(Ua,{item:m,pagePositionIndex:x,...n},d):t.jsx(ja,{item:m,pagePositionIndex:x,...n},d);case"series":return i||!((f=m.tallPoster)!=null&&f.id)?t.jsx(Ma,{item:m,pagePositionIndex:x,...n},d):t.jsx(Da,{item:m,pagePositionIndex:x,...n},d)}})]})}),te="search.searchSubstitute";function Ja(e){return e.substitute?t.jsxs("div",{className:"pb-3",children:[t.jsxs("p",{className:"mb-1 h6",children:[t.jsx(y,{namespace:te,phrase:"showingFor"})," ",t.jsx(v,{className:"info-link",appLink:e.getAppLink(e.substitute,e.queryParams),appLinkOptions:{replace:!0},children:e.substitute})]}),t.jsxs("p",{className:"mb-0 h6 fw-normal",children:[t.jsx(y,{namespace:te,phrase:"searchInsteadFor"}),t.jsx(v,{className:"info-link",appLink:e.getAppLink(e.queryParams.query,{...e.queryParams,allowSubstitute:"false"}),children:e.queryParams.query}),t.jsx(y,{namespace:te,phrase:"endOriginal"})]})]}):t.jsx(t.Fragment,{})}const Ka="search.searchSuggestions";_e.defaultProps={suggestions:[],queryParams:{}};function _e(e){var a;return(a=e.suggestions)!=null&&a.length?t.jsxs("div",{className:"d-flex align-items-center mb-3",children:[t.jsx(y,{namespace:Ka,phrase:"didYouMean"})," ",e.suggestions.map((i,s)=>t.jsxs(z.Fragment,{children:[s!==0&&t.jsx("span",{className:"mx-1",children:"•"}),t.jsx(v,{className:"info-link",appLink:e.getAppLink(i,e.queryParams),appLinkOptions:{replace:!0},children:i})]},`${i}:${s}`))]}):t.jsx(t.Fragment,{})}const S={useOnFilterChange(e,a){const i={...a};delete i.query;const s=Object.keys(i).map(n=>i[n]).sort((n,c)=>n-c);z.useEffect(()=>{e()},[s.join(":")])},getCollectionActions(e,a,i,s){return a?[]:[]},getSeriesAppLink(e){return e!=null&&e.id?{application:w.EXCHANGE,action:D.Exchange.SERIES,args:[e.id,re.slugify(e.name)]}:null},getVideoAppLink(e){return e!=null&&e.id?{application:w.EXCHANGE,action:D.Exchange.PREVIEW,args:[e.id,re.slugify(e.name)]}:null},getAppliedIndices(e={}){const{type:a}=e;if(a){if(!Array.isArray(a))return[a];if(a.length)return a}return["video"]},getNestedCategoryIds(e,a){const i=n=>{const c=[],l=a.find(o=>+o.data.id==+n);if(!(l!=null&&l.children.length))return[n];const r=o=>{o&&(o.data&&c.push(o.data.id),o.children.length&&o.children.forEach(h=>{r(h)}))};return r(l),c};if(!Array.isArray(e))return i(e);const s=[...e].map(n=>i(n));return qe.flatten(s)},buildBackendFilterParams(e,a,i=[],s){const n=a==null?void 0:a.categoryId,c=n&&this.getNestedCategoryIds(n,s),l=oe.buildBackendFilterParams({...a,categoryId:c},i,null,!1,[]);return l[`${O.FILTER_PARAM_PREFIX}library`]=e,l},getBackendFilters(e){if(!e.hasDataLoaded)return null;const{queryParams:a,ratings:i,exchange:s,categories:n}=e,c=S.buildBackendFilterParams(s.data.id,a,i.data,n.data),l=S.getAppliedIndices(a);return{queryParams:a,backendFilters:c,appliedIndices:l}},getFilters(e,a){if(!e.hasDataLoaded||!a.hasCompleted)return null;const{categories:i,ratings:s}=e,n=[_.Categories(i.data),_.Rating(s.data,null),_.HasResources(),_.HasSubtitles(),_.TagOrClassification(a.data)],c=oe.getMoreFilters([_.ProductionYear(),_.IsHD(),_.Duration()]);return{mainFilters:n,moreFilters:c}},getAppLink(e,a){return{application:w.EXCHANGE,action:D.Exchange.SEARCH,params:{...a,query:e}}}},ei="exchange.searchResultsEmptyState";function ti(e){return t.jsx(He.Provider,{value:ei,children:t.jsxs(q,{children:[t.jsx(q.Image,{src:Ue.EmptyStates.SEARCH}),t.jsx(q.Heading,{children:e.query?t.jsx(y,{phrase:"headingWithQuery",options:{query:e.query}}):t.jsx(y,{phrase:"headingWithoutQuery"})}),t.jsxs(q.Info,{children:[t.jsx(y,{phrase:"info"}),t.jsx(v,{className:"info-link",appLink:{application:w.EXCHANGE,action:D.Exchange.INDEX},children:t.jsx(y,{phrase:"topicsAppLink"})})]})]})})}function ai(e){const a=$(Me.currentUser()),i=$(ae.exchange()),s=$(vt.ratings()),n=$(ae.categories()),c=a.hasCompleted&&i.hasCompleted&&s.hasCompleted&&n.hasCompleted;return{queryParams:e,currentUser:a,exchange:i,ratings:s,categories:n,hasDataLoaded:c}}const ii="exchange.searchResultsView2";function si(e){var m,d,x;const{queryParams:a,appliedIndices:i,backendFilters:s}=e,n=Ct(),c=Ge(),l=Be((m=r())==null?void 0:m.key);function r(g){return e.hasDataLoaded&&ae.search(a.query,i,s,g)}function o(g){c(r(g))}function h(g,f){if(g===1)return Lt(f);n.error(ge.getPhrase(ii,"error"))}return{...mt(r,o,h,g=>g.results),fetchNext:o,substituteQuery:(d=l.data)==null?void 0:d.substituteQuery,suggestions:(x=l.data)==null?void 0:x.suggestions}}const me={video:J.VIDEO_COLLECTION,series:"rating,tallPoster",playlist:"videos[count(),thumbnail]{limit:1},interactives[count(),_thumbnail]{limit:1},clips[count(),_thumbnail]{limit:1}",classification:`cover,thumbnail,tags{tagtype:${Je.Curation}}`,clip:J.CLIP_COLLECTION,interactive:J.INTERACTIVE_COLLECTION,company:"logo",category:"libraries[_logo],thumbnail"};function ue(e){var n,c;let a=e.totalResults;const i=((n=e==null?void 0:e.results)==null?void 0:n.filter(l=>{var r,o,h,u,m,d,x,g;if(l._index!=="series"&&l._index!=="playlist")return!0;if(l._index==="playlist"){const f=l;return(o=(r=f.clips)==null?void 0:r.data)!=null&&o.length||(u=(h=f.interactives)==null?void 0:h.data)!=null&&u.length||(d=(m=f.videos)==null?void 0:m.data)!=null&&d.length?!0:(a--,!1)}return((g=(x=l.videos)==null?void 0:x.data)==null?void 0:g.length)===0?(a--,!1):!0}))??[];e.results=i,e.totalResults=a;const s=(c=i[0])==null?void 0:c._score;return{...e,results:kt.mapMaxScoreToSearchResults(i,s)}}function B(e){return Object.entries(e).reduce((a,[,i])=>{let s=i;return typeof i=="object"?s=B(i):["number","boolean","string"].includes(typeof i)&&(s=i.toString()),a.length?`${a},${s}`:s},"")}const ni={searchDashboard(e,a,i=[]){const s=i.sort((u,m)=>u.id.localeCompare(m.id)).map(u=>[u.id,u==null?void 0:u.cursor]),n=B(a),c=`search:v5:dashboard:${e}:${s}:${n}`,{[`${O.FILTER_PARAM_PREFIX}indicesFilters`]:l,isLearner:r,...o}=a,h={widgets:i,indices:l,filters:Object.entries(o).reduce((u,[m,d])=>({...u,[m.replace("filters.","")]:d}),{}),query:e,includeAllIndices:!1,isLearner:!!r};return{url:"{gateway}/v5/search/widgets",publicUrl:"/api/search/v5/widgets",type:U.POST,data:h,key:c}},searchDashboardWidget(e,a,i,s=[]){const n=s.sort((d,x)=>d.id.localeCompare(x.id)).map(d=>[d.id,d==null?void 0:d.cursor]),c=B(i),l=`search:v5:dashboard:${e}:widget:${a}:${n}:${c}`,{[`${O.FILTER_PARAM_PREFIX}indicesFilters`]:r,isLearner:o,excludeVideoIds:h,...u}=i,m={widgets:s,indices:r,filters:Object.entries(u).reduce((d,[x,g])=>({...d,[x.replace("filters.","")]:g}),{}),query:a,includeAllIndices:!1,isLearner:!!o,ogql:me,excludeVideoIds:h};return{url:`{gateway}/v5/search/widgets/${e}`,publicUrl:`/api/search/v5/widgets/${e}`,type:U.POST,data:m,key:l}},searchV5(e,a,i=[]){const s=i.sort((u,m)=>u.id.localeCompare(m.id)).map(u=>[u.id,u==null?void 0:u.cursor]),n=B(a),c=`search:v5:${e}:${s}:${n}`,{[`${O.FILTER_PARAM_PREFIX}indicesFilters`]:l,isLearner:r,...o}=a,h={widgets:i,indices:l,filters:Object.entries(o).reduce((u,[m,d])=>({...u,[m.replace("filters.","")]:d}),{}),query:e,includeAllIndices:!1,isLearner:!!r,ogql:me};return{url:"{gateway}/v5/search",publicUrl:"/api/search/v5",type:U.POST,data:h,key:c}},searchV4(e){const{query:a,indices:i,filters:s={},sorts:n={},allowSubstitute:c=!0,cursor:l,limit:r}=e;let o=`search:v4:${a}:${c}:${i}:${l}`;o+=Object.keys(s).map(g=>{const f=s[g];return Array.isArray(f)?f.join(";"):f}).join(";");const{[`${O.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]:h,isLearner:u,...m}=s,x={searchType:"content",indices:i.map(g=>g!=="video"||!h?{index:g}:{index:g,filters:{excludeLibraryExclusive:h}}),filters:Object.entries(m).reduce((g,[f,V])=>({...g,[f.replace("filters.","")]:V}),{}),sorts:n,query:a,allowSubstitute:c,cursor:l??void 0,isLearner:!!u,limit:r};return{url:"{gateway}/v4/search",publicUrl:"/api/search/v4",type:U.POST,data:x,key:o,formatData:ue}},search(e){const{query:a,indices:i,filters:s,allowSubstitute:n,cursor:c,limit:l,success:r,error:o}=e;let h=`search:${a}:${n}:${i}:${c}`;h+=Object.keys(s).map(m=>{const d=s[m];return Array.isArray(d)?d.join(";"):d}).join(";");const u=Object.assign({},{index:i,cursor:c??void 0,query:a,allowSubstitute:n,limit:l,...s});return{url:H.urlBuilder("{gateway}/v3/search",u),publicUrl:H.urlBuilder("/api/search",u),key:h,formatData:ue,success:r,error:o}},tagsAndClassifications(e,a,i={},s,n,c){const l={index:a,cursor:s,query:e,...i};let r=`filter:options:${e}:${a.join(":")}:${s}`;return r+=Object.keys(i).map(o=>{const h=i[o];return Array.isArray(h)?h.join(";"):h}).join(";"),{url:H.urlBuilder("{gateway}/v3/search/tags-and-classifications",l),publicUrl:H.urlBuilder("/api/search/tags-and-classifications",l),key:r,success:n,error:c,normalize:!1}}};function ci(e){return $(e&&ni.tagsAndClassifications(e.queryParams.query,e.appliedIndices,e.backendFilters))}function Xi(e){var d;const{queryParams:a={}}=e,i=jt("video-list"),s=ai(a),{commonVideoProps:n}=lt(),c=S.getBackendFilters(s),l=ci(c),r=si({...c,...s}),o=S.getFilters(s,l);ze({title:a.query??""});const h=s.hasDataLoaded&&o,u=r.hasFirstPageCompleted&&l.hasCompleted&&!!o,m=(d=r.items)==null?void 0:d.length;return h?t.jsxs(t.Fragment,{children:[t.jsx(ft,{query:a.query}),t.jsx(Ja,{substitute:r.substituteQuery,queryParams:a,getAppLink:S.getAppLink}),!r.substituteQuery&&t.jsx(_e,{suggestions:r==null?void 0:r.suggestions,queryParams:a,getAppLink:S.getAppLink}),t.jsx(yt,{queryParams:a,mainFilters:o==null?void 0:o.mainFilters,moreFilters:o==null?void 0:o.moreFilters,analyticsOptions:{entity:L.SearchResults,location:k.SearchFilters},appLink:{application:w.EXCHANGE,action:D.Exchange.SEARCH},isFetchingOptions:l.isFetching}),u?t.jsxs("section",{children:[m?t.jsx(rt.Provider,{value:i,children:t.jsx(Za,{queryParams:a.query,results:r.items,audiences:null,currentUser:s.currentUser.data,availablePresentations:null,showActions:!0,companies:null,hasPermissions:()=>!1,appLinks:{getCollectionActions:S.getCollectionActions,getSeriesAppLink:S.getSeriesAppLink,getVideoAppLink:S.getVideoAppLink,getClassificationAppLink:()=>null,getClassificationAppLinkOptions:()=>null,getPlaylistAppLink:()=>null,getCompanyAppLink:()=>null,getPreviewQuestionsAppLink:()=>null},commonVideoProps:n})}):t.jsx(ti,{query:a.query}),r.hasMore&&t.jsx(ut,{isFetching:r.isFetching,fetchNext:r.fetchNext,nextCursor:r.nextCursor})]}):t.jsx("div",{className:"mx-n2",children:t.jsx(ht,{})})]}):t.jsx(t.Fragment,{})}export{Xi as ExchangeSearchResultsView};
|
|
3
|
-
//# sourceMappingURL=C88MKPgQ.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"C88MKPgQ.chunk.js","sources":["../../../../libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/CompanyWidgetItem.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/CompanyResult.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/exchange-video-group/ExchangeVideoGroup.tsx","../../../../libs/shared/src/apps/subjects/components/hero-video/HeroVideo.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/FeaturedVideoResult.tsx","../../../../../node_modules/timeago.js/esm/lang/en_US.js","../../../../../node_modules/timeago.js/esm/lang/zh_CN.js","../../../../../node_modules/timeago.js/esm/register.js","../../../../../node_modules/timeago.js/esm/utils/date.js","../../../../../node_modules/timeago.js/esm/format.js","../../../../../node_modules/timeago.js/esm/index.js","../../../../libs/shared/src/apps/playlists/components/playlist-count/PlaylistCount.tsx","../../../../libs/shared/src/components/clickview-avatar/ClickViewAvatar.tsx","../../../../libs/shared/src/apps/playlists/components/playlist-list/PlaylistOwnerAvatar.tsx","../../../../libs/shared/src/apps/playlists/components/playlist-list/PlaylistItem.tsx","../../../../libs/shared/src/apps/playlists/components/playlist-list/PlaylistList.tsx","../../../../libs/shared/src/apps/search/components/playlist-with-videos/PlaylistWithVideos.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/LargePlaylistResults.tsx","../../../../libs/shared/src/components/series-tall-poster/SeriesTallPoster.tsx","../../../../libs/shared/src/apps/search/components/series-with-videos/SeriesWithVideos.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/LargeSeriesResult.tsx","../../../../libs/shared/src/apps/search/components/collection-video-list/CollectionVideoList.tsx","../../../../libs/shared/src/apps/search/components/collection-thumbnail/CollectionThumbnail.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/SmallPlaylistResult.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/SmallSeriesResults.tsx","../../../../libs/shared/src/enums/ClassificationStatus.ts","../../../../libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/EditSubjectsWidgetLink.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/AllSubjectsWidgetLink.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/SubjectResult.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/components/VideoResult.tsx","../../../../libs/shared/src/apps/search/components/mixed-search-results/MixedSearchResults.tsx","../../../../libs/shared/src/apps/search/components/search-substitute/SearchSubstitute.tsx","../../../../libs/shared/src/apps/search/components/search-suggestions/SearchSuggestions.tsx","../../src/apps/exchange/views/exchange-search-results/ExchangeSearchUtils.ts","../../src/apps/exchange/views/exchange-search-results/empty-state/ExchangeSearchEmptyState.tsx","../../src/apps/exchange/views/exchange-search-results/useFetchSearchData.ts","../../src/apps/exchange/views/exchange-search-results/useGetSearchResults.ts","../../../../libs/shared/src/apps/search/constants/SearchOGQL.ts","../../../../libs/shared/src/apps/search/flight-requests/SharedSearchRequests.ts","../../src/apps/exchange/views/exchange-search-results/useGetTagsAndClassifications.ts","../../src/apps/exchange/views/exchange-search-results/ExchangeSearchResultsView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport styles from './cover-pill.module.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n showFallbackBackgroundColour?: boolean;\n}\n\nCoverPillWidgetContent.defaultProps = {\n showFallbackBackgroundColour: true\n};\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svg={CheckSvg} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && props.showFallbackBackgroundColour && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { Company } from 'libs/shared/interfaces';\n\nexport function CompanyWidgetItem(props: CoverPillWidgetItemProps<Company>): JSX.Element {\n const analyticsData = {\n ...props.analyticsData,\n id: props.data?.id,\n name: props.data?.name\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: EntityType.Company,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.logo?.url}\n coverBgColor={props.data.metadata?.colour}\n />\n );\n}","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { CompanyWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/CompanyWidgetItem';\nimport { Company } from 'libs/shared/interfaces';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function CompanyResult(props: MixedSearchResultItemProps<Company>): JSX.Element {\n return (\n <Col as='li' sm={6} md={props.useLargeStyle ? 6 : 4} lg={props.useLargeStyle ? 4 : 3}>\n <div className={`position-relative px-1 mb-2`}>\n <CompanyWidgetItem\n data={props.item}\n getChildAppLink={props.appLinks.getCompanyAppLink}\n getChildAppLinkOptions={() => props.appLinks.getCompanyAppLinkOptions?.(props.item)}\n analyticsData={{\n itemIndex: props.itemIndex,\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: 0\n }}\n isLarge={props.useLargeStyle}\n />\n </div>\n </Col>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { ClickDescriptor, EntityType, HashObject, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { ExchangeVideoGroup } from 'libs/shared/apps/search/interfaces/SearchResults';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\n\nimport { MixedSearchResultItemProps } from './../MixedSearchResultItemProps';\n\nimport styles from '../../mixed-search-results.module.scss';\n\nconst namespace = 'search.exchangeVideoGroup';\n\nconst EXCHANGE_RESULT_DISPLAY_LIMIT = 3;\n\nexport function ExchangeVideoGroup(props: MixedSearchResultItemProps<ExchangeVideoGroup>): JSX.Element {\n const limit = props.item.showCount >= EXCHANGE_RESULT_DISPLAY_LIMIT\n ? EXCHANGE_RESULT_DISPLAY_LIMIT\n : props.item.showCount;\n\n function getContainerClassName(): string {\n if (props.pagePositionIndex === 0)\n return 'border-bottom pb-1 mb-3';\n\n return 'border-top border-bottom pt-3 mt-2 pb-1 mb-3';\n }\n\n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\n const currentParams = (currentAppLink.params as HashObject) ?? {};\n let currentSource = currentParams?.source ?? [];\n\n if (currentSource && !Array.isArray(currentSource))\n currentSource = [currentSource];\n\n const searchAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n source: [ ...(currentSource), SourceFilterOptions.ExchangeArchive ]\n }\n };\n\n const analyticsData = {\n query: props.queryParams.query,\n itemIndex: props.itemIndex,\n pagePositionIndex: props.pagePositionIndex\n };\n const analyticsOptions = {\n entity: EntityType.SearchResults,\n location: LocationContext.ExchangeSearchGroupItem,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.ExchangeArchive\n };\n\n return (\n <div className={getContainerClassName()}>\n <AppLink\n appLink={searchAppLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <h2 className='h4'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n </AppLink>\n <p>\n <Text namespace={namespace} phrase='message' />\n \n <AppLink\n appLink={props.appLinks.searchSettings}\n className='text-info'\n analyticsData={analyticsData}\n analyticsOptions={{\n ...analyticsOptions,\n descriptor: ClickDescriptor.Settings\n }}\n >\n <Text namespace={namespace} phrase='searchSettings' />\n </AppLink>\n .\n </p>\n\n <div className={`position-relative ${styles.videoList}`}>\n {props.item.videos.slice(0, limit).map((v, i) => {\n return (\n <VideoItem\n key={i}\n video={v}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n presentationAudiences={props.audiences}\n analyticsData= {{\n search: {\n query: props.queryParams.query,\n score: v._score,\n maxScore: v._maxScore,\n featured: v._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n />\n );\n })}\n </div>\n <div className='text-center py-2'>\n <AppLink\n className='text-secondary'\n appLink={searchAppLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, LocationContext } from 'libs/analytics/interfaces';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoItemActions } from 'libs/shared/components/video-list/components/video-item-actions/VideoItemActions';\nimport { VideoItemTitle } from 'libs/shared/components/video-list/components/video-item-title/VideoItemTitle';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { PresentationAudience, Video } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './hero-video.module.scss';\n\ninterface HeroVideoProps {\n video: Video;\n presentationAudiences: PresentationAudience[];\n showVideoGuidance: boolean;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n hideInteractiveBadge?: boolean;\n badgePosition?: 'thumbnail' | 'info-panel';\n titleClassName?: string;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n commonVideoProps: CommonVideoProps;\n showNewVideoIndicator?: boolean;\n}\n\nHeroVideo.defaultProps = {\n newDurationStyle: true,\n badgePosition: 'thumbnail'\n};\n\nexport function HeroVideo(props: HeroVideoProps): JSX.Element {\n const videoAudiences = props.video?.subjectPresentationAudiences?.data;\n const mergedAudience = useMergeAudiences(videoAudiences, props.presentationAudiences);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(props.analyticsOptions, {\n location: LocationContext.ClassificationHero,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n });\n\n const containerRef = React.useRef(null);\n \n if (!props.video)\n return <></>;\n\n return (\n <Row>\n <Col xs={12} md={6}>\n <div ref={containerRef} >\n <VideoThumbnail\n analyticsOptions={analyticsOptions}\n video={props.video}\n appLink={props.getVideoAppLink?.(props.video, {})}\n imageOptions={{ size: ImageSize.Medium }}\n textPosition={ThumbnailTextPosition.Independent}\n type='static'\n audience={props.badgePosition === 'thumbnail' ? mergedAudience : null}\n hideRating={props.badgePosition === 'thumbnail' ? !!mergedAudience : true}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n </Col>\n <Col xs={12} md={6} className={`${styles.details} position-relative`}>\n <div className='d-flex justify-content-between'>\n <div className='overflow-hidden'>\n <VideoSubText\n type={props.commonVideoProps.subTextType}\n appLink={props.commonVideoProps.getSubTextAppLink?.(props.video)}\n analyticsData={props.analyticsData}\n analyticsOptions={analyticsOptions}\n video={props.video}\n className='text-reset clamp-1'\n />\n <VideoItemTitle\n yearGroups={props.commonVideoProps.yearGroups}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={analyticsOptions}\n appLink={props.getVideoAppLink?.(props.video, {})}\n titleSize='h4'\n showNewVideoIndicator={props.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n titleClassName={props.titleClassName}\n clampLevel={2}\n />\n </div>\n <VideoItemActions\n analyticsData={props.analyticsData}\n analyticsOptions={analyticsOptions}\n video={props.video}\n />\n </div>\n\n {props.badgePosition === 'info-panel' && (\n <BadgeListContainer className='pb-1'>\n {!props.hideInteractiveBadge && <Badge type={ BadgeType.Interactive } data={props.video.interactives} />}\n <Badge type={ BadgeType.Rating } data={VideoHelper.getRating(props.video)} />\n <Badge type={ BadgeType.ProductionYear } data={props.video.productionYear} />\n </BadgeListContainer>\n )}\n\n <p className='mb-1'><span className={styles.description}>{props.video.description}</span></p>\n \n {props.badgePosition === 'info-panel' && (\n <AudienceLabel\n audience={mergedAudience}\n className='mt-1'\n border='dark'\n />\n )}\n\n {props.showVideoGuidance && (\n <VideoItemGuidance\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={analyticsOptions}\n containerClassName={`d-flex ${styles.guidance}`}\n responsiveClassName={styles.responsiveGuidance}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n </Col>\n </Row>\n );\n}\n\nexport function PartialHeroVideo(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n <div className='row pb-3'>\n <div className='col-6 p1'>\n <div className={`${styles.partialHeroThumbnail} partial-loading-background rounded-3`}></div>\n </div>\n <div className='col-6 p1'>\n <div className={`partial-loading-background mb-1 ${styles.partialSeriesText}`}></div>\n <div className={`partial-loading-background my-1 ${styles.partialVideoTitleText}`}></div>\n <div className='d-flex'>\n <div className={`partial-loading-background my-1 me-1 ${styles.partialBadge}`}></div>\n <div className={`partial-loading-background my-1 ms-1 ${styles.partialBadge}`}></div>\n </div>\n <div className={`partial-loading-background my-1 ${styles.partialDescription}`}></div>\n <div className={`partial-loading-background mt-2 ${styles.partialSubject}`}></div>\n </div>\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { HeroVideo } from 'libs/shared/apps/subjects/components/hero-video/HeroVideo';\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function FeaturedVideoResult(props: MixedSearchResultItemProps<Video>): JSX.Element {\n return (\n <div className='pb-3'>\n <HeroVideo\n video={props.item}\n presentationAudiences={props.audiences}\n getVideoAppLink={(v, opts) => props.appLinks.getVideoAppLink(v, opts)}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n hideInteractiveBadge\n showVideoGuidance={VideoHelper.showVideoGuidance(props.hasPermissions)}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Playlist } from 'libs/shared/interfaces';\n\nconst namespace = 'playlists.playlistCount';\n\nfunction getCount(playlist: Playlist): number | false {\n if (!playlist)\n return false;\n\n const videos = playlist.videos?.count ?? 0;\n const interactives = playlist.interactives?.count ?? 0;\n const clips = playlist.clips?.count ?? 0;\n\n return videos + interactives + clips;\n}\n\ninterface PlaylistCountProps {\n playlist: Playlist;\n}\n\nexport function PlaylistCount(props: PlaylistCountProps): JSX.Element {\n const count = getCount(props.playlist);\n\n if (count === false || Number.isNaN(count))\n return <></>;\n\n return (\n <span className='text-shadow font-size-sm'>\n <Text namespace={namespace} phrase='count' options={{ smartCount: count }} />\n </span>\n );\n}","import * as React from 'react';\n\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\n\nimport styles from './clickview-avatar.module.scss';\n\nexport function ClickViewAvatar(): JSX.Element {\n return (\n <div className={styles.avatar}>\n <ClickViewPlayLogo />\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { CurrentUser, Playlist } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\ninterface PlaylistOwnerAvatarProps {\n playlist: Playlist;\n imageCdnUrl: string;\n currentUser?: CurrentUser;\n}\n\nexport function PlaylistOwnerAvatar(props: PlaylistOwnerAvatarProps): JSX.Element {\n const { _liteOwner } = props.playlist;\n\n if (props.playlist._isClickViewCurated?.value)\n return (\n <ClickViewAvatar />\n );\n\n if (!_liteOwner?.id || !props.currentUser?.id)\n return <></>;\n\n const currentUserIsOwner = _liteOwner.id.toString() === props.currentUser.id.toString();\n\n if (currentUserIsOwner)\n return <></>;\n\n const url = typeof _liteOwner.avatar === 'string' ? _liteOwner.avatar : _liteOwner.avatar?.url;\n\n return (\n <Avatar\n imageUrl={url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(_liteOwner.name, _liteOwner.surname)}\n />\n );\n}","import * as React from 'react';\nimport { format } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, EntityType, HashObject } from 'libs/analytics/interfaces';\n\nimport { PlaylistCount } from 'libs/shared/apps/playlists/components/playlist-count/PlaylistCount';\nimport { PlaylistOwnerAvatar } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistOwnerAvatar';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ResizeType } from 'libs/shared/enums/Images';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './playlist.module.scss';\n\nconst namespace = 'playlists.playlistList';\n\nexport type PlaylistItemStyle = 'square' | 'round' | 'round-left';\n\nexport interface PlaylistItemProps {\n data: Playlist;\n appLink: Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n bgColourClassNames?: string[];\n titleClassName?: string;\n imageCdnUrl?: string;\n itemStyle?: PlaylistItemStyle;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n audienceLabelClass?: string;\n}\n\nPlaylistItem.defaultProps = {\n itemStyle: 'square'\n};\n\nexport function PlaylistItem(props: PlaylistItemProps): JSX.Element {\n const imageUrl = ImageHelper.createUrl(props.data.cover && props.data.cover.url, {\n size: ImageSize.Medium,\n resizeType: ResizeType.Cover\n });\n\n const audiences = props.data.subjectPresentationAudiences &&\n props.data.subjectPresentationAudiences.data;\n\n const mergedAudience = useMergeAudiences(audiences, props.presentationAudiences);\n\n let className = styles.playlistItem;\n\n const showImage = !!imageUrl || !!props.showFallbackImage;\n\n if (showImage)\n className += ` ${styles.playlistItemGradient}`;\n\n if (!showImage && props.bgColourClassNames)\n className += ` ${styles.playlistItem} ${getBgColorClass(props.data.name, props.bgColourClassNames)}`;\n\n if (props.itemStyle === 'round')\n className += ` rounded-3 overflow-hidden`;\n\n if (props.itemStyle === 'round-left')\n className += ` rounded-start-lg overflow-hidden`;\n\n const analyticsData = { ...props.analyticsData,\n id: props.data?.id,\n name: props.data?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Playlist\n };\n\n const getTitle = () => {\n if (!props.data.contentModifiedDate || props.data._isClickViewCurated?.value)\n return '';\n\n return LanguageService.getPhrase(namespace, 'lastUpdated', {\n timeago: format(DateHelper.convertUTCToLocal(props.data.contentModifiedDate))\n });\n };\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={getTitle()}\n >\n <BaseImage data={imageUrl} alt={props.data.name} className={className}>\n {!!props.showFallbackImage && <ImageFallback type={ImageFallbackType.Playlist} />}\n <div className={`text-white ${styles.playlistMetadata}`}>\n {!!props.showCount && (\n <PlaylistCount playlist={props.data} />\n )}\n <h5 className={`mb-0 ${props.titleClassName || ''}`}><span className='text-shadow clamp-2'>{props.data.name}</span></h5>\n {!!audiences && !!audiences.length && !!mergedAudience &&\n <AudienceLabel\n className={`${props.audienceLabelClass ? props.audienceLabelClass : ''} mt-1`}\n audience={mergedAudience}\n border='white'\n />\n }\n </div>\n {!!props.showOwner && !!props.imageCdnUrl &&\n <div className={styles.ownerAvatarContainer}>\n <PlaylistOwnerAvatar\n playlist={props.data}\n currentUser={props.currentUser}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n }\n </BaseImage>\n </AppLink>\n );\n}","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { PlaylistItem, PlaylistItemStyle } from './PlaylistItem';\n\ninterface PlaylistListProps {\n playlists: Playlist[];\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n itemContainerClassName?: string;\n itemTitleClassName?: string;\n bgColourClassNames?: string[];\n itemStyle?: PlaylistItemStyle;\n imageCdnUrl?: string;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n extraPlaylistItem?: JSX.Element;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Playlist,\n location: LocationContext.PlaylistListItem,\n descriptor: ClickDescriptor.Cover\n};\n\nexport function PlaylistList(props: PlaylistListProps): JSX.Element {\n return (\n <Row as='ul' className='list-unstyled mx-n1'>\n {props.extraPlaylistItem && (\n <Col as='li' key='extra-playlist-item' xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n {props.extraPlaylistItem}\n </Col>\n )}\n\n {props.playlists.map(p => (\n <Col as='li' key={p.id} xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n <PlaylistItem\n data={p}\n appLink={props.getPlaylistAppLink(p)}\n imageCdnUrl={props.imageCdnUrl}\n currentUser={props.currentUser}\n presentationAudiences={props.presentationAudiences}\n bgColourClassNames={props.bgColourClassNames}\n showCount={props.showCount}\n showOwner={props.showOwner}\n showFallbackImage={props.showFallbackImage}\n titleClassName={props.itemTitleClassName}\n itemStyle={props.itemStyle}\n analyticsData={props.analyticsData}\n analyticsOptions={{ ...props.analyticsOptions, ...analyticsOptions }}\n />\n </Col>\n ))}\n </Row>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PlaylistItem } from 'libs/shared/apps/playlists/components/playlist-list';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, Playlist, PresentationAudience, Video } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport styles from './playlist-with-videos.module.scss';\n\nconst namespace = 'search.playlistWithVideos';\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xl || breakpoints.xxl)\n return 3;\n \n return 2;\n}\n\ninterface PlaylistWithVideoProps {\n playlist: Playlist;\n playlistAppLink: Core.AppLink;\n presentationAudiences: PresentationAudience[];\n preloadImage: boolean;\n analyticsData: HashObject;\n currentUser: CurrentUser;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n hasPermissions: HasPermissionsFunc;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function PlaylistWithVideos(props: PlaylistWithVideoProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const videos = props.playlist.videos.data.slice(0, maxVideos);\n\n const playlistAnalyticsOption: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Playlist,\n location: LocationContext.PlaylistWithVideos\n };\n\n const playlistAnalyticsData: HashObject = {\n ...props.analyticsData,\n id: props.playlist.id,\n name: props.playlist.name\n };\n\n return (\n <div className='ps-2 py-2'>\n <Row className='g-0 border rounded-3'>\n <Col xs={4} lg={3} className='pe-3'>\n <PlaylistItem\n appLink={props.playlistAppLink}\n analyticsData={props.analyticsData}\n analyticsOptions={{\n ...playlistAnalyticsOption,\n descriptor: ClickDescriptor.Cover\n }}\n data={props.playlist}\n presentationAudiences={props.presentationAudiences}\n bgColourClassNames={BG_COLOUR_CLASS_NAMES}\n itemStyle='round-left'\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n currentUser={props.currentUser}\n showCount={false}\n showOwner\n />\n </Col>\n <Col xs={8} lg={9}>\n <div className='d-flex justify-content-between'>\n <div className={`pt-3 mb-n2 ${styles.videoList}`}>\n {videos?.map(video => {\n const videoAnalyticsData: HashObject = {\n ...playlistAnalyticsData,\n videoId: video.id,\n videoName: video.name\n };\n\n return (\n <div key={video.id} className='mb-2'>\n <VideoItem\n video={video}\n getVideoAppLink={props.getVideoAppLink}\n analyticsData={videoAnalyticsData}\n analyticsOptions={{\n entity: EntityType.Video,\n location: LocationContext.PlaylistWithVideos\n }}\n size='sm'\n hasPermissions={props.hasPermissions}\n hideVideoGuidance\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n })}\n </div>\n <div className='text-end pt-3 pe-3'>\n <AppLink\n className='info-link fw-semibold'\n appLink={props.playlistAppLink}\n analyticsData={playlistAnalyticsData}\n analyticsOptions={{\n ...playlistAnalyticsOption,\n descriptor: ClickDescriptor.Link\n }}\n >\n <Text namespace={namespace} phrase='seeAllVideos' />\n </AppLink>\n </div>\n </div>\n </Col>\n </Row>\n </div>\n );\n}","import React from 'react';\n\nimport { Playlist } from 'libs/shared/interfaces';\n\nimport { PlaylistWithVideos } from '../../playlist-with-videos/PlaylistWithVideos';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function LargePlaylistResult(props: MixedSearchResultItemProps<Playlist>): JSX.Element {\n return (\n <div className='mx-n2'>\n <PlaylistWithVideos\n playlist={props.item}\n playlistAppLink={props.appLinks.getPlaylistAppLink(props.item)}\n presentationAudiences={props.audiences}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n currentUser={props.currentUser}\n preloadImage\n getVideoAppLink={props.appLinks.getVideoAppLink}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { PresentationAudience, Series } from 'libs/shared/interfaces';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\n\nimport styles from './series-tall-poster.module.scss';\n\ninterface SeriesTallPosterHoverOverlay {\n series: Series;\n mergedAudience: PresentationAudience;\n isSmall?: boolean;\n hasTableOfContents?: boolean;\n}\n\nfunction SeriesTallPosterHoverOverlay(props: SeriesTallPosterHoverOverlay): JSX.Element {\n return (\n <div className={`py-3 mx-2 px-2 rounded bg-white text-center ${styles.mask} d-flex flex-column align-items-center`}>\n <h3 className={`fw-semibold mb-0 ${styles.hoverTitle} ${props.isSmall ? styles.smallHoverTitle : styles.largeHoverTitle}`}>\n <span className='clamp-3'>\n {props.series.name}\n </span>\n </h3>\n\n {!!props.series.description && (\n <p className={`${props.hasTableOfContents ? styles.hasTableOfContents : ''} ${styles.hoverDescription} ${props.isSmall ? styles.smallHoverDescription : styles.largeHoverDescription} mb-0`}>{props.series.description}</p>\n )}\n <div className={`${styles.labelContainerOverlay}`}>\n {props.mergedAudience\n ? <AudienceLabel audience={props.mergedAudience} border='dark' className='mt-2 w-fit'/>\n : <Badge type={BadgeType.Rating} data={SeriesHelper.getRating(props.series)} className='mt-2' />\n }\n </div>\n </div>\n );\n}\n\ninterface SeriesTallPosterMaskProps {\n series: Series;\n presentationAudiences: PresentationAudience[];\n preloadImage: boolean;\n imageClass?: string;\n isSmall?: boolean;\n hasTableOfContents?: boolean;\n}\n\nexport function SeriesTallPoster(props: SeriesTallPosterMaskProps): JSX.Element {\n const [ hoverRef, isHovering ] = useHoverIntent<HTMLDivElement>({ className: styles.hoverActive });\n \n const audiences = props.series && props.series.subjectPresentationAudiences &&\n props.series.subjectPresentationAudiences.data || [];\n\n const mergedAudience = useMergeAudiences(audiences, props.presentationAudiences);\n const displayAudience = !!(audiences && audiences.length && mergedAudience);\n\n return (\n <div ref={hoverRef}>\n <BaseImage\n data={props.series.tallPoster}\n alt={props.series.name}\n imageType={ImageType.TallPosters}\n preload={props.preloadImage}\n imageOptions={{ size: ImageSize.Large }}\n imageClassName={props.imageClass ? props.imageClass : 'rounded-3'}\n >\n {isHovering && (\n <SeriesTallPosterHoverOverlay\n isSmall={props.isSmall}\n series={props.series}\n mergedAudience={audiences && audiences.length ? mergedAudience : null}\n hasTableOfContents={props.hasTableOfContents}\n />\n )}\n \n <ImageFallback type={ImageFallbackType.Series} />\n <div className={`position-absolute text-white text-shadow ${styles.labelContainer}`}>\n {displayAudience\n ? <AudienceLabel audience={mergedAudience} border='white' />\n : <Badge type={BadgeType.Rating} data={SeriesHelper.getRating(props.series)} />\n }\n </div>\n </BaseImage>\n </div>\n );\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SeriesTallPoster } from 'libs/shared/components/series-tall-poster/SeriesTallPoster';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoItem } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { PresentationAudience, Series, Video } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport styles from './series-with-videos.module.scss';\n\nconst namespace = 'search.seriesWithVideos';\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xl || breakpoints.xxl)\n return 5;\n \n if (breakpoints.lg || breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface SeriesWithVideoProps {\n series: Series;\n seriesAppLink: Core.AppLink;\n presentationAudiences: PresentationAudience[];\n preloadImage: boolean;\n analyticsData: HashObject;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n hasPermissions: HasPermissionsFunc;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function SeriesWithVideos(props: SeriesWithVideoProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const videos = props.series.videos.data.slice(0, maxVideos);\n\n const seriesAnalyticsOption: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Series,\n location: LocationContext.SeriesWithVideos\n };\n\n const seriesAnalyticsData: HashObject = {\n ...props.analyticsData,\n id: props.series.id,\n name: props.series.name\n };\n\n return (\n <div className='ps-2 py-2'>\n <Row className='g-0 border rounded-3'>\n <Col xs={4} lg={3} className='pe-3'>\n <AppLink\n appLink={props.seriesAppLink}\n className='position-relative'\n analyticsData={seriesAnalyticsData}\n analyticsOptions={{\n ...seriesAnalyticsOption,\n descriptor: ClickDescriptor.TallPoster\n }}\n >\n <SeriesTallPoster\n series={props.series}\n presentationAudiences={props.presentationAudiences}\n preloadImage={props.preloadImage}\n imageClass='rounded-start-lg'\n />\n </AppLink>\n </Col>\n <Col xs={8} lg={9}>\n <div className='d-flex justify-content-between'>\n <div className={`pt-3 mb-n2 ${styles.videoList}`}>\n {videos?.map(video => {\n const videoAnalyticsData: HashObject = {\n ...seriesAnalyticsData,\n videoId: video.id,\n videoName: video.name\n };\n\n // insert parent series into video object\n video = {\n ...video,\n series: props.series\n };\n\n return (\n <div key={video.id} className='mb-2'>\n <VideoItem\n video={video}\n getVideoAppLink={props.getVideoAppLink}\n analyticsData={videoAnalyticsData}\n analyticsOptions={{\n entity: EntityType.Video,\n location: LocationContext.SeriesWithVideos\n }}\n size='sm'\n hasPermissions={props.hasPermissions}\n hideVideoGuidance\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n })}\n </div>\n <div className='text-end pt-3 pe-3'>\n <AppLink\n className='info-link fw-semibold'\n appLink={props.seriesAppLink}\n analyticsData={seriesAnalyticsData}\n analyticsOptions={{\n ...seriesAnalyticsOption,\n descriptor: ClickDescriptor.Link\n }}\n >\n <Text namespace={namespace} phrase='seeAllVideos' />\n </AppLink>\n </div>\n </div>\n </Col>\n </Row>\n </div>\n );\n}","import React from 'react';\n\nimport { Series } from 'libs/shared/interfaces';\n\nimport { SeriesWithVideos } from '../../series-with-videos/SeriesWithVideos';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function LargeSeriesResult(props: MixedSearchResultItemProps<Series>): JSX.Element {\n return (\n <div className='mx-n2'>\n <SeriesWithVideos\n presentationAudiences={props.audiences}\n series={props.item}\n seriesAppLink={props.appLinks.getSeriesAppLink(props.item)}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n preloadImage\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SeasonEpisode } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Video } from 'libs/shared/interfaces';\n\nconst namespace = 'search.collectionVideoList';\n\ninterface CollectionVideoListProps {\n videos: Video[];\n collectionId: string;\n appLink: Core.AppLink;\n analyticsOptions: AnalyticsOptions;\n analyticsData?: HashObject;\n getVideoAppLink: (video: Video) => Core.AppLink;\n}\n\nfunction useGetMaxVideos(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xs)\n return 2;\n\n if (breakpoints.sm)\n return 1;\n\n return 3;\n}\n\nexport function CollectionVideoList(props: CollectionVideoListProps): JSX.Element {\n const maxVideos = useGetMaxVideos();\n\n const analyticsProps = {\n analyticsData: props.analyticsData,\n analyticsOptions: props.analyticsOptions\n };\n\n return (\n <>\n <ul className='list-unstyled my-1'>\n {props.videos.slice(0, maxVideos).map(v => {\n const hasSeasonEpisode = !!v.episodeNumber && !!v.season?.id;\n\n return (\n <li key={`${props.collectionId}:${v.id}`} className='d-flex align-items-center'>\n <AppLink\n {...analyticsProps}\n className='clamp-1'\n appLink={props.getVideoAppLink(v)}\n >\n {hasSeasonEpisode && <><SeasonEpisode video={v} /> </>}\n {v.name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n\n <AppLink\n {...analyticsProps}\n className='info-link'\n appLink={props.appLink}\n >\n <Text namespace={namespace} phrase='seeAll' />\n </AppLink>\n </>\n );\n}","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, ClickDescriptor } from 'libs/analytics/interfaces';\n\nimport { CollectionVideoList } from 'libs/shared/apps/search/components/collection-video-list/CollectionVideoList';\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Playlist, Series, Video } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\n\nimport styles from './collection-thumbnail.module.scss';\n\nconst namespace = 'search.collectionThumbnail';\n\n\nexport type GetCollectionActions = (\n collection: Collection,\n showActions: boolean,\n collectionType: CollectionType,\n baseAnalyticsOptions: AnalyticsOptions\n) => ActionOptions[]\n\ntype Collection = Series | Playlist;\ntype CollectionType = 'series' | 'playlist';\n\ninterface CollectionThumbnailProps {\n collection: Collection;\n collectionType: CollectionType;\n appLink: Core.AppLink;\n showActions: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n maskType?: MaskType;\n imageFallbackType?: ImageFallbackType;\n hideBadges?: boolean;\n isPlugin: boolean;\n getCollectionActions: GetCollectionActions;\n getVideoAppLink: (video: Video, opts?: GetVideoAppLinkOptions) => Core.AppLink;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const hasVideos = !!props.collection.videos?.data?.length;\n\n const firstVideoWithThumbnail = hasVideos && props.collection.videos.data.find(v => !!v.thumbnail?.url);\n\n function getAnalyticsData(): HashObject {\n const data: HashObject = {\n ...props.analyticsData,\n id: props.collection.id,\n name: props.collection.name\n };\n\n if (firstVideoWithThumbnail) {\n data.videoId = firstVideoWithThumbnail.id;\n data.videoName = firstVideoWithThumbnail.name;\n }\n\n return data;\n }\n\n const analyticsData = getAnalyticsData();\n const isSeries = props.collectionType === 'series';\n\n return (\n <div className={`row g-0 ${isSmall ? '' : 'py-2'}`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-2` : 'mb-1 px-2'}`}>\n <div className={`position-relative overflow-hidden ${isSmall ? 'rounded' : 'rounded-3'}`}>\n <BaseImage\n data={firstVideoWithThumbnail?.thumbnail}\n appLink={props.appLink}\n imageType={ImageType.Thumbnails}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Thumbnail\n }}\n >\n <Mask type={props.maskType} />\n <ImageFallback type={props.imageFallbackType} />\n \n <div className={`d-flex flex-column align-items-center justify-content-center text-white h-100 ${styles.overlay}`}>\n <Text namespace={namespace} phrase='seeAll' />\n </div>\n </BaseImage>\n </div>\n </Col>\n\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n {!props.isPlugin &&\n <ActionsComponent\n actions={props.getCollectionActions(\n props.collection,\n props.showActions,\n props.collectionType,\n props.analyticsOptions\n )}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n }\n\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Title\n }}\n >\n <h5 className='m-0 mb-1'><span className='clamp-1'>{props.collection.name}</span></h5>\n </AppLink>\n\n {isSeries && !props.hideBadges && (\n <BadgeListContainer>\n <Badge type={BadgeType.Rating} data={SeriesHelper.getRating((props.collection as Series))} />\n <Badge type={BadgeType.ProductionYear} data={(props.collection as Series).metadata?.year} />\n </BadgeListContainer>\n )}\n \n {hasVideos && (\n <CollectionVideoList\n collectionId={props.collection.id}\n videos={props.collection.videos.data}\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={{\n ...props.analyticsOptions,\n descriptor: ClickDescriptor.Link\n }}\n getVideoAppLink={props.getVideoAppLink}\n />\n )}\n </Col>\n </div>\n );\n}","import React from 'react';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { MaskType } from 'libs/shared/components/mask/Mask';\nimport { Playlist } from 'libs/shared/interfaces';\n\nimport { CollectionThumbnail } from '../../collection-thumbnail/CollectionThumbnail';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.module.scss';\n\nexport function SmallPlaylistResult(props: MixedSearchResultItemProps<Playlist>): JSX.Element {\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <CollectionThumbnail\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n analyticsOptions={{\n entity: EntityType.Playlist,\n actionType: UserAction.Click,\n location: LocationContext.PlaylistListItem\n }}\n appLink={props.appLinks.getPlaylistAppLink(props.item)}\n showActions={props.showActions}\n collection={props.item}\n collectionType='playlist'\n maskType={MaskType.Playlist}\n imageFallbackType={ImageFallbackType.PlaylistThumbnail}\n isPlugin={props.commonVideoProps.isPlugin}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getCollectionActions={props.appLinks.getCollectionActions}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { MaskType } from 'libs/shared/components/mask/Mask';\nimport { Series } from 'libs/shared/interfaces';\n\nimport { CollectionThumbnail } from '../../collection-thumbnail/CollectionThumbnail';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.module.scss';\n\nexport function SmallSeriesResult(props: MixedSearchResultItemProps<Series>): JSX.Element {\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <CollectionThumbnail\n analyticsData={{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n analyticsOptions={{\n entity: EntityType.Series,\n actionType: UserAction.Click,\n location: LocationContext.SeriesListItem\n }}\n appLink={props.appLinks.getSeriesAppLink(props.item)}\n collectionType='series'\n collection={props.item}\n showActions={props.showActions}\n maskType={MaskType.Series}\n imageFallbackType={ImageFallbackType.SeriesThumbnail}\n hideBadges\n isPlugin={props.commonVideoProps.isPlugin}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getCollectionActions={props.appLinks.getCollectionActions}\n />\n </div>\n );\n}","// Maps to enum in SubjectApi but uses the\n// key rather than the value as SubjectsApi returns the key.\nexport enum ClassificationStatus {\n Draft = 'Draft',\n ComingSoon = 'ComingSoon',\n Published = 'Published'\n}","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\n\nimport styles from './cover-pill.module.scss';\n\ninterface EditSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.UserSetting,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function EditSubjectsWidgetLink(props: EditSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.editSubjectsItem} d-flex position-relative px-3 justify-content-center align-items-center`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-preference' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <SvgContainer svg={EditSvg} className='me-2 align-middle d-inline-block svg-container' />\n <p className='h6 align-middle text-truncate'><Text namespace='shared.subjectWidgetItem' phrase='edit' /></p>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './cover-pill.module.scss';\n\ninterface AllSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function AllSubjectsWidgetLink(props: AllSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.allSubjectsItem}\n d-flex flex-column position-relative px-2\n align-items-center justify-content-center text-nowrap bg-navy`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-all' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <div className={styles.logoContainer}>\n <ClickViewLogoInverted />\n </div>\n <p className='h6 pt-2 px-3 mb-0'><Text namespace='shared.subjectWidgetItem' phrase='all' /></p>\n </div>\n </AppLink>\n );\n}\n","import React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nexport function SubjectResult(props: MixedSearchResultItemProps<Classification>): JSX.Element {\n return (\n <Col as='li' sm={6} md={props.useLargeStyle ? 6 : 4} lg={props.useLargeStyle ? 4 : 3}>\n <div className={`position-relative px-1 mb-2`}>\n <SubjectWidgetItem\n data={props.item}\n getChildAppLink={props.appLinks.getClassificationAppLink}\n getChildAppLinkOptions={\n () => props.appLinks.getClassificationAppLinkOptions?.(props.item)\n }\n availablePresentations={props.availablePresentations}\n analyticsData={{\n itemIndex: props.itemIndex,\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: 0\n }}\n isLarge={props.useLargeStyle}\n highlightOnHover={props.commonVideoProps.showNewVideoIndicator}\n />\n </div>\n </Col>\n );\n}","import React from 'react';\n\nimport { ClipItem, ClipItemProps } from 'libs/shared/components/video-list/clip-item/ClipItem';\nimport { InteractiveItem, InteractiveItemProps } from 'libs/shared/components/video-list/interactive-item/InteractiveItem';\nimport { VideoItem, VideoItemProps } from 'libs/shared/components/video-list/video-item/VideoItem';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { MixedSearchResultItemProps } from './MixedSearchResultItemProps';\n\nimport styles from '../mixed-search-results.module.scss';\n\nexport function VideoResult(props: MixedSearchResultItemProps<VideoTypes>): JSX.Element {\n function getItemComponent(\n video: VideoTypes\n ): (props: ClipItemProps | InteractiveItemProps | VideoItemProps) => JSX.Element {\n if (VideoHelper.isClip(video))\n return ClipItem;\n \n if (VideoHelper.isInteractive(video))\n return InteractiveItem;\n \n return VideoItem;\n }\n\n const Component = getItemComponent(props.item);\n\n return (\n <div className={`position-relative ${styles.videoList}`}>\n <Component\n video={props.item}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getPreviewQuestionsAppLink={props.appLinks.getPreviewQuestionsAppLink}\n presentationAudiences={props.audiences}\n analyticsData= {{\n search: {\n query: props.queryParams.query,\n score: props.item._score,\n maxScore: props.item._maxScore,\n featured: props.item._featured\n },\n pagePositionIndex: props.pagePositionIndex\n }}\n hasPermissions={props.hasPermissions}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n );\n}","import React from 'react';\nimport { Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { Classification, Company, CurrentUser, InteractiveMetadata, Playlist, Presentation, PresentationAudience, Series, Video } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { SearchResultObjectTypes, SearchResults, SearchResultsObject } from '../../interfaces';\nimport { GetCollectionActions } from '../collection-thumbnail/CollectionThumbnail';\n\nimport { CompanyResult } from './components/CompanyResult';\nimport { ExchangeVideoGroup } from './components/exchange-video-group/ExchangeVideoGroup';\nimport { FeaturedVideoResult } from './components/FeaturedVideoResult';\nimport { LargePlaylistResult } from './components/LargePlaylistResults';\nimport { LargeSeriesResult } from './components/LargeSeriesResult';\nimport { BaseMixedSearchResultItemProps } from './components/MixedSearchResultItemProps';\nimport { SmallPlaylistResult } from './components/SmallPlaylistResult';\nimport { SmallSeriesResult } from './components/SmallSeriesResults';\nimport { SubjectResult } from './components/SubjectResult';\nimport { VideoResult } from './components/VideoResult';\n\nconst namespace = 'shared.mixedSearchResults';\n\nconst TOPIC_DISPLAY_LIMIT = 8;\n\nexport interface MixedSearchResultAppLinks {\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n getSeriesAppLink: (series: Series) => Core.AppLink;\n getCompanyAppLink: (company: Company) => Core.AppLink;\n getCompanyAppLinkOptions?: (company: Company) => Core.AppLinkOptions;\n getClassificationAppLink: (classification: Classification) => Core.AppLink;\n getClassificationAppLinkOptions?: (classification: Classification) => Core.AppLinkOptions;\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n getPreviewQuestionsAppLink: (interactive: InteractiveMetadata) => Core.AppLink;\n getCollectionActions: GetCollectionActions;\n searchSettings?: Core.AppLink;\n}\n\ninterface MixedSearchResultsProps {\n queryParams: HashObject;\n results: SearchResultObjectTypes[];\n topics?: SearchResults;\n companies?: SearchResults;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n availablePresentations: Presentation[]\n showActions: boolean;\n hasPermissions: HasPermissionsFunc;\n appLinks: MixedSearchResultAppLinks;\n commonVideoProps: CommonVideoProps;\n}\n\nexport const MixedSearchResults = React.memo(function(props: MixedSearchResultsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const useSmallComponent = breakpoints.xs || breakpoints.sm;\n\n if (!props.results?.length && !props.topics?.totalResults && !props.companies?.totalResults)\n return <></>;\n\n const companiesAndTopics = [\n ...props.companies?.results ?? [],\n ...props.topics?.results ?? []\n ];\n\n const childProps: BaseMixedSearchResultItemProps = {\n useLargeStyle: companiesAndTopics.length < 4,\n ...props\n };\n\n return (\n <div className='position-relative'>\n <p role='status' className='visually-hidden'><Text namespace={namespace} phrase='ariaSearch' /></p>\n\n {!!companiesAndTopics.length && (\n <Row as='ul' className='list-unstyled g-0 pb-3 mx-n1'>\n {companiesAndTopics.slice(0, TOPIC_DISPLAY_LIMIT).map((c, itemIndex) => {\n switch (c.type.toLowerCase()) {\n case 'company':\n return (\n <CompanyResult\n key={itemIndex}\n item={c as SearchResultsObject<Company>}\n itemIndex={itemIndex}\n {...childProps}\n />\n );\n case 'subject': {\n return (\n <SubjectResult\n key={itemIndex}\n item={c as SearchResultsObject<Classification>}\n itemIndex={itemIndex}\n {...childProps}\n />\n );\n }\n }\n })}\n </Row>\n )}\n\n {props.results?.map((result, index) => {\n const pagePositionIndex = companiesAndTopics.length ? index + 1 : index;\n\n if ('isExchangeVideoGroup' in result && result.isExchangeVideoGroup) {\n return (\n <ExchangeVideoGroup\n key={index}\n item={result}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n \n\n switch (result.type?.toLowerCase()) {\n case 'interactive':\n case 'clip':\n case 'video': {\n if (index === 0 && result._featured && VideoHelper.isVideo(result)) {\n return (\n <FeaturedVideoResult\n key={index}\n item={result as SearchResultsObject<Video>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <VideoResult\n key={index}\n item={result as SearchResultsObject<Video>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n case 'playlist': {\n if (useSmallComponent) {\n return (\n <SmallPlaylistResult\n key={index}\n item={result as SearchResultsObject<Playlist>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <LargePlaylistResult\n key={index}\n item={result as SearchResultsObject<Playlist>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n case 'series': {\n const series = result as Series;\n\n if (useSmallComponent || !series.tallPoster?.id) {\n return (\n <SmallSeriesResult\n key={index}\n item={result as SearchResultsObject<Series>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n\n return (\n <LargeSeriesResult\n key={index}\n item={result as SearchResultsObject<Series>}\n pagePositionIndex={pagePositionIndex}\n {...childProps}\n />\n );\n }\n }\n })}\n </div>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.searchSubstitute';\n\ninterface SearchSubstituteProps {\n substitute: string;\n queryParams: HashObject;\n getAppLink: (query: string, queryParams: HashObject) => Core.AppLink\n}\n\nexport function SearchSubstitute(props: SearchSubstituteProps): JSX.Element {\n if (!props.substitute)\n return <></>;\n\n return (\n <div className='pb-3'>\n <p className='mb-1 h6'>\n <Text namespace={namespace} phrase='showingFor' /> \n <AppLink\n className='info-link'\n appLink={props.getAppLink(props.substitute, props.queryParams)}\n appLinkOptions={{ replace: true }}\n >\n {props.substitute}\n </AppLink>\n </p>\n <p className='mb-0 h6 fw-normal'>\n <Text namespace={namespace} phrase='searchInsteadFor' />\n <AppLink\n className='info-link'\n appLink={props.getAppLink(props.queryParams.query, { ...props.queryParams, allowSubstitute: 'false' })}\n >\n {props.queryParams.query}\n </AppLink>\n <Text namespace={namespace} phrase='endOriginal' />\n </p>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'search.searchSuggestions';\n\ninterface SearchSuggestionsProps {\n suggestions: string[];\n queryParams: HashObject;\n getAppLink: (query: string, queryParams: HashObject) => Core.AppLink\n}\n\nSearchSuggestions.defaultProps = {\n suggestions: [],\n queryParams: {}\n};\n\nexport function SearchSuggestions(props: SearchSuggestionsProps): JSX.Element {\n if (!props.suggestions?.length)\n return <></>;\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <Text namespace={namespace} phrase='didYouMean' />\n \n\n {props.suggestions.map((suggestion, index) => (\n <React.Fragment key={`${suggestion}:${index}`}>\n {index !== 0 && <span className='mx-1'>•</span>}\n\n <AppLink\n className='info-link'\n appLink={props.getAppLink(suggestion, props.queryParams)}\n appLinkOptions={{ replace: true }}\n >\n {suggestion}\n </AppLink>\n </React.Fragment>\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper, Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Library, MasterNestedObject, Playlist, Rating, Series, Video } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nexport const ExchangeSearchUtils = {\n useOnFilterChange(fetchResults: (cursor?: string) => void, queryParams: HashObject): void {\n const params = { ...queryParams };\n delete params.query;\n \n const sortedValues = Object.keys(params).map(filterName => params[filterName]).sort((a, b) => a - b);\n \n React.useEffect(() => {\n fetchResults();\n }, [sortedValues.join(':')]);\n },\n\n getCollectionActions(\n collection: Series | Playlist,\n showActions: boolean,\n collectionType: 'series' | 'playlist',\n baseAnalyticsOptions: AnalyticsOptions\n ): ActionOptions[] {\n collection;\n collectionType;\n baseAnalyticsOptions;\n\n if (!showActions)\n return [];\n\n return [];\n },\n\n getSeriesAppLink(series: Series): Core.AppLink {\n if (!series?.id)\n return null;\n\n return {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.SERIES,\n args: [ series.id, TextHelper.slugify(series.name) ]\n };\n },\n\n getVideoAppLink(video: Video): Core.AppLink {\n if (!video?.id)\n return null;\n\n return {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.PREVIEW,\n args: [ video.id, TextHelper.slugify(video.name) ]\n };\n },\n\n getAppliedIndices(queryParams: HashObject = {}): SearchIndices[] {\n const { type: indices } = queryParams;\n\n if (indices) {\n if (!Array.isArray(indices))\n return [indices];\n\n if (indices.length)\n return indices;\n }\n\n return ['video'];\n },\n\n getNestedCategoryIds(topLevelCategoryIds: string | string[], categories: MasterNestedObject<Library>[]) {\n const searchNestedCategories = (categoryId: string) => {\n const categoryIds: string[] = [];\n const category = categories.find(category => +category.data.id === +categoryId);\n\n if (!category?.children.length)\n return [categoryId];\n \n const searchCategoryIds = (category: MasterNestedObject<Library>) => {\n if (!category) return;\n \n if (category.data) {\n categoryIds.push(category.data.id);\n }\n \n if (category.children.length) {\n category.children.forEach(child => {\n searchCategoryIds(child);\n });\n }\n };\n \n searchCategoryIds(category);\n \n return categoryIds;\n };\n\n if (!Array.isArray(topLevelCategoryIds)) {\n return searchNestedCategories(topLevelCategoryIds);\n }\n \n const nestedCategoryIds = [...topLevelCategoryIds].map(categoryId => searchNestedCategories(categoryId));\n\n return ArrayHelper.flatten(nestedCategoryIds);\n },\n\n buildBackendFilterParams(\n libraryId: string,\n queryParams: HashObject,\n ratings: Rating[] = [],\n categories: MasterNestedObject<Library>[]\n ): HashObject {\n const topLevelCategoryIds = queryParams?.categoryId;\n const nestedCategories = topLevelCategoryIds && this.getNestedCategoryIds(topLevelCategoryIds, categories);\n\n const filters = FilterHelper.buildBackendFilterParams(\n { ...queryParams, categoryId: nestedCategories },\n ratings,\n null,\n false,\n []\n );\n\n // TODO: Filtering the search results means that we can't search for series, clips and interactives\n filters[`${FilterConstants.FILTER_PARAM_PREFIX}library`] = libraryId;\n\n return filters;\n },\n\n getBackendFilters(options: {\n queryParams: HashObject;\n ratings: Flight.Response<Rating[]>;\n exchange: Flight.Response<Library>;\n categories: Flight.Response<MasterNestedObject<Library>[]>;\n hasDataLoaded: boolean;\n }) {\n if (!options.hasDataLoaded)\n return null;\n\n const { queryParams, ratings, exchange, categories } = options;\n \n const backendFilters = ExchangeSearchUtils.buildBackendFilterParams(\n exchange.data.id,\n queryParams,\n ratings.data,\n categories.data\n );\n \n const appliedIndices = ExchangeSearchUtils.getAppliedIndices(queryParams);\n \n return {\n queryParams,\n backendFilters,\n appliedIndices\n };\n },\n\n getFilters(\n options: {\n categories: Flight.Response<MasterNestedObject<Library>[]>;\n ratings: Flight.Response<Rating[]>;\n hasDataLoaded: boolean;\n },\n tagsAndClassifications: Flight.Response<string[]>\n ) {\n if (!options.hasDataLoaded || !tagsAndClassifications.hasCompleted)\n return null;\n\n const { categories, ratings } = options;\n\n const mainFilters = [\n Filters.Categories(categories.data),\n Filters.Rating(ratings.data, null),\n Filters.HasResources(),\n Filters.HasSubtitles(),\n Filters.TagOrClassification(tagsAndClassifications.data)\n ];\n \n const moreFilters = FilterHelper.getMoreFilters([\n Filters.ProductionYear(),\n Filters.IsHD(),\n Filters.Duration()\n ]);\n\n return {\n mainFilters,\n moreFilters\n };\n },\n\n getAppLink(query: string, queryParams: HashObject): Core.AppLink {\n return {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.SEARCH,\n params: {\n ...queryParams,\n query\n }\n };\n }\n};","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'exchange.searchResultsEmptyState';\n\ninterface ExchangeSearchResultsStateProps {\n query?: string;\n}\n\nexport function ExchangeSearchResultsState(props: ExchangeSearchResultsStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.SEARCH} />\n\n <EmptyState.Heading>\n {props.query\n ? <Text phrase='headingWithQuery' options={{ query: props.query }} />\n : <Text phrase='headingWithoutQuery' />\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n <AppLink\n className='info-link'\n appLink={{ application: AppChannels.EXCHANGE, action: Actions.Exchange.INDEX }}\n >\n <Text phrase='topicsAppLink' />\n </AppLink>\n </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Library, MasterNestedObject, Rating } from 'libs/shared/interfaces';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\n\nexport function useFetchSearchData(queryParams: HashObject) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const exchange = Flight.useBasicFetch<Library>(ExchangeRequests.exchange());\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n const categories = Flight.useBasicFetch<MasterNestedObject<Library>[]>(ExchangeRequests.categories());\n\n const hasDataLoaded = (\n currentUser.hasCompleted &&\n exchange.hasCompleted &&\n ratings.hasCompleted &&\n categories.hasCompleted\n );\n\n return {\n queryParams,\n currentUser,\n exchange,\n ratings,\n categories,\n hasDataLoaded\n };\n}","import { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SearchResultObjectTypes, SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\n\nexport const namespace = 'exchange.searchResultsView2';\n\ninterface UseGetSearchResultsOptions {\n queryParams: HashObject;\n appliedIndices: SearchIndices[];\n backendFilters: HashObject;\n hasDataLoaded: boolean;\n}\nexport function useGetSearchResults(options: UseGetSearchResultsOptions) {\n const { queryParams, appliedIndices, backendFilters } = options;\n\n const alerts = useAlerts();\n const fetch = Flight.useGetFetch();\n\n const searchResultsResponse = Flight.useGetResponse<SearchResults>(getSearchRequest()?.key);\n\n function getSearchRequest(cursor?: string) {\n return options.hasDataLoaded &&\n ExchangeRequests.search(queryParams.query, appliedIndices, backendFilters, cursor);\n }\n\n function fetchNext(cursor?: string) {\n fetch(getSearchRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const searchResults = useInfiniteList<SearchResultObjectTypes, SearchResults>(\n getSearchRequest,\n fetchNext,\n onError,\n data => data.results\n );\n\n return {\n ...searchResults,\n fetchNext,\n substituteQuery: searchResultsResponse.data?.substituteQuery,\n suggestions: searchResultsResponse.data?.suggestions\n };\n}\n","import { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { TagType } from 'libs/shared/enums/TagType';\n\n/**\n * OGQL used for search V5 endpoint\n */\nexport const SearchOGQL = {\n video: SharedWithStatements.VIDEO_COLLECTION,\n series: 'rating,tallPoster',\n playlist:\n 'videos[count(),thumbnail]{limit:1},interactives[count(),_thumbnail]{limit:1},' +\n 'clips[count(),_thumbnail]{limit:1}',\n classification: `cover,thumbnail,tags{tagtype:${TagType.Curation}}`,\n clip: SharedWithStatements.CLIP_COLLECTION,\n interactive: SharedWithStatements.INTERACTIVE_COLLECTION,\n company: 'logo',\n category: 'libraries[_logo],thumbnail'\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FilterConstants } from 'libs/shared/apps/search/constants/FilterConstants';\nimport { SearchOGQL } from 'libs/shared/apps/search/constants/SearchOGQL';\nimport { SearchIndices, SearchResultObjectTypes, SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport type { WidgetFilter } from 'libs/shared/apps/search/interfaces/WidgetSearchResults';\nimport { SharedSearchHelper } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport type { Playlist, Series } from 'libs/shared/interfaces';\n\nfunction formatSearchResponse(response: SearchResults<SearchResultObjectTypes>) {\n /**\n * Until playlists and series are regionalised, search will always return every series/playlist that exists\n * even if the current user doesn't have access to the content inside (which will happen for example when playlists/series)\n * contain all UK library content but is being searched for by an AU user.\n *\n * For some search queries, this may result in search showing a bunch of \"empty\" playlists/series, which sucks.\n * This will filter all empty collections out and decrement the `totalResults` to avoid this and make search a better\n * experience.\n *\n * Ideally this will be removed one day when this regionalisation is no longer an issue.\n */\n let totalResults = response.totalResults;\n\n const results = response?.results?.filter(result => {\n if (result._index !== 'series' && result._index !== 'playlist')\n return true;\n\n if (result._index === 'playlist') {\n const playlist = result as SearchResultsObject<Playlist>;\n\n if (playlist.clips?.data?.length ||\n playlist.interactives?.data?.length ||\n playlist.videos?.data?.length)\n return true;\n\n totalResults--;\n return false;\n }\n\n if ((result as SearchResultsObject<Series>).videos?.data?.length === 0) {\n totalResults--;\n return false;\n }\n\n return true;\n }) ?? [];\n\n response.results = results;\n response.totalResults = totalResults;\n\n // The first search result will always have the highest score value.\n // We store it so that we can access it for subsequent results pages\n const resultMaxScore = results[0]?._score;\n\n return {\n ...response,\n results: SharedSearchHelper.mapMaxScoreToSearchResults(results, resultMaxScore)\n };\n}\n\nfunction stringifyObject(obj: HashObject): string {\n return Object.entries(obj).reduce((prev, [ , value ]) => {\n let stringifiedValue = value;\n\n if (typeof value === 'object') {\n stringifiedValue = stringifyObject(value);\n } else if ([ 'number', 'boolean', 'string' ].includes(typeof value)) {\n stringifiedValue = value.toString();\n }\n\n if (!prev.length)\n return stringifiedValue;\n\n return `${prev},${stringifiedValue}`;\n }, '');\n}\n\n\nexport const SharedSearchRequests = {\n searchDashboard(\n query: string,\n filters: HashObject,\n widgets: WidgetFilter[] = []\n ): Flight.PublicRequest {\n const widgetData = widgets.sort((a, b) => a.id.localeCompare(b.id)).map(w => [ w.id, w?.cursor ]);\n const filterData = stringifyObject(filters);\n \n const key = `search:v5:dashboard:${query}:${widgetData}:${filterData}`;\n \n const {\n [`${FilterConstants.FILTER_PARAM_PREFIX}indicesFilters`]: indicesFilter,\n isLearner,\n ...genericFilters\n } = filters;\n\n const data = {\n widgets,\n indices: indicesFilter,\n filters: Object.entries(genericFilters)\n .reduce((prev, [ key, value ]) =>\n ({ ...prev, [key.replace('filters.', '')]: value }), {}),\n query,\n includeAllIndices: false,\n isLearner: !!isLearner\n };\n\n return {\n url: '{gateway}/v5/search/widgets',\n publicUrl: '/api/search/v5/widgets',\n type: HttpVerbs.POST,\n data,\n key\n };\n },\n\n searchDashboardWidget(\n widgetTypeId: WidgetTypeId,\n query: string,\n filters: HashObject,\n widgets: WidgetFilter[] = []\n ): Flight.PublicRequest {\n const widgetData = widgets.sort((a, b) => a.id.localeCompare(b.id)).map(w => [ w.id, w?.cursor ]);\n const filterData = stringifyObject(filters);\n \n const key = `search:v5:dashboard:${widgetTypeId}:widget:${query}:${widgetData}:${filterData}`;\n \n const {\n [`${FilterConstants.FILTER_PARAM_PREFIX}indicesFilters`]: indicesFilter,\n isLearner,\n excludeVideoIds,\n ...genericFilters\n } = filters;\n\n const data = {\n widgets,\n indices: indicesFilter,\n filters: Object.entries(genericFilters)\n .reduce((prev, [ key, value ]) =>\n ({ ...prev, [key.replace('filters.', '')]: value }), {}),\n query,\n includeAllIndices: false,\n isLearner: !!isLearner,\n ogql: SearchOGQL,\n excludeVideoIds\n };\n\n return {\n url: `{gateway}/v5/search/widgets/${widgetTypeId}`,\n publicUrl: `/api/search/v5/widgets/${widgetTypeId}`,\n type: HttpVerbs.POST,\n data,\n key\n };\n },\n \n searchV5(\n query: string,\n filters: HashObject,\n widgets: WidgetFilter[] = []\n ): Flight.PublicRequest {\n const widgetData = widgets.sort((a, b) => a.id.localeCompare(b.id)).map(w => [ w.id, w?.cursor ]);\n const filterData = stringifyObject(filters);\n \n const key = `search:v5:${query}:${widgetData}:${filterData}`;\n \n const {\n [`${FilterConstants.FILTER_PARAM_PREFIX}indicesFilters`]: indicesFilter,\n isLearner,\n ...genericFilters\n } = filters;\n\n const data = {\n widgets,\n indices: indicesFilter,\n filters: Object.entries(genericFilters)\n .reduce((prev, [ key, value ]) =>\n ({ ...prev, [key.replace('filters.', '')]: value }), {}),\n query,\n includeAllIndices: false,\n isLearner: !!isLearner,\n ogql: SearchOGQL\n };\n\n return {\n url: '{gateway}/v5/search',\n publicUrl: '/api/search/v5',\n type: HttpVerbs.POST,\n data,\n key\n };\n },\n \n searchV4(options: {\n query: string;\n indices: SearchIndices[];\n filters: HashObject;\n sorts?: HashObject;\n allowSubstitute: boolean;\n cursor?: string;\n limit?: number;\n }): Flight.PublicRequest {\n const { query, indices, filters = {}, sorts = {}, allowSubstitute = true, cursor, limit } = options;\n\n let key = `search:v4:${query}:${allowSubstitute}:${indices}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => {\n const filter = filters[filterName];\n return Array.isArray(filter) ? filter.join(';') : filter;\n }).join(';');\n\n const {\n [`${FilterConstants.FILTER_PARAM_PREFIX}excludeLibraryExclusive`]: excludeLibraryExclusive,\n isLearner,\n ...genericFilters\n } = filters;\n\n const indexObjects = indices.map(index => {\n if (index !== 'video' || !excludeLibraryExclusive)\n return { index };\n\n return { index, filters: { excludeLibraryExclusive } };\n });\n\n const data = {\n searchType: 'content',\n indices: indexObjects,\n filters: Object.entries(genericFilters)\n .reduce((prev, [ key, value ]) =>\n ({ ...prev, [key.replace('filters.', '')]: value }), {}),\n sorts,\n query,\n allowSubstitute,\n cursor: cursor ?? undefined,\n isLearner: !!isLearner,\n limit\n };\n\n return {\n url: '{gateway}/v4/search',\n publicUrl: '/api/search/v4',\n type: HttpVerbs.POST,\n data,\n key,\n formatData: formatSearchResponse\n };\n },\n\n search(options: {\n query: string;\n indices: SearchIndices[];\n filters?: HashObject;\n allowSubstitute?: boolean;\n cursor?: string;\n limit?: number;\n success?: (results: SearchResults) => void;\n error?: (xhr: Xhr) => void;\n }): Flight.PublicRequest {\n const { query, indices, filters, allowSubstitute, cursor, limit, success, error } = options;\n\n let key = `search:${query}:${allowSubstitute}:${indices}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => {\n const filter = filters[filterName];\n return Array.isArray(filter) ? filter.join(';') : filter;\n }).join(';');\n\n const params = Object.assign({}, {\n index: indices,\n cursor: cursor ?? undefined,\n query,\n allowSubstitute,\n limit,\n ...filters\n });\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search', params),\n publicUrl: UrlHelper.urlBuilder('/api/search', params),\n key,\n formatData: formatSearchResponse,\n success,\n error\n };\n },\n\n tagsAndClassifications(\n query: string,\n indices: SearchIndices[],\n filters: HashObject = {},\n cursor?: string,\n success?: (results: string[]) => void,\n error?: () => void\n ): Flight.PublicRequest {\n const params = {\n index: indices,\n cursor,\n query,\n ...filters\n };\n\n let key = `filter:options:${query}:${indices.join(':')}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => {\n const filter = filters[filterName];\n return Array.isArray(filter) ? filter.join(';') : filter;\n }).join(';');\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search/tags-and-classifications', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/tags-and-classifications', params),\n key,\n success,\n error,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedSearchRequests } from 'libs/shared/apps/search/flight-requests/SharedSearchRequests';\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\n\nexport interface UseGetTagsAndClassificationsOptions {\n queryParams: HashObject;\n appliedIndices: SearchIndices[];\n backendFilters: HashObject;\n}\n\nexport function useGetTagsAndClassifications(options: UseGetTagsAndClassificationsOptions) {\n return Flight.useBasicFetch<string[]>(options && SharedSearchRequests.tagsAndClassifications(\n options.queryParams.query,\n options.appliedIndices,\n options.backendFilters\n ));\n}\n","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { MixedSearchResults } from 'libs/shared/apps/search/components/mixed-search-results/MixedSearchResults';\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { SearchSubstitute } from 'libs/shared/apps/search/components/search-substitute/SearchSubstitute';\nimport { SearchSuggestions } from 'libs/shared/apps/search/components/search-suggestions/SearchSuggestions';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { ExchangeSearchBar } from 'apps/exchange/components/exchange-search-bar/ExchangeSearchBar';\nimport { useCommonVideoProps } from 'apps/exchange/hooks/useCommonVideoProps';\nimport { useGetExchangeActions } from 'apps/exchange/hooks/useGetExchangeActions';\nimport { ExchangeSearchUtils } from 'apps/exchange/views/exchange-search-results/ExchangeSearchUtils';\n\nimport { ExchangeSearchResultsState } from './empty-state/ExchangeSearchEmptyState';\nimport { useFetchSearchData } from './useFetchSearchData';\nimport { useGetSearchResults } from './useGetSearchResults';\nimport { useGetTagsAndClassifications } from './useGetTagsAndClassifications';\n\ninterface ExchangeSearchResultsViewProps {\n queryParams: HashObject;\n}\n\n\nexport function ExchangeSearchResultsView(props: ExchangeSearchResultsViewProps): JSX.Element {\n const { queryParams = {} } = props;\n\n const videoActions = useGetExchangeActions('video-list');\n\n const searchData = useFetchSearchData(queryParams);\n\n const { commonVideoProps } = useCommonVideoProps();\n\n const searchFilters = ExchangeSearchUtils.getBackendFilters(searchData);\n\n const tagsAndClassifications = useGetTagsAndClassifications(searchFilters);\n const searchResults = useGetSearchResults({ ...searchFilters, ...searchData });\n\n const filters = ExchangeSearchUtils.getFilters(searchData, tagsAndClassifications);\n\n /**\n * Custom hooks\n */\n useSetPageMetadata({ title: queryParams.query ?? '' });\n\n\n /**\n * Do we have the data we need for the entire view to render\n */\n const hasLoaded = (\n searchData.hasDataLoaded && filters\n );\n\n /**\n * Do we have the data we need to render our results\n */\n const hasSearchCompleted = (\n searchResults.hasFirstPageCompleted &&\n // Topic and Company requests won't exist if they aren't being fetched\n tagsAndClassifications.hasCompleted &&\n !!filters\n );\n\n /**\n * Do we actually have results\n */\n const hasResults = (\n searchResults.items?.length\n );\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <>\n <ExchangeSearchBar query={queryParams.query} />\n\n <SearchSubstitute\n substitute={searchResults.substituteQuery}\n queryParams={queryParams}\n getAppLink={ExchangeSearchUtils.getAppLink}\n />\n\n {!searchResults.substituteQuery && (\n <SearchSuggestions\n suggestions={searchResults?.suggestions}\n queryParams={queryParams}\n getAppLink={ExchangeSearchUtils.getAppLink}\n />\n )}\n\n <SearchFilters\n queryParams={queryParams}\n mainFilters={filters?.mainFilters}\n moreFilters={filters?.moreFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.EXCHANGE, action: Actions.Exchange.SEARCH }}\n isFetchingOptions={tagsAndClassifications.isFetching}\n />\n\n {hasSearchCompleted ? (\n <section>\n {hasResults\n ? (\n <VideoActionsContext.Provider value={videoActions}>\n {/* // TODO: Update the prop interfaces for mixed search results to be strongly typed for each use case */}\n <MixedSearchResults\n queryParams={queryParams.query}\n results={searchResults.items}\n audiences={null}\n currentUser={searchData.currentUser.data}\n availablePresentations={null}\n showActions\n companies={null}\n hasPermissions={() => false}\n appLinks={{\n getCollectionActions: ExchangeSearchUtils.getCollectionActions,\n getSeriesAppLink: ExchangeSearchUtils.getSeriesAppLink,\n getVideoAppLink: ExchangeSearchUtils.getVideoAppLink,\n getClassificationAppLink: () => null,\n getClassificationAppLinkOptions: () => null,\n getPlaylistAppLink: () => null,\n getCompanyAppLink: () => null,\n getPreviewQuestionsAppLink: () => null\n }}\n commonVideoProps={commonVideoProps}\n />\n </VideoActionsContext.Provider>\n ) : (\n <ExchangeSearchResultsState query={queryParams.query} />\n )\n }\n {searchResults.hasMore && (\n <InfiniteScrollFooter\n isFetching={searchResults.isFetching}\n fetchNext={searchResults.fetchNext}\n nextCursor={searchResults.nextCursor}\n />\n )}\n </section>\n ) : (\n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n )}\n </>\n );\n}"],"names":["namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","styles","textClassName","jsxs","jsx","Text","NormalNamePanel","subtitle","newVideosCount","CoverPillWidgetContent","props","coverUrl","ImageHelper","ImageSize","classification","MasterTypeHelper","childProps","_a","coverStyle","fallbackCoverBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","RandomHelper","IconCircle","CheckSvg","SvgContainerSize","classNames","ImageFallback","ImageFallbackType","CoverPillWidgetContentWrapper","appLink","AppLink","CompanyWidgetItem","analyticsData","_b","analyticsOptions","LocationContext","UserAction","EntityType","ClickDescriptor","_c","_d","CompanyResult","Col","EXCHANGE_RESULT_DISPLAY_LIMIT","ExchangeVideoGroup","limit","getContainerClassName","currentAppLink","Core.AppLinkHelper","currentParams","currentSource","searchAppLink","SourceFilterOptions","SearchSourceDescriptor","v","i","VideoItem","HeroVideo","videoAudiences","mergedAudience","useMergeAudiences","AnalyticsHelper","VideoHelper","containerRef","React","Row","VideoThumbnail","ThumbnailTextPosition","VideoSubText","_e","VideoItemTitle","_f","VideoItemActions","BadgeListContainer","Badge","BadgeType","AudienceLabel","VideoItemGuidance","Fragment","FeaturedVideoResult","opts","EN_US","en_US","diff","idx","unit","ZH_CN","zh_CN","Locales","register","locale","func","getLocale","SEC_ARRAY","toDate","input","formatDiff","localeFunc","agoIn","totalSec","diffSec","date","relativeDate","relDate","format","sec","getCount","playlist","videos","interactives","clips","PlaylistCount","count","ClickViewAvatar","ClickViewPlayLogo","PlaylistOwnerAvatar","_liteOwner","url","Avatar","UserHelper","PlaylistItem","imageUrl","ResizeType","audiences","className","showImage","getTitle","LanguageService","DateHelper","BaseImage","useGetMaxVideos","breakpoints","useBreakpoints","PlaylistWithVideos","maxVideos","playlistAnalyticsOption","playlistAnalyticsData","video","videoAnalyticsData","LargePlaylistResult","SeriesTallPosterHoverOverlay","SeriesHelper","SeriesTallPoster","hoverRef","isHovering","useHoverIntent","displayAudience","ImageType","SeriesWithVideos","seriesAnalyticsOption","seriesAnalyticsData","LargeSeriesResult","CollectionVideoList","analyticsProps","hasSeasonEpisode","SeasonEpisode","CollectionThumbnail","isSmall","VideoListHelper","hasVideos","firstVideoWithThumbnail","getAnalyticsData","data","isSeries","Mask","ActionsComponent","SmallPlaylistResult","MaskType","SmallSeriesResult","ClassificationStatus","usePresentationName","presentationId","availablePresentations","TopicsConstants","p","SubjectWidgetItem","isComingSoon","presentationName","_h","_g","_i","_j","_l","_k","Memoized","React.memo","SubjectResult","VideoResult","getItemComponent","ClipItem","InteractiveItem","Component","TOPIC_DISPLAY_LIMIT","MixedSearchResults","useSmallComponent","companiesAndTopics","c","itemIndex","result","index","pagePositionIndex","SearchSubstitute","SearchSuggestions","suggestion","ExchangeSearchUtils","fetchResults","queryParams","params","sortedValues","filterName","a","b","collection","showActions","collectionType","baseAnalyticsOptions","series","AppChannels","Actions","TextHelper","indices","topLevelCategoryIds","categories","searchNestedCategories","categoryId","categoryIds","category","searchCategoryIds","child","nestedCategoryIds","ArrayHelper","libraryId","ratings","nestedCategories","filters","FilterHelper","FilterConstants","options","exchange","backendFilters","appliedIndices","tagsAndClassifications","mainFilters","Filters","moreFilters","query","ExchangeSearchResultsState","LanguageNamespaceContext","EmptyState","ImageUrls","useFetchSearchData","currentUser","Flight.useBasicFetch","UserRequests","ExchangeRequests","RatingRequests","hasDataLoaded","useGetSearchResults","alerts","useAlerts","fetch","Flight.useGetFetch","searchResultsResponse","Flight.useGetResponse","getSearchRequest","cursor","fetchNext","onError","pageNumber","httpStatus","handleHttpError","useInfiniteList","SearchOGQL","SharedWithStatements","TagType","formatSearchResponse","response","totalResults","results","resultMaxScore","SharedSearchHelper","stringifyObject","obj","prev","value","stringifiedValue","SharedSearchRequests","widgets","widgetData","w","filterData","key","indicesFilter","isLearner","genericFilters","HttpVerbs","widgetTypeId","excludeVideoIds","sorts","allowSubstitute","filter","excludeLibraryExclusive","success","error","UrlHelper","useGetTagsAndClassifications","ExchangeSearchResultsView","videoActions","useGetExchangeActions","searchData","commonVideoProps","useCommonVideoProps","searchFilters","searchResults","useSetPageMetadata","hasLoaded","hasSearchCompleted","hasResults","ExchangeSearchBar","SearchFilters","VideoActionsContext","InfiniteScrollFooter","PartialVideoList"],"mappings":"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","x_google_ignoreList":[6,7,8,9,10,11]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{U as a,am as C,S as l,H as p,M as v,m as T}from"./app-BOVAF25L.js";import{C as y}from"./BlDVEZsX.chunk.js";import{P as $}from"./pkzD5BEm.chunk.js";var m=(e=>(e.Series="series",e.Playlist="playlist",e.Widget="widget",e.Folder="category",e.CategoryTree="categoryTree",e))(m||{});const d={sharedVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{shareId:i,query:l.VIDEO}),publicVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{query:"thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}",permissionFilterOption:$.StripMetadata,shareId:i}),getVideosById:e=>a.urlBuilder("{gateway}/v1/objects",{"query.video":l.VIDEO_COLLECTION,"query.clip":l.CLIP_COLLECTION,"query.interactive":l.INTERACTIVE_COLLECTION,id:e}),relatedVideos:e=>{const{videoId:i,context:t,collectionId:r,moviesAndTv:s,limit:n}=e,o={videoId:i,limit:n,query:l.VIDEO_COLLECTION};return t&&(t===m.Widget?o["context.widgetId"]=r:(o["context.collectionType"]=t,o["context.collectionId"]=r)),s&&(o["context.moviesAndTv"]=!0),a.urlBuilder("{gateway}/v1/suggestions/related-videos",o)}},f={video(e,i){return{url:a.urlBuilder(`{gateway}/v1/objects/${e}`,{query:l.VIDEO,permissionFilterOption:i}),publicUrl:a.urlBuilder(`/api/objects/${e}`,{query:T.VIDEO,permissionFilterOption:i}),key:`videos:${e}:${i}`}},publicVideo(e,i,t,r){return{url:d.publicVideo(e,i),key:`videos:${e}:public:${i}`,bootstrapName:`shared:object:${e}`,success:t,error:r}},sharedVideo(e,i,t,r){return{url:d.sharedVideo(e,i),key:`shared:video:${e}`,success:t,error:r}},myVideos(e,i){const{VIDEO_COLLECTION:t,CLIP_COLLECTION:r,INTERACTIVE:s}=l,n=`videos[${t}]{libraries.typeid:${v.WorkspaceCollection}}`,o=`clips[${r}]`,u=`interactives[${s}]{status:[${y.Published},${y.Draft}]}`,c={query:`(${n}|${o}|${u}){orderbydesc:id}`,permissionFilterOption:$.StripMetadata};return i&&(c.cursor=i),{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,c),key:`my:videos:${i}`}},videos(e,i){return{url:d.getVideosById(e),key:`videos:by:id:${e.join(",")}`,success:i}},watchHistoryVideos(e,i){return{url:d.getVideosById(e),key:`watch:history:videos:by:id:${e.join(",")}`,success:i}},updateVideo(e,i,t,r,s){return{key:`update:video:${e}`,url:`{gateway}/v1/objects/${e}`,type:p.PUT,data:i,success:t,error:r,always:s}},videoRatings(e,i){const t=e.map(r=>`id=${r}`);if(t.length)return{url:`/api/domain/v2/objects?query=rating&${t.join("&")}`,key:`video:ratings:by:id:${e.join(",")}`,normalizeOptions:{namespace:i}}},videoMixinAssocs(e,i){if(e.map(r=>`id=${r}`).length)return{url:a.urlBuilder("{gateway}/v1/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),publicUrl:a.urlBuilder("/api/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),key:`video:mixin:assocs:${e.join(",")}`,normalizeOptions:{namespace:i}}},getRestrictions(e){const i=e.slice().sort();return{url:`/api/domain/v1/restrictedobjects?objectTypeId=${v.Video}${i.map(t=>`&objectId=${t}`).join("")}`,key:`restrictions:${i.join(",")}`,normalizeOptions:{namespace:"domain",idAttribute:"objectId"}}},delete(e,i,t){return{url:`{gateway}/v1/objects/${e}`,key:`delete:video:${e}`,type:p.DELETE,success:i,error:t,invalidationKeys:["videos","search"]}},deleteBulk(e,i,t,r,s){const n=e.map(u=>`videoIds=${u}`).join("&"),o=[`categoryId=${t}`,`${n}`].join("&");return{url:`/api/domain/v1/libraries/${i}/videos?${o}`,key:`delete:bulk:video:${e.join(":")}:${i}:${t}`,type:p.DELETE,success:r,error:s,invalidationKeys:["videos","search"]}},relatedVideos(e){const{videoId:i,context:t,collectionId:r,moviesAndTv:s}=e;return{url:d.relatedVideos(e),key:`related:videos:${i}:${t}:${r}:${s}`}},collectionVideos(e,i,t,r,s,n){const o=C.getVideoSortParam(i),{VIDEO_COLLECTION:u,CLIP_COLLECTION:c,INTERACTIVE:b}=l,g=`videos[${u}]`,j=`clips[${c}]`,I=`interactives[${b}]{status:[${y.Published},${y.Draft}]}`,O={query:`(${g}|${j}|${I})${o?`{${o}}`:""}`,permissionFilterOption:$.FilterOut,...t?{cursor:t}:{}},V=["folder","videos",e,t,i].filter(E=>!!E).join(":");return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,O),key:V,success:r,error:s,always:n}},pointsOfInterest(e,i,t,r,s){const n={query:"{limit:100}",cursor:i};return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/pointsofinterest`,n),publicUrl:a.urlBuilder(`/api/objects/${e}/pointsofinterest`,n),key:`pointsofinterest:${e}${i?`:${i}`:""}`,success:t,error:r,always:s}},regionAlternatives(e,i,t,r){return{url:`/api/objects/videos/${e}/region-alternatives`,publicUrl:`/api/objects/videos/${e}/region-alternatives`,key:`video:regionAlternatives:${e}`,normalize:!1,success:i,error:t,always:r}}};export{f as V};
|
|
2
|
-
//# sourceMappingURL=C8QZE6Un.chunk.js.map
|