@clickview/reports 0.72.0-rc.0 → 0.73.0-rc.2

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 (418) 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/BDijM1kt.chunk.css +1 -0
  63. package/dist/css/BMPwvOki.chunk.css +1 -0
  64. package/dist/css/BNt45Kgy.chunk.css +1 -0
  65. package/dist/css/BSGhUWzl.chunk.css +1 -0
  66. package/dist/css/BZ3_uhDP.chunk.css +1 -0
  67. package/dist/css/BaadNO4A.chunk.css +1 -0
  68. package/dist/css/BdUNjJqp.chunk.css +1 -0
  69. package/dist/css/BdeI0FAV.chunk.css +1 -0
  70. package/dist/css/BxcMGr8Y.chunk.css +1 -0
  71. package/dist/css/ByuL_xKJ.chunk.css +1 -0
  72. package/dist/css/C-A0Pj_7.chunk.css +1 -0
  73. package/dist/css/C4jMfPWU.chunk.css +1 -0
  74. package/dist/css/C7XoyEPr.chunk.css +1 -0
  75. package/dist/css/C8sxda3R.chunk.css +1 -0
  76. package/dist/css/CD1qrI1T.chunk.css +1 -0
  77. package/dist/css/CFO--d_R.chunk.css +1 -0
  78. package/dist/css/CX9nw8t8.chunk.css +1 -0
  79. package/dist/css/C_qGRdC2.chunk.css +1 -0
  80. package/dist/css/CdC6ugQR.chunk.css +1 -0
  81. package/dist/css/ClRRGXPb.chunk.css +1 -0
  82. package/dist/css/Cr1bwtZG.chunk.css +1 -0
  83. package/dist/css/DBlPz5Fw.chunk.css +1 -0
  84. package/dist/css/DDnpOnVB.chunk.css +1 -0
  85. package/dist/css/DFZQCLLg.chunk.css +1 -0
  86. package/dist/css/DJwAbl6l.chunk.css +1 -0
  87. package/dist/css/DWjg_0sz.chunk.css +1 -0
  88. package/dist/css/DYV9jjVn.chunk.css +1 -0
  89. package/dist/css/Dgeh4AqU.chunk.css +9 -0
  90. package/dist/css/DlOtoSz0.chunk.css +1 -0
  91. package/dist/css/DlxOgKUu.chunk.css +1 -0
  92. package/dist/css/Dp3arkyy.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/0Uji-0Ig.chunk.js +2 -0
  103. package/dist/scripts/0Uji-0Ig.chunk.js.map +1 -0
  104. package/dist/scripts/1uUClbTi.chunk.js +2 -0
  105. package/dist/scripts/1uUClbTi.chunk.js.map +1 -0
  106. package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
  107. package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
  108. package/dist/scripts/9-ob4xwW.chunk.js +2 -0
  109. package/dist/scripts/9-ob4xwW.chunk.js.map +1 -0
  110. package/dist/scripts/B-0CRp8U.chunk.js +15 -0
  111. package/dist/scripts/B-0CRp8U.chunk.js.map +1 -0
  112. package/dist/scripts/B-M_POW7.chunk.js +2 -0
  113. package/dist/scripts/B-M_POW7.chunk.js.map +1 -0
  114. package/dist/scripts/B0HNQPjj.chunk.js +2 -0
  115. package/dist/scripts/B0HNQPjj.chunk.js.map +1 -0
  116. package/dist/scripts/B2kHUvkf.chunk.js +2 -0
  117. package/dist/scripts/B2kHUvkf.chunk.js.map +1 -0
  118. package/dist/scripts/BADbeO_o.chunk.js +2 -0
  119. package/dist/scripts/BADbeO_o.chunk.js.map +1 -0
  120. package/dist/scripts/BAR_V9AM.chunk.js +2 -0
  121. package/dist/scripts/BAR_V9AM.chunk.js.map +1 -0
  122. package/dist/scripts/BArX7fyb.chunk.js +2 -0
  123. package/dist/scripts/BArX7fyb.chunk.js.map +1 -0
  124. package/dist/scripts/BAt5WimN.chunk.js +2 -0
  125. package/dist/scripts/BAt5WimN.chunk.js.map +1 -0
  126. package/dist/scripts/BBKDp0Ea.chunk.js +4 -0
  127. package/dist/scripts/BBKDp0Ea.chunk.js.map +1 -0
  128. package/dist/scripts/BE4qMmvm.chunk.js +2 -0
  129. package/dist/scripts/BE4qMmvm.chunk.js.map +1 -0
  130. package/dist/scripts/BEjQ8YiC.chunk.js +10 -0
  131. package/dist/scripts/BEjQ8YiC.chunk.js.map +1 -0
  132. package/dist/scripts/BFH1W3y4.chunk.js +2 -0
  133. package/dist/scripts/BFH1W3y4.chunk.js.map +1 -0
  134. package/dist/scripts/BGYUqEPH.chunk.js +2 -0
  135. package/dist/scripts/BGYUqEPH.chunk.js.map +1 -0
  136. package/dist/scripts/BI4Pc5Qp.chunk.js +3 -0
  137. package/dist/scripts/BI4Pc5Qp.chunk.js.map +1 -0
  138. package/dist/scripts/BIcuRL8o.chunk.js +2 -0
  139. package/dist/scripts/BIcuRL8o.chunk.js.map +1 -0
  140. package/dist/scripts/BK5Lddwt.chunk.js +2 -0
  141. package/dist/scripts/BK5Lddwt.chunk.js.map +1 -0
  142. package/dist/scripts/BM1URibR.chunk.js +2 -0
  143. package/dist/scripts/BM1URibR.chunk.js.map +1 -0
  144. package/dist/scripts/BOenBxfx.chunk.js +34 -0
  145. package/dist/scripts/BOenBxfx.chunk.js.map +1 -0
  146. package/dist/scripts/BOoxRruH.chunk.js +2 -0
  147. package/dist/scripts/BOoxRruH.chunk.js.map +1 -0
  148. package/dist/scripts/BP4vyxCh.chunk.js +2 -0
  149. package/dist/scripts/BP4vyxCh.chunk.js.map +1 -0
  150. package/dist/scripts/BRR3J_Zy.chunk.js +2 -0
  151. package/dist/scripts/BRR3J_Zy.chunk.js.map +1 -0
  152. package/dist/scripts/BUJR0SBs.chunk.js +2 -0
  153. package/dist/scripts/BUJR0SBs.chunk.js.map +1 -0
  154. package/dist/scripts/BY58fjpA.chunk.js +2 -0
  155. package/dist/scripts/BY58fjpA.chunk.js.map +1 -0
  156. package/dist/scripts/BZV5U3ST.chunk.js +2 -0
  157. package/dist/scripts/BZV5U3ST.chunk.js.map +1 -0
  158. package/dist/scripts/BfaprYhg.chunk.js +2 -0
  159. package/dist/scripts/BfaprYhg.chunk.js.map +1 -0
  160. package/dist/scripts/Bfbk7XQF.chunk.js +2 -0
  161. package/dist/scripts/Bfbk7XQF.chunk.js.map +1 -0
  162. package/dist/scripts/BgBDu2hA.chunk.js +2 -0
  163. package/dist/scripts/BgBDu2hA.chunk.js.map +1 -0
  164. package/dist/scripts/BoLC4I50.chunk.js +2 -0
  165. package/dist/scripts/BoLC4I50.chunk.js.map +1 -0
  166. package/dist/scripts/BsXmQt2a.chunk.js +2 -0
  167. package/dist/scripts/BsXmQt2a.chunk.js.map +1 -0
  168. package/dist/scripts/ByUxUi78.chunk.js +2 -0
  169. package/dist/scripts/ByUxUi78.chunk.js.map +1 -0
  170. package/dist/scripts/BzFtDyVZ.chunk.js +2 -0
  171. package/dist/scripts/BzFtDyVZ.chunk.js.map +1 -0
  172. package/dist/scripts/C1TqvuUF.chunk.js +2 -0
  173. package/dist/scripts/C1TqvuUF.chunk.js.map +1 -0
  174. package/dist/scripts/C5lK-q9T.chunk.js +2 -0
  175. package/dist/scripts/C5lK-q9T.chunk.js.map +1 -0
  176. package/dist/scripts/C7IXStcD.chunk.js +2 -0
  177. package/dist/scripts/C7IXStcD.chunk.js.map +1 -0
  178. package/dist/scripts/CANX99lP.chunk.js +2 -0
  179. package/dist/scripts/CANX99lP.chunk.js.map +1 -0
  180. package/dist/scripts/CBjj_ih-.chunk.js +2 -0
  181. package/dist/scripts/CBjj_ih-.chunk.js.map +1 -0
  182. package/dist/scripts/CCIDM29p.chunk.js +2 -0
  183. package/dist/scripts/CCIDM29p.chunk.js.map +1 -0
  184. package/dist/scripts/CFjwQ5Sg.chunk.js +2 -0
  185. package/dist/scripts/CFjwQ5Sg.chunk.js.map +1 -0
  186. package/dist/scripts/CGbmnb6g.chunk.js +380 -0
  187. package/dist/scripts/CGbmnb6g.chunk.js.map +1 -0
  188. package/dist/scripts/CSd_qFwj.chunk.js +2 -0
  189. package/dist/scripts/CSd_qFwj.chunk.js.map +1 -0
  190. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  191. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  192. package/dist/scripts/CX5q-0jT.chunk.js +2 -0
  193. package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
  194. package/dist/scripts/CZHffw7D.chunk.js +2 -0
  195. package/dist/scripts/CZHffw7D.chunk.js.map +1 -0
  196. package/dist/scripts/C_Famtl1.chunk.js +2 -0
  197. package/dist/scripts/C_Famtl1.chunk.js.map +1 -0
  198. package/dist/scripts/C_TaaD_7.chunk.js +2 -0
  199. package/dist/scripts/C_TaaD_7.chunk.js.map +1 -0
  200. package/dist/scripts/C_zppm7j.chunk.js +2 -0
  201. package/dist/scripts/C_zppm7j.chunk.js.map +1 -0
  202. package/dist/scripts/CbrfSCTb.chunk.js +2 -0
  203. package/dist/scripts/CbrfSCTb.chunk.js.map +1 -0
  204. package/dist/scripts/CjL3q_zy.chunk.js +6 -0
  205. package/dist/scripts/CjL3q_zy.chunk.js.map +1 -0
  206. package/dist/scripts/CjQHXyx0.chunk.js +2 -0
  207. package/dist/scripts/CjQHXyx0.chunk.js.map +1 -0
  208. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  209. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  210. package/dist/scripts/Co9J1lM_.chunk.js +2 -0
  211. package/dist/scripts/Co9J1lM_.chunk.js.map +1 -0
  212. package/dist/scripts/Cq8XHkfC.chunk.js +2 -0
  213. package/dist/scripts/Cq8XHkfC.chunk.js.map +1 -0
  214. package/dist/scripts/Crxtdvtr.chunk.js +2 -0
  215. package/dist/scripts/Crxtdvtr.chunk.js.map +1 -0
  216. package/dist/scripts/CvkQEqoz.chunk.js +2 -0
  217. package/dist/scripts/CvkQEqoz.chunk.js.map +1 -0
  218. package/dist/scripts/DC24UA5G.chunk.js +2 -0
  219. package/dist/scripts/DC24UA5G.chunk.js.map +1 -0
  220. package/dist/scripts/DDQPxnFm.chunk.js +2 -0
  221. package/dist/scripts/DDQPxnFm.chunk.js.map +1 -0
  222. package/dist/scripts/DGmD-zcu.chunk.js +3 -0
  223. package/dist/scripts/DGmD-zcu.chunk.js.map +1 -0
  224. package/dist/scripts/DIqHgqYU.chunk.js +42 -0
  225. package/dist/scripts/DIqHgqYU.chunk.js.map +1 -0
  226. package/dist/scripts/DLNH1FET.chunk.js +2 -0
  227. package/dist/scripts/DLNH1FET.chunk.js.map +1 -0
  228. package/dist/scripts/DREQwdto.chunk.js +2 -0
  229. package/dist/scripts/DREQwdto.chunk.js.map +1 -0
  230. package/dist/scripts/DSJfyygS.chunk.js +2 -0
  231. package/dist/scripts/DSJfyygS.chunk.js.map +1 -0
  232. package/dist/scripts/DUPqT4A_.chunk.js +2 -0
  233. package/dist/scripts/DUPqT4A_.chunk.js.map +1 -0
  234. package/dist/scripts/DZWKI51S.chunk.js +2 -0
  235. package/dist/scripts/DZWKI51S.chunk.js.map +1 -0
  236. package/dist/scripts/DaLaLgLY.chunk.js +2 -0
  237. package/dist/scripts/DaLaLgLY.chunk.js.map +1 -0
  238. package/dist/scripts/DcnG6LJL.chunk.js +2 -0
  239. package/dist/scripts/DcnG6LJL.chunk.js.map +1 -0
  240. package/dist/scripts/DdCE2h3h.chunk.js +2 -0
  241. package/dist/scripts/DdCE2h3h.chunk.js.map +1 -0
  242. package/dist/scripts/DdaZekkP.chunk.js +2 -0
  243. package/dist/scripts/DdaZekkP.chunk.js.map +1 -0
  244. package/dist/scripts/DkJdzeV5.chunk.js +2 -0
  245. package/dist/scripts/DkJdzeV5.chunk.js.map +1 -0
  246. package/dist/scripts/DlVmB7me.chunk.js +4 -0
  247. package/dist/scripts/DlVmB7me.chunk.js.map +1 -0
  248. package/dist/scripts/Dm6PeyeG.chunk.js +2 -0
  249. package/dist/scripts/Dm6PeyeG.chunk.js.map +1 -0
  250. package/dist/scripts/DqMufS1U.chunk.js +2 -0
  251. package/dist/scripts/DqMufS1U.chunk.js.map +1 -0
  252. package/dist/scripts/DtMtah8Q.chunk.js +2 -0
  253. package/dist/scripts/DtMtah8Q.chunk.js.map +1 -0
  254. package/dist/scripts/DwxW4_xW.chunk.js +2 -0
  255. package/dist/scripts/DwxW4_xW.chunk.js.map +1 -0
  256. package/dist/scripts/Dx4VsESo.chunk.js +2 -0
  257. package/dist/scripts/Dx4VsESo.chunk.js.map +1 -0
  258. package/dist/scripts/DyhdHLt7.chunk.js +2 -0
  259. package/dist/scripts/DyhdHLt7.chunk.js.map +1 -0
  260. package/dist/scripts/EpoqEdEt.chunk.js +2 -0
  261. package/dist/scripts/EpoqEdEt.chunk.js.map +1 -0
  262. package/dist/scripts/Etwv4iY4.chunk.js +2 -0
  263. package/dist/scripts/Etwv4iY4.chunk.js.map +1 -0
  264. package/dist/scripts/GlEgn_rx.chunk.js +2 -0
  265. package/dist/scripts/GlEgn_rx.chunk.js.map +1 -0
  266. package/dist/scripts/H-GxGp0N.chunk.js +2 -0
  267. package/dist/scripts/H-GxGp0N.chunk.js.map +1 -0
  268. package/dist/scripts/HFbpCC17.chunk.js +2 -0
  269. package/dist/scripts/HFbpCC17.chunk.js.map +1 -0
  270. package/dist/scripts/HVSLS_Hw.chunk.js +2 -0
  271. package/dist/scripts/HVSLS_Hw.chunk.js.map +1 -0
  272. package/dist/scripts/Hdw9KpzY.chunk.js +10 -0
  273. package/dist/scripts/Hdw9KpzY.chunk.js.map +1 -0
  274. package/dist/scripts/L-FEMlca.chunk.js +2 -0
  275. package/dist/scripts/L-FEMlca.chunk.js.map +1 -0
  276. package/dist/scripts/OUlVmzyS.chunk.js +2 -0
  277. package/dist/scripts/OUlVmzyS.chunk.js.map +1 -0
  278. package/dist/scripts/SdlfGvLH.chunk.js +2 -0
  279. package/dist/scripts/SdlfGvLH.chunk.js.map +1 -0
  280. package/dist/scripts/Us8IAQKV.chunk.js +2 -0
  281. package/dist/scripts/Us8IAQKV.chunk.js.map +1 -0
  282. package/dist/scripts/ZPrCrk06.chunk.js +2 -0
  283. package/dist/scripts/ZPrCrk06.chunk.js.map +1 -0
  284. package/dist/scripts/app-CQEXKRTo.js +228 -0
  285. package/dist/scripts/app-CQEXKRTo.js.map +1 -0
  286. package/dist/scripts/bDb9_r6g.chunk.js +8 -0
  287. package/dist/scripts/bDb9_r6g.chunk.js.map +1 -0
  288. package/dist/scripts/bfga3fp9.chunk.js +6 -0
  289. package/dist/scripts/bfga3fp9.chunk.js.map +1 -0
  290. package/dist/scripts/ckwYvamH.chunk.js +2 -0
  291. package/dist/scripts/ckwYvamH.chunk.js.map +1 -0
  292. package/dist/scripts/gVHcxSzg.chunk.js +2 -0
  293. package/dist/scripts/gVHcxSzg.chunk.js.map +1 -0
  294. package/dist/scripts/j7UObMj5.chunk.js +3 -0
  295. package/dist/scripts/j7UObMj5.chunk.js.map +1 -0
  296. package/dist/scripts/jNUTSO6y.chunk.js +2 -0
  297. package/dist/scripts/jNUTSO6y.chunk.js.map +1 -0
  298. package/dist/scripts/mLe4zPMQ.chunk.js +2 -0
  299. package/dist/scripts/mLe4zPMQ.chunk.js.map +1 -0
  300. package/dist/scripts/oXJu4dT2.chunk.js +2 -0
  301. package/dist/scripts/oXJu4dT2.chunk.js.map +1 -0
  302. package/dist/scripts/pW31gVxo.chunk.js +2 -0
  303. package/dist/scripts/pW31gVxo.chunk.js.map +1 -0
  304. package/dist/scripts/pmJce9de.chunk.js +2 -0
  305. package/dist/scripts/pmJce9de.chunk.js.map +1 -0
  306. package/dist/scripts/rO0zPagv.chunk.js +2 -0
  307. package/dist/scripts/rO0zPagv.chunk.js.map +1 -0
  308. package/dist/scripts/rf9OuobP.chunk.js +2 -0
  309. package/dist/scripts/rf9OuobP.chunk.js.map +1 -0
  310. package/dist/scripts/sBa2VMAv.chunk.js +2 -0
  311. package/dist/scripts/sBa2VMAv.chunk.js.map +1 -0
  312. package/dist/scripts/sFV5nxD4.chunk.js +2 -0
  313. package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
  314. package/dist/scripts/vDUMsOFT.chunk.js +2 -0
  315. package/dist/scripts/vDUMsOFT.chunk.js.map +1 -0
  316. package/dist/scripts/z0Is6h8v.chunk.js +2 -0
  317. package/dist/scripts/z0Is6h8v.chunk.js.map +1 -0
  318. package/dist/scripts/zVke3nt7.chunk.js +3 -0
  319. package/dist/scripts/zVke3nt7.chunk.js.map +1 -0
  320. package/package.json +5 -3
  321. package/typings/utils/env.d.ts +3 -0
  322. package/typings/utils/imports.d.ts +1 -1
  323. package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
  324. package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
  325. package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
  326. package/dist/css/209-reports-c33663a53e.chunk.css +0 -11
  327. package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
  328. package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
  329. package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
  330. package/dist/css/2999-reports-f190450b10.chunk.css +0 -60
  331. package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
  332. package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
  333. package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
  334. package/dist/css/6031-reports-d558076846.chunk.css +0 -6
  335. package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
  336. package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
  337. package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
  338. package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
  339. package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
  340. package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
  341. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
  342. package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
  343. package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
  344. package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
  345. package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
  346. package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
  347. package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
  348. package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
  349. package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
  350. package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
  351. package/dist/css/reports-app-b4c4ec5632.css +0 -32
  352. package/dist/languages/en.json +0 -1
  353. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
  354. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
  355. package/dist/scripts/1456-b7f437ef87-reports.chunk.js +0 -1
  356. package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
  357. package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
  358. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
  359. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
  360. package/dist/scripts/209-72e77f375e-reports.chunk.js +0 -1
  361. package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +0 -1
  362. package/dist/scripts/2217-15fa35197a-reports.chunk.js +0 -1
  363. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
  364. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
  365. package/dist/scripts/2997-444b5bdaf0-reports.chunk.js +0 -1
  366. package/dist/scripts/2999-4d87eebbbd-reports.chunk.js +0 -2
  367. package/dist/scripts/2999-4d87eebbbd-reports.chunk.js.LICENSE.txt +0 -1
  368. package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
  369. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
  370. package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
  371. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
  372. package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
  373. package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
  374. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
  375. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
  376. package/dist/scripts/5051-ff0ec9348d-reports.chunk.js +0 -1
  377. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
  378. package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
  379. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
  380. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
  381. package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
  382. package/dist/scripts/6007-42edca6bba-reports.chunk.js +0 -1
  383. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
  384. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
  385. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
  386. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
  387. package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
  388. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
  389. package/dist/scripts/645-e8b19128e5-reports.chunk.js +0 -1
  390. package/dist/scripts/6545-eadce8e749-reports.chunk.js +0 -1
  391. package/dist/scripts/6811-40ded4c089-reports.chunk.js +0 -1
  392. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
  393. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
  394. package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
  395. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
  396. package/dist/scripts/7747-bc33e51d7b-reports.chunk.js +0 -2
  397. package/dist/scripts/7747-bc33e51d7b-reports.chunk.js.LICENSE.txt +0 -1
  398. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
  399. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
  400. package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +0 -1
  401. package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
  402. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
  403. package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
  404. package/dist/scripts/8622-a422eff0c4-reports.chunk.js +0 -1
  405. package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
  406. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
  407. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
  408. package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
  409. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
  410. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
  411. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
  412. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
  413. package/dist/scripts/9822-1b202f9d49-reports.chunk.js +0 -1
  414. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
  415. package/dist/scripts/9949-63e32c6733-reports.chunk.js +0 -1
  416. package/dist/scripts/bundle-1bfbac149b.min.js +0 -2
  417. package/dist/scripts/bundle-1bfbac149b.min.js.LICENSE.txt +0 -108
  418. package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BEjQ8YiC.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={props.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 <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{s as i,bJ as f,bK as c,bM as j,j as o}from"./app-CQEXKRTo.js";var a=(e=>(e.Playlists="playlists",e.Series="series",e.Videos="videos",e.PinnedVideos="pinnedVideos",e))(a||{}),n=(e=>(e.Subject="Subject",e.Curriculum="Curriculum",e.StreamableLearning="StreamableLearning",e))(n||{});const m=e=>`subjectpresentationaudiences.id:[${e.join(",")}]`,L={topicsFromAllAvailablePresentations(e){const s={filterType:"topics",presentationId:e};return{url:i.urlBuilder("{gateway}/v1/search/filters",s),publicUrl:i.urlBuilder("/api/search/filters",s),key:"classification:availableTopics",normalize:!1}},availablePresentations(e){const s={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations/available",s),publicUrl:i.urlBuilder("/api/subjects/presentations/available",s),key:`available:presentations:${e}`,normalizeOptions:{namespace:"presentation"}}},topLevelTopics(e){const s={query:c.CLASSIFICATION_COLLECTION,sort:"alphabetical"};return{url:i.urlBuilder(`{gateway}/v1/subjects/presentations/${e}/classifications`,s),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}/classifications`,s),key:`presentation:${e}:classifications`}},presentationById(e){return{url:`{gateway}/v1/subjects/presentations/${e}`,publicUrl:`/api/subjects/presentations/${e}`,key:`presentation:${e}`}},presentationBySlug(e,s,r){const t={type:r.toLowerCase(),contentRegion:s};return{url:i.urlBuilder(`/api/subjects/presentations/${e}`,t),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}`,t),key:`current:presentation:${r.toLowerCase()}:${s}:${e??""}`,bootstrapName:"presentation",normalizeOptions:{namespace:"presentation"}}},presentation(e,s){const r={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations",r),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}`,r),key:`current:presentation${e?`:${e.toLowerCase()}`:""}${s?`:${s}`:""}`,normalizeOptions:{namespace:"presentation"}}},classifications(){return{url:i.urlBuilder("{gateway}/v1/users/me/classifications",{query:c.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),publicUrl:i.urlBuilder("/api/subjects/classifications",{query:j.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),key:"classifications"}},classification(e,s,r){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}`,{query:c.CLASSIFICATION(s)}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}`,{query:j.CLASSIFICATION}),key:`classification:${e}`,error:r}},path(e,s){const r={type:s};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/path`,r),publicUrl:`/api/subjects/classifications/${e}/path`,key:`classification:${e}:path`}},paths(e){return{url:`/api/subjects/classifications/${e}/paths`,key:`classification:${e}:paths`}},children(e){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/children`,{query:c.CLASSIFICATION_COLLECTION}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/children`,{query:j.CLASSIFICATION_COLLECTION}),key:`classification:${e}:children`}},videos(e,s,r){if(!s)return;let t="limit:100,orderbydesc:timestamp";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}(videoCollection),subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.PinnedVideos}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.PinnedVideos}`,l),key:`classification:${e}:${a.PinnedVideos}:${r.join(":")}`}},playlists(e,s,r){if(!s)return;let t="limit:100,orderby:name";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.PLAYLIST_COLLECTION},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Playlists}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Playlists}`,l),key:`classification:${e}:${a.Playlists}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.cover)==null?void 0:b.url})}}}},series(e,s,r){if(!s)return;let t="limit:100";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.SERIES},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Series}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Series}`,l),key:`classification:${e}:${a.Series}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.tallPoster)==null?void 0:b.url})}}}},curriculumLinks(e,s){return{url:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),key:`curriculum:links:${e}:${s}`,normalize:!1}},subjectLinks(e,s){const r=i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Subject.toLowerCase()});return{url:r,publicUrl:r,key:`subject:links:${e}:${s}`,normalize:!1}},getMappedCurriculums(e,s){const r={type:n.Curriculum.toLowerCase()};return{url:i.urlBuilder(`{gateway}/v1/objects/${e}/presentations`,r),publicUrl:i.urlBuilder(`/api/subjects/${e}/presentations`,{...r,pid:s}),key:`mapped:curriculums:${e}:${s.join(",")}`,normalize:!1}},regionAlternatives(e,s,r,t){return{url:`/api/subjects/classifications/${e}/region-alternatives`,publicUrl:`/api/subjects/classifications/${e}/region-alternatives`,key:`classification:regionAlternatives:${e}`,normalize:!1,success:s,error:r,always:t}}};function S(e){return o.jsxs("svg",{...e,children:[o.jsx("defs",{children:o.jsx("path",{id:"a",d:"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6",fill:"currentColor"})}),o.jsx("use",{xlinkHref:"#a",fill:"#333"})]})}function d(e){return o.jsx("svg",{...e,children:o.jsx("path",{fill:"currentColor",d:"M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z"})})}export{L as C,d as L,n as P,S as V};
2
+ //# sourceMappingURL=BFH1W3y4.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BFH1W3y4.chunk.js","sources":["../../../../libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","../../../../libs/shared/src/enums/PresentationType.ts","../../../../libs/shared/src/flight-requests/ClassificationRequests.ts","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx","../../../../libs/shared/src/images/svg/objects/LinkSvg.tsx"],"sourcesContent":["export enum ClassificationMemberType {\n Playlists = 'playlists',\n Series = 'series',\n Videos = 'videos',\n PinnedVideos = 'pinnedVideos'\n}","export enum PresentationType {\n Subject = 'Subject',\n Curriculum = 'Curriculum',\n StreamableLearning = 'StreamableLearning'\n}","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { PlaylistCollection, RegionAlternative, SeriesCollection } from 'libs/shared/interfaces';\n\nconst getClassificationMemberFilter = (ids: string[]) => `subjectpresentationaudiences.id:[${ids.join(',')}]`;\n\nexport const ClassificationRequests = {\n topicsFromAllAvailablePresentations(ids: string[]): Flight.PublicRequest {\n const params = { filterType: 'topics', presentationId: ids };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/search/filters', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/filters', params),\n key: 'classification:availableTopics',\n normalize: false\n };\n },\n\n availablePresentations(type?: PresentationType): Flight.PublicRequest {\n const queryStringOpts = { type: type?.toLowerCase() };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations/available', queryStringOpts),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/presentations/available', queryStringOpts),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n topLevelTopics(presentationId: string): Flight.PublicRequest {\n const params = {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n sort: 'alphabetical'\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/presentations/${presentationId}/classifications`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/classifications`, params),\n key: `presentation:${presentationId}:classifications`\n };\n },\n\n presentationById(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}`,\n publicUrl: `/api/subjects/presentations/${presentationId}`,\n key: `presentation:${presentationId}`\n };\n },\n\n presentationBySlug(presentationSlug: string, contentRegion: string, type: PresentationType): Flight.PublicRequest {\n const params = {\n type: type.toLowerCase(),\n contentRegion: contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n key: `current:presentation:${type.toLowerCase()}:${contentRegion}:${presentationSlug ?? ''}`,\n bootstrapName: 'presentation',\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n presentation(type: PresentationType, presentationId?: string): Flight.PublicRequest {\n const params = {\n type: type?.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations', params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}`, params),\n key: `current:presentation${type ? `:${type.toLowerCase()}` : ''}${presentationId ? `:${presentationId}` : ''}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n classifications(): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications', {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/classifications', {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n key: `classifications`\n };\n },\n\n classification(id: string, userId?: string, error?: (xhr: Xhr) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}`, {\n query: SharedWithStatements.CLASSIFICATION(userId)\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}`, {\n query: PublicWithStatement.CLASSIFICATION\n }),\n key: `classification:${id}`,\n error\n };\n },\n\n path(id: string, presentationType?: PresentationType): Flight.PublicRequest {\n const params = { type: presentationType };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/path`, params),\n publicUrl: `/api/subjects/classifications/${id}/path`,\n key: `classification:${id}:path`\n };\n },\n\n paths(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/paths`,\n key: `classification:${id}:paths`\n };\n },\n\n children(id: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/children`, {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/children`, {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION\n }),\n key: `classification:${id}:children`\n };\n },\n\n videos(\n id: string,\n presentationId: string,\n activeAudiences: string[]\n ): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderbydesc:timestamp';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}(videoCollection),subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.PinnedVideos}:${activeAudiences.join(':')}`\n };\n },\n\n /**\n * This request should only be used when displaying the playlist widget within a classification/topic page.\n * The current behaviour is to filter out any playlist that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderby:name';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\n formatData: (playlist: PlaylistCollection): PlaylistCollection => {\n if (!playlist)\n return;\n\n return {\n ...playlist,\n data: playlist.data?.filter(p => p.cover?.url)\n };\n }\n };\n },\n\n /**\n * This request should only be used when displaying the series widget within a classification/topic page.\n * The current behaviour is to filter out any series that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.SERIES}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\n formatData: (series: SeriesCollection): SeriesCollection => {\n if (!series)\n return;\n\n return {\n ...series,\n data: series.data?.filter(s => s.tallPoster?.url)\n };\n }\n };\n },\n\n curriculumLinks(id: string, curriculumId: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n key: `curriculum:links:${id}:${curriculumId}`,\n normalize: false\n };\n },\n\n subjectLinks(id: string, presentationId: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Subject.toLowerCase()\n });\n\n return {\n url,\n publicUrl: url,\n key: `subject:links:${id}:${presentationId}`,\n normalize: false\n };\n },\n\n getMappedCurriculums(\n id: string,\n pids: string[]\n ): Flight.PublicRequest {\n const params: HashObject = {\n type: PresentationType.Curriculum.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/presentations`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/${id}/presentations`, { ...params, pid: pids }),\n key: `mapped:curriculums:${id}:${pids.join(',')}`,\n normalize: false\n };\n },\n\n regionAlternatives(\n classificationId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n publicUrl: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n key: `classification:regionAlternatives:${classificationId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='a'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#a' fill='#333' />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function LinkSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z'\n />\n </svg>\n );\n}\n"],"names":["ClassificationMemberType","PresentationType","getClassificationMemberFilter","ids","ClassificationRequests","params","UrlHelper","type","queryStringOpts","presentationId","SharedWithStatements","presentationSlug","contentRegion","PublicWithStatement","id","userId","error","presentationType","activeAudiences","filter","queryStringObj","PermissionFilterOption","playlist","_a","p","series","s","curriculumId","url","pids","classificationId","success","always","VisibleOnSvg","props","jsxs","jsx","LinkSvg"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{cT as $}from"./app-CQEXKRTo.js";const u=(n,s,e)=>{n=n.toString();const t=s-n.length;return t<=0?n:new Array(t+1).join(e)+n},c={ToDisplayDuration(n,s){if(!$(n))return"";const e=new Date(n),t=e.getUTCHours(),r=u(e.getUTCMinutes(),2,"0"),o=u(e.getUTCSeconds(),2,"0");return s||t>0?`${t}:${r}:${o}`:`${r}:${o}`},ToDisplayDurationNewStyle(n,s){if(!$(n))return"";const e=new Date(n),t=e.getUTCHours();let r=e.getUTCMinutes();const o=e.getUTCSeconds();if((t>0||r>0)&&o>=30&&(r=r+1),t>0){const i=t>1?"hrs":"hr";return r>0?s&&o>0?`${t}${i} ${r}m ${o}s`:`${t}${i} ${r}m `:`${t} ${i}`}return r>0?s&&o>0?`${r}m ${o}s`:`${r}m`:`${o}s`}};export{c as D};
2
+ //# sourceMappingURL=BGYUqEPH.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BGYUqEPH.chunk.js","sources":["../../../../libs/shared/src/utils/DurationHelper.ts"],"sourcesContent":["import * as _ from 'underscore';\n\nconst padLeft = (value: string | number, totalLength: number, padChar: string) => {\n value = value.toString();\n\n const diff = totalLength - value.length;\n\n if (diff <= 0)\n return value;\n\n return new Array(diff + 1).join(padChar) + value;\n};\n\nconst DurationHelper = {\n /**\n * Copypasta from Online. Feel free to improve it if you see fit - Sha\n */\n ToDisplayDuration(milliseconds: number, showAll?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n \n const time = new Date(milliseconds);\n \n const h = time.getUTCHours();\n const m = padLeft(time.getUTCMinutes(), 2, '0');\n const s = padLeft(time.getUTCSeconds(), 2, '0');\n \n if (showAll || h > 0) {\n return `${h}:${m}:${s}`;\n }\n \n return `${m}:${s}`;\n },\n\n ToDisplayDurationNewStyle(milliseconds: number, includeSeconds?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n\n const time = new Date(milliseconds);\n\n const h = time.getUTCHours();\n let m = time.getUTCMinutes();\n const s = time.getUTCSeconds();\n\n // Round up 1m when >= 30s\n if ((h > 0 || m > 0) && s >= 30) {\n m = m + 1;\n }\n \n if (h > 0) {\n const hourUnit = h > 1 ? 'hrs' : 'hr';\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${h}${hourUnit} ${m}m ${s}s`;\n }\n\n return `${h}${hourUnit} ${m}m `;\n }\n \n return `${h} ${hourUnit}`;\n }\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${m}m ${s}s`;\n }\n\n return `${m}m`;\n }\n\n return `${s}s`;\n }\n};\n\nexport { DurationHelper };"],"names":["padLeft","value","totalLength","padChar","diff","DurationHelper","milliseconds","showAll","_.isNumber","time","h","m","s","includeSeconds","hourUnit"],"mappings":"uCAEA,MAAMA,EAAU,CAACC,EAAwBC,EAAqBC,IAAoB,CAChFF,EAAQA,EAAM,SAAA,EAEd,MAAMG,EAAOF,EAAcD,EAAM,OAEjC,OAAIG,GAAQ,EACHH,EAEF,IAAI,MAAMG,EAAO,CAAC,EAAE,KAAKD,CAAO,EAAIF,CAC7C,EAEMI,EAAiB,CAIrB,kBAAkBC,EAAsBC,EAA2B,CACjE,GAAI,CAACC,EAAWF,CAAY,EAC1B,MAAO,GAET,MAAMG,EAAO,IAAI,KAAKH,CAAY,EAE5BI,EAAID,EAAK,YAAA,EACTE,EAAIX,EAAQS,EAAK,cAAA,EAAiB,EAAG,GAAG,EACxCG,EAAIZ,EAAQS,EAAK,cAAA,EAAiB,EAAG,GAAG,EAE9C,OAAIF,GAAWG,EAAI,EACV,GAAGA,CAAC,IAAIC,CAAC,IAAIC,CAAC,GAGhB,GAAGD,CAAC,IAAIC,CAAC,EAClB,EAEA,0BAA0BN,EAAsBO,EAAkC,CAChF,GAAI,CAACL,EAAWF,CAAY,EAC1B,MAAO,GAET,MAAMG,EAAO,IAAI,KAAKH,CAAY,EAE5BI,EAAID,EAAK,YAAA,EACf,IAAIE,EAAIF,EAAK,cAAA,EACb,MAAMG,EAAIH,EAAK,cAAA,EAOf,IAJKC,EAAI,GAAKC,EAAI,IAAMC,GAAK,KAC3BD,EAAIA,EAAI,GAGND,EAAI,EAAG,CACT,MAAMI,EAAWJ,EAAI,EAAI,MAAQ,KAEjC,OAAIC,EAAI,EACFE,GAAkBD,EAAI,EACjB,GAAGF,CAAC,GAAGI,CAAQ,IAAIH,CAAC,KAAKC,CAAC,IAG5B,GAAGF,CAAC,GAAGI,CAAQ,IAAIH,CAAC,KAGtB,GAAGD,CAAC,IAAII,CAAQ,EACzB,CAEA,OAAIH,EAAI,EACFE,GAAkBD,EAAI,EACjB,GAAGD,CAAC,KAAKC,CAAC,IAGZ,GAAGD,CAAC,IAGN,GAAGC,CAAC,GACb,CACF"}
@@ -0,0 +1,3 @@
1
+ import{L as c,aV as h}from"./app-CQEXKRTo.js";class d{constructor(a){const{length:r,separator:o,dictionaries:n,style:t,seed:i}=a;this.dictionaries=n,this.separator=o,this.length=r,this.style=t,this.seed=i}generate(){if(!this.dictionaries)throw new Error('Cannot find any dictionary. Please provide at least one, or leave the "dictionary" field empty in the config object');if(this.length<=0)throw new Error("Invalid length provided");if(this.length>this.dictionaries.length)throw new Error(`The length cannot be bigger than the number of dictionaries.
2
+ Length provided: ${this.length}. Number of dictionaries provided: ${this.dictionaries.length}`);return this.dictionaries.slice(0,this.length).reduce((a,r)=>{let o=r[Math.floor((this.seed?(n=this.seed,(t=>{t=1831565813+(t|=0)|0;let i=Math.imul(t^t>>>15,1|t);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296})(n)):Math.random())*r.length)]||"";var n;if(this.style==="lowerCase")o=o.toLowerCase();else if(this.style==="capital"){const[t,...i]=o.split("");o=t.toUpperCase()+i.join("")}else this.style==="upperCase"&&(o=o.toUpperCase());return a?`${a}${this.separator}${o}`:`${o}`},"")}}const s={separator:"_",dictionaries:[]},p=e=>{const a=[...e&&e.dictionaries||s.dictionaries],r={...s,...e,length:e&&e.length||a.length,dictionaries:a};if(!e||!e.dictionaries||!e.dictionaries.length)throw new Error('A "dictionaries" array must be provided. This is a breaking change introduced starting from Unique Name Generator v4. Read more about the breaking change here: https://github.com/andreasonny83/unique-names-generator#migration-guide');return new d(r).generate()};var g=["aardvark","aardwolf","albatross","alligator","alpaca","amphibian","anaconda","angelfish","anglerfish","ant","anteater","antelope","antlion","ape","aphid","armadillo","asp","baboon","badger","bandicoot","barnacle","barracuda","basilisk","bass","bat","bear","beaver","bedbug","bee","beetle","bird","bison","blackbird","boa","boar","bobcat","bobolink","bonobo","booby","bovid","bug","butterfly","buzzard","camel","canid","canidae","capybara","cardinal","caribou","carp","cat","caterpillar","catfish","catshark","cattle","centipede","cephalopod","chameleon","cheetah","chickadee","chicken","chimpanzee","chinchilla","chipmunk","cicada","clam","clownfish","cobra","cockroach","cod","condor","constrictor","coral","cougar","cow","coyote","crab","crane","crawdad","crayfish","cricket","crocodile","crow","cuckoo","damselfly","deer","dingo","dinosaur","dog","dolphin","donkey","dormouse","dove","dragon","dragonfly","duck","eagle","earthworm","earwig","echidna","eel","egret","elephant","elk","emu","ermine","falcon","felidae","ferret","finch","firefly","fish","flamingo","flea","fly","flyingfish","fowl","fox","frog","galliform","gamefowl","gayal","gazelle","gecko","gerbil","gibbon","giraffe","goat","goldfish","goose","gopher","gorilla","grasshopper","grouse","guan","guanaco","guineafowl","gull","guppy","haddock","halibut","hamster","hare","harrier","hawk","hedgehog","heron","herring","hippopotamus","hookworm","hornet","horse","hoverfly","hummingbird","hyena","iguana","impala","jackal","jaguar","jay","jellyfish","junglefowl","kangaroo","kingfisher","kite","kiwi","koala","koi","krill","ladybug","lamprey","landfowl","lark","leech","lemming","lemur","leopard","leopon","limpet","lion","lizard","llama","lobster","locust","loon","louse","lungfish","lynx","macaw","mackerel","magpie","mammal","manatee","mandrill","marlin","marmoset","marmot","marsupial","marten","mastodon","meadowlark","meerkat","mink","minnow","mite","mockingbird","mole","mollusk","mongoose","monkey","moose","mosquito","moth","mouse","mule","muskox","narwhal","newt","nightingale","ocelot","octopus","opossum","orangutan","orca","ostrich","otter","owl","ox","panda","panther","parakeet","parrot","parrotfish","partridge","peacock","peafowl","pelican","penguin","perch","pheasant","pig","pigeon","pike","pinniped","piranha","planarian","platypus","pony","porcupine","porpoise","possum","prawn","primate","ptarmigan","puffin","puma","python","quail","quelea","quokka","rabbit","raccoon","rat","rattlesnake","raven","reindeer","reptile","rhinoceros","roadrunner","rodent","rook","rooster","roundworm","sailfish","salamander","salmon","sawfish","scallop","scorpion","seahorse","shark","sheep","shrew","shrimp","silkworm","silverfish","skink","skunk","sloth","slug","smelt","snail","snake","snipe","sole","sparrow","spider","spoonbill","squid","squirrel","starfish","stingray","stoat","stork","sturgeon","swallow","swan","swift","swordfish","swordtail","tahr","takin","tapir","tarantula","tarsier","termite","tern","thrush","tick","tiger","tiglon","toad","tortoise","toucan","trout","tuna","turkey","turtle","tyrannosaurus","unicorn","urial","vicuna","viper","vole","vulture","wallaby","walrus","warbler","wasp","weasel","whale","whippet","whitefish","wildcat","wildebeest","wildfowl","wolf","wolverine","wombat","woodpecker","worm","wren","xerinae","yak","zebra"],u=["amaranth","amber","amethyst","apricot","aqua","aquamarine","azure","beige","black","blue","blush","bronze","brown","chocolate","coffee","copper","coral","crimson","cyan","emerald","fuchsia","gold","gray","green","harlequin","indigo","ivory","jade","lavender","lime","magenta","maroon","moccasin","olive","orange","peach","pink","plum","purple","red","rose","salmon","sapphire","scarlet","silver","tan","teal","tomato","turquoise","violet","white","yellow"];const m="shared.analyticsUtils",l=c.encloseNamespace(m);function f(e){if(!e)return 0;let a=0;for(let r=0;r<e.length;r++){const o=e.charCodeAt(r);a=(a<<5)-a+o,a|=0}return Math.abs(a)}function b(e,a){const r=+`${e||f(a)}${Math.floor(new Date().getMinutes()/5)}`;return{dictionaries:[u,g],separator:" ",length:2,style:"capital",seed:r}}function k(e,a){return e?a?p(b(e.id,e.sessionId)):e.deleted?l("deleted"):h.getFullName(e)||l("anonUser"):l("anonUser")}export{k as a};
3
+ //# sourceMappingURL=BI4Pc5Qp.chunk.js.map