@clickview/reports 0.69.0 → 0.69.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/bundles.json +2 -3
  61. package/dist/css/1VpVng8x.chunk.css +1 -0
  62. package/dist/css/BBwBgFf_.chunk.css +1 -0
  63. package/dist/css/BDijM1kt.chunk.css +1 -0
  64. package/dist/css/BMPwvOki.chunk.css +1 -0
  65. package/dist/css/BNt45Kgy.chunk.css +1 -0
  66. package/dist/css/BSGhUWzl.chunk.css +1 -0
  67. package/dist/css/BZ3_uhDP.chunk.css +1 -0
  68. package/dist/css/BaadNO4A.chunk.css +1 -0
  69. package/dist/css/BdUNjJqp.chunk.css +1 -0
  70. package/dist/css/BdeI0FAV.chunk.css +1 -0
  71. package/dist/css/BxcMGr8Y.chunk.css +1 -0
  72. package/dist/css/ByuL_xKJ.chunk.css +1 -0
  73. package/dist/css/C-A0Pj_7.chunk.css +1 -0
  74. package/dist/css/C4jMfPWU.chunk.css +1 -0
  75. package/dist/css/C7XoyEPr.chunk.css +1 -0
  76. package/dist/css/C8sxda3R.chunk.css +1 -0
  77. package/dist/css/CD1qrI1T.chunk.css +1 -0
  78. package/dist/css/CFO--d_R.chunk.css +1 -0
  79. package/dist/css/CX9nw8t8.chunk.css +1 -0
  80. package/dist/css/C_qGRdC2.chunk.css +1 -0
  81. package/dist/css/CdC6ugQR.chunk.css +1 -0
  82. package/dist/css/ClRRGXPb.chunk.css +1 -0
  83. package/dist/css/Cr1bwtZG.chunk.css +1 -0
  84. package/dist/css/DBlPz5Fw.chunk.css +1 -0
  85. package/dist/css/DDnpOnVB.chunk.css +1 -0
  86. package/dist/css/DFZQCLLg.chunk.css +1 -0
  87. package/dist/css/DJwAbl6l.chunk.css +1 -0
  88. package/dist/css/DWjg_0sz.chunk.css +1 -0
  89. package/dist/css/DYV9jjVn.chunk.css +1 -0
  90. package/dist/css/Dgeh4AqU.chunk.css +9 -0
  91. package/dist/css/DlOtoSz0.chunk.css +1 -0
  92. package/dist/css/DlxOgKUu.chunk.css +1 -0
  93. package/dist/css/DwgaDUzz.chunk.css +1 -0
  94. package/dist/css/FPQ_LmXH.chunk.css +1 -0
  95. package/dist/css/H09rC9gw.chunk.css +1 -0
  96. package/dist/css/LAFr2dPT.chunk.css +1 -0
  97. package/dist/css/Pg1TlYG6.chunk.css +1 -0
  98. package/dist/css/PsQn3-kb.chunk.css +1 -0
  99. package/dist/css/alkEuPrr.chunk.css +1 -0
  100. package/dist/css/k4DgCj_g.chunk.css +1 -0
  101. package/dist/en.json +1 -0
  102. package/dist/scripts/5JDMPiCK.chunk.js +2 -0
  103. package/dist/scripts/5JDMPiCK.chunk.js.map +1 -0
  104. package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
  105. package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
  106. package/dist/scripts/B8i2s45X.chunk.js +2 -0
  107. package/dist/scripts/B8i2s45X.chunk.js.map +1 -0
  108. package/dist/scripts/BBOfq9my.chunk.js +2 -0
  109. package/dist/scripts/BBOfq9my.chunk.js.map +1 -0
  110. package/dist/scripts/BE7zUNFh.chunk.js +3 -0
  111. package/dist/scripts/BE7zUNFh.chunk.js.map +1 -0
  112. package/dist/scripts/BIbP_ulq.chunk.js +380 -0
  113. package/dist/scripts/BIbP_ulq.chunk.js.map +1 -0
  114. package/dist/scripts/BJe4D9vd.chunk.js +2 -0
  115. package/dist/scripts/BJe4D9vd.chunk.js.map +1 -0
  116. package/dist/scripts/BKx5S6xk.chunk.js +2 -0
  117. package/dist/scripts/BKx5S6xk.chunk.js.map +1 -0
  118. package/dist/scripts/BMba67Uf.chunk.js +2 -0
  119. package/dist/scripts/BMba67Uf.chunk.js.map +1 -0
  120. package/dist/scripts/BUM8Ub4p.chunk.js +2 -0
  121. package/dist/scripts/BUM8Ub4p.chunk.js.map +1 -0
  122. package/dist/scripts/BW-tzVdx.chunk.js +2 -0
  123. package/dist/scripts/BW-tzVdx.chunk.js.map +1 -0
  124. package/dist/scripts/B_1LOG5E.chunk.js +2 -0
  125. package/dist/scripts/B_1LOG5E.chunk.js.map +1 -0
  126. package/dist/scripts/BaHk6QZB.chunk.js +2 -0
  127. package/dist/scripts/BaHk6QZB.chunk.js.map +1 -0
  128. package/dist/scripts/Bbpuxobz.chunk.js +2 -0
  129. package/dist/scripts/Bbpuxobz.chunk.js.map +1 -0
  130. package/dist/scripts/BfG3wCTD.chunk.js +2 -0
  131. package/dist/scripts/BfG3wCTD.chunk.js.map +1 -0
  132. package/dist/scripts/BfkzHBdb.chunk.js +2 -0
  133. package/dist/scripts/BfkzHBdb.chunk.js.map +1 -0
  134. package/dist/scripts/BiDX0yuI.chunk.js +2 -0
  135. package/dist/scripts/BiDX0yuI.chunk.js.map +1 -0
  136. package/dist/scripts/BkcNwg7K.chunk.js +2 -0
  137. package/dist/scripts/BkcNwg7K.chunk.js.map +1 -0
  138. package/dist/scripts/BlAGsOOw.chunk.js +2 -0
  139. package/dist/scripts/BlAGsOOw.chunk.js.map +1 -0
  140. package/dist/scripts/BmScDBcl.chunk.js +2 -0
  141. package/dist/scripts/BmScDBcl.chunk.js.map +1 -0
  142. package/dist/scripts/BnqNywwJ.chunk.js +2 -0
  143. package/dist/scripts/BnqNywwJ.chunk.js.map +1 -0
  144. package/dist/scripts/BrLXFCMV.chunk.js +2 -0
  145. package/dist/scripts/BrLXFCMV.chunk.js.map +1 -0
  146. package/dist/scripts/BsFynggy.chunk.js +2 -0
  147. package/dist/scripts/BsFynggy.chunk.js.map +1 -0
  148. package/dist/scripts/Bt3gUzzG.chunk.js +2 -0
  149. package/dist/scripts/Bt3gUzzG.chunk.js.map +1 -0
  150. package/dist/scripts/BuHHZnEg.chunk.js +2 -0
  151. package/dist/scripts/BuHHZnEg.chunk.js.map +1 -0
  152. package/dist/scripts/ByllnMKt.chunk.js +2 -0
  153. package/dist/scripts/ByllnMKt.chunk.js.map +1 -0
  154. package/dist/scripts/BzBFC5UE.chunk.js +2 -0
  155. package/dist/scripts/BzBFC5UE.chunk.js.map +1 -0
  156. package/dist/scripts/C4382UCA.chunk.js +2 -0
  157. package/dist/scripts/C4382UCA.chunk.js.map +1 -0
  158. package/dist/scripts/C6H2bU7H.chunk.js +2 -0
  159. package/dist/scripts/C6H2bU7H.chunk.js.map +1 -0
  160. package/dist/scripts/C6eAAaNL.chunk.js +2 -0
  161. package/dist/scripts/C6eAAaNL.chunk.js.map +1 -0
  162. package/dist/scripts/CAh5UtFh.chunk.js +2 -0
  163. package/dist/scripts/CAh5UtFh.chunk.js.map +1 -0
  164. package/dist/scripts/CFIWZ5KT.chunk.js +2 -0
  165. package/dist/scripts/CFIWZ5KT.chunk.js.map +1 -0
  166. package/dist/scripts/CKLfLzhr.chunk.js +34 -0
  167. package/dist/scripts/CKLfLzhr.chunk.js.map +1 -0
  168. package/dist/scripts/COgPEQMR.chunk.js +2 -0
  169. package/dist/scripts/COgPEQMR.chunk.js.map +1 -0
  170. package/dist/scripts/CRWOsqvB.chunk.js +2 -0
  171. package/dist/scripts/CRWOsqvB.chunk.js.map +1 -0
  172. package/dist/scripts/CU-I5G45.chunk.js +2 -0
  173. package/dist/scripts/CU-I5G45.chunk.js.map +1 -0
  174. package/dist/scripts/CV5ioe9U.chunk.js +2 -0
  175. package/dist/scripts/CV5ioe9U.chunk.js.map +1 -0
  176. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  177. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  178. package/dist/scripts/CX5q-0jT.chunk.js +2 -0
  179. package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
  180. package/dist/scripts/CXK1uNgx.chunk.js +2 -0
  181. package/dist/scripts/CXK1uNgx.chunk.js.map +1 -0
  182. package/dist/scripts/CXhesQTd.chunk.js +2 -0
  183. package/dist/scripts/CXhesQTd.chunk.js.map +1 -0
  184. package/dist/scripts/CaiGBx50.chunk.js +2 -0
  185. package/dist/scripts/CaiGBx50.chunk.js.map +1 -0
  186. package/dist/scripts/CbmUUNB4.chunk.js +2 -0
  187. package/dist/scripts/CbmUUNB4.chunk.js.map +1 -0
  188. package/dist/scripts/CdoC9Mtd.chunk.js +2 -0
  189. package/dist/scripts/CdoC9Mtd.chunk.js.map +1 -0
  190. package/dist/scripts/CdzMtbgC.chunk.js +2 -0
  191. package/dist/scripts/CdzMtbgC.chunk.js.map +1 -0
  192. package/dist/scripts/Cl51qIgL.chunk.js +2 -0
  193. package/dist/scripts/Cl51qIgL.chunk.js.map +1 -0
  194. package/dist/scripts/ClLzLF-_.chunk.js +2 -0
  195. package/dist/scripts/ClLzLF-_.chunk.js.map +1 -0
  196. package/dist/scripts/ClcYw2ra.chunk.js +42 -0
  197. package/dist/scripts/ClcYw2ra.chunk.js.map +1 -0
  198. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  199. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  200. package/dist/scripts/CpwEUwsc.chunk.js +2 -0
  201. package/dist/scripts/CpwEUwsc.chunk.js.map +1 -0
  202. package/dist/scripts/CqSaPgvV.chunk.js +2 -0
  203. package/dist/scripts/CqSaPgvV.chunk.js.map +1 -0
  204. package/dist/scripts/CqyCLTzN.chunk.js +2 -0
  205. package/dist/scripts/CqyCLTzN.chunk.js.map +1 -0
  206. package/dist/scripts/CrlegiVC.chunk.js +2 -0
  207. package/dist/scripts/CrlegiVC.chunk.js.map +1 -0
  208. package/dist/scripts/CsD4Xb6n.chunk.js +2 -0
  209. package/dist/scripts/CsD4Xb6n.chunk.js.map +1 -0
  210. package/dist/scripts/Ct187YvN.chunk.js +2 -0
  211. package/dist/scripts/Ct187YvN.chunk.js.map +1 -0
  212. package/dist/scripts/CwyVC768.chunk.js +2 -0
  213. package/dist/scripts/CwyVC768.chunk.js.map +1 -0
  214. package/dist/scripts/Cy4L5XsI.chunk.js +2 -0
  215. package/dist/scripts/Cy4L5XsI.chunk.js.map +1 -0
  216. package/dist/scripts/CzF-hI_x.chunk.js +2 -0
  217. package/dist/scripts/CzF-hI_x.chunk.js.map +1 -0
  218. package/dist/scripts/D1U_fPVs.chunk.js +2 -0
  219. package/dist/scripts/D1U_fPVs.chunk.js.map +1 -0
  220. package/dist/scripts/D9POXla0.chunk.js +2 -0
  221. package/dist/scripts/D9POXla0.chunk.js.map +1 -0
  222. package/dist/scripts/DAocQXXC.chunk.js +2 -0
  223. package/dist/scripts/DAocQXXC.chunk.js.map +1 -0
  224. package/dist/scripts/DD-2boW1.chunk.js +2 -0
  225. package/dist/scripts/DD-2boW1.chunk.js.map +1 -0
  226. package/dist/scripts/DFhb3ZfO.chunk.js +2 -0
  227. package/dist/scripts/DFhb3ZfO.chunk.js.map +1 -0
  228. package/dist/scripts/DFp9UBZB.chunk.js +4 -0
  229. package/dist/scripts/DFp9UBZB.chunk.js.map +1 -0
  230. package/dist/scripts/DHqmPVfK.chunk.js +2 -0
  231. package/dist/scripts/DHqmPVfK.chunk.js.map +1 -0
  232. package/dist/scripts/DJLuyZJi.chunk.js +2 -0
  233. package/dist/scripts/DJLuyZJi.chunk.js.map +1 -0
  234. package/dist/scripts/DK7va7iQ.chunk.js +2 -0
  235. package/dist/scripts/DK7va7iQ.chunk.js.map +1 -0
  236. package/dist/scripts/DMoPMSgN.chunk.js +2 -0
  237. package/dist/scripts/DMoPMSgN.chunk.js.map +1 -0
  238. package/dist/scripts/DNTR3iW5.chunk.js +2 -0
  239. package/dist/scripts/DNTR3iW5.chunk.js.map +1 -0
  240. package/dist/scripts/DNt9Tv5W.chunk.js +2 -0
  241. package/dist/scripts/DNt9Tv5W.chunk.js.map +1 -0
  242. package/dist/scripts/DQtbfeRV.chunk.js +2 -0
  243. package/dist/scripts/DQtbfeRV.chunk.js.map +1 -0
  244. package/dist/scripts/DRQ39FRr.chunk.js +2 -0
  245. package/dist/scripts/DRQ39FRr.chunk.js.map +1 -0
  246. package/dist/scripts/DTFFRoLz.chunk.js +2 -0
  247. package/dist/scripts/DTFFRoLz.chunk.js.map +1 -0
  248. package/dist/scripts/DU5sOcpt.chunk.js +3 -0
  249. package/dist/scripts/DU5sOcpt.chunk.js.map +1 -0
  250. package/dist/scripts/DWv8V3Lc.chunk.js +2 -0
  251. package/dist/scripts/DWv8V3Lc.chunk.js.map +1 -0
  252. package/dist/scripts/DYFT7QHy.chunk.js +2 -0
  253. package/dist/scripts/DYFT7QHy.chunk.js.map +1 -0
  254. package/dist/scripts/DZAYXeaL.chunk.js +2 -0
  255. package/dist/scripts/DZAYXeaL.chunk.js.map +1 -0
  256. package/dist/scripts/D_Erj5Yn.chunk.js +10 -0
  257. package/dist/scripts/D_Erj5Yn.chunk.js.map +1 -0
  258. package/dist/scripts/DeY3SuCM.chunk.js +2 -0
  259. package/dist/scripts/DeY3SuCM.chunk.js.map +1 -0
  260. package/dist/scripts/DecstRlc.chunk.js +8 -0
  261. package/dist/scripts/DecstRlc.chunk.js.map +1 -0
  262. package/dist/scripts/Df8zbYVK.chunk.js +10 -0
  263. package/dist/scripts/Df8zbYVK.chunk.js.map +1 -0
  264. package/dist/scripts/DgHfAOys.chunk.js +2 -0
  265. package/dist/scripts/DgHfAOys.chunk.js.map +1 -0
  266. package/dist/scripts/DgWHvURU.chunk.js +2 -0
  267. package/dist/scripts/DgWHvURU.chunk.js.map +1 -0
  268. package/dist/scripts/DmGrKXgL.chunk.js +2 -0
  269. package/dist/scripts/DmGrKXgL.chunk.js.map +1 -0
  270. package/dist/scripts/Dp_vnjo0.chunk.js +3 -0
  271. package/dist/scripts/Dp_vnjo0.chunk.js.map +1 -0
  272. package/dist/scripts/DuNeLCIS.chunk.js +15 -0
  273. package/dist/scripts/DuNeLCIS.chunk.js.map +1 -0
  274. package/dist/scripts/DxJzyDBL.chunk.js +2 -0
  275. package/dist/scripts/DxJzyDBL.chunk.js.map +1 -0
  276. package/dist/scripts/DxUueJN7.chunk.js +2 -0
  277. package/dist/scripts/DxUueJN7.chunk.js.map +1 -0
  278. package/dist/scripts/DykFRaNZ.chunk.js +4 -0
  279. package/dist/scripts/DykFRaNZ.chunk.js.map +1 -0
  280. package/dist/scripts/Fd0gT6QK.chunk.js +2 -0
  281. package/dist/scripts/Fd0gT6QK.chunk.js.map +1 -0
  282. package/dist/scripts/MaYDtnoS.chunk.js +2 -0
  283. package/dist/scripts/MaYDtnoS.chunk.js.map +1 -0
  284. package/dist/scripts/T4Chmiqz.chunk.js +2 -0
  285. package/dist/scripts/T4Chmiqz.chunk.js.map +1 -0
  286. package/dist/scripts/UWjf2h5X.chunk.js +2 -0
  287. package/dist/scripts/UWjf2h5X.chunk.js.map +1 -0
  288. package/dist/scripts/VSmYRJOj.chunk.js +2 -0
  289. package/dist/scripts/VSmYRJOj.chunk.js.map +1 -0
  290. package/dist/scripts/W5zJjbqu.chunk.js +2 -0
  291. package/dist/scripts/W5zJjbqu.chunk.js.map +1 -0
  292. package/dist/scripts/YDhSgJI6.chunk.js +2 -0
  293. package/dist/scripts/YDhSgJI6.chunk.js.map +1 -0
  294. package/dist/scripts/Yi67NERS.chunk.js +2 -0
  295. package/dist/scripts/Yi67NERS.chunk.js.map +1 -0
  296. package/dist/scripts/app-BqRx5tK8.js +228 -0
  297. package/dist/scripts/app-BqRx5tK8.js.map +1 -0
  298. package/dist/scripts/cRQEJA0-.chunk.js +2 -0
  299. package/dist/scripts/cRQEJA0-.chunk.js.map +1 -0
  300. package/dist/scripts/g3bqr4mt.chunk.js +6 -0
  301. package/dist/scripts/g3bqr4mt.chunk.js.map +1 -0
  302. package/dist/scripts/h4z9gHMh.chunk.js +2 -0
  303. package/dist/scripts/h4z9gHMh.chunk.js.map +1 -0
  304. package/dist/scripts/kGI4LAzn.chunk.js +6 -0
  305. package/dist/scripts/kGI4LAzn.chunk.js.map +1 -0
  306. package/dist/scripts/kt1K5Xlc.chunk.js +2 -0
  307. package/dist/scripts/kt1K5Xlc.chunk.js.map +1 -0
  308. package/dist/scripts/mdJqhxeb.chunk.js +2 -0
  309. package/dist/scripts/mdJqhxeb.chunk.js.map +1 -0
  310. package/dist/scripts/sFV5nxD4.chunk.js +2 -0
  311. package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
  312. package/dist/scripts/tCFcWStO.chunk.js +2 -0
  313. package/dist/scripts/tCFcWStO.chunk.js.map +1 -0
  314. package/dist/scripts/wND_WD0i.chunk.js +2 -0
  315. package/dist/scripts/wND_WD0i.chunk.js.map +1 -0
  316. package/dist/scripts/xkqdG021.chunk.js +2 -0
  317. package/dist/scripts/xkqdG021.chunk.js.map +1 -0
  318. package/dist/scripts/zaMwD-xl.chunk.js +3 -0
  319. package/dist/scripts/zaMwD-xl.chunk.js.map +1 -0
  320. package/package.json +5 -3
  321. package/typings/utils/imports.d.ts +1 -1
  322. package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
  323. package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
  324. package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
  325. package/dist/css/209-reports-cdae99d0ee.chunk.css +0 -11
  326. package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
  327. package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
  328. package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
  329. package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
  330. package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
  331. package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
  332. package/dist/css/6031-reports-d558076846.chunk.css +0 -6
  333. package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
  334. package/dist/css/6546-reports-f190450b10.chunk.css +0 -60
  335. package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
  336. package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
  337. package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
  338. package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
  339. package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
  340. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
  341. package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
  342. package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
  343. package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
  344. package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
  345. package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
  346. package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
  347. package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
  348. package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
  349. package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
  350. package/dist/css/reports-app-b4c4ec5632.css +0 -32
  351. package/dist/languages/en.json +0 -1
  352. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
  353. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
  354. package/dist/scripts/1456-019d93e620-reports.chunk.js +0 -1
  355. package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
  356. package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
  357. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
  358. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
  359. package/dist/scripts/209-d769572af9-reports.chunk.js +0 -1
  360. package/dist/scripts/2150-2cbadacf12-reports.chunk.js +0 -1
  361. package/dist/scripts/2217-eb2f8619c9-reports.chunk.js +0 -1
  362. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
  363. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
  364. package/dist/scripts/2997-62d81c3442-reports.chunk.js +0 -1
  365. package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
  366. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
  367. package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
  368. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
  369. package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
  370. package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
  371. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
  372. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
  373. package/dist/scripts/5051-72c53737e2-reports.chunk.js +0 -1
  374. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
  375. package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
  376. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
  377. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
  378. package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
  379. package/dist/scripts/6007-346d08e3ae-reports.chunk.js +0 -1
  380. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
  381. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
  382. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
  383. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
  384. package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
  385. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
  386. package/dist/scripts/645-e72b3d845e-reports.chunk.js +0 -1
  387. package/dist/scripts/6545-f07bcd318a-reports.chunk.js +0 -1
  388. package/dist/scripts/6546-b0ed7b3a19-reports.chunk.js +0 -2
  389. package/dist/scripts/6546-b0ed7b3a19-reports.chunk.js.LICENSE.txt +0 -1
  390. package/dist/scripts/6811-add7c7c1a2-reports.chunk.js +0 -1
  391. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
  392. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
  393. package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
  394. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
  395. package/dist/scripts/7747-d34db3ff10-reports.chunk.js +0 -2
  396. package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +0 -1
  397. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
  398. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
  399. package/dist/scripts/8393-686a7866e1-reports.chunk.js +0 -1
  400. package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
  401. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
  402. package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
  403. package/dist/scripts/8622-ca384ec4b0-reports.chunk.js +0 -1
  404. package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
  405. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
  406. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
  407. package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
  408. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
  409. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
  410. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
  411. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
  412. package/dist/scripts/9822-379ea90dd3-reports.chunk.js +0 -1
  413. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
  414. package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +0 -1
  415. package/dist/scripts/bundle-36f5b2e675.min.js +0 -2
  416. package/dist/scripts/bundle-36f5b2e675.min.js.LICENSE.txt +0 -108
  417. package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{e as V,u as h,a as v,L as f,j as o,k as j,m as T}from"./app-BqRx5tK8.js";import{u as b}from"./Cl51qIgL.chunk.js";import{u as x}from"./DxUueJN7.chunk.js";import{P as g}from"./CqSaPgvV.chunk.js";import{P as w}from"./DK7va7iQ.chunk.js";import{V as L}from"./BzBFC5UE.chunk.js";import{u as P}from"./C6H2bU7H.chunk.js";import{S as F}from"./mdJqhxeb.chunk.js";import{V as q,a as I}from"./kt1K5Xlc.chunk.js";import"./sFV5nxD4.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./DJLuyZJi.chunk.js";import"./DecstRlc.chunk.js";import"./D_Erj5Yn.chunk.js";import"./CwyVC768.chunk.js";import"./DHqmPVfK.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./DMoPMSgN.chunk.js";import"./xkqdG021.chunk.js";import"./CdzMtbgC.chunk.js";import"./B_1LOG5E.chunk.js";import"./BUM8Ub4p.chunk.js";const R="reportsVideos.schoolTopVideosView",d=f.encloseNamespace(R),S=100;function te(){var a,m,p;const l=V(),t=h(L.topStreams(S,l)),s=b(((a=t.data)==null?void 0:a.map(e=>e.objectId))??[],T.videos);x(t),v({title:d("videos")}),P(d("videos"));const i=t.hasCompleted&&!s.isFetching,r=!!((m=s.itemsArr)!=null&&m.length),u=(p=t.data)==null?void 0:p.map(e=>{var c;const n=(c=s.items)==null?void 0:c[e==null?void 0:e.objectId];return n?{count:e.count,object:n,contentType:e.contentType}:null}).filter(e=>!!e);return o.jsxs("div",{className:"pb-3",children:[o.jsx(F,{}),!i&&o.jsx(g,{variant:"video-views",children:o.jsx(w,{variant:"video-views"})}),i&&r&&o.jsx(q,{videos:u,getVideoAppLink:j}),i&&!r&&o.jsx(I,{})]})}export{te as SchoolTopVideosView};
2
+ //# sourceMappingURL=DZAYXeaL.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DZAYXeaL.chunk.js","sources":["../../src/apps/videos/views/school-top-videos/SchoolTopVideosView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { PartialTableContent } from 'shared/components/partial-loading/PartialTableContent';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { TopVideo, TopVideoV2 } from 'shared/interfaces';\nimport { getSchoolVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\nimport { VideoViewsTableEmptyState } from 'apps/videos/components/video-views-table/video-views-table-empty-state/VideoViewsTableEmptyState';\nimport { VideoViewsTable } from 'apps/videos/components/video-views-table/VideoViewsTable';\n\nconst namespace = 'reportsVideos.schoolTopVideosView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 100;\n\nexport function SchoolTopVideosView(): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const topStreams = Flight.useBasicFetch<TopVideoV2[]>(VideoViewsV2Requests.topStreams(LIMIT, requestFilter));\n\n const videos = useBatchFetch<VideoTypes>(\n topStreams.data?.map(v => v.objectId) ?? [],\n VideoRequests.videos\n );\n\n useHandleObjectError(topStreams);\n\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n\n const hasLoaded = (\n topStreams.hasCompleted &&\n !videos.isFetching\n );\n\n const hasVideoViews = !!videos.itemsArr?.length;\n \n const mappedVideos = topStreams.data?.map<TopVideo>(topStream => {\n const video = videos.items?.[topStream?.objectId];\n\n if (!video)\n return null;\n\n return {\n count: topStream.count,\n object: video,\n contentType: topStream.contentType\n };\n }).filter(v => !!v);\n\n return (\n <div className='pb-3'>\n <SchoolVideosNav />\n {!hasLoaded &&\n <PartialTable variant='video-views'>\n <PartialTableContent variant='video-views' />\n </PartialTable>\n }\n {hasLoaded && hasVideoViews &&\n <VideoViewsTable videos={mappedVideos} getVideoAppLink={getSchoolVideoAppLink} />\n }\n {hasLoaded && !hasVideoViews && <VideoViewsTableEmptyState />}\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","LIMIT","SchoolTopVideosView","requestFilter","useGetRequestFilter","topStreams","Flight.useBasicFetch","VideoViewsV2Requests","videos","useBatchFetch","_a","v","VideoRequests","useHandleObjectError","useSetPageMetadata","useSetHeaderTitle","hasLoaded","hasVideoViews","_b","mappedVideos","_c","topStream","video","jsxs","jsx","SchoolVideosNav","PartialTable","PartialTableContent","VideoViewsTable","getSchoolVideoAppLink","VideoViewsTableEmptyState"],"mappings":"u1BAuBA,MAAMA,EAAY,oCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAEtDG,EAAQ,IAEP,SAASC,IAAmC,WACjD,MAAMC,EAAgBC,EAAA,EAEhBC,EAAaC,EAAmCC,EAAqB,WAAWN,EAAOE,CAAa,CAAC,EAErGK,EAASC,IACbC,EAAAL,EAAW,OAAX,YAAAK,EAAiB,OAASC,EAAE,YAAa,CAAA,EACzCC,EAAc,MAAA,EAGhBC,EAAqBR,CAAU,EAE/BS,EAAmB,CAAE,MAAOf,EAAU,QAAQ,EAAG,EACjDgB,EAAkBhB,EAAU,QAAQ,CAAC,EAErC,MAAMiB,EACJX,EAAW,cACX,CAACG,EAAO,WAGJS,EAAgB,CAAC,GAACC,EAAAV,EAAO,WAAP,MAAAU,EAAiB,QAEnCC,GAAeC,EAAAf,EAAW,OAAX,YAAAe,EAAiB,IAAcC,GAAa,OAC/D,MAAMC,GAAQZ,EAAAF,EAAO,QAAP,YAAAE,EAAeW,GAAA,YAAAA,EAAW,UAExC,OAAKC,EAGE,CACL,MAAOD,EAAU,MACjB,OAAQC,EACR,YAAaD,EAAU,WAAA,EALhB,IAOX,GAAG,OAAOV,GAAK,CAAC,CAACA,GAEjB,OACEY,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAgB,EAChB,CAACT,GACAQ,EAAAA,IAACE,EAAA,CAAa,QAAQ,cACpB,SAAAF,EAAAA,IAACG,EAAA,CAAoB,QAAQ,aAAA,CAAc,CAAA,CAC7C,EAEDX,GAAaC,GACZO,EAAAA,IAACI,GAAgB,OAAQT,EAAc,gBAAiBU,EAAuB,EAEhFb,GAAa,CAACC,GAAiBO,EAAAA,IAACM,EAAA,CAAA,CAA0B,CAAA,EAC7D,CAEJ"}
@@ -0,0 +1,10 @@
1
+ import{j as t,l as c,c3 as Ue,v as it,r as Pe,F as P,a2 as le,h as k,L as $,a3 as D,a5 as T,c4 as st,aU as ot,aV as ct,i as q,T as lt,bx as Ge,by as rt,I as dt,aW as _,x as Me,c2 as Y,a0 as b,av as We,bI as ut,ah as re,bz as de,p as f,Z as Te,az as mt,bH as vt,ab as ht,bD as Le,at as qe,aa as gt}from"./app-BqRx5tK8.js";import{B as M,a as A,C as xt}from"./DeY3SuCM.chunk.js";import{B as Ye}from"./CwyVC768.chunk.js";import{u as ft}from"./DHqmPVfK.chunk.js";import{B as ue}from"./D9POXla0.chunk.js";import{g as yt,B as jt,I as me,a as ve}from"./DMoPMSgN.chunk.js";import{O as Se,c as _t,I as Ct}from"./xkqdG021.chunk.js";import{u as kt}from"./CdzMtbgC.chunk.js";import{a as he,u as Ke}from"./B_1LOG5E.chunk.js";import{T as bt}from"./BUM8Ub4p.chunk.js";function Nt(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805m.812-10.7.001-.004.007-.022.03-.097a5.83 5.83 0 0 1 .744-1.463c.565-.798 1.428-1.532 2.72-1.532 2.03 0 3.516 1.72 3.516 3.866 0 1.445-.713 2.686-2.089 4.119-.944.984-2.151 2.01-3.579 3.224-.575.49-1.187 1.01-1.832 1.57-.645-.56-1.257-1.08-1.832-1.57-1.428-1.214-2.635-2.24-3.58-3.224C5.214 12.11 4.5 10.869 4.5 9.423c0-2.146 1.487-3.865 3.517-3.865 1.29 0 2.154.734 2.719 1.532a5.8 5.8 0 0 1 .774 1.56l.007.022v.004a.5.5 0 0 0 .965 0"})})}function wt(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",fillOpacity:.9,d:"M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805"})})}const K={isFavouritedByCurrentUser(e){var n;return((n=e==null?void 0:e.favouritedBy)==null?void 0:n.data.length)===1},isFavouritedByUser(e,n){var a;return!!it.findWhere((a=e==null?void 0:e.favouritedBy)==null?void 0:a.data,{id:n==null?void 0:n.id})},updateVideoState(e,n,a){return{id:e.id,favouritedBy:{data:a?[{id:n.id}]:[],pagination:{limit:25,cursors:{next:"",previous:""}}}}},showFavouriteButton(e,n){var a;return(a=c.getCanBeConsumed(e))!=null&&a.canConsume?!!(n||Ue.isTabletOrMobile()||K.isFavouritedByCurrentUser(e)):!1}},$t="_favourited_19h9u_1",Pt="_favouriteButton_19h9u_1",Tt="_heart_19h9u_5",Lt="_heartOutline_19h9u_16",Z={favourited:$t,favouriteButton:Pt,heart:Tt,heartOutline:Lt},St="shared.favouriteButton",Ft=$.encloseNamespace(St);function ge(e){const n=ft(),a=K.isFavouritedByCurrentUser(e.video),[o,i]=Pe.useState(a);Pe.useEffect(()=>{i(a)},[a]);let s=`d-flex align-items-center justify-content-center cursor-pointer ${Z.favouriteButton} ${o?Z.favourited:""}`;e.className&&(s+=` ${e.className}`);function r(){const d=!o;function u(){function m(){return c.isClip(e.video)?d?"favouriteClipError":"unfavouriteClipError":c.isInteractive(e.video)?d?"favouriteInteractiveError":"unfavouriteInteractiveError":d?"favouriteVideoError":"unfavouriteVideoError"}n.error(Ft(m())),i(!d)}i(d),e.setFavourite(e.video,d,null,u,e.analyticsData,e.analyticsOptions)}return!P.isFunction(e.setFavourite)||!P.isFunction(e.canFavourite)?t.jsx(t.Fragment,{}):e.canFavourite(e.video)?t.jsxs(le,{className:s,onClick:r,tabIndex:e.preventFocus?-1:void 0,children:[t.jsx(k,{svg:wt,className:`svg-container ${Z.heart}`}),t.jsx(k,{svg:Nt,className:`svg-container ${Z.heartOutline}`})]}):t.jsx(t.Fragment,{})}function It(e){const n=c.getVideoProgress(e.video),a=n&&e.video.duration&&n/e.video.duration*1e5;return a?t.jsx("div",{className:"bg-primary h-100",style:{width:`${a}%`}}):t.jsx(t.Fragment,{})}const Vt="_bottomBar_575p1_1",Ot={bottomBar:Vt};function xe(e){return c.isVideo(e.video)?t.jsx("div",{className:Ot.bottomBar,children:t.jsx(It,{video:e.video})}):t.jsx(t.Fragment,{})}const Dt="d-inline-block svg-container",Ht="span";function zt(e){const{children:n,className:a=Dt,tagName:o=Ht,size:i=D.Standard,onClick:l,title:s,tooltipPlacement:r="right"}=e,d=o,u={className:`${a} svg-container ${i}`,onClick:P.isFunction(l)?l:null};return s?t.jsx(T,{title:s,placement:r,children:t.jsx(d,{...u,children:n})}):t.jsx(d,{...u,children:n})}const Bt="_std_1fcr4_1",Rt="_sm_1fcr4_5",At="_stdIcon_1fcr4_10",Et="_smIcon_1fcr4_21",H={std:Bt,sm:Rt,stdIcon:At,smIcon:Et};function fe(e){var n,a,o;return!c.isInteractive(e.video)&&!c.isClip(e.video)?t.jsx(t.Fragment,{}):!e.video._liteOwner&&!((n=e.video._isClickViewCurated)!=null&&n.value)?t.jsx(t.Fragment,{}):(a=e.video._isClickViewCurated)!=null&&a.value?t.jsx("div",{className:`${e.size==="sm"?H.sm:H.std} me-1 rounded-circle position-relative bg-white`,children:t.jsx(zt,{className:`me-1 ${e.size==="sm"?H.smIcon:H.stdIcon}`,children:t.jsx(st,{})})}):t.jsx("div",{className:`${e.size==="sm"?H.sm:H.std} me-1`,children:t.jsx(ot,{imageCdnUrl:e.imageCdnUrl,initials:ct.getInitials(e.video._liteOwner.name,e.video._liteOwner.surname),imageUrl:(o=e.video._liteOwner.avatar)==null?void 0:o.url})})}const Ut="_pluginHover_wpoz0_1",Gt={pluginHover:Ut},Mt="shared.pluginHover";function ye(e){return!e.isPlugin||e.isPluginPopup?t.jsx(t.Fragment,{}):t.jsx(q,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,onClick:e.onClick,className:`
2
+ position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer
3
+ ${Gt.pluginHover}
4
+ ${e.className?e.className:""}
5
+ `,children:t.jsx("span",{className:"position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white",children:t.jsx(lt,{namespace:Mt,phrase:"embed"})})})}const Wt="_padlock_z61gf_1",qt="_sm_z61gf_8",Fe={padlock:Wt,sm:qt};function je(e){const n=e.size==="sm"?D.Small:D.Standard;return t.jsx("div",{className:`${Fe.padlock} ${e.size==="sm"?Fe.sm:""} bg-white cursor-default d-flex align-items-center justify-content-center`,children:t.jsx(k,{svg:Ge,size:n})})}const Yt="_logo_1kz1f_1",Kt="_sm_1kz1f_9",Ie={logo:Yt,sm:Kt};ne.defaultProps={size:"md"};function ne(e){var i,l,s,r,d;if(!c.isVideo(e.video)||!e.companyLogoFallbackUrl)return t.jsx(t.Fragment,{});const n=(l=(i=e.video.productionCompanies)==null?void 0:i.data)==null?void 0:l[0],a=rt.createUrl(((s=n==null?void 0:n.logo)==null?void 0:s.url)??e.companyLogoFallbackUrl,{size:dt.Small}),o=yt(n.name,jt);return a?t.jsx("div",{children:t.jsx(T,{title:n==null?void 0:n.name,spanHack:!0,children:t.jsx("div",{className:`${Ie.logo} ${e.size==="sm"?Ie.sm:""} ${!((r=n==null?void 0:n.metadata)!=null&&r.colour)&&o}`,style:{backgroundImage:`url(${a})`,backgroundColor:(d=n==null?void 0:n.metadata)==null?void 0:d.colour}})})}):t.jsx(t.Fragment,{})}const ee={padNumber(e,n){let a=e.toString();if(a.length>=n)return a;for(n=n-a.length;n>0;)a="0"+a,n--;return a}},Xt={isSeries(e){return(e==null?void 0:e.typeId)===_.Series},buildSeriesSeasonEpisodeText(e,n,a){if(!e)return"";if(!n||!a)return e.toUpperCase();const o=ee.padNumber(n,2),i=ee.padNumber(a,2);return`${e.toUpperCase()} S${o} • E${i}`},getRating(e){var n;return(n=e._rating)==null?void 0:n.value}},Zt="_subText_5u663_1",Jt={subText:Zt};function Xe(e){const n=`text-uppercase text-truncate mb-0 ${Jt.subText} ${e.className}`;return e.appLink?t.jsx(q,{className:n,appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,title:e.title,ariaLabel:e.ariaLabel,children:e.children}):t.jsx("div",{className:n,title:e.title,"aria-label":e.ariaLabel,children:e.children})}const Qt="_appLink_1owb0_1",pt="_hoverUnderline_1owb0_4",_e={appLink:Qt,hoverUnderline:pt},en="shared.videoSubText",Ze=$.encloseNamespace(en);function tn(e){const{video:n}=e,{season:a}=n;if(!n.episodeNumber||!a)return t.jsx(t.Fragment,{});const o=ee.padNumber(a.number,2),i=ee.padNumber(n.episodeNumber,2);return t.jsxs("span",{className:`d-inline-block ${e.appLink?_e.hoverUnderline:""}`,children:[e.withSeriesTitle&&t.jsx(t.Fragment,{children:" "}),!!o&&`S${o} • `,"E",i]})}function nn(e){const n=c.getReleaseDate(e.video);return n?c.hasSeries(e.video)?t.jsx(t.Fragment,{children:` • ${n}`}):t.jsx(t.Fragment,{children:n}):t.jsx(t.Fragment,{})}function an(e){var m;const{appLink:n,video:a,className:o=""}=e,i=a==null?void 0:a.series,l=c.getReleaseDate(e.video);if(!(i!=null&&i.id)&&!l)return t.jsx(t.Fragment,{});const s=(i==null?void 0:i.id)&&n&&{...n,args:[i.id,Me.slugify(i.name)]},r={...e.analyticsData,id:i==null?void 0:i.id,name:i==null?void 0:i.name,videoId:a==null?void 0:a.id,videoName:a==null?void 0:a.name},d={...e.analyticsOptions,entity:We.Series,actionType:b.Click,descriptor:Y.Title},u=Xt.buildSeriesSeasonEpisodeText(i==null?void 0:i.name,(m=a.season)==null?void 0:m.number,a.episodeNumber);return t.jsxs(Xe,{appLink:s,className:`d-block ${_e.appLink} ${o}`,analyticsData:r,analyticsOptions:d,title:u,ariaLabel:`${Ze("ariaSeries")} ${u}`,children:[(i==null?void 0:i.name)&&i.name,t.jsx(tn,{...e,withSeriesTitle:!0}),t.jsx(nn,{...e})]})}function sn(e){var d,u;const{appLink:n,video:a,className:o=""}=e,i=(u=(d=a==null?void 0:a.productionCompanies)==null?void 0:d.data)==null?void 0:u[0];if(!(i!=null&&i.id))return t.jsx(t.Fragment,{});const l=(i==null?void 0:i.id)&&n&&{...n,args:[i.id,Me.slugify(i.name)]},s={...e.analyticsData,id:i==null?void 0:i.id,name:i==null?void 0:i.name,videoId:a==null?void 0:a.id,videoName:a==null?void 0:a.name},r={...e.analyticsOptions,entity:We.Company,actionType:b.Click,descriptor:Y.Title};return t.jsx(Xe,{appLink:l,className:`d-block ${_e.appLink} ${o}`,analyticsData:s,analyticsOptions:r,title:i.name,ariaLabel:`${Ze("ariaCompany")} ${i.name}`,children:i.name})}function Ce(e){const{type:n="series"}=e;return n==="none"?t.jsx(t.Fragment,{}):n==="series"?t.jsx(an,{...e}):t.jsx(sn,{...e})}function on(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M14.893 16.357a2.5 2.5 0 0 1 1.806-1.354 2.506 2.506 0 0 1 2.902 2.042 2.516 2.516 0 0 1-2.032 2.916 2.5 2.5 0 0 1-2.74-1.494l-2.603-5.208-2.57 5.138a2.504 2.504 0 0 1-2.769 1.564 2.516 2.516 0 0 1-2.031-2.916 2.506 2.506 0 0 1 2.901-2.042c.81.144 1.46.663 1.803 1.348l2.107-4.212-3.703-7.41a.504.504 0 0 1 .222-.675.5.5 0 0 1 .672.223l3.369 6.743 3.372-6.743a.5.5 0 0 1 .671-.223.504.504 0 0 1 .223.674l-3.707 7.412zm-9.053.863a1.51 1.51 0 0 0 1.221 1.752 1.505 1.505 0 0 0 1.743-1.227 1.51 1.51 0 0 0-1.22-1.752A1.505 1.505 0 0 0 5.84 17.22m11.555 1.752a1.51 1.51 0 0 0 1.221-1.752 1.505 1.505 0 0 0-1.743-1.227 1.51 1.51 0 0 0-1.22 1.752 1.505 1.505 0 0 0 1.742 1.227"})})}function Je(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M11.91 4.025c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.621 1.384 1.385 1.384h4.308c.763 0 1.384-.62 1.384-1.384v-3.77a6 6 0 0 0 2.462-4.846c0-3.308-2.692-6-6-6m2.616 12.77v.615h-5.23v-.615zm-4.77 2.307a.46.46 0 0 1-.46-.461v-.308h5.23v.308a.46.46 0 0 1-.461.461zm4.77-4.471v1.24h-5.23v-1.24a.46.46 0 0 0-.205-.384 5.07 5.07 0 0 1-2.257-4.222c0-2.8 2.277-5.077 5.077-5.077s5.077 2.278 5.077 5.077a5.07 5.07 0 0 1-2.257 4.222.46.46 0 0 0-.205.384m-2.396-2.616a.56.56 0 0 0 .107-.348v-.068q.004-.237.076-.402a1 1 0 0 1 .235-.317q.165-.153.454-.35.462-.316.757-.724.294-.41.295-.97 0-.591-.283-.993a1.8 1.8 0 0 0-.76-.61 2.6 2.6 0 0 0-1.05-.208q-.629 0-1.151.279-.525.277-.78.825a1.2 1.2 0 0 0-.12.522.44.44 0 0 0 .105.303q.105.118.3.118.162 0 .271-.091a.5.5 0 0 0 .157-.247q.162-.518.471-.704.309-.187.718-.187.343 0 .62.119.28.118.443.339.164.22.164.53 0 .27-.104.467-.106.195-.28.35a5 5 0 0 1-.391.305q-.281.195-.516.419a1.9 1.9 0 0 0-.378.498 1.3 1.3 0 0 0-.143.613v.193q0 .213.114.346.114.134.338.133.224 0 .33-.14m.088 2.081a.6.6 0 0 0 .17-.426.6.6 0 0 0-.17-.428.57.57 0 0 0-.424-.177q-.242 0-.416.177a.59.59 0 0 0-.174.428.6.6 0 0 0 .174.426q.174.18.416.18.252 0 .424-.18"})})}function Qe(e){return t.jsx("svg",{...e,children:t.jsx("path",{d:"M18.06 4c.519 0 .94.479.94 1.075v13.85c0 .594-.419 1.075-.94 1.075H5.94c-.519 0-.94-.479-.94-1.075V5.075C5 4.48 5.419 4 5.94 4zM9.256 5H5.882v.184l-.001.1v.418l-.001.175-.001 1.113v1.429l-.001.314v2.024l-.001.352-.001 3.162v.335l-.001 4.386h.105l.08.001h.36l.157.001h.571l.221.001h.741l.27.001h1.174l.313.001h1.63l.332.001 2.61.001h.305l3.362.001h.012v-.184l.001-.1v-.418l.001-.175.001-1.113v-1.429l.001-.314v-2.024l.001-.352.001-3.162v-.335l.001-4.374v-.012h-.105l-.08-.001h-.36l-.157-.001h-.571l-.221-.001h-.741l-.27-.001h-1.174l-.313-.001h-1.63l-.332-.001-2.61-.001zm1.438 8c.238 0 .431.224.431.5s-.193.5-.431.5H8.056c-.238 0-.431-.224-.431-.5s.193-.5.431-.5zm5.198-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5zm0-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5z",fill:"currentColor"})})}const cn="_topLeftContainer_z6mhb_1",ln="_draft_z6mhb_7",rn="_badge_z6mhb_10",dn="_svg_z6mhb_20",un="_text_z6mhb_29",mn="_sm_z6mhb_33",B={topLeftContainer:cn,draft:ln,badge:rn,svg:dn,text:un,sm:mn},vn="shared.typeBadge",ie=$.encloseNamespace(vn);function hn(e){switch(e){case _.Clip:return ie("clip");case _.Interactive:return ie("interactive");case _.Resource:return ie("resource");default:return""}}function gn(e){switch(e){case _.Clip:return on;case _.Interactive:return Je;case _.Resource:return Qe;default:return null}}function xn(e,n){switch(e){case _.Clip:return"bg-ultramarine";case _.Interactive:return n===ut.Draft?B.draft:"bg-green";case _.Resource:return"bg-indigo";default:return""}}ce.default={size:"md"};function ce(e){const n=`${B.badge} rounded-pill text-white ps-0 ${e.size==="sm"?B.sm:""}`;return t.jsx("div",{className:e.inContainer?"":B.topLeftContainer,children:t.jsxs("div",{className:`${n} ${xn(e.typeId,e.status)}`,children:[t.jsx(k,{className:`svg-container d-block ${B.svg}`,size:e.size==="sm"?D.Small:D.Standard,svg:gn(e.typeId)}),t.jsx("span",{className:B.text,children:hn(e.typeId)})]})})}ae.default={size:"md"};function ae(e){return c.isClip(e.video)?t.jsx(ce,{typeId:_.Clip,size:e.size,inContainer:!0}):c.isInteractive(e.video)?t.jsx(ce,{typeId:_.Interactive,status:e.video.status,size:e.size,inContainer:!0}):t.jsx(t.Fragment,{})}const fn="_hoverContainer_c9508_1",yn="_hovering_c9508_12",jn="_theatreModeOn_c9508_16",se={hoverContainer:fn,hovering:yn,theatreModeOn:jn};function ke(e){var l;const n=kt();if((l=n.useInitialize)==null||l.call(n,e),!n.hasProvider)return t.jsx(t.Fragment,{});if(n.mode==="picture-in-picture")return t.jsx(t.Fragment,{});if(e.mode==="hover"&&n.isOnPlayPage)return t.jsx(t.Fragment,{});if(e.location==="play-page"){const s=n.mode==="theatre"&&e.objectTypeId!==_.Interactive;return t.jsx("div",{className:s?`w-100 h-100 ${se.theatreModeOn}`:"",children:t.jsx(Se,{node:n.portalNode})})}const a=n.started;let o="rounded-3";e.location==="popout-video"&&(o="rounded-top-3");const i=`${se.hoverContainer} ${a?se.hovering:""} ${o} overflow-hidden`;return t.jsx("div",{className:i,children:t.jsx(Se,{node:n.portalNode})})}function pe(e){return t.jsx("svg",{...e,children:t.jsx("path",{fillRule:"evenodd",d:"M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12m23 0c0-6.075-4.925-11-11-11S1 5.925 1 12s4.925 11 11 11 11-4.925 11-11M9 7.498c0-.551.387-.756.847-.469l7.306 4.567c.468.292.46.77 0 1.058l-7.306 4.567c-.468.292-.847.074-.847-.47z",fill:"currentColor"})})}const _n="_overlayContainer_d3jn7_1",Cn="_topLeftContainer_d3jn7_9",kn="_topRightContainer_d3jn7_15",bn="_overlay_d3jn7_1",Nn="_downScale_d3jn7_39",wn="_title_d3jn7_45",$n="_gradient_d3jn7_49",Pn="_playIcon_d3jn7_58",w={overlayContainer:_n,topLeftContainer:Cn,topRightContainer:kn,overlay:bn,downScale:Nn,title:wn,gradient:$n,playIcon:Pn};function Tn(e){let n="mb-1";return e&&(n+=w.downScale),n}function Ln(e){var N,y,j;const{canNavigate:n,canConsume:a}=c.getCanBeConsumed(e.video),o=re.isObject((N=e.appLink)==null?void 0:N.params)?(y=e.appLink)==null?void 0:y.params:{},i={...e.analyticsOptions,entity:c.getAnalyticsEntity(e.video)},l=K.showFavouriteButton(e.video,e.hovering),s=c.isVideo(e.video),r=c.getRating(e.video),[d,u]=he({delay:100}),m=u&&a&&e.hoverToPlay,g={...e.analyticsData,id:e.video.id,name:e.video.name},v={...i,actionType:b.Click,descriptor:Y.Thumbnail};return t.jsx(T,{title:c.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:"",children:t.jsxs("div",{className:"position-relative rounded-3 overflow-hidden",ref:d,children:[t.jsx(ye,{isPlugin:e.commonVideoProps.isPlugin,isPluginPopup:e.commonVideoProps.isPluginPopup,className:"rounded-3",appLink:n?e.appLink:null,analyticsData:g,analyticsOptions:v}),l&&t.jsx("div",{className:w.topRightContainer,children:t.jsx(ge,{setFavourite:e.commonVideoProps.setFavourite,canFavourite:e.commonVideoProps.canFavourite,video:e.video,analyticsData:e.analyticsData,analyticsOptions:i})}),!n&&t.jsx("div",{className:w.topRightContainer,children:t.jsx(je,{})}),t.jsxs("div",{className:`${w.topLeftContainer} d-flex flex-no-wrap`,children:[e.showOwner&&t.jsx(fe,{video:e.video,imageCdnUrl:e.commonVideoProps.imageCdnUrl}),t.jsx(ae,{video:e.video}),t.jsx(ne,{video:e.video,companyLogoFallbackUrl:e.commonVideoProps.companyLogoFallbackUrl})]}),t.jsxs(ue,{data:c.getThumbnail(e.video),appLink:n?e.appLink:null,imageType:de.Thumbnails,imageOptions:e.imageOptions,preload:e.preload,className:w.gradient,alt:("series"in e.video&&((j=e.video.series)!=null&&j.name)?`${e.video.series.name}: `:"")+e.video.name,analyticsData:g,analyticsOptions:v,preventFocus:!0,children:[!!(e.hovering&&n)&&t.jsx(k,{className:w.playIcon,svg:pe}),t.jsx(me,{type:ve.Video}),t.jsx("div",{className:w.overlayContainer,children:t.jsxs("div",{className:w.overlay,children:[t.jsxs("div",{className:`${Tn(e.hovering)} ${w.title}`,children:[s&&t.jsx(Ce,{type:e.commonVideoProps.subTextType,className:"text-shadow clamp-1",video:e.video,appLink:null,analyticsOptions:null}),t.jsx("span",{className:"h6 text-reset text-shadow clamp-1",children:c.getTitle(e.video)})]}),t.jsx(xe,{video:e.video}),e.hovering&&t.jsx(Ye,{className:"mt-1",children:c.isVideo(e.video)&&t.jsxs(t.Fragment,{children:[t.jsx(M,{type:A.Rating,data:r}),e.video.hasSubtitle&&t.jsx("span",{className:"badge p-0",children:t.jsx(k,{svg:xt})}),t.jsx(M,{type:A.Interactive,data:e.video.hasInteractives}),t.jsx(M,{type:A.DurationExact,data:c.getDuration(e.video)})]})})]})})]}),m&&t.jsx(ke,{objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:o.context,contextId:o.contextId,moviesAndTv:o.mtv},e.video.id)]})})}const Sn=f.createContext({});function Fn(e,n,a){const[o,i]=f.useState(e),l=f.useRef(e?new Date:null);f.useEffect(()=>{if(!(!n||!a)&&!(!a.entity||!n.location))if(e)o||i(!0),l.current=new Date,Te.logUserAction(n,{...a,actionType:b.Hover});else{if(!o)return;const s=new Date().getTime()-l.current.getTime();l.current=null,Te.logUserAction({...n,timeHoveredInMilliseconds:s,timeHoveredInSeconds:s/1e3},{...a,actionType:b.Unhover})}},[e])}const J=8,In=1.2,Vn=(e,n,a,o=In)=>{const{x:i,y:l,width:s,height:r}=e,d=document.getElementById("content-width-reference");if(!d)return{};let u,m=n||s*o,g=n?n*(r/s):r*o,v=n?m/s:o;u=i-(m-s)/2,m<a&&(u=u-(a-m)/2,m=a,v=m/s,g=r*v);const N=l-(g-r)/2+window.scrollY;let y=u,j="center";return u-d.offsetLeft<J&&(y=i-J/2,j="8px"),d.offsetWidth+d.offsetLeft-(u+m)<J&&(y=n?i+s-n:i-s*(v-1)+J,j="calc(100% - 8px)"),{left:y,top:N,height:g,width:m,transformOrigin:j,position:"absolute",originalWidth:s,originalHeight:r}},On="_positionWrapper_gkmg7_1",Dn="_animationWrapper_gkmg7_4",Ve={positionWrapper:On,animationWrapper:Dn};function et(e){var V,U;const{hoverableComponent:n,componentProps:a,minHoverWidth:o,fixedHoverWidth:i,hoverScale:l}=e,{setPreviewContentNode:s}=f.useContext(Sn);s===void 0&&mt.throw(new vt("Please use VideoPreviewContext inside a VideoPreviewContextProvider"));const r=f.useMemo(()=>_t(),[]),[d,u]=he({delay:100}),[m,g]=Ke(),[v,N]=f.useState(!1),y=f.useRef(null),j=f.useRef(!1),C=u||g;Fn(C,e.analyticsData,e.analyticsOptions),f.useEffect(()=>{j.current!==C&&(s(C||v?r:null),j.current=C)},[C]);const{x:L,y:S,width:h,height:F}=((U=(V=y.current)==null?void 0:V.getBoundingClientRect)==null?void 0:U.call(V))||{},I=f.useMemo(()=>Vn({x:L,y:S,width:h,height:F},i,o,l),[L,S,h,F,l]),X=I?I.originalWidth/I.width:1,E=n;return t.jsxs("div",{ref:y,children:[t.jsx("div",{ref:d,children:t.jsx(E,{isHovering:!1,...a})}),(C||v)&&t.jsx(Ct,{node:r,children:t.jsx("div",{className:`${Ve.positionWrapper} ${Ve.animationWrapper}`,style:{"--scale":X,...I},ref:m,children:t.jsx(E,{isHovering:!0,hoverPositionConfig:I,cleanPortalNode:()=>s(null),...a})})})]})}et.ReferenceContainer=e=>t.jsx("div",{id:"content-width-reference",className:"flex-grow-1",children:e.children});function Hn(e){return e.audience?t.jsx("div",{className:`audience-label border rounded-pill d-inline-block px-2 text-nowrap
6
+ ${"border-"+e.border} ${e.className?e.className:""}`,children:e.audience.name}):t.jsx(t.Fragment,{})}const zn="_badgeContainer_1jc1x_1",Bn="_sm_1jc1x_24",Oe={badgeContainer:zn,sm:Bn};be.defaultProps={newDurationStyle:!0,size:"md"};function be(e){const n=c.getRating(e.video),a=!!e.audience&&e.size!=="sm",o=!a&&!e.hideRating&&!!n&&e.size!=="sm";return e.hideDuration&&!a&&!o?t.jsx(t.Fragment,{}):t.jsxs(Ye,{className:`${Oe.badgeContainer} ${e.size==="sm"?Oe.sm:""}`,children:[a&&t.jsx(Hn,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),o&&t.jsx(M,{type:A.Rating,data:n}),!e.hideDuration&&t.jsx(M,{type:e.newDurationStyle?A.DurationApproximate:A.DurationExact,data:e.duration||c.getDuration(e.video)})]})}function Rn(e){if(!e.yearGroups)return t.jsx(t.Fragment,{});const n=ht.mapRestrictionToText(e.video._restrictions,e.yearGroups),{canConsume:a}=c.getCanBeConsumed(e.video);return!a||!n?t.jsx(t.Fragment,{}):t.jsx(T,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:n,placement:e.tooltipPlacement||"top",children:t.jsx(k,{svg:Ge,size:e.size==="sm"?D.Small:D.Standard})})}const An="_dot_dlckk_1",En="_smallText_dlckk_6",Un="_title_dlckk_9",oe={dot:An,smallText:En,title:Un},Gn="shared.videoTitle",Mn=$.encloseNamespace(Gn),De=new Date;function Wn(e){return Le.isSame(e,De,"year")&&Le.isSame(e,De,"month")}te.defaultProps={titleSize:"h6",className:""};function te(e){var i;const n=e.video.dateReleased,a=n&&Wn(n),o=e.showNewVideoIndicator&&a&&((i=e.video._isClickViewCurated)==null?void 0:i.value);return t.jsxs(t.Fragment,{children:[t.jsx(T,{title:`${o?Mn("newVideo"):""}`,spanHack:!0,spanHackClassName:"d-inline-block",children:o&&t.jsx("span",{className:`rounded-circle bg-green d-inline-block me-1 ${oe.dot} ${e.titleSize==="h6"?oe.smallText:""}`})}),t.jsx("h2",{className:`${e.titleSize} ${oe.title} ${e.className} d-inline`,children:e.title||e.video.name}),e.showPadlock&&t.jsx(Rn,{video:e.video,yearGroups:e.yearGroups,size:e.lockSize})]})}const qn="_container_kefcx_1",Yn="_titleContainer_kefcx_4",He={container:qn,titleContainer:Yn};function ze(e){var i,l;const{video:n,appLink:a}=e,{canNavigate:o}=c.getCanBeConsumed(n);return t.jsx("div",{className:`mt-2 ${He.container}`,children:t.jsxs("div",{className:`d-flex flex-column ${He.titleContainer}`,children:[c.isVideo(n)&&t.jsx(Ce,{type:e.commonVideoProps.subTextType,className:"text-truncate",video:n,appLink:(l=(i=e.commonVideoProps).getSubTextAppLink)==null?void 0:l.call(i,e.video),analyticsOptions:{location:qe.VideoThumbnail}}),t.jsx(q,{className:"text-reset clamp-2 align-middle",appLink:o?a:null,children:t.jsx(te,{video:e.video,yearGroups:e.commonVideoProps.yearGroups,lockSize:"sm",showNewVideoIndicator:e.commonVideoProps.showNewVideoIndicator,showPadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience})})]})})}const Kn="_tag_1p8e8_1",Xn="_icon_1p8e8_5",Zn="_disabled_1p8e8_15",Jn="_active_1p8e8_18",G={tag:Kn,icon:Xn,disabled:Zn,active:Jn};function Ne(e){var n,a;return e.appLink?t.jsx(q,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions,className:`
7
+ p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer
8
+ text-decoration-none ${(n=e.theme)==null?void 0:n.container} ${G.tag} ${e.active?G.active:""}
9
+ `,children:t.jsx(Be,{...e})}):t.jsx("div",{className:`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${(a=e.theme)==null?void 0:a.container} ${G.tag} ${G.disabled}`,children:t.jsx(Be,{...e})})}function Be(e){var n;return t.jsxs(t.Fragment,{children:[t.jsx(k,{className:`${G.icon} rounded-circle bg-${e.iconVariant} text-white`,svg:e.svg}),t.jsx("span",{className:`ps-1 text-nowrap user-select-none ${(n=e.theme)==null?void 0:n.tabLabel}`,children:e.text})]})}function Qn(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024"})})}const pn="shared.classroomGuideTag";function ea(e){var n;return!e.video||c.isInteractive(e.video)||c.isClip(e.video)?t.jsx(t.Fragment,{}):(n=e.video._hasCurriculumLinks)!=null&&n.value?t.jsx(Ne,{theme:{container:"classroom-guide-tag",tabLabel:"classroom-guide-tag-label"},svg:Qn,iconVariant:"navy",text:$.getPhrase(pn,"curriculum"),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:"curriculum",...c.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:b.Click,entity:c.getAnalyticsEntity(e.video),...e.analyticsOptions}}):t.jsx(t.Fragment,{})}const ta="shared.interactivesTag";function na(e){var a;if(!c.showInteractivesGuidance(e.video))return t.jsx(t.Fragment,{});const n=!c.isInteractive(e.video)&&(((a=e.video.interactives)==null?void 0:a.data.length)||0);return t.jsx(Ne,{svg:Je,iconVariant:"green",text:$.getPhrase(ta,"interactives",{smartCount:n}),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:"interactive",videoGuidanceTotalItems:n,...c.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:b.Click,entity:c.getAnalyticsEntity(e.video),...e.analyticsOptions}})}const aa="shared.resourcesTag";function ia(e){var n,a;return c.isInteractive(e)?0:(((n=e.resources)==null?void 0:n.data.length)||0)+(((a=e.links)==null?void 0:a.data.length)||0)}function sa(e){if(!c.showResourcesGuidance(e.video))return t.jsx(t.Fragment,{});const n=ia(e.video);return t.jsx(Ne,{svg:Qe,iconVariant:"indigo",text:$.getPhrase(aa,"resources",{smartCount:n}),appLink:e.appLink,appLinkAnalyticsData:{videoGuidanceType:"resource",videoGuidanceTotalItems:n,...c.getAnalyticsData(e.video),...e.analyticsData},appLinkAnalyticsOptions:{actionType:b.Click,entity:c.getAnalyticsEntity(e.video),...e.analyticsOptions}})}function oa(e){var a,o,i,l,s,r;const n=c.showInteractivesGuidance(e.video)&&c.showResourcesGuidance(e.video);return t.jsxs("div",{className:`${e.containerClassName} ${n?e.responsiveClassName:""}`,children:[t.jsx(ea,{appLink:(o=(a=e.commonVideoProps).getClassroomGuideAppLink)==null?void 0:o.call(a,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),t.jsx(sa,{appLink:(l=(i=e.commonVideoProps).getResourceGuidanceAppLink)==null?void 0:l.call(i,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),t.jsx(na,{appLink:(r=(s=e.commonVideoProps).getInteractiveGuidanceAppLink)==null?void 0:r.call(s,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions})]})}const ca="_button_tlbos_1",Re={button:ca},la="shared.removeVideoButton";function ra(e){const n=e.removeButtonTooltip||$.getPhrase(la,"removeFromRow");return t.jsx("div",{className:"me-2",children:t.jsx(T,{title:n,spanHack:!0,children:t.jsx(le,{onClick:e.onClickRemove,className:`d-flex align-items-center justify-content-center ${Re.button}`,tabIndex:e.preventFocus?-1:void 0,children:t.jsx(k,{svg:gt,className:`svg-container ${Re.heart}`})})})})}const da="_topLeftContainer_1t9d5_1",ua="_details_1t9d5_7",ma="_isHovering_1t9d5_11",va="_videoGuidanceTags_1t9d5_14",ha="_responsiveGuidance_1t9d5_21",ga="_topRightContainer_1t9d5_35",z={topLeftContainer:da,details:ua,isHovering:ma,videoGuidanceTags:va,responsiveGuidance:ha,topRightContainer:ga},xa=e=>{var S;const{video:n,appLink:a,imageOptions:o,preload:i,isHovering:l,hoverToPlay:s}=e,r=re.isObject(a==null?void 0:a.params)?a==null?void 0:a.params:{},{canNavigate:d,canConsume:u}=c.getCanBeConsumed(n);f.useEffect(()=>()=>{var h;(h=e.cleanPortalNode)==null||h.call(e)},[]);function m(h){var F;h.preventDefault(),(F=e.onClickRemove)==null||F.call(e)}let g="position-relative bg-white";e.extraClasses&&(g+=` ${e.extraClasses}`),l&&(g+=" rounded-3 shadow-lg");const v={...e.analyticsOptions,entity:c.getAnalyticsEntity(n)},N=e.isHovering&&u&&s,y=K.showFavouriteButton(e.video,l);function j(){return P.isFunction(e.onClickRemove)?Ue.isTabletOrMobile()?!0:l:!1}const C={...e.analyticsData,id:n.id,name:n.name},L={...v,actionType:b.Click,descriptor:Y.Thumbnail};return t.jsxs("div",{className:g,children:[t.jsxs("div",{className:z.topRightContainer,children:[j()&&t.jsx(ra,{onClickRemove:m,removeButtonTooltip:e.removeButtonTooltip,preventFocus:!0}),y&&t.jsx(ge,{setFavourite:e.commonVideoProps.setFavourite,canFavourite:e.commonVideoProps.canFavourite,video:n,analyticsData:e.analyticsData,analyticsOptions:v,preventFocus:!0}),!d&&t.jsx(T,{title:c.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:"",children:t.jsx(je,{})})]}),t.jsxs("div",{className:"position-relative",children:[t.jsx(ye,{isPlugin:e.commonVideoProps.isPlugin,isPluginPopup:e.commonVideoProps.isPluginPopup,className:l?"rounded-top-3":"rounded-3",onClick:()=>{var h;return(h=e.cleanPortalNode)==null?void 0:h.call(e)},appLink:d?a:null,analyticsData:C,analyticsOptions:L}),t.jsxs(ue,{onClick:()=>{var h;return(h=e.cleanPortalNode)==null?void 0:h.call(e)},data:c.getThumbnail(n),appLink:d?a:null,imageType:de.Thumbnails,imageOptions:o,preload:i,alt:("series"in n&&((S=n.series)!=null&&S.name)?`${n.series.name}: `:"")+n.name,analyticsData:C,analyticsOptions:L,preventFocus:!e.hideTitle,appLinkClassName:`position-absolute top-0 start-0 h-100 w-100 overflow-hidden ${l?"rounded-top-3":"rounded-3"}`,imageClassName:l?"rounded-top-3":"rounded-3",children:[t.jsx(me,{type:ve.Video}),t.jsxs("div",{className:"p-absolute w-100 h-100 text-white",children:[t.jsxs("div",{className:`${z.topLeftContainer} d-flex flex-no-wrap`,children:[e.showOwner&&t.jsx(fe,{video:n,imageCdnUrl:e.commonVideoProps.imageCdnUrl}),t.jsx(ae,{video:n}),t.jsx(ne,{video:n,companyLogoFallbackUrl:e.commonVideoProps.companyLogoFallbackUrl})]}),t.jsx(be,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),t.jsx(xe,{video:n})]})]}),N&&t.jsx(ke,{objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:r.context,contextId:r.contextId,moviesAndTv:r.mtv,location:"popout-video"},e.video.id)]}),!l&&!e.hideTitle&&t.jsx(ze,{...e}),t.jsx("div",{className:`${z.details} ${l?`${z.isHovering} box-shadow`:""}`,children:l&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:`${l?z.videoGuidanceTags:""}`,children:[t.jsx(ze,{...e}),e.showVideoGuidance&&l&&t.jsx(oa,{commonVideoProps:e.commonVideoProps,video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,responsiveClassName:z.responsiveGuidance,containerClassName:"d-flex justify-content-start align-items-center pt-2"})]})})})]})};function fa(e){return t.jsx(t.Fragment,{children:t.jsx(et,{hoverableComponent:xa,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:{...e.analyticsData,id:e.video.id,name:e.video.name},analyticsOptions:{...e.analyticsOptions,entity:c.getAnalyticsEntity(e.video)}})})}const ya="_mask_1jupb_1",ja="_small_1jupb_10",_a="_video_1jupb_10",Ca="_playlist_1jupb_18",ka="_maskContainer_1jupb_28",W={mask:ya,small:ja,video:_a,playlist:Ca,maskContainer:ka};var tt=(e=>(e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series",e))(tt||{});function ba(e){return e===0?W.video:e===1?W.playlist:""}function Na(e){return e===0?pe:null}nt.defaults={size:"md"};function nt(e){const{type:n,size:a}=e,o=ba(n),i=Na(n);return t.jsxs("div",{className:`${W.maskContainer} ${a==="sm"?W.small:""}`,children:[t.jsx("div",{className:W.mask}),t.jsx(k,{svg:i,className:o})]})}const wa="_unchecked_vv53a_1",$a="_outline_vv53a_5",Pa="_checked_vv53a_20",Ta="_checkMark_vv53a_27",Q={unchecked:wa,outline:$a,checked:Pa,checkMark:Ta};var La=(e=>(e.None="None",e.Complete="Complete",e.Incomplete="Incomplete",e))(La||{});at.defaultProps={style:"filled"};function at(e){const[n,a]=f.useState(e.status==="Complete");f.useEffect(()=>{a(e.status==="Complete")},[e.status]);let o=`cursor-pointer rounded-circle ${n?Q.checked:Q.unchecked}`;e.className&&(o+=` ${e.className}`),e.style==="outline"&&(o+=` ${Q.outline}`);function i(){return!!e.status&&e.status!=="None"&&P.isFunction(e.setStatus)}function l(){const s=!n;a(s);const r=s?"Complete":"Incomplete";e.setStatus(r).catch(()=>{a(!s)})}return i()?t.jsx(le,{className:o,onClick:l,disabled:e.disabled,children:t.jsx(k,{svg:bt,className:`svg-container ${Q.checkMark}`})}):t.jsx(t.Fragment,{})}const Sa="_container_mn7d4_1",Fa="_action_mn7d4_10",p={container:Sa,action:Fa};function Ia(e){var n;return!!(!((n=c.getCanBeConsumed(e.video))!=null&&n.canConsume)||P.isFunction(e.setFavourite)&&P.isFunction(e.canFavourite)||P.isFunction(e.setCheckMarkStatus))}function Va(e){const{canNavigate:n}=c.getCanBeConsumed(e.video);return n?Ia(e)?t.jsxs("div",{className:`${p.container} d-flex align-items-center`,children:[t.jsx(ge,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:p.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,preventFocus:!0}),t.jsx(at,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:p.action})]}):t.jsx(t.Fragment,{}):t.jsx("div",{className:p.container,children:t.jsx(je,{size:e.size})})}var R=(e=>(e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent",e))(R||{});const Oa="_titleOverlay_f9p1o_1",Da="_clip_f9p1o_11",Ha="_interactive_f9p1o_18",za="_titleBelow_f9p1o_25",Ba="_overlayContainer_f9p1o_29",Ra="_topLeftContainer_f9p1o_36",Aa="_gradient_f9p1o_42",O={titleOverlay:Oa,clip:Da,interactive:Ha,titleBelow:za,overlayContainer:Ba,topLeftContainer:Ra,gradient:Aa},Ea="shared.staticVideoThumbnail";function Ae(e){var d,u;const{type:n,video:a,textPosition:o}=e,i=n==="static",l=o===R.Overlay,{canNavigate:s}=c.getCanBeConsumed(e.video);let r="";return l?(r=O.titleOverlay,s&&(c.isClip(a)&&(r+=" "+O.clip),c.isInteractive(a)&&(r+=" "+O.interactive))):r=O.titleBelow,t.jsxs("div",{className:r,children:[c.isVideo(a)&&t.jsx(Ce,{type:i?e.commonVideoProps.subTextType:"series",className:l?"text-shadow clamp-1":"clamp-2",video:a,appLink:i&&!l?(u=(d=e.commonVideoProps).getSubTextAppLink)==null?void 0:u.call(d,e.video):null,analyticsOptions:{location:qe.VideoThumbnail}}),l||!s||!i?t.jsx("span",{className:"h6 text-reset clamp-1",children:t.jsx(te,{video:a,title:a.name??$.getPhrase(Ea,"videoUnavailable"),showNewVideoIndicator:i&&e.commonVideoProps.showNewVideoIndicator,showPadlock:i&&!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience})}):t.jsx(q,{className:"h6 text-reset clamp-2",appLink:e.appLink,children:t.jsx(te,{video:a,showNewVideoIndicator:e.commonVideoProps.showNewVideoIndicator,showPadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience})})]})}function Ee(e){var V,U,we;const{type:n,video:a,textPosition:o,imageOptions:i,preload:l}=e,s=n==="static",r=s&&re.isObject((V=e.appLink)==null?void 0:V.params)?(U=e.appLink)==null?void 0:U.params:{},[d,u]=Ke(),[m,g]=he({delay:100}),{canNavigate:v,canConsume:N}=c.getCanBeConsumed(a);function y(x){d.current=x,m.current=x}const j=s&&g&&N&&e.hoverToPlay;function C(){var x,$e;if(s)return!e.disableFavourite&&(($e=(x=e.commonVideoProps).canFavourite)==null?void 0:$e.call(x,e.video))&&K.showFavouriteButton(a,u)}function L(){let x="position-relative";return x+=s&&e.appLink&&v?" cursor-pointer":"",e.extraClasses&&(x+=` ${e.extraClasses}`),o===R.Overlay&&(x+=" rounded overflow-hidden"),x}function S(){let x=`overflow-hidden ${e.size==="sm"?"rounded":"rounded-3"}`;return e.imageClassName&&(x+=` ${e.imageClassName}`),o===R.Overlay&&(x+=` ${O.gradient}`),x}const h=s?{...e.analyticsOptions,entity:c.getAnalyticsEntity(a)}:{},F=s&&!!e.appLink&&!e.hideMask&&v,I=s?c.getPrivacyReasoning(e.video,e.showSignIn):"",X=s?{...e.analyticsData,id:a.id,name:a.name}:{},E={...h,actionType:b.Click,descriptor:Y.Thumbnail};return t.jsx(T,{title:I,spanHack:!0,spanHackClassName:"",children:t.jsxs("div",{className:L(),ref:y,children:[s&&t.jsx(ye,{isPlugin:e.commonVideoProps.isPlugin,isPluginPopup:e.commonVideoProps.isPluginPopup,className:e.size==="sm"?"rounded":"rounded-3",appLink:v?e.appLink:null,analyticsData:X,analyticsOptions:E}),t.jsx(Va,{video:a,checkMarkStatus:!s&&e.checkMarkStatus,setCheckMarkStatus:!s&&e.setCheckMarkStatus,setFavourite:s&&e.commonVideoProps.setFavourite,canFavourite:C,analyticsData:s&&e.analyticsData,analyticsOptions:s&&h,size:e.size}),t.jsxs(ue,{data:c.getThumbnail(a),appLink:s&&v?e.appLink:null,onClick:s&&v?e.onClick:void 0,imageType:de.Thumbnails,imageOptions:i,preload:l,className:S(),alt:("series"in a&&((we=a.series)!=null&&we.name)?`${a.series.name}: `:"")+a.name,analyticsData:X,analyticsOptions:E,preventFocus:!0,children:[F&&t.jsx(nt,{type:tt.Video,size:e.size}),t.jsx(me,{type:ve.Video}),t.jsxs("div",{className:O.overlayContainer,children:[o===R.Overlay&&t.jsx(Ae,{...e}),t.jsxs("div",{className:`${O.topLeftContainer} d-flex flex-no-wrap`,children:[s&&e.showOwner&&t.jsx(fe,{video:a,imageCdnUrl:e.commonVideoProps.imageCdnUrl}),!e.hideVideoTypeBadge&&t.jsx(ae,{video:a,size:e.size}),s&&t.jsx(ne,{video:a,companyLogoFallbackUrl:e.commonVideoProps.companyLogoFallbackUrl,size:e.size})]}),!e.hideBottomBar&&t.jsx(xe,{video:a}),t.jsx(be,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size})]})]}),j&&t.jsx(ke,{objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:r.context,contextId:r.contextId,moviesAndTv:r.mtv},e.video.id),o===R.Below&&t.jsx(Ae,{...e})]})})}Ua.defaultProps={hideRating:!0,size:"md",hoverToPlay:!1,showOwner:!0};function Ua(e){switch(e.type){case"static":return t.jsx(Ee,{...e});case"cosmetic":return t.jsx(Ee,{...e});case"expandable":return t.jsx(Ln,{...e});case"popout":return t.jsx(fa,{...e});default:return}}export{La as C,R as T,Ua as V,Ce as a,Xe as b};
10
+ //# sourceMappingURL=D_Erj5Yn.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D_Erj5Yn.chunk.js","sources":["../../../../libs/shared/src/images/svg/objects/HeartOutlineSvg.tsx","../../../../libs/shared/src/images/svg/objects/HeartSvg.tsx","../../../../libs/shared/src/utils/FavouriteHelpers.ts","../../../../libs/shared/src/components/favourite-button/FavouriteButton.tsx","../../../../libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","../../../../libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","../../../../libs/shared/src/components/svg-container/SvgContainer2.tsx","../../../../libs/shared/src/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar.tsx","../../../../libs/shared/src/components/thumbnails/plugin-hover/PluginHover.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","../../../../libs/shared/src/utils/NumberHelper.ts","../../../../libs/shared/src/utils/SeriesHelper.ts","../../../../libs/shared/src/components/title-sub-text/TitleSubText.tsx","../../../../libs/shared/src/components/video-sub-text/VideoSubText.tsx","../../../../libs/shared/src/images/svg/objects/ClipSvg.tsx","../../../../libs/shared/src/images/svg/objects/InteractiveSvg.tsx","../../../../libs/shared/src/images/svg/objects/ResourcesSvg.tsx","../../../../libs/shared/src/components/type-badge/TypeBadge.tsx","../../../../libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","../../../../libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","../../../../libs/shared/src/images/svg/actions/PlayCircleSvg.tsx","../../../../libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","../../../../libs/shared/src/context/VideoPreviewContext.tsx","../../../../libs/shared/src/hooks/UseHoverLogger.ts","../../../../libs/shared/src/components/hover-to-portal-container/hoverToPortalContainerUtil.ts","../../../../libs/shared/src/components/hover-to-portal-container/HoverToPortalContainer.tsx","../../../../libs/shared/src/components/audience-label/AudienceLabel.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","../../../../libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","../../../../libs/shared/src/components/video-title/VideoTitle.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","../../../../libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/components/video-guidance/classroom-guide/ClassroomGuideTag.tsx","../../../../libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","../../../../libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","../../../../libs/shared/src/components/video-list/components/video-guidance/VideoItemGuidance.tsx","../../../../libs/shared/src/components/thumbnails/remove-button/RemoveVideoButton.tsx","../../../../libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","../../../../libs/shared/src/components/mask/Mask.tsx","../../../../libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","../../../../libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","../../../../libs/shared/src/enums/ThumbnailTextPosition.ts","../../../../libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","../../../../libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx"],"sourcesContent":["import React from 'react';\n\nexport function HeartOutlineSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805m.812-10.7.001-.004.007-.022.03-.097a5.83 5.83 0 0 1 .744-1.463c.565-.798 1.428-1.532 2.72-1.532 2.03 0 3.516 1.72 3.516 3.866 0 1.445-.713 2.686-2.089 4.119-.944.984-2.151 2.01-3.579 3.224-.575.49-1.187 1.01-1.832 1.57-.645-.56-1.257-1.08-1.832-1.57-1.428-1.214-2.635-2.24-3.58-3.224C5.214 12.11 4.5 10.869 4.5 9.423c0-2.146 1.487-3.865 3.517-3.865 1.29 0 2.154.734 2.719 1.532a5.8 5.8 0 0 1 .774 1.56l.007.022v.004a.5.5 0 0 0 .965 0'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function HeartSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillOpacity={0.9}\n d='M11.67 19.376a.5.5 0 0 0 .66 0c.732-.64 1.435-1.239 2.1-1.805 1.453-1.235 2.722-2.314 3.703-3.335 1.443-1.504 2.367-2.984 2.367-4.812 0-2.588-1.83-4.866-4.517-4.866-1.736 0-2.865 1.008-3.535 1.954a7 7 0 0 0-.448.733 7 7 0 0 0-.448-.733c-.67-.946-1.8-1.954-3.535-1.954C5.33 4.558 3.5 6.836 3.5 9.424c0 1.828.924 3.308 2.367 4.812.98 1.02 2.25 2.1 3.703 3.335.665.566 1.368 1.165 2.1 1.805'\n />\n </svg>\n );\n}\n","import { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CurrentUser, User, Video, VideoTypes } from 'libs/shared/interfaces';\n\nimport { VideoHelper } from './VideoHelper';\n\nexport const FavouriteHelper = {\n\n /**\n * This helper is based on a *critical* assumption that the with statement\n * retrieving the favouritedBy collection uses a filter for the current user's id.\n * \n * The reason we're not passing the current user as an arg is that we would need to \n * drill the user object all the way down to low level componenets.\n * \n * @param object \n */\n isFavouritedByCurrentUser(object: HashObject): boolean {\n return !!(object?.favouritedBy?.data.length === 1);\n },\n\n /**\n * Determine whether the user has favourited the object\n * \n * @param object \n */\n isFavouritedByUser(object: HashObject, user: User): boolean {\n return !!(ArrayHelper.findWhere(object?.favouritedBy?.data, { id: user?.id }));\n },\n\n updateVideoState(video: VideoTypes, user: CurrentUser | User, shouldFavourite: boolean): VideoTypes {\n return {\n id: video.id,\n favouritedBy: {\n data: shouldFavourite ? [{ id: user.id } as User] : [],\n pagination: { limit: 25, cursors: { next: '', previous: '' } }\n }\n };\n },\n\n showFavouriteButton(video: Video, isHovering: boolean): boolean {\n if (!VideoHelper.getCanBeConsumed(video)?.canConsume)\n return false;\n\n if (isHovering)\n return true;\n\n if (UserAgentHelper.isTabletOrMobile())\n return true;\n\n if (FavouriteHelper.isFavouritedByCurrentUser(video))\n return true;\n\n return false;\n }\n};\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { HeartOutlineSvg } from 'libs/shared/images/svg/objects/HeartOutlineSvg';\nimport { HeartSvg } from 'libs/shared/images/svg/objects/HeartSvg';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.module.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n preventFocus?: boolean;\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} tabIndex={props.preventFocus ? -1 : undefined}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svg={HeartSvg}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svg={HeartOutlineSvg}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.module.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport { SvgContainerSize } from './SvgContainer'; // TODO: Move this enum in here\n\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\nconst DEFAULT_TAG_NAME = 'span';\n\ninterface SvgContainerProps2 {\n size?: SvgContainerSize;\n className?: string;\n tagName?: React.ElementType;\n onClick?: (...args: any[]) => void;\n title?: string;\n tooltipPlacement?: Placement;\n}\n\n/**\n * @deprecated please use SvgContainer instead. This component will be removed in the future\n * whenever someone gets around to it (that could be you!)\n */\nexport function SvgContainer2(props: React.PropsWithChildren<SvgContainerProps2>): React.ReactElement {\n const {\n children,\n className = DEFAULT_CLASS_NAME,\n tagName = DEFAULT_TAG_NAME,\n size = SvgContainerSize.Standard,\n onClick,\n title,\n tooltipPlacement = 'right'\n } = props;\n\n const Container = tagName;\n\n const containerProps = {\n className: `${className} svg-container ${size}`,\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\n };\n\n if (!title)\n return <Container {...containerProps}>{children}</Container>;\n\n return (\n <Tooltip title={title} placement={tooltipPlacement}>\n <Container {...containerProps}>\n {children}\n </Container>\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './lite-owner-avatar.module.scss';\n\ninterface LiteOwnerAvatarProps {\n video: VideoTypes;\n imageCdnUrl: string;\n size?: VideoItemSize;\n}\n\nexport function LiteOwnerAvatar(props: LiteOwnerAvatarProps): JSX.Element {\n if (!VideoHelper.isInteractive(props.video) && !VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._liteOwner && !props.video._isClickViewCurated?.value)\n return <></>;\n\n if (props.video._isClickViewCurated?.value) {\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1 rounded-circle position-relative bg-white`}>\n <SvgContainer2 className={`me-1 ${props.size === 'sm' ? styles.smIcon : styles.stdIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n );\n }\n\n return (\n <div className={`${props.size === 'sm' ? styles.sm : styles.std} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.video._liteOwner.name, props.video._liteOwner.surname)}\n imageUrl={props.video._liteOwner.avatar?.url}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\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';\n\nimport styles from './plugin-hover.module.scss';\n\nconst namespace = 'shared.pluginHover';\n\ninterface PluginHoverProps {\n isPlugin: boolean;\n isPluginPopup: boolean;\n className?: string;\n onClick?: () => void;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function PluginHover(props: PluginHoverProps): JSX.Element {\n if (!props.isPlugin || props.isPluginPopup)\n return <></>;\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n onClick={props.onClick}\n className={`\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ${styles.pluginHover}\n ${props.className ? props.className : ''}\n `}\n >\n <span className='position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white'>\n <Text namespace={namespace} phrase='embed' />\n </span>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\n\nimport styles from './thumbnail-padlock.module.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svg={LockSvg} size={svgSize} />\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.module.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = ImageHelper.createUrl(company?.logo?.url ?? props.companyLogoFallbackUrl, { size: ImageSize.Small });\n const logoFallbackBgClassName = getBgColorClass(company.name, BG_COLOUR_CLASS_NAMES);\n \n if (!url)\n return <></>;\n\n return (\n <div>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''} ${!company?.metadata?.colour && logoFallbackBgClassName}`}\n style={{\n backgroundImage: `url(${url})`,\n backgroundColor: company?.metadata?.colour\n }}\n />\n </Tooltip>\n </div>\n );\n}","export const NumberHelper = {\n padNumber(num: number, padLength: number): string {\n let numberString = num.toString();\n\n if (numberString.length >= padLength)\n return numberString;\n\n padLength = padLength - numberString.length;\n\n while (padLength > 0) {\n numberString = '0' + numberString;\n padLength--;\n }\n return numberString;\n }\n};","import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Rating, Series } from 'libs/shared/interfaces';\n\nimport { NumberHelper } from './NumberHelper';\n\nexport const SeriesHelper = {\n isSeries(obj: BaseObject): obj is Series {\n return obj?.typeId === MasterType.Series;\n },\n\n buildSeriesSeasonEpisodeText(seriesName: string, season?: number, episode?: number): string {\n if (!seriesName)\n return '';\n\n if (!season || !episode)\n return seriesName.toUpperCase();\n\n const seasonNum = NumberHelper.padNumber(season, 2);\n const episodeNum = NumberHelper.padNumber(episode, 2);\n\n return `${seriesName.toUpperCase()} S${seasonNum} • E${episodeNum}`;\n },\n\n getRating(series: Series): Rating {\n return series._rating?.value;\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport styles from './title-sub-text.module.scss';\n\ntype TitleSubTextProps = React.PropsWithChildren<{\n title?: string;\n className?: string;\n ariaLabel?: string;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}>;\n\nexport function TitleSubText(props: TitleSubTextProps): JSX.Element {\n const className = `text-uppercase text-truncate mb-0 ${styles.subText} ${props.className}`;\n\n if (props.appLink) {\n return (\n <AppLink\n className={className}\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n title={props.title}\n ariaLabel={props.ariaLabel}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div\n className={className}\n title={props.title}\n aria-label={props.ariaLabel}\n >\n {props.children}\n </div>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TitleSubText } from '../title-sub-text/TitleSubText';\n\nconst namespace = 'shared.videoSubText';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './video-sub-text.module.scss';\n\nexport type VideoSubTextType = 'series' | 'productionCompany' | 'none';\n\ninterface SeriesLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n withSeriesTitle?: boolean;\n size?: 'sm' | 'lg';\n}\n\nexport function SeasonEpisode(props: Omit<SeriesLinkProps, 'analyticsOptions' | 'analyticsData'>): JSX.Element {\n const { video } = props;\n const { season } = video;\n\n if (!video.episodeNumber || !season)\n return <></>;\n\n const seasonNumber = NumberHelper.padNumber(season.number, 2);\n const episodeNumber = NumberHelper.padNumber(video.episodeNumber, 2);\n\n /* \\u2022 is the unicode number for &bull; */\n return (\n <span className={`d-inline-block ${props.appLink ? styles.hoverUnderline : ''}`}>\n {props.withSeriesTitle && <>&nbsp;</>}\n {!!seasonNumber && `S${seasonNumber} \\u2022 `}\n E{episodeNumber}\n </span>\n );\n}\n\nfunction ReleaseDate(props: SeriesLinkProps): JSX.Element {\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if (!releaseDate)\n return <></>;\n\n if (VideoHelper.hasSeries(props.video))\n return <>{` \\u2022 ${releaseDate}`}</>;\n\n return <>{releaseDate}</>;\n}\n\nfunction SeriesLink(props: SeriesLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const series = video?.series;\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if ((!series?.id) && !releaseDate)\n return <></>;\n\n const seriesAppLink: Core.AppLink = series?.id && appLink && {\n ...appLink,\n args: [ series.id, TextHelper.slugify(series.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: series?.id,\n name: series?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Series,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const seriesTitle = SeriesHelper.buildSeriesSeasonEpisodeText(\n series?.name,\n video.season?.number,\n video.episodeNumber\n );\n\n return (\n <TitleSubText\n appLink={seriesAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={seriesTitle}\n ariaLabel={`${getPhrase('ariaSeries')} ${seriesTitle}`}\n >\n {series?.name && series.name}\n <SeasonEpisode {...props} withSeriesTitle />\n <ReleaseDate {...props} />\n </TitleSubText>\n );\n}\n\ninterface ProductionCompanyLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nfunction ProductionCompanyLink(props: ProductionCompanyLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const productionCompany = video?.productionCompanies?.data?.[0];\n\n if (!productionCompany?.id)\n return <></>;\n\n const companyAppLink: Core.AppLink = productionCompany?.id && appLink && {\n ...appLink,\n args: [ productionCompany.id, TextHelper.slugify(productionCompany.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: productionCompany?.id,\n name: productionCompany?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Company,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n return (\n <TitleSubText\n appLink={companyAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={productionCompany.name}\n ariaLabel={`${getPhrase('ariaCompany')} ${productionCompany.name}`}\n >\n {productionCompany.name}\n </TitleSubText>\n );\n}\n\ninterface VideoSubTextProps {\n type: VideoSubTextType;\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nexport function VideoSubText(props: VideoSubTextProps): JSX.Element {\n const { type = 'series' } = props;\n\n if (type === 'none')\n return <></>;\n\n if (type === 'series')\n return <SeriesLink {...props} />;\n\n return <ProductionCompanyLink {...props} />;\n}\n\n","import React from 'react';\n\nexport function ClipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M14.893 16.357a2.5 2.5 0 0 1 1.806-1.354 2.506 2.506 0 0 1 2.902 2.042 2.516 2.516 0 0 1-2.032 2.916 2.5 2.5 0 0 1-2.74-1.494l-2.603-5.208-2.57 5.138a2.504 2.504 0 0 1-2.769 1.564 2.516 2.516 0 0 1-2.031-2.916 2.506 2.506 0 0 1 2.901-2.042c.81.144 1.46.663 1.803 1.348l2.107-4.212-3.703-7.41a.504.504 0 0 1 .222-.675.5.5 0 0 1 .672.223l3.369 6.743 3.372-6.743a.5.5 0 0 1 .671-.223.504.504 0 0 1 .223.674l-3.707 7.412zm-9.053.863a1.51 1.51 0 0 0 1.221 1.752 1.505 1.505 0 0 0 1.743-1.227 1.51 1.51 0 0 0-1.22-1.752A1.505 1.505 0 0 0 5.84 17.22m11.555 1.752a1.51 1.51 0 0 0 1.221-1.752 1.505 1.505 0 0 0-1.743-1.227 1.51 1.51 0 0 0-1.22 1.752 1.505 1.505 0 0 0 1.742 1.227'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function InteractiveSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M11.91 4.025c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.621 1.384 1.385 1.384h4.308c.763 0 1.384-.62 1.384-1.384v-3.77a6 6 0 0 0 2.462-4.846c0-3.308-2.692-6-6-6m2.616 12.77v.615h-5.23v-.615zm-4.77 2.307a.46.46 0 0 1-.46-.461v-.308h5.23v.308a.46.46 0 0 1-.461.461zm4.77-4.471v1.24h-5.23v-1.24a.46.46 0 0 0-.205-.384 5.07 5.07 0 0 1-2.257-4.222c0-2.8 2.277-5.077 5.077-5.077s5.077 2.278 5.077 5.077a5.07 5.07 0 0 1-2.257 4.222.46.46 0 0 0-.205.384m-2.396-2.616a.56.56 0 0 0 .107-.348v-.068q.004-.237.076-.402a1 1 0 0 1 .235-.317q.165-.153.454-.35.462-.316.757-.724.294-.41.295-.97 0-.591-.283-.993a1.8 1.8 0 0 0-.76-.61 2.6 2.6 0 0 0-1.05-.208q-.629 0-1.151.279-.525.277-.78.825a1.2 1.2 0 0 0-.12.522.44.44 0 0 0 .105.303q.105.118.3.118.162 0 .271-.091a.5.5 0 0 0 .157-.247q.162-.518.471-.704.309-.187.718-.187.343 0 .62.119.28.118.443.339.164.22.164.53 0 .27-.104.467-.106.195-.28.35a5 5 0 0 1-.391.305q-.281.195-.516.419a1.9 1.9 0 0 0-.378.498 1.3 1.3 0 0 0-.143.613v.193q0 .213.114.346.114.134.338.133.224 0 .33-.14m.088 2.081a.6.6 0 0 0 .17-.426.6.6 0 0 0-.17-.428.57.57 0 0 0-.424-.177q-.242 0-.416.177a.59.59 0 0 0-.174.428.6.6 0 0 0 .174.426q.174.18.416.18.252 0 .424-.18'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ResourcesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.06 4c.519 0 .94.479.94 1.075v13.85c0 .594-.419 1.075-.94 1.075H5.94c-.519 0-.94-.479-.94-1.075V5.075C5 4.48 5.419 4 5.94 4zM9.256 5H5.882v.184l-.001.1v.418l-.001.175-.001 1.113v1.429l-.001.314v2.024l-.001.352-.001 3.162v.335l-.001 4.386h.105l.08.001h.36l.157.001h.571l.221.001h.741l.27.001h1.174l.313.001h1.63l.332.001 2.61.001h.305l3.362.001h.012v-.184l.001-.1v-.418l.001-.175.001-1.113v-1.429l.001-.314v-2.024l.001-.352.001-3.162v-.335l.001-4.374v-.012h-.105l-.08-.001h-.36l-.157-.001h-.571l-.221-.001h-.741l-.27-.001h-1.174l-.313-.001h-1.63l-.332-.001-2.61-.001zm1.438 8c.238 0 .431.224.431.5s-.193.5-.431.5H8.056c-.238 0-.431-.224-.431-.5s.193-.5.431-.5zm5.198-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5zm0-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipSvg } from 'libs/shared/images/svg/objects/ClipSvg';\nimport { InteractiveSvg } from 'libs/shared/images/svg/objects/InteractiveSvg';\nimport { ResourcesSvg } from 'libs/shared/images/svg/objects/ResourcesSvg';\n\nimport styles from './type-badge.module.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType) {\n switch (typeId) {\n case MasterType.Clip:\n return ClipSvg;\n case MasterType.Interactive:\n return InteractiveSvg;\n case MasterType.Resource:\n return ResourcesSvg;\n default:\n return null;\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-ultramarine';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n inContainer?: boolean;\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={props.inContainer ? '' : styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svg={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} inContainer />;\n\n if (VideoHelper.isInteractive(props.video))\n return (\n <TypeBadge\n typeId={MasterType.Interactive}\n status={props.video.status}\n size={props.size}\n inContainer\n />\n );\n\n return <></>;\n}","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport styles from './global-player-consumer.module.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n \n if (props.location === 'play-page') {\n // we don't want to add theatreModeOn style for interactive preview\n const theatreMode = playerContext.mode === 'theatre' && props.objectTypeId !== MasterType.Interactive;\n return (\n <div className={theatreMode ? `w-100 h-100 ${styles.theatreModeOn}` : ''}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n }\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","import React from 'react';\n\nexport function PlayCircleSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fillRule='evenodd'\n d='M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12m23 0c0-6.075-4.925-11-11-11S1 5.925 1 12s4.925 11 11 11 11-4.925 11-11M9 7.498c0-.551.387-.756.847-.469l7.306 4.567c.468.292.46.77 0 1.058l-7.306 4.567c-.468.292-.847.074-.847-.47z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { PlayCircleSvg } from 'libs/shared/images/svg/actions/PlayCircleSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.module.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(props.appLink?.params) ? props.appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, props.hovering);\n const isVideo = VideoHelper.isVideo(props.video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && props.hoverToPlay;\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className='rounded-3'\n appLink={canNavigate ? props.appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={props.commonVideoProps.setFavourite}\n canFavourite={props.commonVideoProps.canFavourite}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n {/* top right */}\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={props.video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />}\n\n <VideoTypeBadge video={props.video} />\n\n <ThumbnailCompanyLogo\n video={props.video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n />\n </div>\n\n <BaseImage\n data={VideoHelper.getThumbnail(props.video)}\n appLink={canNavigate ? props.appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={props.imageOptions}\n preload={props.preload}\n className={styles.gradient}\n alt={('series' in props.video && props.video.series?.name ? `${props.video.series.name}: ` : '') + props.video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {!!(props.hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svg={PlayCircleSvg} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(props.hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.commonVideoProps.subTextType}\n className='text-shadow clamp-1'\n video={props.video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(props.video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={props.video} />\n\n {props.hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(props.video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {props.video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svg={CloseCaptionBadgeSvg} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={props.video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","import React from 'react';\nimport { HtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\ninterface VideoPreviewContext {\n setPreviewContentNode?: (node: HtmlPortalNode) => void;\n}\n\nexport const VideoPreviewContext = React.createContext<VideoPreviewContext>({});\n\nexport const VideoPreviewContextProvider = (props: React.PropsWithChildren<any>) => {\n const [ node, setNode ] = React.useState<HtmlPortalNode>(null);\n\n return (\n <VideoPreviewContext.Provider value={{ setPreviewContentNode: setNode }}>\n {node && (\n <OutPortal node={node}/>\n )}\n {props.children}\n </VideoPreviewContext.Provider>\n );\n};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nexport function useHoverLogger(\n isHovering: boolean,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions\n): void {\n const [ hasHovered, setHasHovered ] = React.useState(isHovering);\n const timeStartedHovering = React.useRef<Date>(isHovering ? new Date() : null);\n\n React.useEffect(() => {\n if (!analyticsData || !analyticsOptions)\n return;\n\n if (!analyticsOptions.entity || !analyticsData.location)\n return;\n\n if (isHovering) {\n if (!hasHovered)\n setHasHovered(true);\n\n timeStartedHovering.current = new Date();\n\n AnalyticsHelper.logUserAction(analyticsData, {\n ...analyticsOptions,\n actionType: UserAction.Hover\n });\n } else {\n if (!hasHovered)\n return;\n\n const timeHoveredInMilliseconds = new Date().getTime() - timeStartedHovering.current.getTime();\n timeStartedHovering.current = null;\n\n AnalyticsHelper.logUserAction({\n ...analyticsData,\n timeHoveredInMilliseconds,\n timeHoveredInSeconds: timeHoveredInMilliseconds / 1000\n }, {\n ...analyticsOptions,\n actionType: UserAction.Unhover\n });\n }\n }, [isHovering]);\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nconst EDGE_THRESHOLD = 8; // in px\nconst DEFAULT_SCALE = 1.2; // if no fixedWidth provided\n\nenum TransformOrigin {\n Left='8px',\n Right='calc(100% - 8px)',\n Center='center'\n}\n\ninterface ParentRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport type HoverPositionConfig={\n width: number;\n height: number;\n top: number;\n left: number;\n transformOrigin: TransformOrigin;\n position: string;\n originalWidth: number;\n originalHeight: number;\n}\n\nexport const calculatePosition = (\n parentDOMRect: ParentRect,\n fixedWith?: number,\n minWidth?: number,\n scale: number = DEFAULT_SCALE\n): HoverPositionConfig | HashObject => {\n const { x, y, width, height } = parentDOMRect;\n \n const contentReferenceEle = document.getElementById('content-width-reference');\n if (!contentReferenceEle) return {};\n\n let newX: number;\n\n let previewWidth = fixedWith || width * scale;\n let previewHeight = fixedWith ? fixedWith * (height / width) : height * scale;\n\n let realScale = fixedWith ? previewWidth / width : scale;\n newX = x - (previewWidth - width) / 2 ;\n\n if (previewWidth < minWidth) {\n newX = newX - (minWidth - previewWidth) / 2;\n previewWidth = minWidth;\n realScale = previewWidth / width;\n previewHeight = height * realScale;\n }\n\n const newY = y - (previewHeight - height) / 2 + window.scrollY;\n let left = newX;\n let transformOrigin = TransformOrigin.Center;\n // too close to the left\n if (newX - contentReferenceEle.offsetLeft < EDGE_THRESHOLD) {\n left = x - EDGE_THRESHOLD / 2;\n transformOrigin = TransformOrigin.Left;\n }\n // too close to the right\n if (contentReferenceEle.offsetWidth + contentReferenceEle.offsetLeft - (newX + previewWidth) < EDGE_THRESHOLD) {\n left = fixedWith ? x + width - fixedWith : x - width * (realScale - 1) + EDGE_THRESHOLD;\n transformOrigin = TransformOrigin.Right;\n }\n\n return { left, top: newY, height: previewHeight, width: previewWidth, transformOrigin, position: 'absolute', originalWidth: width, originalHeight: height };\n};","import React from 'react';\nimport { createHtmlPortalNode, InPortal } from 'react-reverse-portal';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { VideoPreviewContext } from 'libs/shared/context/VideoPreviewContext';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { useHoverLogger } from 'libs/shared/hooks/UseHoverLogger';\n\nimport { calculatePosition, HoverPositionConfig } from './hoverToPortalContainerUtil';\n\nimport styles from './hover-to-portal-container.module.scss';\n\nexport interface HoverableProps {\n isHovering: boolean;\n thumbnailHoverRef?: any;\n hoverPositionConfig?: HoverPositionConfig | HashObject;\n cleanPortalNode?: () => void;\n}\n\ninterface HoverToPortalContainerProps<T=any> {\n hoverableComponent: (props: HoverableProps) => JSX.Element;\n componentProps: T;\n fixedHoverWidth?: number;\n minHoverWidth?: number;\n hoverScale?: number\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function HoverToPortalContainer<T=any>(props: HoverToPortalContainerProps<T>): JSX.Element {\n const { hoverableComponent, componentProps, minHoverWidth, fixedHoverWidth, hoverScale } = props;\n const { setPreviewContentNode } = React.useContext(VideoPreviewContext);\n if (setPreviewContentNode === undefined) {\n Core.ErrorHelper.throw(new DevError(`Please use VideoPreviewContext inside a VideoPreviewContextProvider`));\n }\n\n const portalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const [ hoverCardRef, isHoverCardHovering ] = useHover<HTMLDivElement>();\n\n // eslint-disable-next-line\n const [ debugShow, setDebugShow ] = React.useState(false);\n\n const videoPositionRef = React.useRef<HTMLDivElement>(null);\n const prevStatus = React.useRef<boolean>(false);\n const currentIsHovering = isThumbnailHovering || isHoverCardHovering;\n\n useHoverLogger(currentIsHovering, props.analyticsData, props.analyticsOptions);\n\n React.useEffect(() => {\n if (prevStatus.current === currentIsHovering)\n return;\n if (currentIsHovering || debugShow) {\n setPreviewContentNode(portalNode);\n } else {\n setPreviewContentNode(null);\n }\n prevStatus.current = currentIsHovering;\n }, [currentIsHovering]);\n\n /**\n * Uncomment this if you want the hover to portal container to persist after a single hover\n * so you can inspect it's html - Sha\n */\n // React.useEffect(() => {\n // if (currentIsHovering)\n // setDebugShow(true);\n // }, [currentIsHovering]);\n\n const { x, y, width, height } = videoPositionRef.current?.getBoundingClientRect?.() || {};\n\n const hoverPositionConfig = React.useMemo(\n () => calculatePosition({ x, y, width, height }, fixedHoverWidth, minHoverWidth, hoverScale),\n [ x, y, width, height, hoverScale ]\n );\n const scale = hoverPositionConfig ? hoverPositionConfig.originalWidth / hoverPositionConfig.width : 1;\n\n const HoverableComponent = hoverableComponent;\n\n return (\n <div ref={videoPositionRef} >\n <div ref={thumbnailHoverRef}>\n <HoverableComponent isHovering={false} {...componentProps}/>\n </div>\n\n {(currentIsHovering || debugShow) && (\n <InPortal node={portalNode}>\n <div\n className={`${styles.positionWrapper} ${styles.animationWrapper}`}\n style={{\n '--scale': scale,\n ...hoverPositionConfig\n } as unknown as React.CSSProperties}\n ref={hoverCardRef}\n >\n <HoverableComponent\n isHovering={true}\n hoverPositionConfig={hoverPositionConfig}\n cleanPortalNode={() => setPreviewContentNode(null)}\n {...componentProps}/>\n </div>\n </InPortal>\n )}\n </div>\n );\n}\n\nHoverToPortalContainer.ReferenceContainer = (props: React.PropsWithChildren) => {\n return (\n <div id='content-width-reference' className='flex-grow-1'>\n {props.children}\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.module.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\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 { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.module.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svg={LockSvg}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\n\nimport styles from './video-title.module.scss';\n\nconst namespace = 'shared.videoTitle';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TODAY = new Date();\n\nexport type VideoTitleSizes = 'h4' | 'h5' | 'h6';\n\ninterface VideoTitleProps {\n video: Video;\n yearGroups?: YearGroup[];\n showNewVideoIndicator?: boolean;\n title?: string;\n showPadlock: boolean;\n\n lockSize?: 'sm' | 'md';\n titleSize?: VideoTitleSizes;\n className?: string;\n}\n\nfunction isDateInCurrentMonth(target: string) {\n return DateHelper.isSame(target, TODAY, 'year') && DateHelper.isSame(target, TODAY, 'month');\n}\n\nVideoTitle.defaultProps = {\n titleSize: 'h6',\n className: ''\n};\n\nexport function VideoTitle(props: VideoTitleProps): JSX.Element {\n const dateRelease = props.video.dateReleased;\n const isCurrentMonth = dateRelease && isDateInCurrentMonth(dateRelease);\n\n const shouldShowNewVideoIndicator = props.showNewVideoIndicator\n && isCurrentMonth\n && props.video._isClickViewCurated?.value;\n\n return (\n <>\n <Tooltip\n title={`${shouldShowNewVideoIndicator ? getPhrase('newVideo') : ''}`}\n spanHack\n spanHackClassName='d-inline-block'\n >\n {shouldShowNewVideoIndicator && (\n <span className={`rounded-circle bg-green d-inline-block me-1 ${styles.dot} ${props.titleSize === 'h6' ? styles.smallText : ''}`} />\n )}\n </Tooltip>\n\n <h2 className={`${props.titleSize} ${styles.title} ${props.className} d-inline`}>\n {props.title || props.video.name}\n </h2>\n\n {props.showPadlock && (\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size={props.lockSize}\n />\n )}\n </>\n );\n}\n\n","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.module.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'commonVideoProps'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.commonVideoProps.subTextType}\n className='text-truncate'\n video={video}\n appLink={props.commonVideoProps.getSubTextAppLink?.(props.video)}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n <AppLink className='text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n <VideoTitle\n video={props.video}\n yearGroups={props.commonVideoProps.yearGroups}\n lockSize='sm'\n showNewVideoIndicator={props.commonVideoProps.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n />\n </AppLink>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.module.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svg: SvgIcon;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n theme?: {\n tabLabel?: string;\n container?: string;\n }\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n className={`\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ${props.theme?.container} ${styles.tag} ${props.active ? styles.active : ''}\n `}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return (\n <div\n className={`p-1 pe-2 rounded-pill d-inline-flex align-items-center ${props.theme?.container} ${styles.tag} ${styles.disabled}`}\n >\n <VideoGuidanceTag {...props} />\n </div>\n );\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svg={props.svg}\n />\n\n <span className={`ps-1 text-nowrap user-select-none ${props.theme?.tabLabel}`}>\n {props.text}\n </span>\n </>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { GraduationCapSvg } from 'libs/shared/images/svg/objects/GraduationCapSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.classroomGuideTag';\n\ninterface ClassroomGuideTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ClassroomGuideTag(props: ClassroomGuideTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video) || VideoHelper.isClip(props.video))\n return <></>;\n\n if (!props.video._hasCurriculumLinks?.value)\n return <></>;\n\n return (\n <VideoGuidanceTag\n theme={{\n container: 'classroom-guide-tag',\n tabLabel: 'classroom-guide-tag-label'\n }}\n svg={GraduationCapSvg}\n iconVariant='navy'\n text={LanguageService.getPhrase(namespace, 'curriculum')}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'curriculum',\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { InteractiveSvg } from 'libs/shared/images/svg/objects/InteractiveSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!VideoHelper.showInteractivesGuidance(props.video))\n return <></>;\n \n const interactiveCount = !VideoHelper.isInteractive(props.video) && (props.video.interactives?.data.length || 0);\n\n return (\n <VideoGuidanceTag\n svg={InteractiveSvg}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { ResourcesSvg } from 'libs/shared/images/svg/objects/ResourcesSvg';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\nfunction getResourceCount(video: VideoTypes): number {\n if (VideoHelper.isInteractive(video))\n return 0;\n\n return (\n (video.resources?.data.length || 0) +\n (video.links?.data.length || 0)\n );\n}\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!VideoHelper.showResourcesGuidance(props.video))\n return <></>;\n\n const resourceCount = getResourceCount(props.video);\n\n return (\n <VideoGuidanceTag\n svg={ResourcesSvg}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...VideoHelper.getAnalyticsData(props.video),\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { ClassroomGuideTag } from 'libs/shared/components/video-guidance/classroom-guide/ClassroomGuideTag';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { VideoTypes } 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\ninterface VideoItemGuidanceProps {\n video: VideoTypes;\n getVideoAppLink?: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n containerClassName: string;\n responsiveClassName?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function VideoItemGuidance(props: VideoItemGuidanceProps): JSX.Element {\n const showingResourcesAndInteractives = (\n VideoHelper.showInteractivesGuidance(props.video) &&\n VideoHelper.showResourcesGuidance(props.video)\n );\n\n return (\n <div className={`${props.containerClassName} ${showingResourcesAndInteractives ? props.responsiveClassName : ''}`}>\n <ClassroomGuideTag\n appLink={props.commonVideoProps.getClassroomGuideAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n appLink={props.commonVideoProps.getResourceGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <InteractivesTag\n appLink={props.commonVideoProps.getInteractiveGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\n\nimport { DivButton } from '../../div-button/DivButton';\nimport { SvgContainer } from '../../svg-container/SvgContainer';\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './remove-video-button.module.scss';\n\nconst namespace = 'shared.removeVideoButton';\n\ninterface RemoveVideoButtonProps {\n onClickRemove: (e: React.MouseEvent<HTMLButtonElement>) => void;\n removeButtonTooltip?: string;\n preventFocus?: boolean;\n}\n\nexport function RemoveVideoButton(props: RemoveVideoButtonProps): JSX.Element {\n const tooltip = props.removeButtonTooltip || LanguageService.getPhrase(namespace, 'removeFromRow');\n\n return (\n <div className='me-2'>\n <Tooltip title={tooltip} spanHack>\n <DivButton\n onClick={props.onClickRemove}\n className={`d-flex align-items-center justify-content-center ${styles.button}`}\n tabIndex={props.preventFocus ? -1 : undefined}\n >\n <SvgContainer\n svg={CloseSvg}\n className={`svg-container ${styles.heart}`}\n />\n </DivButton>\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RemoveVideoButton } from '../../remove-button/RemoveVideoButton';\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\nimport { PopoutVideoThumbnailProps } from '../VideoThumbnail';\n\nimport styles from './popout-video-thumbnail.module.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload,\n isHovering, hoverToPlay\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n function onClickRemove(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n props.onClickRemove?.();\n }\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n function showRemoveButton() {\n if (!FunctionHelper.isFunction(props.onClickRemove))\n return false;\n\n if (UserAgentHelper.isTabletOrMobile())\n return true;\n\n return isHovering;\n }\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <div className={className}>\n <div className={styles.topRightContainer}>\n {showRemoveButton() && (\n <RemoveVideoButton\n onClickRemove={onClickRemove}\n removeButtonTooltip={props.removeButtonTooltip}\n preventFocus\n />\n )}\n\n {showFavouriteButton && (\n <FavouriteButton\n setFavourite={props.commonVideoProps.setFavourite}\n canFavourite={props.commonVideoProps.canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n preventFocus\n />\n )}\n\n {!canNavigate && (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n )}\n </div>\n\n <div className='position-relative'>\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className={isHovering ? 'rounded-top-3' : 'rounded-3'}\n onClick={() => props.cleanPortalNode?.()}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus={!props.hideTitle}\n appLinkClassName={`position-absolute top-0 start-0 h-100 w-100 overflow-hidden ${isHovering ? 'rounded-top-3' : 'rounded-3'}`}\n imageClassName={isHovering ? 'rounded-top-3' : 'rounded-3'}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n <div className='p-absolute w-100 h-100 text-white'>\n\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {props.showOwner && <LiteOwnerAvatar video={video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />}\n \n <VideoTypeBadge video={video} />\n \n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n />\n </div>\n\n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <VideoItemGuidance\n commonVideoProps={props.commonVideoProps}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n responsiveClassName={styles.responsiveGuidance}\n containerClassName={`d-flex justify-content-start align-items-center pt-2`}\n />\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PlayCircleSvg } from 'libs/shared/images/svg/actions/PlayCircleSvg';\n\nimport styles from './mask.module.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvg(type: MaskType) {\n if (type === MaskType.Video)\n return PlayCircleSvg;\n\n return null;\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svg = getSvg(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svg={svg} className={ typeClass } />\n </div>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TickSvg } from 'libs/shared/images/svg/status/TickSvg';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.module.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svg={TickSvg}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.module.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n preventFocus\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\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 { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { LiteOwnerAvatar } from 'libs/shared/components/thumbnails/lite-owner-avatar/LiteOwnerAvatar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTitle } from 'libs/shared/components/video-title/VideoTitle';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CosmeticVideoThumbnailProps, StaticVideoThumbnailProps } from '../VideoThumbnail';\n\nimport styles from './static-video-thumbnail.module.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\ntype CombinedProps = StaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nfunction ThumbnailText(props: CombinedProps): JSX.Element {\n const { type, video, textPosition } = props;\n\n const isStatic = type === 'static';\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={isStatic ? props.commonVideoProps.subTextType : 'series'}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={isStatic && !textIsOverlayed ? props.commonVideoProps.getSubTextAppLink?.(props.video) : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate || !isStatic)\n ? (\n <span className={`h6 text-reset clamp-1`}>\n <VideoTitle\n video={video}\n title={video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n showNewVideoIndicator={isStatic && props.commonVideoProps.showNewVideoIndicator}\n showPadlock={isStatic\n && !props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={props.appLink}>\n <VideoTitle\n video={video}\n showNewVideoIndicator={props.commonVideoProps.showNewVideoIndicator}\n showPadlock={!props.commonVideoProps.hasStudentExperience && !props.commonVideoProps.hasGuestExperience}\n />\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: CombinedProps): JSX.Element {\n const { type, video, textPosition, imageOptions, preload } = props;\n\n const isStatic = type === 'static';\n\n const appLinkParams = isStatic && ObjectHelper.isObject(props.appLink?.params)\n ? props.appLink?.params as HashObject :\n {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isStatic && isHoveringIntentionally && canConsume && props.hoverToPlay;\n\n function canFavourite(): boolean {\n if (!isStatic)\n return;\n\n return !props.disableFavourite &&\n props.commonVideoProps.canFavourite?.(props.video) &&\n FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (isStatic && props.appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = isStatic ? {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n } : {};\n\n const showMask = isStatic && !!props.appLink && !props.hideMask && canNavigate;\n const tooltip = isStatic\n ? VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)\n : '';\n\n const analyticsData = isStatic ? {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n } : {};\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n {isStatic &&\n <PluginHover\n isPlugin={props.commonVideoProps.isPlugin}\n isPluginPopup={props.commonVideoProps.isPluginPopup}\n className={props.size === 'sm' ? 'rounded' : 'rounded-3'}\n appLink={canNavigate ? props.appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n }\n \n\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={!isStatic && props.checkMarkStatus}\n setCheckMarkStatus={!isStatic && props.setCheckMarkStatus}\n setFavourite={isStatic && props.commonVideoProps.setFavourite}\n canFavourite={canFavourite}\n analyticsData={isStatic && props.analyticsData}\n analyticsOptions={isStatic && eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={isStatic && canNavigate ? props.appLink : null}\n onClick={isStatic && canNavigate ? props.onClick : undefined}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {/* overlay */}\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n \n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {isStatic && props.showOwner &&\n <LiteOwnerAvatar video={video} imageCdnUrl={props.commonVideoProps.imageCdnUrl} />\n }\n \n {!props.hideVideoTypeBadge && <VideoTypeBadge video={video} size={props.size} />}\n\n {isStatic &&\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.commonVideoProps.companyLogoFallbackUrl}\n size={props.size}\n />\n }\n </div>\n\n {/* bottom */}\n {!props.hideBottomBar &&\n <VideoThumbnailBottomBar video={video} />\n }\n \n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseCommonVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n preload?: boolean;\n}\n\ninterface BasePlayableVideoThumbnailProps extends BaseCommonVideoThumbnailProps {\n appLink: Core.AppLink;\n onClick?: () => void;\n hoverToPlay?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n showSignIn?: boolean;\n \n showOwner?: boolean;\n\n commonVideoProps: CommonVideoProps;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BasePlayableVideoThumbnailProps {\n type: 'expandable'\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BasePlayableVideoThumbnailProps {\n type: 'popout'\n hideDuration: boolean;\n extraClasses?: string;\n hideRating?: boolean;\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n onClickRemove: () => void;\n removeButtonTooltip?: string;\n audience: Audience;\n}\n\ninterface BaseStaticVideoThumbnailProps {\n textPosition?: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n hideVideoTypeBadge?: boolean;\n hideBottomBar?: boolean;\n}\n\nexport interface StaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps, BasePlayableVideoThumbnailProps {\n type: 'static'\n disableFavourite?: boolean;\n}\n\n/**\n * If you need any of the following, you should be using static:\n * - Favourite button\n * - Applink to link to the video\n * - Hover to play\n * - Analytics data\n * - Showing the owner\n * - Showing sign in\n * \n * Cosmetic should just be for displaying a thumbnail that is not interacted with, or the <AppLink />\n * is outside of the thumbnail like in shares.\n * \n * - Sha\n */\nexport interface CosmeticVideoThumbnailProps extends BaseCommonVideoThumbnailProps, BaseStaticVideoThumbnailProps{\n type: 'cosmetic';\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n}\n\nexport type VideoThumbnailProps =\n ExpandableVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n StaticVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: false,\n showOwner: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n"],"names":["HeartOutlineSvg","props","jsx","HeartSvg","FavouriteHelper","object","_a","user","ArrayHelper","video","shouldFavourite","isHovering","VideoHelper","UserAgentHelper","namespace","getPhrase","LanguageService","FavouriteButton","alerts","useAlerts","initialState","isFavourite","setIsFavourite","React.useState","React.useEffect","className","styles","onClick","onError","getErrorPhraseKey","FunctionHelper","Fragment","jsxs","DivButton","SvgContainer","VideoWatchProgressBar","progress","watchPercentage","VideoThumbnailBottomBar","DEFAULT_CLASS_NAME","DEFAULT_TAG_NAME","SvgContainer2","children","tagName","size","SvgContainerSize","title","tooltipPlacement","Container","containerProps","Tooltip","LiteOwnerAvatar","_b","ClickViewPlayLogo","Avatar","UserHelper","_c","PluginHover","AppLink","Text","ThumbnailPadlock","svgSize","LockSvg","ThumbnailCompanyLogo","company","url","ImageHelper","ImageSize","logoFallbackBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","_d","_e","NumberHelper","num","padLength","numberString","SeriesHelper","obj","MasterType","seriesName","season","episode","seasonNum","episodeNum","series","TitleSubText","SeasonEpisode","seasonNumber","episodeNumber","ReleaseDate","releaseDate","SeriesLink","appLink","seriesAppLink","TextHelper","analyticsData","analyticsOptions","EntityType","UserAction","ClickDescriptor","seriesTitle","ProductionCompanyLink","productionCompany","companyAppLink","VideoSubText","type","ClipSvg","InteractiveSvg","ResourcesSvg","getText","typeId","getIcon","getColourClass","status","CurationStatus","TypeBadge","baseClasses","VideoTypeBadge","GlobalPlayerConsumer","playerContext","usePlayerContext","theatreMode","OutPortal","shouldShow","rounding","PlayCircleSvg","getTitleClass","hovering","ExpandableVideoThumbnail","canNavigate","canConsume","appLinkParams","ObjectHelper","eventAnalyticsOptions","showFavouriteButton","isVideo","rating","thumbnailHoverRef","isThumbnailHovering","useHoverIntent","showThumbnailPreviewVideo","BaseImage","ImageType","ImageFallback","ImageFallbackType","BadgeListContainer","Badge","BadgeType","CloseCaptionBadgeSvg","VideoPreviewContext","React","useHoverLogger","hasHovered","setHasHovered","timeStartedHovering","AnalyticsHelper","timeHoveredInMilliseconds","EDGE_THRESHOLD","DEFAULT_SCALE","calculatePosition","parentDOMRect","fixedWith","minWidth","scale","x","y","width","height","contentReferenceEle","newX","previewWidth","previewHeight","realScale","newY","left","transformOrigin","HoverToPortalContainer","hoverableComponent","componentProps","minHoverWidth","fixedHoverWidth","hoverScale","setPreviewContentNode","Core.ErrorHelper","DevError","portalNode","createHtmlPortalNode","hoverCardRef","isHoverCardHovering","useHover","debugShow","setDebugShow","videoPositionRef","prevStatus","currentIsHovering","hoverPositionConfig","HoverableComponent","InPortal","AudienceLabel","VideoThumbnailBadges","showAudience","showRating","RestrictionPadlock","RestrictionHelper","TODAY","isDateInCurrentMonth","target","DateHelper","VideoTitle","dateRelease","isCurrentMonth","shouldShowNewVideoIndicator","ThumbnailText","LocationContext","ContainerWrapper","VideoGuidanceTag","GraduationCapSvg","ClassroomGuideTag","InteractivesTag","interactiveCount","getResourceCount","ResourcesTag","resourceCount","VideoItemGuidance","showingResourcesAndInteractives","_f","RemoveVideoButton","tooltip","CloseSvg","PopoutVideo","imageOptions","preload","hoverToPlay","onClickRemove","e","showRemoveButton","PopoutVideoThumbnail","MaskType","getClassByType","getSvg","Mask","typeClass","svg","CheckMarkStatus","CheckMarkButton","isComplete","setIsComplete","shouldRender","shouldComplete","newStatus","TickSvg","hasActions","VideoThumbnailActions","ThumbnailTextPosition","textPosition","isStatic","textIsOverlayed","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","setHoverRefs","r","canFavourite","getContainerClass","getThumbnailClass","showMask","VideoThumbnail"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as n,L as c,a5 as w,ab as x,Y as p,h as v,bI as g,a3 as d,c5 as z}from"./app-BqRx5tK8.js";import{D as b}from"./BrLXFCMV.chunk.js";import{a as P,F as S}from"./DJLuyZJi.chunk.js";var f=(e=>(e.Draft="Draft",e.Published="Published",e.Archived="Archived",e))(f||{}),u=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(u||{});function j(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z",clipRule:"evenodd"})})}function H(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z",fill:"currentColor"})})}var l=(e=>(e.Folder="category",e.CategoryTree="category_tree",e.CustomLibrary="custom_library",e.HostedLibrary="hosted_library",e.Exchange="exchange",e.Workspace="workspace",e.Video="video",e.Clip="clip",e.Interactive="interactive",e))(l||{}),i=(e=>(e.Pdf="pdf",e.Image="image",e.PowerPoint="powerpoint",e.Document="document",e.Excel="excel",e.Zip="archive",e.File="text",e))(i||{});function A(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z",fill:"currentColor"})})}function D(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39",fill:"currentColor"})})}function E(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z",fill:"currentColor"})})}function N(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z",fill:"currentColor"})})}function q(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z",fill:"currentColor"})})}function L(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z",fill:"currentColor"})})}const o="shared.shared-utils",V={mapRatingToClass(e){return e?(t=>{switch(!0){case t<32:return"bg-purple";case t<48:return"bg-green";case t<80:return"bg-blue";case t<96:return"bg-red";case t<128:return"bg-pink";case t>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case l.HostedLibrary:case l.CustomLibrary:return e.name;case l.Exchange:return c.getPhrase(o,"exchange");case l.Workspace:return c.getPhrase(o,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case l.HostedLibrary:case l.CustomLibrary:return"bg-blue";case l.Exchange:return"bg-green";case l.Workspace:default:return"bg-red"}},isInteractive(e){var r,t;return!!((t=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&t.length)},mapTypeToSvg(e){let t={[i.Pdf]:D,[i.Image]:P,[i.PowerPoint]:E,[i.Document]:q,[i.Excel]:A,[i.Zip]:L,[i.File]:N}[e];return t||(t=S),t},mapTypeToClass(e){switch(e){case i.Pdf:return"icon-red";case i.Image:return"icon-purple";case i.Document:return"icon-blue";case i.Excel:return"icon-green";case i.PowerPoint:return"icon-orange";case i.Zip:return"icon-teal";case i.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case i.Pdf:return c.getPhrase(o,"pdf");case i.Image:return c.getPhrase(o,"image");case i.Document:return c.getPhrase(o,"document");case i.Excel:return c.getPhrase(o,"spreadsheet");case i.PowerPoint:return c.getPhrase(o,"presentation");case i.Zip:return c.getPhrase(o,"zipArchive");case i.File:return c.getPhrase(o,"file");default:return""}}},k="shared.badges",F=c.encloseNamespace(k);var I=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(I||{});const M={xs:d.ExtraSmall,sm:d.Small,std:d.Standard,lg:d.Large},$={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function R(e){switch(e){case g.Published:case f.Published:return"bg-success";case g.Archived:case g.Rejected:case f.Archived:return"bg-danger";case g.Draft:case f.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case g.Pending:case g.Processing:return"bg-warning"}}function T(e){return e.includes(u.Streamable)?`px-1 text-nowrap d-flex align-items-center ${z.streamable}`:e.includes(u.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(u.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(u.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function Z(e,r,t){const a="badge",h=$[t];let s="";if(e==="duration-approximate"&&(s="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(s="duration-badge"),e==="interactive"&&(s="interactive-badge"),e==="rating"&&(s=`rating-badge text-shadow ${V.mapRatingToClass(r.value)}`),e==="production-year"&&(s="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${R(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${h}`;if(e==="count"&&(s="count-badge px-1 rounded"),e==="restriction"){const m=x.mapRestrictionToClass(r.restrictions);return p("restriction-badge rounded-pill px-2 d-flex align-items-center",m)}return e==="source"&&(s=T(r)),p(a,s)}function _(e,r,t){if(e==="interactive")return F("interactive");if(e==="duration-approximate")return b.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return b.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return n.jsx(v,{svg:H});if(e==="status")return typeof r=="number"?g[r]:r;if(e==="trending")return n.jsxs(n.Fragment,{children:[n.jsx(v,{svg:j,size:M[t]}),n.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return n.jsxs(n.Fragment,{children:[n.jsx(v,{svg:x.mapRestrictionToSvg(r.restrictions)}),n.jsx("span",{children:x.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const a=r;return a.includes(u.Streamable)?"streamable":a.includes(u.MoviesAndTv)?"movies + tv":a.includes(u.Exchange)?"exchange":a.includes(u.Twig)?"twig":"-"}}function W(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function Y(e,r){var t,a;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((t=r==null?void 0:r.data)!=null&&t.length):e==="captions"?!!(r!=null&&r.length)||!!((a=r==null?void 0:r.data)!=null&&a.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function Q(e){const{type:r,data:t,size:a="std"}=e;if(!Y(r,t))return n.jsx(n.Fragment,{});let h=Z(r,t,a);h=`${h} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const s=_(r,t,a),m=W(r,t),C=e.inline&&"d-inline-block";return m?n.jsx("div",{className:"badge-wrapper d-inline",children:n.jsx(w,{...m,spanHack:!0,spanHackClassName:C,children:n.jsx("span",{className:h,children:s})})}):n.jsx("span",{className:`${h} badge-wrapper`,children:s})}export{Q as B,H as C,I as a};
2
+ //# sourceMappingURL=DeY3SuCM.chunk.js.map