@clickview/streamable-learning 0.36.0 → 0.36.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) 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 -2
  61. package/dist/css/B-attovs.chunk.css +9 -0
  62. package/dist/css/B1NucFMn.chunk.css +1 -0
  63. package/dist/css/BPdg7JW4.chunk.css +1 -0
  64. package/dist/css/BPrUSCaY.chunk.css +1 -0
  65. package/dist/css/BR0fUt9D.chunk.css +1 -0
  66. package/dist/css/BhYm6SRm.chunk.css +1 -0
  67. package/dist/css/BiRz4h1c.chunk.css +1 -0
  68. package/dist/css/Bq1ChJn4.chunk.css +1 -0
  69. package/dist/css/Bt85j9js.chunk.css +1 -0
  70. package/dist/css/BuYrqi9E.chunk.css +1 -0
  71. package/dist/css/BugV1Bpa.chunk.css +1 -0
  72. package/dist/css/BuuVPl7n.chunk.css +1 -0
  73. package/dist/css/C1NkrNqQ.chunk.css +1 -0
  74. package/dist/css/C1qv5jz5.chunk.css +1 -0
  75. package/dist/css/C7XoyEPr.chunk.css +1 -0
  76. package/dist/css/C7_MDu56.chunk.css +1 -0
  77. package/dist/css/CC5F5C8O.chunk.css +1 -0
  78. package/dist/css/CChSC6Ta.chunk.css +1 -0
  79. package/dist/css/CCsCPLDG.chunk.css +1 -0
  80. package/dist/css/CD1qrI1T.chunk.css +1 -0
  81. package/dist/css/CKqvCBj4.chunk.css +1 -0
  82. package/dist/css/CLZ0Ycds.chunk.css +1 -0
  83. package/dist/css/CO7M4rZW.chunk.css +1 -0
  84. package/dist/css/CY0yvCW4.chunk.css +1 -0
  85. package/dist/css/CYGsw8FT.chunk.css +1 -0
  86. package/dist/css/Cbi3KYBa.chunk.css +1 -0
  87. package/dist/css/CgWQu_Ss.chunk.css +1 -0
  88. package/dist/css/CliS8Q8r.chunk.css +1 -0
  89. package/dist/css/D-kQKsZN.chunk.css +1 -0
  90. package/dist/css/D2NwUVrK.chunk.css +1 -0
  91. package/dist/css/D4g1IoUU.chunk.css +1 -0
  92. package/dist/css/DBgpcO3T.chunk.css +1 -0
  93. package/dist/css/DDnpOnVB.chunk.css +1 -0
  94. package/dist/css/DZJSONGP.chunk.css +1 -0
  95. package/dist/css/DeAfaPiD.chunk.css +1 -0
  96. package/dist/css/Dj731zLm.chunk.css +1 -0
  97. package/dist/css/DjPPxa0A.chunk.css +1 -0
  98. package/dist/css/DlOtoSz0.chunk.css +1 -0
  99. package/dist/css/DwduQat7.chunk.css +1 -0
  100. package/dist/css/Dzuu2GTx.chunk.css +1 -0
  101. package/dist/css/JAvsJreH.chunk.css +1 -0
  102. package/dist/css/NKlFYVOc.chunk.css +1 -0
  103. package/dist/css/VZd8qGtK.chunk.css +1 -0
  104. package/dist/css/Y7U--2na.chunk.css +1 -0
  105. package/dist/css/ir3IcK_l.chunk.css +1 -0
  106. package/dist/css/jbMisi9r.chunk.css +1 -0
  107. package/dist/css/kS5aDtIJ.chunk.css +1 -0
  108. package/dist/css/mqCL1o7m.chunk.css +1 -0
  109. package/dist/css/qZzkUeZk.chunk.css +1 -0
  110. package/dist/css/sC_H3yXE.chunk.css +1 -0
  111. package/dist/css/wR_6C_NV.chunk.css +1 -0
  112. package/dist/en.json +1 -0
  113. package/dist/scripts/38Gc6FvJ.chunk.js +2 -0
  114. package/dist/scripts/38Gc6FvJ.chunk.js.map +1 -0
  115. package/dist/scripts/9vP26Hjl.chunk.js +2 -0
  116. package/dist/scripts/9vP26Hjl.chunk.js.map +1 -0
  117. package/dist/scripts/B-YTLo4E.chunk.js +2 -0
  118. package/dist/scripts/B-YTLo4E.chunk.js.map +1 -0
  119. package/dist/scripts/B2rqAGbQ.chunk.js +2 -0
  120. package/dist/scripts/B2rqAGbQ.chunk.js.map +1 -0
  121. package/dist/scripts/B46nd_gM.chunk.js +2 -0
  122. package/dist/scripts/B46nd_gM.chunk.js.map +1 -0
  123. package/dist/scripts/B61dxODs.chunk.js +2 -0
  124. package/dist/scripts/B61dxODs.chunk.js.map +1 -0
  125. package/dist/scripts/B928Y1m-.chunk.js +2 -0
  126. package/dist/scripts/B928Y1m-.chunk.js.map +1 -0
  127. package/dist/scripts/BBnDr_iy.chunk.js +2 -0
  128. package/dist/scripts/BBnDr_iy.chunk.js.map +1 -0
  129. package/dist/scripts/BDwX0xO5.chunk.js +7 -0
  130. package/dist/scripts/BDwX0xO5.chunk.js.map +1 -0
  131. package/dist/scripts/BFcg4phV.chunk.js +15 -0
  132. package/dist/scripts/BFcg4phV.chunk.js.map +1 -0
  133. package/dist/scripts/BOH3SvVi.chunk.js +2 -0
  134. package/dist/scripts/BOH3SvVi.chunk.js.map +1 -0
  135. package/dist/scripts/BPzvNgkA.chunk.js +10 -0
  136. package/dist/scripts/BPzvNgkA.chunk.js.map +1 -0
  137. package/dist/scripts/BWkYFXR0.chunk.js +2 -0
  138. package/dist/scripts/BWkYFXR0.chunk.js.map +1 -0
  139. package/dist/scripts/BYrL8Bl0.chunk.js +2 -0
  140. package/dist/scripts/BYrL8Bl0.chunk.js.map +1 -0
  141. package/dist/scripts/BaMuTXqa.chunk.js +2 -0
  142. package/dist/scripts/BaMuTXqa.chunk.js.map +1 -0
  143. package/dist/scripts/Bbj3u3zY.chunk.js +2 -0
  144. package/dist/scripts/Bbj3u3zY.chunk.js.map +1 -0
  145. package/dist/scripts/Bd-gJLT1.chunk.js +2 -0
  146. package/dist/scripts/Bd-gJLT1.chunk.js.map +1 -0
  147. package/dist/scripts/BdHxGaRy.chunk.js +2 -0
  148. package/dist/scripts/BdHxGaRy.chunk.js.map +1 -0
  149. package/dist/scripts/BdPgUz8g.chunk.js +2 -0
  150. package/dist/scripts/BdPgUz8g.chunk.js.map +1 -0
  151. package/dist/scripts/Be6BKGLG.chunk.js +356 -0
  152. package/dist/scripts/Be6BKGLG.chunk.js.map +1 -0
  153. package/dist/scripts/BfK6q73t.chunk.js +8 -0
  154. package/dist/scripts/BfK6q73t.chunk.js.map +1 -0
  155. package/dist/scripts/Bg1w511R.chunk.js +2 -0
  156. package/dist/scripts/Bg1w511R.chunk.js.map +1 -0
  157. package/dist/scripts/Bg6K2hsA.chunk.js +3 -0
  158. package/dist/scripts/Bg6K2hsA.chunk.js.map +1 -0
  159. package/dist/scripts/BiLpxxSD.chunk.js +2 -0
  160. package/dist/scripts/BiLpxxSD.chunk.js.map +1 -0
  161. package/dist/scripts/BmN5JsPi.chunk.js +5 -0
  162. package/dist/scripts/BmN5JsPi.chunk.js.map +1 -0
  163. package/dist/scripts/BnSh6tRF.chunk.js +2 -0
  164. package/dist/scripts/BnSh6tRF.chunk.js.map +1 -0
  165. package/dist/scripts/Bnt14Hw8.chunk.js +2 -0
  166. package/dist/scripts/Bnt14Hw8.chunk.js.map +1 -0
  167. package/dist/scripts/BpRVTpnA.chunk.js +8 -0
  168. package/dist/scripts/BpRVTpnA.chunk.js.map +1 -0
  169. package/dist/scripts/BsoISj2P.chunk.js +2 -0
  170. package/dist/scripts/BsoISj2P.chunk.js.map +1 -0
  171. package/dist/scripts/BuNZOfIz.chunk.js +2 -0
  172. package/dist/scripts/BuNZOfIz.chunk.js.map +1 -0
  173. package/dist/scripts/BvQxdtl3.chunk.js +2 -0
  174. package/dist/scripts/BvQxdtl3.chunk.js.map +1 -0
  175. package/dist/scripts/C2zcSUEr.chunk.js +2 -0
  176. package/dist/scripts/C2zcSUEr.chunk.js.map +1 -0
  177. package/dist/scripts/C35NlkUr.chunk.js +2 -0
  178. package/dist/scripts/C35NlkUr.chunk.js.map +1 -0
  179. package/dist/scripts/C5Fq7Tf-.chunk.js +2 -0
  180. package/dist/scripts/C5Fq7Tf-.chunk.js.map +1 -0
  181. package/dist/scripts/CD-ZU1Sa.chunk.js +2 -0
  182. package/dist/scripts/CD-ZU1Sa.chunk.js.map +1 -0
  183. package/dist/scripts/CEmtkty-.chunk.js +2 -0
  184. package/dist/scripts/CEmtkty-.chunk.js.map +1 -0
  185. package/dist/scripts/CO1Up6zQ.chunk.js +2 -0
  186. package/dist/scripts/CO1Up6zQ.chunk.js.map +1 -0
  187. package/dist/scripts/CPNjAJN5.chunk.js +2 -0
  188. package/dist/scripts/CPNjAJN5.chunk.js.map +1 -0
  189. package/dist/scripts/CPXlV0fg.chunk.js +2 -0
  190. package/dist/scripts/CPXlV0fg.chunk.js.map +1 -0
  191. package/dist/scripts/CQJIB_e-.chunk.js +2 -0
  192. package/dist/scripts/CQJIB_e-.chunk.js.map +1 -0
  193. package/dist/scripts/CRusuLqR.chunk.js +2 -0
  194. package/dist/scripts/CRusuLqR.chunk.js.map +1 -0
  195. package/dist/scripts/CTWahyAB.chunk.js +2 -0
  196. package/dist/scripts/CTWahyAB.chunk.js.map +1 -0
  197. package/dist/scripts/CU5Dd7rS.chunk.js +2 -0
  198. package/dist/scripts/CU5Dd7rS.chunk.js.map +1 -0
  199. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  200. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  201. package/dist/scripts/CX-Bc0hf.chunk.js +2 -0
  202. package/dist/scripts/CX-Bc0hf.chunk.js.map +1 -0
  203. package/dist/scripts/CY1om5lx.chunk.js +2 -0
  204. package/dist/scripts/CY1om5lx.chunk.js.map +1 -0
  205. package/dist/scripts/C_79jeAr.chunk.js +2 -0
  206. package/dist/scripts/C_79jeAr.chunk.js.map +1 -0
  207. package/dist/scripts/C_pobyVf.chunk.js +3 -0
  208. package/dist/scripts/C_pobyVf.chunk.js.map +1 -0
  209. package/dist/scripts/Cgf5lDwO.chunk.js +2 -0
  210. package/dist/scripts/Cgf5lDwO.chunk.js.map +1 -0
  211. package/dist/scripts/Ci9wGu6N.chunk.js +2 -0
  212. package/dist/scripts/Ci9wGu6N.chunk.js.map +1 -0
  213. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  214. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  215. package/dist/scripts/Cp-yDIHE.chunk.js +2 -0
  216. package/dist/scripts/Cp-yDIHE.chunk.js.map +1 -0
  217. package/dist/scripts/CqWRz_Vd.chunk.js +2 -0
  218. package/dist/scripts/CqWRz_Vd.chunk.js.map +1 -0
  219. package/dist/scripts/Cs-XAmfP.chunk.js +2 -0
  220. package/dist/scripts/Cs-XAmfP.chunk.js.map +1 -0
  221. package/dist/scripts/CsxsnXoH.chunk.js +2 -0
  222. package/dist/scripts/CsxsnXoH.chunk.js.map +1 -0
  223. package/dist/scripts/CvuMDF0y.chunk.js +2 -0
  224. package/dist/scripts/CvuMDF0y.chunk.js.map +1 -0
  225. package/dist/scripts/CwRpHtAf.chunk.js +2 -0
  226. package/dist/scripts/CwRpHtAf.chunk.js.map +1 -0
  227. package/dist/scripts/D4OCofAF.chunk.js +2 -0
  228. package/dist/scripts/D4OCofAF.chunk.js.map +1 -0
  229. package/dist/scripts/D4x4hAdA.chunk.js +2 -0
  230. package/dist/scripts/D4x4hAdA.chunk.js.map +1 -0
  231. package/dist/scripts/DBaknZA7.chunk.js +2 -0
  232. package/dist/scripts/DBaknZA7.chunk.js.map +1 -0
  233. package/dist/scripts/DBdD19pY.chunk.js +53 -0
  234. package/dist/scripts/DBdD19pY.chunk.js.map +1 -0
  235. package/dist/scripts/DELBynwO.chunk.js +2 -0
  236. package/dist/scripts/DELBynwO.chunk.js.map +1 -0
  237. package/dist/scripts/DEixuHfi.chunk.js +2 -0
  238. package/dist/scripts/DEixuHfi.chunk.js.map +1 -0
  239. package/dist/scripts/DFhkO_lZ.chunk.js +2 -0
  240. package/dist/scripts/DFhkO_lZ.chunk.js.map +1 -0
  241. package/dist/scripts/DIIFVn0p.chunk.js +2 -0
  242. package/dist/scripts/DIIFVn0p.chunk.js.map +1 -0
  243. package/dist/scripts/DIhfGjAK.chunk.js +2 -0
  244. package/dist/scripts/DIhfGjAK.chunk.js.map +1 -0
  245. package/dist/scripts/DK1p1ffZ.chunk.js +2 -0
  246. package/dist/scripts/DK1p1ffZ.chunk.js.map +1 -0
  247. package/dist/scripts/DK6BRHnl.chunk.js +2 -0
  248. package/dist/scripts/DK6BRHnl.chunk.js.map +1 -0
  249. package/dist/scripts/DNbkIXc2.chunk.js +2 -0
  250. package/dist/scripts/DNbkIXc2.chunk.js.map +1 -0
  251. package/dist/scripts/DRmZj7Fw.chunk.js +2 -0
  252. package/dist/scripts/DRmZj7Fw.chunk.js.map +1 -0
  253. package/dist/scripts/DTcDjqUi.chunk.js +8 -0
  254. package/dist/scripts/DTcDjqUi.chunk.js.map +1 -0
  255. package/dist/scripts/DVmtgkhY.chunk.js +2 -0
  256. package/dist/scripts/DVmtgkhY.chunk.js.map +1 -0
  257. package/dist/scripts/DWkg1qc2.chunk.js +2 -0
  258. package/dist/scripts/DWkg1qc2.chunk.js.map +1 -0
  259. package/dist/scripts/D_nzH8Cw.chunk.js +2 -0
  260. package/dist/scripts/D_nzH8Cw.chunk.js.map +1 -0
  261. package/dist/scripts/DaJTPRJr.chunk.js +2 -0
  262. package/dist/scripts/DaJTPRJr.chunk.js.map +1 -0
  263. package/dist/scripts/Dal4C0kV.chunk.js +2 -0
  264. package/dist/scripts/Dal4C0kV.chunk.js.map +1 -0
  265. package/dist/scripts/DecSY6Xq.chunk.js +2 -0
  266. package/dist/scripts/DecSY6Xq.chunk.js.map +1 -0
  267. package/dist/scripts/DgL-ti6b.chunk.js +2 -0
  268. package/dist/scripts/DgL-ti6b.chunk.js.map +1 -0
  269. package/dist/scripts/Dhn0D6IV.chunk.js +2 -0
  270. package/dist/scripts/Dhn0D6IV.chunk.js.map +1 -0
  271. package/dist/scripts/DuidBpWd.chunk.js +2 -0
  272. package/dist/scripts/DuidBpWd.chunk.js.map +1 -0
  273. package/dist/scripts/DvDdiDQN.chunk.js +7 -0
  274. package/dist/scripts/DvDdiDQN.chunk.js.map +1 -0
  275. package/dist/scripts/Dx9ncX-C.chunk.js +2 -0
  276. package/dist/scripts/Dx9ncX-C.chunk.js.map +1 -0
  277. package/dist/scripts/Dxt3JwJz.chunk.js +2 -0
  278. package/dist/scripts/Dxt3JwJz.chunk.js.map +1 -0
  279. package/dist/scripts/Dy57waqb.chunk.js +2 -0
  280. package/dist/scripts/Dy57waqb.chunk.js.map +1 -0
  281. package/dist/scripts/DzLh2mnb.chunk.js +2 -0
  282. package/dist/scripts/DzLh2mnb.chunk.js.map +1 -0
  283. package/dist/scripts/F-K8Bwdk.chunk.js +2 -0
  284. package/dist/scripts/F-K8Bwdk.chunk.js.map +1 -0
  285. package/dist/scripts/G4u5okSS.chunk.js +2 -0
  286. package/dist/scripts/G4u5okSS.chunk.js.map +1 -0
  287. package/dist/scripts/KAizYpNf.chunk.js +2 -0
  288. package/dist/scripts/KAizYpNf.chunk.js.map +1 -0
  289. package/dist/scripts/LIBRZSqN.chunk.js +8 -0
  290. package/dist/scripts/LIBRZSqN.chunk.js.map +1 -0
  291. package/dist/scripts/LgZBXsgq.chunk.js +2 -0
  292. package/dist/scripts/LgZBXsgq.chunk.js.map +1 -0
  293. package/dist/scripts/QlJI4d4R.chunk.js +2 -0
  294. package/dist/scripts/QlJI4d4R.chunk.js.map +1 -0
  295. package/dist/scripts/ShERxFU5.chunk.js +2 -0
  296. package/dist/scripts/ShERxFU5.chunk.js.map +1 -0
  297. package/dist/scripts/Ynb9IAgu.chunk.js +2 -0
  298. package/dist/scripts/Ynb9IAgu.chunk.js.map +1 -0
  299. package/dist/scripts/_8CvUiOV.chunk.js +2 -0
  300. package/dist/scripts/_8CvUiOV.chunk.js.map +1 -0
  301. package/dist/scripts/aXDrx9_z.chunk.js +6 -0
  302. package/dist/scripts/aXDrx9_z.chunk.js.map +1 -0
  303. package/dist/scripts/app-DiXzpOyg.js +220 -0
  304. package/dist/scripts/app-DiXzpOyg.js.map +1 -0
  305. package/dist/scripts/bww2eGbI.chunk.js +2 -0
  306. package/dist/scripts/bww2eGbI.chunk.js.map +1 -0
  307. package/dist/scripts/cvX-F_mx.chunk.js +2 -0
  308. package/dist/scripts/cvX-F_mx.chunk.js.map +1 -0
  309. package/dist/scripts/gtdeja1H.chunk.js +2 -0
  310. package/dist/scripts/gtdeja1H.chunk.js.map +1 -0
  311. package/dist/scripts/m9wd_474.chunk.js +2 -0
  312. package/dist/scripts/m9wd_474.chunk.js.map +1 -0
  313. package/dist/scripts/nay4aGaa.chunk.js +2 -0
  314. package/dist/scripts/nay4aGaa.chunk.js.map +1 -0
  315. package/dist/scripts/pkzD5BEm.chunk.js +2 -0
  316. package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
  317. package/dist/scripts/qO6ZefON.chunk.js +2 -0
  318. package/dist/scripts/qO6ZefON.chunk.js.map +1 -0
  319. package/dist/scripts/s4utqqzH.chunk.js +2 -0
  320. package/dist/scripts/s4utqqzH.chunk.js.map +1 -0
  321. package/dist/scripts/sxyRyCzh.chunk.js +2 -0
  322. package/dist/scripts/sxyRyCzh.chunk.js.map +1 -0
  323. package/dist/scripts/tzNty_oG.chunk.js +2 -0
  324. package/dist/scripts/tzNty_oG.chunk.js.map +1 -0
  325. package/dist/scripts/vjyJbQe4.chunk.js +2 -0
  326. package/dist/scripts/vjyJbQe4.chunk.js.map +1 -0
  327. package/dist/scripts/vuoBilPQ.chunk.js +2 -0
  328. package/dist/scripts/vuoBilPQ.chunk.js.map +1 -0
  329. package/dist/scripts/vwgUbn2Z.chunk.js +2 -0
  330. package/dist/scripts/vwgUbn2Z.chunk.js.map +1 -0
  331. package/dist/scripts/wOGv44_K.chunk.js +2 -0
  332. package/dist/scripts/wOGv44_K.chunk.js.map +1 -0
  333. package/dist/scripts/xbvkqJGe.chunk.js +2 -0
  334. package/dist/scripts/xbvkqJGe.chunk.js.map +1 -0
  335. package/dist/scripts/xywWSa0t.chunk.js +2 -0
  336. package/dist/scripts/xywWSa0t.chunk.js.map +1 -0
  337. package/dist/scripts/zUz4ZfV2.chunk.js +2 -0
  338. package/dist/scripts/zUz4ZfV2.chunk.js.map +1 -0
  339. package/package.json +5 -3
  340. package/typings/utils/imports.d.ts +2 -1
  341. package/vite.config.ts +6 -0
  342. package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +0 -7
  343. package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +0 -2
  344. package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +0 -50
  345. package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +0 -2
  346. package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +0 -34
  347. package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +0 -22
  348. package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +0 -2
  349. package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +0 -90
  350. package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +0 -9
  351. package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +0 -13
  352. package/dist/css/6017-streamable-learning-098a205d01.chunk.css +0 -6
  353. package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +0 -1
  354. package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +0 -1
  355. package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +0 -5
  356. package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +0 -12
  357. package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +0 -1
  358. package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +0 -13
  359. package/dist/css/8601-streamable-learning-f525210660.chunk.css +0 -6
  360. package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +0 -2
  361. package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +0 -8
  362. package/dist/css/9842-streamable-learning-24729103f7.chunk.css +0 -4
  363. package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +0 -4
  364. package/dist/css/9951-streamable-learning-e9a916b2ef.chunk.css +0 -99
  365. package/dist/css/streamable-learning-dd0c1095d5.css +0 -23
  366. package/dist/languages/en.json +0 -1
  367. package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +0 -1
  368. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +0 -2
  369. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +0 -105
  370. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +0 -2
  371. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +0 -1
  372. package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +0 -1
  373. package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +0 -1
  374. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +0 -2
  375. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +0 -9
  376. package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +0 -1
  377. package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +0 -1
  378. package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +0 -1
  379. package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +0 -1
  380. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +0 -2
  381. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +0 -1
  382. package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +0 -1
  383. package/dist/scripts/2911-2ec3a6600a-streamable-learning.chunk.js +0 -1
  384. package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +0 -1
  385. package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +0 -1
  386. package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +0 -1
  387. package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +0 -1
  388. package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +0 -1
  389. package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +0 -1
  390. package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +0 -1
  391. package/dist/scripts/4254-1e95cdfdf2-streamable-learning.chunk.js +0 -1
  392. package/dist/scripts/4607-2ef017d2ae-streamable-learning.chunk.js +0 -2
  393. package/dist/scripts/4607-2ef017d2ae-streamable-learning.chunk.js.LICENSE.txt +0 -1
  394. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +0 -2
  395. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +0 -1
  396. package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +0 -1
  397. package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +0 -1
  398. package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +0 -1
  399. package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +0 -1
  400. package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +0 -1
  401. package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +0 -1
  402. package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +0 -1
  403. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +0 -2
  404. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +0 -1
  405. package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +0 -1
  406. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +0 -2
  407. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +0 -1
  408. package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +0 -1
  409. package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +0 -1
  410. package/dist/scripts/7347-772848ba8a-streamable-learning.chunk.js +0 -1
  411. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +0 -2
  412. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +0 -1
  413. package/dist/scripts/7904-96574373ca-streamable-learning.chunk.js +0 -1
  414. package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +0 -1
  415. package/dist/scripts/8058-51c4b442d6-streamable-learning.chunk.js +0 -1
  416. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +0 -2
  417. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +0 -60
  418. package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +0 -1
  419. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +0 -2
  420. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +0 -1
  421. package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +0 -1
  422. package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +0 -1
  423. package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +0 -1
  424. package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +0 -1
  425. package/dist/scripts/9390-bbaf07ad0f-streamable-learning.chunk.js +0 -1
  426. package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +0 -1
  427. package/dist/scripts/9766-855b276f54-streamable-learning.chunk.js +0 -2
  428. package/dist/scripts/9766-855b276f54-streamable-learning.chunk.js.LICENSE.txt +0 -1
  429. package/dist/scripts/9842-ca3b069e5d-streamable-learning.chunk.js +0 -1
  430. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +0 -2
  431. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +0 -1
  432. package/dist/scripts/9951-122cbba64f-streamable-learning.chunk.js +0 -2
  433. package/dist/scripts/9951-122cbba64f-streamable-learning.chunk.js.LICENSE.txt +0 -1
  434. package/dist/scripts/bundle-d51fd463b2.min.js +0 -2
  435. package/dist/scripts/bundle-d51fd463b2.min.js.LICENSE.txt +0 -108
  436. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +0 -2
  437. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +0 -21
@@ -0,0 +1,2 @@
1
+ import{ai as n,bu as h,bv as p,j as e,c as C,d as b,l as k,m as E}from"./app-DiXzpOyg.js";import{C as M}from"./DecSY6Xq.chunk.js";import{P}from"./CPXlV0fg.chunk.js";const y="shared.breadcrumbComponent",B=C.encloseNamespace(y),F=64,x=48,i=n.forwardRef((a,c)=>{const{breadcrumb:{name:s,appLink:o,active:m},withBackIcon:u}=a;let t=s,l=null;return t.length>x&&(t=s.slice(0,x)+"...",l=s),e.jsx("li",{className:`breadcrumb-item${m?" active":""}`,title:l,children:m?e.jsx("strong",{children:t}):e.jsxs(b,{appLink:o,ref:c,children:[u&&e.jsx(k,{svg:M,size:E.Small}),e.jsx("span",{className:u?"ms-2":"",children:t})]})})}),I=({breadcrumbs:a})=>{const c=h(p.XS),s=(a==null?void 0:a.length)||0,[o,m]=n.useState(!1),[u,t]=n.useState(!1),l=n.useRef(null);n.useEffect(()=>{const r=(a==null?void 0:a.reduce((d,L)=>d+L.name.length,0))??0;s>4&&r>F&&m(!0)},[a==null?void 0:a.length]),n.useLayoutEffect(()=>{var r;u&&((r=l.current)==null||r.focus())},[l.current,u]);function g(){m(!1),t(!0)}if(!s||c&&s<2)return e.jsx(e.Fragment,{});if(c)return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:e.jsx(i,{breadcrumb:a[s-2],withBackIcon:!0})})});const j=e.jsx(i,{breadcrumb:a[0]}),f=s>2?e.jsx(i,{breadcrumb:a[1]}):e.jsx(e.Fragment,{}),N=s>3?e.jsx(i,{breadcrumb:a[s-2]}):e.jsx(e.Fragment,{}),S=s>1?e.jsx(i,{breadcrumb:a[s-1]}):e.jsx(e.Fragment,{}),v=a.slice(2,s-2);return e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsxs("ol",{className:"breadcrumb m-0 p-0",children:[j,f,o?e.jsx("li",{className:"breadcrumb-item",children:e.jsx("button",{className:"btn-link",onClick:g,"aria-label":B("expand"),children:"..."})}):v.map((r,d)=>e.jsx(i,{breadcrumb:r,ref:d===0?l:null},d)),N,S]})})},T=n.memo(function({numItems:a=3}){return h(p.XS)?e.jsx("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):e.jsx("nav",{"aria-label":"breadcrumb",children:e.jsx("ol",{className:"breadcrumb m-0 p-0",children:P.getPartialLoadingItems({numItems:a}).map(({width:s},o)=>e.jsx("li",{className:"breadcrumb-item",children:e.jsx("span",{className:"d-inline-block partial-loading-background",style:{width:s},dangerouslySetInnerHTML:{__html:"&nbsp"}})},o))})})});export{I as B,T as P};
2
+ //# sourceMappingURL=Dx9ncX-C.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dx9ncX-C.chunk.js","sources":["../../../../libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svg={ChevronLeftSvg} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});"],"names":["namespace","getPhrase","LanguageService","COLLAPSE_CHARACTER_COUNT","MAX_SEGMENT_LENGTH","BreadcrumbItem","React.forwardRef","props","ref","name","appLink","active","withBackIcon","trimmedName","title","jsx","jsxs","AppLink","SvgContainer","ChevronLeftSvg","SvgContainerSize","Breadcrumbs","breadcrumbs","isMobile","useMediaQuery","MediaQueryStrings","length","collapse","setCollapse","React.useState","shouldFocus","setShouldFocus","expandRef","React.useRef","React.useEffect","characterLength","prev","next","React.useLayoutEffect","_a","onClickExpand","Fragment","first","second","secondLast","last","rest","breadcrumb","idx","PartialBreadcrumbs","React.memo","numItems","PartialLoadingHelper","width"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{ai as n}from"./app-DiXzpOyg.js";import{h as s}from"./BYrL8Bl0.chunk.js";function c(t){return t.map(a=>a.statusCode).join(":")}function p(t,a,e){const r=Array.isArray(t)?t:[t];n.useEffect(()=>{r.forEach(o=>{s(o.statusCode,a,e)})},[c(r),a,e])}export{p as u};
2
+ //# sourceMappingURL=Dxt3JwJz.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dxt3JwJz.chunk.js","sources":["../../../../libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect","handleHttpError"],"mappings":"+EAMA,SAASA,EAAiBC,EAAiD,CACzE,OAAOA,EAAW,IAAIC,GAAOA,EAAI,UAAU,EAAE,KAAK,GAAG,CACvD,CAGO,SAASC,EACdC,EACAC,EACAC,EACM,CACN,MAAML,EAAa,MAAM,QAAQG,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE1EG,EAAAA,UAAU,IAAM,CACdN,EAAW,QAAQC,GAAO,CACxBM,EAAgBN,EAAI,WAAYG,EAAcC,CAAY,CAC5D,CAAC,CACH,EAAG,CAAEN,EAAiBC,CAAU,EAAGI,EAAcC,CAAa,CAAC,CACjE"}
@@ -0,0 +1,2 @@
1
+ import{j as e,G as g,c as r,db as h,h as a,af as s,o as x,M as n,dr as l,k as d,i as m,n as k,e as V,W as P,X as L}from"./app-DiXzpOyg.js";import{C as v}from"./BdPgUz8g.chunk.js";import{b}from"./D_nzH8Cw.chunk.js";import{V as f}from"./DIIFVn0p.chunk.js";import{u as j}from"./Dal4C0kV.chunk.js";import"./CEmtkty-.chunk.js";import"./pkzD5BEm.chunk.js";import"./qO6ZefON.chunk.js";const t="shared.videoGuidanceClassroomGuidePopup",C=350;function G(i){function u(o){return i.curriculums.updateCurriculum(o,{shouldLog:!0,video:i.video,locationContext:a.CurriculumGuidancePopup})}return e.jsx(g,{closePopup:i.onClickClose,showLoadingSpinner:i.isLoading,title:r.getPhrase(t,"curriculumLinks"),size:"lg",children:!i.isLoading&&e.jsxs(e.Fragment,{children:[e.jsxs(h,{autoHeightMax:C,autoHeightMin:C,autoHeight:!0,className:"pb-3",renderThumbVertical:({style:o,...c})=>e.jsx("div",{...c,style:{...o,borderRadius:"inherit",backgroundColor:"rgba(0, 0, 0, 0.2)",zIndex:5},className:"thumb-vertical"}),children:[e.jsx(v,{availableCurriculums:i.curriculums.availableCurriculums,onChangeCurriculum:u,selectedCurriculum:i.curriculums.preferredCurriculum}),e.jsx("div",{className:"pb-3",children:e.jsx(b,{curriculumLinks:i.curriculums.curriculumLinks,onChangeCurriculum:u,hasCompleted:i.curriculums.hasCompleted,mappedCurriculums:i.curriculums.mappedCurriculums,isFetching:i.curriculums.isFetching,getCodeAppLink:i.getCodeAppLink,locationContext:a.CurriculumGuidancePopup})})]}),e.jsxs(s,{children:[e.jsx(s.Cancel,{onClick:i.onClickClose,text:r.getPhrase(t,"close")}),e.jsx(s.Submit,{text:r.getPhrase(t,"viewVideo"),variant:"dark",onClick:i.onClickViewVideo})]})]})})}function S(i){const u=x(f.video(i.id)),o=j(i.id);function c(){n.logUserAction({id:u.data.id,name:u.data.name},{entity:m.Video,location:a.CurriculumGuidancePopup,actionType:d.Click,descriptor:l.Close}),i.closePopup()}function p(){n.logUserAction({id:u.data.id,name:u.data.name},{entity:m.Video,location:a.CurriculumGuidancePopup,actionType:d.Click,descriptor:l.ViewVideo}),k.trigger({application:L.VIDEOS,action:P.Videos.PLAY_VIDEO,args:[u.data.id,V.slugify(u.data.name)]}),i.closePopup()}return e.jsx(G,{isLoading:!u.hasCompleted,video:u.data,curriculums:o,onClickClose:c,onClickViewVideo:p,closePopup:i.closePopup})}export{S as VideoGuidanceClassroomGuideView};
2
+ //# sourceMappingURL=Dy57waqb.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dy57waqb.chunk.js","sources":["../../../../libs/shared/src/components/video-guidance/classroom-guide/popup/VideoGuidanceClassroomGuidePopup.tsx","../../src/apps/videos/views/video-guidance-classroom-guide/VideoGuidanceClassroomGuideView.tsx"],"sourcesContent":["import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CurriculumDropdown } from 'libs/shared/components/curriculum-links/CurriculumDropdown';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Clip, CurriculumData, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.videoGuidanceClassroomGuidePopup';\n\nconst MIN_MAX_HEIGHT = 350;\n\ninterface VideoGuidanceClassroomGuidePopupProps extends PopupViewProps {\n isLoading: boolean;\n video: Video | Clip;\n onClickClose: () => void;\n onClickViewVideo: () => void;\n curriculums: CurriculumData;\n getCodeAppLink?: (query: string, isCode: boolean) => Core.AppLink;\n}\n\nexport function VideoGuidanceClassroomGuidePopup(props: VideoGuidanceClassroomGuidePopupProps): JSX.Element {\n function onChangeCurriculum(curriculumId: string): Promise<void> {\n return props.curriculums.updateCurriculum(curriculumId, {\n shouldLog: true,\n video: props.video,\n locationContext: LocationContext.CurriculumGuidancePopup\n });\n }\n\n return (\n <Popup\n closePopup={props.onClickClose}\n showLoadingSpinner={props.isLoading}\n title={LanguageService.getPhrase(namespace, 'curriculumLinks')}\n size='lg'\n >\n {!props.isLoading && (\n <>\n <Scrollbars\n autoHeightMax={MIN_MAX_HEIGHT}\n autoHeightMin={MIN_MAX_HEIGHT}\n autoHeight\n className='pb-3'\n // move vertical scrollbar to the top\n renderThumbVertical={({ style, ...props }) => <div {...props} style={{ ...style, borderRadius: 'inherit', backgroundColor: 'rgba(0, 0, 0, 0.2)', zIndex: 5 }} className='thumb-vertical'/>}\n >\n <CurriculumDropdown\n availableCurriculums={props.curriculums.availableCurriculums}\n onChangeCurriculum={onChangeCurriculum}\n selectedCurriculum={props.curriculums.preferredCurriculum}\n />\n\n <div className='pb-3'>\n <CurriculumLinks\n curriculumLinks={props.curriculums.curriculumLinks}\n onChangeCurriculum={onChangeCurriculum}\n hasCompleted={props.curriculums.hasCompleted}\n mappedCurriculums={props.curriculums.mappedCurriculums}\n isFetching={props.curriculums.isFetching}\n getCodeAppLink={props.getCodeAppLink}\n locationContext={LocationContext.CurriculumGuidancePopup}\n />\n </div>\n </Scrollbars>\n\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.onClickClose}\n text={LanguageService.getPhrase(namespace, 'close')}\n />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'viewVideo')}\n variant='dark'\n onClick={props.onClickViewVideo}\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoGuidanceDescriptor } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceClassroomGuidePopup } from 'libs/shared/components/video-guidance/classroom-guide/popup/VideoGuidanceClassroomGuidePopup';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/StreamableActions';\nimport { AppChannels } from 'shared/constants/StreamableRadioChannels';\n\nimport { useCurriculums } from 'apps/videos/hooks/useCurriculums';\n\ninterface VideoGuidanceClassroomGuideViewProps extends PopupViewProps {\n id: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoGuidanceClassroomGuideView(props: VideoGuidanceClassroomGuideViewProps): JSX.Element {\n const video = Flight.useBasicFetch<Clip | Video>(VideoRequests.video(props.id));\n const curriculums = useCurriculums(props.id);\n\n function onClickClose(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.Close\n });\n\n props.closePopup();\n }\n\n function onClickViewVideo(): void {\n AnalyticsHelper.logUserAction({\n id: video.data.id,\n name: video.data.name\n }, {\n entity: EntityType.Video,\n location: LocationContext.CurriculumGuidancePopup,\n actionType: UserAction.Click,\n descriptor: VideoGuidanceDescriptor.ViewVideo\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data.id, TextHelper.slugify(video.data.name) ]\n });\n\n props.closePopup();\n }\n\n return (\n <VideoGuidanceClassroomGuidePopup\n isLoading={!video.hasCompleted}\n video={video.data}\n curriculums={curriculums}\n onClickClose={onClickClose}\n onClickViewVideo={onClickViewVideo}\n closePopup={props.closePopup}\n />\n );\n}"],"names":["namespace","MIN_MAX_HEIGHT","VideoGuidanceClassroomGuidePopup","props","onChangeCurriculum","curriculumId","LocationContext","jsx","Popup","LanguageService","jsxs","Fragment","Scrollbars","style","CurriculumDropdown","CurriculumLinks","PopupButtons","VideoGuidanceClassroomGuideView","video","Flight.useBasicFetch","VideoRequests","curriculums","useCurriculums","onClickClose","AnalyticsHelper","EntityType","UserAction","VideoGuidanceDescriptor","onClickViewVideo","Core.AppLinkHelper","AppChannels","Actions","TextHelper"],"mappings":"0XAcA,MAAMA,EAAY,0CAEZC,EAAiB,IAWhB,SAASC,EAAiCC,EAA2D,CAC1G,SAASC,EAAmBC,EAAqC,CAC/D,OAAOF,EAAM,YAAY,iBAAiBE,EAAc,CACtD,UAAW,GACX,MAAOF,EAAM,MACb,gBAAiBG,EAAgB,uBAAA,CAClC,CACH,CAEA,OACEC,EAAAA,IAACC,EAAA,CACC,WAAYL,EAAM,aAClB,mBAAoBA,EAAM,UAC1B,MAAOM,EAAgB,UAAUT,EAAW,iBAAiB,EAC7D,KAAK,KAEJ,SAAA,CAACG,EAAM,WACNO,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,KAACE,EAAA,CACC,cAAeX,EACf,cAAeA,EACf,WAAU,GACV,UAAU,OAEV,oBAAqB,CAAC,CAAE,MAAAY,EAAO,GAAGV,CAAAA,IAAYI,EAAAA,IAAC,MAAA,CAAK,GAAGJ,EAAO,MAAO,CAAE,GAAGU,EAAO,aAAc,UAAW,gBAAiB,qBAAsB,OAAQ,CAAA,EAAK,UAAU,iBAAgB,EAExL,SAAA,CAAAN,EAAAA,IAACO,EAAA,CACC,qBAAsBX,EAAM,YAAY,qBACxC,mBAAAC,EACA,mBAAoBD,EAAM,YAAY,mBAAA,CAAA,EAGxCI,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAACQ,EAAA,CACC,gBAAiBZ,EAAM,YAAY,gBACnC,mBAAAC,EACA,aAAcD,EAAM,YAAY,aAChC,kBAAmBA,EAAM,YAAY,kBACrC,WAAYA,EAAM,YAAY,WAC9B,eAAgBA,EAAM,eACtB,gBAAiBG,EAAgB,uBAAA,CAAA,CACnC,CACF,CAAA,CAAA,CAAA,SAGDU,EAAA,CACC,SAAA,CAAAT,EAAAA,IAACS,EAAa,OAAb,CACC,QAASb,EAAM,aACf,KAAMM,EAAgB,UAAUT,EAAW,OAAO,CAAA,CAAA,EAEpDO,EAAAA,IAACS,EAAa,OAAb,CACC,KAAMP,EAAgB,UAAUT,EAAW,WAAW,EACtD,QAAQ,OACR,QAASG,EAAM,gBAAA,CAAA,CACjB,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAIR,CChEO,SAASc,EAAgCd,EAA0D,CACxG,MAAMe,EAAQC,EAAmCC,EAAc,MAAMjB,EAAM,EAAE,CAAC,EACxEkB,EAAcC,EAAenB,EAAM,EAAE,EAE3C,SAASoB,GAAqB,CAC5BC,EAAgB,cAAc,CAC5B,GAAIN,EAAM,KAAK,GACf,KAAMA,EAAM,KAAK,IAAA,EAChB,CACD,OAAQO,EAAW,MACnB,SAAUnB,EAAgB,wBAC1B,WAAYoB,EAAW,MACvB,WAAYC,EAAwB,KAAA,CACrC,EAEDxB,EAAM,WAAA,CACR,CAEA,SAASyB,GAAyB,CAChCJ,EAAgB,cAAc,CAC5B,GAAIN,EAAM,KAAK,GACf,KAAMA,EAAM,KAAK,IAAA,EAChB,CACD,OAAQO,EAAW,MACnB,SAAUnB,EAAgB,wBAC1B,WAAYoB,EAAW,MACvB,WAAYC,EAAwB,SAAA,CACrC,EAEDE,EAAmB,QAAQ,CACzB,YAAaC,EAAY,OACzB,OAAQC,EAAQ,OAAO,WACvB,KAAM,CAAEb,EAAM,KAAK,GAAIc,EAAW,QAAQd,EAAM,KAAK,IAAI,CAAE,CAAA,CAC5D,EAEDf,EAAM,WAAA,CACR,CAEA,OACEI,EAAAA,IAACL,EAAA,CACC,UAAW,CAACgB,EAAM,aAClB,MAAOA,EAAM,KACb,YAAAG,EACA,aAAAE,EACA,iBAAAK,EACA,WAAYzB,EAAM,UAAA,CAAA,CAGxB"}
@@ -0,0 +1,2 @@
1
+ import{D as r,bW as t,bX as f,ag as a}from"./app-DiXzpOyg.js";const n={getDisplayDate(M,e){return e?M.slice(5,7)!==e.slice(5,7)?`${r.format(M,"D MMM")} - ${r.format(e,"D MMM")}`:t.getCurrentRegion()===f[a.US]?`${r.format(M,"MMM")} ${r.format(M,"D")} - ${r.format(e,"D")}`:`${r.format(M,"D")} - ${r.format(e,"D")} ${r.format(M,"MMM")}`:r.format(M,"D MMM")},getEventsInMonth(M,e){return M.filter(o=>r.format(o.startDate,"YYYY-MM")===r.format(e,"YYYY-MM"))},getOrdinalDate(M){return`${r.getLocalDateOrdinal(r.get(M,"date"))} ${r.format(M,"MMMM")}`}};export{n as S};
2
+ //# sourceMappingURL=DzLh2mnb.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DzLh2mnb.chunk.js","sources":["../../../../libs/shared/src/apps/calendar/utils/SpecialEventHelper.ts"],"sourcesContent":["import { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { RegionDateFormatHelper } from 'libs/common/react/utils/RegionDateFormatHelper';\n\nimport { COMMON_REGION_MAP } from 'libs/shared/constants/CommonRegionMap';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { CalendarEvent } from 'libs/shared/interfaces';\n\nexport const SpecialEventHelper = {\n getDisplayDate(startDate: string, endDate: string): string {\n if (!endDate)\n // one day event\n return DateHelper.format(startDate, 'D MMM');\n\n if (startDate.slice(5, 7) !== endDate.slice(5, 7))\n // span across months\n return `${DateHelper.format(startDate, 'D MMM')} - ${DateHelper.format(endDate, 'D MMM')}`;\n \n // same month event\n\n if (RegionDateFormatHelper.getCurrentRegion() === COMMON_REGION_MAP[InstanceRegion.US])\n return `${DateHelper.format(startDate, 'MMM')} ${DateHelper.format(startDate, 'D')} - ${DateHelper.format(endDate, 'D')}`;\n\n return `${DateHelper.format(startDate, 'D')} - ${DateHelper.format(endDate, 'D')} ${DateHelper.format(startDate, 'MMM')}`;\n },\n\n getEventsInMonth(calendarEvents: CalendarEvent[], month: Date) {\n return calendarEvents.filter(e => DateHelper.format(e.startDate, 'YYYY-MM') === DateHelper.format(month, 'YYYY-MM'));\n },\n\n getOrdinalDate(date: string): string {\n return `${DateHelper.getLocalDateOrdinal(DateHelper.get(date, 'date'))} ${DateHelper.format(date, 'MMMM')}`;\n }\n};"],"names":["SpecialEventHelper","startDate","endDate","DateHelper","RegionDateFormatHelper","COMMON_REGION_MAP","InstanceRegion","calendarEvents","month","e","date"],"mappings":"8DAOO,MAAMA,EAAqB,CAChC,eAAeC,EAAmBC,EAAyB,CACzD,OAAKA,EAIDD,EAAU,MAAM,EAAG,CAAC,IAAMC,EAAQ,MAAM,EAAG,CAAC,EAEvC,GAAGC,EAAW,OAAOF,EAAW,OAAO,CAAC,MAAME,EAAW,OAAOD,EAAS,OAAO,CAAC,GAItFE,EAAuB,iBAAA,IAAuBC,EAAkBC,EAAe,EAAE,EAC5E,GAAGH,EAAW,OAAOF,EAAW,KAAK,CAAC,IAAIE,EAAW,OAAOF,EAAW,GAAG,CAAC,MAAME,EAAW,OAAOD,EAAS,GAAG,CAAC,GAElH,GAAGC,EAAW,OAAOF,EAAW,GAAG,CAAC,MAAME,EAAW,OAAOD,EAAS,GAAG,CAAC,IAAIC,EAAW,OAAOF,EAAW,KAAK,CAAC,GAX9GE,EAAW,OAAOF,EAAW,OAAO,CAY/C,EAEA,iBAAiBM,EAAiCC,EAAa,CAC7D,OAAOD,EAAe,OAAOE,GAAKN,EAAW,OAAOM,EAAE,UAAW,SAAS,IAAMN,EAAW,OAAOK,EAAO,SAAS,CAAC,CACrH,EAEA,eAAeE,EAAsB,CACnC,MAAO,GAAGP,EAAW,oBAAoBA,EAAW,IAAIO,EAAM,MAAM,CAAC,CAAC,IAAIP,EAAW,OAAOO,EAAM,MAAM,CAAC,EAC3G,CACF"}
@@ -0,0 +1,2 @@
1
+ import{h as n}from"./app-DiXzpOyg.js";function c(o){return function(t){return t.id,t.name,n.VideoListItem,[]}}export{c as u};
2
+ //# sourceMappingURL=F-K8Bwdk.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"F-K8Bwdk.chunk.js","sources":["../../src/shared/hooks/useStreamableVideoActions.ts"],"sourcesContent":["// import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Video } from 'libs/shared/interfaces';\n\n// const namespace = 'shared.streambleHooks';\n// const getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype Location = 'play-page' | 'video-list';\n\n// Placeholder if we need any actions in the future\nexport function useStreamableVideoActions(location: Location) {\n return function getStreamableActions(video: Video): ActionOptions[] {\n const analyticsData = { id: video.id, name: video.name };\n const locationContext = location === 'video-list' ? LocationContext.VideoListItem : LocationContext.PlayPage;\n analyticsData;\n locationContext;\n\n const actions: ActionOptions[] = [\n ];\n\n return actions;\n };\n}"],"names":["useStreamableVideoActions","location","video","LocationContext"],"mappings":"sCAaO,SAASA,EAA0BC,EAAoB,CAC5D,OAAO,SAA8BC,EAA+B,CAClE,OAA4BA,EAAM,GAAUA,EAAM,KACEC,EAAgB,cAInC,CAAA,CAInC,CACF"}
@@ -0,0 +1,2 @@
1
+ import{j as a}from"./app-DiXzpOyg.js";function s(e){return a.jsx("span",{id:`${e.name}Error`,className:`${e.className} invalid-feedback d-block`,role:"status",children:e.children})}export{s as F};
2
+ //# sourceMappingURL=G4u5okSS.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"G4u5okSS.chunk.js","sources":["../../../../libs/shared/src/components/forms/form-feedback/FormFeedback.tsx"],"sourcesContent":["import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}"],"names":["FormFeedback","props","jsx"],"mappings":"sCAOO,SAASA,EAAaC,EAA0B,CACrD,OACEC,EAAAA,IAAC,OAAA,CAAK,GAAI,GAAGD,EAAM,IAAI,QAAS,UAAW,GAAGA,EAAM,SAAS,4BAA6B,KAAK,SAAU,WAAM,SAAS,CAE5H"}
@@ -0,0 +1,2 @@
1
+ import{j as t,d as r,l as i,m as l,ao as a,c as u}from"./app-DiXzpOyg.js";import{a as o}from"./CEmtkty-.chunk.js";const v="_subText_5u663_1",h={subText:v};function $(e){const s=`text-uppercase text-truncate mb-0 ${h.subText} ${e.className}`;return e.appLink?t.jsx(r,{className:s,appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,title:e.title,ariaLabel:e.ariaLabel,children:e.children}):t.jsx("div",{className:s,title:e.title,"aria-label":e.ariaLabel,children:e.children})}function d(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M14.893 16.357a2.5 2.5 0 0 1 1.806-1.354 2.506 2.506 0 0 1 2.902 2.042 2.516 2.516 0 0 1-2.032 2.916 2.5 2.5 0 0 1-2.74-1.494l-2.603-5.208-2.57 5.138a2.504 2.504 0 0 1-2.769 1.564 2.516 2.516 0 0 1-2.031-2.916 2.506 2.506 0 0 1 2.901-2.042c.81.144 1.46.663 1.803 1.348l2.107-4.212-3.703-7.41a.504.504 0 0 1 .222-.675.5.5 0 0 1 .672.223l3.369 6.743 3.372-6.743a.5.5 0 0 1 .671-.223.504.504 0 0 1 .223.674l-3.707 7.412zm-9.053.863a1.51 1.51 0 0 0 1.221 1.752 1.505 1.505 0 0 0 1.743-1.227 1.51 1.51 0 0 0-1.22-1.752A1.505 1.505 0 0 0 5.84 17.22m11.555 1.752a1.51 1.51 0 0 0 1.221-1.752 1.505 1.505 0 0 0-1.743-1.227 1.51 1.51 0 0 0-1.22 1.752 1.505 1.505 0 0 0 1.742 1.227"})})}function m(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",d:"M11.91 4.025c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.621 1.384 1.385 1.384h4.308c.763 0 1.384-.62 1.384-1.384v-3.77a6 6 0 0 0 2.462-4.846c0-3.308-2.692-6-6-6m2.616 12.77v.615h-5.23v-.615zm-4.77 2.307a.46.46 0 0 1-.46-.461v-.308h5.23v.308a.46.46 0 0 1-.461.461zm4.77-4.471v1.24h-5.23v-1.24a.46.46 0 0 0-.205-.384 5.07 5.07 0 0 1-2.257-4.222c0-2.8 2.277-5.077 5.077-5.077s5.077 2.278 5.077 5.077a5.07 5.07 0 0 1-2.257 4.222.46.46 0 0 0-.205.384m-2.396-2.616a.56.56 0 0 0 .107-.348v-.068q.004-.237.076-.402a1 1 0 0 1 .235-.317q.165-.153.454-.35.462-.316.757-.724.294-.41.295-.97 0-.591-.283-.993a1.8 1.8 0 0 0-.76-.61 2.6 2.6 0 0 0-1.05-.208q-.629 0-1.151.279-.525.277-.78.825a1.2 1.2 0 0 0-.12.522.44.44 0 0 0 .105.303q.105.118.3.118.162 0 .271-.091a.5.5 0 0 0 .157-.247q.162-.518.471-.704.309-.187.718-.187.343 0 .62.119.28.118.443.339.164.22.164.53 0 .27-.104.467-.106.195-.28.35a5 5 0 0 1-.391.305q-.281.195-.516.419a1.9 1.9 0 0 0-.378.498 1.3 1.3 0 0 0-.143.613v.193q0 .213.114.346.114.134.338.133.224 0 .33-.14m.088 2.081a.6.6 0 0 0 .17-.426.6.6 0 0 0-.17-.428.57.57 0 0 0-.424-.177q-.242 0-.416.177a.59.59 0 0 0-.174.428.6.6 0 0 0 .174.426q.174.18.416.18.252 0 .424-.18"})})}function g(e){return t.jsx("svg",{...e,children:t.jsx("path",{d:"M18.06 4c.519 0 .94.479.94 1.075v13.85c0 .594-.419 1.075-.94 1.075H5.94c-.519 0-.94-.479-.94-1.075V5.075C5 4.48 5.419 4 5.94 4zM9.256 5H5.882v.184l-.001.1v.418l-.001.175-.001 1.113v1.429l-.001.314v2.024l-.001.352-.001 3.162v.335l-.001 4.386h.105l.08.001h.36l.157.001h.571l.221.001h.741l.27.001h1.174l.313.001h1.63l.332.001 2.61.001h.305l3.362.001h.012v-.184l.001-.1v-.418l.001-.175.001-1.113v-1.429l.001-.314v-2.024l.001-.352.001-3.162v-.335l.001-4.374v-.012h-.105l-.08-.001h-.36l-.157-.001h-.571l-.221-.001h-.741l-.27-.001h-1.174l-.313-.001h-1.63l-.332-.001-2.61-.001zm1.438 8c.238 0 .431.224.431.5s-.193.5-.431.5H8.056c-.238 0-.431-.224-.431-.5s.193-.5.431-.5zm5.198-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5zm0-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5z",fill:"currentColor"})})}const x="_topLeftContainer_z6mhb_1",f="_draft_z6mhb_7",b="_badge_z6mhb_10",_="_svg_z6mhb_20",z="_text_z6mhb_29",C="_sm_z6mhb_33",n={topLeftContainer:x,draft:f,badge:b,svg:_,text:z,sm:C},j="shared.typeBadge",c=u.encloseNamespace(j);function y(e){switch(e){case a.Clip:return c("clip");case a.Interactive:return c("interactive");case a.Resource:return c("resource");default:return""}}function L(e){switch(e){case a.Clip:return d;case a.Interactive:return m;case a.Resource:return g;default:return null}}function S(e,s){switch(e){case a.Clip:return"bg-ultramarine";case a.Interactive:return s===o.Draft?n.draft:"bg-green";case a.Resource:return"bg-indigo";default:return""}}T.default={size:"md"};function T(e){const s=`${n.badge} rounded-pill text-white ps-0 ${e.size==="sm"?n.sm:""}`;return t.jsx("div",{className:e.inContainer?"":n.topLeftContainer,children:t.jsxs("div",{className:`${s} ${S(e.typeId,e.status)}`,children:[t.jsx(i,{className:`svg-container d-block ${n.svg}`,size:e.size==="sm"?l.Small:l.Standard,svg:L(e.typeId)}),t.jsx("span",{className:n.text,children:y(e.typeId)})]})})}export{m as I,g as R,$ as T,T as a};
2
+ //# sourceMappingURL=KAizYpNf.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KAizYpNf.chunk.js","sources":["../../../../libs/shared/src/components/title-sub-text/TitleSubText.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"],"sourcesContent":["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 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}"],"names":["TitleSubText","props","className","styles","jsx","AppLink","ClipSvg","InteractiveSvg","ResourcesSvg","namespace","getPhrase","LanguageService","getText","typeId","MasterType","getIcon","getColourClass","status","CurationStatus","TypeBadge","baseClasses","jsxs","SvgContainer","SvgContainerSize"],"mappings":"2JAoBO,SAASA,EAAaC,EAAuC,CAClE,MAAMC,EAAY,qCAAqCC,EAAO,OAAO,IAAIF,EAAM,SAAS,GAExF,OAAIA,EAAM,QAENG,EAAAA,IAACC,EAAA,CACC,UAAAH,EACA,QAASD,EAAM,QACf,cAAeA,EAAM,cACrB,iBAAkBA,EAAM,iBACxB,MAAOA,EAAM,MACb,UAAWA,EAAM,UAEhB,SAAAA,EAAM,QAAA,CAAA,EAMXG,EAAAA,IAAC,MAAA,CACC,UAAAF,EACA,MAAOD,EAAM,MACb,aAAYA,EAAM,UAEjB,SAAAA,EAAM,QAAA,CAAA,CAGb,CC7CO,SAASK,EAAQL,EAAsC,CAC5D,OACEG,EAAAA,IAAC,MAAA,CAAK,GAAGH,EACP,SAAAG,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,gqBAAA,CAAA,EAEN,CAEJ,CCTO,SAASG,EAAeN,EAAsC,CACnE,OACEG,EAAAA,IAAC,MAAA,CAAK,GAAGH,EACP,SAAAG,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,8qCAAA,CAAA,EAEN,CAEJ,CCTO,SAASI,EAAaP,EAAsC,CACjE,OACEG,EAAAA,IAAC,MAAA,CAAK,GAAGH,EACP,SAAAG,EAAAA,IAAC,OAAA,CACC,EAAE,i1BACF,KAAK,cAAA,CAAA,EAET,CAEJ,2LCEMK,EAAY,mBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAQC,EAA4B,CAC3C,OAAQA,EAAA,CACN,KAAKC,EAAW,KACd,OAAOJ,EAAU,MAAM,EACzB,KAAKI,EAAW,YACd,OAAOJ,EAAU,aAAa,EAChC,KAAKI,EAAW,SACd,OAAOJ,EAAU,UAAU,EAC7B,QACE,MAAO,EAAA,CAEb,CAEA,SAASK,EAAQF,EAAoB,CACnC,OAAQA,EAAA,CACN,KAAKC,EAAW,KACd,OAAOR,EACT,KAAKQ,EAAW,YACd,OAAOP,EACT,KAAKO,EAAW,SACd,OAAON,EACT,QACE,OAAO,IAAA,CAEb,CAEA,SAASQ,EAAeH,EAAoBI,EAAgC,CAC1E,OAAQJ,EAAA,CACN,KAAKC,EAAW,KACd,MAAO,iBACT,KAAKA,EAAW,YACd,OAAOG,IAAWC,EAAe,MAAQf,EAAO,MAAQ,WAC1D,KAAKW,EAAW,SACd,MAAO,YACT,QACE,MAAO,EAAA,CAEb,CASAK,EAAU,QAAU,CAClB,KAAM,IACR,EAEO,SAASA,EAAUlB,EAAoC,CAC5D,MAAMmB,EAAc,GAAGjB,EAAO,KAAK,iCAAiCF,EAAM,OAAS,KAAOE,EAAO,GAAK,EAAE,GAExG,OACEC,MAAC,OAAI,UAAWH,EAAM,YAAc,GAAKE,EAAO,iBAC9C,SAAAkB,EAAAA,KAAC,MAAA,CAAI,UAAW,GAAGD,CAAW,IAAIJ,EAAef,EAAM,OAAQA,EAAM,MAAM,CAAC,GAC1E,SAAA,CAAAG,EAAAA,IAACkB,EAAA,CACC,UAAW,yBAAyBnB,EAAO,GAAG,GAC9C,KAAMF,EAAM,OAAS,KAAOsB,EAAiB,MAAQA,EAAiB,SACtE,IAAKR,EAAQd,EAAM,MAAM,CAAA,CAAA,EAE3BG,MAAC,QAAK,UAAWD,EAAO,KACrB,SAAAS,EAAQX,EAAM,MAAM,CAAA,CACvB,CAAA,CAAA,CACF,CAAA,CACF,CAEJ"}
@@ -0,0 +1,8 @@
1
+ import{ai as ee,O as W,as as N,u as A,e as be,j as a,R as w,ad as je,M as D,F as Re,c as Pe,n as te,bZ as Ce,ao as T,i as X,k as Se,dg as Ne,d as Te,Y as Ae,ae as Le,l as Be}from"./app-DiXzpOyg.js";import{a as h,W as ie,u as Fe,S as Ve,C as De}from"./DEixuHfi.chunk.js";import{W as J,a as K}from"./BWkYFXR0.chunk.js";import{u as Ee}from"./D4x4hAdA.chunk.js";import{e as S}from"./C2zcSUEr.chunk.js";import{R as He,a as Oe}from"./Ci9wGu6N.chunk.js";import{a as Me,T as $e}from"./KAizYpNf.chunk.js";import{R as Y}from"./cvX-F_mx.chunk.js";import{D as ke}from"./sxyRyCzh.chunk.js";import{M as Z}from"./DuidBpWd.chunk.js";var _=(e=>(e[e.Row=0]="Row",e[e.LargeRow=1]="LargeRow",e[e.Hero=2]="Hero",e[e.ResourcesTile=3]="ResourcesTile",e))(_||{}),d=(e=>(e.Videos="videos",e.FeedVideos="feed videos",e.Series="series",e.Subjects="subjects",e.Playlists="playlists",e.Interactives="interactives",e.Clips="clips",e.PlayPageResources="play page resources",e.DashboardResources="dashboard resources",e.Libraries="Libraries",e.Folders="Folders",e.RecentActivities="recent activities",e.SmallSeries="small series",e.Companies="companies",e.Ratings="ratings",e.SpecialEvents="special events",e.InteractivesV2="interactives v2",e.ClipsV2="clips v2",e.PlayPageResourcesV2="playpage resources v2",e))(d||{});function Ge(e,n,i){let t=e.collection,l;(!t||W.isEmpty(t))&&!e.prefetched&&(l=e.fetch(i),t=l.data);const s=N.isFunction(e.setData)&&t?e.setData(t):t;let c=s;const u=A();return ee.useEffect(()=>{if(!t||W.isEmpty(t))return;e.limitTotalItems&&(c=s.length>E?s.slice(0,E):s);let g=e.type;g===_.ResourcesTile&&(g=_.Row),n({type:h.Init,payload:{totalItems:c.length,breakpoints:u,type:g,contents:e.contents}})},[s==null?void 0:s.length]),l}function Ue(e,n){const{offset:i,viewableItems:t}=e,l=i,s=[];for(let c=0;c<l+t;c++)s.push(c);return function(u){const g=n.indexOf(u);return s.includes(g)}}function q(e,n){if(e)return{...e,args:e.args||[n.id,be.slugify(n.name)]}}function ze(e,n){const{id:i,name:t,description:l}=e,s={};return Array.isArray(n)?{id:i,name:t,description:l}:(e.id&&(s.id=i),e.name&&(s.name=t),e.description&&(s.description=l),{...n,...s})}function Q(e){switch(e){case d.Playlists:return We;case d.Videos:return p;case d.RecentActivities:return Ke;case d.FeedVideos:return Ye;case d.Subjects:return Ze;case d.InteractivesV2:return pe;case d.Interactives:return qe;case d.ClipsV2:return et;case d.Clips:return Qe;case d.PlayPageResources:return tt;case d.PlayPageResourcesV2:return it;case d.DashboardResources:return p;case d.Libraries:case d.Folders:return Je;case d.Ratings:return st;case d.SpecialEvents:return lt;case d.Companies:return Xe;case d.SmallSeries:return at;case d.Series:default:return nt}}function We(e,n,i){let t=5;return e.xs?t=2:e.sm?t=3:e.md&&(t=4),i<t&&(t=i),t}function Xe(e,n,i){let t=8;return e.xs||e.sm?t=4:e.md&&(t=6),i<t&&(t=i),t}function Je(e,n,i){let t=3;return e.xs||e.sm?t=1:e.md?t=2:e.lg&&(t=3),i<t&&(t=i),t}function p(e,n,i){let t=4;return e.xs&&(t=1),e.sm&&(t=2),(e.md||e.lg)&&(t=3),n===_.LargeRow&&t>3&&(t=3),i<t&&(t=i),t}function Ke(e,n,i){let t=4;return e.xs&&(t=2),e.sm&&(t=3),i<t&&(t=i),t}function Ye(e,n,i){return 1}function Ze(e,n,i){if(n===_.LargeRow){let l=5;return e.xs?l=2:e.sm?l=3:e.md&&(l=4),i<l&&(l=i),l}let t=6;return e.xs?t=2:e.sm?t=3:e.md?t=4:e.lg?t=5:(e.xl||e.xxl)&&(t=6),i<t&&(t=i),t}function qe(e,n,i){let t=3;return(e.md||e.sm)&&(t=2),e.xs&&(t=1),i<Math.ceil(t)&&(t=i),t}function Qe(e,n,i){let t=3;return(e.md||e.sm)&&(t=2),e.xs&&(t=1),i<Math.ceil(t)&&(t=i),t}function pe(e,n,i){let t=3;return e.xs&&(t=2),i<t&&(t=i),t}function et(e,n,i){let t=3;return e.xs&&(t=2),i<t&&(t=i),t}function tt(e,n,i){let t=4;return e.sm&&(t=3),e.xs&&(t=2),i<t&&(t=i),t}function it(e,n,i){let t=3;return e.xs&&(t=2),i<t&&(t=i),t}function nt(e,n,i){let t=4;return e.xs?t=2:e.sm&&(t=3),i<t&&(t=i),t}function at(e,n,i){let t=6;return e.xs?t=2:e.sm?t=3:e.md?t=4:e.lg&&(t=5),i<t&&(t=i),t}function st(e,n,i){if(i<4)return i;let t=5;return(e.xs||e.sm)&&(t=3),(e.md||e.lg)&&(t=4),i===4&&(e.xs||e.sm)&&(t=3),i<t&&(t=i),t}function lt(e,n,i){let t=6;return e.xs&&(t=2),e.sm&&(t=3),e.md&&(t=4),e.lg&&(t=5),(e.xl||e.xxl)&&(t=6),i<t&&(t=i),t}function rt(e,n,i,t,l,s,c){return function(u){const r=u.touches.item(0).clientX;l||(n.current.style.transition="",t(n.current.getBoundingClientRect().width),s(r));let v=(l-r)/i*100;(v<0&&e.offset===e.viewableItems||v>0&&e.offset===e.totalItems)&&(v=0),c(v)}}const ct=7.5;function ot(e,n,i,t,l,s,c){return function(){if(e.current.style.transition="transform .4s ease-in-out",n(null),Math.abs(i)>=ct){const u=i>0?h.Next:h.Previous;l({type:u}),i>0&&s?s():i<0&&c&&c()}t(0)}}function ut(e,n,i,t,l,s){return e||l<=t?!0:n||s?i===t:!0}function dt(e,n,i,t,l,s,c){return e||l<=t?!0:i===t?!1:n?s?!1:l<=i:c?i===l:!0}function mt(e,n){ee.useEffect(()=>{!e||e.current||(e.current={jumpToIndex:i=>n({type:h.JumpToIndex,payload:{offset:i+1}})})},[e==null?void 0:e.current])}const ne={offset:0,viewableItems:4,position:0,totalItems:0,contents:null,type:_.Row},ft=e=>{const{viewableItems:n,offset:i,position:t,totalItems:l}=e,s=l-i;return s%n===0||s>n?{position:t-100,offset:i+n}:s<n?{position:t-s/n*100,offset:i+s}:{position:t,offset:i}},ht=e=>{const{viewableItems:n,offset:i,position:t}=e,l=i-n;return l%n===0||l>n?{position:t+100,offset:i-n}:l<n?{position:t+l/n*100,offset:i-l}:{position:t,offset:i}};function xt(e,n){const{type:i,payload:t={}}=n;switch(i){case h.Next:return{...e,...ft(e)};case h.Previous:return{...e,...ht(e)};case h.JumpToIndex:return{...e,offset:t.offset,position:(t.offset-1)*-100};case h.Resize:{const s=Q(e.contents)(t.breakpoints,e.type,e.totalItems);return{...e,position:0,offset:s,viewableItems:s}}case h.Init:{const s=Q(t.contents)(t.breakpoints,t.type,t.totalItems);return ae({...e,offset:s,viewableItems:s,type:t.type,contents:t.contents,totalItems:t.totalItems,position:0})}case h.Update:return{...e,totalItems:t.totalItems};default:return e}}function ae(e){return{...ne,...e}}function gt(e){return e.hideDescription&&e.hideHeading?a.jsx(a.Fragment,{}):e.isPreviewing?a.jsx(ie,{name:e.name,description:e.description}):a.jsxs("div",{className:"curated-widget-header",children:[!e.hideHeading&&a.jsx("div",{className:"partial-loading-background curated-widget-heading",style:{height:"1.5rem",width:"12rem"}}),!e.hideDescription&&a.jsx("div",{className:"partial-loading-background curated-widget-description",style:{height:"1.434375rem",width:"16rem"}})]})}const yt="_rightOverflowGradient_14i04_1",vt="_leftOverflowGradient_14i04_1",It="_partialItem_14i04_19",wt="_mobileScroll_14i04_24",_t="_widgetItemWrapper_14i04_32",C={rightOverflowGradient:yt,leftOverflowGradient:vt,partialItem:It,mobileScroll:wt,widgetItemWrapper:_t};function bt(e){const n=A();return n.xs?{itemCount:1,colSize:12}:n.sm?{itemCount:2,colSize:6}:n.md||n.lg?{itemCount:3,colSize:4}:{itemCount:e==="sm"?4:3,colSize:e==="sm"?3:4}}const jt=({colSize:e})=>a.jsx("div",{className:`col-${e} px-1`,children:a.jsx("div",{className:`${C.partialItem} partial-loading-background rounded-3`})});se.defaultProps={size:"sm",childComponent:jt};function se(e){const{itemCount:n,colSize:i}=bt(e.size),t=e.childComponent,l=[];for(let s=0;s<n;s++)l.push(a.jsx(t,{colSize:i},s));return a.jsxs("div",{className:"widget",children:[a.jsx(gt,{hideHeading:e.hideHeading,hideDescription:e.hideDescription,name:e.name,description:e.description,isPreviewing:e.isPreviewing}),a.jsx("div",{className:"row g-0 mx-n1",children:l})]})}const Rt="shared.fixedWidget",E=12;Pt.defaultProps={type:_.Row,minimumItemCount:0,extraChildComponentProps:{},touchBehavior:"scroll"};function Pt(e){var z;const{analyticsData:n={},getWidgetItemAnalyticsData:i=()=>{}}=e,[t,l]=w.useState(null),[s,c]=w.useState(null),[u,g]=w.useState(0),[r,b]=w.useReducer(xt,ne,ae),v=w.useRef(null),[le,H]=je(),[O,L]=w.useState(!1),[M,B]=w.useState(!1);mt(e.controlsRef,b);const{ref:re,inView:ce}=Ee({prevent:!e.lazyLoad}),I=Ge(e,b,ce);function $(o){const y=e.prefetched?e.collection:I.data;if(!y)return[];const R=N.isFunction(e.setData)?e.setData(y):y;return(R==null?void 0:R.slice(0,o))??[]}const x=$(e.limitTotalItems?E:1/0);function oe(){return e.limitTotalItems?$(1/0).length>x.length:!1}const ue=r.offset===x.length,F=A(),{onFocusWidget:de,onBlurWidget:me,isTabbing:k,getFixedAttributes:fe,focusNext:he,focusPrev:xe}=Fe({type:"fixed",state:r,containerRef:v});w.useEffect(()=>{b({type:h.Resize,payload:{breakpoints:F}})},[F]),w.useEffect(()=>{if(!e.prefetched)return;let o=e.type;o===_.ResourcesTile&&(o=_.Row),b({type:h.Init,payload:{breakpoints:F,type:o,contents:e.contents,totalItems:x.length}})},[(z=e.collection)==null?void 0:z.length,e.prefetched]);function ge(o,y){if(x.length===r.viewableItems){L(o),B(o);return}if(y+1===x.length){B(o);return}if(y===0){L(o);return}if((y+1-r.offset%r.viewableItems)%r.viewableItems===0){B(o);return}if((y-r.offset%r.viewableItems)%r.viewableItems===0){L(o);return}}function j(){return e.touchBehavior!=="scroll"?!1:Ce.isTabletOrMobile()}const ye={type:r.type,collectionSize:x.length,contents:e.contents},f=ze(e,(I==null?void 0:I.data)||e.collection);if(I!=null&&I.hasError)return a.jsx(a.Fragment,{});if(!e.prefetched&&!(I!=null&&I.data)){const o=e.partialComponent||se;return a.jsx("div",{ref:re,children:a.jsx(o,{})})}if(!x.length||x.length<e.minimumItemCount)return a.jsx(a.Fragment,{});const ve=e.childComponent,G=o=>({id:f==null?void 0:f.id,name:f==null?void 0:f.name,direction:o===h.Next?"right":"left",...e.analyticsData}),V=!e.appLink||!ue?!1:oe(),U=j()||e.hideButtons,Ie=r.offset===r.viewableItems,we=x.length<=r.offset,_e=r.viewableItems<x.length;return a.jsx("div",{className:"mx-n4 mb-n3",children:a.jsxs("div",{className:j()?"pb-3 overflow-hidden":"px-4 pb-3 overflow-hidden",children:[!e.hideName&&a.jsx("div",{className:j()?"px-4":"",children:a.jsx(ie,{name:f.name,description:f.description,appLink:q(e.appLink,f),onClick:e.onClick,analyticsData:{id:f==null?void 0:f.id,name:f==null?void 0:f.name,...e.analyticsData},analyticsOptions:S.getSliderHeadingAnalyticsOptions(),showSeeMoreLink:e.showSeeMoreLink||_e,content:x,isPreviewing:e.isPreviewing,widgetTypeId:e.widgetTypeId,badgeComponent:e.headingBadgeComponent})}),a.jsxs("div",{ref:le,className:`position-relative mx-n1 ${j()?`${C.mobileScroll} px-4`:""} ${e.hideBleedingContent?"overflow-hidden-x":""}`,children:[!U&&a.jsxs(a.Fragment,{children:[!e.hideBleedingContent&&!O&&!Ie&&a.jsx("div",{className:C.leftOverflowGradient}),a.jsx(J,{direction:K.Left,onClick:()=>{xe(),b({type:h.Previous}),D.logUserAction(G(h.Previous),S.getSliderAnalyticsOptions()),N.isFunction(e.onPrevious)&&e.onPrevious()},hide:!!e.hideButtons||ut(O,H,r.offset,r.viewableItems,x.length,k),contents:e.contents,className:e.leftWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:r})]}),a.jsxs(Ve,{position:r.position,positionType:De.Percentage,onTouchMove:e.touchBehavior==="drag"&&rt(r,v,s,c,t,l,g),onTouchEnd:e.touchBehavior==="drag"&&ot(v,l,u,g,b,e.onNext,e.onPrevious),ref:v,percentageDragged:u,children:[x.map((o,y)=>a.jsx("li",{onFocus:()=>de(y),onBlur:me,className:C.widgetItemWrapper,...fe(y),children:a.jsx(ve,{data:o,collectionAppLink:e.appLink,getAppLink:e.getChildAppLink?()=>e.getChildAppLink(o):()=>null,context:ye,preloadImage:Ue(r,x)(o),thumbnailSize:e.thumbnailSize||Re.Medium,analyticsData:{widgetId:f.id,widgetName:f.name,itemIndex:y,...n,...i(o)},analyticsOptions:{...e.analyticsOptions,...S.getSliderItemAnalyticsOptions()},onHover:R=>{j()||window.setTimeout(()=>{ge(R,y)},R?0:200)},...e.extraChildComponentProps})},`${o.id}:${y}`)),j()&&a.jsx("div",{className:"ps-4"})]}),!U&&a.jsxs(a.Fragment,{children:[a.jsx(J,{direction:K.Right,onClick:()=>{if(V){te.trigger(q(e.appLink,f));return}he(),b({type:h.Next}),D.logUserAction(G(h.Next),S.getSliderAnalyticsOptions()),N.isFunction(e.onNext)&&e.onNext()},hide:!!e.hideButtons||dt(M,H,r.offset,r.viewableItems,x.length,V,k),contents:e.contents,hoverText:V&&Pe.getPhrase(Rt,"seeMore"),className:e.rightWidgetButtonClassName,hideExtendedClickableArea:e.hideExtendedClickableArea,state:r}),!e.hideBleedingContent&&!M&&!we&&a.jsx("div",{className:C.rightOverflowGradient})]})]})]})})}const Ct="_imageStyle_lemx6_1",St="_item_lemx6_6",Nt="_dashboard_lemx6_10",Tt="_playPage_lemx6_25",At="_aspectRatio_lemx6_34",Lt="_outerContainer_lemx6_39",Bt="_innerContainer_lemx6_46",Ft="_actions_lemx6_46",Vt="_titleBelow_lemx6_56",Dt="_thumbnailContainer_lemx6_59",Et="_titleAbove_lemx6_62",Ht="_teacherPack_lemx6_65",Ot="_text_lemx6_68",Mt="_hoverState_lemx6_71",$t="_atomGuide_lemx6_74",kt="_studentActivity_lemx6_83",Gt="_additionalMaterials_lemx6_92",Ut="_userUploaded_lemx6_101",zt="_download_lemx6_116",m={imageStyle:Ct,item:St,dashboard:Nt,playPage:Tt,aspectRatio:At,outerContainer:Lt,innerContainer:Bt,actions:Ft,titleBelow:Vt,thumbnailContainer:Dt,titleAbove:Et,teacherPack:Ht,text:Ot,hoverState:Mt,atomGuide:$t,studentActivity:kt,additionalMaterials:Gt,userUploaded:Ut,download:zt};function Wt(e){switch(e){case"atom-guide":return m.atomGuide;case"student-activity":return m.studentActivity;case"teacher-pack":return m.teacherPack;case"additional-materials":return m.additionalMaterials;default:return m.userUploaded}}function Xt(e,n){var t;const i=A();return n==="public"?!0:i.xs||i.sm||e.type!=="resource"||!("metadata"in e)?!1:e.metadata.type===Y.Image?!0:e.metadata.type===Y.Pdf?!!e.url:!!((t=e.pdf)!=null&&t.url)}P.defaultProps={preloadImage:!0,actionBehaviour:"normal"};function P(e){var l,s,c;let n=null;"metadata"in e.data&&(n=e.data.metadata);const i=Z.isType(e.data,T.Resource);function t(u){var r;let g=`
2
+ d-flex flex-column align-items-center justify-content-end rounded-3 h-100
3
+ position-relative ${Wt(u)} ${m.innerContainer}`;return(r=e.theme)!=null&&r.containerClass?g+=` ${e.theme.containerClass}`:g+=" pt-3 px-3",e.applyHoverState&&(g+=` ${m.hoverState}`),g}return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:m.aspectRatio,children:a.jsx("div",{className:m.outerContainer,children:a.jsxs("div",{className:t(n==null?void 0:n.resourceType),children:[e.titlePosition==="above"&&a.jsx(Ae,{title:e.data.name,children:a.jsx("h3",{className:`text-center text-break h5 mb-3 ${m.text}`,children:a.jsx("span",{className:"clamp-1",children:e.data.name})})}),a.jsx("div",{className:`
4
+ ${((l=e.theme)==null?void 0:l.thumbnailContainerClass)??""} w-75 overflow-hidden
5
+ ${m.thumbnailContainer} ${e.titlePosition==="above"?m.titleAbove:""}
6
+ ${m.imageStyle}
7
+ `,children:a.jsx(He,{resource:e.data,imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:e.imageErrorFallbackUrl,preloadImage:e.preloadImage})}),i&&e.onClickDownload&&e.actionBehaviour==="normal"&&a.jsx("div",{className:m.actions,children:a.jsx(Le,{onClick:u=>e.onClickDownload(u,e.data),className:`${m.download} d-flex align-items-center justify-content-center`,children:a.jsx(Be,{svg:ke})})}),!e.hideTypeBadge&&i&&a.jsx(Me,{typeId:T.Resource})]})})}),e.titlePosition==="below"&&a.jsxs("div",{className:`mt-1 ${m.titleBelow}`,children:[Z.isType(e.data,T.Resource)&&!!((c=(s=e.data)==null?void 0:s.metadata)!=null&&c.resourceType)&&a.jsx($e,{children:Oe.getResourceTypeName(e.data.metadata.resourceType)}),a.jsx("h3",{className:"h6 clamp-2",children:e.data.name})]})]})}const ni=w.memo(function(e){const n=Xt(e.data,e.actionBehaviour);function i(){return e.location==="play-page"?m.playPage:m.dashboard}const t={...e.analyticsData,...e.data},l={...e.analyticsOptions,actionType:Se.Click,entity:e.data.typeId===T.Resource?X.Resource:X.Link};function s(){D.logUserAction(t,l)}const c={...e,applyHoverState:n||!!e.data.url};return a.jsx("div",{className:`px-1 flex-shrink-0 ${m.item} ${i()} ${Ne.RESOURCE_ITEM_SELECTOR}`,children:(()=>{const u="d-block no-decoration";return e.data.type==="link"?a.jsx("a",{href:e.data.url,target:"_blank",className:u,onClick:s,children:a.jsx(P,{...c})}):n?e.actionBehaviour==="public"?a.jsx("div",{className:`${u} cursor-pointer d-inline`,onClick:()=>{s(),te.trigger(e.getAppLink(e.data))},children:a.jsx(P,{...c})}):a.jsx(Te,{appLink:e.getAppLink(e.data),className:u,analyticsData:t,analyticsOptions:l,children:a.jsx(P,{...c})}):e.data.url?a.jsx("a",{href:e.data.url,className:u,onClick:s,children:a.jsx(P,{...c})}):a.jsx("div",{className:u,children:a.jsx(P,{...c})})})()})});export{Pt as F,gt as P,ni as R,d as W,_ as a,se as b,P as c};
8
+ //# sourceMappingURL=LIBRZSqN.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LIBRZSqN.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/Widget.ts","../../../../libs/shared/src/enums/WidgetContents.ts","../../../../libs/shared/src/components/widgets/fixed-widget/FixedWidgetUtils.ts","../../../../libs/shared/src/components/widgets/fixed-widget/FixedWidgetReducer.tsx","../../../../libs/shared/src/components/widgets/curated-widgets/components/header/partial-loading/PartialWidgetHeader.tsx","../../../../libs/shared/src/components/widgets/fixed-widget/PartialFixedWidget.tsx","../../../../libs/shared/src/components/widgets/fixed-widget/FixedWidget.tsx","../../../../libs/shared/src/components/widgets/items/resource-widget-item/ResourceWidgetItem.tsx"],"sourcesContent":["import { BaseObject } from 'libs/shared/interfaces';\n\n/**\n * This maps directly against the widget types from Domain.\n * Update is only required where the backend changes.\n */\nexport enum WidgetType {\n Row = 0, // At full-size, this will contain a row of 4 items\n LargeRow = 1, // At full-size, this will contain a row of 3 times\n Hero = 2,\n ResourcesTile = 3 // Deprecated. Widget's with this type will fall back to the `Row` type (0).\n}\n\nexport interface Widget extends Omit<BaseObject, 'type'> {\n collectionId: string;\n dashboardId: string;\n type: WidgetType;\n}","export enum WidgetContents {\n Videos = 'videos',\n FeedVideos = 'feed videos',\n Series = 'series',\n Subjects = 'subjects',\n Playlists = 'playlists',\n Interactives = 'interactives',\n Clips = 'clips',\n PlayPageResources = 'play page resources',\n DashboardResources = 'dashboard resources',\n Libraries = 'Libraries',\n Folders = 'Folders',\n RecentActivities = 'recent activities',\n SmallSeries = 'small series',\n Companies = 'companies',\n Ratings = 'ratings',\n SpecialEvents = 'special events',\n\n InteractivesV2 = 'interactives v2',\n ClipsV2 = 'clips v2',\n PlayPageResourcesV2 = 'playpage resources v2'\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { ReducerActions } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { Breakpoints, useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { BaseObject, WidgetType } from 'libs/shared/interfaces';\n\nimport { FixedWidgetProps, WIDGET_ITEM_LIMIT } from './FixedWidget';\nimport { FixedWidgetPayload, FixedWidgetState } from './FixedWidgetReducer';\n\nexport interface WidgetData {\n id?: string;\n name?: string;\n description?: string;\n}\n\nexport function useFetchData<T extends React.ComponentType<FixedWidgetItemProps>>(\n props: FixedWidgetProps<T>,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction, FixedWidgetPayload>>,\n shouldFetch: boolean\n): Flight.Response<any> {\n let data = props.collection;\n let res: Flight.Response<any>;\n\n if ((!data || ObjectHelper.isEmpty(data)) && !props.prefetched) {\n res = props.fetch(shouldFetch);\n data = res.data;\n }\n\n /**\n * Once we have the widget data, lazily update our state with the new collection\n */\n const collection = (FunctionHelper.isFunction(props.setData) && data) ? props.setData(data) : data;\n let collectionToDisplay = collection;\n\n const breakpoints = useBreakpoints();\n\n React.useEffect(() => {\n if (!data || ObjectHelper.isEmpty(data))\n return;\n\n if (props.limitTotalItems)\n collectionToDisplay = collection.length > WIDGET_ITEM_LIMIT ? collection.slice(0, WIDGET_ITEM_LIMIT) : collection;\n\n let type = props.type;\n\n // The ResourcesTile widget type is deprecated. We render the Row type instead in this case\n if (type === WidgetType.ResourcesTile)\n type = WidgetType.Row;\n\n dispatch({\n type: WidgetInteraction.Init,\n payload: {\n totalItems: collectionToDisplay.length,\n breakpoints,\n type,\n contents: props.contents\n }\n });\n }, [collection?.length]);\n\n return res;\n}\n\n/**\n * This function wrapper determines which widget item images should be pre-fetched by the LazyImage component.\n * It does this by looking at which images are going to be shown after the users clicks on the \"Next\"\n * widget button.\n */\nexport function getShouldPreload(state: FixedWidgetState, collection: any[]): (widgetItem: any) => boolean {\n const { offset, viewableItems } = state;\n\n // The index of the latest item that has been fetched\n const maxLoadedIndex = offset;\n\n /**\n * The indicesToPreload is an array of indices of widget items that should be prefetched by the\n * LazyImage component\n */\n const indicesToPreload: number[] = [];\n for (let i = 0; i < maxLoadedIndex + viewableItems; i++) {\n indicesToPreload.push(i);\n }\n\n /**\n * A widget item calls this function to determine whether or not its image can be pre-fetched.\n * This is determined by whether or not its index has been deemed valid to be pre-fetched\n * by the scope above\n */\n return function shouldPreload(widgetItem: any): boolean {\n const index = collection.indexOf(widgetItem);\n\n return indicesToPreload.includes(index);\n };\n}\n\nexport function getCollectionAppLink(appLink: Core.AppLink, data: WidgetData): Core.AppLink {\n if (!appLink)\n return;\n\n return {\n ...appLink,\n args: appLink.args || [ data.id, TextHelper.slugify(data.name) ]\n };\n}\n\n/**\n * Allow explicit name and description props to override the fetched\n * data properties.\n * \n * @param props \n * @param data \n */\nexport function formatData<T extends React.ComponentType<FixedWidgetItemProps>>(\n props: FixedWidgetProps<T>,\n data: BaseObject\n): WidgetData {\n const { id, name, description } = props;\n\n const overrideProps: WidgetData = {};\n\n if (Array.isArray(data))\n return { id, name, description };\n\n if (props.id) overrideProps.id = id;\n if (props.name) overrideProps.name = name;\n if (props.description) overrideProps.description = description;\n\n return { ...data, ...overrideProps };\n}\n\n/**\n * The functions below are used by the reducer to compute the number of widget items\n * displayed on the screen based on the media query, widget type, and total number of items.\n */\ntype ComputeFunction = (breakpoints: Breakpoints, type: WidgetType, itemCount: number) => number;\n\n/**\n * TODO:\n * This and the `WidgetType` enum need to be replaced entirely as this is no longer maintainable.\n * Each widget type + template combination should define it's own item count per\n * breakpoint and pass it in as props.\n */\nexport function getComputeFunction(contents: WidgetContents): ComputeFunction {\n switch (contents) {\n case WidgetContents.Playlists:\n return computeViewablePlaylists;\n\n case WidgetContents.Videos:\n return computeViewableVideos;\n\n case WidgetContents.RecentActivities:\n return computeViewableRecentActivities;\n\n case WidgetContents.FeedVideos:\n return computeViewableFeedVideos;\n\n case WidgetContents.Subjects:\n return computeViewableSubjects;\n\n case WidgetContents.InteractivesV2:\n return computeViewableInteractivesV2;\n\n case WidgetContents.Interactives:\n return computeViewableInteractives;\n\n case WidgetContents.ClipsV2:\n return computeViewableClipsV2;\n\n case WidgetContents.Clips:\n return computeViewableClips;\n\n case WidgetContents.PlayPageResources:\n return computeViewablePlayPageResources;\n\n case WidgetContents.PlayPageResourcesV2:\n return computeViewablePlayPageResourcesV2;\n\n case WidgetContents.DashboardResources:\n return computeViewableVideos;\n\n case WidgetContents.Libraries:\n case WidgetContents.Folders:\n return computeViewableLibraries;\n\n case WidgetContents.Ratings:\n return computeViewableRatings;\n\n case WidgetContents.SpecialEvents:\n return computeViewableSpecialEvents;\n\n case WidgetContents.Companies:\n return computeViewableCompanies;\n\n case WidgetContents.SmallSeries:\n return computeViewableSmallSeries;\n\n case WidgetContents.Series:\n default:\n return computeViewableSeries;\n }\n}\n\nfunction computeViewablePlaylists(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 5;\n\n if (breakpoints.xs)\n maxItems = 2;\n else if (breakpoints.sm)\n maxItems = 3;\n else if (breakpoints.md)\n maxItems = 4;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableCompanies(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 8;\n\n if (breakpoints.xs || breakpoints.sm)\n maxItems = 4;\n else if (breakpoints.md)\n maxItems = 6;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableLibraries(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.xs || breakpoints.sm)\n maxItems = 1;\n else if (breakpoints.md)\n maxItems = 2;\n else if (breakpoints.lg)\n maxItems = 3;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableVideos(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems = 4;\n\n if (breakpoints.xs)\n maxItems = 1;\n\n if (breakpoints.sm)\n maxItems = 2;\n\n if (breakpoints.md || breakpoints.lg)\n maxItems = 3;\n\n if (type === WidgetType.LargeRow && maxItems > 3)\n maxItems = 3;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableRecentActivities(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems = 4;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (breakpoints.sm)\n maxItems = 3;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\n// eslint-disable-next-line\nfunction computeViewableFeedVideos(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n return 1;\n}\n\nfunction computeViewableSubjects(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n if (type === WidgetType.LargeRow) {\n let maxItems: number = 5;\n\n if (breakpoints.xs)\n maxItems = 2;\n else if (breakpoints.sm)\n maxItems = 3;\n else if (breakpoints.md)\n maxItems = 4;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n }\n\n let maxItems: number = 6;\n\n if (breakpoints.xs)\n maxItems = 2;\n else if (breakpoints.sm)\n maxItems = 3;\n else if (breakpoints.md)\n maxItems = 4;\n else if (breakpoints.lg)\n maxItems = 5;\n else if (breakpoints.xl || breakpoints.xxl)\n maxItems = 6;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableInteractives(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.md || breakpoints.sm)\n maxItems = 2;\n\n if (breakpoints.xs)\n maxItems = 1;\n\n if (itemCount < Math.ceil(maxItems))\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableClips(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.md || breakpoints.sm)\n maxItems = 2;\n\n if (breakpoints.xs)\n maxItems = 1;\n\n if (itemCount < Math.ceil(maxItems))\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableInteractivesV2(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableClipsV2(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewablePlayPageResources(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 4;\n\n if (breakpoints.sm)\n maxItems = 3;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewablePlayPageResourcesV2(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 3;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableSeries(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 4;\n\n if (breakpoints.xs)\n maxItems = 2;\n else if (breakpoints.sm)\n maxItems = 3;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableSmallSeries(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 6;\n\n if (breakpoints.xs)\n maxItems = 2;\n else if (breakpoints.sm)\n maxItems = 3;\n else if (breakpoints.md)\n maxItems = 4;\n\n else if (breakpoints.lg)\n maxItems = 5;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableRatings(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n if (itemCount < 4)\n return itemCount;\n\n let maxItems: number = 5;\n\n if (breakpoints.xs || breakpoints.sm)\n maxItems = 3;\n\n if (breakpoints.md || breakpoints.lg)\n maxItems = 4;\n\n if (itemCount === 4 && (breakpoints.xs || breakpoints.sm)) {\n maxItems = 3;\n }\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\nfunction computeViewableSpecialEvents(breakpoints: Breakpoints, type: WidgetType, itemCount: number): number {\n let maxItems: number = 6;\n\n if (breakpoints.xs)\n maxItems = 2;\n\n if (breakpoints.sm)\n maxItems = 3;\n\n if (breakpoints.md)\n maxItems = 4;\n\n if (breakpoints.lg)\n maxItems = 5;\n\n if (breakpoints.xl || breakpoints.xxl)\n maxItems = 6;\n\n if (itemCount < maxItems)\n maxItems = itemCount;\n\n return maxItems;\n}\n\n/**\n * Touch event handlers\n */\nexport function getOnTouchStart(\n widgetState: FixedWidgetState,\n containerRef: React.MutableRefObject<HTMLUListElement>,\n containerWidth: number,\n setContainerWidth: React.Dispatch<number>,\n initialTouchX: number,\n setInitialTouchX: React.Dispatch<number>,\n setPercentageDragged: React.Dispatch<number>\n): (event: React.TouchEvent<HTMLUListElement>) => void {\n return function(event: React.TouchEvent<HTMLUListElement>): void {\n const firstTouch = event.touches.item(0);\n const touchX = firstTouch.clientX;\n\n /**\n * Runs only on the very first touch event.\n * \n * Sets the initial x-coordinate as a reference point to calculate how far the user has dragged before\n * they release their finder\n */\n if (!initialTouchX) {\n containerRef.current.style.transition = '';\n\n setContainerWidth(containerRef.current.getBoundingClientRect().width);\n setInitialTouchX(touchX);\n }\n\n const pixelsDragged = initialTouchX - touchX;\n\n // Calculate how far the user has moved their finger as a percentage of the widget's container element\n let currentPercentageDragged = ((pixelsDragged / containerWidth) * 100);\n\n /**\n * These 2 if statements prevent the user from dragging the widget beyond its limits.\n * One if statement handles if they have dragged to the left, and the other is for dragging to the right.\n * \n * The same logic is used to hide the widget buttons (see the `hide` prop passed to `<WidgetButton />`)\n */\n if (currentPercentageDragged < 0 && (widgetState.offset === widgetState.viewableItems))\n currentPercentageDragged = 0;\n\n else if (currentPercentageDragged > 0 && (widgetState.offset === widgetState.totalItems))\n currentPercentageDragged = 0;\n\n setPercentageDragged(currentPercentageDragged);\n };\n}\n\nconst DRAG_TOLERANCE = 7.5; // % of container width using to trigger a transition.\n\nexport function getOnTouchEnd(\n containerRef: React.MutableRefObject<HTMLDivElement>,\n setInitialTouchX: React.Dispatch<number>,\n percentageDragged: number,\n setPercentageDragged: React.Dispatch<number>,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction, FixedWidgetPayload>>,\n onNext: () => void,\n onPrevious: () => void\n): () => void {\n return function (): void {\n containerRef.current.style.transition = 'transform .4s ease-in-out';\n setInitialTouchX(null);\n\n /**\n * Only trigger a Next/Previous widget event if the user has dragged beyond DRAG_TOLERANCE% either way of the\n * container's width. This means if the user only drags left/right a tiny little bit, the widget\n * will simply slide back into its original place.\n */\n if (Math.abs(percentageDragged) >= DRAG_TOLERANCE) {\n const reducerAction = percentageDragged > 0 ? WidgetInteraction.Next : WidgetInteraction.Previous;\n\n dispatch({\n type: reducerAction\n });\n\n if (percentageDragged > 0 && onNext) {\n onNext();\n } else if (percentageDragged < 0 && onPrevious) {\n onPrevious();\n }\n }\n\n setPercentageDragged(0);\n };\n}\n\nexport function hideBackButton(\n isHoveringOnFarLeft: boolean,\n isHoveringOnWidget: boolean,\n widgetOffset: number,\n maxViewableItems: number,\n widgetCollectionSize: number,\n isTabbing: boolean\n): boolean {\n // When hovering on the very far left widget item, hide the back button\n if (isHoveringOnFarLeft)\n return true;\n\n // if the collection size is smaller than the max viewable items, hide the back button\n if (widgetCollectionSize <= maxViewableItems)\n return true;\n\n // When hovering on the entire widget area, hide the back button if the widget is in the far left position\n if (isHoveringOnWidget)\n return (widgetOffset === maxViewableItems);\n\n if (isTabbing)\n return widgetOffset === maxViewableItems;\n\n return true;\n}\n\nexport function hideNextButton(\n isHoveringOnFarRight: boolean,\n isHoveringOnWidget: boolean,\n widgetOffset: number,\n maxViewableItems: number,\n widgetCollectionSize: number,\n showSeeMoreButton: boolean,\n isTabbing: boolean\n): boolean {\n // When hovering on the very far right widget item, hide the next button\n if (isHoveringOnFarRight)\n return true;\n\n // if the collection size is smaller than the max viewable items, hide the next button\n if (widgetCollectionSize <= maxViewableItems)\n return true;\n\n // Always show the next button if the widget is in the far left position\n if (widgetOffset === maxViewableItems)\n return false;\n\n // When the user is hovering over the entire widget area...\n if (isHoveringOnWidget) {\n // If we want to show the \"See more\" button, don't hide the next button\n if (showSeeMoreButton)\n return false;\n\n // Only show the next button if there are still more items to show\n return widgetCollectionSize <= widgetOffset;\n }\n\n if (isTabbing)\n return widgetOffset === widgetCollectionSize;\n\n return true;\n}\n\nexport interface FixedWidgetControls {\n jumpToIndex: (index: number) => void;\n}\n\n/**\n * If a component consuming FixedWidget needs to dispatch events to FixedWidget,\n * it can pass in a `controlsRef` prop, which will receive the API defined\n * below. This API can be extended as needed.\n * See FeedVideoCollection.tsx for an example\n */\nexport function useControlsRef(\n ref: React.MutableRefObject<FixedWidgetControls>,\n dispatch: React.Dispatch<ReducerActions<WidgetInteraction, FixedWidgetPayload>>\n): void {\n React.useEffect(() => {\n if (!ref || ref.current)\n return;\n\n ref.current = {\n jumpToIndex: (index: number) => dispatch({\n type: WidgetInteraction.JumpToIndex,\n payload: {\n offset: index + 1\n }\n })\n };\n }, [ref?.current]);\n}","import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { WidgetType } from 'libs/shared/interfaces';\n\nimport { getComputeFunction } from './FixedWidgetUtils';\n\nexport interface FixedWidgetPayload {\n breakpoints?: Breakpoints;\n contents?: WidgetContents;\n type?: WidgetType;\n offset?: number;\n totalItems?: number;\n}\n\nexport interface FixedWidgetState {\n // Current position within the widget collection\n offset: number;\n // Number of items viewable in slider for the current breakpoint/viewport size\n viewableItems: number;\n // Relative position of slider in the window. Used for an inline translate3d().\n position: number;\n // Type of widget being managed. May change on `Resize`.\n type: WidgetType;\n // What object type the widget uses :vomit: (this needs to be phased out of this god forsaken component)\n contents: WidgetContents;\n // Total number of items in the widget\n totalItems: number;\n}\n\nexport const initialWidgetState: FixedWidgetState = {\n offset: 0,\n viewableItems: 4,\n position: 0,\n totalItems: 0,\n contents: null,\n type: WidgetType.Row\n};\n\nconst computeNextPosition = (prevState: FixedWidgetState) => {\n const { viewableItems, offset, position, totalItems } = prevState;\n\n const remainingCount = totalItems - offset;\n\n /**\n * If the remaining items are evening divisible by the items in view, or,\n * we have more items that can be displayed in the view, move the slider a full 100%.\n */\n if (remainingCount % viewableItems === 0 || remainingCount > viewableItems)\n return {\n position: position - 100,\n offset: offset + viewableItems\n };\n\n /**\n * Where there are less items than we can show in a full slide, \n * calculate the % movement required to only show those items.\n */\n if (remainingCount < viewableItems)\n return {\n position: position - (remainingCount / viewableItems * 100),\n offset: offset + remainingCount\n };\n\n /**\n * Default back to the current state as a fallback\n */\n return {\n position: position,\n offset: offset\n };\n};\n\nconst computePreviousPosition = (prevState: FixedWidgetState) => {\n const { viewableItems, offset, position } = prevState;\n\n const remainingCount = offset - viewableItems;\n\n if (remainingCount % viewableItems === 0 || remainingCount > viewableItems)\n return {\n position: position + 100,\n offset: offset - viewableItems\n };\n\n if (remainingCount < viewableItems)\n return {\n position: position + (remainingCount / viewableItems * 100),\n offset: offset - remainingCount\n };\n\n return {\n position: position,\n offset: offset\n };\n};\n\nexport function FixedWidgetReducer(\n prevState: FixedWidgetState,\n action: ReducerActions<WidgetInteraction, FixedWidgetPayload>\n): FixedWidgetState {\n const { type, payload = {} } = action;\n\n switch (type) {\n case WidgetInteraction.Next: {\n return {\n ...prevState,\n ...computeNextPosition(prevState)\n };\n }\n\n case WidgetInteraction.Previous: {\n return {\n ...prevState,\n ...computePreviousPosition(prevState)\n };\n }\n\n case WidgetInteraction.JumpToIndex: {\n return {\n ...prevState,\n offset: payload.offset,\n position: (payload.offset - 1) * -100\n };\n }\n\n case WidgetInteraction.Resize: {\n const computeViewableItems = getComputeFunction(prevState.contents);\n const initialSeen = computeViewableItems(payload.breakpoints, prevState.type, prevState.totalItems);\n\n return {\n ...prevState,\n position: 0,\n offset: initialSeen,\n viewableItems: initialSeen\n };\n }\n\n case WidgetInteraction.Init: {\n const computeViewableItems = getComputeFunction(payload.contents);\n const initialSeen = computeViewableItems(payload.breakpoints, payload.type, payload.totalItems);\n\n return lazyWidgetInit({\n ...prevState,\n offset: initialSeen,\n viewableItems: initialSeen,\n type: payload.type,\n contents: payload.contents,\n totalItems: payload.totalItems,\n position: 0\n });\n }\n\n case WidgetInteraction.Update: {\n return {\n ...prevState,\n totalItems: payload.totalItems\n };\n }\n\n default:\n return prevState;\n }\n}\n\nexport function lazyWidgetInit(newState: FixedWidgetState): FixedWidgetState {\n return { ...initialWidgetState, ...newState };\n}","import React from 'react';\n\nimport { WidgetHeader } from '../WidgetHeader';\n\ninterface PartialWidgetHeaderProps {\n hideHeading?: boolean;\n hideDescription?: boolean;\n name?: string;\n description?: string;\n isPreviewing?: boolean;\n}\n\nexport function PartialWidgetHeader(props: PartialWidgetHeaderProps): JSX.Element {\n if (props.hideDescription && props.hideHeading)\n return <></>;\n\n if (props.isPreviewing) {\n return (\n <WidgetHeader\n name={props.name}\n description={props.description}\n />\n );\n }\n\n return (\n <div className='curated-widget-header'>\n {!props.hideHeading && (\n <div className='partial-loading-background curated-widget-heading' style={{ height: '1.5rem', width: '12rem' }} />\n )}\n\n {!props.hideDescription && (\n <div className='partial-loading-background curated-widget-description' style={{ height: '1.434375rem', width: '16rem' }} />\n )}\n </div>\n );\n}","import * as React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { PartialWidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/partial-loading/PartialWidgetHeader';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { PartialWidgetTemplateProps } from '../curated-widgets/WidgetProps';\n\nimport styles from './fixed-widget.module.scss';\n\nfunction useGetSize(size?: 'sm' | 'lg'): HashObject {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xs)\n return {\n itemCount: 1,\n colSize: 12\n };\n\n if (breakpoints.sm)\n return {\n itemCount: 2,\n colSize: 6\n };\n\n if (breakpoints.md || breakpoints.lg)\n return {\n itemCount: 3,\n colSize: 4\n };\n\n return {\n itemCount: size === 'sm' ? 4 : 3,\n colSize: size === 'sm' ? 3 : 4\n };\n}\n\nexport interface PartialFixedWidgetItemProps {\n colSize: number;\n}\n\nconst PartialLoadingItem = ({ colSize }: PartialFixedWidgetItemProps) => (\n <div className={`col-${colSize} px-1`}>\n <div className={`${styles.partialItem} partial-loading-background rounded-3`} />\n </div>\n);\n\nexport interface PartialFixedWidgetProps {\n hideDescription?: boolean;\n hideHeading?: boolean;\n size?: 'sm' | 'lg';\n childComponent?: (props: PartialFixedWidgetItemProps) => JSX.Element;\n}\n\nPartialFixedWidget.defaultProps = {\n size: 'sm',\n childComponent: PartialLoadingItem\n};\n\nexport function PartialFixedWidget(props: PartialWidgetTemplateProps): JSX.Element {\n const { itemCount, colSize } = useGetSize(props.size);\n\n const ChildComponent = props.childComponent;\n\n const items = [];\n for (let i = 0; i < itemCount; i++) {\n items.push(<ChildComponent key={i} colSize={colSize} />);\n }\n\n return (\n <div className='widget'>\n <PartialWidgetHeader\n hideHeading={props.hideHeading}\n hideDescription={props.hideDescription}\n name={props.name}\n description={props.description}\n isPreviewing={props.isPreviewing}\n />\n <div className='row g-0 mx-n1'>\n {items}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { UserAgentHelper } from 'libs/common/backbone/utils/UserAgentHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { useWidgetKeyboard } from 'libs/shared/components/widgets/hooks/useWidgetKeyboard';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SlidingListContainer } from 'libs/shared/components/widgets/sliding-list/SlidingListContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { CssMeasurement } from 'libs/shared/enums/CssMeasurement';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { WidgetInteraction } from 'libs/shared/enums/WidgetInteraction';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { WidgetContext, WidgetType } from 'libs/shared/interfaces';\nimport { WidgetHelper } from 'libs/shared/utils/WidgetHelper';\n\nimport { FixedWidgetReducer, initialWidgetState, lazyWidgetInit } from './FixedWidgetReducer';\nimport { FixedWidgetControls, formatData, getCollectionAppLink, getOnTouchEnd, getOnTouchStart, getShouldPreload, hideBackButton, hideNextButton, useControlsRef, useFetchData } from './FixedWidgetUtils';\nimport { PartialFixedWidget } from './PartialFixedWidget';\n\nimport styles from './fixed-widget.module.scss';\n\nconst namespace = 'shared.fixedWidget';\n\n// Max number of widget items whenever `props.limitTotalItems` is `true`\nexport const WIDGET_ITEM_LIMIT = 12;\n\ninterface BaseFixedWidgetProps<\n T extends React.ComponentType<FixedWidgetItemProps>\n> {\n id?: string;\n name?: string;\n description?: string;\n\n type: WidgetType;\n contents: WidgetContents;\n thumbnailSize?: ImageSize;\n minimumItemCount?: number;\n limitTotalItems?: boolean;\n setData?: (data: any) => any[] | null;\n isPreviewing?: boolean;\n widgetTypeId?: WidgetTypeId;\n\n childComponent: T;\n extraChildComponentProps: Omit<React.ComponentProps<T>, keyof FixedWidgetItemProps>;\n\n partialComponent?: React.ElementType;\n getChildAppLink?: (item?: any) => Core.AppLink;\n appLink?: Core.AppLink;\n onClick?: () => void;\n headingBadgeComponent?: JSX.Element;\n showSeeMoreLink?: boolean;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n getWidgetItemAnalyticsData?: (data: any) => HashObject;\n\n onNext?: () => void;\n onPrevious?: () => void;\n controlsRef?: React.MutableRefObject<FixedWidgetControls>;\n touchBehavior?: 'drag' | 'scroll';\n\n leftWidgetButtonClassName?: string;\n rightWidgetButtonClassName?: string;\n\n hideName?: boolean;\n hideBleedingContent?: boolean;\n hideExtendedClickableArea?: boolean;\n hideButtons?: boolean;\n}\n\ntype FixedWidgetWithFetchProps<T extends React.ComponentType<FixedWidgetItemProps>> = BaseFixedWidgetProps<T>\n & {\n lazyLoad: true;\n collection?: never;\n fetch: (...args: any) => Flight.Response<any>;\n prefetched?: false;\n };\n\ntype FixedWidgetWithCollectionProps<T extends React.ComponentType<FixedWidgetItemProps>> = BaseFixedWidgetProps<T>\n & {\n collection: any;\n lazyLoad?: false;\n fetch?: never;\n prefetched: true;\n };\n\nexport type FixedWidgetProps<T extends React.ComponentType<FixedWidgetItemProps>> =\n FixedWidgetWithCollectionProps<T> |\n FixedWidgetWithFetchProps<T>;\n\nFixedWidget.defaultProps = {\n type: WidgetType.Row,\n minimumItemCount: 0,\n extraChildComponentProps: {},\n touchBehavior: 'scroll'\n};\n\n/**\n * If your childProps complains that \"value\" is not assignable ot type \n */\nexport function FixedWidget<T extends React.ComponentType<FixedWidgetItemProps>>(\n props: FixedWidgetProps<T>\n): JSX.Element {\n const { analyticsData = {}, getWidgetItemAnalyticsData = () => {} } = props;\n\n const [ initialTouchX, setInitialTouchX ] = React.useState(null);\n const [ containerWidth, setContainerWidth ] = React.useState(null);\n const [ percentageDragged, setPercentageDragged ] = React.useState(0);\n\n const [ state, dispatch ] = React.useReducer(FixedWidgetReducer, initialWidgetState, lazyWidgetInit);\n\n const containerRef = React.useRef(null);\n const [ buttonsRef, isHovering ] = useHover<HTMLDivElement>();\n\n const [ isHoveringOnFarLeft, setIsHoveringOnFarLeft ] = React.useState(false);\n const [ isHoveringOnFarRight, setIsHoveringOnFarRight ] = React.useState(false);\n\n useControlsRef(props.controlsRef, dispatch);\n\n const { ref, inView: shouldFetch } = useLazyLoad({ prevent: !props.lazyLoad });\n\n const response = useFetchData(props, dispatch, shouldFetch);\n\n function getWidgetCollection(limit: number): any[] {\n const responseData = props.prefetched ? props.collection : response.data;\n\n if (!responseData)\n return [];\n\n const formattedResponse = FunctionHelper.isFunction(props.setData) ? props.setData(responseData) : responseData;\n return formattedResponse?.slice(0, limit) ?? [];\n }\n\n const widgetItems = getWidgetCollection(props.limitTotalItems ? WIDGET_ITEM_LIMIT : Infinity);\n\n function hasMoreItems(): boolean {\n if (!props.limitTotalItems)\n return false;\n\n const unlimitedItems = getWidgetCollection(Infinity);\n\n return unlimitedItems.length > widgetItems.length;\n }\n\n const hasReachedEnd = state.offset === widgetItems.length;\n\n const breakpoints = useBreakpoints();\n \n const { onFocusWidget, onBlurWidget, isTabbing, getFixedAttributes, focusNext, focusPrev } = useWidgetKeyboard({ type: 'fixed', state, containerRef });\n\n React.useEffect(() => {\n dispatch({\n type: WidgetInteraction.Resize,\n payload: { breakpoints }\n });\n }, [breakpoints]);\n\n React.useEffect(() => {\n if (!props.prefetched)\n return;\n\n let type = props.type;\n\n // The ResourcesTile widget type is deprecated. We render the Row type instead in this case\n if (type === WidgetType.ResourcesTile)\n type = WidgetType.Row;\n\n // If the prefetched collection changes, re-initialize the widget state.\n dispatch({\n type: WidgetInteraction.Init,\n payload: {\n breakpoints,\n type,\n contents: props.contents,\n totalItems: widgetItems.length\n }\n });\n }, [ props.collection?.length, props.prefetched ]);\n\n function onSetIsHovering(hovering: boolean, index: number): void {\n if (widgetItems.length === state.viewableItems) {\n setIsHoveringOnFarLeft(hovering);\n setIsHoveringOnFarRight(hovering);\n return;\n }\n\n // This callback will hide the far left button if the user is hovering on the far left widget item.\n // Same goes for the far right button & widget item.\n if (index + 1 === widgetItems.length) {\n setIsHoveringOnFarRight(hovering);\n return;\n }\n\n if (index === 0) {\n setIsHoveringOnFarLeft(hovering);\n return;\n }\n\n if ((index + 1 - (state.offset % state.viewableItems)) % state.viewableItems === 0) {\n setIsHoveringOnFarRight(hovering);\n return;\n }\n\n if ((index - (state.offset % state.viewableItems)) % state.viewableItems === 0) {\n setIsHoveringOnFarLeft(hovering);\n return;\n }\n }\n\n function shouldScroll(): boolean {\n if (props.touchBehavior !== 'scroll')\n return false;\n\n return UserAgentHelper.isTabletOrMobile();\n }\n\n const widgetContext: WidgetContext = {\n type: state.type,\n collectionSize: widgetItems.length,\n contents: props.contents\n };\n\n const data = formatData(props, response?.data || props.collection);\n\n if (response?.hasError)\n return <></>;\n\n if (!props.prefetched && !response?.data) {\n const PartialComponent = props.partialComponent || PartialFixedWidget;\n\n return (\n <div ref={ref}>\n <PartialComponent />\n </div>\n );\n }\n\n if (!widgetItems.length || widgetItems.length < props.minimumItemCount)\n return <></>;\n\n /**\n * Don't merge this if Sha forgot to fix it.\n */\n const WidgetItemComponent = props.childComponent as React.ComponentType<FixedWidgetItemProps>;\n\n const getSliderAnalyticsData = (type: WidgetInteraction) => ({\n id: data?.id,\n name: data?.name,\n direction: type === WidgetInteraction.Next ? 'right' : 'left',\n ...props.analyticsData\n });\n\n const showSeeMoreButton = (() => {\n // Only show if there is an applink and we've reached the end of the widget\n if (!props.appLink || !hasReachedEnd)\n return false;\n\n // Also only show if we've exceeded the widget limit, if one has been set\n return hasMoreItems();\n })();\n\n const hideButtons = shouldScroll() || props.hideButtons;\n const hideBackGradient = state.offset === state.viewableItems;\n const hideNextGradient = widgetItems.length <= state.offset;\n const hasMoreThanViewable = state.viewableItems < widgetItems.length;\n\n return (\n <div className='mx-n4 mb-n3'>\n <div className={shouldScroll() ? 'pb-3 overflow-hidden' : 'px-4 pb-3 overflow-hidden'}>\n {!props.hideName &&\n <div className={shouldScroll() ? 'px-4' : ''}>\n <WidgetHeader\n name={data.name}\n description={data.description}\n appLink={getCollectionAppLink(props.appLink, data)}\n onClick={props.onClick}\n analyticsData={{ id: data?.id, name: data?.name, ...props.analyticsData }}\n analyticsOptions={WidgetHelper.getSliderHeadingAnalyticsOptions()}\n showSeeMoreLink={props.showSeeMoreLink || hasMoreThanViewable}\n content={widgetItems}\n isPreviewing={props.isPreviewing}\n widgetTypeId={props.widgetTypeId}\n badgeComponent={props.headingBadgeComponent}\n />\n </div>\n }\n <div\n ref={buttonsRef}\n className={`position-relative mx-n1 ${shouldScroll() ? `${styles.mobileScroll} px-4` : ''} ${props.hideBleedingContent ? 'overflow-hidden-x' : ''}`}\n >\n {!hideButtons && (\n <>\n {(!props.hideBleedingContent && !isHoveringOnFarLeft && !hideBackGradient) && (\n <div className={styles.leftOverflowGradient} />\n )}\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => {\n focusPrev();\n\n dispatch({ type: WidgetInteraction.Previous });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Previous),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n\n FunctionHelper.isFunction(props.onPrevious) && props.onPrevious();\n }}\n hide={!!props.hideButtons || hideBackButton(\n isHoveringOnFarLeft,\n isHovering,\n state.offset,\n state.viewableItems,\n widgetItems.length,\n isTabbing\n )}\n contents={props.contents}\n className={props.leftWidgetButtonClassName}\n hideExtendedClickableArea={props.hideExtendedClickableArea}\n state={state}\n />\n </>\n )}\n \n <SlidingListContainer\n position={state.position}\n positionType={CssMeasurement.Percentage}\n onTouchMove={props.touchBehavior === 'drag' && getOnTouchStart(\n state,\n containerRef,\n containerWidth,\n setContainerWidth,\n initialTouchX,\n setInitialTouchX,\n setPercentageDragged\n )}\n onTouchEnd={props.touchBehavior === 'drag' && getOnTouchEnd(\n containerRef,\n setInitialTouchX,\n percentageDragged,\n setPercentageDragged,\n dispatch,\n props.onNext,\n props.onPrevious\n )}\n ref={containerRef}\n percentageDragged={percentageDragged}\n >\n {widgetItems.map((widgetItem: any, index: number) => {\n return (\n <li\n key={`${widgetItem.id}:${index}`}\n onFocus={() => onFocusWidget(index)}\n onBlur={onBlurWidget}\n className={styles.widgetItemWrapper}\n {...getFixedAttributes(index)}\n >\n <WidgetItemComponent\n data={widgetItem}\n collectionAppLink={props.appLink}\n getAppLink={\n props.getChildAppLink ? () => props.getChildAppLink(widgetItem) : () => null as any\n }\n context={widgetContext}\n preloadImage={getShouldPreload(state, widgetItems)(widgetItem)}\n thumbnailSize={props.thumbnailSize || ImageSize.Medium}\n analyticsData={{\n widgetId: data.id,\n widgetName: data.name,\n itemIndex: index,\n ...analyticsData,\n ...getWidgetItemAnalyticsData(widgetItem)\n }}\n analyticsOptions={{ ...props.analyticsOptions, ...WidgetHelper.getSliderItemAnalyticsOptions() }}\n onHover={(hovering: boolean) => {\n if (shouldScroll())\n return;\n /**\n * For some reason this needs to be called after a set timeout, otherwise\n * the `useHover` listener on the `buttonsRef` element will not detect it's hover\n * event. A delay of 200ms is used for when `hovering` is false so that the effects of\n * setting `isHoveringOnFarX` aren't applied until the CSS transform transition has\n * completed.\n */\n window.setTimeout(() => {\n onSetIsHovering(hovering, index);\n }, hovering ? 0 : 200);\n }}\n {...props.extraChildComponentProps}\n />\n </li>\n );\n })}\n {shouldScroll() && <div className='ps-4'></div>}\n </SlidingListContainer>\n\n {!hideButtons && (\n <>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => {\n if (showSeeMoreButton) {\n Core.AppLinkHelper.trigger(getCollectionAppLink(props.appLink, data));\n return;\n }\n focusNext();\n\n dispatch({ type: WidgetInteraction.Next });\n AnalyticsHelper.logUserAction(\n getSliderAnalyticsData(WidgetInteraction.Next),\n WidgetHelper.getSliderAnalyticsOptions()\n );\n\n FunctionHelper.isFunction(props.onNext) && props.onNext();\n }}\n hide={!!props.hideButtons || hideNextButton(\n isHoveringOnFarRight,\n isHovering,\n state.offset,\n state.viewableItems,\n widgetItems.length,\n showSeeMoreButton,\n isTabbing\n )}\n contents={props.contents}\n hoverText={showSeeMoreButton && LanguageService.getPhrase(namespace, 'seeMore')}\n className={props.rightWidgetButtonClassName}\n hideExtendedClickableArea={props.hideExtendedClickableArea}\n state={state}\n />\n {(!props.hideBleedingContent && !isHoveringOnFarRight && !hideNextGradient) && (\n <div className={styles.rightOverflowGradient} />\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { DownloadSvg } from 'libs/shared/images/svg/actions/DownloadSvg';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\n\nimport styles from './resource-widget-item.module.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nfunction useCanPreview(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (e: React.MouseEvent<HTMLElement>, resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n}\n\nResourceTile.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTile(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => props.onClickDownload(e, props.data as Resource)}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svg={DownloadSvg} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {(\n MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) &&\n !!props.data?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemProps extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItem = React.memo(function(props: ResourceWidgetItemProps): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreview(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block no-decoration`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTile {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTile {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTile {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTile {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});"],"names":["WidgetType","WidgetContents","useFetchData","props","dispatch","shouldFetch","data","res","ObjectHelper","collection","FunctionHelper","collectionToDisplay","breakpoints","useBreakpoints","React.useEffect","WIDGET_ITEM_LIMIT","type","WidgetInteraction","getShouldPreload","state","offset","viewableItems","maxLoadedIndex","indicesToPreload","i","widgetItem","index","getCollectionAppLink","appLink","TextHelper","formatData","id","name","description","overrideProps","getComputeFunction","contents","computeViewablePlaylists","computeViewableVideos","computeViewableRecentActivities","computeViewableFeedVideos","computeViewableSubjects","computeViewableInteractivesV2","computeViewableInteractives","computeViewableClipsV2","computeViewableClips","computeViewablePlayPageResources","computeViewablePlayPageResourcesV2","computeViewableLibraries","computeViewableRatings","computeViewableSpecialEvents","computeViewableCompanies","computeViewableSmallSeries","computeViewableSeries","itemCount","maxItems","getOnTouchStart","widgetState","containerRef","containerWidth","setContainerWidth","initialTouchX","setInitialTouchX","setPercentageDragged","event","touchX","currentPercentageDragged","DRAG_TOLERANCE","getOnTouchEnd","percentageDragged","onNext","onPrevious","reducerAction","hideBackButton","isHoveringOnFarLeft","isHoveringOnWidget","widgetOffset","maxViewableItems","widgetCollectionSize","isTabbing","hideNextButton","isHoveringOnFarRight","showSeeMoreButton","useControlsRef","ref","initialWidgetState","computeNextPosition","prevState","position","totalItems","remainingCount","computePreviousPosition","FixedWidgetReducer","action","payload","initialSeen","lazyWidgetInit","newState","PartialWidgetHeader","jsx","Fragment","WidgetHeader","jsxs","useGetSize","size","PartialLoadingItem","colSize","styles","PartialFixedWidget","ChildComponent","items","namespace","FixedWidget","analyticsData","getWidgetItemAnalyticsData","React","buttonsRef","isHovering","useHover","setIsHoveringOnFarLeft","setIsHoveringOnFarRight","useLazyLoad","response","getWidgetCollection","limit","responseData","formattedResponse","widgetItems","hasMoreItems","hasReachedEnd","onFocusWidget","onBlurWidget","getFixedAttributes","focusNext","focusPrev","useWidgetKeyboard","_a","onSetIsHovering","hovering","shouldScroll","UserAgentHelper","widgetContext","PartialComponent","WidgetItemComponent","getSliderAnalyticsData","hideButtons","hideBackGradient","hideNextGradient","hasMoreThanViewable","WidgetHelper","WidgetButton","WidgetButtonDirection","AnalyticsHelper","SlidingListContainer","CssMeasurement","ImageSize","Core.AppLinkHelper","LanguageService","getColour","resourceType","useCanPreview","actionBehaviour","ResourceFileType","ResourceTile","metadata","isResource","MasterTypeHelper","MasterType","getInnerContainerClass","baseClass","Tooltip","ResourceThumbnail","DivButton","e","SvgContainer","DownloadSvg","TypeBadge","_c","_b","TitleSubText","ResourceHelper","ResourceWidgetItem","canPreview","getLocationClass","analyticsOptions","UserAction","EntityType","logAction","tileProps","SeoConstants","className","AppLinkHelper","AppLink"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{ai as o,aO as c,j as a,aP as R,aQ as d,aR as D,aS as L,aT as p,aU as S,aV as $,v as b}from"./app-DiXzpOyg.js";const N=R("h4");N.displayName="DivStyledAsH4";const g=o.forwardRef(({className:e,bsPrefix:s,as:r=N,...n},t)=>(s=c(s,"alert-heading"),a.jsx(r,{ref:t,className:d(e,s),...n})));g.displayName="AlertHeading";const A=o.forwardRef(({className:e,bsPrefix:s,as:r=D,...n},t)=>(s=c(s,"alert-link"),a.jsx(r,{ref:t,className:d(e,s),...n})));A.displayName="AlertLink";const C=o.forwardRef((e,s)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:w,children:y,variant:m="primary",onClose:u,dismissible:h,transition:x=p,...f}=L(e,{show:"onClose"}),l=c(r,"alert"),E=S(H=>{u&&u(!1,H)}),i=x===!0?p:x,j=a.jsxs("div",{role:"alert",...i?void 0:f,ref:s,className:d(w,l,m&&`${l}-${m}`,h&&`${l}-dismissible`),children:[h&&a.jsx($,{onClick:E,"aria-label":t,variant:k}),y]});return i?a.jsx(i,{unmountOnExit:!0,...f,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:g});function V({error:e}){return b({title:"Dev Error"}),e?a.jsxs("div",{className:"px-3",children:[a.jsx("h1",{children:e.name}),a.jsx(v,{variant:"danger",children:a.jsx("h2",{children:e.message})}),a.jsxs(v,{variant:"warning",children:[a.jsx("h3",{children:"Call stack"}),a.jsx("code",{children:e.stack})]})]}):a.jsx(a.Fragment,{})}export{V as DevErrorView};
2
+ //# sourceMappingURL=LgZBXsgq.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LgZBXsgq.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}"],"names":["DivStyledAsH4","divWithClassName","AlertHeading","React.forwardRef","className","bsPrefix","Component","props","ref","useBootstrapPrefix","_jsx","classNames","AlertLink","Anchor","Alert","uncontrolledProps","show","closeLabel","closeVariant","children","variant","onClose","dismissible","transition","Fade","useUncontrolled","prefix","handleClose","useEventCallback","e","Transition","alert","_jsxs","CloseButton","Alert$1","DevErrorView","error","useSetPageMetadata","jsxs","jsx","Fragment"],"mappings":"qHAOA,MAAMA,EAAgBC,EAAiB,IAAI,EAC3CD,EAAc,YAAc,gBAC5B,MAAME,EAA4BC,EAAAA,WAAiB,CAAC,CAClD,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYN,EAChB,GAAGO,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,eAAe,EACnCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDL,EAAa,YAAc,eCf3B,MAAMU,EAAyBT,EAAAA,WAAiB,CAAC,CAC/C,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYO,EAChB,GAAGN,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,YAAY,EAChCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDK,EAAU,YAAc,YCPxB,MAAME,EAAqBX,EAAAA,WAAiB,CAACY,EAAmBP,IAAQ,CACtE,KAAM,CACJ,SAAAH,EACA,KAAAW,EAAO,GACP,WAAAC,EAAa,cACb,aAAAC,EACA,UAAAd,EACA,SAAAe,EACA,QAAAC,EAAU,UACV,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaC,EACb,GAAGjB,CACP,EAAMkB,EAAgBV,EAAmB,CACrC,KAAM,SACV,CAAG,EACKW,EAASjB,EAAmBJ,EAAU,OAAO,EAC7CsB,EAAcC,EAAiBC,GAAK,CACpCR,GACFA,EAAQ,GAAOQ,CAAC,CAEpB,CAAC,EACKC,EAAaP,IAAe,GAAOC,EAAOD,EAC1CQ,EAAqBC,EAAAA,KAAM,MAAO,CACtC,KAAM,QACN,GAAKF,EAAqB,OAARvB,EAClB,IAAKC,EACL,UAAWG,EAAWP,EAAWsB,EAAQN,GAAW,GAAGM,CAAM,IAAIN,CAAO,GAAIE,GAAe,GAAGI,CAAM,cAAc,EAClH,SAAU,CAACJ,GAA4BZ,EAAAA,IAAKuB,EAAa,CACvD,QAASN,EACT,aAAcV,EACd,QAASC,CACf,CAAK,EAAGC,CAAQ,CAChB,CAAG,EACD,OAAKW,EACepB,EAAAA,IAAKoB,EAAY,CACnC,cAAe,GACf,GAAGvB,EACH,IAAK,OACL,GAAIS,EACJ,SAAUe,CACd,CAAG,EAPuBf,EAAOe,EAAQ,IAQzC,CAAC,EACDjB,EAAM,YAAc,QACpB,MAAAoB,EAAe,OAAO,OAAOpB,EAAO,CAClC,KAAMF,EACN,QAASV,CACX,CAAC,ECnDM,SAASiC,EAAa,CAAE,MAAAC,GAAgD,CAG7E,OAFAC,EAAmB,CAAE,MAAO,YAAa,EAEpCD,EAIHE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,WAAM,IAAA,CAAK,EAChBA,EAAAA,IAACzB,GAAM,QAAQ,SACb,eAAC,KAAA,CAAI,SAAAsB,EAAM,QAAQ,CAAA,CACrB,EACAE,EAAAA,KAACxB,EAAA,CAAM,QAAQ,UACb,SAAA,CAAAyB,EAAAA,IAAC,MAAG,SAAA,YAAA,CAAU,EACdA,EAAAA,IAAC,OAAA,CAAM,SAAAH,EAAM,KAAA,CAAM,CAAA,CAAA,CACrB,CAAA,EACF,EAZOG,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CAcb","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,2 @@
1
+ import{j as n,c,c1 as u,ak as C,Y as w,av as x,l as d,m as f}from"./app-DiXzpOyg.js";import{a as g}from"./CEmtkty-.chunk.js";import{D as p}from"./BdHxGaRy.chunk.js";import{D as b}from"./vuoBilPQ.chunk.js";import{R as v,s as j}from"./Bnt14Hw8.chunk.js";import{R as s}from"./cvX-F_mx.chunk.js";import{F as S}from"./CU5Dd7rS.chunk.js";var l=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(l||{});function P(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z",clipRule:"evenodd"})})}function H(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z",fill:"currentColor"})})}function T(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z",fill:"currentColor"})})}function A(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39",fill:"currentColor"})})}function D(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z",fill:"currentColor"})})}function M(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z",fill:"currentColor"})})}function F(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z",fill:"currentColor"})})}function N(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z",fill:"currentColor"})})}const o="shared.shared-utils",R={mapRatingToClass(e){return e?(t=>{switch(!0){case t<32:return"bg-purple";case t<48:return"bg-green";case t<80:return"bg-blue";case t<96:return"bg-red";case t<128:return"bg-pink";case t>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case u.HostedLibrary:case u.CustomLibrary:return e.name;case u.Exchange:return c.getPhrase(o,"exchange");case u.Workspace:return c.getPhrase(o,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case u.HostedLibrary:case u.CustomLibrary:return"bg-blue";case u.Exchange:return"bg-green";case u.Workspace:default:return"bg-red"}},isInteractive(e){var r,t;return!!((t=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&t.length)},mapTypeToSvg(e){let t={[s.Pdf]:A,[s.Image]:S,[s.PowerPoint]:D,[s.Document]:F,[s.Excel]:T,[s.Zip]:N,[s.File]:M}[e];return t||(t=C),t},mapTypeToClass(e){switch(e){case s.Pdf:return"icon-red";case s.Image:return"icon-purple";case s.Document:return"icon-blue";case s.Excel:return"icon-green";case s.PowerPoint:return"icon-orange";case s.Zip:return"icon-teal";case s.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case s.Pdf:return c.getPhrase(o,"pdf");case s.Image:return c.getPhrase(o,"image");case s.Document:return c.getPhrase(o,"document");case s.Excel:return c.getPhrase(o,"spreadsheet");case s.PowerPoint:return c.getPhrase(o,"presentation");case s.Zip:return c.getPhrase(o,"zipArchive");case s.File:return c.getPhrase(o,"file");default:return""}}},q="shared.badges",E=c.encloseNamespace(q);var V=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(V||{});const k={xs:f.ExtraSmall,sm:f.Small,std:f.Standard,lg:f.Large},L={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function $(e){switch(e){case g.Published:case p.Published:return"bg-success";case g.Archived:case g.Rejected:case p.Archived:return"bg-danger";case g.Draft:case p.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case g.Pending:case g.Processing:return"bg-warning"}}function I(e){return e.includes(l.Streamable)?`px-1 text-nowrap d-flex align-items-center ${j.streamable}`:e.includes(l.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(l.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function Z(e,r,t){const i="badge",h=L[t];let a="";if(e==="duration-approximate"&&(a="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(a="duration-badge"),e==="interactive"&&(a="interactive-badge"),e==="rating"&&(a=`rating-badge text-shadow ${R.mapRatingToClass(r.value)}`),e==="production-year"&&(a="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${$(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${h}`;if(e==="count"&&(a="count-badge px-1 rounded"),e==="restriction"){const m=v.mapRestrictionToClass(r.restrictions);return x("restriction-badge rounded-pill px-2 d-flex align-items-center",m)}return e==="source"&&(a=I(r)),x(i,a)}function W(e,r,t){if(e==="interactive")return E("interactive");if(e==="duration-approximate")return b.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return b.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return n.jsx(d,{svg:H});if(e==="status")return typeof r=="number"?g[r]:r;if(e==="trending")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:P,size:k[t]}),n.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return n.jsxs(n.Fragment,{children:[n.jsx(d,{svg:v.mapRestrictionToSvg(r.restrictions)}),n.jsx("span",{children:v.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const i=r;return i.includes(l.Streamable)?"streamable":i.includes(l.MoviesAndTv)?"movies + tv":i.includes(l.Exchange)?"exchange":i.includes(l.Twig)?"twig":"-"}}function Y(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function _(e,r){var t,i;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((t=r==null?void 0:r.data)!=null&&t.length):e==="captions"?!!(r!=null&&r.length)||!!((i=r==null?void 0:r.data)!=null&&i.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function y(e){const{type:r,data:t,size:i="std"}=e;if(!_(r,t))return n.jsx(n.Fragment,{});let h=Z(r,t,i);h=`${h} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const a=W(r,t,i),m=Y(r,t),z=e.inline&&"d-inline-block";return m?n.jsx("div",{className:"badge-wrapper d-inline",children:n.jsx(w,{...m,spanHack:!0,spanHackClassName:z,children:n.jsx("span",{className:h,children:a})})}):n.jsx("span",{className:`${h} badge-wrapper`,children:a})}export{y as B,H as C,R as V,V as a};
2
+ //# sourceMappingURL=QlJI4d4R.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QlJI4d4R.chunk.js","sources":["../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize} = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string} = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}"],"names":["VideoSource","TrendingSvg","props","jsx","CloseCaptionBadgeSvg","FileExcelSvg","FilePdfSvg","FilePptSvg","FileSvg","FileWordSvg","FileZipSvg","lang","VideoDetailsHelper","ratingValue","rating","library","hasLite","MasterObjectTypes","LanguageService","sourceType","video","_b","_a","type","mappedType","ResourceFileType","FileImgSvg","FolderSvg","namespace","getPhrase","BadgeType","badgeSvgContainerSizeMap","SvgContainerSize","badgeSizeClassNameMap","getStatusClassName","status","CurationStatus","DashboardStatus","getSourceClassName","sources","styles","getClassName","data","size","baseClass","sizeClass","typeClass","restrictionBgClass","RestrictionHelper","classNames","getBadgeContent","DurationHelper","SvgContainer","jsxs","Fragment","getTooltip","hasData","Badge","className","content","tooltip","spanHackClassName","Tooltip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as t,l as v,m as c}from"./app-DiXzpOyg.js";import{g as C,B as j}from"./BBnDr_iy.chunk.js";import{F as _}from"./CU5Dd7rS.chunk.js";function k(a){return t.jsx("svg",{...a,children:t.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z",clipRule:"evenodd"})})}function f(a){return t.jsx("svg",{...a,viewBox:"0 0 24 21",children:t.jsx("path",{d:"M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5",fill:"currentColor"})})}function d(a){return t.jsx("svg",{...a,children:t.jsx("path",{fill:"currentColor",d:"M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17"})})}const F="_baseFallbackContainer_14tjv_1",m="_svgFallbackContainer_14tjv_1",S="_subjectFallbackContainer_14tjv_9",g="_subjectFallbackContainerSmall_14tjv_18",x="_subjectFallbackContainerLarge_14tjv_21",h="_seriesItemFallback_14tjv_24",$="_playlistItemFallback_14tjv_24",z="_playlistFallback_14tjv_28",L="_posterFallback_14tjv_29",M="_subjectFallback_14tjv_9",N="_fallbackThumbnailImage_14tjv_47",P="_videoFallback_14tjv_55",A="_folderFallback_14tjv_56",l={baseFallbackContainer:F,svgFallbackContainer:m,subjectFallbackContainer:S,subjectFallbackContainerSmall:g,subjectFallbackContainerLarge:x,seriesItemFallback:h,playlistItemFallback:$,playlistFallback:z,posterFallback:L,subjectFallback:M,fallbackThumbnailImage:N,videoFallback:P,folderFallback:A};var B=(a=>(a[a.Playlist=0]="Playlist",a[a.PlaylistThumbnail=1]="PlaylistThumbnail",a[a.Series=2]="Series",a[a.SeriesThumbnail=3]="SeriesThumbnail",a[a.Subject=4]="Subject",a[a.TallSubject=5]="TallSubject",a[a.Video=6]="Video",a[a.Folder=7]="Folder",a))(B||{});function H(a,e,n){if(e===4){const s=n===0?l.subjectFallbackContainerLarge:l.subjectFallbackContainerSmall;return`${l.subjectFallbackContainer} ${s}`}return a===0?e===3||e===1?`${l.svgFallbackContainer} rounded-3`:l.svgFallbackContainer:l.baseFallbackContainer}function R(a){return a===3?l.seriesItemFallback:a===1?l.playlistItemFallback:a===0?l.playlistFallback:a===2||a===5?l.posterFallback:a===4?`${l.subjectFallback} svg-container d-inline-block`:""}function V(a){return a===3||a===1?k:a===0?f:a===2?d:a===4||a===5?_:null}function E(a){return a===4?c.ExtraLarge:c.Standard}I.defaultProps={mediaType:0,containerClassSize:0};function I(a){const{type:e,mediaType:n,extraClasses:s,containerClassSize:o}=a;if(e===6)return t.jsx("div",{className:`${l.videoFallback} ${a.extraClasses} bg-light-blue`});if(e===7)return t.jsx("div",{className:`${l.folderFallback} ${a.extraClasses} ${C(a.name,j)}`});const b=R(e),r=V(e),u=E(e);let i=`${H(n,e,o)}`;return s&&(i+=` ${a.extraClasses}`),t.jsx("div",{className:i,children:n===0?t.jsx(v,{svg:r,className:`${b} ${a.svgContainerClassName??""}`,tagName:"div",size:u}):t.jsx("div",{className:l.fallbackThumbnailImage,style:{backgroundImage:`url('${r}')`}})})}export{I,k as P,d as S,B as a};
2
+ //# sourceMappingURL=ShERxFU5.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShERxFU5.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/PlaySvg.tsx","../../../../libs/shared/src/images/svg/objects/ImageSvg.tsx","../../../../libs/shared/src/images/svg/objects/SeriesSvg.tsx","../../../../libs/shared/src/components/image/ImageFallback.tsx"],"sourcesContent":["import React from 'react';\n\nexport function PlaySvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ImageSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props} viewBox='0 0 24 21'>\n <path\n d='M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function SeriesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { PlaySvg } from 'libs/shared/images/svg/actions/PlaySvg';\nimport { FileImgSvg } from 'libs/shared/images/svg/objects/FileImgSvg';\nimport { ImageSvg } from 'libs/shared/images/svg/objects/ImageSvg';\nimport { SeriesSvg } from 'libs/shared/images/svg/objects/SeriesSvg';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nimport styles from './image-fallback.module.scss';\n\nexport enum ImageFallbackType {\n Playlist,\n PlaylistThumbnail,\n Series,\n SeriesThumbnail,\n Subject,\n TallSubject,\n Video,\n Folder\n}\n\nexport enum ImageFallbackMediaType {\n Svg,\n Image\n}\n\nexport enum ContainerClassSize {\n Large,\n Small\n}\n\nfunction getContainerClass(\n type: ImageFallbackMediaType,\n objectType: ImageFallbackType,\n containerClassSize: ContainerClassSize\n): string {\n if (objectType === ImageFallbackType.Subject) {\n const containerSizeClass = containerClassSize === ContainerClassSize.Large\n ? styles.subjectFallbackContainerLarge\n : styles.subjectFallbackContainerSmall;\n\n return `${styles.subjectFallbackContainer} ${containerSizeClass}`;\n }\n\n if (type === ImageFallbackMediaType.Svg) {\n if (objectType === ImageFallbackType.SeriesThumbnail || objectType === ImageFallbackType.PlaylistThumbnail)\n return `${styles.svgFallbackContainer} rounded-3`;\n \n return styles.svgFallbackContainer;\n }\n\n return styles.baseFallbackContainer;\n}\n\nfunction getClassByType(type: ImageFallbackType): string {\n if (type === ImageFallbackType.SeriesThumbnail)\n return styles.seriesItemFallback;\n\n if (type === ImageFallbackType.PlaylistThumbnail)\n return styles.playlistItemFallback;\n\n if (type === ImageFallbackType.Playlist)\n return styles.playlistFallback;\n\n if (type === ImageFallbackType.Series || type === ImageFallbackType.TallSubject)\n return styles.posterFallback;\n\n if (type === ImageFallbackType.Subject)\n return `${styles.subjectFallback} svg-container d-inline-block`;\n\n return '';\n}\n\nfunction getMedia(type: ImageFallbackType) {\n if (type === ImageFallbackType.SeriesThumbnail || type === ImageFallbackType.PlaylistThumbnail)\n return PlaySvg;\n\n if (type === ImageFallbackType.Playlist)\n return ImageSvg;\n\n if (type === ImageFallbackType.Series)\n return SeriesSvg;\n\n if (type === ImageFallbackType.Subject || type === ImageFallbackType.TallSubject)\n return FileImgSvg;\n\n return null;\n}\n\nfunction getSize(type: ImageFallbackType): SvgContainerSize {\n if (type === ImageFallbackType.Subject)\n return SvgContainerSize.ExtraLarge;\n\n return SvgContainerSize.Standard;\n}\n\ninterface ImageFallbackProps {\n type: ImageFallbackType;\n mediaType?: ImageFallbackMediaType;\n extraClasses?: string;\n svgContainerClassName?: string;\n name?: string;\n containerClassSize?: ContainerClassSize\n}\n\nImageFallback.defaultProps = {\n mediaType: ImageFallbackMediaType.Svg,\n containerClassSize: ContainerClassSize.Large\n};\n\nexport function ImageFallback(props: ImageFallbackProps): JSX.Element {\n const { type, mediaType, extraClasses, containerClassSize } = props;\n\n if (type === ImageFallbackType.Video)\n return <div className={`${styles.videoFallback} ${props.extraClasses} bg-light-blue`} />;\n\n if (type === ImageFallbackType.Folder)\n return <div className={`${styles.folderFallback} ${props.extraClasses} ${getBgColorClass(props.name, BG_COLOUR_CLASS_NAMES)}`} />;\n\n const typeClass = getClassByType(type);\n const media = getMedia(type);\n const size = getSize(type);\n\n let className = `${getContainerClass(mediaType, type, containerClassSize)}`;\n\n if (extraClasses)\n className += ` ${props.extraClasses}`;\n\n return (\n <div className={className}>\n {mediaType === ImageFallbackMediaType.Svg\n ? (\n <SvgContainer\n svg={media}\n className={`${typeClass} ${props.svgContainerClassName ?? ''}`}\n tagName='div'\n size={size}\n />\n ) : (\n <div className={styles.fallbackThumbnailImage} style={{ backgroundImage: `url('${media}')` }} />\n )\n }\n </div>\n );\n}"],"names":["PlaySvg","props","jsx","ImageSvg","SeriesSvg","ImageFallbackType","getContainerClass","type","objectType","containerClassSize","containerSizeClass","styles","getClassByType","getMedia","FileImgSvg","getSize","SvgContainerSize","ImageFallback","mediaType","extraClasses","getBgColorClass","BG_COLOUR_CLASS_NAMES","typeClass","media","size","className","SvgContainer"],"mappings":"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"}