@clickview/exchange 0.47.1-dev.3 → 0.48.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/1068-exchange-b5eaf8af44.chunk.css +35 -0
  3. package/dist/css/1127-exchange-0eab318199.chunk.css +40 -0
  4. package/dist/css/1226-exchange-217b44f8b4.chunk.css +57 -0
  5. package/dist/css/1861-exchange-f3ff7e4f0d.chunk.css +85 -0
  6. package/dist/css/2494-exchange-02d7a0249c.chunk.css +2 -0
  7. package/dist/css/2538-exchange-4cbfe56ba3.chunk.css +1 -0
  8. package/dist/css/3291-exchange-3a8e198338.chunk.css +11 -0
  9. package/dist/css/3858-exchange-06944bdfa4.chunk.css +1 -0
  10. package/dist/css/4075-exchange-6d2304419c.chunk.css +5 -0
  11. package/dist/css/5027-exchange-2284222ca6.chunk.css +25 -0
  12. package/dist/css/6298-exchange-78ece5c7c5.chunk.css +37 -0
  13. package/dist/css/6332-exchange-2a22bfa655.chunk.css +1 -0
  14. package/dist/css/6356-exchange-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/7095-exchange-4cbfe56ba3.chunk.css +1 -0
  16. package/dist/css/7759-exchange-23bb5dd175.chunk.css +8 -0
  17. package/dist/css/8294-exchange-c797263ac2.chunk.css +1 -0
  18. package/dist/css/8589-exchange-71b6bc18f9.chunk.css +11 -0
  19. package/dist/css/8866-exchange-e80e6c6649.chunk.css +10 -0
  20. package/dist/css/9212-exchange-d71527fc65.chunk.css +1 -0
  21. package/dist/css/9611-exchange-cbf2bb5621.chunk.css +5 -0
  22. package/dist/css/9958-exchange-1387f35e92.chunk.css +14 -0
  23. package/dist/css/lite-exchange-306a09841f.css +15 -0
  24. package/dist/languages/en.json +1 -0
  25. package/dist/scripts/1068-0b00683666-exchange.chunk.js +1 -0
  26. package/dist/scripts/1127-356b23351e-exchange.chunk.js +1 -0
  27. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js +2 -0
  28. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js.LICENSE.txt +1 -0
  29. package/dist/scripts/1226-a4c0643661-exchange.chunk.js +1 -0
  30. package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js +2 -0
  31. package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js.LICENSE.txt +1 -0
  32. package/dist/scripts/2087-bbc1fd721f-exchange.chunk.js +1 -0
  33. package/dist/scripts/2117-5d867c698d-exchange.chunk.js +1 -0
  34. package/dist/scripts/2127-71bf57d74b-exchange.chunk.js +1 -0
  35. package/dist/scripts/2494-98cce57764-exchange.chunk.js +2 -0
  36. package/dist/scripts/2494-98cce57764-exchange.chunk.js.LICENSE.txt +1 -0
  37. package/dist/scripts/2507-1911a9bdb2-exchange.chunk.js +1 -0
  38. package/dist/scripts/2538-997edb9433-exchange.chunk.js +2 -0
  39. package/dist/scripts/2538-997edb9433-exchange.chunk.js.LICENSE.txt +1 -0
  40. package/dist/scripts/2648-4197959943-exchange.chunk.js +1 -0
  41. package/dist/scripts/2877-eee7fe484e-exchange.chunk.js +1 -0
  42. package/dist/scripts/3291-f9ccc2ea28-exchange.chunk.js +1 -0
  43. package/dist/scripts/3858-cd9d38c31c-exchange.chunk.js +1 -0
  44. package/dist/scripts/4075-6624f96fc6-exchange.chunk.js +1 -0
  45. package/dist/scripts/4299-36e5929cc6-exchange.chunk.js +1 -0
  46. package/dist/scripts/4312-7d095d2f30-exchange.chunk.js +1 -0
  47. package/dist/scripts/442-47e3927b49-exchange.chunk.js +1 -0
  48. package/dist/scripts/455-ceeb969c54-exchange.chunk.js +1 -0
  49. package/dist/scripts/4558-057650ef22-exchange.chunk.js +1 -0
  50. package/dist/scripts/5027-357264982b-exchange.chunk.js +1 -0
  51. package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +1 -0
  52. package/dist/scripts/5267-443f3cdd59-exchange.chunk.js +1 -0
  53. package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +1 -0
  54. package/dist/scripts/6156-2bf99d5991-exchange.chunk.js +1 -0
  55. package/dist/scripts/6298-1c7a0ba516-exchange.chunk.js +1 -0
  56. package/dist/scripts/6332-9d2d42e2f9-exchange.chunk.js +1 -0
  57. package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +1 -0
  58. package/dist/scripts/6725-25d1542dec-exchange.chunk.js +1 -0
  59. package/dist/scripts/6831-30fa3e741e-exchange.chunk.js +1 -0
  60. package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js +2 -0
  61. package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js.LICENSE.txt +1 -0
  62. package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +1 -0
  63. package/dist/scripts/7759-2740213eb8-exchange.chunk.js +1 -0
  64. package/dist/scripts/7782-36924dba92-exchange.chunk.js +1 -0
  65. package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +1 -0
  66. package/dist/scripts/851-d89fb94a66-exchange.chunk.js +2 -0
  67. package/dist/scripts/851-d89fb94a66-exchange.chunk.js.LICENSE.txt +1 -0
  68. package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +1 -0
  69. package/dist/scripts/8589-912ab9f055-exchange.chunk.js +1 -0
  70. package/dist/scripts/8619-e5f595a594-exchange.chunk.js +1 -0
  71. package/dist/scripts/8866-0993e6b43a-exchange.chunk.js +1 -0
  72. package/dist/scripts/8937-727d080ed9-exchange.chunk.js +1 -0
  73. package/dist/scripts/9212-e8bde56a84-exchange.chunk.js +1 -0
  74. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +2 -0
  75. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +60 -0
  76. package/dist/scripts/9566-0625fb0cbe-exchange.chunk.js +1 -0
  77. package/dist/scripts/9611-6fe32ccc83-exchange.chunk.js +1 -0
  78. package/dist/scripts/9866-2d10067a4e-exchange.chunk.js +1 -0
  79. package/dist/scripts/9899-2b571c961b-exchange.chunk.js +1 -0
  80. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js +2 -0
  81. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js.LICENSE.txt +1 -0
  82. package/dist/scripts/bundle-be81211eaf.min.js +2 -0
  83. package/dist/scripts/bundle-be81211eaf.min.js.LICENSE.txt +108 -0
  84. package/package.json +4 -7
  85. package/typings/utils/imports.d.ts +1 -1
  86. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  87. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  88. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  89. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  90. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  91. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  92. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  93. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  94. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  95. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  96. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  97. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  98. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  99. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  100. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  101. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  102. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  103. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  104. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  105. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  106. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  107. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  108. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  109. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  110. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  111. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  112. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  113. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  114. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  115. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  116. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  117. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  118. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  119. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  120. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  121. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  122. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  123. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  124. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  125. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  126. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  127. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  128. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  129. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  130. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  131. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  132. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  133. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  134. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  135. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  136. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  137. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  138. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  139. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  140. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  141. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  142. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  143. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  144. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  145. package/dist/css/B57G3PZD.chunk.css +0 -1
  146. package/dist/css/BBV1d-ZI.chunk.css +0 -1
  147. package/dist/css/BDOTXlob.chunk.css +0 -1
  148. package/dist/css/BIeUeS4h.chunk.css +0 -1
  149. package/dist/css/BPdg7JW4.chunk.css +0 -1
  150. package/dist/css/BiRz4h1c.chunk.css +0 -1
  151. package/dist/css/Bt3pBBLn.chunk.css +0 -1
  152. package/dist/css/Bz8F9buU.chunk.css +0 -1
  153. package/dist/css/C2R4QydJ.chunk.css +0 -1
  154. package/dist/css/C7XoyEPr.chunk.css +0 -1
  155. package/dist/css/CAdv9Saa.chunk.css +0 -1
  156. package/dist/css/CC5F5C8O.chunk.css +0 -1
  157. package/dist/css/CCsCPLDG.chunk.css +0 -1
  158. package/dist/css/CD1qrI1T.chunk.css +0 -1
  159. package/dist/css/CDiJwtuL.chunk.css +0 -1
  160. package/dist/css/CM-cscAF.chunk.css +0 -1
  161. package/dist/css/CY0yvCW4.chunk.css +0 -1
  162. package/dist/css/Ci6HCTb5.chunk.css +0 -1
  163. package/dist/css/CifDVjr-.chunk.css +0 -1
  164. package/dist/css/CphXVlxY.chunk.css +0 -1
  165. package/dist/css/CrSv-tYo.chunk.css +0 -1
  166. package/dist/css/DD13UQOa.chunk.css +0 -1
  167. package/dist/css/DGyCCqtO.chunk.css +0 -1
  168. package/dist/css/DI4l_5OJ.chunk.css +0 -1
  169. package/dist/css/DL_jCfRl.chunk.css +0 -1
  170. package/dist/css/DRlDmMhN.chunk.css +0 -1
  171. package/dist/css/Dkh6sNpi.chunk.css +0 -1
  172. package/dist/css/DlOtoSz0.chunk.css +0 -1
  173. package/dist/css/DnhNnDZN.chunk.css +0 -1
  174. package/dist/css/EnQ3abug.chunk.css +0 -1
  175. package/dist/css/O777zV0C.chunk.css +0 -1
  176. package/dist/css/fs02hBfZ.chunk.css +0 -1
  177. package/dist/css/jbMisi9r.chunk.css +0 -1
  178. package/dist/css/w4TLT4f5.chunk.css +0 -1
  179. package/dist/en.json +0 -1
  180. package/dist/scripts/-QmfGLIN.chunk.js +0 -2
  181. package/dist/scripts/-QmfGLIN.chunk.js.map +0 -1
  182. package/dist/scripts/6FhUNBfx.chunk.js +0 -2
  183. package/dist/scripts/6FhUNBfx.chunk.js.map +0 -1
  184. package/dist/scripts/9o-MqpsS.chunk.js +0 -2
  185. package/dist/scripts/9o-MqpsS.chunk.js.map +0 -1
  186. package/dist/scripts/B2HNVRLF.chunk.js +0 -2
  187. package/dist/scripts/B2HNVRLF.chunk.js.map +0 -1
  188. package/dist/scripts/B2yKZtpc.chunk.js +0 -6
  189. package/dist/scripts/B2yKZtpc.chunk.js.map +0 -1
  190. package/dist/scripts/B4NQ482n.chunk.js +0 -2
  191. package/dist/scripts/B4NQ482n.chunk.js.map +0 -1
  192. package/dist/scripts/B4kbE-AG.chunk.js +0 -2
  193. package/dist/scripts/B4kbE-AG.chunk.js.map +0 -1
  194. package/dist/scripts/B668bf5B.chunk.js +0 -2
  195. package/dist/scripts/B668bf5B.chunk.js.map +0 -1
  196. package/dist/scripts/BFoo6g4H.chunk.js +0 -2
  197. package/dist/scripts/BFoo6g4H.chunk.js.map +0 -1
  198. package/dist/scripts/BHWbXJt3.chunk.js +0 -2
  199. package/dist/scripts/BHWbXJt3.chunk.js.map +0 -1
  200. package/dist/scripts/BHdp6IzC.chunk.js +0 -2
  201. package/dist/scripts/BHdp6IzC.chunk.js.map +0 -1
  202. package/dist/scripts/BPlgKoUH.chunk.js +0 -2
  203. package/dist/scripts/BPlgKoUH.chunk.js.map +0 -1
  204. package/dist/scripts/BU7zesZa.chunk.js +0 -2
  205. package/dist/scripts/BU7zesZa.chunk.js.map +0 -1
  206. package/dist/scripts/BbAy6p0a.chunk.js +0 -2
  207. package/dist/scripts/BbAy6p0a.chunk.js.map +0 -1
  208. package/dist/scripts/Bd43MH9s.chunk.js +0 -2
  209. package/dist/scripts/Bd43MH9s.chunk.js.map +0 -1
  210. package/dist/scripts/BdoDNby6.chunk.js +0 -2
  211. package/dist/scripts/BdoDNby6.chunk.js.map +0 -1
  212. package/dist/scripts/BfpVRvba.chunk.js +0 -2
  213. package/dist/scripts/BfpVRvba.chunk.js.map +0 -1
  214. package/dist/scripts/BgY8Fu63.chunk.js +0 -2
  215. package/dist/scripts/BgY8Fu63.chunk.js.map +0 -1
  216. package/dist/scripts/BhzF8k3V.chunk.js +0 -2
  217. package/dist/scripts/BhzF8k3V.chunk.js.map +0 -1
  218. package/dist/scripts/BjlH_9a_.chunk.js +0 -2
  219. package/dist/scripts/BjlH_9a_.chunk.js.map +0 -1
  220. package/dist/scripts/BklWIeq0.chunk.js +0 -2
  221. package/dist/scripts/BklWIeq0.chunk.js.map +0 -1
  222. package/dist/scripts/BlDVEZsX.chunk.js +0 -2
  223. package/dist/scripts/BlDVEZsX.chunk.js.map +0 -1
  224. package/dist/scripts/BoNPAqR7.chunk.js +0 -2
  225. package/dist/scripts/BoNPAqR7.chunk.js.map +0 -1
  226. package/dist/scripts/Bod85SYB.chunk.js +0 -2
  227. package/dist/scripts/Bod85SYB.chunk.js.map +0 -1
  228. package/dist/scripts/Bp6Xb1zN.chunk.js +0 -2
  229. package/dist/scripts/Bp6Xb1zN.chunk.js.map +0 -1
  230. package/dist/scripts/Bx7TgL0C.chunk.js +0 -2
  231. package/dist/scripts/Bx7TgL0C.chunk.js.map +0 -1
  232. package/dist/scripts/C142tn-B.chunk.js +0 -2
  233. package/dist/scripts/C142tn-B.chunk.js.map +0 -1
  234. package/dist/scripts/C48ktK5n.chunk.js +0 -2
  235. package/dist/scripts/C48ktK5n.chunk.js.map +0 -1
  236. package/dist/scripts/C7F2pzz_.chunk.js +0 -2
  237. package/dist/scripts/C7F2pzz_.chunk.js.map +0 -1
  238. package/dist/scripts/CEf5yj2s.chunk.js +0 -2
  239. package/dist/scripts/CEf5yj2s.chunk.js.map +0 -1
  240. package/dist/scripts/CJ3oIQlG.chunk.js +0 -2
  241. package/dist/scripts/CJ3oIQlG.chunk.js.map +0 -1
  242. package/dist/scripts/CMmQbESn.chunk.js +0 -2
  243. package/dist/scripts/CMmQbESn.chunk.js.map +0 -1
  244. package/dist/scripts/CNicqYgW.chunk.js +0 -2
  245. package/dist/scripts/CNicqYgW.chunk.js.map +0 -1
  246. package/dist/scripts/CPvfK9ev.chunk.js +0 -2
  247. package/dist/scripts/CPvfK9ev.chunk.js.map +0 -1
  248. package/dist/scripts/CRROHAqo.chunk.js +0 -2
  249. package/dist/scripts/CRROHAqo.chunk.js.map +0 -1
  250. package/dist/scripts/CSqMWPmN.chunk.js +0 -15
  251. package/dist/scripts/CSqMWPmN.chunk.js.map +0 -1
  252. package/dist/scripts/CTcJ39n0.chunk.js +0 -2
  253. package/dist/scripts/CTcJ39n0.chunk.js.map +0 -1
  254. package/dist/scripts/CY_ZEi17.chunk.js +0 -2
  255. package/dist/scripts/CY_ZEi17.chunk.js.map +0 -1
  256. package/dist/scripts/CbSUH7Rz.chunk.js +0 -2
  257. package/dist/scripts/CbSUH7Rz.chunk.js.map +0 -1
  258. package/dist/scripts/CljRBNOX.chunk.js +0 -2
  259. package/dist/scripts/CljRBNOX.chunk.js.map +0 -1
  260. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  261. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  262. package/dist/scripts/CoCmlowG.chunk.js +0 -2
  263. package/dist/scripts/CoCmlowG.chunk.js.map +0 -1
  264. package/dist/scripts/CoRP6nOB.chunk.js +0 -50
  265. package/dist/scripts/CoRP6nOB.chunk.js.map +0 -1
  266. package/dist/scripts/CoksuIov.chunk.js +0 -2
  267. package/dist/scripts/CoksuIov.chunk.js.map +0 -1
  268. package/dist/scripts/CqaVyU15.chunk.js +0 -2
  269. package/dist/scripts/CqaVyU15.chunk.js.map +0 -1
  270. package/dist/scripts/Cu-wofRC.chunk.js +0 -2
  271. package/dist/scripts/Cu-wofRC.chunk.js.map +0 -1
  272. package/dist/scripts/CyXdP5dX.chunk.js +0 -2
  273. package/dist/scripts/CyXdP5dX.chunk.js.map +0 -1
  274. package/dist/scripts/CyjoA2ph.chunk.js +0 -2
  275. package/dist/scripts/CyjoA2ph.chunk.js.map +0 -1
  276. package/dist/scripts/D-worYR1.chunk.js +0 -2
  277. package/dist/scripts/D-worYR1.chunk.js.map +0 -1
  278. package/dist/scripts/D3oBEMC4.chunk.js +0 -2
  279. package/dist/scripts/D3oBEMC4.chunk.js.map +0 -1
  280. package/dist/scripts/D4oCPyUC.chunk.js +0 -2
  281. package/dist/scripts/D4oCPyUC.chunk.js.map +0 -1
  282. package/dist/scripts/D7WqZb79.chunk.js +0 -2
  283. package/dist/scripts/D7WqZb79.chunk.js.map +0 -1
  284. package/dist/scripts/D8Fb_Kn2.chunk.js +0 -2
  285. package/dist/scripts/D8Fb_Kn2.chunk.js.map +0 -1
  286. package/dist/scripts/DBQcPvhE.chunk.js +0 -362
  287. package/dist/scripts/DBQcPvhE.chunk.js.map +0 -1
  288. package/dist/scripts/DCGqs8ge.chunk.js +0 -2
  289. package/dist/scripts/DCGqs8ge.chunk.js.map +0 -1
  290. package/dist/scripts/DEmNtjut.chunk.js +0 -5
  291. package/dist/scripts/DEmNtjut.chunk.js.map +0 -1
  292. package/dist/scripts/DGoATT2r.chunk.js +0 -2
  293. package/dist/scripts/DGoATT2r.chunk.js.map +0 -1
  294. package/dist/scripts/DHEsU9tx.chunk.js +0 -2
  295. package/dist/scripts/DHEsU9tx.chunk.js.map +0 -1
  296. package/dist/scripts/DJZy0Onv.chunk.js +0 -2
  297. package/dist/scripts/DJZy0Onv.chunk.js.map +0 -1
  298. package/dist/scripts/DML3iinY.chunk.js +0 -2
  299. package/dist/scripts/DML3iinY.chunk.js.map +0 -1
  300. package/dist/scripts/DMM-ZwkR.chunk.js +0 -2
  301. package/dist/scripts/DMM-ZwkR.chunk.js.map +0 -1
  302. package/dist/scripts/DNaYQ0UN.chunk.js +0 -2
  303. package/dist/scripts/DNaYQ0UN.chunk.js.map +0 -1
  304. package/dist/scripts/DOLtnwZR.chunk.js +0 -2
  305. package/dist/scripts/DOLtnwZR.chunk.js.map +0 -1
  306. package/dist/scripts/DSljAm9x.chunk.js +0 -2
  307. package/dist/scripts/DSljAm9x.chunk.js.map +0 -1
  308. package/dist/scripts/DTFETpC1.chunk.js +0 -8
  309. package/dist/scripts/DTFETpC1.chunk.js.map +0 -1
  310. package/dist/scripts/DUHNiExb.chunk.js +0 -2
  311. package/dist/scripts/DUHNiExb.chunk.js.map +0 -1
  312. package/dist/scripts/DUeG7GBo.chunk.js +0 -2
  313. package/dist/scripts/DUeG7GBo.chunk.js.map +0 -1
  314. package/dist/scripts/DVAvC_9o.chunk.js +0 -2
  315. package/dist/scripts/DVAvC_9o.chunk.js.map +0 -1
  316. package/dist/scripts/DWdE-Ugg.chunk.js +0 -2
  317. package/dist/scripts/DWdE-Ugg.chunk.js.map +0 -1
  318. package/dist/scripts/DY6LRP1V.chunk.js +0 -2
  319. package/dist/scripts/DY6LRP1V.chunk.js.map +0 -1
  320. package/dist/scripts/DZNkb9vM.chunk.js +0 -2
  321. package/dist/scripts/DZNkb9vM.chunk.js.map +0 -1
  322. package/dist/scripts/Dbn7vKGF.chunk.js +0 -2
  323. package/dist/scripts/Dbn7vKGF.chunk.js.map +0 -1
  324. package/dist/scripts/Dd3UU4H5.chunk.js +0 -2
  325. package/dist/scripts/Dd3UU4H5.chunk.js.map +0 -1
  326. package/dist/scripts/De4UpC2g.chunk.js +0 -2
  327. package/dist/scripts/De4UpC2g.chunk.js.map +0 -1
  328. package/dist/scripts/DnK4C90o.chunk.js +0 -2
  329. package/dist/scripts/DnK4C90o.chunk.js.map +0 -1
  330. package/dist/scripts/DntTu0XK.chunk.js +0 -2
  331. package/dist/scripts/DntTu0XK.chunk.js.map +0 -1
  332. package/dist/scripts/DoZ1A_qG.chunk.js +0 -2
  333. package/dist/scripts/DoZ1A_qG.chunk.js.map +0 -1
  334. package/dist/scripts/DtnntJxI.chunk.js +0 -2
  335. package/dist/scripts/DtnntJxI.chunk.js.map +0 -1
  336. package/dist/scripts/Dvkaq1WU.chunk.js +0 -2
  337. package/dist/scripts/Dvkaq1WU.chunk.js.map +0 -1
  338. package/dist/scripts/DxYxjVpd.chunk.js +0 -3
  339. package/dist/scripts/DxYxjVpd.chunk.js.map +0 -1
  340. package/dist/scripts/DyDPUyS7.chunk.js +0 -2
  341. package/dist/scripts/DyDPUyS7.chunk.js.map +0 -1
  342. package/dist/scripts/FoPqmw-u.chunk.js +0 -2
  343. package/dist/scripts/FoPqmw-u.chunk.js.map +0 -1
  344. package/dist/scripts/JjH0M1sw.chunk.js +0 -2
  345. package/dist/scripts/JjH0M1sw.chunk.js.map +0 -1
  346. package/dist/scripts/Kj832An8.chunk.js +0 -2
  347. package/dist/scripts/Kj832An8.chunk.js.map +0 -1
  348. package/dist/scripts/QfCSKVqV.chunk.js +0 -2
  349. package/dist/scripts/QfCSKVqV.chunk.js.map +0 -1
  350. package/dist/scripts/VKh9EG4H.chunk.js +0 -2
  351. package/dist/scripts/VKh9EG4H.chunk.js.map +0 -1
  352. package/dist/scripts/W7C_DF7E.chunk.js +0 -2
  353. package/dist/scripts/W7C_DF7E.chunk.js.map +0 -1
  354. package/dist/scripts/ZgtgvdxM.chunk.js +0 -2
  355. package/dist/scripts/ZgtgvdxM.chunk.js.map +0 -1
  356. package/dist/scripts/_sYSSSUN.chunk.js +0 -2
  357. package/dist/scripts/_sYSSSUN.chunk.js.map +0 -1
  358. package/dist/scripts/app-CSgTTsBh.js +0 -215
  359. package/dist/scripts/app-CSgTTsBh.js.map +0 -1
  360. package/dist/scripts/b7w0ESDo.chunk.js +0 -2
  361. package/dist/scripts/b7w0ESDo.chunk.js.map +0 -1
  362. package/dist/scripts/e4J39NdV.chunk.js +0 -2
  363. package/dist/scripts/e4J39NdV.chunk.js.map +0 -1
  364. package/dist/scripts/gmJLp4bX.chunk.js +0 -2
  365. package/dist/scripts/gmJLp4bX.chunk.js.map +0 -1
  366. package/dist/scripts/h4x3qWQ8.chunk.js +0 -2
  367. package/dist/scripts/h4x3qWQ8.chunk.js.map +0 -1
  368. package/dist/scripts/hrQgoDjt.chunk.js +0 -2
  369. package/dist/scripts/hrQgoDjt.chunk.js.map +0 -1
  370. package/dist/scripts/llc4Kymn.chunk.js +0 -2
  371. package/dist/scripts/llc4Kymn.chunk.js.map +0 -1
  372. package/dist/scripts/pkzD5BEm.chunk.js +0 -2
  373. package/dist/scripts/pkzD5BEm.chunk.js.map +0 -1
  374. package/dist/scripts/uM6EBrIh.chunk.js +0 -2
  375. package/dist/scripts/uM6EBrIh.chunk.js.map +0 -1
  376. package/dist/scripts/vtfUwDER.chunk.js +0 -2
  377. package/dist/scripts/vtfUwDER.chunk.js.map +0 -1
  378. package/vite.config.ts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"file":"DxYxjVpd.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 &nbsp;\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} />&nbsp;</>}\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' />&nbsp;\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 &nbsp;\n\n {props.suggestions.map((suggestion, index) => (\n <React.Fragment key={`${suggestion}:${index}`}>\n {index !== 0 && <span className='mx-1'>&bull;</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{a1 as s,j as a,P as g,L as h,w as i,z as u,aA as x}from"./app-CSgTTsBh.js";import{T as j}from"./ZgtgvdxM.chunk.js";import{T as r}from"./DML3iinY.chunk.js";import"./e4J39NdV.chunk.js";const l="tv.radioDownload",d=h.encloseNamespace(l);function T(o){const t=s(x.config()),e=s(r.program(o.id)),c=s(r.region(o.region));function m(){var n;const p=(n=e.data)==null?void 0:n.globalId.split("-").join("");return`${t.data.tvPreviewUrls[c.data.code]}/audio/${p}.mp3`}return t.hasCompleted&&e.hasCompleted?a.jsxs(g,{title:d("title"),closePopup:o.closePopup,showLoadingSpinner:!e.hasCompleted,children:[e.data&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:"fw-semibold mb-2",children:e.data.title}),a.jsx("div",{className:"d-flex mb-2",children:a.jsx(j,{program:e.data,showDate:!0,showEndTime:!0})}),a.jsx("p",{children:e.data.description})]}),a.jsxs(i,{children:[a.jsx(i.Cancel,{text:d("cancel"),onClick:o.closePopup,variant:"link"}),a.jsx("a",{target:"_blank",href:m(),className:"btn btn-dark",children:a.jsx(u,{namespace:l,phrase:"download"})})]})]}):a.jsx(a.Fragment,{})}export{T as TvRadioDownloadView};
2
- //# sourceMappingURL=DyDPUyS7.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DyDPUyS7.chunk.js","sources":["../../src/apps/tv/views/tv-radio-download/TvRadioDownloadView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.radioDownload';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvRadioDownloadProps extends PopupProps {\n id: string;\n region: string;\n}\n\nexport function TvRadioDownloadView(props: TvRadioDownloadProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n\n function getDownloadLink() {\n const globalId = program.data?.globalId.split('-').join('');\n return `${config.data.tvPreviewUrls[region.data.code]}/audio/${globalId}.mp3`;\n }\n\n const hasLoaded = (config.hasCompleted && program.hasCompleted);\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!program.hasCompleted}\n >\n {program.data &&\n <>\n <p className='fw-semibold mb-2'>{program.data.title}</p>\n <div className='d-flex mb-2'>\n <TvProgramTimeBadge program={program.data} showDate showEndTime />\n </div>\n <p>{program.data.description}</p>\n </>\n }\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <a target='_blank' href={getDownloadLink()} className='btn btn-dark'>\n <Text namespace={namespace} phrase='download' />\n </a>\n </PopupButtons>\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TvRadioDownloadView","props","config","Flight.useBasicFetch","ConfigRequests","program","TvRequests","region","getDownloadLink","globalId","_a","jsxs","Popup","Fragment","jsx","TvProgramTimeBadge","PopupButtons","Text"],"mappings":"8LAgBA,MAAMA,EAAY,mBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAOrD,SAASG,EAAoBC,EAA6B,CAC/D,MAAMC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAUF,EAAgCG,EAAW,QAAQL,EAAM,EAAE,CAAC,EACtEM,EAASJ,EAA+BG,EAAW,OAAOL,EAAM,MAAM,CAAC,EAE7E,SAASO,GAAkB,OACzB,MAAMC,GAAWC,EAAAL,EAAQ,OAAR,YAAAK,EAAc,SAAS,MAAM,KAAK,KAAK,IACxD,MAAO,GAAGR,EAAO,KAAK,cAAcK,EAAO,KAAK,IAAI,CAAC,UAAUE,CAAQ,MACzE,CAIA,OAFmBP,EAAO,cAAgBG,EAAQ,aAOhDM,EAAAA,KAACC,EAAA,CACC,MAAOd,EAAU,OAAO,EACxB,WAAYG,EAAM,WAClB,mBAAoB,CAACI,EAAQ,aAE5B,SAAA,CAAAA,EAAQ,MACPM,EAAAA,KAAAE,EAAAA,SAAA,CACE,SAAA,CAAAC,MAAC,IAAA,CAAE,UAAU,mBAAoB,SAAAT,EAAQ,KAAK,MAAM,QACnD,MAAA,CAAI,UAAU,cACb,eAACU,EAAA,CAAmB,QAASV,EAAQ,KAAM,SAAQ,GAAC,YAAW,EAAA,CAAC,EAClE,QACC,IAAA,CAAG,SAAAA,EAAQ,KAAK,YAAY,CAAA,EAC/B,SAEDW,EAAA,CACC,SAAA,CAAAF,EAAAA,IAACE,EAAa,OAAb,CACC,KAAMlB,EAAU,QAAQ,EACxB,QAASG,EAAM,WACf,QAAQ,MAAA,CAAA,QAET,IAAA,CAAE,OAAO,SAAS,KAAMO,IAAmB,UAAU,eACpD,SAAAM,EAAAA,IAACG,EAAA,CAAK,UAAApB,EAAsB,OAAO,UAAA,CAAW,EAChD,CAAA,EACF,CAAA,CAAA,CAAA,EA3BKiB,EAAAA,IAAAD,EAAAA,SAAA,EAAE,CA8Bb"}
@@ -1,2 +0,0 @@
1
- import{j as e,ai as q,aj as x,ak as P,z as y,R as E,ay as S,a as N,b as C,ap as V,ao as I,ah as M,a1 as b,aR as O,l as D,ab as U,ac as W}from"./app-CSgTTsBh.js";import{F as R,S as $}from"./Dbn7vKGF.chunk.js";import{u as G,I as Q,P as Z}from"./Cu-wofRC.chunk.js";import{h as w}from"./-QmfGLIN.chunk.js";import{u as z}from"./hrQgoDjt.chunk.js";import{u as J}from"./B4NQ482n.chunk.js";import{T as K,a as X}from"./BbAy6p0a.chunk.js";import{T as f}from"./DML3iinY.chunk.js";import{u as Y}from"./DUHNiExb.chunk.js";import{u as ee}from"./CRROHAqo.chunk.js";import{u as te}from"./BoNPAqR7.chunk.js";import{A as ae}from"./gmJLp4bX.chunk.js";import{B as se,a as re}from"./CY_ZEi17.chunk.js";import{B as ie}from"./CTcJ39n0.chunk.js";import{B as ne}from"./DOLtnwZR.chunk.js";import{I as oe,a as le}from"./b7w0ESDo.chunk.js";import{T as me}from"./BjlH_9a_.chunk.js";import{T as ce}from"./BgY8Fu63.chunk.js";import{T as de}from"./ZgtgvdxM.chunk.js";import{t as A}from"./e4J39NdV.chunk.js";import"./DGoATT2r.chunk.js";import"./DWdE-Ugg.chunk.js";import"./BdoDNby6.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./CbSUH7Rz.chunk.js";import"./DVAvC_9o.chunk.js";import"./DHEsU9tx.chunk.js";import"./BU7zesZa.chunk.js";import"./CqaVyU15.chunk.js";import"./CMmQbESn.chunk.js";import"./_sYSSSUN.chunk.js";import"./Bod85SYB.chunk.js";import"./6FhUNBfx.chunk.js";import"./BlDVEZsX.chunk.js";import"./CljRBNOX.chunk.js";const pe="tv.searchResultsEmptyState";function he(i){return e.jsx(q.Provider,{value:pe,children:e.jsxs(x,{children:[e.jsx(x.Image,{src:P.EmptyStates.SEARCH}),e.jsx(x.Heading,{children:i.query?e.jsx(y,{phrase:"headingWithQuery",options:{query:i.query}}):e.jsx(y,{phrase:"headingWithoutQuery"})}),e.jsx(x.Info,{children:e.jsx(y,{phrase:"info"})})]})})}const ue="_highlight_107l1_1",ge="_badgeOverlay_107l1_8",B={highlight:ue,badgeOverlay:ge};function F(i,t){const r=new RegExp(t,"gi");return i.replace(r,c=>`<span class=${B.highlight}>${c}</span>`)}function xe(i){var l,g,p;const{program:t,query:r,region:c,getVideoActions:j}=i,[a,d]=E.useState(!1),n={application:C.TV,action:N.Tv.PREVIEW,args:[c.code,t.id]},u=A(t.startTime,t.timeZone),o=A(t.stopTime,t.timeZone),T=Math.abs(S.diffBetween(u,o,"milliseconds"));return e.jsxs("div",{className:"row g-0 mb-3",children:[e.jsx("div",{className:"col-3 flex-column align-items-flex-start pe-2",children:e.jsx("div",{className:"rounded rounded-3 overflow-hidden",children:e.jsxs(ne,{imageType:V.Thumbnails,data:t.thumbnailUrl,appLink:n,children:[e.jsx(oe,{type:le.Video}),e.jsx("div",{className:B.badgeOverlay,children:e.jsx(se,{type:re.DurationApproximate,data:T})})]})})}),e.jsxs("div",{className:"col-9 pb-2",children:[e.jsx(ae,{actions:j(t),className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1"}),e.jsx(I,{appLink:n,children:e.jsx("h5",{className:"h4 mb-1 align-middle text-dark text-truncate",title:t.title??"",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:F(t.title,r)}})})}),e.jsxs(ie,{className:"mb-1",children:[t.channelLogoUrl&&e.jsx(ce,{logoUrl:t.channelLogoUrl,className:"me-1",small:!0}),e.jsx(de,{program:t,className:"me-1",showDate:!0,showEndTime:!0}),t.hasAdsFree&&e.jsx(me,{small:!0})]}),e.jsx("div",{className:"mb-1",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:F(t.description,r)}})}),!!((l=t.subtitleHits)!=null&&l.length)&&e.jsxs("div",{children:[(g=t.subtitleHits)==null?void 0:g.map(((m,h)=>!a&&h>1?e.jsx(E.Fragment,{},h):e.jsxs(I,{appLink:{...n,args:[...n.args],params:{currentTime:m.HitStartTime/1e3}},className:"d-block text-dark",children:[e.jsxs("span",{className:"fw-semibold",children:["[",S.format(S.add(u,m.HitStartTime,"milliseconds"),"h:mm:ss a"),"]"]})," ",e.jsx("span",{dangerouslySetInnerHTML:{__html:F(m.SrtFragment,r)}})]},h))),!a&&((p=t.subtitleHits)==null?void 0:p.length)>2&&e.jsx("div",{className:"text-info cursor-pointer",onClick:()=>d(!0),children:"Show more"})]})]})]})}fe.defaultProps={queryParams:{}};function fe(i){var L;const{queryParams:t}=i,{query:r}=t,c=M(),j=z(),a=b(f.region(i.region)),d=b(f.regions()),n=b(a.data&&f.channels(a.data.code));a.hasCompleted&&!a.data&&w(O.BadRequest);const{setRegion:u}=te();ee(a),J([d,n]),D({title:r??""});const{items:o,hasMore:T,isFetching:l,nextCursor:g}=G(a.data&&p,m,h,s=>s.results,s=>s.page*25>s.totalNumber?null:(s.page+1).toString());function p(s){return f.search(a.data.code,t,+s)}function m(s){return c(p(s))}function h(s,v){if(s===1)return w(v);j.error("Something went wrong")}const k=Y("video-list",a.data),H=a.hasCompleted&&d.hasCompleted&&n.hasCompleted,_=[R.TvChannel(n.data),R.TvDateBroadcast(),R.TvFields()];return e.jsxs(e.Fragment,{children:[e.jsx(K,{query:r,region:a.data}),e.jsxs("div",{className:"d-flex justify-content-between mb-2",children:[e.jsx($,{queryParams:t,mainFilters:_,analyticsOptions:{entity:W.SearchResults,location:U.SearchFilters},appLink:{application:C.TV,action:N.Tv.SEARCH,args:[(L=a.data)==null?void 0:L.code]},hideDivider:!0,isFetchingOptions:!H}),e.jsx(X,{currentRegion:a.data,regions:d.data,appLink:{application:C.TV,action:N.Tv.SEARCH,params:{query:r}},onClick:u})]}),H&&e.jsx(e.Fragment,{children:o!=null&&o.length?e.jsxs(e.Fragment,{children:[o.map((s,v)=>e.jsx(xe,{program:s,query:r,region:a.data,getVideoActions:k},v)),(T||l)&&e.jsx(Q,{isFetching:l,fetchNext:m,nextCursor:g})]}):e.jsx(e.Fragment,{children:l?e.jsx("div",{className:"m-n2",children:e.jsx(Z,{})}):e.jsx(he,{query:r})})})]})}export{fe as TvSearchResultsView};
2
- //# sourceMappingURL=FoPqmw-u.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FoPqmw-u.chunk.js","sources":["../../src/apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState.tsx","../../src/apps/tv/views/tv-search-results/components/tv-search-result-item/TvSearchResultItem.tsx","../../src/apps/tv/views/tv-search-results/TvSearchResultsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\n\nconst namespace = 'tv.searchResultsEmptyState';\n\ninterface TvSearchResultsStateProps {\n query?: string;\n}\n\nexport function TvSearchResultsState(props: TvSearchResultsStateProps): 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 </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\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 { ImageType } from 'libs/shared/enums/Images';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvChannelBadge } from 'apps/tv/components/tv-channel-badge/TvChannelBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-search-result-item.module.scss';\n\nfunction highlightText(text: string, query: string): string {\n const regex = new RegExp(query, 'gi');\n return text.replace(regex, match => `<span class=${styles.highlight}>${match}</span>`);\n}\n\ninterface TvSearchResultItemProps {\n query: string;\n program: TvSearchResult;\n region: TvRegion;\n getVideoActions: (video: TvProgram) => ActionOptions[];\n}\n\nexport function TvSearchResultItem(props: TvSearchResultItemProps): JSX.Element {\n const { program, query, region, getVideoActions } = props;\n\n const [ showMore, setShowMore ] = React.useState(false);\n\n const appLink = {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region.code, program.id ]\n };\n\n const startTime = toLocalTime(program.startTime, program.timeZone);\n const stopTime = toLocalTime(program.stopTime, program.timeZone);\n const diff = Math.abs(DateHelper.diffBetween(startTime, stopTime, 'milliseconds'));\n\n return (\n <div className='row g-0 mb-3'>\n <div className='col-3 flex-column align-items-flex-start pe-2'>\n <div className='rounded rounded-3 overflow-hidden'>\n <BaseImage\n imageType={ImageType.Thumbnails}\n data={program.thumbnailUrl}\n appLink={appLink}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <div className={styles.badgeOverlay}>\n <Badge\n type={BadgeType.DurationApproximate}\n data={diff}\n />\n </div>\n </BaseImage>\n </div>\n </div>\n <div className='col-9 pb-2'>\n <ActionsComponent\n actions={getVideoActions(program as TvProgram)}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n <AppLink appLink={appLink}>\n <h5 className='h4 mb-1 align-middle text-dark text-truncate' title={program.title ?? ''}>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.title, query)\n }}></span>\n </h5>\n </AppLink>\n <BadgeListContainer className='mb-1'>\n {program.channelLogoUrl && <TvChannelBadge logoUrl={program.channelLogoUrl} className='me-1' small />}\n <TvProgramTimeBadge program={program as TvProgram} className='me-1' showDate showEndTime />\n {program.hasAdsFree && <TvAdFreeBadge small />}\n </BadgeListContainer>\n <div className='mb-1'>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.description, query)\n }}></span>\n </div>\n {!!program.subtitleHits?.length &&\n <div>\n {program.subtitleHits?.map(((hit, index) => {\n if (!showMore && index > 1)\n return <React.Fragment key={index} />;\n\n return (\n <AppLink\n key={index}\n appLink={{\n ...appLink,\n args: [...appLink.args],\n params: {\n currentTime: hit.HitStartTime / 1000\n }\n }}\n className='d-block text-dark'\n >\n <span className='fw-semibold'>\n [{DateHelper.format(DateHelper.add(startTime, hit.HitStartTime, 'milliseconds'), 'h:mm:ss a')}]\n </span>\n &nbsp;\n <span dangerouslySetInnerHTML={{\n __html: highlightText(hit.SrtFragment, query)\n }}></span>\n </AppLink>\n );\n }))}\n {!showMore && program.subtitleHits?.length > 2 && <div className='text-info cursor-pointer' onClick={() => setShowMore(true)}>Show more</div>}\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { TvSearchResponse } from 'apps/tv/interfaces/responses/TvSearchResponse';\nimport { TvSearchResultsState } from 'apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState';\n\nimport { TvSearchResultItem } from './components/tv-search-result-item/TvSearchResultItem';\n\ninterface TvSearchResultsViewProps {\n region: string;\n queryParams: HashObject;\n}\n\nTvSearchResultsView.defaultProps = {\n queryParams: {}\n};\n\nexport function TvSearchResultsView(props: TvSearchResultsViewProps): JSX.Element {\n const { queryParams } = props;\n const { query } = queryParams;\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n if (region.hasCompleted && !region.data) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n const { setRegion } = useSelectedRegion();\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: query ?? '' });\n\n const {\n items: programs,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<TvSearchResult, TvSearchResponse>(\n region.data && getRequest,\n fetchNext,\n onError,\n response => response.results,\n response => {\n if (response.page * 25 > response.totalNumber)\n return null;\n\n return (response.page + 1).toString();\n }\n );\n\n function getRequest(cursor?: string): Flight.Request {\n return TvRequests.search(\n region.data.code,\n queryParams,\n +cursor\n );\n }\n\n function fetchNext(cursor?: string): void {\n return fetch(getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error('Something went wrong');\n }\n\n const getVideoActions = useGetTvActions('video-list', region.data);\n\n const dataLoaded = region.hasCompleted && regions.hasCompleted && channels.hasCompleted;\n\n const mainFilters = [\n Filters.TvChannel(channels.data),\n Filters.TvDateBroadcast(),\n Filters.TvFields()\n ];\n\n return (\n <>\n <TvSearchBar query={query} region={region.data} />\n\n <div className='d-flex justify-content-between mb-2'>\n <SearchFilters\n queryParams={queryParams}\n mainFilters={mainFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.TV, action: Actions.Tv.SEARCH, args: [region.data?.code]}}\n hideDivider\n isFetchingOptions={!dataLoaded}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.SEARCH,\n params: { query: query }\n }}\n onClick={setRegion}\n />\n </div>\n\n {dataLoaded && (\n <>\n {programs?.length ? (\n <>\n {programs.map((program, index) => {\n return (\n <TvSearchResultItem\n key={index}\n program={program}\n query={query}\n region={region.data}\n getVideoActions={getVideoActions}\n />\n );\n })}\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n )}\n </>\n ) : (\n <>\n {isFetching ? (\n <div className='m-n2'>\n <PartialVideoList />\n </div>\n ) : <TvSearchResultsState query={query} />}\n </>\n )}\n </>\n )}\n </>\n );\n}"],"names":["namespace","TvSearchResultsState","props","LanguageNamespaceContext","EmptyState","jsx","ImageUrls","Text","highlightText","text","query","regex","match","styles","TvSearchResultItem","program","region","getVideoActions","showMore","setShowMore","React","appLink","AppChannels","Actions","startTime","toLocalTime","stopTime","diff","DateHelper","jsxs","BaseImage","ImageType","ImageFallback","ImageFallbackType","Badge","BadgeType","ActionsComponent","AppLink","BadgeListContainer","TvChannelBadge","TvProgramTimeBadge","TvAdFreeBadge","_a","_b","hit","index","_c","TvSearchResultsView","queryParams","fetch","Flight.useGetFetch","alerts","useAlerts","Flight.useBasicFetch","TvRequests","regions","channels","handleHttpError","HttpStatus","setRegion","useSelectedRegion","useHandleRegionError","useHandleObjectError","useSetPageMetadata","programs","hasMore","isFetching","nextCursor","useInfiniteList","getRequest","fetchNext","onError","response","cursor","pageNumber","httpStatus","useGetTvActions","dataLoaded","mainFilters","Filters","Fragment","TvSearchBar","SearchFilters","EntityType","LocationContext","TvRegionSelect","InfiniteScrollFooter","PartialVideoList"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{D as h,U as g,L as u,a1 as d,a3 as m,a8 as f,aA as p,q as E,a4 as P}from"./app-CSgTTsBh.js";import{u as U}from"./hrQgoDjt.chunk.js";const c="shared.verifiedEmailError";class q extends h{constructor(e,r,s){super("VerifiedEmailRequiredError"),this.message=e,this.liteUrl=r,this.hasLite=s}get name(){return"VerifiedEmailRequiredError"}get dialogOptions(){const e=g.safeUrlConcat(this.liteUrl,"settings/account");return{title:u.getPhrase(c,"heading"),text:this.hasLite?`${this.message} ${u.getPhrase(c,"visitSettings",{href:e})}`:this.message,buttons:[{text:u.getPhrase(c,"close"),className:"btn btn-dark",success:!0}]}}}const R=()=>{var a;const t=d(m.currentUser()),e=d(((a=t.data)==null?void 0:a.isAuthenticated)&&f.userProducts()),r=!e.hasCompleted;return{hasProduct:i=>{var o;return r||e.hasError||!((o=e.data)!=null&&o.length)?!1:e.data.some(n=>n.id===i)},products:e,isLoadingProducts:r}};function S(){const t=U(),{hasProduct:e,isLoadingProducts:r}=R(),s=d(p.config());function a(i,o,n){var l;if(!i.responseJSON||((l=i.responseJSON)==null?void 0:l.type)!=="no-email"){t.error(o);return}E.throw(new q(n,s.data.liteUrl,e(P.Primary)))}return{handleGenerateReportError:a,loading:!s.hasCompleted||r}}export{S as u};
2
- //# sourceMappingURL=JjH0M1sw.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JjH0M1sw.chunk.js","sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite\n ? `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}`\n : this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}"],"names":["namespace","VerifiedEmailRequiredError","DialogError","message","liteUrl","hasLite","href","UrlHelper","LanguageService","useProducts","currentUser","Flight.useBasicFetch","UserRequests","products","_a","ProductRequests","isLoadingProducts","productId","product","useVerifiedEmailRequiredErrorHandler","alerts","useAlerts","hasProduct","config","ConfigRequests","handleGenerateReportError","xhr","noEmailError","Core.ErrorHelper","ProductId"],"mappings":"2IAMA,MAAMA,EAAY,4BAEX,MAAMC,UAAmCC,CAAY,CAK1D,YAAYC,EAAiBC,EAAiBC,EAAkB,CAC9D,MAAM,4BAA4B,EAElC,KAAK,QAAUF,EACf,KAAK,QAAUC,EACf,KAAK,QAAUC,CACjB,CAGA,IAAW,MAAe,CACxB,MAAO,4BACT,CAGA,IAAW,eAA+B,CACxC,MAAMC,EAAOC,EAAU,cAAc,KAAK,QAAS,kBAAkB,EAErE,MAAO,CACL,MAAOC,EAAgB,UAAUR,EAAW,SAAS,EACrD,KAAM,KAAK,QACP,GAAG,KAAK,OAAO,IAAIQ,EAAgB,UAAUR,EAAW,gBAAiB,CAAE,KAAAM,CAAA,CAAM,CAAC,GAClF,KAAK,QACT,QAAS,CAAC,CACR,KAAME,EAAgB,UAAUR,EAAW,OAAO,EAClD,UAAW,eACX,QAAS,EAAA,CACV,CAAA,CAEL,CACF,CC3BO,MAAMS,EAAc,IAA2B,OACpD,MAAMC,EAAcC,EAAkCC,EAAa,aAAa,EAC1EC,EAAWF,IAAgCG,EAAAJ,EAAY,OAAZ,YAAAI,EAAkB,kBAAmBC,EAAgB,cAAc,EAC9GC,EAAoB,CAACH,EAAS,aAYpC,MAAO,CACL,WAXkBI,GAAyB,OAI3C,OAHID,GAAqBH,EAAS,UAG9B,GAACC,EAAAD,EAAS,OAAT,MAAAC,EAAe,QACX,GAEFD,EAAS,KAAK,KAAKK,GAAWA,EAAQ,KAAOD,CAAS,CAC/D,EAIE,SAAAJ,EACA,kBAAAG,CAAA,CAEJ,ECxBO,SAASG,GAAuC,CACrD,MAAMC,EAASC,EAAA,EACT,CAAE,WAAAC,EAAY,kBAAAN,CAAA,EAAsBP,EAAA,EACpCc,EAASZ,EAA6Ba,EAAe,QAAQ,EAEnE,SAASC,EAA0BC,EAAUvB,EAAiBwB,EAAsB,OAClF,GAAI,CAACD,EAAI,gBAAgBZ,EAAAY,EAAI,eAAJ,YAAAZ,EAAkB,QAAS,WAAY,CAC9DM,EAAO,MAAMjB,CAAO,EACpB,MACF,CAEAyB,EAAiB,MACf,IAAI3B,EAA2B0B,EAAcJ,EAAO,KAAK,QAASD,EAAWO,EAAU,OAAO,CAAC,CAAA,CAEnG,CAEA,MAAO,CACL,0BAAAJ,EACA,QAAS,CAACF,EAAO,cAAgBP,CAAA,CAErC"}
@@ -1,2 +0,0 @@
1
- const E={PresentationIds:{DEFAULT:1,AU_PRIMARY:18,AU_SECONDARY:9,AU_TERTIARY:81,US_ELEMENTARY:13,CA_ELEMENTARY:100,CA_MIDDLE:101,CA_HIGH:102,STREAMABLE_LEARNING:68,ENG_PRIMARY:16,ENG_SECONDARY:47,SCT_PRIMARY:12,SCT_SECONDARY:24,UK_TERTIARY:82,INT_PRIMARY:19,INT_SECONDARY:21,NZ_PRIMARY:96,NZ_SECONDARY:97},Libraries:{TWIG:"88117784",TIGTAG:"80333935"},Images:{Level_1:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/dlM73E",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/WAe8MP",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/raRm7E",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/3kzeZ2"},Level_2:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/WAeKvP",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/9DAZJv",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/eKG2bq",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/xyn5eP"},Level_3:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/dl1d0g",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/R0Pz7A",TOPIC_TALL_POSTER:"https://img.clickviewapp.com/v2/tallposters/8LYZ9R",NEW_RELEASES_BANNER:"https://img.clickviewapp.com/v2/banners/nKDyRj"},Level_4:{TOPIC_BANNER:"https://img.clickviewapp.com/v2/banners/vYJPP5",TOPIC_COVER:"https://img.clickviewapp.com/v2/covers/PGPLLP"}}};export{E as H};
2
- //# sourceMappingURL=Kj832An8.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Kj832An8.chunk.js","sources":["../../../../libs/shared/src/constants/HardCoded.ts"],"sourcesContent":["export const HardCoded = {\n PublicTranscriptVideoIds: [\n '78902422',\n '8139055',\n '32102562',\n '36875667',\n '3713657',\n '9900524',\n '48278572',\n '39424302',\n '3712691',\n '54504550',\n '23852726',\n '3713563',\n '3714027',\n '51281358',\n '58785149',\n '7322586',\n '3716774',\n '36554689',\n '54192890',\n '6689791',\n '10749459',\n '3712691',\n '81764158',\n '43772092',\n '43974358',\n '48091365',\n '6430651',\n '3713735',\n '54096131',\n '57977558',\n '78840166',\n '57738254',\n '51666370',\n '49858722'\n ],\n SpecialEvents: {\n dlL00b3: {\n id: 'dlL00b3',\n iconUrl: 'https://img.clickviewapp.com/v2/covers/PGbNp0'\n }\n },\n Classifications: {\n Twig: {\n EnglandSecondary: {\n HUB: 'yrg5vYN'\n },\n ScotlandSecondary: {\n HUB: 'Y69j14M'\n },\n InternationalSecondary: {\n HUB: 'MYM6GGM'\n },\n NewZealandSecondary: {\n HUB: 'agNmRd9'\n },\n CanadaMiddle: {\n HUB: 'RbEbJ4g'\n },\n CanadaHigh: {\n HUB: 'xAzA6DP'\n }\n },\n Tigtag: {\n EnglandPrimary: {\n HUB: 'D1218zx',\n TIGTAG_HUB: 'odldxPJ',\n TIGTAG_JUNIOR_HUB: 'nENExnL'\n },\n ScotlandPrimary: {\n HUB: 'JjAONbj',\n TIGTAG_HUB: '3bNAGl1',\n TIGTAG_JUNIOR_HUB: 'K6GKp43'\n },\n InternationalPrimary: {\n HUB: 'W1xqbk2',\n TIGTAG_HUB: 'ek3dJr8',\n TIGTAG_JUNIOR_HUB: 'PGyKzpn'\n },\n NewZealandPrimary: {\n HUB: 'odnkREE',\n TIGTAG_HUB: 'kZJ4RPa',\n TIGTAG_JUNIOR_HUB: 'zMg80DR'\n },\n CanadaElementary: {\n HUB: '2mgmJA6',\n TIGTAG_HUB: '69z9D1A',\n TIGTAG_JUNIOR_HUB: 'ZJvJ1Lg'\n },\n CanadaMiddle: {\n HUB: 'Jjajxyd',\n TIGTAG_HUB: 'dq9qbe3',\n TIGTAG_JUNIOR_HUB: 'K6a6qdL'\n }\n }\n },\n // Production values. For testing in development, change these to staging preso values\n PresentationIds: {\n DEFAULT: 1,\n DEFAULT_CURRICULUM: 10,\n\n AU_PRIMARY: 18,\n AU_SECONDARY: 9,\n AU_TERTIARY: 81,\n US_ELEMENTARY: 13,\n US_MIDDLE: 14,\n US_HIGH: 15,\n CA_ELEMENTARY: 100,\n CA_MIDDLE: 101,\n CA_HIGH: 102,\n STREAMABLE_LEARNING: 68,\n ENG_PRIMARY: 16,\n ENG_SECONDARY: 47,\n SCT_PRIMARY: 12,\n SCT_SECONDARY: 24,\n UK_TERTIARY: 82,\n INT_PRIMARY: 19,\n INT_SECONDARY: 21,\n NZ_PRIMARY: 96,\n NZ_SECONDARY: 97\n },\n Libraries: {\n LICENCED_CONTENT_COLLECTION: '3700633',\n\n AU_PRIMARY: '10066675',\n AU_SECONDARY: '59401330',\n AU_TERTIARY: '5836680',\n US_ELEMENTARY: '38693445',\n US_MIDDLE: '39642303',\n US_HIGH: '38693435',\n CA_ELEMENTARY: '92862332',\n CA_MIDDLE: '92862334',\n CA_HIGH: '92862344',\n STREAMABLE_LEARNING: '78688869',\n ENG_PRIMARY: '35340580',\n ENG_SECONDARY: '59889793',\n SCT_PRIMARY: '33386791',\n SCT_SECONDARY: '59856733',\n UK_TERTIARY: '5815036',\n INT_PRIMARY: '3706428',\n INT_SECONDARY: '3706459',\n NZ_PRIMARY: '3705693',\n NZ_SECONDARY: '3705710',\n NZ_MTV: '26989676',\n\n TWIG: '88117784',\n TIGTAG: '80333935'\n },\n Rostering: {\n sources: {\n 0: { name: 'Unknown', iconUrl: '' },\n 1: { name: 'Clever', iconUrl: 'https://img.clickviewapp.com/v2/logos/LqlKgd' },\n 2: { name: 'ClassLink', iconUrl: 'https://img.clickviewapp.com/v2/logos/ZA2ew5' },\n 3: { name: 'Google', iconUrl: 'https://img.clickviewapp.com/v2/logos/l5x0jL' },\n 4: { name: 'Microsoft', iconUrl: 'https://img.clickviewapp.com/v2/logos/xAxGPP' },\n 5: { name: 'Schoology', iconUrl: 'https://img.clickviewapp.com/v2/logos/kZNEyz' },\n 6: { name: 'PowerSchool', iconUrl: 'https://img.clickviewapp.com/v2/logos/m6aDmR' }\n }\n },\n Images: {\n Level_1: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dlM73E',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/WAe8MP',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/raRm7E',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/3kzeZ2'\n },\n Level_2: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/WAeKvP',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/9DAZJv',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/eKG2bq',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/xyn5eP'\n },\n Level_3: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/dl1d0g',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/R0Pz7A',\n TOPIC_TALL_POSTER: 'https://img.clickviewapp.com/v2/tallposters/8LYZ9R',\n NEW_RELEASES_BANNER: 'https://img.clickviewapp.com/v2/banners/nKDyRj'\n },\n Level_4: {\n TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/vYJPP5',\n TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/PGPLLP'\n },\n TOPIC_DEFAULT_BANNER: 'https://img.clickviewapp.com/v2/banners/yKvoG0',\n STREAMABLE_TOPIC_BANNER: 'https://img.clickviewapp.com/v2/banners/q6gnOn',\n STREAMABLE_TOPIC_COVER: 'https://img.clickviewapp.com/v2/covers/age95g'\n },\n Onboarding: {\n Playlist: {\n COVER_FILE_ID: 'G149g3',\n BANNER_FILE_ID: 'bmPLkn'\n },\n LOADING_THUMBNAILS: [\n 'https://img.clickviewapp.com/v2/thumbnails/7m34ne',\n 'https://img.clickviewapp.com/v2/thumbnails/W1bjqJ',\n 'https://img.clickviewapp.com/v2/thumbnails/G14M1e',\n 'https://img.clickviewapp.com/v2/thumbnails/2mnv5x',\n 'https://img.clickviewapp.com/v2/thumbnails/xAEG91',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbyg',\n 'https://img.clickviewapp.com/v2/thumbnails/W13emP',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6j2vy',\n 'https://img.clickviewapp.com/v2/thumbnails/W1MJGE',\n 'https://img.clickviewapp.com/v2/thumbnails/OqDJqG',\n 'https://img.clickviewapp.com/v2/thumbnails/1My9Wn',\n 'https://img.clickviewapp.com/v2/thumbnails/G14MRe',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgKpl',\n 'https://img.clickviewapp.com/v2/thumbnails/agnbp9',\n 'https://img.clickviewapp.com/v2/thumbnails/G147R1',\n 'https://img.clickviewapp.com/v2/thumbnails/5bgMz5',\n 'https://img.clickviewapp.com/v2/thumbnails/G14Me5',\n 'https://img.clickviewapp.com/v2/thumbnails/5bEovE',\n 'https://img.clickviewapp.com/v2/thumbnails/odY4oZ',\n 'https://img.clickviewapp.com/v2/thumbnails/yrqwqD',\n 'https://img.clickviewapp.com/v2/thumbnails/K6pOmR',\n 'https://img.clickviewapp.com/v2/thumbnails/vYK3w4',\n 'https://img.clickviewapp.com/v2/thumbnails/agnD88',\n 'https://img.clickviewapp.com/v2/thumbnails/4rKmp7',\n 'https://img.clickviewapp.com/v2/thumbnails/0wM4r3',\n 'https://img.clickviewapp.com/v2/thumbnails/69A2jO',\n 'https://img.clickviewapp.com/v2/thumbnails/7m3Z3e',\n 'https://img.clickviewapp.com/v2/thumbnails/3bGL94',\n 'https://img.clickviewapp.com/v2/thumbnails/Y6jwLo',\n 'https://img.clickviewapp.com/v2/thumbnails/1MyPby'\n ]\n }\n};"],"names":["HardCoded"],"mappings":"AAAO,MAAMA,EAAY,CAkGvB,gBAAiB,CACf,QAAS,EAGT,WAAY,GACZ,aAAc,EACd,YAAa,GACb,cAAe,GAGf,cAAe,IACf,UAAW,IACX,QAAS,IACT,oBAAqB,GACrB,YAAa,GACb,cAAe,GACf,YAAa,GACb,cAAe,GACf,YAAa,GACb,YAAa,GACb,cAAe,GACf,WAAY,GACZ,aAAc,EAAA,EAEhB,UAAW,CAwBT,KAAM,WACN,OAAQ,UAAA,EAaV,OAAQ,CACN,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,gDACb,kBAAmB,qDACnB,oBAAqB,gDAAA,EAEvB,QAAS,CACP,aAAc,iDACd,YAAa,+CAAA,CAKjB,CAuCF"}
@@ -1,2 +0,0 @@
1
- const n={ratings(t){return{url:"/api/domain/v2/me/ratings",key:`ratings:${t}`,formatData:e=>{const a=e.sort((r,s)=>r.value-s.value);return t?a:a.filter(r=>r.code!=="E")}}}};export{n as R};
2
- //# sourceMappingURL=QfCSKVqV.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QfCSKVqV.chunk.js","sources":["../../../../libs/shared/src/flight-requests/RatingRequests.ts"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { Rating } from 'libs/shared/interfaces';\n\nexport const RatingRequests = {\n ratings(includeE?: boolean): Flight.Request {\n return {\n url: '/api/domain/v2/me/ratings',\n key: `ratings:${includeE}`,\n // v2/me/ratings doesn't support `query={orderby:value}`. Adding this due to time constraints\n formatData: (ratings: Rating[]) => {\n const resp = ratings.sort((a, b) => a.value - b.value);\n \n if (includeE)\n return resp;\n\n return resp.filter(r => r.code !== 'E');\n }\n };\n }\n};"],"names":["RatingRequests","includeE","ratings","resp","a","b"],"mappings":"AAIO,MAAMA,EAAiB,CAC5B,QAAQC,EAAoC,CAC1C,MAAO,CACL,IAAK,4BACL,IAAK,WAAWA,CAAQ,GAExB,WAAaC,GAAsB,CACjC,MAAMC,EAAOD,EAAQ,KAAK,CAACE,EAAGC,IAAMD,EAAE,MAAQC,EAAE,KAAK,EAErD,OAAIJ,EACKE,EAEFA,EAAK,OAAO,GAAK,EAAE,OAAS,GAAG,CACxC,CAAA,CAEJ,CACF"}
@@ -1,2 +0,0 @@
1
- import{ah as g,a1 as V,l as E,L as j,j as e}from"./app-CSgTTsBh.js";import{u as v,P,I as A}from"./Cu-wofRC.chunk.js";import{u as L,a as R,V as N}from"./CoRP6nOB.chunk.js";import{h as F}from"./-QmfGLIN.chunk.js";import{u as S}from"./hrQgoDjt.chunk.js";import{E as C}from"./BHWbXJt3.chunk.js";import{E as G}from"./CPvfK9ev.chunk.js";import{E as n}from"./DtnntJxI.chunk.js";import{a as I}from"./BhzF8k3V.chunk.js";import{a as M}from"./D4oCPyUC.chunk.js";import"./b7w0ESDo.chunk.js";import"./DHEsU9tx.chunk.js";import"./CMmQbESn.chunk.js";import"./Bod85SYB.chunk.js";import"./DOLtnwZR.chunk.js";import"./_sYSSSUN.chunk.js";import"./DY6LRP1V.chunk.js";import"./DMM-ZwkR.chunk.js";import"./Bx7TgL0C.chunk.js";import"./BlDVEZsX.chunk.js";import"./CljRBNOX.chunk.js";import"./pkzD5BEm.chunk.js";import"./h4x3qWQ8.chunk.js";import"./CY_ZEi17.chunk.js";import"./CTcJ39n0.chunk.js";import"./DEmNtjut.chunk.js";import"./DGoATT2r.chunk.js";import"./BklWIeq0.chunk.js";import"./gmJLp4bX.chunk.js";import"./Kj832An8.chunk.js";import"./6FhUNBfx.chunk.js";import"./CSqMWPmN.chunk.js";import"./BU7zesZa.chunk.js";import"./C48ktK5n.chunk.js";const b="exchange.mostRecent",m=j.encloseNamespace(b);function xe(){const c=g(),p=S(),o=V(n.exchange()),u=I("video-list"),{commonVideoProps:d}=L();E({title:m("title")});const{items:i,hasMore:h,isFetching:r,nextCursor:x}=v(o.data&&s,a,l);function s(t){return n.mostRecentVideos(o.data.id,t)}function a(t){return c(s(t))}function l(t,f){if(t===1)return F(f);p.error(m("error"))}return e.jsxs(R.Provider,{value:u,children:[e.jsxs("div",{className:"mb-2",children:[e.jsx(C,{}),e.jsx(G,{active:"most-recent"})]}),i?e.jsx(N,{videos:i,getVideoAppLink:M,presentationAudiences:null,getPreviewQuestionsAppLink:()=>null,hasPermissions:()=>!1,hideVideoGuidance:!0,commonVideoProps:d}):e.jsx("div",{className:"mx-n2",children:e.jsx(P,{})}),(h||r)&&e.jsx(A,{isFetching:r,fetchNext:a,nextCursor:x})]})}export{xe as ExchangeMostRecentView};
2
- //# sourceMappingURL=VKh9EG4H.chunk.js.map