@clickview/lite 0.50.0 → 0.50.1-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{6846-lite-db93efd058.chunk.css → 1850-lite-dca6b9e86d.chunk.css} +1 -0
  3. package/dist/css/{2137-lite-6d16d5d7c2.chunk.css → 2137-lite-7045732fc8.chunk.css} +2 -2
  4. package/dist/css/{2795-lite-1e800fdd04.chunk.css → 2795-lite-1641e6fbf9.chunk.css} +2 -2
  5. package/dist/css/{458-lite-ecaf4729d3.chunk.css → 3515-lite-c8a3139b8b.chunk.css} +2 -2
  6. package/dist/css/{8960-lite-a80ad92ea7.chunk.css → 4489-lite-7d5d204d0c.chunk.css} +8 -7
  7. package/dist/css/{3515-lite-ecaf4729d3.chunk.css → 458-lite-c8a3139b8b.chunk.css} +2 -2
  8. package/dist/css/{5242-lite-512783e2fb.chunk.css → 5242-lite-58cdcd1ec4.chunk.css} +2 -2
  9. package/dist/css/{5446-lite-b68e159c6c.chunk.css → 5446-lite-ae2395342f.chunk.css} +2 -2
  10. package/dist/css/6102-lite-6e94a699ed.chunk.css +39 -0
  11. package/dist/css/{1437-lite-b847c9e2b6.chunk.css → 6415-lite-707657102b.chunk.css} +1 -1
  12. package/dist/css/{9839-lite-53b02845a4.chunk.css → 6850-lite-769c93cb9e.chunk.css} +16 -16
  13. package/dist/css/{7987-lite-7006eb4ded.chunk.css → 7987-lite-94679244a2.chunk.css} +2 -2
  14. package/dist/css/{355-lite-e474c8ddce.chunk.css → 8192-lite-8721e2ed68.chunk.css} +8 -7
  15. package/dist/css/{8316-lite-f60e236048.chunk.css → 8316-lite-9083a6565c.chunk.css} +2 -2
  16. package/dist/css/{9417-lite-f60e236048.chunk.css → 9417-lite-9083a6565c.chunk.css} +2 -2
  17. package/dist/css/{9620-lite-b202aa1d5c.chunk.css → 9620-lite-d77e9ad59b.chunk.css} +1 -1
  18. package/dist/css/{7187-lite-db93efd058.chunk.css → 9818-lite-dca6b9e86d.chunk.css} +1 -0
  19. package/dist/css/{8139-lite-5511af77bf.chunk.css → 986-lite-3bf6e93049.chunk.css} +1 -0
  20. package/dist/css/{lite-app-cf9b57ee91.css → lite-app-28b7b96628.css} +8 -6
  21. package/dist/languages/en.json +1 -1
  22. package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js → 1080-362271a654-lite.chunk.js} +2 -2
  23. package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js.map → 1080-362271a654-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/1169-3df974a8eb-lite.chunk.js +2 -0
  25. package/dist/scripts/1169-3df974a8eb-lite.chunk.js.map +1 -0
  26. package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js → 1285-818f4ed377-lite.chunk.js} +1 -1
  27. package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js.map → 1285-818f4ed377-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/1313-455608bc46-lite.chunk.js +2 -0
  29. package/dist/scripts/1313-455608bc46-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js → 1379-3a1ba4b4d9-lite.chunk.js} +3 -3
  31. package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.map → 1379-3a1ba4b4d9-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{1518-be314d1248-lite.chunk.js → 1518-b808d8043f-lite.chunk.js} +2 -2
  33. package/dist/scripts/1518-b808d8043f-lite.chunk.js.map +1 -0
  34. package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js → 1617-e1735deb2a-lite.chunk.js} +1 -1
  35. package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js.map → 1617-e1735deb2a-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/1672-672f298d82-lite.chunk.js +3 -0
  37. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +1 -0
  38. package/dist/scripts/1750-a525866169-lite.chunk.js +2 -0
  39. package/dist/scripts/1750-a525866169-lite.chunk.js.map +1 -0
  40. package/dist/scripts/1818-74a3d26afd-lite.chunk.js +2 -0
  41. package/dist/scripts/1818-74a3d26afd-lite.chunk.js.map +1 -0
  42. package/dist/scripts/1820-68114ca994-lite.chunk.js +2 -0
  43. package/dist/scripts/1820-68114ca994-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js → 1863-618c9bd7af-lite.chunk.js} +1 -1
  45. package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js.map → 1863-618c9bd7af-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/1905-af9a8f8824-lite.chunk.js +2 -0
  47. package/dist/scripts/1905-af9a8f8824-lite.chunk.js.map +1 -0
  48. package/dist/scripts/2004-4e2d98041c-lite.chunk.js +3 -0
  49. package/dist/scripts/2004-4e2d98041c-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{209-148abe2aa1-lite.chunk.js → 209-4a54845452-lite.chunk.js} +2 -2
  51. package/dist/scripts/209-4a54845452-lite.chunk.js.map +1 -0
  52. package/dist/scripts/2137-093f479ff9-lite.chunk.js +2 -0
  53. package/dist/scripts/2137-093f479ff9-lite.chunk.js.map +1 -0
  54. package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js +2 -0
  55. package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js.map +1 -0
  56. package/dist/scripts/2703-64f709f0d0-lite.chunk.js +2 -0
  57. package/dist/scripts/2703-64f709f0d0-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js → 2795-0616748349-lite.chunk.js} +1 -1
  59. package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js.map → 2795-0616748349-lite.chunk.js.map} +1 -1
  60. package/dist/scripts/2877-40bb796d59-lite.chunk.js +2 -0
  61. package/dist/scripts/2877-40bb796d59-lite.chunk.js.map +1 -0
  62. package/dist/scripts/3020-2b9042238c-lite.chunk.js +2 -0
  63. package/dist/scripts/3020-2b9042238c-lite.chunk.js.map +1 -0
  64. package/dist/scripts/{3070-47e46e0d89-lite.chunk.js → 3070-fb8eb47716-lite.chunk.js} +1 -1
  65. package/dist/scripts/{3070-47e46e0d89-lite.chunk.js.map → 3070-fb8eb47716-lite.chunk.js.map} +1 -1
  66. package/dist/scripts/3231-65bbddef35-lite.chunk.js +2 -0
  67. package/dist/scripts/3231-65bbddef35-lite.chunk.js.map +1 -0
  68. package/dist/scripts/3403-12c460d3f6-lite.chunk.js +2 -0
  69. package/dist/scripts/3403-12c460d3f6-lite.chunk.js.map +1 -0
  70. package/dist/scripts/3515-4de2fd7070-lite.chunk.js +2 -0
  71. package/dist/scripts/3515-4de2fd7070-lite.chunk.js.map +1 -0
  72. package/dist/scripts/3645-72ca9f63df-lite.chunk.js +3 -0
  73. package/dist/scripts/3645-72ca9f63df-lite.chunk.js.map +1 -0
  74. package/dist/scripts/3895-a54621a8c4-lite.chunk.js +2 -0
  75. package/dist/scripts/3895-a54621a8c4-lite.chunk.js.map +1 -0
  76. package/dist/scripts/458-35c635a2ce-lite.chunk.js +2 -0
  77. package/dist/scripts/458-35c635a2ce-lite.chunk.js.map +1 -0
  78. package/dist/scripts/4690-d77e912b9b-lite.chunk.js +2 -0
  79. package/dist/scripts/4690-d77e912b9b-lite.chunk.js.map +1 -0
  80. package/dist/scripts/{4718-6df54d3039-lite.chunk.js → 4718-2b58aa560d-lite.chunk.js} +1 -1
  81. package/dist/scripts/{4718-6df54d3039-lite.chunk.js.map → 4718-2b58aa560d-lite.chunk.js.map} +1 -1
  82. package/dist/scripts/5143-b6896dad98-lite.chunk.js +2 -0
  83. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +1 -0
  84. package/dist/scripts/5229-036b4d7a22-lite.chunk.js +2 -0
  85. package/dist/scripts/5229-036b4d7a22-lite.chunk.js.map +1 -0
  86. package/dist/scripts/{5242-e8f004818c-lite.chunk.js → 5242-2d752ff85e-lite.chunk.js} +1 -1
  87. package/dist/scripts/{5242-e8f004818c-lite.chunk.js.map → 5242-2d752ff85e-lite.chunk.js.map} +1 -1
  88. package/dist/scripts/5385-57d7021be7-lite.chunk.js +2 -0
  89. package/dist/scripts/5385-57d7021be7-lite.chunk.js.map +1 -0
  90. package/dist/scripts/{5446-de55c3df38-lite.chunk.js → 5446-1ef1639ef6-lite.chunk.js} +1 -1
  91. package/dist/scripts/{5446-de55c3df38-lite.chunk.js.map → 5446-1ef1639ef6-lite.chunk.js.map} +1 -1
  92. package/dist/scripts/5595-f33ed220ce-lite.chunk.js +2 -0
  93. package/dist/scripts/5595-f33ed220ce-lite.chunk.js.map +1 -0
  94. package/dist/scripts/{5936-4cac311002-lite.chunk.js → 5936-1d99b03e7b-lite.chunk.js} +2 -2
  95. package/dist/scripts/5936-1d99b03e7b-lite.chunk.js.map +1 -0
  96. package/dist/scripts/5940-511beff2ee-lite.chunk.js +2 -0
  97. package/dist/scripts/5940-511beff2ee-lite.chunk.js.map +1 -0
  98. package/dist/scripts/{610-27e5444f01-lite.chunk.js → 610-6dbeb5cd21-lite.chunk.js} +2 -2
  99. package/dist/scripts/610-6dbeb5cd21-lite.chunk.js.map +1 -0
  100. package/dist/scripts/6102-f1851eca08-lite.chunk.js +3 -0
  101. package/dist/scripts/6102-f1851eca08-lite.chunk.js.map +1 -0
  102. package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js +2 -0
  103. package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js.map +1 -0
  104. package/dist/scripts/{624-010454cb12-lite.chunk.js → 624-7df7efd486-lite.chunk.js} +3 -3
  105. package/dist/scripts/{624-010454cb12-lite.chunk.js.map → 624-7df7efd486-lite.chunk.js.map} +1 -1
  106. package/dist/scripts/6263-d74b5b3529-lite.chunk.js +2 -0
  107. package/dist/scripts/6263-d74b5b3529-lite.chunk.js.map +1 -0
  108. package/dist/scripts/{6274-46a7af05d7-lite.chunk.js → 6274-15e61b83dc-lite.chunk.js} +1 -1
  109. package/dist/scripts/{6274-46a7af05d7-lite.chunk.js.map → 6274-15e61b83dc-lite.chunk.js.map} +1 -1
  110. package/dist/scripts/6415-9d8b88c713-lite.chunk.js +2 -0
  111. package/dist/scripts/6415-9d8b88c713-lite.chunk.js.map +1 -0
  112. package/dist/scripts/{6433-fe9efef305-lite.chunk.js → 6433-8dd152d999-lite.chunk.js} +2 -2
  113. package/dist/scripts/{6433-fe9efef305-lite.chunk.js.map → 6433-8dd152d999-lite.chunk.js.map} +1 -1
  114. package/dist/scripts/6470-6216086d63-lite.chunk.js +2 -0
  115. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +1 -0
  116. package/dist/scripts/6531-597262a181-lite.chunk.js +2 -0
  117. package/dist/scripts/6531-597262a181-lite.chunk.js.map +1 -0
  118. package/dist/scripts/6572-4dda098022-lite.chunk.js +2 -0
  119. package/dist/scripts/6572-4dda098022-lite.chunk.js.map +1 -0
  120. package/dist/scripts/6587-08d5d85b71-lite.chunk.js +2 -0
  121. package/dist/scripts/6587-08d5d85b71-lite.chunk.js.map +1 -0
  122. package/dist/scripts/671-36d34edbf3-lite.chunk.js +2 -0
  123. package/dist/scripts/671-36d34edbf3-lite.chunk.js.map +1 -0
  124. package/dist/scripts/{6725-23b09d47ae-lite.chunk.js → 6725-20b1e8b1d2-lite.chunk.js} +2 -2
  125. package/dist/scripts/6725-20b1e8b1d2-lite.chunk.js.map +1 -0
  126. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +3 -0
  127. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +1 -0
  128. package/dist/scripts/6752-1a9837a40f-lite.chunk.js +2 -0
  129. package/dist/scripts/6752-1a9837a40f-lite.chunk.js.map +1 -0
  130. package/dist/scripts/6850-8770bfeefb-lite.chunk.js +3 -0
  131. package/dist/scripts/6850-8770bfeefb-lite.chunk.js.map +1 -0
  132. package/dist/scripts/{6863-f04753549c-lite.chunk.js → 6863-b606b8b1e7-lite.chunk.js} +2 -2
  133. package/dist/scripts/{6863-f04753549c-lite.chunk.js.map → 6863-b606b8b1e7-lite.chunk.js.map} +1 -1
  134. package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js → 6930-1a681d42fd-lite.chunk.js} +1 -1
  135. package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js.map → 6930-1a681d42fd-lite.chunk.js.map} +1 -1
  136. package/dist/scripts/6948-84a5f8d76f-lite.chunk.js +2 -0
  137. package/dist/scripts/6948-84a5f8d76f-lite.chunk.js.map +1 -0
  138. package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js +2 -0
  139. package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js.map +1 -0
  140. package/dist/scripts/714-9ab1608522-lite.chunk.js +2 -0
  141. package/dist/scripts/714-9ab1608522-lite.chunk.js.map +1 -0
  142. package/dist/scripts/7533-e079b2af18-lite.chunk.js +2 -0
  143. package/dist/scripts/7533-e079b2af18-lite.chunk.js.map +1 -0
  144. package/dist/scripts/7715-2146591c84-lite.chunk.js +2 -0
  145. package/dist/scripts/7715-2146591c84-lite.chunk.js.map +1 -0
  146. package/dist/scripts/7855-92e790c403-lite.chunk.js +2 -0
  147. package/dist/scripts/7855-92e790c403-lite.chunk.js.map +1 -0
  148. package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js → 7987-db0037709c-lite.chunk.js} +1 -1
  149. package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js.map → 7987-db0037709c-lite.chunk.js.map} +1 -1
  150. package/dist/scripts/{8046-1943b1d32b-lite.chunk.js → 8046-836d3b8e04-lite.chunk.js} +1 -1
  151. package/dist/scripts/{8046-1943b1d32b-lite.chunk.js.map → 8046-836d3b8e04-lite.chunk.js.map} +1 -1
  152. package/dist/scripts/{2877-db49c758e9-lite.chunk.js → 8157-521ad0f974-lite.chunk.js} +2 -2
  153. package/dist/scripts/{2877-db49c758e9-lite.chunk.js.map → 8157-521ad0f974-lite.chunk.js.map} +1 -1
  154. package/dist/scripts/8192-ec320614d9-lite.chunk.js +2 -0
  155. package/dist/scripts/8192-ec320614d9-lite.chunk.js.map +1 -0
  156. package/dist/scripts/8218-f3b81c7287-lite.chunk.js +2 -0
  157. package/dist/scripts/8218-f3b81c7287-lite.chunk.js.map +1 -0
  158. package/dist/scripts/8316-dad1824a5f-lite.chunk.js +2 -0
  159. package/dist/scripts/8316-dad1824a5f-lite.chunk.js.map +1 -0
  160. package/dist/scripts/8354-e30261b594-lite.chunk.js +2 -0
  161. package/dist/scripts/8354-e30261b594-lite.chunk.js.map +1 -0
  162. package/dist/scripts/8772-42c022effc-lite.chunk.js +2 -0
  163. package/dist/scripts/8772-42c022effc-lite.chunk.js.map +1 -0
  164. package/dist/scripts/8800-c88fefeace-lite.chunk.js +2 -0
  165. package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +1 -0
  166. package/dist/scripts/8830-452a71751f-lite.chunk.js +2 -0
  167. package/dist/scripts/8830-452a71751f-lite.chunk.js.map +1 -0
  168. package/dist/scripts/8987-32190552fa-lite.chunk.js +2 -0
  169. package/dist/scripts/8987-32190552fa-lite.chunk.js.map +1 -0
  170. package/dist/scripts/9016-c359251f82-lite.chunk.js +3 -0
  171. package/dist/scripts/9016-c359251f82-lite.chunk.js.map +1 -0
  172. package/dist/scripts/{9226-4cff4347a9-lite.chunk.js → 9226-c236c0eeb1-lite.chunk.js} +2 -2
  173. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +1 -0
  174. package/dist/scripts/9230-d731020b59-lite.chunk.js +3 -0
  175. package/dist/scripts/9230-d731020b59-lite.chunk.js.map +1 -0
  176. package/dist/scripts/{9395-8ad1f28459-lite.chunk.js → 9395-9175b9efcc-lite.chunk.js} +3 -3
  177. package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.map → 9395-9175b9efcc-lite.chunk.js.map} +1 -1
  178. package/dist/scripts/9417-70c6489c67-lite.chunk.js +2 -0
  179. package/dist/scripts/9417-70c6489c67-lite.chunk.js.map +1 -0
  180. package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js → 9478-9b168ddc36-lite.chunk.js} +3 -3
  181. package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.map → 9478-9b168ddc36-lite.chunk.js.map} +1 -1
  182. package/dist/scripts/{953-b56e03bb19-lite.chunk.js → 953-85fc5f8dbf-lite.chunk.js} +3 -3
  183. package/dist/scripts/{953-b56e03bb19-lite.chunk.js.map → 953-85fc5f8dbf-lite.chunk.js.map} +1 -1
  184. package/dist/scripts/9620-630f9e6344-lite.chunk.js +3 -0
  185. package/dist/scripts/9620-630f9e6344-lite.chunk.js.map +1 -0
  186. package/dist/scripts/9818-f63bdbbac4-lite.chunk.js +2 -0
  187. package/dist/scripts/9818-f63bdbbac4-lite.chunk.js.map +1 -0
  188. package/dist/scripts/9829-097052a2c6-lite.chunk.js +2 -0
  189. package/dist/scripts/9829-097052a2c6-lite.chunk.js.map +1 -0
  190. package/dist/scripts/{9843-a3fe640adb-lite.chunk.js → 9843-ec032b6388-lite.chunk.js} +2 -2
  191. package/dist/scripts/9843-ec032b6388-lite.chunk.js.map +1 -0
  192. package/dist/scripts/986-ea6d103647-lite.chunk.js +3 -0
  193. package/dist/scripts/986-ea6d103647-lite.chunk.js.map +1 -0
  194. package/dist/scripts/bundle-d20cb66d1a.min.js +3 -0
  195. package/dist/scripts/bundle-d20cb66d1a.min.js.map +1 -0
  196. package/package.json +1 -1
  197. package/dist/css/6102-lite-4c795e86b6.chunk.css +0 -39
  198. package/dist/scripts/1169-5dc443f0f1-lite.chunk.js +0 -2
  199. package/dist/scripts/1169-5dc443f0f1-lite.chunk.js.map +0 -1
  200. package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js +0 -2
  201. package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js.map +0 -1
  202. package/dist/scripts/1437-5b1889cf0d-lite.chunk.js +0 -2
  203. package/dist/scripts/1437-5b1889cf0d-lite.chunk.js.map +0 -1
  204. package/dist/scripts/1518-be314d1248-lite.chunk.js.map +0 -1
  205. package/dist/scripts/1672-e792631d8e-lite.chunk.js +0 -3
  206. package/dist/scripts/1672-e792631d8e-lite.chunk.js.map +0 -1
  207. package/dist/scripts/1750-b8e1fca13a-lite.chunk.js +0 -2
  208. package/dist/scripts/1750-b8e1fca13a-lite.chunk.js.map +0 -1
  209. package/dist/scripts/1818-ca1e552c00-lite.chunk.js +0 -2
  210. package/dist/scripts/1818-ca1e552c00-lite.chunk.js.map +0 -1
  211. package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js +0 -2
  212. package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js.map +0 -1
  213. package/dist/scripts/1905-a01549439f-lite.chunk.js +0 -2
  214. package/dist/scripts/1905-a01549439f-lite.chunk.js.map +0 -1
  215. package/dist/scripts/209-148abe2aa1-lite.chunk.js.map +0 -1
  216. package/dist/scripts/2137-a993d13a9a-lite.chunk.js +0 -2
  217. package/dist/scripts/2137-a993d13a9a-lite.chunk.js.map +0 -1
  218. package/dist/scripts/2199-22d8809e5e-lite.chunk.js +0 -2
  219. package/dist/scripts/2199-22d8809e5e-lite.chunk.js.map +0 -1
  220. package/dist/scripts/2703-aebc378d71-lite.chunk.js +0 -2
  221. package/dist/scripts/2703-aebc378d71-lite.chunk.js.map +0 -1
  222. package/dist/scripts/3020-9f647705a0-lite.chunk.js +0 -2
  223. package/dist/scripts/3020-9f647705a0-lite.chunk.js.map +0 -1
  224. package/dist/scripts/3231-7e9965499c-lite.chunk.js +0 -2
  225. package/dist/scripts/3231-7e9965499c-lite.chunk.js.map +0 -1
  226. package/dist/scripts/3355-e65e88adaa-lite.chunk.js +0 -2
  227. package/dist/scripts/3355-e65e88adaa-lite.chunk.js.map +0 -1
  228. package/dist/scripts/3403-a2111c4df8-lite.chunk.js +0 -2
  229. package/dist/scripts/3403-a2111c4df8-lite.chunk.js.map +0 -1
  230. package/dist/scripts/3515-925a7caeac-lite.chunk.js +0 -2
  231. package/dist/scripts/3515-925a7caeac-lite.chunk.js.map +0 -1
  232. package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js +0 -2
  233. package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js.map +0 -1
  234. package/dist/scripts/3645-720267b321-lite.chunk.js +0 -3
  235. package/dist/scripts/3645-720267b321-lite.chunk.js.map +0 -1
  236. package/dist/scripts/3895-f7f4926229-lite.chunk.js +0 -2
  237. package/dist/scripts/3895-f7f4926229-lite.chunk.js.map +0 -1
  238. package/dist/scripts/458-b99f17e0a1-lite.chunk.js +0 -2
  239. package/dist/scripts/458-b99f17e0a1-lite.chunk.js.map +0 -1
  240. package/dist/scripts/4690-774e3c0e2a-lite.chunk.js +0 -2
  241. package/dist/scripts/4690-774e3c0e2a-lite.chunk.js.map +0 -1
  242. package/dist/scripts/5143-b77fb12d6a-lite.chunk.js +0 -2
  243. package/dist/scripts/5143-b77fb12d6a-lite.chunk.js.map +0 -1
  244. package/dist/scripts/5229-f683f705ab-lite.chunk.js +0 -2
  245. package/dist/scripts/5229-f683f705ab-lite.chunk.js.map +0 -1
  246. package/dist/scripts/5385-50d4828b70-lite.chunk.js +0 -2
  247. package/dist/scripts/5385-50d4828b70-lite.chunk.js.map +0 -1
  248. package/dist/scripts/5595-c622318cd2-lite.chunk.js +0 -2
  249. package/dist/scripts/5595-c622318cd2-lite.chunk.js.map +0 -1
  250. package/dist/scripts/5936-4cac311002-lite.chunk.js.map +0 -1
  251. package/dist/scripts/5940-d841fd31d8-lite.chunk.js +0 -2
  252. package/dist/scripts/5940-d841fd31d8-lite.chunk.js.map +0 -1
  253. package/dist/scripts/610-27e5444f01-lite.chunk.js.map +0 -1
  254. package/dist/scripts/6102-30960404a9-lite.chunk.js +0 -3
  255. package/dist/scripts/6102-30960404a9-lite.chunk.js.map +0 -1
  256. package/dist/scripts/6189-13009e2ba9-lite.chunk.js +0 -2
  257. package/dist/scripts/6189-13009e2ba9-lite.chunk.js.map +0 -1
  258. package/dist/scripts/6263-82ae071643-lite.chunk.js +0 -2
  259. package/dist/scripts/6263-82ae071643-lite.chunk.js.map +0 -1
  260. package/dist/scripts/6470-2cefcc8abd-lite.chunk.js +0 -2
  261. package/dist/scripts/6470-2cefcc8abd-lite.chunk.js.map +0 -1
  262. package/dist/scripts/6531-835c743f1b-lite.chunk.js +0 -2
  263. package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +0 -1
  264. package/dist/scripts/6572-0aa0696621-lite.chunk.js +0 -2
  265. package/dist/scripts/6572-0aa0696621-lite.chunk.js.map +0 -1
  266. package/dist/scripts/671-300e93ac50-lite.chunk.js +0 -2
  267. package/dist/scripts/671-300e93ac50-lite.chunk.js.map +0 -1
  268. package/dist/scripts/6725-23b09d47ae-lite.chunk.js.map +0 -1
  269. package/dist/scripts/6741-937ae1865f-lite.chunk.js +0 -3
  270. package/dist/scripts/6741-937ae1865f-lite.chunk.js.map +0 -1
  271. package/dist/scripts/6846-08b00decd8-lite.chunk.js +0 -2
  272. package/dist/scripts/6846-08b00decd8-lite.chunk.js.map +0 -1
  273. package/dist/scripts/6948-4ab91f77dc-lite.chunk.js +0 -2
  274. package/dist/scripts/6948-4ab91f77dc-lite.chunk.js.map +0 -1
  275. package/dist/scripts/7052-4c36846f80-lite.chunk.js +0 -3
  276. package/dist/scripts/7052-4c36846f80-lite.chunk.js.map +0 -1
  277. package/dist/scripts/7097-af8c032133-lite.chunk.js +0 -2
  278. package/dist/scripts/7097-af8c032133-lite.chunk.js.map +0 -1
  279. package/dist/scripts/714-2e52398bb7-lite.chunk.js +0 -2
  280. package/dist/scripts/714-2e52398bb7-lite.chunk.js.map +0 -1
  281. package/dist/scripts/7187-414ac79d42-lite.chunk.js +0 -2
  282. package/dist/scripts/7187-414ac79d42-lite.chunk.js.map +0 -1
  283. package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js +0 -2
  284. package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js.map +0 -1
  285. package/dist/scripts/7630-72099a7a26-lite.chunk.js +0 -2
  286. package/dist/scripts/7630-72099a7a26-lite.chunk.js.map +0 -1
  287. package/dist/scripts/7715-255bbe16ef-lite.chunk.js +0 -2
  288. package/dist/scripts/7715-255bbe16ef-lite.chunk.js.map +0 -1
  289. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +0 -2
  290. package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +0 -1
  291. package/dist/scripts/8085-cde67e66df-lite.chunk.js +0 -2
  292. package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +0 -1
  293. package/dist/scripts/8139-01ccbc0539-lite.chunk.js +0 -3
  294. package/dist/scripts/8139-01ccbc0539-lite.chunk.js.map +0 -1
  295. package/dist/scripts/8218-70b601169b-lite.chunk.js +0 -2
  296. package/dist/scripts/8218-70b601169b-lite.chunk.js.map +0 -1
  297. package/dist/scripts/8316-7ab8f108de-lite.chunk.js +0 -2
  298. package/dist/scripts/8316-7ab8f108de-lite.chunk.js.map +0 -1
  299. package/dist/scripts/8354-a03785518e-lite.chunk.js +0 -2
  300. package/dist/scripts/8354-a03785518e-lite.chunk.js.map +0 -1
  301. package/dist/scripts/8772-05879c5e99-lite.chunk.js +0 -2
  302. package/dist/scripts/8772-05879c5e99-lite.chunk.js.map +0 -1
  303. package/dist/scripts/8830-0d2766a50f-lite.chunk.js +0 -2
  304. package/dist/scripts/8830-0d2766a50f-lite.chunk.js.map +0 -1
  305. package/dist/scripts/8987-12841dd69c-lite.chunk.js +0 -2
  306. package/dist/scripts/8987-12841dd69c-lite.chunk.js.map +0 -1
  307. package/dist/scripts/9016-df37abbca9-lite.chunk.js +0 -3
  308. package/dist/scripts/9016-df37abbca9-lite.chunk.js.map +0 -1
  309. package/dist/scripts/9226-4cff4347a9-lite.chunk.js.map +0 -1
  310. package/dist/scripts/9230-c79353d3ee-lite.chunk.js +0 -3
  311. package/dist/scripts/9230-c79353d3ee-lite.chunk.js.map +0 -1
  312. package/dist/scripts/9417-7313907916-lite.chunk.js +0 -2
  313. package/dist/scripts/9417-7313907916-lite.chunk.js.map +0 -1
  314. package/dist/scripts/9620-8814c74837-lite.chunk.js +0 -3
  315. package/dist/scripts/9620-8814c74837-lite.chunk.js.map +0 -1
  316. package/dist/scripts/9839-5befd54d51-lite.chunk.js +0 -3
  317. package/dist/scripts/9839-5befd54d51-lite.chunk.js.map +0 -1
  318. package/dist/scripts/9843-a3fe640adb-lite.chunk.js.map +0 -1
  319. package/dist/scripts/bundle-48ad415564.min.js +0 -3
  320. package/dist/scripts/bundle-48ad415564.min.js.map +0 -1
  321. package/dist/css/{7422-lite-22ea72f8e3.chunk.css → 7422-lite-c999db664b.chunk.css} +1 -1
  322. /package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.LICENSE.txt → 1379-3a1ba4b4d9-lite.chunk.js.LICENSE.txt} +0 -0
  323. /package/dist/scripts/{1672-e792631d8e-lite.chunk.js.LICENSE.txt → 1672-672f298d82-lite.chunk.js.LICENSE.txt} +0 -0
  324. /package/dist/scripts/{3645-720267b321-lite.chunk.js.LICENSE.txt → 2004-4e2d98041c-lite.chunk.js.LICENSE.txt} +0 -0
  325. /package/dist/scripts/{6102-30960404a9-lite.chunk.js.LICENSE.txt → 3645-72ca9f63df-lite.chunk.js.LICENSE.txt} +0 -0
  326. /package/dist/scripts/{624-010454cb12-lite.chunk.js.LICENSE.txt → 6102-f1851eca08-lite.chunk.js.LICENSE.txt} +0 -0
  327. /package/dist/scripts/{6433-fe9efef305-lite.chunk.js.LICENSE.txt → 624-7df7efd486-lite.chunk.js.LICENSE.txt} +0 -0
  328. /package/dist/scripts/{6741-937ae1865f-lite.chunk.js.LICENSE.txt → 6433-8dd152d999-lite.chunk.js.LICENSE.txt} +0 -0
  329. /package/dist/scripts/{7052-4c36846f80-lite.chunk.js.LICENSE.txt → 6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt} +0 -0
  330. /package/dist/scripts/{8139-01ccbc0539-lite.chunk.js.LICENSE.txt → 6850-8770bfeefb-lite.chunk.js.LICENSE.txt} +0 -0
  331. /package/dist/scripts/{9016-df37abbca9-lite.chunk.js.LICENSE.txt → 9016-c359251f82-lite.chunk.js.LICENSE.txt} +0 -0
  332. /package/dist/scripts/{9230-c79353d3ee-lite.chunk.js.LICENSE.txt → 9230-d731020b59-lite.chunk.js.LICENSE.txt} +0 -0
  333. /package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.LICENSE.txt → 9395-9175b9efcc-lite.chunk.js.LICENSE.txt} +0 -0
  334. /package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.LICENSE.txt → 9478-9b168ddc36-lite.chunk.js.LICENSE.txt} +0 -0
  335. /package/dist/scripts/{953-b56e03bb19-lite.chunk.js.LICENSE.txt → 953-85fc5f8dbf-lite.chunk.js.LICENSE.txt} +0 -0
  336. /package/dist/scripts/{9620-8814c74837-lite.chunk.js.LICENSE.txt → 9620-630f9e6344-lite.chunk.js.LICENSE.txt} +0 -0
  337. /package/dist/scripts/{9839-5befd54d51-lite.chunk.js.LICENSE.txt → 986-ea6d103647-lite.chunk.js.LICENSE.txt} +0 -0
  338. /package/dist/scripts/{bundle-48ad415564.min.js.LICENSE.txt → bundle-d20cb66d1a.min.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6741-937ae1865f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/empty-state/DiscoverDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/DiscoverDashboard.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/CuratedDiscoverView.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/DiscoverViewUtils.ts","file:///app/packages/projects/lite/src/shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner.tsx","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\n />\n </div>\n );\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.discoverDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface DiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function DiscoverDashboardEmptyState(props: DiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { DiscoverHeader, DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks, WidgetImageUrls } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CanFavouriteFunc, CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { DiscoverDashboardEmptyState } from './empty-state/DiscoverDashboardEmptyState';\n\ninterface DiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation: Presentation\n ) => Flight.Request;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n headerAppLinks?: DiscoverHeaderAppLinks;\n scrollToWidgetId?: string;\n updatePreferences?: (\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ) => Promise<void>;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n lazyLoad?: boolean;\n showCalendar: boolean;\n jobTitle: JobTitles;\n imageUrls: WidgetImageUrls\n settings: SettingsHash;\n isPlugin: boolean;\n}\n\nexport function DiscoverDashboard(props: DiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, props.presentation);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <DiscoverHeader\n type={props.dashboard?.userType}\n appLinks={props.headerAppLinks}\n hasStudentExperience={props.hasPermissions(PermissionName.StudentExperience)}\n showCalendar={props.showCalendar}\n active='forYou'\n />\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n onSubmitFeedback={props.onSubmitFeedback}\n updatePreferences={props.updatePreferences}\n yearGroups={props.yearGroups}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n jobTitle={props.jobTitle}\n isPreviewing={props.isReadonly}\n imageUrls={props.imageUrls}\n settings={props.settings}\n isPlugin={props.isPlugin}\n />\n );\n })}\n\n {showEmptyState && (\n <DiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DiscoverDashboard } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser, Customer, DashboardTargetType, Library, Presentation, PresentationAudience, User, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { Config } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { UpgradeFeedbackBanner } from 'shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport { getDiscoverHeaderAppLinks, getDiscoverWidgetAppLinks } from './DiscoverViewUtils';\n\nconst namespace = 'dashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getPhraseVariant(presentation: Presentation): string {\n const learningLevel = PresentationLearningLevel[presentation?.learningLevel];\n\n return +learningLevel === PresentationLearningLevel.Level_1\n ? 'VariantOne'\n : 'VariantTwo';\n}\n\ninterface CuratedDiscoverViewProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CuratedDiscoverView(props: CuratedDiscoverViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasLocalPermissions(LocalPermissionName.ManageDiscoverPreferences) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated\n && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const libraries = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated &&\n LibraryRequests.libraries()\n );\n\n const {\n dashboard,\n presentation,\n audiences\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Discover,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const settings = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Dashboard);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n const phraseVariant = getPhraseVariant(presentation);\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: `pageTitle${phraseVariant}`,\n descriptionPhrase: `pageDescription${phraseVariant}`\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n widgetAppLinks.discover\n )\n }));\n\n async function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = await fetchAsync<void>(FeedbackRequests.submitFeedback({\n type: FeedbackType.Footer,\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n ProductId.Primary,\n hasPermissions(PermissionName.StudentExperience),\n [ 'discover', 'in product feedback' ]\n )\n }, {\n reaction: feedback.type,\n feedback: feedback.content,\n location: 'Discover Footer',\n presentationName: presentation.description,\n presentationId: presentation.id,\n dashboardName: dashboard.data.name,\n dashboardId: dashboard.data.id\n }));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.DiscoverFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n async function updateWidgetPreferences(\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ): Promise<void> {\n const addedSubjects = newPreferences.filter(p => {\n if (p.hidden)\n return false;\n\n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return oldPreference.hidden;\n });\n const removedSubjects = newPreferences.filter(p => {\n if (!p.hidden)\n return false;\n \n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return !oldPreference.hidden;\n });\n\n if (addedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id)));\n\n if (removedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id)));\n\n return fetchAsync<void>(DashboardRequests.updateWidgetPreferences(\n widgetId,\n newPreferences.map(p => ({\n id: p.id,\n index: p.index\n })),\n currentUser.data\n ));\n }\n const { showCalendar } = useShowCalendar();\n\n return (\n <div className='bg-white px-4'>\n <UpgradeFeedbackBanner />\n <DiscoverDashboard\n currentUser={currentUser.data}\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getDiscoverHeaderAppLinks()}\n presentation={presentation}\n imageCdnUrl={config.data.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getWidgetContentRequest={(\n ...args: Parameters<typeof DashboardRequests.dashboardWidgetContent>\n ) => {\n const hasTwig = LibraryHelper.hasTwig(libraries.data, currentUser.data);\n\n return DashboardRequests.discoverWidgetContent(hasTwig, ...args);\n }}\n setFavourite={setFavourite}\n audiences={audiences.data}\n canFavourite={canFavourite}\n updatePreferences={updateWidgetPreferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n showCalendar={showCalendar}\n jobTitle={user.data?.userProfile?.metadata?.jobTitle}\n imageUrls={{\n onboardingAdminBackgroundFull: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,\n onboardingAdminBackground: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND,\n onboardingTeacherBackground: ImageUrls.OnboardingV2.Widget.TEACHER_BACKGROUND\n }}\n settings={settings}\n isPlugin={isPlugin}\n />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, Company, Playlist, Rating, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst CLASSIFICATION_LATEST_RELEASES = 'classification-latest-releases';\n\nexport function getDiscoverWidgetAppLinks(\n params: HashObject\n): WidgetAppLinks {\n return {\n classification: (classification?: Classification) => {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification?.id, TextHelper.slugify(classification?.name) ],\n params: params || {}\n };\n },\n\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n \n latestReleases: () => ({\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n }),\n\n allTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL\n }),\n\n classificationLatestReleases: (classification: Classification) => {\n if (classification.id === CLASSIFICATION_LATEST_RELEASES)\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n };\n\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\n args: [ classification.id, TextHelper.slugify(classification.name) ]\n };\n },\n\n widgetVideoList: (widgetId: string, widgetName: string) => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.DASHBOARD,\n args: [ widgetId, TextHelper.slugify(widgetName) ]\n }),\n\n watchHistory: () => ({\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }),\n\n rating: (rating: Rating, ratings: Rating[]) => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n\n discover: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }),\n\n calendar: () => ({\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }),\n\n calendarMonth: (month: string, year?: string) => {\n const appLink: Core.AppLink = {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR_MONTH,\n args: [month.toLowerCase()]\n };\n\n if (year)\n appLink.params = { year };\n\n return appLink;\n },\n\n onboardingStep: (step: OnboardingScreenId) => {\n const appLinks = getOnboardingAppLinks();\n return appLinks[step];\n },\n\n onboardingAppLinks: () => {\n return getOnboardingAppLinks();\n },\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink\n };\n}\n\nexport function getDiscoverHeaderAppLinks(): DiscoverHeaderAppLinks {\n return {\n forYou: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n },\n whatsNew: {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n },\n calendar: {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }\n };\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.upgradeFeedbackBanner';\n\nexport function UpgradeFeedbackBanner(): JSX.Element {\n const { showFeedbackBanner, dismissFeedbackBanner } = useLiteUpgrade();\n\n if (!showFeedbackBanner)\n return <></>;\n\n return (\n <div className='alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center'>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ url: 'https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look' }}\n />\n <DivButton\n onClick={dismissFeedbackBanner}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n className='ms-2 svg-container'\n />\n </DivButton>\n </div>\n );\n}","import React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","TabContents","tab","svgName","count","data","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","FeedbackType","FeedbackRequests","submitFeedback","requestData","formValues","FeedbackFormHelper","getUserInfo","currentUser","customer","id","username","email","userType","role","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","mapInstanceRegionToTag","getTags","product","extraTags","tags","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getPhrase","DiscoverDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","DiscoverDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","presentation","showEmptyState","isReadonly","length","headerAppLinks","hasPermissions","PermissionName","widget","idx","WidgetContainerView","imageCdnUrl","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","resourceThumbnailFallbackImageUrl","preferences","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","hasLocalPermissions","onSubmitFeedback","updatePreferences","yearGroups","lazyLoad","dashboardTarget","widgetIndex","jobTitle","isPreviewing","settings","isPlugin","emptyImageUrl","widgetWizard","CuratedDiscoverView","config","ConfigRequests","UserRequests","user","isAuthenticated","usePermissions","usePluginHelper","CustomerRequests","libraries","LibraryRequests","targetType","queryParams","presentationSlug","fetchAsync","useSettings","useLiteFavourites","u","activeAudiences","SharedViewModelKeys","undefined","storage","AudienceHelper","phraseVariant","PresentationLearningLevel","learningLevel","getPhraseVariant","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","discover","useShowCalendar","UpgradeFeedbackBanner","ImageUrls","hasTwig","LibraryHelper","args","DashboardRequests","oldPreferences","newPreferences","addedSubjects","filter","p","hidden","find","o","removedSubjects","PreferenceRequests","s","feedback","ProductId","reaction","presentationName","presentationId","dashboardName","dashboardId","promise","AnalyticsHelper","feedbackType","workflowPhase","userProfile","onboardingAdminBackgroundFull","onboardingAdminBackground","onboardingTeacherBackground","CLASSIFICATION_LATEST_RELEASES","getDiscoverWidgetAppLinks","classification","application","action","videoType","video","opts","context","series","subText","playlist","latestReleases","allTopics","classificationLatestReleases","widgetVideoList","widgetName","watchHistory","rating","ratings","moviesAndTv","company","calendarMonth","month","year","onboardingStep","step","onboardingAppLinks","classroomGuide","interactiveGuidance","resourceGuidance","getDiscoverHeaderAppLinks","showFeedbackBanner","dismissFeedbackBanner","options","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","activePresentation","redirectOnError","allowedLearningLevels","learningLevelCantAccess","l","toString","noSetting","setShowCalendar","isLoading","setIsLoading"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6846],{95342:(e,t,n)=>{n.r(t),n.d(t,{SeriesView:()=>se});var i=n(32735),a=n(70680),r=n(23481),o=n(20354),s=n(65858),c=n(44522),u=n(49935),l=n(71020),d=n(74696),p=n(13231),v=n(79718),f=n(7733),m=n(51365),h=n(16714),b=n(23788),g=n(21750),y=n(39151),S=n(1666),k=n(60011),A=n(31949),E=n(56520),I=n(91286),L=n(60115),O=n(22902),T=n(79612),P=n(76753),w=n(35223),C=n(68140),j=n(14070),F=n(97291),N=n(64364);function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function B(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,x(i.key),i)}}function x(e){var t=function(e,t){if("object"!=_(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=_(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}function V(e,t,n){return t=G(t),function(e,t){if(t&&("object"==_(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,D()?Reflect.construct(t,n||[],G(e).constructor):t.apply(e,n))}function D(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(D=function(){return!!e})()}function G(e){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},G(e)}function M(e,t){return M=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},M(e,t)}var R="shared.seriesNotFoundError",U=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),V(this,t,["Series doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&M(e,t)}(t,e),n=t,(i=[{key:"name",get:function(){return"SeriesNotFoundError"}},{key:"heading",get:function(){return r.T.getPhrase(R,"heading")}},{key:"description",get:function(){return r.T.getPhrase(R,"description")}}])&&B(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,i}(N.H),H=n(51855),J=n(10671),W=n(7179),Q=n(27638),Z=n(86698),K=n(44110),q=n(97816),z=n(10741),X=n(33192),Y=n(22490),$=n(28400),ee=n(87114),te=r.T.encloseNamespace("shared.series"),ne=function(e,t){return{application:F.O.SUBJECT,action:j.e.Subjects.CLASSIFICATION,args:[e.id,$.m.slugify(e.name)],params:{mtv:!!t||void 0}}},ie={getBreadcrumbs:function(e){var t=e.moviesAndTv,n=e.topicPath,i=e.series,a=e.presentation,r=e.availablePresentations;if(t){var o=[{name:te("moviesAndTv"),appLink:{application:F.O.MOVIES_AND_TV,action:j.e.MoviesAndTv.HOME}}];return null==n||n.slice(1,n.length).forEach((function(e){o.push({name:e.name,appLink:ne(e,!0)})})),o.push({name:i.name,active:!0}),o}var s=[{name:te("discover"),appLink:{application:F.O.DASHBOARD,action:j.e.Dashboard.HOME}}];return n&&(s.push({name:ee.i.getExploreAllTopicsTitle(null==a?void 0:a.name,null==r?void 0:r.length),appLink:{application:F.O.SUBJECT,action:j.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:null==a?void 0:a.id}}}),n.forEach((function(e){s.push({name:e.name,appLink:ne(e)})}))),s.push({name:i.name,active:!0}),s}},ae=n(82431),re=r.T.encloseNamespace("shared.series"),oe=function(e){return f.o[e.name.charCodeAt(0)%f.o.length]};function se(e){var t,n,r,f,N,_=(0,a.I0)(),B=(0,Q.u)(s.LZ.VideoThumbnail),x=B.setFavourite,V=B.canFavourite,D=(0,O.T)(),G=D.hasPermissions,M=D.hasLocalPermissions,R=(0,H.G)().isPlugin,$=(0,E.R0)(),ee=$.openInCurationStudioLabel,te=$.isUserCurator,ne=$.getOpenInCurationStudioLink;(0,W.P)({id:e.id,app:"series",shareId:e.shareId});var se=o.a.useBasicFetch(y.L.config()),ce=o.a.useBasicFetch(A.N.currentUser()),ue=o.a.useBasicFetch((null===(t=ce.data)||void 0===t?void 0:t.isAuthenticated)&&S.h.yearGroups(ce.data.customerId)),le=o.a.useBasicFetch(e.classificationId&&g.x.classification(e.classificationId,null===(n=ce.data)||void 0===n?void 0:n.id)),de=o.a.useBasicFetch(e.shareId?k.J.sharedSeries(e.id,e.shareId):k.J.series(e.id)),pe=o.a.useBasicFetch((null===(r=le.data)||void 0===r?void 0:r.presentationId)&&g.x.presentationById(le.data.presentationId)),ve=(0,Z.y)().availablePresentations,fe=(0,K.i)();(0,T.M)(P.CG.getSeriesMetadata({content:de.data,phraseContext:{phraseHandler:re,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:X.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:X.f.allowIndexing()}));var me=(0,J._)({location:J.i.VideoItem,shareId:e.shareId}),he=o.a.useBasicFetch(e.classificationId&&g.x.path(e.classificationId));function be(t){var n;return k.J.seriesVideos(e.id,null===(n=ce.data)||void 0===n?void 0:n.id,Se,t)}function ge(e){if(ye(!!e))return o.a.getFetch(_)(be(e))}function ye(e){return!e||!X.f.isBot()}var Se=!!ce.data&&C.d.getOrSetSortType(ce.data.id,e.sort,b.D.Series),ke={classificationId:e.classificationId,mtv:e.moviesAndTv},Ae=(0,L.K)(!!ce.data&&be,ge),Ee=Ae.items,Ie=Ae.hasMore,Le=Ae.isFetching;(0,q.V)(Ee),(0,I.v)(de,{notFound:U});var Oe=!G(h.C.StudentExperience)&&M(h.E.UseSeriesActions);return i.createElement(m.M.Provider,{value:me},i.createElement("div",{className:"px-3"},se.data&&de.data?i.createElement(c.p,{heading:de.data.name,banner:de.data.banner,imageCdnUrl:se.data.imageCdnUrl,actions:function(){var e,t,n;if(R||!Oe)return[];var i=[{label:re("share"),appLink:de&&{application:F.O.DEFAULT,action:j.e.Default.SHARE,args:[null===(e=de.data)||void 0===e?void 0:e.id],params:{entityType:"series"}},svgName:w.vn.Share2,className:"btn btn-outline-dark me-2",button:!0}];return te&&i.push({label:ee,href:ne(null===(t=de.data)||void 0===t?void 0:t.typeId,null===(n=de.data)||void 0===n?void 0:n.id),openInNewTab:!0}),i}(),actionsDropdownClassName:"btn btn-outline-dark",blockColourClass:oe(de.data)}):i.createElement(c.v,null),i.createElement("div",null,i.createElement("div",{className:(null===(f=de.data)||void 0===f?void 0:f.description)||e.moviesAndTv&&he.data?"border-bottom py-3 mb-3":"pt-3 mb-2"},e.classificationId||e.moviesAndTv?!de.data||e.classificationId&&!he.data?i.createElement(u.b2,null):i.createElement(u.Oo,{breadcrumbs:ie.getBreadcrumbs({moviesAndTv:e.moviesAndTv,topicPath:he.data,series:de.data,presentation:pe.data,availablePresentations:ve})}):i.createElement(i.Fragment,null),i.createElement("div",{className:"d-flex align-items-center"},(null===(N=de.data)||void 0===N?void 0:N.description)&&i.createElement("p",{className:"mb-0 ".concat(e.classificationId?"pt-2":"")},de.data.description),de.data&&i.createElement("div",{className:"ms-auto"},i.createElement(v.p,{variant:"outline-dark",type:Se,analyticsOptions:{location:s.LZ.VideoListHeader,entity:s.py.Video,actionType:s.Vw.Sort,workflowPhase:s.eu.Complete},getSortAppLink:function(e){return ae.j.getSeriesAppLink(de.data,Object.assign(Object.assign({},ke),{sort:e}))}})))),Ee?i.createElement(i.Fragment,null,i.createElement(p.E4,{videos:Ee,yearGroups:ue.data,getVideoAppLink:e.getVideoAppLink,hasPermissions:G,getSubTextAppLink:function(e){return ae.j.getSeriesAppLink(null==e?void 0:e.series,Object.assign(Object.assign({},ke),{sort:Se}))},setFavourite:x,canFavourite:V,presentationAudiences:e.moviesAndTv?null:fe.data,getPreviewQuestionsAppLink:function(e){return z.j.getPreviewQuestionsAppLink(e)},isPlugin:R,getClassroomGuideAppLink:Y.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:Y.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:Y.W.getResourceGuidanceAppLink}),(ye(Ie)||Le)&&i.createElement(l._,{isFetching:Le,fetchNext:ge})):i.createElement(d.S,null))))}}}]);
2
- //# sourceMappingURL=6846-08b00decd8-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6846-08b00decd8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/shared/errors/series/series-not-found/SeriesNotFoundError.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/series/SeriesView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.seriesNotFoundError';\n\nexport class SeriesNotFoundError extends ErrorPageError {\n constructor() {\n super('Series doesn\\'t exist');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SeriesNotFoundError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Classification, Presentation, Series } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getClassificationAppLink = (classification: Classification, moviesAndTv?: boolean): Core.AppLink => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification.id, TextHelper.slugify(classification.name) ],\n params: { mtv: moviesAndTv ? true : undefined }\n});\n\ninterface GetBreadcrumbOptions {\n moviesAndTv: boolean;\n topicPath: Classification[];\n series: Series;\n presentation: Presentation;\n availablePresentations: Presentation[]\n}\n\nexport const SeriesViewUtils = {\n getBreadcrumbs(options: GetBreadcrumbOptions): Breadcrumb[] {\n const { moviesAndTv, topicPath, series, presentation, availablePresentations } = options;\n\n if (moviesAndTv) {\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('moviesAndTv'),\n appLink: {\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.HOME\n }\n }];\n\n topicPath?.slice(1, topicPath.length).forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item, true)\n });\n });\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n\n const breadcrumbs: Breadcrumb[] = [{\n name: getPhrase('discover'),\n appLink: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }\n }];\n \n if (topicPath) {\n breadcrumbs.push({\n name: TopicsHelper.getExploreAllTopicsTitle(\n presentation?.name,\n availablePresentations?.length\n ),\n appLink: {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL,\n params: { presentationId: presentation?.id }\n }\n });\n\n topicPath.forEach(item => {\n breadcrumbs.push({\n name: item.name,\n appLink: getClassificationAppLink(item)\n });\n });\n }\n\n breadcrumbs.push({\n name: series.name,\n active: true\n });\n\n return breadcrumbs;\n }\n};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, Config, CurrentUser, Presentation, Series, Video, YearGroup } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { SeriesNotFoundError } from 'shared/errors/series/series-not-found/SeriesNotFoundError';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { SeriesViewUtils } from 'shared/views/series/SeriesViewUtils';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.series';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getFallbackBannerColourClass = (series: Series): string => {\n return BG_COLOUR_CLASS_NAMES[series.name.charCodeAt(0) % BG_COLOUR_CLASS_NAMES.length];\n};\n\ninterface SeriesViewProps {\n id: string;\n getVideoAppLink: (video: Video, opts: GetVideoAppLinkOptions) => Core.AppLink;\n classificationId?: string;\n shareId?: string;\n moviesAndTv?: boolean;\n sort?: VideoSortType;\n}\n\nexport function SeriesView(props: SeriesViewProps): JSX.Element {\n const dispatch = useDispatch();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n useDeepLinks({ id: props.id, app: 'series', shareId: props.shareId });\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const classification = Flight.useBasicFetch<Classification>(\n props.classificationId &&\n ClassificationRequests.classification(props.classificationId, currentUser.data?.id)\n );\n\n const series = Flight.useBasicFetch<Series>(props.shareId\n ? SeriesRequests.sharedSeries(props.id, props.shareId)\n : SeriesRequests.series(props.id));\n\n const presentation = Flight.useBasicFetch<Presentation>(classification.data?.presentationId &&\n ClassificationRequests.presentationById(classification.data.presentationId));\n\n const {\n availablePresentations\n } = usePresentation();\n\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata(PageMetadataHelper.getSeriesMetadata({\n content: series.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem, shareId: props.shareId });\n\n const topicPath = Flight.useBasicFetch<Classification[]>(\n props.classificationId &&\n ClassificationRequests.path(props.classificationId)\n );\n\n function getVideosRequest(cursor?: string) {\n return SeriesRequests.seriesVideos(props.id, currentUser.data?.id, sort, cursor);\n }\n\n function fetchNext(cursor?: string) {\n if (!shouldRequestData(!!cursor))\n return;\n\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n /**\n * Infinite scrolling will be restricted for public browsing as a crawler/bot.\n * The rationale behind this is that we don't want to preload or allow crawlers\n * to enumerate the entirety of our series collections. Some series have > 10k videos\n * and they don't all need to be indexed (i.e. old news/current affair series).\n * \n * Public browsing by regular users will continue to paginate, along with authenticated\n * users. - Mike\n */\n function shouldRequestData(moreToFetch?: boolean) {\n return !moreToFetch || !SeoHelper.isBot();\n }\n\n function getBannerActions(): ActionOptions[] {\n if (isPlugin || !showHeaderActions) {\n return [];\n }\n\n const actions: ActionOptions[] = [{\n label: getPhrase('share'),\n appLink: series && {\n application: AppChannels.DEFAULT,\n action: Actions.Default.SHARE,\n args: [series.data?.id],\n params: { entityType: 'series' }\n },\n svgName: cvSvgLibrary.Share2,\n className: 'btn btn-outline-dark me-2',\n button: true\n }];\n\n if (isUserCurator)\n actions.push({\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(series.data?.typeId, series.data?.id),\n openInNewTab: true\n });\n\n return actions;\n }\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data && VideoSortHelper.getOrSetSortType(\n currentUser.data.id,\n props.sort,\n VideoSortType.Series\n );\n\n const seriesParams = {\n classificationId: props.classificationId,\n mtv: props.moviesAndTv\n };\n\n const {\n items: videos,\n hasMore,\n isFetching\n } = useInfiniteList<Video>(currentUser.data ? getVideosRequest : false, fetchNext);\n\n useVideoMixin(videos);\n\n useHandleObjectError(series, {\n notFound: SeriesNotFoundError\n });\n\n const showHeaderActions = !hasPermissions(PermissionName.StudentExperience) &&\n hasLocalPermissions(LocalPermissionName.UseSeriesActions);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n {config.data && series.data\n ? (\n <BannerHeader\n heading={series.data.name}\n banner={series.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n actions={getBannerActions()}\n actionsDropdownClassName='btn btn-outline-dark'\n blockColourClass={getFallbackBannerColourClass(series.data)}\n />\n ) : <PartialBannerHeader />\n }\n \n <div>\n <div className={series.data?.description || (props.moviesAndTv && topicPath.data) ? 'border-bottom py-3 mb-3' : 'pt-3 mb-2'}>\n {(() => {\n if (!props.classificationId && !props.moviesAndTv)\n return <></>;\n\n if (!series.data || (props.classificationId && !topicPath.data))\n return <PartialBreadcrumbs />;\n\n return (\n <Breadcrumbs\n breadcrumbs={SeriesViewUtils.getBreadcrumbs({\n moviesAndTv: props.moviesAndTv,\n topicPath: topicPath.data,\n series: series.data,\n presentation: presentation.data,\n availablePresentations: availablePresentations\n })}\n />\n );\n })()}\n\n <div className='d-flex align-items-center'>\n {series.data?.description && (\n <p className={`mb-0 ${props.classificationId ? 'pt-2' : ''}`}>{series.data.description}</p>\n )}\n\n {series.data && (\n <div className='ms-auto'>\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n getSortAppLink={sort => {\n return SeriesAppLinkHelper.getSeriesAppLink(series.data, { ...seriesParams, sort });\n }}\n />\n </div>\n )}\n </div>\n </div>\n\n {(() => {\n if (!videos)\n return <PartialVideoList />;\n\n return (\n <>\n <VideoList\n videos={videos}\n yearGroups={yearGroups.data}\n getVideoAppLink={props.getVideoAppLink}\n hasPermissions={hasPermissions}\n getSubTextAppLink={video =>\n SeriesAppLinkHelper.getSeriesAppLink(video?.series, { ...seriesParams, sort })}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={props.moviesAndTv ? null : audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n {(shouldRequestData(hasMore) || isFetching) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />}\n </>\n );\n })()}\n </div>\n </div>\n </VideoActionsContext.Provider>\n );\n}\n"],"names":["namespace","SeriesNotFoundError","LanguageService","ErrorPageError","getPhrase","getClassificationAppLink","classification","moviesAndTv","application","action","args","id","TextHelper","name","params","mtv","undefined","SeriesViewUtils","getBreadcrumbs","options","topicPath","series","presentation","availablePresentations","appLink","slice","length","forEach","item","push","active","breadcrumbs","TopicsHelper","presentationId","getFallbackBannerColourClass","charCodeAt","SeriesView","props","dispatch","useLiteFavourites","u","setFavourite","canFavourite","usePermissions","hasPermissions","hasLocalPermissions","isPlugin","usePluginHelper","useCurationStudio","openInCurationStudioLabel","isUserCurator","getOpenInCurationStudioLink","useDeepLinks","app","shareId","config","ConfigRequests","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","classificationId","ClassificationRequests","SeriesRequests","usePresentation","audiences","usePresentationAudiences","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","videoActions","useVideoActions","location","getVideosRequest","cursor","sort","fetchNext","shouldRequestData","moreToFetch","VideoSortHelper","VideoSortType","seriesParams","videos","items","hasMore","isFetching","useVideoMixin","notFound","showHeaderActions","PermissionName","VideoActionsContext","value","className","BannerHeader","heading","banner","imageCdnUrl","actions","label","entityType","svgName","button","href","typeId","openInNewTab","getBannerActions","actionsDropdownClassName","blockColourClass","description","Breadcrumbs","VideoSortSelect","variant","type","analyticsOptions","entity","actionType","workflowPhase","getSortAppLink","SeriesAppLinkHelper","VideoList","getVideoAppLink","getSubTextAppLink","video","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","InfiniteScrollFooter","PartialVideoList"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6948],{40955:(e,t,a)=>{a.d(t,{P:()=>i});var n=a(32735);function i(e){return e.audience?n.createElement("div",{className:"audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ".concat("border-"+e.border," ").concat(e.className?e.className:"")},e.audience.name):n.createElement(n.Fragment,null)}},17464:(e,t,a)=>{a.d(t,{c:()=>r});var n=a(32735),i=a(7121);function r(e){var t="d-flex align-items-center badge-list ".concat(i.Z.minHeight);return e.className&&(t+=" ".concat(e.className)),n.createElement("div",{className:t},e.children)}},89682:(e,t,a)=>{a.d(t,{I:()=>u,h:()=>d});var n=a(32735),i=a(91967),r=a(83914),o=a(35223),c=a(11607);const l={unchecked:"bup9I",outline:"ealw_",checked:"A1Ov0",checkMark:"c14lI"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d;function u(e){var t,a,u=(t=n.useState(e.status===d.Complete),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?s(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=u[0],v=u[1];n.useEffect((function(){v(e.status===d.Complete)}),[e.status]);var p="cursor-pointer rounded-circle ".concat(m?l.checked:l.unchecked);return e.className&&(p+=" ".concat(e.className)),"outline"===e.style&&(p+=" ".concat(l.outline)),e.status&&e.status!==d.None&&i.q.isFunction(e.setStatus)?n.createElement(c.L,{className:p,onClick:function(){var t=!m;v(t);var a=t?d.Complete:d.Incomplete;e.setStatus(a).catch((function(){v(!t)}))},disabled:e.disabled},n.createElement(r.x,{svgName:o.vn.Check,className:"svg-container ".concat(l.checkMark)})):n.createElement(n.Fragment,null)}!function(e){e.None="None",e.Complete="Complete",e.Incomplete="Incomplete"}(d||(d={})),u.defaultProps={style:"filled"}},24900:(e,t,a)=>{a.d(t,{z:()=>l,O:()=>c});var n=a(32735),i=a(83914),r=a(35223);const o={mask:"qpc7L",small:"L8Oxs",video:"b8kJW",playlist:"eo2p2",maskContainer:"lpwag"};var c;function l(e){var t=e.type,a=e.size,l=function(e){return e===c.Video?o.video:e===c.Playlist?o.playlist:""}(t),s=function(e){return e===c.Video?r.vn.PlayCircle:""}(t);return n.createElement("div",{className:"".concat(o.maskContainer," ").concat("sm"===a?o.small:"")},n.createElement("div",{className:o.mask}),n.createElement(i.x,{svgName:s,className:l}))}!function(e){e[e.Video=0]="Video",e[e.Playlist=1]="Playlist",e[e.Series=2]="Series"}(c||(c={})),l.defaults={size:"md"}},22843:(e,t,a)=>{a.d(t,{h:()=>d});var n=a(32735),i=a(65858),r=a(36848),o=a(38647),c=a(11882),l=a(31908);const s={container:"r70GR",titleContainer:"rULXI",seriesTitleBox:"h9k1p",badgeContainer:"QaDDX",audienceBadge:"hvsne"};function d(e){var t=e.video,a=e.appLink,d=e.subTextAppLink,u=l.M.getCanBeConsumed(t).canNavigate;return n.createElement("div",{className:"mt-2 ".concat(s.container)},n.createElement("div",{className:"d-flex flex-column ".concat(s.titleContainer)},l.M.isVideo(t)&&n.createElement(c.$,{type:e.subTextType,className:"text-truncate ".concat(s.seriesTitleBox),video:t,appLink:d,analyticsOptions:{location:i.LZ.VideoThumbnail}}),n.createElement(r.F,{className:"h6 text-reset clamp-2 align-middle",appLink:u?a:null},t.name,n.createElement(o.m,{video:e.video,yearGroups:e.yearGroups,size:"sm"}))))}},89118:(e,t,a)=>{a.d(t,{u:()=>me});var n=a(32735),i=a(1048),r=a(65858),o=a(18559),c=a(17464),l=a(23481),s=a(91967),d=a(11607),u=a(83914),m=a(69883),v=a(1643),p=a(35223),g=a(31908);const y={favourited:"t0svX",favouriteButton:"CFRo3",heart:"ZMMQu",heartOutline:"truFo"};function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E=l.T.encloseNamespace("shared.favouriteButton");function h(e){var t,a,i=(0,m.Z)(),r=v.h.isFavouritedByCurrentUser(e.video),o=(t=n.useState(r),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?f(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],l=o[1];n.useEffect((function(){l(r)}),[r]);var h="".concat("d-flex align-items-center justify-content-center"," cursor-pointer ").concat(y.favouriteButton," ").concat(c?y.favourited:"");return e.className&&(h+=" ".concat(e.className)),s.q.isFunction(e.setFavourite)&&s.q.isFunction(e.canFavourite)&&e.canFavourite(e.video)?n.createElement(d.L,{className:h,onClick:function(){var t=!c;l(t),e.setFavourite(e.video,t,null,(function(){i.error(E(g.M.isClip(e.video)?t?"favouriteClipError":"unfavouriteClipError":g.M.isInteractive(e.video)?t?"favouriteInteractiveError":"unfavouriteInteractiveError":t?"favouriteVideoError":"unfavouriteVideoError")),l(!t)}),e.analyticsData,e.analyticsOptions)}},n.createElement(u.x,{svgName:p.vn.Heart,className:"svg-container ".concat(y.heart)}),n.createElement(u.x,{svgName:p.vn.HeartOutline,className:"svg-container ".concat(y.heartOutline)})):n.createElement(n.Fragment,null)}var b=a(75163),k=a(5465);function C(e){var t=g.M.getVideoProgress(e.video),a=t&&e.video.duration&&t/e.video.duration*1e5;return a?n.createElement("div",{className:"bg-primary h-100",style:{width:"".concat(a,"%")}}):n.createElement(n.Fragment,null)}const N={bottomBar:"YnXtZ"};function O(e){return g.M.isVideo(e.video)?n.createElement("div",{className:N.bottomBar},n.createElement(C,{video:e.video})):n.createElement(n.Fragment,null)}var x=a(36848),w=a(83345);const L={pluginHover:"h4RQa"};var I="shared.pluginHover";function F(e){return e.isPlugin?n.createElement(x.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,onClick:e.onClick,className:"\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ".concat(L.pluginHover,"\n ").concat(e.className?e.className:"","\n ")},n.createElement("span",{className:"position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white"},n.createElement(w.x,{namespace:I,phrase:"embed"}))):n.createElement(n.Fragment,null)}const T={padlock:"w4cg8",sm:"JpIYd"};function j(e){var t="sm"===e.size?u.S.Small:u.S.Standard;return n.createElement("div",{className:"".concat(T.padlock," ").concat("sm"===e.size?T.sm:""," bg-white cursor-default d-flex align-items-center justify-content-center")},n.createElement(u.x,{svgName:p.vn.Lock,size:t}))}var M=a(76177);const S={logo:"OA9ft",sm:"fyo2J"};function A(e){var t,a,i,r;if(!g.M.isVideo(e.video)||!e.companyLogoFallbackUrl)return n.createElement(n.Fragment,null);var o=null===(a=null===(t=e.video.productionCompanies)||void 0===t?void 0:t.data)||void 0===a?void 0:a[0],c=null!==(r=null===(i=null==o?void 0:o.logo)||void 0===i?void 0:i.url)&&void 0!==r?r:e.companyLogoFallbackUrl;return c?n.createElement("div",null,n.createElement(M.u,{title:null==o?void 0:o.name,spanHack:!0},n.createElement("div",{className:"".concat(S.logo," ").concat("sm"===e.size?S.sm:""),style:{backgroundImage:"url(".concat(c,")")}}))):n.createElement(n.Fragment,null)}A.defaultProps={size:"md"};var D=a(11882),z=a(4594),P=a(61150);function R(e){return g.M.isClip(e.video)?n.createElement(P.y,{typeId:z.E.Clip,size:e.size,inContainer:!0}):g.M.isInteractive(e.video)?n.createElement(P.y,{typeId:z.E.Interactive,status:e.video.status,size:e.size,inContainer:!0}):n.createElement(n.Fragment,null)}R.default={size:"md"};var G=a(10439),V=a(54610),B=a(49439);const H={overlayContainer:"qu3A3",topLeftContainer:"gjhMe",topRightContainer:"XAfZW",overlay:"NTrtm",downScale:"puKcM",title:"_6FukN",gradient:"rXzR8",playIcon:"dndOA",videoProgress:"yhWf4",badgeContainer:"AtgmC",clipProgress:"E2egN",interactiveProgress:"WycwR"};function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function U(e){var t="mb-1";return e&&(t+=H.downScale),t}function Z(e){var t,a,l,s=e.video,d=e.appLink,m=e.imageOptions,y=e.setFavourite,f=e.canFavourite,E=e.preload,C=e.hovering,N=e.hoverToPlay,x=e.companyLogoFallbackUrl,w=g.M.getCanBeConsumed(e.video),L=w.canNavigate,I=w.canConsume,T=i.t.isObject(null==d?void 0:d.params)?null==d?void 0:d.params:{},S=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(s)}),z=v.h.showFavouriteButton(e.video,C),P=g.M.isVideo(s),Z=g.M.getRating(e.video),Q=(a=(0,B.L)({delay:100}),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return _(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_(e,t):void 0}}(a,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),W=Q[0],X=Q[1]&&I&&N,q=Object.assign(Object.assign({},e.analyticsData),{id:s.id,name:s.name}),$=Object.assign(Object.assign({},S),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement(M.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement("div",{className:"position-relative rounded-3 overflow-hidden",ref:W},n.createElement(F,{isPlugin:e.isPlugin,className:"rounded-3",appLink:L?d:null,analyticsData:q,analyticsOptions:$}),z&&n.createElement("div",{className:H.topRightContainer},n.createElement(h,{setFavourite:y,canFavourite:f,video:s,analyticsData:e.analyticsData,analyticsOptions:S})),!L&&n.createElement("div",{className:H.topRightContainer},n.createElement(j,null)),n.createElement("div",{className:"".concat(H.topLeftContainer," d-flex flex-no-wrap")},n.createElement(R,{video:s}),n.createElement(A,{video:s,companyLogoFallbackUrl:x})),n.createElement(b.Z,{data:g.M.getThumbnail(s),appLink:L?d:null,imageType:V.__.Thumbnails,imageOptions:m,preload:E,className:H.gradient,alt:("series"in s&&(null===(t=s.series)||void 0===t?void 0:t.name)?"".concat(s.series.name,": "):"")+s.name,analyticsData:q,analyticsOptions:$},!(!C||!L)&&n.createElement(u.x,{className:H.playIcon,svgName:p.vn.PlayCircle}),n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:H.overlayContainer},n.createElement("div",{className:H.overlay},n.createElement("div",{className:"".concat(U(C)," ").concat(H.title)},P&&n.createElement(D.$,{type:e.subTextType,className:"text-shadow clamp-1",video:s,appLink:null,analyticsOptions:null}),n.createElement("span",{className:"h6 text-reset text-shadow clamp-1"},g.M.getTitle(s))),n.createElement(O,{video:s}),C&&n.createElement(c.c,{className:"mt-1"},g.M.isVideo(s)&&n.createElement(n.Fragment,null,n.createElement(o.C,{type:o.g.Rating,data:Z}),s.hasSubtitle&&n.createElement("span",{className:"badge p-0"},n.createElement(u.x,{svgName:p.vn.CloseCaptionBadge})),n.createElement(o.C,{type:o.g.Interactive,data:s.hasInteractives}),n.createElement(o.C,{type:o.g.DurationExact,data:g.M.getDuration(e.video)})))))),X&&n.createElement(G.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:T.context,contextId:T.contextId,moviesAndTv:T.mtv})))}var Q=a(64446),W=a(40955);const X={badgeContainer:"fy9Un",sm:"Rb0TL"};function q(e){var t=g.M.getRating(e.video),a=!!e.audience&&"sm"!==e.size,i=!a&&!e.hideRating&&!!t&&"sm"!==e.size;return!e.hideDuration||a||i?n.createElement(c.c,{className:"".concat(X.badgeContainer," ").concat("sm"===e.size?X.sm:"")},a&&n.createElement(W.P,{audience:e.audience,className:"bg-white text-dark",border:"dark"}),i&&n.createElement(o.C,{type:o.g.Rating,data:t}),!e.hideDuration&&n.createElement(o.C,{type:e.newDurationStyle?o.g.DurationApproximate:o.g.DurationExact,data:e.duration||g.M.getDuration(e.video)})):n.createElement(n.Fragment,null)}q.defaultProps={newDurationStyle:!0,size:"md"};var $=a(22843),J=a(60318);const K={preview:"whbhf",topLeftContainer:"wHY80",details:"vMaXP",isHovering:"tR1jA",videoGuidanceTags:"KJrT1",responsiveGuidance:"OixHb",dropdown:"oZXV7",show:"EiQ04",topRightContainer:"FAuzc"};var Y=function(e){var t,a=e.video,o=e.appLink,c=e.imageOptions,l=e.preload,s=e.setFavourite,d=e.canFavourite,u=e.isHovering,m=e.hoverToPlay,p=e.companyLogoFallbackUrl,y=i.t.isObject(null==o?void 0:o.params)?null==o?void 0:o.params:{},f=g.M.getCanBeConsumed(a),E=f.canNavigate,C=f.canConsume;n.useEffect((function(){return function(){var t;null===(t=e.cleanPortalNode)||void 0===t||t.call(e)}}),[]);var N="position-relative bg-white";e.extraClasses&&(N+=" ".concat(e.extraClasses)),u&&(N+=" rounded-3 shadow-lg");var x=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(a)}),w=e.isHovering&&C&&m,L=v.h.showFavouriteButton(e.video,u),I=Object.assign(Object.assign({},e.analyticsData),{id:a.id,name:a.name}),T=Object.assign(Object.assign({},x),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement("div",{className:N},L&&n.createElement("div",{className:K.topRightContainer},n.createElement(h,{setFavourite:s,canFavourite:d,video:a,analyticsData:e.analyticsData,analyticsOptions:x})),!E&&n.createElement("div",{className:K.topRightContainer},n.createElement(M.u,{title:g.M.getPrivacyReasoning(e.video),spanHack:!0,spanHackClassName:""},n.createElement(j,null))),n.createElement("div",{className:"position-relative"},n.createElement(F,{isPlugin:e.isPlugin,className:u?"rounded-top-3":"rounded-3",onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},appLink:E?o:null,analyticsData:I,analyticsOptions:T}),n.createElement(b.Z,{onClick:function(){var t;return null===(t=e.cleanPortalNode)||void 0===t?void 0:t.call(e)},data:g.M.getThumbnail(a),appLink:E?o:null,imageType:V.__.Thumbnails,imageOptions:c,preload:l,className:"overflow-hidden ".concat(u?K.preview:"rounded-3 ".concat(K.original)),alt:("series"in a&&(null===(t=a.series)||void 0===t?void 0:t.name)?"".concat(a.series.name,": "):"")+a.name,analyticsData:I,analyticsOptions:T},n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:"p-absolute w-100 h-100 text-white"},n.createElement("div",{className:"".concat(K.topLeftContainer," d-flex flex-no-wrap")},n.createElement(R,{video:a}),n.createElement(A,{video:a,companyLogoFallbackUrl:p})),n.createElement(q,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration}),n.createElement(O,{video:a}))),w&&n.createElement(G.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:y.context,contextId:y.contextId,moviesAndTv:y.mtv,location:"popout-video"})),!u&&!e.hideTitle&&n.createElement($.h,Object.assign({},e)),n.createElement("div",{className:"".concat(K.details," ").concat(u?"".concat(K.isHovering," box-shadow"):"")},u&&n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(u?K.videoGuidanceTags:"")},n.createElement($.h,Object.assign({},e)),e.showVideoGuidance&&u&&n.createElement(J.u,{getClassroomGuideAppLink:e.getClassroomGuideAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,responsiveClassName:K.responsiveGuidance,containerClassName:"d-flex justify-content-start align-items-center pt-2"})))))};function ee(e){return n.createElement(n.Fragment,null,n.createElement(Q.K,{hoverableComponent:Y,componentProps:e,fixedHoverWidth:400,minHoverWidth:400,analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:e.video.id,name:e.video.name}),analyticsOptions:Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(e.video)})}))}var te=a(24900),ae=a(89682);const ne={container:"efxnE",cvIcon:"OJ_ZQ",action:"vWvGn"};function ie(e){return g.M.getCanBeConsumed(e.video).canNavigate?function(e){var t;return!(null===(t=g.M.getCanBeConsumed(e.video))||void 0===t?void 0:t.canConsume)||!(!s.q.isFunction(e.setFavourite)||!s.q.isFunction(e.canFavourite))||!!s.q.isFunction(e.setCheckMarkStatus)}(e)?n.createElement("div",{className:"".concat(ne.container," d-flex align-items-center")},n.createElement(h,{setFavourite:e.setFavourite,canFavourite:e.canFavourite,video:e.video,className:ne.action,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(ae.I,{status:e.checkMarkStatus,setStatus:e.setCheckMarkStatus,className:ne.action})):n.createElement(n.Fragment,null):n.createElement("div",{className:ne.container},n.createElement(j,{size:e.size}))}var re=a(68626);const oe={titleOverlay:"krg9f",clip:"MPRU6",large:"g5_ww",interactive:"Zzo3e",titleBelow:"tZjPt",overlayContainer:"EElm1",topLeftContainer:"hrw3I",gradient:"LS_EH"};function ce(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,r,o,c=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,i=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return le(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?le(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function le(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var se="shared.staticVideoThumbnail";function de(e){var t,a=e.video,i=e.subTextAppLink,o=e.textPosition,c=e.appLink,s=o===re.z.Overlay,d=g.M.getCanBeConsumed(e.video).canNavigate,u="";return s?(u=oe.titleOverlay,d&&(g.M.isClip(a)&&(u+=" "+oe.clip),g.M.isInteractive(a)&&(u+=" "+oe.interactive))):u=oe.titleBelow,n.createElement("div",{className:u},g.M.isVideo(a)&&n.createElement(D.$,{type:e.subTextType,className:s?"text-shadow clamp-1":"clamp-2",video:a,appLink:s?null:i,analyticsOptions:{location:r.LZ.VideoThumbnail}}),s||!d?n.createElement("span",{className:"h6 text-reset clamp-1"},null!==(t=a.name)&&void 0!==t?t:l.T.getPhrase(se,"videoUnavailable")):n.createElement(x.F,{className:"h6 text-reset clamp-2",appLink:c},a.name))}function ue(e){var t,a,o=e.video,c=e.appLink,l=e.textPosition,s=e.imageOptions,d=e.setFavourite,u=e.preload,m=e.hoverToPlay,p=i.t.isObject(null==c?void 0:c.params)?null==c?void 0:c.params:{},y=ce((0,B.X)(),2),f=y[0],E=y[1],h=ce((0,B.L)({delay:100}),2),C=h[0],N=h[1],x=g.M.getCanBeConsumed(o),w=x.canNavigate,L=x.canConsume,I=N&&L&&m,T=Object.assign(Object.assign({},e.analyticsOptions),{entity:g.M.getAnalyticsEntity(o)}),j=!!c&&!e.hideMask&&w,S=g.M.getPrivacyReasoning(e.video,e.showSignIn),D=Object.assign(Object.assign({},e.analyticsData),{id:o.id,name:o.name}),z=Object.assign(Object.assign({},T),{actionType:r.Vw.Click,descriptor:r._S.Thumbnail});return n.createElement(M.u,{title:S,spanHack:!0,spanHackClassName:""},n.createElement("div",{className:(a="position-relative",a+=c&&w?" cursor-pointer":"",e.extraClasses&&(a+=" ".concat(e.extraClasses)),l===re.z.Overlay&&(a+=" rounded overflow-hidden"),a),ref:function(e){f.current=e,C.current=e}},n.createElement(F,{isPlugin:e.isPlugin,className:"sm"===e.size?"rounded":"rounded-3",appLink:w?c:null,analyticsData:D,analyticsOptions:z}),n.createElement(ie,{video:o,checkMarkStatus:e.checkMarkStatus,setCheckMarkStatus:e.setCheckMarkStatus,setFavourite:d,canFavourite:function(){var t;return(null===(t=e.canFavourite)||void 0===t?void 0:t.call(e,e.video))&&v.h.showFavouriteButton(o,E)},analyticsData:e.analyticsData,analyticsOptions:T,size:e.size}),n.createElement(b.Z,{data:g.M.getThumbnail(o),appLink:w?c:null,onClick:w?e.onClick:void 0,imageType:V.__.Thumbnails,imageOptions:s,preload:u,className:function(){var t="overflow-hidden ".concat("sm"===e.size?"rounded":"rounded-3");return e.imageClassName&&(t+=" ".concat(e.imageClassName)),l===re.z.Overlay&&(t+=" ".concat(oe.gradient)),t}(),alt:("series"in o&&(null===(t=o.series)||void 0===t?void 0:t.name)?"".concat(o.series.name,": "):"")+o.name,analyticsData:D,analyticsOptions:z},j&&n.createElement(te.z,{type:te.O.Video,size:e.size}),n.createElement(k.oy,{type:k.mS.Video}),n.createElement("div",{className:oe.overlayContainer},l===re.z.Overlay&&n.createElement(de,Object.assign({},e)),n.createElement("div",{className:"".concat(oe.topLeftContainer," d-flex flex-no-wrap")},n.createElement(R,{video:o,size:e.size}),n.createElement(A,{video:o,companyLogoFallbackUrl:e.companyLogoFallbackUrl,size:e.size})),n.createElement(O,{video:o}),n.createElement(q,{video:e.video,audience:e.audience,hideRating:e.hideRating,hideDuration:e.hideDuration,newDurationStyle:e.newDurationStyle,size:e.size}))),I&&n.createElement(G.r,{key:e.video.id,objectId:e.video.id,objectTypeId:e.video.typeId,mode:"hover",context:p.context,contextId:p.contextId,moviesAndTv:p.mtv}),l===re.z.Below&&n.createElement(de,Object.assign({},e))))}function me(e){switch(e.type){case"static":return n.createElement(ue,Object.assign({},e));case"cosmetic":return n.createElement(ue,Object.assign({},e,{hoverToPlay:!1}));case"expandable":return n.createElement(Z,Object.assign({},e));case"popout":return n.createElement(ee,Object.assign({},e));default:return}}me.defaultProps={hideRating:!0,size:"md",hoverToPlay:!0}},61150:(e,t,a)=>{a.d(t,{y:()=>v});var n=a(32735),i=a(23481),r=a(83914),o=a(5960),c=a(4594),l=a(35223);const s={topLeftContainer:"iwBld",draft:"QBpxh",badge:"KcvGx",svg:"gW733",text:"QiH5Q",sm:"tn2BH"};var d=i.T.encloseNamespace("shared.typeBadge");function u(e){switch(e){case c.E.Clip:return l.vn.Clip;case c.E.Interactive:return l.vn.Interactive;case c.E.Resource:return l.vn.Resources;default:return""}}function m(e,t){switch(e){case c.E.Clip:return"bg-dark-blue";case c.E.Interactive:return t===o.X.Draft?s.draft:"bg-green";case c.E.Resource:return"bg-indigo";default:return""}}function v(e){var t="".concat(s.badge," rounded-pill text-white ps-0 ").concat("sm"===e.size?s.sm:"");return n.createElement("div",{className:e.inContainer?"":s.topLeftContainer},n.createElement("div",{className:"".concat(t," ").concat(m(e.typeId,e.status))},n.createElement(r.x,{className:"svg-container d-block ".concat(s.svg),size:"sm"===e.size?r.S.Small:r.S.Standard,svgName:u(e.typeId)}),n.createElement("span",{className:s.text},function(e){switch(e){case c.E.Clip:return d("clip");case c.E.Interactive:return d("interactive");case c.E.Resource:return d("resource");default:return""}}(e.typeId))))}v.default={size:"md"}},38647:(e,t,a)=>{a.d(t,{m:()=>s});var n=a(32735),i=a(83914),r=a(76177),o=a(26361),c=a(35223),l=a(31908);function s(e){if(!e.yearGroups)return n.createElement(n.Fragment,null);var t=o.l.mapRestrictionToText(e.video._restrictions,e.yearGroups);return l.M.getCanBeConsumed(e.video).canConsume&&t?n.createElement(r.u,{spanHack:!0,spanHackClassName:e.className||"d-inline-block ps-1",title:t,placement:e.tooltipPlacement||"top"},n.createElement(i.x,{svgName:c.vn.Lock,size:"sm"===e.size?i.S.Small:i.S.Standard})):n.createElement(n.Fragment,null)}},60318:(e,t,a)=>{a.d(t,{u:()=>h});var n=a(32735),i=a(23481),r=a(65858),o=a(83914),c=a(36848);const l={tag:"OjHQZ",icon:"SS2zL",active:"kD1xM"};function s(e){var t,a;return e.appLink?n.createElement(c.F,{appLink:e.appLink,analyticsData:e.appLinkAnalyticsData,analyticsOptions:e.appLinkAnalyticsOptions,className:"\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ".concat(null===(t=e.theme)||void 0===t?void 0:t.container," ").concat(l.tag," ").concat(e.active?l.active:"","\n ")},n.createElement(d,Object.assign({},e))):n.createElement("div",{className:null===(a=e.theme)||void 0===a?void 0:a.container},n.createElement(d,Object.assign({},e)))}function d(e){var t;return n.createElement(n.Fragment,null,n.createElement(o.x,{className:"".concat(l.icon," rounded-circle bg-").concat(e.iconVariant," text-white"),svgName:e.svgName}),n.createElement("span",{className:"ps-1 text-nowrap user-select-none ".concat(null===(t=e.theme)||void 0===t?void 0:t.tabLabel)},e.text))}var u=a(35223),m=a(31908),v="shared.classroomGuideTag";function p(e){var t,a,o;return!e.video||m.M.isInteractive(e.video)?n.createElement(n.Fragment,null):e.video.glance?n.createElement(s,{theme:{container:"classroom-guide-tag",tabLabel:"classroom-guide-tag-label"},svgName:u.vn.GraduationCap,iconVariant:"navy",text:i.T.getPhrase(v,"classroomGuide"),appLink:e.appLink,appLinkAnalyticsData:Object.assign({glanceId:null===(t=e.video.glance)||void 0===t?void 0:t.id,totalPointsOfInterest:null===(o=null===(a=e.video.pointsOfInterest)||void 0===a?void 0:a.data)||void 0===o?void 0:o.length,videoGuidanceType:"classroom-guide"},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)}):n.createElement(n.Fragment,null)}var g="shared.interactivesTag";function y(e){var t;if(!m.M.showInteractivesGuidance(e.video))return n.createElement(n.Fragment,null);var a=!m.M.isInteractive(e.video)&&((null===(t=e.video.interactives)||void 0===t?void 0:t.data.length)||0);return n.createElement(s,{svgName:u.vn.Interactive,iconVariant:"green",text:i.T.getPhrase(g,"interactives",{smartCount:a}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"interactive",videoGuidanceTotalItems:a},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)})}var f="shared.resourcesTag";function E(e){var t;if(!m.M.showResourcesGuidance(e.video))return n.createElement(n.Fragment,null);var a=!m.M.isInteractive(e.video)&&(null===(t=e.video.resources)||void 0===t?void 0:t.data.length)||0;return n.createElement(s,{svgName:u.vn.Resources,iconVariant:"indigo",text:i.T.getPhrase(f,"resources",{smartCount:a}),appLink:e.appLink,appLinkAnalyticsData:Object.assign({videoGuidanceType:"resource",videoGuidanceTotalItems:a},e.analyticsData),appLinkAnalyticsOptions:Object.assign({actionType:r.Vw.Click,entity:m.M.getAnalyticsEntity(e.video)},e.analyticsOptions)})}function h(e){var t,a,i,r=m.M.showInteractivesGuidance(e.video)&&m.M.showResourcesGuidance(e.video);return n.createElement("div",{className:"".concat(e.containerClassName," ").concat(r?e.responsiveClassName:"")},n.createElement(p,{appLink:null===(t=e.getClassroomGuideAppLink)||void 0===t?void 0:t.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(E,{appLink:null===(a=e.getResourceGuidanceAppLink)||void 0===a?void 0:a.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}),n.createElement(y,{appLink:null===(i=e.getInteractiveGuidanceAppLink)||void 0===i?void 0:i.call(e,e.video.id,e.video.typeId),video:e.video,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions}))}},10439:(e,t,a)=>{a.d(t,{r:()=>c});var n=a(32735),i=a(17082),r=a(35429);const o={hoverContainer:"TzWQw",hovering:"gdTcW"};function c(e){var t,a=(0,r.g)();if(null===(t=a.useInitialize)||void 0===t||t.call(a,e),!a.hasProvider)return n.createElement(n.Fragment,null);if("picture-in-picture"===a.mode)return n.createElement(n.Fragment,null);if("hover"===e.mode&&a.isOnPlayPage)return n.createElement(n.Fragment,null);if("default"===a.mode||"play-page"===e.location)return n.createElement(i.t0,{node:a.portalNode});var c=a.started,l="rounded-3";"popout-video"===e.location&&(l="rounded-top-3");var s="".concat(o.hoverContainer," ").concat(c?o.hovering:""," ").concat(l," overflow-hidden");return n.createElement("div",{className:s},n.createElement(i.t0,{node:a.portalNode}))}},68626:(e,t,a)=>{var n;a.d(t,{z:()=>n}),function(e){e[e.Below=1]="Below",e[e.Overlay=2]="Overlay",e[e.Independent=3]="Independent"}(n||(n={}))}}]);
2
- //# sourceMappingURL=6948-4ab91f77dc-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6948-4ab91f77dc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/badges/BadgeListContainer.tsx","file:///app/packages/libs/shared/src/components/check-mark-button/check-mark-button.scss","file:///app/packages/libs/shared/src/components/check-mark-button/CheckMarkButton.tsx","file:///app/packages/libs/shared/src/components/mask/mask.scss","file:///app/packages/libs/shared/src/components/mask/Mask.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/thumbnail-text.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-text/ThumbnailText.tsx","file:///app/packages/libs/shared/src/components/favourite-button/favourite-button.scss","file:///app/packages/libs/shared/src/components/favourite-button/FavouriteButton.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/videos/VideoWatchProgressBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/video-thumbnail-bottom-bar.scss","file:///app/packages/libs/shared/src/components/thumbnails/bottom-bar/VideoThumbnailBottomBar.tsx","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/plugin-hover.scss","file:///app/packages/libs/shared/src/components/thumbnails/plugin-hover/PluginHover.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/thumbnail-padlock.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/thumbnail-company-logo.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo.tsx","file:///app/packages/libs/shared/src/components/video-type-badge/VideoTypeBadge.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/expandable-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/expandable/ExpandableVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/video-thumbnail-badges.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-badges/VideoThumbnailBadges.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/popout-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/popout/PopoutVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/video-thumbnail-actions.scss","file:///app/packages/libs/shared/src/components/thumbnails/thumbnail-actions/VideoThumbnailActions.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/static/static-video-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/video/static/StaticVideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/thumbnails/video/VideoThumbnail.tsx","file:///app/packages/libs/shared/src/components/type-badge/type-badge.scss","file:///app/packages/libs/shared/src/components/type-badge/TypeBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/restriction-padlock/RestrictionPadlock.tsx","file:///app/packages/libs/shared/src/components/video-guidance/tag/video-guidance-tag.scss","file:///app/packages/libs/shared/src/components/video-guidance/tag/VideoGuidanceTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/classroom-guide/ClassroomGuideTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/interactives/InteractivesTag.tsx","file:///app/packages/libs/shared/src/components/video-guidance/resources/ResourcesTag.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-guidance/VideoItemGuidance.tsx","file:///app/packages/libs/shared/src/context/player-context/components/global-player-consumer.scss","file:///app/packages/libs/shared/src/context/player-context/components/GlobalPlayerConsumer.tsx","file:///app/packages/libs/shared/src/enums/ThumbnailTextPosition.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","import * as React from 'react';\n\nimport styles from './badge.scss';\n\ninterface BadgeListContainerProps {\n className?: string;\n}\n\nexport function BadgeListContainer(props: React.PropsWithChildren<BadgeListContainerProps>): JSX.Element {\n let className = `d-flex align-items-center badge-list ${styles.minHeight}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return (\n <div className={className}>\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"unchecked\":\"bup9I\",\"outline\":\"ealw_\",\"checked\":\"A1Ov0\",\"checkMark\":\"c14lI\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DivButton } from '../div-button/DivButton';\n\nimport styles from './check-mark-button.scss';\n\nexport enum CheckMarkStatus {\n None = 'None',\n Complete = 'Complete',\n Incomplete = 'Incomplete'\n}\n\nexport type SetCheckMarkStatusFunc = (status: CheckMarkStatus) => Promise<void>;\n\ninterface CheckMarkButtonProps {\n setStatus: SetCheckMarkStatusFunc;\n status: CheckMarkStatus;\n style?: 'outline' | 'filled';\n className?: string;\n disabled?: boolean;\n}\n\nCheckMarkButton.defaultProps = {\n style: 'filled'\n};\n\nexport function CheckMarkButton(props: CheckMarkButtonProps): JSX.Element {\n // Use local state so that changes are reflected immediately.\n const [ isComplete, setIsComplete ] = React.useState(props.status === CheckMarkStatus.Complete);\n\n React.useEffect(() => {\n setIsComplete(props.status === CheckMarkStatus.Complete);\n }, [props.status]);\n\n let className = `cursor-pointer rounded-circle ${isComplete ? styles.checked : styles.unchecked}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (props.style === 'outline')\n className += ` ${styles.outline}`;\n\n function shouldRender(): boolean {\n return (\n !!props.status &&\n props.status !== CheckMarkStatus.None &&\n FunctionHelper.isFunction(props.setStatus)\n );\n }\n\n function onClick(): void {\n const shouldComplete = !isComplete;\n\n setIsComplete(shouldComplete);\n\n const newStatus = shouldComplete ? CheckMarkStatus.Complete : CheckMarkStatus.Incomplete;\n\n props.setStatus(newStatus).catch(() => {\n setIsComplete(!shouldComplete);\n });\n }\n\n if (!shouldRender())\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick} disabled={props.disabled}>\n <SvgContainer\n svgName={cvSvgLibrary.Check}\n className={`svg-container ${styles.checkMark}`}\n />\n </DivButton>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"mask\":\"qpc7L\",\"small\":\"L8Oxs\",\"video\":\"b8kJW\",\"playlist\":\"eo2p2\",\"maskContainer\":\"lpwag\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './mask.scss';\n\nexport enum MaskType {\n Video,\n Playlist,\n Series\n}\n\nfunction getClassByType(type: MaskType): string {\n if (type === MaskType.Video)\n return styles.video;\n\n if (type === MaskType.Playlist)\n return styles.playlist;\n\n return '';\n}\n\nfunction getSvgType(type: MaskType): string {\n if (type === MaskType.Video)\n return cvSvgLibrary.PlayCircle;\n\n return '';\n}\n\ntype MaskSize = 'sm' | 'md';\n\ninterface MaskProps {\n type: MaskType;\n size?: MaskSize;\n}\n\nMask.defaults = {\n size: 'md'\n};\n\nexport function Mask(props: MaskProps): JSX.Element {\n const { type, size } = props;\n\n const typeClass = getClassByType(type);\n const svgType = getSvgType(type);\n\n return (\n <div className={`${styles.maskContainer} ${size === 'sm' ? styles.small : ''}`}>\n <div className={ styles.mask }></div>\n <SvgContainer svgName={svgType} className={ typeClass } />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"r70GR\",\"titleContainer\":\"rULXI\",\"seriesTitleBox\":\"h9k1p\",\"badgeContainer\":\"QaDDX\",\"audienceBadge\":\"hvsne\"};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './thumbnail-text.scss';\n\ntype VideoThumbnailTextProps = Pick<PopoutVideoThumbnailProps, 'video'|'appLink'|'subTextAppLink'|'yearGroups'|'subTextType'>\n\nexport function ThumbnailText(props: VideoThumbnailTextProps): JSX.Element {\n const { video, appLink, subTextAppLink } = props;\n const { canNavigate } = VideoHelper.getCanBeConsumed(video);\n\n return (\n <div className={`mt-2 ${styles.container}`}>\n <div className={`d-flex flex-column ${styles.titleContainer}`}>\n {VideoHelper.isVideo(video) && (\n <VideoSubText\n type={props.subTextType}\n className={`text-truncate ${styles.seriesTitleBox}`}\n video={video}\n appLink={subTextAppLink}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n )}\n \n <AppLink className='h6 text-reset clamp-2 align-middle' appLink={canNavigate ? appLink : null}>\n {video.name}\n <RestrictionPadlock\n video={props.video}\n yearGroups={props.yearGroups}\n size='sm'\n />\n </AppLink>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"favourited\":\"t0svX\",\"favouriteButton\":\"CFRo3\",\"heart\":\"ZMMQu\",\"heartOutline\":\"truFo\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './favourite-button.scss';\n\nconst namespace = 'shared.favouriteButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouriteButtonProps {\n video: VideoTypes;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n className?: string;\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n}\n\nexport function FavouriteButton(props: FavouriteButtonProps): JSX.Element {\n const alerts = useAlerts();\n\n const initialState = FavouriteHelper.isFavouritedByCurrentUser(props.video);\n\n // Use local state so that changes are reflected immediately.\n const [ isFavourite, setIsFavourite ] = React.useState(initialState);\n\n React.useEffect(() => {\n setIsFavourite(initialState);\n }, [initialState]);\n\n const flexClasses = 'd-flex align-items-center justify-content-center';\n let className = `${flexClasses} cursor-pointer ${styles.favouriteButton} ${isFavourite ? styles.favourited : ''}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n function onClick(): void {\n const shouldFavourite = !isFavourite;\n\n function onError(): void {\n function getErrorPhraseKey(): string {\n if (VideoHelper.isClip(props.video))\n return shouldFavourite ? 'favouriteClipError' : 'unfavouriteClipError';\n\n if (VideoHelper.isInteractive(props.video))\n return shouldFavourite ? 'favouriteInteractiveError' : 'unfavouriteInteractiveError';\n\n return shouldFavourite ? 'favouriteVideoError' : 'unfavouriteVideoError';\n }\n\n alerts.error(getPhrase(getErrorPhraseKey()));\n setIsFavourite(!shouldFavourite);\n }\n\n setIsFavourite(shouldFavourite);\n props.setFavourite(props.video, shouldFavourite, null, onError, props.analyticsData, props.analyticsOptions);\n }\n\n if (!FunctionHelper.isFunction(props.setFavourite) || !FunctionHelper.isFunction(props.canFavourite))\n return <></>;\n\n // Don't render until we know the state of isFavourite\n if (!props.canFavourite(props.video))\n return <></>;\n\n return (\n <DivButton className={className} onClick={onClick}>\n {/* We have the two svgs because they get swapped out on hover by the styles */}\n <SvgContainer\n svgName={cvSvgLibrary.Heart}\n className={`svg-container ${styles.heart}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.HeartOutline}\n className={`svg-container ${styles.heartOutline}`}\n />\n </DivButton>\n );\n}","import * as React from 'react';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoWatchProgressBarProps {\n video: Video;\n}\n\nexport function VideoWatchProgressBar(props: VideoWatchProgressBarProps): JSX.Element {\n const progress = VideoHelper.getVideoProgress(props.video);\n\n const watchPercentage = progress && props.video.duration\n && progress / props.video.duration * 100000;\n\n if (!watchPercentage)\n return <></>;\n\n return <div className='bg-primary h-100' style={{ width: `${watchPercentage}%` }} />;\n}","// extracted by mini-css-extract-plugin\nexport default {\"bottomBar\":\"YnXtZ\"};","import React from 'react';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { VideoWatchProgressBar } from './videos/VideoWatchProgressBar';\n\nimport styles from './video-thumbnail-bottom-bar.scss';\n\ninterface VideoThumbnailBottomBarProps {\n video: VideoTypes;\n}\n\nexport function VideoThumbnailBottomBar(props: VideoThumbnailBottomBarProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video)) {\n return <></>;\n }\n\n return (\n <div className={styles.bottomBar}>\n <VideoWatchProgressBar video={props.video} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pluginHover\":\"h4RQa\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './plugin-hover.scss';\n\nconst namespace = 'shared.pluginHover';\n\ninterface PluginHoverProps {\n isPlugin: boolean;\n className?: string;\n onClick?: () => void;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function PluginHover(props: PluginHoverProps): JSX.Element {\n if (!props.isPlugin)\n return <></>;\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n onClick={props.onClick}\n className={`\n position-absolute top-0 start-0 end-0 bottom-0 opacity-0 cursor-pointer\n ${styles.pluginHover}\n ${props.className ? props.className : ''}\n `}\n >\n <span className='position-absolute top-50 start-50 translate-middle text-nowrap h4 text-white'>\n <Text namespace={namespace} phrase='embed' />\n </span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"padlock\":\"w4cg8\",\"sm\":\"JpIYd\"};","import React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './thumbnail-padlock.scss';\n\ninterface ThumbnailPadlockProps {\n size?: VideoItemSize;\n}\n\nexport function ThumbnailPadlock(props: ThumbnailPadlockProps): JSX.Element {\n const svgSize = props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard;\n\n return (\n <div className={`${styles.padlock} ${props.size === 'sm' ? styles.sm : ''} bg-white cursor-default d-flex align-items-center justify-content-center`}>\n <SvgContainer svgName={cvSvgLibrary.Lock} size={svgSize} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"OA9ft\",\"sm\":\"fyo2J\"};","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Tooltip } from '../../tooltip/Tooltip';\n\nimport styles from './thumbnail-company-logo.scss';\n\ninterface ThumbnailCompanyLogoProps {\n companyLogoFallbackUrl: string;\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nThumbnailCompanyLogo.defaultProps = {\n size: 'md'\n};\n\nexport function ThumbnailCompanyLogo(props: ThumbnailCompanyLogoProps): JSX.Element {\n if (!VideoHelper.isVideo(props.video) || !props.companyLogoFallbackUrl)\n return <></>;\n\n const company = props.video.productionCompanies?.data?.[0];\n const url = company?.logo?.url ?? props.companyLogoFallbackUrl;\n\n if (!url)\n return <></>;\n\n return (\n <div>\n <Tooltip\n title={company?.name}\n spanHack\n >\n <div\n className={`${styles.logo} ${props.size === 'sm' ? styles.sm : ''}`}\n style={{\n backgroundImage: `url(${url})`\n }}\n />\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces/VideoTypes';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TypeBadge } from '../type-badge/TypeBadge';\n\ninterface VideoTypeBadgeProps {\n video: VideoTypes;\n size?: VideoItemSize;\n}\n\nVideoTypeBadge.default = {\n size: 'md'\n};\n\nexport function VideoTypeBadge(props: VideoTypeBadgeProps): JSX.Element {\n if (VideoHelper.isClip(props.video))\n return <TypeBadge typeId={MasterType.Clip} size={props.size} inContainer />;\n\n if (VideoHelper.isInteractive(props.video))\n return (\n <TypeBadge\n typeId={MasterType.Interactive}\n status={props.video.status}\n size={props.size}\n inContainer\n />\n );\n\n return <></>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"overlayContainer\":\"qu3A3\",\"topLeftContainer\":\"gjhMe\",\"topRightContainer\":\"XAfZW\",\"overlay\":\"NTrtm\",\"downScale\":\"puKcM\",\"title\":\"_6FukN\",\"gradient\":\"rXzR8\",\"playIcon\":\"dndOA\",\"videoProgress\":\"yhWf4\",\"badgeContainer\":\"AtgmC\",\"clipProgress\":\"E2egN\",\"interactiveProgress\":\"WycwR\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { ExpandableVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './expandable-video-thumbnail.scss';\n\nfunction getTitleClass(hovering: boolean): string {\n let className = 'mb-1';\n\n if (hovering) {\n className += styles.downScale;\n }\n \n return className;\n}\n\nexport function ExpandableVideoThumbnail(props: ExpandableVideoThumbnailProps): JSX.Element {\n const {\n video, appLink, imageOptions, setFavourite, canFavourite,\n preload, hovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, hovering);\n const isVideo = VideoHelper.isVideo(video);\n\n const rating = VideoHelper.getRating(props.video);\n\n const [ thumbnailHoverRef, isThumbnailHovering ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n\n const showThumbnailPreviewVideo = isThumbnailHovering && canConsume && hoverToPlay;\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <div className='position-relative rounded-3 overflow-hidden' ref={thumbnailHoverRef}>\n <PluginHover\n isPlugin={props.isPlugin}\n className='rounded-3'\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n {showFavouriteButton &&\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n }\n {/* top right */}\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <ThumbnailPadlock />\n </div>\n )}\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {/* <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} /> */}\n\n <VideoTypeBadge video={video} />\n\n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={styles.gradient}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n {!!(hovering && canNavigate) && (\n <SvgContainer className={styles.playIcon} svgName={cvSvgLibrary.PlayCircle} />\n )}\n\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n <div className={styles.overlay}>\n <div className={`${getTitleClass(hovering)} ${styles.title}`}>\n {isVideo && (\n <VideoSubText\n type={props.subTextType}\n className='text-shadow clamp-1'\n video={video}\n appLink={null}\n analyticsOptions={null}\n />\n )}\n\n <span className='h6 text-reset text-shadow clamp-1'>\n {VideoHelper.getTitle(video)}\n </span>\n </div>\n\n <VideoThumbnailBottomBar video={video} />\n\n {hovering && (\n <BadgeListContainer className='mt-1'>\n {VideoHelper.isVideo(video) && (\n <>\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n {video.hasSubtitle && (\n <span className='badge p-0'>\n <SvgContainer svgName={cvSvgLibrary.CloseCaptionBadge} />\n </span>\n )}\n <Badge\n type={BadgeType.Interactive}\n data={video.hasInteractives}\n />\n <Badge\n type={BadgeType.DurationExact}\n data={VideoHelper.getDuration(props.video)}\n />\n </>\n )}\n </BadgeListContainer>\n )}\n </div>\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"badgeContainer\":\"fy9Un\",\"sm\":\"Rb0TL\"};","import React from 'react';\n\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Audience, Video } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-thumbnail-badges.scss';\n\ninterface VideoThumbnailBadgesProps {\n video?: Video;\n audience?: Audience;\n hideRating?: boolean;\n hideDuration?: boolean;\n newDurationStyle?: boolean;\n size?: VideoItemSize;\n duration?: number;\n}\n\nVideoThumbnailBadges.defaultProps = {\n newDurationStyle: true,\n size: 'md'\n};\n\nexport function VideoThumbnailBadges(props: VideoThumbnailBadgesProps): JSX.Element {\n const rating = VideoHelper.getRating(props.video);\n\n const showAudience = !!props.audience && props.size !== 'sm';\n const showRating = !showAudience && !props.hideRating && !!rating && props.size !== 'sm';\n\n if (props.hideDuration && !showAudience && !showRating)\n return <></>;\n\n return (\n <BadgeListContainer className={`${styles.badgeContainer} ${props.size === 'sm' ? styles.sm : ''}`}>\n {showAudience && (\n <AudienceLabel\n audience={props.audience}\n className='bg-white text-dark'\n border='dark'\n />\n )}\n {showRating && (\n <Badge\n type={BadgeType.Rating}\n data={rating}\n />\n )}\n {!props.hideDuration && (\n <Badge\n type={props.newDurationStyle ? BadgeType.DurationApproximate : BadgeType.DurationExact}\n data={props.duration || VideoHelper.getDuration(props.video)}\n />\n )}\n </BadgeListContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"preview\":\"whbhf\",\"topLeftContainer\":\"wHY80\",\"details\":\"vMaXP\",\"isHovering\":\"tR1jA\",\"videoGuidanceTags\":\"KJrT1\",\"responsiveGuidance\":\"OixHb\",\"dropdown\":\"oZXV7\",\"show\":\"EiQ04\",\"topRightContainer\":\"FAuzc\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { HoverableProps, HoverToPortalContainer } from 'libs/shared/components/hover-to-portal-container/HoverToPortalContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { ThumbnailPadlock } from 'libs/shared/components/thumbnails/thumbnail-actions/padlock/ThumbnailPadlock';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { PopoutVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemGuidance } from 'libs/shared/components/video-list/components/video-guidance/VideoItemGuidance';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailCompanyLogo } from '../../thumbnail-company/ThumbnailCompanyLogo';\n\nimport styles from './popout-video-thumbnail.scss';\n\ntype PopoutVideoProps = HoverableProps & PopoutVideoThumbnailProps;\n\nconst PopoutVideo = (props: PopoutVideoProps): JSX.Element => {\n const {\n video, appLink, imageOptions, preload, setFavourite, canFavourite,\n isHovering, hoverToPlay, companyLogoFallbackUrl\n } = props;\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n React.useEffect(() => {\n return () => {\n props.cleanPortalNode?.();\n };\n }, []);\n\n let className = 'position-relative bg-white';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n if (isHovering)\n className += ` rounded-3 shadow-lg`;\n \n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showThumbnailPreviewVideo = props.isHovering && canConsume && hoverToPlay;\n const showFavouriteButton = FavouriteHelper.showFavouriteButton(props.video, isHovering);\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <div className={className}>\n {showFavouriteButton && (\n <div className={styles.topRightContainer}>\n <FavouriteButton\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n video={video}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n />\n </div>\n )}\n\n {!canNavigate && (\n <div className={styles.topRightContainer}>\n <Tooltip title={VideoHelper.getPrivacyReasoning(props.video)} spanHack spanHackClassName=''>\n <ThumbnailPadlock />\n </Tooltip>\n </div>\n )}\n\n <div className='position-relative'>\n <PluginHover\n isPlugin={props.isPlugin}\n className={isHovering ? 'rounded-top-3' : 'rounded-3'}\n onClick={() => props.cleanPortalNode?.()}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n <BaseImage\n onClick={() => props.cleanPortalNode?.()}\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={`overflow-hidden ${isHovering ? styles.preview : `rounded-3 ${styles.original}`}`}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n <div className='p-absolute w-100 h-100 text-white'>\n\n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {/* <LiteOwnerAvatar video={video} imageCdnUrl={props.imageCdnUrl} /> */}\n \n <VideoTypeBadge video={video} />\n \n <ThumbnailCompanyLogo video={video} companyLogoFallbackUrl={companyLogoFallbackUrl} />\n </div>\n\n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n />\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n location='popout-video'\n />\n }\n </div>\n\n {!isHovering && !props.hideTitle && (\n <ThumbnailText {...props}/>\n )}\n \n <div className={`${styles.details} ${isHovering ? `${styles.isHovering} box-shadow` : ''}`}>\n {isHovering && (\n <>\n <div className={`${isHovering ? styles.videoGuidanceTags : ''}`}>\n <ThumbnailText {...props}/>\n\n {(props.showVideoGuidance && isHovering) && (\n <VideoItemGuidance\n getClassroomGuideAppLink={props.getClassroomGuideAppLink}\n getResourceGuidanceAppLink={props.getResourceGuidanceAppLink}\n getInteractiveGuidanceAppLink={props.getInteractiveGuidanceAppLink}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n responsiveClassName={styles.responsiveGuidance}\n containerClassName={`d-flex justify-content-start align-items-center pt-2`}\n />\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\n\nexport function PopoutVideoThumbnail(props: PopoutVideoThumbnailProps): JSX.Element {\n return (\n <>\n <HoverToPortalContainer<PopoutVideoThumbnailProps>\n hoverableComponent={PopoutVideo}\n componentProps={props}\n fixedHoverWidth={400}\n minHoverWidth={400}\n analyticsData={{\n ...props.analyticsData,\n id: props.video.id,\n name: props.video.name\n }}\n analyticsOptions={{\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(props.video)\n }}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"efxnE\",\"cvIcon\":\"OJ_ZQ\",\"action\":\"vWvGn\"};","import React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { CheckMarkButton, CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { FavouriteButton } from 'libs/shared/components/favourite-button/FavouriteButton';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { CanFavouriteFunc, FavouriteFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ThumbnailPadlock } from './padlock/ThumbnailPadlock';\n\nimport styles from './video-thumbnail-actions.scss';\n\nfunction hasActions(props: VideoThumbnailActionsProps): boolean {\n if (!VideoHelper.getCanBeConsumed(props.video)?.canConsume)\n return true;\n\n if (FunctionHelper.isFunction(props.setFavourite) && FunctionHelper.isFunction(props.canFavourite))\n return true;\n\n if (FunctionHelper.isFunction(props.setCheckMarkStatus))\n return true;\n\n return false;\n}\n\ninterface VideoThumbnailActionsProps {\n video: VideoTypes;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n checkMarkStatus?: CheckMarkStatus;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n size?: VideoItemSize;\n}\n\nexport function VideoThumbnailActions(props: VideoThumbnailActionsProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canNavigate) {\n return (\n <div className={styles.container}>\n <ThumbnailPadlock size={props.size} />\n </div>\n );\n }\n \n if (!hasActions(props))\n return <></>;\n\n return (\n <div className={`${styles.container} d-flex align-items-center`}>\n <FavouriteButton\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n video={props.video}\n className={styles.action}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n\n <CheckMarkButton\n status={props.checkMarkStatus}\n setStatus={props.setCheckMarkStatus}\n className={styles.action}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"titleOverlay\":\"krg9f\",\"clip\":\"MPRU6\",\"large\":\"g5_ww\",\"interactive\":\"Zzo3e\",\"titleBelow\":\"tZjPt\",\"overlayContainer\":\"EElm1\",\"topLeftContainer\":\"hrw3I\",\"gradient\":\"LS_EH\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ClickDescriptor, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Mask, MaskType } from 'libs/shared/components/mask/Mask';\nimport { VideoThumbnailBottomBar } from 'libs/shared/components/thumbnails/bottom-bar/VideoThumbnailBottomBar';\nimport { PluginHover } from 'libs/shared/components/thumbnails/plugin-hover/PluginHover';\nimport { VideoThumbnailActions } from 'libs/shared/components/thumbnails/thumbnail-actions/VideoThumbnailActions';\nimport { VideoThumbnailBadges } from 'libs/shared/components/thumbnails/thumbnail-badges/VideoThumbnailBadges';\nimport { ThumbnailCompanyLogo } from 'libs/shared/components/thumbnails/thumbnail-company/ThumbnailCompanyLogo';\nimport { StaticVideoThumbnailProps } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { VideoTypeBadge } from 'libs/shared/components/video-type-badge/VideoTypeBadge';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useHover, useHoverIntent } from 'libs/shared/hooks/UseHover';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './static-video-thumbnail.scss';\n\nconst namespace = 'shared.staticVideoThumbnail';\n\nfunction ThumbnailText(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, subTextAppLink, textPosition, appLink } = props;\n\n const textIsOverlayed = textPosition === ThumbnailTextPosition.Overlay;\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n\n let className = '';\n\n if (textIsOverlayed) {\n className = styles.titleOverlay;\n\n if (canNavigate) {\n if (VideoHelper.isClip(video))\n className += ' ' + styles.clip;\n if (VideoHelper.isInteractive(video))\n className += ' ' + styles.interactive;\n }\n } else {\n className = styles.titleBelow;\n }\n\n return (\n <div className={className}>\n {VideoHelper.isVideo(video) &&\n <VideoSubText\n type={props.subTextType}\n className={textIsOverlayed ? 'text-shadow clamp-1' : 'clamp-2'}\n video={video}\n appLink={!textIsOverlayed ? subTextAppLink : null}\n analyticsOptions={{ location: LocationContext.VideoThumbnail }}\n />\n }\n\n {(textIsOverlayed || !canNavigate)\n ? (\n <span className={`h6 text-reset clamp-1`}>\n {video.name ?? LanguageService.getPhrase(namespace, 'videoUnavailable')}\n </span>\n ) : (\n <AppLink className='h6 text-reset clamp-2' appLink={appLink}>\n {video.name}\n </AppLink>\n )\n }\n </div>\n );\n}\n\nexport function StaticVideoThumbnail(props: StaticVideoThumbnailProps): JSX.Element {\n const { video, appLink, textPosition, imageOptions, setFavourite, preload, hoverToPlay } = props;\n\n const appLinkParams = ObjectHelper.isObject(appLink?.params) ? appLink?.params as HashObject : {};\n\n const [ hoverRef, isHovering ] = useHover<HTMLDivElement>();\n const [ hoverIntentRef, isHoveringIntentionally ] = useHoverIntent<HTMLDivElement>({ delay: 100 });\n const { canNavigate, canConsume } = VideoHelper.getCanBeConsumed(video);\n\n function setHoverRefs(r: HTMLDivElement) {\n hoverRef.current = r;\n hoverIntentRef.current = r;\n }\n\n const showThumbnailPreviewVideo = isHoveringIntentionally && canConsume && hoverToPlay;\n\n function canFavourite(): boolean {\n return props.canFavourite?.(props.video) && FavouriteHelper.showFavouriteButton(video, isHovering);\n }\n\n function getContainerClass(): string {\n let className = 'position-relative';\n\n className += (appLink && canNavigate) ? ' cursor-pointer' : '';\n\n if (props.extraClasses)\n className += ` ${props.extraClasses}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` rounded overflow-hidden`;\n\n return className;\n }\n\n function getThumbnailClass(): string {\n let className = `overflow-hidden ${props.size === 'sm' ? 'rounded' : 'rounded-3'}`;\n\n if (props.imageClassName)\n className += ` ${props.imageClassName}`;\n\n if (textPosition === ThumbnailTextPosition.Overlay)\n className += ` ${styles.gradient}`;\n \n return className;\n }\n\n const eventAnalyticsOptions = {\n ...props.analyticsOptions,\n entity: VideoHelper.getAnalyticsEntity(video)\n };\n\n const showMask = !!appLink && !props.hideMask && canNavigate;\n const tooltip = VideoHelper.getPrivacyReasoning(props.video, props.showSignIn);\n\n const analyticsData = {\n ...props.analyticsData,\n id: video.id,\n name: video.name\n };\n const analyticsOptions = {\n ...eventAnalyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Thumbnail\n };\n\n return (\n <Tooltip title={tooltip} spanHack spanHackClassName=''>\n <div className={getContainerClass()} ref={setHoverRefs}>\n <PluginHover\n isPlugin={props.isPlugin}\n className={props.size === 'sm' ? 'rounded' : 'rounded-3'}\n appLink={canNavigate ? appLink : null}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n />\n\n <VideoThumbnailActions\n video={video}\n checkMarkStatus={props.checkMarkStatus}\n setCheckMarkStatus={props.setCheckMarkStatus}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n analyticsData={props.analyticsData}\n analyticsOptions={eventAnalyticsOptions}\n size={props.size}\n />\n\n <BaseImage\n data={VideoHelper.getThumbnail(video)}\n appLink={canNavigate ? appLink : null}\n onClick={canNavigate ? props.onClick : undefined}\n imageType={ImageType.Thumbnails}\n imageOptions={imageOptions}\n preload={preload}\n className={getThumbnailClass()}\n alt={('series' in video && video.series?.name ? `${video.series.name}: ` : '') + video.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n {showMask && (\n <Mask type={MaskType.Video} size={props.size} />\n )}\n <ImageFallback type={ImageFallbackType.Video} />\n <div className={styles.overlayContainer}>\n {/* overlay */}\n {textPosition === ThumbnailTextPosition.Overlay && <ThumbnailText {...props} />}\n \n {/* top left */}\n <div className={`${styles.topLeftContainer} d-flex flex-no-wrap`}>\n {/* <LiteOwnerAvatar video={video} size={props.size} imageCdnUrl={props.imageCdnUrl} /> */}\n \n <VideoTypeBadge video={video} size={props.size} />\n\n <ThumbnailCompanyLogo\n video={video}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n size={props.size}\n />\n </div>\n\n {/* bottom */}\n <VideoThumbnailBottomBar video={video} />\n \n {/* bottom right */}\n <VideoThumbnailBadges\n video={props.video}\n audience={props.audience}\n hideRating={props.hideRating}\n hideDuration={props.hideDuration}\n newDurationStyle={props.newDurationStyle}\n size={props.size}\n />\n </div>\n </BaseImage>\n {showThumbnailPreviewVideo &&\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n mode='hover'\n context={appLinkParams.context}\n contextId={appLinkParams.contextId}\n moviesAndTv={appLinkParams.mtv}\n />\n }\n\n {textPosition === ThumbnailTextPosition.Below && <ThumbnailText {...props} />}\n </div>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus, SetCheckMarkStatusFunc } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Audience, CanFavouriteFunc, FavouriteFunc, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport { ExpandableVideoThumbnail } from './expandable/ExpandableVideoThumbnail';\nimport { PopoutVideoThumbnail } from './popout/PopoutVideoThumbnail';\nimport { StaticVideoThumbnail } from './static/StaticVideoThumbnail';\n\ninterface BaseVideoThumbnailProps {\n video: VideoTypes;\n imageOptions: ImageOptions;\n appLink: Core.AppLink;\n onClick?: () => void;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n preload?: boolean;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Location context required\n hoverToPlay?: boolean;\n companyLogoFallbackUrl?: string;\n imageCdnUrl?: string;\n isPlugin: boolean;\n \n /**\n * TODO: Fix whatever this used to do in playlists\n */\n canRemovePrivateVideos?: boolean;\n subTextType?: VideoSubTextType;\n subTextAppLink?: Core.AppLink;\n}\n\nexport interface ExpandableVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'expandable';\n newDurationStyle?: boolean;\n hovering: boolean;\n}\n\nexport interface PopoutVideoThumbnailProps extends BaseVideoThumbnailProps {\n type: 'popout';\n hideDuration: boolean;\n extraClasses?: string;\n audience: Audience;\n imageCdnUrl: string;\n hideRating?: boolean;\n yearGroups: YearGroup[];\n hideTitle?: boolean;\n showVideoGuidance: boolean;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n}\n\ninterface BaseStaticVideoThumbnailProps extends BaseVideoThumbnailProps {\n textPosition: ThumbnailTextPosition;\n extraClasses?: string;\n imageClassName?: string;\n size: 'sm' | 'md';\n hideMask?: boolean;\n showSignIn?: boolean;\n setCheckMarkStatus?: SetCheckMarkStatusFunc;\n checkMarkStatus?: CheckMarkStatus;\n videoTypeBadgeSize?: 'sm' | 'std';\n hideDuration?: boolean;\n audience?: Audience;\n newDurationStyle?: boolean;\n hideRating?: boolean;\n}\n\ninterface PureStaticVideoThumbnailProps extends BaseStaticVideoThumbnailProps {\n type: 'static';\n}\n\n/**\n * Allows us to have loose types when we only want to display a thumbnail\n * without any of the functionality - Sha\n */\ninterface CosmeticVideoThumbnailProps extends Partial<BaseStaticVideoThumbnailProps> {\n type: 'cosmetic';\n}\n\nexport type StaticVideoThumbnailProps = PureStaticVideoThumbnailProps | CosmeticVideoThumbnailProps;\n\nexport type VideoThumbnailProps = ExpandableVideoThumbnailProps |\n StaticVideoThumbnailProps |\n PopoutVideoThumbnailProps |\n CosmeticVideoThumbnailProps;\n\nVideoThumbnail.defaultProps = {\n hideRating: true,\n size: 'md',\n hoverToPlay: true\n};\n\nexport function VideoThumbnail(props: VideoThumbnailProps): JSX.Element {\n switch (props.type) {\n case 'static':\n return <StaticVideoThumbnail {...props} />;\n case 'cosmetic':\n // No hover to play for cosmetic use of VideoThumbnail\n return <StaticVideoThumbnail {...props} hoverToPlay={false} />;\n case 'expandable':\n // Expandable thumbnails show metadata on hover. Static display the duration and don't expand on hover\n return <ExpandableVideoThumbnail {...props} />;\n case 'popout':\n return <PopoutVideoThumbnail {...props} />;\n default:\n return;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"topLeftContainer\":\"iwBld\",\"draft\":\"QBpxh\",\"badge\":\"KcvGx\",\"svg\":\"gW733\",\"text\":\"QiH5Q\",\"sm\":\"tn2BH\"};","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 { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './type-badge.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): string {\n switch (typeId) {\n case MasterType.Clip:\n return cvSvgLibrary.Clip;\n case MasterType.Interactive:\n return cvSvgLibrary.Interactive;\n case MasterType.Resource:\n return cvSvgLibrary.Resources;\n default:\n return '';\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-dark-blue';\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 svgName={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface RestrictionPadlockProps {\n tooltip?: string;\n className?: string;\n tooltipPlacement?: Placement\n size?: VideoItemSize;\n video: VideoTypes;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionPadlock(props: RestrictionPadlockProps): JSX.Element {\n if (!props.yearGroups)\n return <></>;\n\n const title = RestrictionHelper.mapRestrictionToText(props.video._restrictions, props.yearGroups);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume || !title)\n return <></>;\n\n return (\n <Tooltip\n spanHack\n spanHackClassName={props.className || 'd-inline-block ps-1'}\n title={title}\n placement={props.tooltipPlacement || 'top'}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Lock}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n />\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"OjHQZ\",\"icon\":\"SS2zL\",\"active\":\"kD1xM\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\n\nimport { AppLink } from '../../app-link/AppLink';\n\nimport styles from './video-guidance-tag.scss';\n\ninterface VideoGuidanceTagProps {\n text: string;\n svgName: string;\n iconVariant: string;\n active?: boolean;\n appLink?: Core.AppLink;\n appLinkAnalyticsData?: HashObject;\n appLinkAnalyticsOptions?: AnalyticsOptions;\n theme?: {\n tabLabel?: string;\n container?: string;\n }\n}\n\nfunction ContainerWrapper(props: VideoGuidanceTagProps): JSX.Element {\n if (props.appLink) {\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={props.appLinkAnalyticsData}\n analyticsOptions={props.appLinkAnalyticsOptions}\n className={`\n p-1 pe-2 rounded-pill d-inline-flex align-items-center cursor-pointer\n text-decoration-none ${props.theme?.container} ${styles.tag} ${props.active ? styles.active : ''}\n `}\n >\n <VideoGuidanceTag {...props} />\n </AppLink>\n );\n }\n\n return (\n <div className={props.theme?.container}>\n <VideoGuidanceTag {...props} />\n </div>\n );\n}\n\nfunction VideoGuidanceTag(props: VideoGuidanceTagProps): JSX.Element {\n return (\n <>\n <SvgContainer\n className={`${styles.icon} rounded-circle bg-${props.iconVariant} text-white`}\n svgName={props.svgName}\n />\n\n <span className={`ps-1 text-nowrap user-select-none ${props.theme?.tabLabel}`}>\n {props.text}\n </span>\n </>\n );\n}\n\nexport { ContainerWrapper as VideoGuidanceTag };","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.classroomGuideTag';\n\ninterface ClassroomGuideTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ClassroomGuideTag(props: ClassroomGuideTagProps): JSX.Element {\n if (!props.video || VideoHelper.isInteractive(props.video))\n return <></>;\n\n if (!props.video.glance)\n return <></>;\n\n return (\n <VideoGuidanceTag\n theme={{\n container: 'classroom-guide-tag',\n tabLabel: 'classroom-guide-tag-label'\n }}\n svgName={cvSvgLibrary.GraduationCap}\n iconVariant='navy'\n text={LanguageService.getPhrase(namespace, 'classroomGuide')}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n glanceId: props.video.glance?.id,\n totalPointsOfInterest: props.video.pointsOfInterest?.data?.length,\n videoGuidanceType: 'classroom-guide',\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.interactivesTag';\n\ninterface InteractivesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function InteractivesTag(props: InteractivesTagProps): JSX.Element {\n if (!VideoHelper.showInteractivesGuidance(props.video))\n return <></>;\n \n const interactiveCount = !VideoHelper.isInteractive(props.video) && (props.video.interactives?.data.length || 0);\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Interactive}\n iconVariant='green'\n text={LanguageService.getPhrase(namespace, 'interactives', { smartCount: interactiveCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'interactive',\n videoGuidanceTotalItems: interactiveCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions, UserAction } from 'libs/analytics/interfaces';\n\nimport { VideoGuidanceTag } from 'libs/shared/components/video-guidance/tag/VideoGuidanceTag';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'shared.resourcesTag';\n\ninterface ResourcesTagProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n analyticsData: HashObject;\n analyticsOptions: AnalyticsOptions;\n}\n\nexport function ResourcesTag(props: ResourcesTagProps): JSX.Element {\n if (!VideoHelper.showResourcesGuidance(props.video))\n return <></>;\n\n const resourceCount = !VideoHelper.isInteractive(props.video) && props.video.resources?.data.length || 0;\n\n return (\n <VideoGuidanceTag\n svgName={cvSvgLibrary.Resources}\n iconVariant='indigo'\n text={LanguageService.getPhrase(namespace, 'resources', { smartCount: resourceCount })}\n appLink={props.appLink}\n appLinkAnalyticsData={{\n videoGuidanceType: 'resource',\n videoGuidanceTotalItems: resourceCount,\n ...props.analyticsData\n }}\n appLinkAnalyticsOptions={{\n actionType: UserAction.Click,\n entity: VideoHelper.getAnalyticsEntity(props.video),\n ...props.analyticsOptions\n }}\n />\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { ClassroomGuideTag } from 'libs/shared/components/video-guidance/classroom-guide/ClassroomGuideTag';\nimport { InteractivesTag } from 'libs/shared/components/video-guidance/interactives/InteractivesTag';\nimport { ResourcesTag } from 'libs/shared/components/video-guidance/resources/ResourcesTag';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemGuidanceProps {\n video: VideoTypes;\n getVideoAppLink?: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n getInteractiveGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getResourceGuidanceAppLink: (id: string, type: MasterType) => Core.AppLink;\n getClassroomGuideAppLink: (id: string, type: MasterType) => Core.AppLink;\n containerClassName: string;\n responsiveClassName?: string;\n}\n\nexport function VideoItemGuidance(props: VideoItemGuidanceProps): JSX.Element {\n const showingResourcesAndInteractives = (\n VideoHelper.showInteractivesGuidance(props.video) &&\n VideoHelper.showResourcesGuidance(props.video)\n );\n\n return (\n <div className={`${props.containerClassName} ${showingResourcesAndInteractives ? props.responsiveClassName : ''}`}>\n <ClassroomGuideTag\n appLink={props.getClassroomGuideAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <ResourcesTag\n appLink={props.getResourceGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n <InteractivesTag\n appLink={props.getInteractiveGuidanceAppLink?.(props.video.id, props.video.typeId)}\n video={props.video}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"hoverContainer\":\"TzWQw\",\"hovering\":\"gdTcW\"};","import React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\n\nimport styles from './global-player-consumer.scss';\n\ninterface GlobalPlayerConsumerOptions extends PlayerInitializationData {\n location?: 'popout-video' | 'play-page';\n}\n\nexport function GlobalPlayerConsumer(props: GlobalPlayerConsumerOptions): JSX.Element {\n const playerContext = usePlayerContext();\n\n playerContext.useInitialize?.(props);\n\n if (!playerContext.hasProvider)\n return <></>;\n\n if (playerContext.mode === 'picture-in-picture')\n return <></>;\n\n if (props.mode === 'hover' && playerContext.isOnPlayPage)\n return <></>;\n\n if (playerContext.mode === 'default' || props.location === 'play-page')\n return <OutPortal node={playerContext.portalNode} />;\n\n /**\n * When hovering, we don't want to show the player until the video has started playing.\n */\n const shouldShow = playerContext.started;\n\n let rounding = 'rounded-3';\n if (props.location === 'popout-video')\n rounding = 'rounded-top-3';\n\n const className = `${styles.hoverContainer} ${shouldShow ? styles.hovering : ''} ${rounding} overflow-hidden`;\n\n return (\n <div className={className}>\n <OutPortal node={playerContext.portalNode} />\n </div>\n );\n}","export enum ThumbnailTextPosition {\n Below = 1,\n Overlay = 2,\n Independent = 3\n}"],"names":["AudienceLabel","props","audience","className","border","name","BadgeListContainer","children","CheckMarkStatus","CheckMarkButton","status","Complete","isComplete","setIsComplete","style","None","FunctionHelper","setStatus","DivButton","onClick","shouldComplete","newStatus","Incomplete","disabled","SvgContainer","svgName","defaultProps","MaskType","Mask","type","size","typeClass","Video","Playlist","getClassByType","svgType","getSvgType","defaults","ThumbnailText","video","appLink","subTextAppLink","canNavigate","VideoHelper","VideoSubText","subTextType","analyticsOptions","location","AppLink","RestrictionPadlock","yearGroups","getPhrase","LanguageService","FavouriteButton","alerts","initialState","isFavourite","setIsFavourite","setFavourite","canFavourite","shouldFavourite","error","analyticsData","VideoWatchProgressBar","progress","watchPercentage","duration","width","VideoThumbnailBottomBar","PluginHover","isPlugin","Text","namespace","phrase","ThumbnailPadlock","svgSize","S","ThumbnailCompanyLogo","companyLogoFallbackUrl","company","productionCompanies","data","url","logo","Tooltip","title","spanHack","backgroundImage","VideoTypeBadge","TypeBadge","typeId","MasterType","inContainer","getTitleClass","hovering","ExpandableVideoThumbnail","imageOptions","preload","hoverToPlay","canConsume","appLinkParams","ObjectHelper","params","eventAnalyticsOptions","entity","showFavouriteButton","isVideo","rating","delay","thumbnailHoverRef","showThumbnailPreviewVideo","id","actionType","descriptor","spanHackClassName","ref","BaseImage","imageType","alt","series","ImageFallback","Badge","hasSubtitle","hasInteractives","GlobalPlayerConsumer","key","objectId","objectTypeId","mode","context","contextId","moviesAndTv","mtv","VideoThumbnailBadges","showAudience","showRating","hideRating","hideDuration","newDurationStyle","PopoutVideo","isHovering","cleanPortalNode","extraClasses","hideTitle","showVideoGuidance","VideoItemGuidance","getClassroomGuideAppLink","getResourceGuidanceAppLink","getInteractiveGuidanceAppLink","responsiveClassName","containerClassName","PopoutVideoThumbnail","HoverToPortalContainer","hoverableComponent","componentProps","fixedHoverWidth","minHoverWidth","VideoThumbnailActions","setCheckMarkStatus","hasActions","checkMarkStatus","textPosition","textIsOverlayed","ThumbnailTextPosition","StaticVideoThumbnail","hoverRef","hoverIntentRef","isHoveringIntentionally","showMask","hideMask","tooltip","showSignIn","r","current","undefined","imageClassName","getThumbnailClass","VideoThumbnail","getIcon","getColourClass","CurationStatus","baseClasses","getText","_restrictions","placement","tooltipPlacement","ContainerWrapper","appLinkAnalyticsData","appLinkAnalyticsOptions","theme","container","active","VideoGuidanceTag","iconVariant","tabLabel","text","ClassroomGuideTag","glance","glanceId","totalPointsOfInterest","pointsOfInterest","length","videoGuidanceType","InteractivesTag","interactiveCount","interactives","smartCount","videoGuidanceTotalItems","ResourcesTag","resourceCount","resources","showingResourcesAndInteractives","playerContext","useInitialize","hasProvider","isOnPlayPage","node","portalNode","shouldShow","started","rounding"],"sourceRoot":""}