@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,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6189],{31754:(e,t,a)=>{a.d(t,{x:()=>c});var n=a(82602),r=a(75896),i=a(89682),o=a(11576),c={groupByDateShared:function(e){var t=r.m.groupBy(e,"dateShared");return Object.keys(t).sort().reverse().reduce((function(e,a){var r=(0,n.WU)(a);return e[r]||(e[r]=[]),e[r]=e[r].concat(t[a]),e}),{})},mapActivityStatusToCheckMarkStatus:function(e){switch(e){case o.T.Complete:return i.h.Complete;case o.T.Incomplete:return i.h.Incomplete;case o.T.None:return i.h.None}},mapCheckMarkStatusToActivityStatus:function(e){switch(e){case i.h.Complete:return o.T.Complete;case i.h.Incomplete:return o.T.Incomplete;case i.h.None:return o.T.None}}}},83657:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(32735),r=a(91967),i=a(10874),o=a(76177),c=a(42735),l=a(86509);function s(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],s=[];t.forEach((function(e){e.button?a.push(e):s.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),a.length||s.length?n.createElement("div",{className:u},n.createElement(n.Fragment,null,n.createElement("span",{className:"d-flex align-items-center"},a.length?a.map((function(e,t){return n.createElement(n.Fragment,{key:t},function(){if(e.label){var t=r.q.isFunction(e.label)?e.label:function(){return n.createElement(n.Fragment,null,e.label)};return n.createElement(c.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},t())}var a=n.createElement(i.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled});return e.tooltip?n.createElement(o.u,{title:e.tooltip,spanHack:!0},a):a}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,s.length?n.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)))):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>g});var n=a(32735),r=a(91967),i=a(81886),o=a(45157),c=a(49985),l=a(36848),s=a(83914),u=a(76177),d=a(35223);const m={dropdownToggle:"UCAnJ"};function v(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function f(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function p(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:f(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:f(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(f(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function g(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(o.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(m.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:c,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},n.createElement(s.x,{svgName:d.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":i},t?n.createElement(v,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement(n.Fragment,{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(p,{action:e}))):n.createElement(n.Fragment,{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(p,{action:e}))}))))}g.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(50242),r=a(81886),i=a(67058),o=a(14553),c=a(49267),l=a(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},s),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?a.badRequest||r.Q.Ry.throw(new o.badRequest):a.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):a.notFound||r.Q.Ry.throw(new o.notFound))}}},2341:(e,t,a)=>{a.r(t),a.d(t,{StudentFeedView:()=>yt});var n=a(32735),r=a(4390),i=a(23481),o=a(81886),c=a(20354),l=a(65858),s=a(11518),u=a(39151),d=a(31949),m=a(90605),v=a(65294),f=a(79612),p=a(75795),g=a(14070),h=a(97291),y=a(51855),E=a(27638),b=a(82602),N=a(28400),S=a(31754),w=a(20789),k=a(89682),A=a(89118),F=a(54610),D=a(4594),I=a(68626),C=a(58704),T=a(40424),x=a(64818);const O={avatar:"y1nvt",higherWidgetBtn:"EQjTN"};var j="studentFeed.recentActivities",L=function(e){var t;if(e.shareId)return{application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e.shareId]};switch(null===(t=e.object)||void 0===t?void 0:t.typeId){case D.E.Video:return{application:h.O.VIDEOS,action:g.e.Videos.PLAY_VIDEO,args:[e.object.id,N.m.slugify(e.object.name)]};case D.E.Clip:return{application:h.O.CLIPS,action:g.e.Clips.PLAY_CLIP,args:[e.object.id,N.m.slugify(e.object.name)]};case D.E.Interactive:return{application:h.O.INTERACTIVES,action:g.e.Interactives.VIEW_INTERACTIVE,args:[e.object.id,N.m.slugify(e.object.name)]};default:return null}};function P(e){var t,a,r,i;return n.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},n.createElement(A.u,{video:e.data.object,type:"static",appLink:L(e.data),textPosition:I.z.Overlay,imageOptions:{size:F.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,checkMarkStatus:k.h.None,setCheckMarkStatus:function(t){return e.setActivityStatus(e.data.shareId,e.data.object,S.x.mapCheckMarkStatusToActivityStatus(t))},isPlugin:e.isPlugin}),!!(null===(a=null===(t=e.data.share)||void 0===t?void 0:t.owner)||void 0===a?void 0:a.id)&&n.createElement("div",{className:"d-flex align-items-center mt-1"},n.createElement("div",{className:"".concat(O.avatar," me-1 flex-shrink-0")},n.createElement(w.q,{imageCdnUrl:e.config.imageCdnUrl,initials:x.l.getInitials(e.data.share.owner.name,e.data.share.owner.surname),imageUrl:null===(r=e.data.share.owner.avatar)||void 0===r?void 0:r.url})),n.createElement("div",{className:"d-flex flex-column"},n.createElement("h3",{className:"font-size-normal mb-0"},x.l.getDisplayName(e.data.share.owner)),n.createElement("small",null,(0,b.WU)(e.data.share.dateShared),!!e.data.share.recipient&&(null===(i=e.data.share.recipient)||void 0===i?void 0:i.typeId)!==D.E.User&&n.createElement(n.Fragment,null," • ",e.data.share.recipient.name)))))}function M(e){if(!e.recentActivities)return n.createElement(n.Fragment,null);var t=!!e.recentActivities.find((function(e){var t,a;return!!(null===(a=null===(t=e.share)||void 0===t?void 0:t.owner)||void 0===a?void 0:a.id)}));return n.createElement("div",{className:"pb-3"},n.createElement(s.kM,{name:i.T.getPhrase(j,"continueActivity"),type:T.l9.Row,contents:C.z.RecentActivities,childComponent:P,extraChildComponentProps:{config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus},collection:e.recentActivities,leftWidgetButtonClassName:t?O.higherWidgetBtn:"",rightWidgetButtonClassName:t?O.higherWidgetBtn:"",prefetched:!0}))}const R={partialAvatar:"kgqoG",partialName:"yctHY",partialDateShared:"Vno44",partialThumbnail:"OIIaa",partialAction:"acv6h",partialSeries:"S2Srj",partialTitle:"fkwl5",partialDescription:"Nim0N"};function z(){return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"mb-2"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(R.partialAvatar," me-2 rounded-circle partial-loading-background")}),n.createElement("div",{className:"d-flex flex-column"},n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(R.partialDateShared)})))),n.createElement("div",{className:"partial-loading-background rounded ".concat(R.partialThumbnail)}),n.createElement("div",{className:"d-flex align-items-center my-1"},n.createElement("div",{className:"partial-loading-background me-1 ".concat(R.partialAction)}),n.createElement("div",{className:"partial-loading-background ms-1 ".concat(R.partialAction)})),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialSeries)}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialTitle)}),n.createElement("div",{className:"partial-loading-background mt-1 ".concat(R.partialDescription)}))}function _(e){return n.createElement(n.Fragment,null,new Array(e.items).fill(null).map((function(e,t){return n.createElement(z,{key:t})})))}var V=a(34509),B=a(110),q=a(1048),U=a(83345),Y=i.T.encloseNamespace("studentFeed.utils");function H(e){return e.setHours(23),e.setMinutes(59),e.setSeconds(59),e}var W={getPresetDateRanges:function(){return[{name:Y("mostRecent"),default:!0},{name:Y("lastWeek"),endDate:(e=new Date,e.setDate(e.getDate()+5-7-(e.getDay()||7)),H(e))},{name:Y("lastMonth"),endDate:H(new Date((new Date).getFullYear(),(new Date).getMonth(),0))}];var e}};const $={dropdownDescription:"wmk99"};var Z="studentFeed.studentFeedDateFilter";function Q(e){if(!e.dateRange)return n.createElement(n.Fragment,null);var t=W.getPresetDateRanges();return n.createElement(V.Z,null,n.createElement(V.Z.Toggle,{id:"student-feed-date-filter",variant:"outline-dark",className:e.floating?"rounded-pill px-3":"",size:e.floating?"lg":void 0},n.createElement(U.x,{namespace:Z,phrase:"jumpTo"})),n.createElement(V.Z.Menu,{className:e.floating?"w-100":"",align:"end"},n.createElement(V.Z.Item,{as:"div",className:$.dropdownDescription},n.createElement(U.x,{namespace:Z,phrase:"jumpTo"}),"..."),t.map((function(t){return n.createElement(V.Z.Item,{key:t.name,onClick:function(){return function(t){var a=o.Q.C$.getCurrentAppLink(),n=a.params||{},r=B.O.format(t.endDate,"YYYY-MM-DD");if(n.date!==r){var i=q.t.omit(n,["date"]);t.endDate&&(i.date=B.O.format(t.endDate,"YYYY-MM-DD")),o.Q.C$.trigger(Object.assign(Object.assign({},a),{params:i}),{replace:!0})}else e.scrollToCurrent()}(t)}},t.name)}))))}var K="studentFeed.studentFeedHeader";function G(e){return n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("h1",{className:"h2"},n.createElement(U.x,{namespace:K,phrase:"hello",options:{name:e.currentUser.givenName}})),n.createElement(Q,{dateRange:e.dateRange,scrollToCurrent:e.scrollToCurrent}))}var J,X=a(97395),ee=a(71995),te=a(62803);!function(e){e[e.DateAscending=0]="DateAscending",e[e.DateDescending=1]="DateDescending"}(J||(J={}));var ae={getFeed:function(e){var t=e.ownerId,a=e.from,n=e.to,r=e.cursor,i=e.limit,o=e.sort,c=e.success,l=e.error,s={},u=function(e){var t=B.O.convertDateToUTC(e);return B.O.format(t,"YYYY-MM-DDTHH:mm:ss")};return r&&(s.cursor=r),t&&(s.ownerId=t),a&&(s.from=u(a)),n&&(s.to=u(n)),i&&(s.limit=i),void 0!==o&&(s.sort=o),{url:X._.urlBuilder("{gateway}/v1/users/me/feed",s),key:"feed:".concat(s.ownerId,":").concat(s.from,":").concat(s.to,":").concat(s.cursor,":").concat(s.sort,":").concat(s.limit),cacheDuration:ee.f.SHORT,success:c,error:l,formatData:function(e){return s.sort===J.DateAscending&&e.data.reverse(),e}}},getRecentActivities:function(){return{url:X._.urlBuilder("{gateway}/v1/users/me/recent-activities",{"query.video":te.v.VIDEO_COLLECTION,"query.interactive":te.v.INTERACTIVE_COLLECTION,"query.clip":te.v.CLIP_COLLECTION}),key:"recent:share:activities",cacheDuration:ee.f.SHORT,formatData:function(e){return e.map((function(e){return e.id="".concat(e.shareId,":").concat(e.object.id),e.share?(e.share.activityStatus=e.activityStatus,e):e}))}}}};function ne(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 re=function(){var e,t,a=(e=n.useState(null),t=2,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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ne(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)?ne(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.")}()),r=a[0],i=a[1],c=o.Q.C$.getCurrentAppLink(),l=c.params||{},s=W.getPresetDateRanges();return n.useEffect((function(){if(l.from||l.to){var e=!1;s.forEach((function(t){if(!e){var a=t.startDate&&B.O.format(t.startDate,"YYYY-MM-DD"),n=t.endDate&&B.O.format(t.endDate,"YYYY-MM-DD");a&&a!==l.from||n&&n!==l.to||(n||a)&&(e=!0,i(t))}})),e||o.Q.C$.trigger(Object.assign(Object.assign({},c),{params:q.t.omit(l,["from","to"])}),{replace:!0})}else i(s.find((function(e){return e.default})))}),[l.from,l.to]),r},ie=a(23232),oe=a(99742);const ce={image:"ohAxN"};var le="studentFeed.emptyState",se={application:h.O.DASHBOARD,action:g.e.Dashboard.HOME};function ue(){return n.createElement(U.D.Provider,{value:le},n.createElement(ie.u,{className:"pt-3"},n.createElement(ie.u.Image,{src:oe.W.EmptyStates.STUDENT_FEED,className:ce.image,size:"small"}),n.createElement(ie.u.Heading,{className:"h3 d-flex align-items-center justify-content-center"},n.createElement(U.x,{phrase:"emptyStateHeading"})),n.createElement(ie.u.Info,null,n.createElement(U.x,{phrase:"emptyStateInfo"})),n.createElement(ie.u.Cta,{appLink:se,text:i.T.getPhrase(le,"cta")})))}var de=a(83657),me=a(36848),ve=a(11882),fe=a(31908),pe=a(82431);const ge={avatar:"QEQhk"};function he(e){var t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(ge.avatar," me-2")},n.createElement(w.q,{imageCdnUrl:e.config.imageCdnUrl,initials:x.l.getInitials(e.shareData.owner.name,e.shareData.owner.surname),imageUrl:null===(t=e.shareData.owner.avatar)||void 0===t?void 0:t.url})),n.createElement("div",{className:"d-flex flex-column"},n.createElement("h2",{className:"h6 mb-0"},x.l.getDisplayName(e.shareData.owner)),n.createElement("div",null,(0,b.WU)(e.shareData.dateShared)))),!!e.shareData.message&&n.createElement("p",{className:"mt-1 mb-0 fw-semibold"},e.shareData.message))}var ye=a(75163);const Ee={imageClass:"Qig1U",fallbackText:"Bt4GN"};var be="studentFeed.feedVideoThumbnail";function Ne(e){if(!fe.M.getCanBeConsumed(e.video).canConsume){var t=fe.M.getPrivacyReasoning(e.video);return n.createElement(ye.Z,{data:oe.W.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED,className:"border rounded",imageType:F.__.Thumbnails,imageClassName:"".concat(Ee.imageClass," w-25 h-25")},n.createElement("div",{className:Ee.fallbackText},n.createElement("h3",{className:"h4"},t),n.createElement("p",null,n.createElement(U.x,{namespace:be,phrase:"unavailableDescription"}))))}return n.createElement(A.u,{video:e.video,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setCheckMarkStatus:function(t){return e.setActivityStatus(e.shareData.id,e.video,S.x.mapCheckMarkStatusToActivityStatus(t))},checkMarkStatus:k.h.None,type:"static",textPosition:I.z.Independent,imageOptions:{size:F.h2.Large},analyticsOptions:{location:l.LZ.StudentFeed},appLink:e.appLink,preload:!0,isPlugin:e.isPlugin})}var Se=a(1643),we=a(35223),ke=i.T.encloseNamespace("studentFeed.hooks");function Ae(){var e=(0,E.u)(l.LZ.StudentFeed).setFavourite;return function(t){var a=fe.M.getCanBeConsumed(t).canConsume,n=fe.M.isVideoTypeArchived(t);if(!a||n)return[];var r=Se.h.isFavouritedByCurrentUser(t);return[{svgName:r?we.vn.Heart:we.vn.HeartOutline,order:0,tooltip:ke("favourite"),onClick:function(){return e(t,!r)},button:!0,className:"btn btn-link "+(r?"text-danger":"text-link")},{order:10,svgName:we.vn.AddToPlaylists,tooltip:ke("addToPlaylist"),className:"btn btn-link text-link",button:!0,appLink:{application:h.O.PLAYLISTS,action:g.e.Playlists.ADD_TO_PLAYLIST,args:[t.id]},analyticsOptions:{entity:fe.M.getAnalyticsEntity(t),location:l.LZ.StudentFeed,actionType:l.Vw.Associate,descriptor:l.iF.Playlist,workflowPhase:l.eu.Start},analyticsData:fe.M.getAnalyticsData(t)}]}}var Fe=function(e){return{application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]}};function De(e){var t=e.data.object,a=Ae(),r=fe.M.getCanBeConsumed(t).canConsume;return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"pb-2"},n.createElement(he,{config:e.config,shareData:e.data})),n.createElement(Ne,{video:e.data.object,appLink:Fe(e.data.id),shareData:e.data,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}),n.createElement(de.e,{actions:r?a(t):[]}),fe.M.isVideo(t)&&n.createElement(ve.$,{type:"series",video:t,appLink:pe.j.getSeriesAppLink(t.series),analyticsOptions:{location:l.LZ.StudentFeed},className:r?"":"mt-2"}),n.createElement("div",null,n.createElement(me.F,{className:"d-inline-block",appLink:r?Fe(e.data.id):null},n.createElement("h3",{className:"h4 mb-0"},t.name))),!!t.description&&n.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description))}var Ie=a(68050),Ce=a(69111),Te=a(75896),xe=a(11607),Oe=a(83914),je=a(45778);const Le={circle:"BJPA7",active:"YuQnu",sm:"wI7Zf",xs:"KkKSG"};function Pe(e){var t=e.indicator,a=e.onClick,r=Le.circle;return t.active&&(r+=" "+Le.active),"sm"===t.size&&(r+=" "+Le.sm),"xs"===t.size&&(r+=" "+Le.xs),"invisible"===t.size&&(r+=" d-none"),n.createElement(xe.L,{className:r,onClick:a})}function Me(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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Re(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)?Re(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 Re(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 ze(e){var t,a=function(t){return e.videos.findIndex((function(e){return e.id===t.id}))},r=Me(n.useState(a(e.currentVideo)),2),i=r[0],o=r[1],c=n.useState(function(e){var t=e.videos.findIndex((function(t){return t.id===e.currentVideo.id})),a=function(e){return e<5?"std":5===e?"sm":6===e?"xs":"invisible"};return e.videos.map((function(e,n){return{active:t===n,size:a(n)}}))}(e)),l=Me(c,2),s=l[0],u=l[1];n.useEffect((function(){var t=i,n=a(e.currentVideo);if(t!==n){var r=d+(n-t);o(n);var c=s.map((function(e,t){return{active:t===r,size:e.size}}));if(u(c),"std"!==s[r].size){var l=function(e,t){var a,n;e.forEach((function(e,t){"std"===e.size&&void 0===a&&(a=t),"std"===e.size&&(n=t)}));var r=q.t.deepClone(e);return"left"===t?(r[a-1]={active:!0,size:"std"},r[a-2]={active:!1,size:"sm"},r[a-3]={active:!1,size:"xs"},r[n+2]={active:!1,size:"invisible"},r[n+1]={active:!1,size:"xs"},r[n]={active:!1,size:"sm"}):(r[n+1]={active:!0,size:"std"},r[n+2]&&(r[n+2]={active:!1,size:"sm"}),r[n+3]&&(r[n+3]={active:!1,size:"xs"}),r[a-2]={active:!1,size:"invisible"},r[a-1]={active:!1,size:"xs"},r[a]={active:!1,size:"sm"}),r}(c,n<t?"left":"right");u(l)}}}),[null===(t=e.currentVideo)||void 0===t?void 0:t.id]);var d=s.findIndex((function(e){return e.active}));return n.createElement("div",{className:"d-flex align-items-center"},s.map((function(t,a){return n.createElement(Pe,{key:a,indicator:t,onClick:function(){return e.onSelectIndex(a)}})})))}var _e=a(183),Ve=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Be=function(e){return fe.M.isClip(e)?{clipId:e.id}:fe.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function qe(e){return n.createElement("div",{className:"flex-shrink-0 position-relative w-100"},n.createElement(Ne,{video:e.data,appLink:Ve(e.shareData.id,Object.assign(Object.assign({},Be(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),shareData:e.shareData,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}))}var Ue=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Ye=function(e){return fe.M.isClip(e)?{clipId:e.id}:fe.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function He(e){return n.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},n.createElement(A.u,{video:e.data,type:"static",appLink:Ue(e.shareData.id,Object.assign(Object.assign({},Ye(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?_e.Q.Playlist:_e.Q.Series})),textPosition:I.z.Overlay,imageOptions:{size:F.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}))}var We="studentFeed.feedVideoCollectionEmptyState";function $e(e){return n.createElement(ie.u,{className:"border rounded-3 pt-5 pb-3"},n.createElement(ie.u.Image,{src:oe.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),n.createElement(ie.u.Heading,null,n.createElement(U.x,{namespace:We,phrase:"heading",options:{name:e.data.name}})),e.data.typeId===D.E.Playlist&&n.createElement(ie.u.Info,null,n.createElement(U.x,{namespace:We,phrase:"playlistInfo"})))}const Ze={leftWidgetButton:"bux3R",rightWidgetButton:"QTLk7"};function Qe(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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ke(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)?Ke(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 Ke(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 Ge=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Je=function(e){return je.G.isType(e,D.E.Playlist)?e.union.data:e.videos.data};function Xe(e){var t=e.data.object,a=Je(e.data.object),r=Qe(n.useState(Te.m.first(a)),2),i=r[0],o=r[1],c=Qe(n.useState(!1),2),l=c[0],u=c[1],d=n.useRef(null),m=Ae(),v=a.findIndex((function(e){return e.id===i.id}));return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"pb-2"},n.createElement(he,{config:e.config,shareData:e.data})),i?n.createElement(n.Fragment,null,n.createElement("div",{className:"position-relative"},n.createElement(s.kM,{controlsRef:d,type:T.l9.Row,contents:C.z.FeedVideos,childComponent:qe,extraChildComponentProps:{setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,shareData:e.data,isPlugin:e.isPlugin},collection:a,onNext:function(){o(a[v+1])},onPrevious:function(){o(a[v-1])},leftWidgetButtonClassName:Ze.leftWidgetButton,rightWidgetButtonClassName:Ze.rightWidgetButton,hideBleedingContent:!0,hideName:!0,hideExtendedClickableArea:!0,prefetched:!0,lazyLoad:!1,touchBehavior:"drag"})),n.createElement("div",{className:"position-relative"},n.createElement(Ie.Z,{className:"g-0"},n.createElement(Ce.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},n.createElement(de.e,{actions:m(i)})),n.createElement(Ce.Z,{xs:8,className:"d-flex align-items-center justify-content-center"},n.createElement(ze,{videos:a,currentVideo:i,onSelectIndex:function(e){d.current&&(o(a[e]),d.current.jumpToIndex(e))}})),n.createElement(Ce.Z,{xs:2,className:"d-flex align-items-center justify-content-end"},n.createElement(xe.L,{onClick:function(){return u((function(e){return!e}))}},n.createElement(Oe.x,{svgName:l?we.vn.ChevronUp:we.vn.ChevronDown}))))),n.createElement("div",null,n.createElement(me.F,{className:"d-inline-block",appLink:Ge(e.data.id)},n.createElement("h3",{className:"h4 mb-0"},t.name))),l?n.createElement("div",{className:"pt-1"},n.createElement(s.kM,{type:T.l9.Row,contents:C.z.Videos,childComponent:He,extraChildComponentProps:{setFavourite:e.setFavourite,canFavourite:e.canFavourite,shareData:e.data,isPlugin:e.isPlugin},collection:a,appLink:Ge(e.data.id),touchBehavior:"drag",limitTotalItems:!0,hideName:!0,prefetched:!0})):!!t.description&&n.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description)):n.createElement($e,{data:e.data.object}))}function et(e){return n.createElement(n.Fragment,null,e.feed.map((function(t,a){var r;switch(null===(r=t.object)||void 0===r?void 0:r.typeId){case D.E.Video:case D.E.Clip:case D.E.Interactive:return n.createElement(De,{key:"".concat(t.id,":").concat(a),data:t,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin});case D.E.Playlist:case D.E.Series:return n.createElement(Xe,{key:"".concat(t.id,":").concat(a),data:t,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin});case D.E.Subject:default:return n.createElement(n.Fragment,{key:a})}})))}function tt(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 at=15,nt=635;function rt(e){var t,a,r,i=e.request,o=e.reversed,l=e.scrollTo,s=n.useRef(),u=(0,v.Y)({triggerOnce:!1,rootMargin:nt+"px"}),d=u.ref,m=u.inView,f=null===(t=c.a.useBasicFetch(m?i:null).data)||void 0===t?void 0:t.data,p=window.scrollY,g=(a=n.useState(nt*e.limit),r=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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(a,r)||function(e,t){if(e){if("string"==typeof e)return tt(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)?tt(e,t):void 0}}(a,r)||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.")}()),h=g[0],y=g[1];return n.useLayoutEffect((function(){var e=s.current.getBoundingClientRect();o?window.scrollTo(0,p+e.height):l&&window.requestAnimationFrame((function(){window.scrollTo(0,p+e.top-100)}))}),[l]),n.useLayoutEffect((function(){if(h){var e=s.current.getBoundingClientRect().height;if(y(e),!(h<e+at&&h>e-at||s.current.offsetTop>p)){var t=h-e;window.scrollTo(0,p-t)}}})),n.createElement("div",{ref:d},n.createElement("div",{ref:s},(null==f?void 0:f.length)?n.createElement(et,{feed:f,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}):n.createElement("div",{style:{height:h,overflow:"hidden"}},n.createElement(_,{items:e.limit}))))}var it=a(70680),ot=a(94644),ct=a(69883);function lt(e){return function(e){if(Array.isArray(e))return dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ut(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function st(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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||ut(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 ut(e,t){if(e){if("string"==typeof e)return dt(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)?dt(e,t):void 0}}function dt(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 mt=i.T.encloseNamespace("studentFeed.studentFeed"),vt=function(e,t){var a=(0,it.oR)(),r=(0,ct.Z)(),i=st(n.useState([]),2),o=i[0],l=i[1],s=st(n.useState(!1),2),u=s[0],d=s[1];function m(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.from,i=t.to,o=t.cursor,s=t.reverse,u=function(e){var a,n;if(u=null,e.data.length){if(null===(n=null===(a=e.pagination)||void 0===a?void 0:a.cursors)||void 0===n?void 0:n.next)if(s){var r={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next})),reversed:!0};l((function(e){return[r].concat(lt(e))}))}else{var i={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next}))};l((function(e){return[].concat(lt(e),[i])}))}}else l((function(e){var t=e.findIndex((function(e){return e.request.key===v.key})),a=[].concat(lt(e.slice(0,t)),lt(e.slice(t+1)));return a.length||d(!0),a}))},v=ae.getFeed({from:n,to:i,cursor:o,sort:s?J.DateAscending:J.DateDescending,limit:e,success:function(e){window.requestAnimationFrame((function(){u&&u(e)}))},error:function(e){return function(e,t){if(!e)return(0,ot.r)(t.status);r.error(mt("error"))}(o,e)}}),f=c.a.getResponse(a.getState(),v.key);return f.data&&window.setTimeout((function(){u(f.data)}),0),v}return n.useEffect((function(){var e=null;if(isNaN(Date.parse(t))||(e=new Date(t)),e){var a={request:m({from:e,reverse:!0}),reversed:!0},n={request:m({to:e}),current:!0};l([n]),window.requestAnimationFrame((function(){l((function(e){return[a].concat(lt(e))}))}))}else l([{request:m(),current:!0}])}),[]),{requests:o,isEmpty:u}};function ft(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,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return pt(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)?pt(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 pt(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 gt=i.T.encloseNamespace("studentFeed.studentFeed"),ht=10;function yt(e){var t=e.date,a=(0,E.u)(l.LZ.StudentFeed),i=a.setFavourite,b=a.canFavourite,N=(0,m.O)(l.LZ.StudentFeed),S=(0,y.G)().isPlugin,w=re();(0,f.M)({title:gt("pageTitle")});var k=c.a.useBasicFetch(d.N.currentUser()),A=c.a.useBasicFetch(u.L.config()),F=c.a.useBasicFetch(ae.getRecentActivities()),D=vt(ht,t),I=D.requests,C=D.isEmpty,T=ft(n.useState(!1),2),x=T[0],O=T[1],j=(0,v.Y)({triggerOnce:!1,rootMargin:"300px"}),L=j.ref,P=j.inView,R=j.initialized&&!P,z=ft(n.useState(null),2),V=z[0],B=z[1];function q(){var e=I.find((function(e){return e.current}));e?B(e.request.key):window.scrollTo(0,document.body.scrollHeight)}return n.useLayoutEffect((function(){B(null)})),x?n.createElement(n.Fragment,null):C&&p.O.fromPageLoad()?(O(!0),o.Q.C$.trigger({application:h.O.DASHBOARD,action:g.e.Dashboard.HOME},{replace:!0}),n.createElement(n.Fragment,null)):n.createElement("div",{className:"px-4 container-compact"},n.createElement("div",{className:"pb-2 border-bottom mb-3",ref:L},n.createElement(G,{currentUser:k.data,dateRange:w,scrollToCurrent:q})),n.createElement("div",{className:"d-flex justify-content-center"},n.createElement("div",{className:"floating-jump-to"},n.createElement(r.Z,{timeout:R?500:0,in:R,className:"floating-jump-to",classNames:"floating-jump-to",mountOnEnter:!0,unmountOnExit:!0},n.createElement(Q,{dateRange:w,floating:!0,scrollToCurrent:q})))),F.data?n.createElement(M,{recentActivities:F.data,config:A.data,setFavourite:i,canFavourite:b,setActivityStatus:N}):n.createElement("div",{className:"pb-3"},n.createElement(s.j7,{hideDescription:!0})),(!k.data||!A.data)&&n.createElement(_,{items:ht}),C&&n.createElement(ue,null),null==I?void 0:I.map((function(e){return n.createElement(rt,{key:e.request.key,limit:ht,request:e.request,reversed:e.reversed,config:A.data,setFavourite:i,canFavourite:b,setActivityStatus:N,scrollTo:e.request.key===V,isPlugin:S})})))}},68050:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(95685),r=a.n(n),i=a(32735),o=a(46304),c=a(74512);const l=i.forwardRef((({bsPrefix:e,className:t,as:a="div",...n},i)=>{const l=(0,o.vE)(e,"row"),s=(0,o.pi)(),u=(0,o.zG)(),d=`${l}-cols`,m=[];return s.forEach((e=>{const t=n[e];let a;delete n[e],null!=t&&"object"==typeof t?({cols:a}=t):a=t;const r=e!==u?`-${e}`:"";null!=a&&m.push(`${d}${r}-${a}`)})),(0,c.jsx)(a,{ref:i,...n,className:r()(t,l,...m)})}));l.displayName="Row";const s=l},82602:(e,t,a)=>{a.d(t,{WU:()=>s});var n=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},o=function(e,t){i[e]=t},c=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var s=function(e,t,a){var n=function(e,t){return(+(t?l(t):new Date)-+l(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}(n,function(e){return i[e]||i.en_US}(t))};o("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),o("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=r[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
2
- //# sourceMappingURL=6189-13009e2ba9-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6189-13009e2ba9-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/recent-activities/recent-activities.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/recent-activities/RecentActivities.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/partial-loading/partial-student-feed.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/utils/StudentFeedHelper.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-date-filter/student-feed-date-filter.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-header/StudentFeedHeader.tsx","file:///app/packages/projects/lite/src/apps/student-feed/flight-requests/StudentFeedRequests.ts","file:///app/packages/projects/lite/src/apps/student-feed/hooks/useGetStudentFeedDateRange.ts","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/empty-state/student-feed-empty-state.scss","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/empty-state/StudentFeedEmptyState.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-card-header/feed-card-header.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-card-header/FeedCardHeader.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-thumbnail/feed-video-thumbnail.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-thumbnail/FeedVideoThumbnail.tsx","file:///app/packages/projects/lite/src/apps/student-feed/hooks/useStudentFeedActions.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video/FeedVideo.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/feed-video-collection-indicators.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/FeedVideoIndicator.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/FeedVideoCollectionIndicators.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-item/FeedVideoCollectionItem.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/small-feed-video-collection-item/SmallFeedVideoCollectionItem.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/empty-state/FeedVideoCollectionEmptyState.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/feed-video-collection.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/FeedVideoCollection.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/StudentFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/LazyFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/useGetFeedRequests.ts","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/StudentFeedView.tsx","file:///app/node_modules/react-bootstrap/esm/Row.js","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\n }\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n <>\n <span className='d-flex align-items-center'>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n \n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </span>\n </>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </React.Fragment>\n );\n }\n \n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </React.Fragment>\n );\n })\n }\n </div>\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"y1nvt\",\"higherWidgetBtn\":\"EQjTN\"};","import React from 'react';\nimport { format } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc, VideoTypes, WidgetType } from 'libs/shared/interfaces';\nimport { RecentActivity } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './recent-activities.scss';\n\nconst namespace = 'studentFeed.recentActivities';\n\nconst getAppLink = (data: RecentActivity<VideoTypes>) => {\n if (data.shareId) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [data.shareId]\n };\n }\n\n switch (data.object?.typeId) {\n case MasterType.Video: {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n case MasterType.Clip: {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n case MasterType.Interactive: {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n default:\n return null;\n }\n};\n\ntype WidgetItemProps = FixedWidgetItemProps<RecentActivity<VideoTypes>> & {\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n};\n\nfunction WidgetItem(props: WidgetItemProps): JSX.Element {\n return (\n <div className={`p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3`}>\n <VideoThumbnail\n video={props.data.object}\n type='static'\n appLink={getAppLink(props.data)}\n textPosition={ThumbnailTextPosition.Overlay}\n imageOptions={{ size: ImageSize.Medium }}\n preload={props.preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n // Disabling activity status for performance reasons (28/2/24) - Sha\n // checkMarkStatus={ShareHelper.mapActivityStatusToCheckMarkStatus(props.data.share?.activityStatus)}\n checkMarkStatus={CheckMarkStatus.None}\n setCheckMarkStatus={status => {\n return props.setActivityStatus(\n props.data.shareId,\n props.data.object,\n ShareHelper.mapCheckMarkStatusToActivityStatus(status)\n );\n }}\n isPlugin={props.isPlugin}\n />\n\n {!!props.data.share?.owner?.id && (\n <div className='d-flex align-items-center mt-1'>\n <div className={`${styles.avatar} me-1 flex-shrink-0`}>\n <Avatar\n imageCdnUrl={props.config.imageCdnUrl}\n initials={UserHelper.getInitials(props.data.share.owner.name, props.data.share.owner.surname)}\n imageUrl={props.data.share.owner.avatar?.url}\n />\n </div>\n <div className='d-flex flex-column'>\n <h3 className='font-size-normal mb-0'>{UserHelper.getDisplayName(props.data.share.owner)}</h3>\n <small>\n {format(props.data.share.dateShared)}\n {!!props.data.share.recipient && props.data.share.recipient?.typeId !== MasterType.User && (\n <> &bull; {props.data.share.recipient.name}</>\n )}\n </small>\n </div>\n </div>\n )}\n </div>\n );\n}\n\ninterface RecentActivitiesProps {\n recentActivities: RecentActivity<VideoTypes>[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n config: Config;\n}\n\nexport function RecentActivities(props: RecentActivitiesProps): JSX.Element {\n if (!props.recentActivities)\n return <></>;\n\n const hasRecentActivityWithOwner = !!props.recentActivities.find(a => !!a.share?.owner?.id);\n\n return (\n <div className='pb-3'>\n <FixedWidget<FixedWidgetItemProps<RecentActivity<VideoTypes>>>\n name={LanguageService.getPhrase(namespace, 'continueActivity')}\n type={WidgetType.Row}\n contents={WidgetContents.RecentActivities}\n childComponent={WidgetItem}\n extraChildComponentProps={{\n config: props.config,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n setActivityStatus: props.setActivityStatus\n }}\n collection={props.recentActivities}\n leftWidgetButtonClassName={hasRecentActivityWithOwner ? styles.higherWidgetBtn : ''}\n rightWidgetButtonClassName={hasRecentActivityWithOwner ? styles.higherWidgetBtn : ''}\n prefetched\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialAvatar\":\"kgqoG\",\"partialName\":\"yctHY\",\"partialDateShared\":\"Vno44\",\"partialThumbnail\":\"OIIaa\",\"partialAction\":\"acv6h\",\"partialSeries\":\"S2Srj\",\"partialTitle\":\"fkwl5\",\"partialDescription\":\"Nim0N\"};","import React from 'react';\n\nimport styles from './partial-student-feed.scss';\n\n/**\n * If you change this component in a way that changes it height,\n * please also update the SINGLE_ITEM_SIZE in <LazyFeed />\n */\nfunction PartialFeedCard(): JSX.Element {\n return (\n <div className='pb-4'>\n <div className='mb-2'>\n <div className='d-flex align-items-center'>\n <div className={`${styles.partialAvatar} me-2 rounded-circle partial-loading-background`} />\n <div className='d-flex flex-column'>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDateShared}`} />\n </div>\n </div>\n </div>\n\n <div className={`partial-loading-background rounded ${styles.partialThumbnail}`} />\n\n <div className='d-flex align-items-center my-1'>\n <div className={`partial-loading-background me-1 ${styles.partialAction}`} />\n <div className={`partial-loading-background ms-1 ${styles.partialAction}`} />\n </div>\n\n <div className={`partial-loading-background mb-1 ${styles.partialSeries}`} />\n\n <div className={`partial-loading-background mb-1 ${styles.partialTitle}`} />\n\n <div className={`partial-loading-background mt-1 ${styles.partialDescription}`} />\n </div>\n );\n}\n\ninterface PartialStudentFeedProps {\n items: number;\n}\n\nexport function PartialStudentFeed(props: PartialStudentFeedProps): JSX.Element {\n return (\n <>\n {new Array(props.items).fill(null).map((l, i) => <PartialFeedCard key={i} />)}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DateRange } from 'libs/shared/interfaces';\n\nconst namespace = 'studentFeed.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n// Sets the end date hours, minutes, and seconds to the very last second of that date\nfunction normalizeEndDate(date: Date): Date {\n date.setHours(23);\n date.setMinutes(59);\n date.setSeconds(59);\n\n return date;\n}\n\nfunction getLastWeekEndDate(): Date {\n const date = new Date();\n\n // Converts today's date to the friday of last week\n date.setDate(date.getDate() + 5 - 7 - (date.getDay() || 7));\n\n return normalizeEndDate(date);\n}\n\nfunction getLastMonthEndDate(): Date {\n const localDate = new Date(new Date().getFullYear(), new Date().getMonth(), 0);\n return normalizeEndDate(localDate);\n}\n\nexport const StudentFeedHelper = {\n getPresetDateRanges(): DateRange[] {\n return [\n {\n name: getPhrase('mostRecent'),\n default: true\n },\n {\n name: getPhrase('lastWeek'),\n endDate: getLastWeekEndDate()\n },\n {\n name: getPhrase('lastMonth'),\n endDate: getLastMonthEndDate()\n }\n ];\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"dropdownDescription\":\"wmk99\"};","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedHelper } from 'apps/student-feed/utils/StudentFeedHelper';\n\nimport styles from './student-feed-date-filter.scss';\n\nconst namespace = 'studentFeed.studentFeedDateFilter';\n\ninterface StudentFeedDateFilterProps {\n dateRange: DateRange;\n floating?: boolean;\n scrollToCurrent: () => void;\n}\n\nexport function StudentFeedDateFilter(props: StudentFeedDateFilterProps): JSX.Element {\n if (!props.dateRange)\n return <></>;\n\n const options = StudentFeedHelper.getPresetDateRanges();\n\n function onSelect(selection: DateRange): void {\n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\n\n const currentParams = (currentAppLink.params || {}) as HashObject;\n\n const date = DateHelper.format(selection.endDate, 'YYYY-MM-DD');\n\n if (currentParams.date === date) {\n props.scrollToCurrent();\n return;\n }\n\n const params = ObjectHelper.omit(currentParams, ['date']);\n\n if (selection.endDate) params.date = DateHelper.format(selection.endDate, 'YYYY-MM-DD');\n\n Core.AppLinkHelper.trigger({\n ...currentAppLink,\n params\n }, { replace: true });\n }\n\n return (\n <Dropdown>\n <Dropdown.Toggle\n id='student-feed-date-filter'\n variant='outline-dark'\n className={props.floating ? 'rounded-pill px-3' : ''}\n size={props.floating ? 'lg' : undefined}\n >\n <Text namespace={namespace} phrase='jumpTo' />\n </Dropdown.Toggle>\n <Dropdown.Menu className={props.floating ? 'w-100' : ''} align='end'>\n <Dropdown.Item as='div' className={styles.dropdownDescription}>\n <Text namespace={namespace} phrase='jumpTo' />...\n </Dropdown.Item>\n {options.map(option => (\n <Dropdown.Item\n key={option.name}\n onClick={() => onSelect(option)}\n >\n {option.name}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurrentUser, DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedDateFilter } from 'apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter';\n\nconst namespace = 'studentFeed.studentFeedHeader';\n\ninterface StudentFeedHeaderProps {\n currentUser: CurrentUser;\n dateRange: DateRange;\n scrollToCurrent: () => void;\n}\n\nexport function StudentFeedHeader(props: StudentFeedHeaderProps): JSX.Element {\n return (\n <div className='d-flex justify-content-between align-items-center'>\n <h1 className='h2'>\n <Text namespace={namespace} phrase='hello' options={{ name: props.currentUser.givenName }} />\n </h1>\n\n <StudentFeedDateFilter\n dateRange={props.dateRange}\n scrollToCurrent={props.scrollToCurrent}\n />\n </div>\n );\n}","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { RecentActivity } from 'libs/shared/interfaces';\n\nexport enum ShareFeedSortType {\n DateAscending = 0,\n DateDescending = 1\n}\n\nexport const StudentFeedRequests = {\n getFeed(options: {\n ownerId?: string;\n from?: Date;\n to?: Date;\n cursor?: string;\n limit?: number;\n sort?: ShareFeedSortType;\n success?: (feed: SharedWithMeCollection) => void;\n error?: (xhr: Xhr) => void;\n }): Flight.Request {\n const { ownerId, from, to, cursor, limit, sort, success, error } = options;\n\n const queryParams: HashObject = {};\n\n const convertDateToUTCString = (date: Date) => {\n const utc = DateHelper.convertDateToUTC(date);\n return DateHelper.format(utc, 'YYYY-MM-DDTHH:mm:ss');\n };\n\n if (cursor) queryParams.cursor = cursor;\n if (ownerId) queryParams.ownerId = ownerId;\n if (from) queryParams.from = convertDateToUTCString(from);\n if (to) queryParams.to = convertDateToUTCString(to);\n if (limit) queryParams.limit = limit;\n if (sort !== undefined) queryParams.sort = sort;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/feed', queryParams),\n key: `feed:${queryParams.ownerId}:${queryParams.from}:${queryParams.to}:${queryParams.cursor}:${queryParams.sort}:${queryParams.limit}`,\n cacheDuration: CacheDurations.SHORT,\n success,\n error,\n formatData: (data: SharedWithMeCollection) => {\n if (queryParams.sort === ShareFeedSortType.DateAscending)\n data.data.reverse();\n return data;\n }\n };\n },\n\n getRecentActivities(): Flight.Request {\n const url = UrlHelper.urlBuilder('{gateway}/v1/users/me/recent-activities', {\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION\n });\n\n return {\n url,\n key: 'recent:share:activities',\n cacheDuration: CacheDurations.SHORT,\n formatData: (res: RecentActivity[]) => {\n return res.map(activity => {\n // To normalize this in the flight store, we need to attach some form of ID\n activity.id = `${activity.shareId}:${activity.object.id}`;\n\n if (!activity.share)\n return activity;\n\n /**\n * Add the activity status to the actual share object, as this\n * object gets updated in the flight store when the activity status is modified\n */\n activity.share.activityStatus = activity.activityStatus;\n\n return activity;\n });\n }\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedHelper } from 'apps/student-feed/utils/StudentFeedHelper';\n\nexport const useGetStudentFeedDateRange = (): DateRange => {\n const [ dateRange, setDateRange ] = React.useState<DateRange>(null);\n\n const appLink = Core.AppLinkHelper.getCurrentAppLink();\n const queryParams = (appLink.params || {}) as HashObject;\n\n const presetDateRanges = StudentFeedHelper.getPresetDateRanges();\n\n React.useEffect(() => {\n // No date range params is valid. This will default to \"All time\"\n if (!queryParams.from && !queryParams.to) {\n setDateRange(presetDateRanges.find(r => r.default));\n return;\n }\n\n let hasDateMatch = false;\n\n // Find a preset date range that matches the current params. If none is found, the range is invalid.\n presetDateRanges.forEach(range => {\n if (hasDateMatch)\n return;\n\n const presetFrom = range.startDate && DateHelper.format(range.startDate, 'YYYY-MM-DD');\n const presetTo = range.endDate && DateHelper.format(range.endDate, 'YYYY-MM-DD');\n\n if (presetFrom && presetFrom !== queryParams.from)\n return;\n\n if (presetTo && presetTo !== queryParams.to)\n return;\n\n if (!presetTo && !presetFrom)\n return;\n\n hasDateMatch = true;\n setDateRange(range);\n });\n\n if (hasDateMatch)\n return;\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: ObjectHelper.omit(queryParams, [ 'from', 'to' ])\n }, { replace: true });\n }, [ queryParams.from, queryParams.to ]);\n\n return dateRange;\n};","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"ohAxN\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './student-feed-empty-state.scss';\n\nconst namespace = 'studentFeed.emptyState';\n\nconst cta = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n};\n\nexport function StudentFeedEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState className='pt-3'>\n <EmptyState.Image src={ImageUrls.EmptyStates.STUDENT_FEED} className={styles.image} size='small'/>\n\n <EmptyState.Heading className='h3 d-flex align-items-center justify-content-center'>\n <Text phrase='emptyStateHeading' />\n </EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='emptyStateInfo' /></EmptyState.Info>\n\n <EmptyState.Cta appLink={cta} text={LanguageService.getPhrase(namespace, 'cta')} />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"QEQhk\"};","import React from 'react';\nimport { format } from 'timeago.js';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { Config } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './feed-card-header.scss';\n\ninterface FeedCardHeaderProps {\n config: Config;\n shareData: SharedWithMeResponse;\n}\n\nexport function FeedCardHeader(props: FeedCardHeaderProps): JSX.Element {\n return (\n <>\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatar} me-2`}>\n <Avatar\n imageCdnUrl={props.config.imageCdnUrl}\n initials={UserHelper.getInitials(props.shareData.owner.name, props.shareData.owner.surname)}\n imageUrl={props.shareData.owner.avatar?.url}\n />\n </div>\n <div className='d-flex flex-column'>\n <h2 className='h6 mb-0'>{UserHelper.getDisplayName(props.shareData.owner)}</h2>\n <div>{format(props.shareData.dateShared)}</div>\n </div>\n </div>\n\n {!!props.shareData.message && (\n <p className='mt-1 mb-0 fw-semibold'>{props.shareData.message}</p>\n )}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageClass\":\"Qig1U\",\"fallbackText\":\"Bt4GN\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './feed-video-thumbnail.scss';\n\nconst namespace = 'studentFeed.feedVideoThumbnail';\n\ninterface FeedVideoThumbnailProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n shareData: SharedWithMeResponse<VideoTypes>;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoThumbnail(props: FeedVideoThumbnailProps): JSX.Element {\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume) {\n const reasonText = VideoHelper.getPrivacyReasoning(props.video);\n\n return (\n <BaseImage\n data={ImageUrls.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED}\n className='border rounded'\n imageType={ImageType.Thumbnails}\n imageClassName={`${styles.imageClass} w-25 h-25`}\n >\n <div className={styles.fallbackText}>\n <h3 className='h4'>{reasonText}</h3>\n <p><Text namespace={namespace} phrase='unavailableDescription' /></p>\n </div>\n </BaseImage>\n );\n }\n\n return (\n <VideoThumbnail\n video={props.video}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setCheckMarkStatus={status => {\n return props.setActivityStatus(\n props.shareData.id,\n props.video,\n ShareHelper.mapCheckMarkStatusToActivityStatus(status)\n );\n }}\n // Disabling activity status for performance reasons (28/2/24) - Sha\n // checkMarkStatus={ShareHelper.mapActivityStatusToCheckMarkStatus(props.shareData.activityStatus)}\n checkMarkStatus={CheckMarkStatus.None}\n type='static'\n textPosition={ThumbnailTextPosition.Independent}\n imageOptions={{ size: ImageSize.Large }}\n analyticsOptions={{\n location: LocationContext.StudentFeed\n }}\n appLink={props.appLink}\n preload\n isPlugin={props.isPlugin}\n />\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AssocDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { 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 { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nconst namespace = 'studentFeed.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useStudentFeedActions() {\n const { setFavourite } = useLiteFavourites(LocationContext.StudentFeed);\n\n return (video: VideoTypes): ActionOptions[] => {\n const { canConsume } = VideoHelper.getCanBeConsumed(video);\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n if (!canConsume || isArchived)\n return [];\n \n const isFavourited = FavouriteHelper.isFavouritedByCurrentUser(video);\n\n\n return [{\n svgName: isFavourited ? cvSvgLibrary.Heart : cvSvgLibrary.HeartOutline,\n order: 0,\n tooltip: getPhrase('favourite'),\n onClick: () => setFavourite(video, !isFavourited),\n button: true,\n className: 'btn btn-link ' + (isFavourited ? 'text-danger' : 'text-link')\n }, {\n order: 10,\n svgName: cvSvgLibrary.AddToPlaylists,\n tooltip: getPhrase('addToPlaylist'),\n className: 'btn btn-link text-link',\n button: true,\n appLink: {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.ADD_TO_PLAYLIST,\n args: [video.id]\n },\n analyticsOptions: {\n entity: VideoHelper.getAnalyticsEntity(video),\n location: LocationContext.StudentFeed,\n actionType: UserAction.Associate,\n descriptor: AssocDescriptor.Playlist,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData: VideoHelper.getAnalyticsData(video)\n }];\n };\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\nimport { FeedCardHeader } from 'apps/student-feed/components/feed-card-header/FeedCardHeader';\nimport { FeedVideoThumbnail } from 'apps/student-feed/components/feed-video-thumbnail/FeedVideoThumbnail';\nimport { useStudentFeedActions } from 'apps/student-feed/hooks/useStudentFeedActions';\n\nconst getAppLink = (shareId: string) => ({\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n});\n\ninterface FeedVideoProps {\n data: SharedWithMeResponse<VideoTypes>;\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideo(props: FeedVideoProps): JSX.Element {\n const { object } = props.data;\n\n const getVideoActions = useStudentFeedActions();\n\n const { canConsume } = VideoHelper.getCanBeConsumed(object);\n\n return (\n <div className='pb-4'>\n <div className='pb-2'>\n <FeedCardHeader config={props.config} shareData={props.data} />\n </div>\n\n <FeedVideoThumbnail\n video={props.data.object}\n appLink={getAppLink(props.data.id)}\n shareData={props.data}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n\n <ActionsComponent actions={canConsume ? getVideoActions(object) : []} />\n\n {VideoHelper.isVideo(object) && (\n <VideoSubText\n type='series'\n video={object}\n appLink={SeriesAppLinkHelper.getSeriesAppLink(object.series)}\n analyticsOptions={{\n location: LocationContext.StudentFeed\n }}\n className={canConsume ? '' : 'mt-2'}\n />\n )}\n\n <div>\n <AppLink className='d-inline-block' appLink={canConsume ? getAppLink(props.data.id) : null}>\n <h3 className='h4 mb-0'>{object.name}</h3>\n </AppLink>\n </div>\n\n {!!object.description && (\n <p className='clamp-2 mb-0 mt-1'>{object.description}</p>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"circle\":\"BJPA7\",\"active\":\"YuQnu\",\"sm\":\"wI7Zf\",\"xs\":\"KkKSG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { Indicator } from './FeedVideoCollectionIndicators';\n\nimport styles from './feed-video-collection-indicators.scss';\n\ninterface FeedVideoIndicatorProps {\n indicator: Indicator;\n onClick: () => void;\n}\n\nexport function FeedVideoIndicator({ indicator, onClick }: FeedVideoIndicatorProps): JSX.Element {\n let className = styles.circle;\n\n if (indicator.active) className += ' ' + styles.active;\n\n if (indicator.size === 'sm') className += ' ' + styles.sm;\n if (indicator.size === 'xs') className += ' ' + styles.xs;\n if (indicator.size === 'invisible') className += ' d-none';\n\n return <DivButton className={className} onClick={onClick} />;\n}","import React from 'react';\n\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { Video } from 'libs/shared/interfaces';\n\nimport { FeedVideoIndicator } from './FeedVideoIndicator';\n\ntype IndicatorSize = 'std' | 'sm' | 'xs' | 'invisible';\n\nexport interface Indicator {\n size: IndicatorSize;\n active: boolean;\n}\n\nfunction getInitialIndicatorState(props: FeedVideoCollectionIndicatorsProps): Indicator[] {\n const currentVideoIndex = props.videos.findIndex(v => v.id === props.currentVideo.id);\n\n const getSize = (index: number): IndicatorSize => {\n if (index < 5)\n return 'std';\n\n if (index === 5)\n return 'sm';\n\n if (index === 6)\n return 'xs';\n\n return 'invisible';\n };\n\n return props.videos.map((v, index) => {\n return {\n active: currentVideoIndex === index,\n size: getSize(index)\n };\n });\n}\n\ninterface FeedVideoCollectionIndicatorsProps {\n videos: Video[];\n currentVideo: Video;\n onSelectIndex: (index: number) => void;\n}\n\nexport function FeedVideoCollectionIndicators(props: FeedVideoCollectionIndicatorsProps): JSX.Element {\n const getVideoIndex = (video: Video) => props.videos.findIndex(v => v.id === video.id);\n\n const [ currentVideoIndex, setCurrentVideoIndex ] = React.useState(getVideoIndex(props.currentVideo));\n const [ indicators, setIndicators ] = React.useState<Indicator[]>(getInitialIndicatorState(props));\n\n React.useEffect(onChangeCurrentVideo, [props.currentVideo?.id]);\n \n const activeIndicatorIndex = indicators.findIndex(d => d.active);\n\n function onChangeCurrentVideo(): void {\n const oldIndex = currentVideoIndex;\n const newIndex = getVideoIndex(props.currentVideo);\n\n // Will be true on first load\n if (oldIndex === newIndex)\n return;\n\n const difference = newIndex - oldIndex;\n const newActiveIndicatorIndex = activeIndicatorIndex + difference;\n\n setCurrentVideoIndex(newIndex);\n\n const newIndicatorState = indicators.map((indicator, index) => {\n return {\n active: index === newActiveIndicatorIndex,\n size: indicator.size\n };\n });\n\n // Update the active indicators\n setIndicators(newIndicatorState);\n\n /**\n * If the new active indicator is not a \"std\" size (meaning it's one of the smaller looking indicators),\n * we need to \"shift\" the sizes of each indicator.\n */\n if (indicators[newActiveIndicatorIndex].size !== 'std') {\n const shiftedIndicators = getShiftedIndicators(newIndicatorState, newIndex < oldIndex ? 'left' : 'right');\n setIndicators(shiftedIndicators);\n }\n }\n\n function getShiftedIndicators(indicatorState: Indicator[], direction: 'left' | 'right'): Indicator[] {\n let indexOfFirstStdIndicator: number;\n let indexOfLastStdIndicator: number;\n\n // Find the index of the first and last \"std\" size indicators in the indicator list\n indicatorState.forEach((indicator, index) => {\n if (indicator.size === 'std' && indexOfFirstStdIndicator === undefined)\n indexOfFirstStdIndicator = index;\n\n if (indicator.size === 'std')\n indexOfLastStdIndicator = index;\n });\n\n const shiftedIndicatorState = ObjectHelper.deepClone(indicatorState);\n\n if (direction === 'left') {\n shiftedIndicatorState[indexOfFirstStdIndicator - 1] = { active: true, size: 'std' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 2] = { active: false, size: 'sm' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 3] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfLastStdIndicator + 2] = { active: false, size: 'invisible' };\n shiftedIndicatorState[indexOfLastStdIndicator + 1] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfLastStdIndicator] = { active: false, size: 'sm' };\n } else {\n shiftedIndicatorState[indexOfLastStdIndicator + 1] = { active: true, size: 'std' };\n\n if (shiftedIndicatorState[indexOfLastStdIndicator + 2])\n shiftedIndicatorState[indexOfLastStdIndicator + 2] = { active: false, size: 'sm' };\n\n if (shiftedIndicatorState[indexOfLastStdIndicator + 3])\n shiftedIndicatorState[indexOfLastStdIndicator + 3] = { active: false, size: 'xs' };\n\n shiftedIndicatorState[indexOfFirstStdIndicator - 2] = { active: false, size: 'invisible' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 1] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfFirstStdIndicator] = { active: false, size: 'sm' };\n }\n\n return shiftedIndicatorState;\n }\n\n return (\n <div className='d-flex align-items-center'>\n {indicators.map((indicator, index) => (\n <FeedVideoIndicator key={index} indicator={indicator} onClick={() => props.onSelectIndex(index)} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { CanFavouriteFunc, FavouriteFunc, Series, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nimport { FeedVideoThumbnail } from '../feed-video-thumbnail/FeedVideoThumbnail';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getExtraParams = (obj: VideoTypes) => {\n let extraParams: HashObject = {};\n\n if (VideoHelper.isClip(obj))\n extraParams = { clipId: obj.id };\n else if (VideoHelper.isInteractive(obj))\n extraParams = { interactiveId: obj.id };\n else\n extraParams = { videoId: obj.id };\n\n return extraParams;\n};\n\nexport interface FeedVideoCollectionItemProps extends FixedWidgetItemProps<VideoTypes> {\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n shareData?: SharedWithMeResponse<FeedPlaylist | Series>;\n setActivityStatus?: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoCollectionItem(props: FeedVideoCollectionItemProps): JSX.Element {\n return (\n <div className='flex-shrink-0 position-relative w-100'>\n <FeedVideoThumbnail\n video={props.data}\n appLink={getAppLink(props.shareData.id, {\n ...getExtraParams(props.data),\n contextId: props.shareData.object.id,\n context: props.shareData.object.typeId === MasterType.Playlist\n ? RelatedVideosContext.Playlist\n : RelatedVideosContext.Series\n })}\n shareData={props.shareData}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getExtraParams = (obj: VideoTypes) => {\n let extraParams: HashObject = {};\n\n if (VideoHelper.isClip(obj))\n extraParams = { clipId: obj.id };\n else if (VideoHelper.isInteractive(obj))\n extraParams = { interactiveId: obj.id };\n else\n extraParams = { videoId: obj.id };\n\n return extraParams;\n};\n\nexport interface SmallFeedVideoCollectionItemProps extends FixedWidgetItemProps<VideoTypes> {\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n shareData: SharedWithMeResponse<FeedPlaylist | Series>;\n isPlugin: boolean;\n}\n\nexport function SmallFeedVideoCollectionItem(props: SmallFeedVideoCollectionItemProps): JSX.Element {\n return (\n <div className={`p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3`}>\n <VideoThumbnail\n video={props.data}\n type='static'\n appLink={getAppLink(props.shareData.id, {\n ...getExtraParams(props.data),\n contextId: props.shareData.object.id,\n context: props.shareData.object.typeId === MasterType.Playlist\n ? RelatedVideosContext.Playlist\n : RelatedVideosContext.Series\n })}\n textPosition={ThumbnailTextPosition.Overlay}\n imageOptions={{ size: ImageSize.Medium }}\n preload={props.preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Playlist, Series } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'studentFeed.feedVideoCollectionEmptyState';\n\ninterface FeedVideoCollectionEmptyStateProps {\n data: Playlist | Series;\n}\n\nexport function FeedVideoCollectionEmptyState(props: FeedVideoCollectionEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='border rounded-3 pt-5 pb-3'>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLIST_VIDEOS} />\n\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' options={{ name: props.data.name }} />\n </EmptyState.Heading>\n\n {props.data.typeId === MasterType.Playlist && (\n <EmptyState.Info>\n <Text namespace={namespace} phrase='playlistInfo' />\n </EmptyState.Info>\n )}\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"leftWidgetButton\":\"bux3R\",\"rightWidgetButton\":\"QTLk7\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { FixedWidgetControls } from 'libs/shared/components/widgets/fixed-widget/FixedWidgetUtils';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Config, FavouriteFunc, Series, SetActivityStatusFunc, WidgetType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedCardHeader } from 'apps/student-feed/components/feed-card-header/FeedCardHeader';\nimport { FeedVideoCollectionIndicators } from 'apps/student-feed/components/feed-video-collection-indicators/FeedVideoCollectionIndicators';\nimport { FeedVideoCollectionItem, FeedVideoCollectionItemProps } from 'apps/student-feed/components/feed-video-collection-item/FeedVideoCollectionItem';\nimport { SmallFeedVideoCollectionItem, SmallFeedVideoCollectionItemProps } from 'apps/student-feed/components/small-feed-video-collection-item/SmallFeedVideoCollectionItem';\nimport { useStudentFeedActions } from 'apps/student-feed/hooks/useStudentFeedActions';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nimport { FeedVideoCollectionEmptyState } from './empty-state/FeedVideoCollectionEmptyState';\n\nimport styles from './feed-video-collection.scss';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getCollectionItems = (obj: FeedPlaylist | Series) => {\n if (MasterTypeHelper.isType<FeedPlaylist>(obj, MasterType.Playlist))\n return obj.union.data;\n \n return obj.videos.data;\n};\n\ninterface FeedVideoCollectionProps {\n data: SharedWithMeResponse<FeedPlaylist | Series>;\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoCollection(props: FeedVideoCollectionProps): JSX.Element {\n const { object } = props.data;\n\n const items = getCollectionItems(props.data.object);\n\n const [ currentVideo, setCurrentVideo ] = React.useState(ArrayHelper.first(items));\n const [ showExpandedVideoList, setShowExpandedVideoList ] = React.useState(false);\n\n const fixedWidgetControls = React.useRef<FixedWidgetControls>(null);\n\n const getVideoActions = useStudentFeedActions();\n\n const currentVideoIndex = items.findIndex(v => v.id === currentVideo.id);\n\n function onPrevious(): void {\n setCurrentVideo(items[currentVideoIndex - 1]);\n }\n\n function onNext(): void {\n setCurrentVideo(items[currentVideoIndex + 1]);\n }\n\n function onSelectIndex(index: number): void {\n if (!fixedWidgetControls.current)\n return;\n\n setCurrentVideo(items[index]);\n fixedWidgetControls.current.jumpToIndex(index);\n }\n\n return (\n <div className='pb-4'>\n <div className='pb-2'>\n <FeedCardHeader config={props.config} shareData={props.data} />\n </div>\n\n {currentVideo ? (\n <>\n <div className='position-relative'>\n <FixedWidget<FeedVideoCollectionItemProps>\n controlsRef={fixedWidgetControls}\n type={WidgetType.Row}\n contents={WidgetContents.FeedVideos}\n childComponent={FeedVideoCollectionItem}\n extraChildComponentProps={{\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n setActivityStatus: props.setActivityStatus,\n shareData: props.data,\n isPlugin: props.isPlugin\n }}\n collection={items}\n onNext={onNext}\n onPrevious={onPrevious}\n leftWidgetButtonClassName={styles.leftWidgetButton}\n rightWidgetButtonClassName={styles.rightWidgetButton}\n hideBleedingContent\n hideName\n hideExtendedClickableArea\n prefetched\n lazyLoad={false}\n touchBehavior='drag'\n />\n </div>\n\n <div className='position-relative'>\n <Row className='g-0'>\n <Col xs={2} className='d-flex align-items-center justify-content-start'>\n <ActionsComponent actions={getVideoActions(currentVideo)} />\n </Col>\n <Col xs={8} className='d-flex align-items-center justify-content-center'>\n <FeedVideoCollectionIndicators\n videos={items}\n currentVideo={currentVideo}\n onSelectIndex={onSelectIndex}\n />\n </Col>\n <Col xs={2} className='d-flex align-items-center justify-content-end'>\n <DivButton onClick={() => setShowExpandedVideoList(val => !val)}>\n <SvgContainer svgName={showExpandedVideoList ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown} />\n </DivButton>\n </Col>\n </Row>\n </div>\n\n <div>\n <AppLink className='d-inline-block' appLink={getAppLink(props.data.id)}>\n <h3 className='h4 mb-0'>{object.name}</h3>\n </AppLink>\n </div>\n {showExpandedVideoList ? (\n <div className='pt-1'>\n <FixedWidget<SmallFeedVideoCollectionItemProps>\n type={WidgetType.Row}\n contents={WidgetContents.Videos}\n childComponent={SmallFeedVideoCollectionItem}\n extraChildComponentProps={{\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n shareData: props.data,\n isPlugin: props.isPlugin\n }}\n collection={items}\n appLink={getAppLink(props.data.id)}\n touchBehavior='drag'\n limitTotalItems\n hideName\n prefetched\n />\n </div>\n ) : (\n !!object.description && <p className='clamp-2 mb-0 mt-1'>{object.description}</p>\n )}\n </>\n ) : (\n <FeedVideoCollectionEmptyState data={props.data.object} />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { CanFavouriteFunc, Config, FavouriteFunc, Series, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\n\nimport { FeedVideo } from 'apps/student-feed/components/feed-video/FeedVideo';\nimport { FeedVideoCollection } from 'apps/student-feed/components/feed-video-collection/FeedVideoCollection';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\ninterface StudentFeedProps {\n feed: SharedWithMeResponse[];\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function StudentFeed(props: StudentFeedProps): JSX.Element {\n return (\n <>\n {props.feed.map((sharedObject, index) => {\n switch (sharedObject.object?.typeId) {\n case MasterType.Video:\n case MasterType.Clip:\n case MasterType.Interactive:\n return (\n <FeedVideo\n key={`${sharedObject.id}:${index}`}\n data={sharedObject as SharedWithMeResponse<VideoTypes>}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n );\n\n case MasterType.Playlist:\n case MasterType.Series:\n return (\n <FeedVideoCollection\n key={`${sharedObject.id}:${index}`}\n data={sharedObject as SharedWithMeResponse<FeedPlaylist | Series>}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n );\n\n case MasterType.Subject:\n default:\n return <React.Fragment key={index}></React.Fragment>;\n }\n })}\n </>\n );\n}","import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc } from 'libs/shared/interfaces';\n\nimport { PartialStudentFeed } from 'apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed';\nimport { StudentFeed } from 'apps/student-feed/components/student-feed/StudentFeed';\n\nconst JUMP_ERROR_MARGIN = 15;\n\n/**\n * This item is actually the height of one of our partial loading items.\n * See <PartialStudentFeed />\n */\nconst SINGLE_ITEM_SIZE = 635;\n\ninterface LazyFeedProps {\n request: Flight.Request;\n reversed?: boolean;\n config: Config;\n limit: number;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n scrollTo: boolean;\n isPlugin: boolean;\n}\n\nexport function LazyFeed(props: LazyFeedProps): React.ReactElement {\n const { request, reversed, scrollTo } = props;\n\n const scrollToRef = React.useRef<HTMLDivElement>();\n\n // We use a margin of about 1 item.\n const { ref, inView } = useLazyLoad({ triggerOnce: false, rootMargin: SINGLE_ITEM_SIZE + 'px' });\n\n /**\n * This request is being provided by useGetFeedRequests, when this is fetched if there is paging\n * it's possible for another request to be added inside of useGetFeedRequests\n */\n const feed = Flight.useBasicFetch<SharedWithMeCollection>(inView ? request : null);\n\n const items = feed.data?.data;\n\n const scrollY = window.scrollY;\n const [ lastHeight, setLastHeight ] = React.useState<number>(SINGLE_ITEM_SIZE * props.limit);\n\n /**\n * Store initial height of element on first insertion\n * Also scroll the page if we know we're inserting this element above\n */\n React.useLayoutEffect(() => {\n const boundingRect = scrollToRef.current.getBoundingClientRect();\n\n if (reversed) {\n window.scrollTo(0, scrollY + boundingRect.height);\n } else if (scrollTo) {\n /**\n * Minus 100 is an arbitrary distanced picked to have the item appear \n * beneath the header with some buffer\n * \n * This fixes the scroll to sometimes not working, after some googling it looks like the scrollTo is interfered with by focus.\n * The moment a user clicks on the the button to go to a certain time, the button still has focus. One animation frame later\n * the element will have been removed and the focus is gone. - Sha\n *\n */\n window.requestAnimationFrame(() => {\n window.scrollTo(0, scrollY + boundingRect.top - 100);\n });\n }\n }, [scrollTo]);\n\n /**\n * If our height changes (Within a margin of error)\n * we scroll by the amount the element has changed in\n * order to prevent a visual jump\n */\n React.useLayoutEffect(() => {\n if (!lastHeight)\n return;\n \n const height = scrollToRef.current.getBoundingClientRect().height;\n setLastHeight(height);\n\n if (lastHeight < height + JUMP_ERROR_MARGIN && lastHeight > height - JUMP_ERROR_MARGIN)\n return;\n\n if (scrollToRef.current.offsetTop > scrollY)\n return;\n\n const delta = lastHeight - height;\n window.scrollTo(0, scrollY - delta);\n });\n\n return (\n <div ref={ref}>\n <div ref={scrollToRef}>\n {items?.length ?\n <StudentFeed\n feed={items}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n /> :\n // Once we have a calulated height, we use it to prevent any further\n // need to fix the scroll as the Student feed is swapped in and out\n <div style={{ height: lastHeight, overflow: 'hidden' }}>\n <PartialStudentFeed items={props.limit} />\n </div>\n }\n </div>\n </div>\n );\n}","import * as React from 'react';\nimport { useStore } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { ShareFeedSortType, StudentFeedRequests } from 'apps/student-feed/flight-requests/StudentFeedRequests';\n\nconst getPhrase = LanguageService.encloseNamespace('studentFeed.studentFeed');\n\ninterface GetRequestOptions {\n from?: Date;\n to?: Date;\n cursor?: string;\n reverse?: boolean;\n}\n\ninterface RequestWrapper {\n request: Flight.Request;\n reversed?: boolean;\n current?: boolean;\n}\n\nexport const useGetFeedRequests = (limit: number, date?: string) => {\n const store = useStore<ApplicationState>();\n const alerts = useAlerts();\n const [ requests, setRequest ] = React.useState<RequestWrapper[]>([]);\n const [ isEmpty, setIsEmpty ] = React.useState(false);\n\n function onError(cursor: string, xhr: Xhr): void {\n /**\n * If there's no cursor it was an initial request that errored\n * so we go to an error page, otherwise we show an alert\n */\n if (!cursor)\n return handleHttpError(xhr.status);\n\n alerts.error(getPhrase('error'));\n }\n\n function getRequest(options: GetRequestOptions = {}): Flight.Request {\n const { from, to, cursor, reverse } = options;\n\n /**\n * This callback will continue to build out our array of requests in both directions.\n */\n let onSuccess = (feed: SharedWithMeCollection) => {\n /**\n * This ensures that the next request is only added to our array once,\n * this will prevent our request list growing larger than we want it to when items\n * expire\n */\n onSuccess = null;\n\n /**\n * If our request has no items, remove it from the request list\n * This allows up to render an empty state if there are no requests left\n */\n if (!feed.data.length) {\n setRequest(r => {\n const index = r.findIndex(r => r.request.key === request.key);\n const updated = [ ...r.slice(0, index), ...r.slice(index + 1) ];\n\n if (!updated.length)\n setIsEmpty(true);\n\n return updated;\n });\n return;\n }\n\n // If our request has no more items, do nothing we've hit the end\n if (!feed.pagination?.cursors?.next)\n return;\n\n if (!reverse) {\n const wrapper = {\n request: getRequest({ ...options, cursor: feed.pagination.cursors.next })\n };\n setRequest(r => [ ...r, wrapper ]);\n return;\n }\n\n const wrapper = {\n request: getRequest({ ...options, cursor: feed.pagination.cursors.next }),\n reversed: true\n };\n setRequest(r => [ wrapper, ...r ]);\n };\n \n const request = StudentFeedRequests.getFeed({\n from,\n to,\n cursor,\n sort: reverse ? ShareFeedSortType.DateAscending : ShareFeedSortType.DateDescending,\n limit,\n success: feed => {\n /**\n * We do a page re-paint and compensate with a scroll when data returns\n * We don't also want to add another request in immediately, which also will do\n * a re-paint and compensation scroll. So we delay adding our request in by \n * one animation frame, which allows the browser to properly handle where we want\n * out scroll position to be\n */\n window.requestAnimationFrame(() => {\n onSuccess && onSuccess(feed);\n });\n },\n error: (xhr: Xhr) => onError(cursor, xhr)\n });\n\n /**\n * We pull the request out of the store, if it already exists this means our user\n * has already accessed the feed, so we immediately build out the next request\n * and then unset the callback so it doesn't fetch when it's expired\n */\n const response = Flight.getResponse<SharedWithMeCollection>(store.getState(), request.key);\n\n if (response.data) {\n /**\n * This has to happen after the useEffect below sets the initial requests,\n * otherwise the callback will set requests, and they will immediately be overwritten\n * afterwards\n */\n window.setTimeout(() => {\n onSuccess(response.data);\n }, 0);\n }\n \n return request;\n }\n\n /**\n * On first load we either only show the top request, and fundamentally have infinite scrolling\n * OR\n * We gave a request in either direction from the point in time, and then set the request to scroll\n * to being the second request.\n */\n React.useEffect(() => {\n let parsedDate: Date = null;\n if (!isNaN(Date.parse(date)))\n parsedDate = new Date(date);\n\n if (!parsedDate) {\n setRequest([{ request: getRequest(), current: true }]);\n return;\n }\n\n const fromRequest: RequestWrapper = {\n request: getRequest({ from: parsedDate, reverse: true }),\n reversed: true\n };\n const toRequest: RequestWrapper = { request: getRequest({ to: parsedDate }), current: true };\n \n /**\n * Similar to our request animation frame in our callback, we return \n * the request the user is jumping to, then set the request above afterwards\n */\n setRequest([toRequest]);\n window.requestAnimationFrame(() => {\n setRequest(r => [ fromRequest, ...r ]);\n });\n }, []);\n\n return { requests, isEmpty };\n};","import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PartialFixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useActivityStatus } from 'libs/shared/hooks/UseActivityStatus';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { RecentActivity } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nimport { RecentActivities } from 'apps/student-feed/components/recent-activities/RecentActivities';\nimport { PartialStudentFeed } from 'apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed';\nimport { StudentFeedDateFilter } from 'apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter';\nimport { StudentFeedHeader } from 'apps/student-feed/components/student-feed-header/StudentFeedHeader';\nimport { StudentFeedRequests } from 'apps/student-feed/flight-requests/StudentFeedRequests';\nimport { useGetStudentFeedDateRange } from 'apps/student-feed/hooks/useGetStudentFeedDateRange';\n\nimport { StudentFeedEmptyState } from './empty-state/StudentFeedEmptyState';\nimport { LazyFeed } from './LazyFeed';\nimport { useGetFeedRequests } from './useGetFeedRequests';\n\nimport './student-feed.scss';\n\nconst namespace = 'studentFeed.studentFeed';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 10;\n\ninterface StudentFeedViewProps {\n date: string;\n}\n\nexport function StudentFeedView(props: StudentFeedViewProps): JSX.Element {\n const { date } = props;\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.StudentFeed);\n const setActivityStatus = useActivityStatus(LocationContext.StudentFeed);\n\n const { isPlugin } = usePluginHelper();\n\n const dateRange = useGetStudentFeedDateRange();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const recentActivities = Flight.useBasicFetch<RecentActivity[]>(StudentFeedRequests.getRecentActivities());\n\n const { requests, isEmpty } = useGetFeedRequests(LIMIT, date);\n\n const [ redirected, setRedirected ] = React.useState(false);\n const { ref, inView, initialized } = useLazyLoad({ triggerOnce: false, rootMargin: '300px' });\n const showFloatingJumpTo = initialized && !inView;\n\n /**\n * This functionality allows us to scroll to the same timepoint we've already loaded into.\n * i.e. a user clicks \"This week\" scrolls away, and then clicks \"This week\" again.\n * Re-rendering the appLink won't work because our application ends up re-rendering the existing\n * component with it's existing state. - Sha\n */\n const [ scrollTo, setScrollTo ] = React.useState<string>(null);\n function scrollToCurrent(): void {\n const current = requests.find(r => r.current);\n\n if (current) {\n setScrollTo(current.request.key);\n return;\n }\n\n /**\n * If we don't have a current, it's because the user has selected a date\n * that's beyond their oldest feed item, so we just scroll to the bottom of the page\n */\n window.scrollTo(0, document.body.scrollHeight);\n }\n\n /**\n * We reset scrollTo after a render so that clicking on the same timepoint\n * yet again will still scroll to the right place\n */\n React.useLayoutEffect(() => {\n setScrollTo(null);\n });\n\n /**\n * Prevents a flicker when the logic below redirects to dashboard.\n */\n if (redirected)\n return <></>;\n\n /**\n * Redirecting students to discover if they have no videos on their feed and they've\n * page loaded into this page.\n */\n if (isEmpty && ContextService.fromPageLoad()) {\n setRedirected(true);\n Core.AppLinkHelper.trigger({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }, { replace: true });\n return <></>;\n }\n\n return (\n <div className='px-4 container-compact'>\n <div className='pb-2 border-bottom mb-3' ref={ref}>\n <StudentFeedHeader currentUser={currentUser.data} dateRange={dateRange} scrollToCurrent={scrollToCurrent} />\n </div>\n \n <div className='d-flex justify-content-center'>\n <div className='floating-jump-to'>\n <CSSTransition\n timeout={showFloatingJumpTo ? 500 : 0}\n in={showFloatingJumpTo}\n className='floating-jump-to'\n classNames={'floating-jump-to'}\n mountOnEnter\n unmountOnExit\n >\n <StudentFeedDateFilter dateRange={dateRange} floating scrollToCurrent={scrollToCurrent} />\n </CSSTransition>\n </div>\n </div>\n \n {recentActivities.data\n ? (\n <RecentActivities\n recentActivities={recentActivities.data}\n config={config.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n setActivityStatus={setActivityStatus}\n />\n ) : <div className='pb-3'><PartialFixedWidget hideDescription /></div>\n }\n {(!currentUser.data || !config.data) && <PartialStudentFeed items={LIMIT} />}\n {isEmpty && <StudentFeedEmptyState />}\n {requests?.map(r => (\n <LazyFeed\n key={r.request.key}\n limit={LIMIT}\n request={r.request}\n reversed={r.reversed}\n config={config.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n setActivityStatus={setActivityStatus}\n scrollTo={r.request.key === scrollTo}\n isPlugin={isPlugin}\n />\n ))}\n </div>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["ShareHelper","groupByDateShared","data","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","Actions","props","orderedActions","actions","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","namespace","getAppLink","shareId","application","args","object","typeId","MasterType","TextHelper","name","WidgetItem","VideoThumbnail","video","textPosition","ThumbnailTextPosition","imageOptions","preload","preloadImage","setFavourite","canFavourite","setCheckMarkStatus","setActivityStatus","isPlugin","share","owner","Avatar","imageCdnUrl","config","initials","UserHelper","surname","imageUrl","avatar","url","dateShared","recipient","RecentActivities","recentActivities","hasRecentActivityWithOwner","find","LanguageService","contents","WidgetContents","childComponent","extraChildComponentProps","collection","leftWidgetButtonClassName","rightWidgetButtonClassName","prefetched","PartialFeedCard","PartialStudentFeed","Array","items","fill","l","i","getPhrase","normalizeEndDate","setHours","setMinutes","setSeconds","StudentFeedHelper","getPresetDateRanges","default","endDate","Date","setDate","getDate","getDay","getFullYear","getMonth","StudentFeedDateFilter","dateRange","options","Dropdown","variant","floating","Text","phrase","align","as","option","selection","currentAppLink","currentParams","params","DateHelper","ObjectHelper","replace","scrollToCurrent","onSelect","StudentFeedHeader","currentUser","givenName","ShareFeedSortType","StudentFeedRequests","getFeed","ownerId","from","to","cursor","limit","success","error","queryParams","convertDateToUTCString","utc","UrlHelper","cacheDuration","CacheDurations","formatData","DateAscending","getRecentActivities","res","activity","useGetStudentFeedDateRange","setDateRange","presetDateRanges","hasDateMatch","range","presetFrom","startDate","presetTo","r","cta","StudentFeedEmptyState","value","EmptyState","src","ImageUrls","text","FeedCardHeader","shareData","message","FeedVideoThumbnail","VideoHelper","canConsume","reasonText","BaseImage","imageType","imageClassName","location","useStudentFeedActions","useLiteFavourites","u","isArchived","isFavourited","entity","actionType","descriptor","workflowPhase","FeedVideo","getVideoActions","VideoSubText","SeriesAppLinkHelper","series","description","FeedVideoIndicator","indicator","active","DivButton","FeedVideoCollectionIndicators","getVideoIndex","videos","findIndex","v","currentVideo","currentVideoIndex","setCurrentVideoIndex","getSize","index","getInitialIndicatorState","indicators","setIndicators","oldIndex","newIndex","newActiveIndicatorIndex","activeIndicatorIndex","newIndicatorState","shiftedIndicators","indicatorState","direction","indexOfFirstStdIndicator","indexOfLastStdIndicator","shiftedIndicatorState","getShiftedIndicators","d","onSelectIndex","getExtraParams","obj","clipId","interactiveId","videoId","FeedVideoCollectionItem","contextId","context","RelatedVideosContext","SmallFeedVideoCollectionItem","FeedVideoCollectionEmptyState","getCollectionItems","MasterTypeHelper","union","FeedVideoCollection","ArrayHelper","setCurrentVideo","showExpandedVideoList","setShowExpandedVideoList","fixedWidgetControls","controlsRef","onNext","onPrevious","hideBleedingContent","hideName","hideExtendedClickableArea","lazyLoad","touchBehavior","Row","Col","xs","current","jumpToIndex","val","limitTotalItems","StudentFeed","feed","sharedObject","JUMP_ERROR_MARGIN","SINGLE_ITEM_SIZE","LazyFeed","request","reversed","scrollTo","scrollToRef","triggerOnce","rootMargin","ref","inView","scrollY","window","lastHeight","setLastHeight","boundingRect","getBoundingClientRect","requestAnimationFrame","top","offsetTop","delta","overflow","useGetFeedRequests","store","alerts","requests","setRequest","isEmpty","setIsEmpty","getRequest","pagination","cursors","next","wrapper","updated","slice","DateDescending","xhr","onError","response","getState","setTimeout","parsedDate","isNaN","parse","fromRequest","toRequest","LIMIT","StudentFeedView","usePluginHelper","useSetPageMetadata","UserRequests","ConfigRequests","redirected","setRedirected","showFloatingJumpTo","initialized","setScrollTo","document","body","scrollHeight","ContextService","CSSTransition","timeout","in","classNames","mountOnEnter","unmountOnExit","hideDescription","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","test","parseInt","trim","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","toString","unit"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6263],{50690:(e,t,n)=>{n.d(t,{b:()=>r});var a=n(12788),r={renderInPortalIfExists:function(e,t){return t?(0,a.createPortal)(e,t):e}}},84963:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(32735),r=n(23481),i=n(83914),o=n(76177),l=n(35223);const s={tag:"XRj8d",tooltip:"X6mLk"};var c="specialEventCalendar.comingSoonTag";function u(e){return a.createElement(o.u,{title:r.T.getPhrase(c,"tooltip"),spanHackClassName:"d-block ".concat(s.tooltip),spanHack:!0},a.createElement("div",{className:"d-flex text-dark align-items-center ".concat(s.tag," ").concat(e.className)},a.createElement(i.x,{svgName:l.vn.Timer}),!e.onlyIcon&&r.T.getPhrase(c,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>o});var a=n(32735),r=n(36848);const i={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function o(e){var t,n,o;return a.createElement(r.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},a.createElement("div",{className:"position-relative ".concat(i.dateItem)},a.createElement("div",{className:"".concat(null===(o=e.theme)||void 0===o?void 0:o.background," py-1 ").concat(i.label," d-flex align-items-center justify-content-center")},e.label?e.label:a.createElement(a.Fragment,null," ")),a.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return i.bodyRange;case"day":return i.bodyDay;case"month":return i.bodyMonth}}()," ").concat(i.body," my-2")},e.body.text),a.createElement("div",{className:"mb-0 ".concat(i.month)},e.month)))}},44522:(e,t,n)=>{n.d(t,{p:()=>A,v:()=>k});var a=n(32735),r=n(110),i=n(50690),o=n(84963),l=n(73679),s=n(83657),c=n(23481),u=n(36848),d=n(83914),m=n(35223),p="shared.backButton";function f(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,r=t.appLink,i=t.color,o=t.extraClasses,l=t.textShadow,s=n?c.T.getPhrase(p,"backTo",{backToName:n}):c.T.getPhrase(p,"back"),f="black"===i?"":"text-white",v=l?"text-shadow":"";return a.createElement(u.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(o," ").concat(f," ").concat(v)},a.createElement(d.x,{svgName:m.vn.ChevronLeft,size:d.S.Medium}),a.createElement("span",{className:"ms-1"},s))}f.defaultProps={color:"black",extraClasses:""};var v=n(36518),y=n(83345),g=n(10587),h=n(94232),b=n(54610),E=n(79967),C=n(67453);const w={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var S="".concat(g.y[b.__.Banners].width,":").concat(g.y[b.__.Banners].height);function I(e){return e.length<160?"h1":w.headingLarge}var A=a.memo((function(e){var t,n,c,u,d=e.heading,m=e.banner,p=e.imageCdnUrl,g=e.actions,A=e.sortComponent,k=e.blockColourClass,O=e.specialEvent,N=a.useContext(h.n),L=(0,E.k)().xxl?1920:1200,x=a.useMemo((function(){if(!O||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return O.endDate?O.startDate<=t&&O.endDate>=t:O.startDate===t}),[O]),P=e.imageOptions||{width:L,ratio:S,resizeType:b.Nq.Cover},T=!!m&&!!p&&C.j.createBannerUrl(m,{fallbackBaseUrl:p,fallbackCategoryName:d,type:b.__.Banners},P),j={className:"banner banner-header ".concat(e.bannerClassName),style:T?{backgroundImage:"url('".concat(T,"')")}:{}};!m&&k&&(delete j.style,j.className+=" ".concat(k));var F=e.detailsComponent;return i.b.renderInPortalIfExists(a.createElement("header",Object.assign({},j),a.createElement("div",{className:"container ".concat(w.container," position-relative inner-banner")},e.backButtonAppLink&&a.createElement("div",{className:"pt-3"},a.createElement(f,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),a.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(w.bannerContent," px-2 ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?w.bannerContentWithLogo:""))},!!O&&a.createElement("div",{className:"position-relative ".concat(w.specialEventContainer)},a.createElement(l.s,{body:{type:O.endDate?"range":"day",text:O.endDate?"".concat(r.O.format(O.startDate,"DD"),"-").concat(r.O.format(O.endDate,"DD")):r.O.format(O.startDate,"DD")},month:r.O.format(O.startDate,"MMMM"),theme:e.calendarTheme})),a.createElement("div",null,x&&a.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},a.createElement(y.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&a.createElement(o.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),a.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&a.createElement("div",{className:"".concat(w.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&a.createElement(v.w,{src:C.j.createUrl(null===(c=e.logo)||void 0===c?void 0:c.url,{size:b.h2.Small})})),a.createElement("h1",{className:"text-white text-shadow pe-3 position-static ".concat(w.heading," ").concat(I(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,F&&a.createElement(F,null)))),!!g&&a.createElement("div",{className:w.actionsContainer},a.createElement(s.e,{actions:g,sortComponent:A,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&a.createElement("div",{className:w.logoContainer},a.createElement("img",{src:C.j.createUrl(e.logo.url,{size:b.h2.Small}),className:"rounded-circle"})))),null==N?void 0:N.container)}),(function(e,t){var n,a;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(a=t.logo)||void 0===a?void 0:a.url)}));function k(){var e=a.useContext(h.n);return i.b.renderInPortalIfExists(a.createElement("div",{className:"partial-banner partial-loading-background ".concat(w.banner)}),null==e?void 0:e.container)}},49935:(e,t,n)=>{n.d(t,{Oo:()=>d,b2:()=>m});var a=n(32735),r=n(36848),i=n(86764),o=n(3747),l=n(5859),s=n(35223),c=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,o=t.active,l=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?a.createElement("strong",null,n):a.createElement(r.F,{appLink:i},l&&a.createElement(c.x,{svgName:s.vn.ChevronLeft,size:c.S.Small}),a.createElement("span",{className:l?"ms-2":""},n)))},d=function(e){var t=e.breadcrumbs,n=(0,o.a)(i.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(u,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(u,{key:t,breadcrumb:e})}))))},m=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,o.a)(i.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},71020:(e,t,n)=>{n.d(t,{_:()=>u});var a=n(32735),r=n(80247),i=n(34152),o=n(83914),l=n(35223);const s={container:"VwD1b",spinner:"eJ85e"};function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function u(e){var t,n,u=(t=(0,i.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(t,n)||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.")}()),d=u[0],m=u[1];return a.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),a.createElement("div",{className:"p-3 text-center ".concat(s.container),ref:d},e.isFetching?a.createElement(r.Z,{as:"span",animation:"border",role:"status",className:s.spinner}):a.createElement(o.x,{svgName:l.vn.ChevronDown,className:"svg-container cursor-pointer",size:o.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},74696:(e,t,n)=>{n.d(t,{S:()=>c});var a=n(32735),r=n(68050),i=n(69111),o=n(9977),l=n(79967);const s={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function c(e){return a.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return a.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&a.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),a.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===o.O.getSize(t,"md"),c=e.withReordering&&!t.xs;return a.createElement(r.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},a.createElement(i.Z,Object.assign({},o.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),a.createElement(r.Z,null,!!c&&a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},a.createElement("div",{className:"partial-loading-background ".concat(s.partialDragHandle)})),a.createElement(i.Z,{xs:o.O.getThumbnailColSize(c)},a.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(s.partialThumbnail)})))),a.createElement(i.Z,Object.assign({},o.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(s.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(s.partialDescription)})))}c.defaultProps={numVideos:15}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),i=n(67058),o=n(14553),l=n(49267),s=n(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:l.a,privacy:o.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new o.badRequest):n.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):n.notFound||r.Q.Ry.throw(new o.notFound))}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var a=n(32735),r=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){o.forEach((function(e){(0,r.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},60115:(e,t,n)=>{n.d(t,{K:()=>c});var a=n(32735),r=n(50242),i=n(91967),o=400,l=n(45719);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function c(e,t,n,c,u,d){var m,p,f,v,y=(m=(0,a.useState)(0),p=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(m,p)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(m,p)||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.")}()),g=y[0],h=y[1],b=t,E=(0,l.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),c,u);return f={fetchNextPage:function(){if(t&&e&&E)return h((function(e){return e+1})),b(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:d},v=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-o)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-o)return;f.fetchNextPage()}},(0,a.useEffect)((function(){var e=i.q.throttle(v,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,a.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(b(),h((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,a.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&i.q.isFunction(n)){var a=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));a!==r.k.ClientError&&a!==r.k.ServerError||n(g,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},5859:(e,t,n)=>{function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}n.d(t,{u:()=>i});var r={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},6263:(e,t,n)=>{n.r(t),n.d(t,{PlaylistView:()=>Fe});var a=n(32735),r=n(70680),i=n(23481),o=n(81886),l=n(20354),s=n(65858),c=n(1048),u=n(4594),d={isPlaylist:function(e){return(null==e?void 0:e.typeId)===u.E.Playlist},isOwner:function(e,t){var n;return!(!t||!e||c.t.isEmpty(e._liteOwner))&&e._liteOwner.id.toString()===(null===(n=t.id)||void 0===n?void 0:n.toString())},getVideoCount:function(e){var t,n,a;if(e){var r=0;return(null===(t=e.videos)||void 0===t?void 0:t.count)&&(r+=e.videos.count),(null===(n=e.clips)||void 0===n?void 0:n.count)&&(r+=e.clips.count),(null===(a=e.interactives)||void 0===a?void 0:a.count)&&(r+=e.interactives.count),r}}},m=n(71020),p=n(51365),f=n(183),v=n(89454),y=n(21750),g=n(39151),h=n(1666),b=n(5112),E=n(31949),C=n(69883),w=n(56520),S=n(91286),I=n(60115),A=n(22902);function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var O=n(79612),N=n(76753),L=n(54569),x=n(31908),P=n(14070),T=n(97291),j=n(51855),F=n(7179),D=n(27638),V=n(86698),M=n(97816),B=n(10741),U=n(33192),_=n(22490),R=n(110),H=n(28400),Y=n(89725),q=n(83345),G="playlists.playlistHeaderDetails",Z=function(e){var t=e.className;return a.createElement("span",{className:t},"•")};function Q(e){var t=e._liteOwner;if(t)return t.name&&t.surname?H.m.toTitleCase(t.name+" "+t.surname.substring(0,1)):t.name?t.name.split(" ")[0]:void 0}function W(e){var t,n,r=d.isOwner(e.playlist,e.currentUser),i=null===(t=e.playlist.followers)||void 0===t?void 0:t.count,o=function(e){if(!e.contentModifiedDate)return"";var t=new Date,n=R.O.convertUTCToLocal(e.contentModifiedDate);return R.O.isBefore(n,R.O.subtract(t,1,"month"))?"":R.O.fromNow(n)}(e.playlist);return a.createElement("div",{className:e.detailsClassName},!e.hideOwnerName&&!r&&a.createElement(a.Fragment,null,(null===(n=e.playlist._isClickViewCurated)||void 0===n?void 0:n.value)?a.createElement(a.Fragment,null,a.createElement("div",{className:e.clickViewAvatarClassName},a.createElement(Y.F,null)),a.createElement("span",null,"ClickView")):a.createElement(q.x,{namespace:G,phrase:"createdBy",options:{user:Q(e.playlist)}}),a.createElement(Z,{className:e.separatorClassName})),"number"==typeof e.totalVideos&&a.createElement(q.x,{namespace:G,phrase:"videos",options:{smartCount:e.totalVideos}}),i>0&&a.createElement(a.Fragment,null,a.createElement(Z,{className:e.separatorClassName}),a.createElement(q.x,{namespace:G,phrase:"followers",options:{smartCount:i}})),!!o&&a.createElement(a.Fragment,null,a.createElement(Z,{className:e.separatorClassName}),a.createElement(q.x,{namespace:G,phrase:"lastUpdated",options:{timeAgo:o}})))}var z=n(44522),X=n(49935),$=n(7733),J=n(86764),K=n(3747),ee=n(9085);const te={partialDescription:"vDX0m"};function ne(){return a.createElement(a.Fragment,null,a.createElement(z.v,null),a.createElement("div",{className:"mb-2"},a.createElement("div",{className:"partial-loading-background my-2 border-bottom ".concat(te.partialDescription)})))}var ae=n(49985),re=n(35223),ie=i.T.encloseNamespace("playlists.playlistHeader"),oe={getPlaylistActions:function(e,t){var n,a,r,i,o,l,c=t.isAuthenticated,u=t.isPlugin,m=t.isMobile,p=t.setIsFollowing,f=t.isFollowing,v=t.setShowFollowSpinner,y=t.showFollowSpinner,g=t.isUserCurator,h=t.openInCuratorLink,b={id:e.playlist.id,name:e.playlist.name,followerCount:null===(n=e.playlist.followers)||void 0===n?void 0:n.count,videoCount:null===(a=e.playlist.videos)||void 0===a?void 0:a.count,interactiveCount:null===(r=e.playlist.interactives)||void 0===r?void 0:r.count,clipCount:null===(i=e.playlist.clips)||void 0===i?void 0:i.count,isClickViewPlaylist:null===(o=e.playlist._isClickViewCurated)||void 0===o?void 0:o.value},E={location:s.LZ.Banner,entity:s.py.Playlist,workflowPhase:s.eu.Start},C=[];if(!c)return C;var S=d.isOwner(e.playlist,e.currentUser);return u||(e.playAllAppLink&&C.push({label:ie("playAll"),appLink:e.playAllAppLink,svgName:re.vn.Play,className:m?"":"btn btn-outline-dark me-2",button:!m,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Play})}),g&&C.push({label:(0,w.eR)(),href:h,openInNewTab:!0}),C.push({label:ie("share"),appLink:{application:T.O.DEFAULT,action:P.e.Default.SHARE,args:[e.playlist.id],params:{entityType:"playlist"}},svgName:re.vn.Share2,className:m?"":"btn btn-outline-dark me-2",button:!m,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Share,eventVersion:s.eq.V3})})),S||C.push({label:ie(f?"unfollow":"follow"),onClick:function(){p(!f),v(!0),e.follow(!f,(function(){v(!1),ae.k.logUserAction(b,Object.assign(Object.assign({},E),{actionType:s.Vw.Follow,descriptor:f?s.DL.Off:s.DL.On,workflowPhase:s.eu.Complete}))}),(function(){v(!1),p(f)}))},svgName:f?re.vn.Check:re.vn.Bell,className:m?"":"btn follow-btn btn-".concat(f?"outline-dark":"dark"," me-2"),button:!m,showSpinner:y}),S&&(C.push({label:ie("edit"),appLink:{application:T.O.PLAYLISTS,action:P.e.Playlists.EDIT_PLAYLIST,args:[e.playlist.id]},svgName:re.vn.Edit,button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Edit})}),C.push({label:ie("delete"),appLink:{application:T.O.PLAYLISTS,action:P.e.Playlists.DELETE_PLAYLIST,args:[e.playlist.id]},svgName:re.vn.Delete,className:"text-danger",button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Delete})})),(null===(l=e.playlist._isClickViewCurated)||void 0===l?void 0:l.value)&&C.push({label:ie("copy"),appLink:{application:T.O.PLAYLISTS,action:P.e.Playlists.COPY_PLAYLIST,args:[e.playlist.id]},button:!1,analyticsData:b,analyticsOptions:Object.assign(Object.assign({},E),{actionType:s.Vw.Copy})}),C}};const le={clickViewAvatar:"PHe9c"};function se(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ce(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ce(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 ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function ue(e){var t,n=(0,j.G)().isPlugin,r=se(a.useState(e.isFollowing),2),i=r[0],o=r[1],l=se(a.useState(!1),2),s=l[0],c=l[1];a.useEffect((function(){return o(e.isFollowing)}),[e.isFollowing]);var u=(0,K.a)(J.r.XS);if(e.showPartialLoading)return a.createElement(ne,null);var d=e.playlist.description,m=oe.getPlaylistActions(e,{isAuthenticated:e.currentUser.isAuthenticated,isPlugin:n,isMobile:u,setIsFollowing:o,isFollowing:i,setShowFollowSpinner:c,showFollowSpinner:s,isUserCurator:e.isUserCurator,openInCuratorLink:e.openInCuratorLink});return a.createElement(a.Fragment,null,a.createElement(z.p,{heading:e.playlist.name,banner:e.playlist.banner,imageCdnUrl:e.imageCdnUrl,actions:m.length&&m,actionsDropdownClassName:"btn btn-outline-dark",blockColourClass:(0,ee.x)(e.playlist.name,$.o),detailsComponent:function(){return a.createElement(W,{playlist:e.playlist,currentUser:e.currentUser,detailsClassName:"mb-n1 font-size-normal fw-normal mt-1",clickViewAvatarClassName:le.clickViewAvatar,separatorClassName:"mx-1",totalVideos:e.totalVideos})}}),(!!d||!!(null===(t=e.topicPath)||void 0===t?void 0:t.length)||!!e.moviesAndTv)&&a.createElement("div",{className:"border-bottom py-3"},e.classificationId||e.moviesAndTv?!e.playlist||e.classificationId&&!e.topicPath?a.createElement(X.b2,null):a.createElement("div",{className:"pb-2"},a.createElement(X.Oo,{breadcrumbs:e.getBreadcrumbs()})):a.createElement(a.Fragment,null),!!d&&a.createElement("p",{className:"mb-0"},d)))}var de=n(56050),me=n(91967),pe=n(83914),fe=n(74696),ve=n(13231);function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ge=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function he(e){var t,n,r=e.onSortComplete,i=e.onSortStart,l=e.showPartialLoading,s=ge(e,["onSortComplete","onSortStart","showPartialLoading"]),c=(t=a.useState(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ye(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ye(e,t):void 0}}(t,n)||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.")}()),u=c[0],d=c[1];return l?a.createElement(fe.S,{withReordering:e.canEdit||e.showIndexes}):e.canEdit?a.createElement(ve.NB,Object.assign({},s,{currentSortingIndex:u,onSortStart:function(t){var n=e.videos.findIndex((function(e){return e.id.toString()===t.active.id.toString()}));d(n),me.q.isFunction(i)&&i(n)},onSortEnd:function(t){d(null);var n=t.active,a=t.over,i=e.videos.findIndex((function(e){return e.id.toString()===n.id.toString()})),l=e.videos.findIndex((function(e){return e.id.toString()===a.id.toString()}));me.q.isFunction(r)?r(i,l):o.Q.Ry.throw(new de.H("An onSortComplete callback function must be passed to SortableVideoListComponent"))},dragHandleIcon:re.vn.Hamburger,dragHandleIconSize:pe.S.XXL,presentationAudiences:e.presentationAudiences})):a.createElement(ve.E4,Object.assign({},s))}var be=n(23232),Ee=n(99742),Ce="playlists.playlistEmptyState";function we(){return a.createElement(q.D.Provider,{value:Ce},a.createElement(be.u,null,a.createElement(be.u.Image,{src:Ee.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),a.createElement(be.u.Heading,null,a.createElement(q.x,{phrase:"heading"})),a.createElement(be.u.Info,null,a.createElement(q.x,{phrase:"info"}))))}n(75896);var Se=n(87114),Ie=n(81493),Ae=n(9680),ke=n(10671);function Oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Ne=i.T.encloseNamespace("playlists.playlist"),Le=function(e,t){return{application:T.O.SUBJECT,action:P.e.Subjects.CLASSIFICATION,args:[e.id,H.m.slugify(e.name)],params:{mtv:!!t||void 0}}};function xe(e,t,n){ae.k.logUserAction({id:t,playlistId:e},{location:s.LZ.VideoList,entity:s.py.Video,actionType:s.Vw.Move,workflowPhase:n})}var Pe={notFound:Ie.N,forbidden:{privacy:Ae.J}};function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var je=i.T.encloseNamespace("playlists.playlist");function Fe(e){var t,n,i,c,u,R,H,Y,q,G,Z,Q,W,z=(0,r.I0)(),X=(0,C.Z)(),$=l.a.useBasicFetch(g.L.config()),J=l.a.useBasicFetch(E.N.currentUser()),K=(0,w.R0)(),ee=K.isUserCurator,te=K.getOpenInCurationStudioLink,ne=(0,A.T)().hasPermissions,ae=(0,j.G)().isPlugin,ie=l.a.useBasicFetch((null===(t=J.data)||void 0===t?void 0:t.isAuthenticated)&&h.h.yearGroups(J.data.customerId)),oe=l.a.useBasicFetch(e.classificationId&&y.x.path(e.classificationId)),le=l.a.useBasicFetch(e.classificationId&&y.x.classification(e.classificationId,null===(n=J.data)||void 0===n?void 0:n.id)),se=l.a.useBasicFetch(le.hasCompleted&&y.x.presentationById(null===(i=le.data)||void 0===i?void 0:i.presentationId)),ce=l.a.useBasicFetch((!e.classificationId||se.hasCompleted)&&v.O.presentationAudiences(null===(c=se.data)||void 0===c?void 0:c.id)),de=(0,V.y)(),me=de.activePresentation,pe=de.availablePresentations,fe=(0,D.u)(s.LZ.VideoThumbnail),ve=fe.setFavourite,ye=fe.canFavourite,ge=e.shareId?b.C.getSharedPlaylist(e.playlistId,e.shareId):b.C.getPlaylist(e.playlistId),be=e.shareId?b.C.getSharedPlaylistVideosCount(e.playlistId,e.shareId):b.C.getPlaylistVideosCount(e.playlistId),Ee=l.a.useBasicFetch(ge),Ce=l.a.useBasicFetch(be),Ie=function(e,t,n){var a=(0,ke._)({location:ke.i.VideoItem,shareId:n});return d.isOwner(e,t)?Object.assign(Object.assign({},a),{getVideoActions:function(t,n){var r,i=x.M.getCanBeConsumed(t).canConsume,o={label:Ne("removeFromPlaylist"),button:!1,svgName:re.vn.Delete,appLink:{application:T.O.PLAYLISTS,action:P.e.Playlists.REMOVE_VIDEO_FROM_PLAYLIST,args:[t.id,e.id],params:{typeId:t.typeId}},className:"text-danger",analyticsOptions:{entity:s.py.Video,actionType:s.Vw.Dissociate,location:s.LZ.VideoListItem,workflowPhase:s.eu.Start,descriptor:s.iF.Playlist},analyticsData:{id:t.id,playlistId:e.id},group:"delete"};return i?[].concat(function(e){if(Array.isArray(e))return Oe(e)}(r=a.getVideoActions(t,n))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return Oe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Oe(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[o]):[o]}}):a}(Ee.data,J.data,e.shareId);(0,S.v)(Ee,Pe);var Ae=function(t){return e.shareId?b.C.getSharedPlaylistVideos(e.playlistId,e.shareId,t):b.C.getPlaylistVideos(e.playlistId,t)},Fe=l.a.useBasicFetch((null===(u=J.data)||void 0===u?void 0:u.id)&&b.C.getIsFollowingPlaylist(e.playlistId,null===(R=J.data)||void 0===R?void 0:R.id)),De=function(e){l.a.getFetch(z)(Ae(e))},Ve=(0,I.K)(Ae,De),Me=Ve.items,Be=Ve.hasMore,Ue=Ve.isFetching;(0,M.V)(Me);var _e,Re,He,Ye,qe,Ge,Ze=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Te(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(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.")}()}((_e=Me,qe=(0,a.useState)(),Ge=2,Re=function(e){if(Array.isArray(e))return e}(qe)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(qe,Ge)||function(e,t){if(e){if("string"==typeof e)return k(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}(qe,Ge)||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.")}(),He=Re[0],Ye=Re[1],(0,a.useEffect)((function(){He&&(_e.length!==He.length||function(e,t){var n=!0;if(e.length!==t.length)return!1;for(var a=0;a<e.length;a++)if(e[a].id!==t[a].id){n=!1;break}return n}(_e,He))&&Ye(null)}),[_e]),[He,Ye]),2),Qe=Ze[0],We=Ze[1];(0,F.P)({id:e.playlistId,app:"playlists",shareId:e.shareId}),(0,O.M)(N.CG.getPlaylistMetadata({content:Ee.data,phraseContext:{phraseHandler:je,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:U.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:!1}));var ze=!!Me&&0===Me.length,Xe=function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return _.W.getAppLink(t,Object.assign(Object.assign({},a),{contextId:e.playlistId,context:f.Q.Playlist,shareId:e.shareId,moviesAndTv:e.moviesAndTv,playNext:n}))},$e=!(null===(H=J.data)||void 0===H?void 0:H.isAuthenticated)||!!Fe.hasCompleted,Je=null==Me?void 0:Me.find((function(e){var t;return null===(t=x.M.getCanBeConsumed(e))||void 0===t?void 0:t.canConsume})),Ke=d.isOwner(Ee.data,J.data),et=Me&&J.data&&$.data;return a.createElement(p.M.Provider,{value:(null===(Y=J.data)||void 0===Y?void 0:Y.isAuthenticated)&&Ie},a.createElement("div",{className:"bg-white px-3"},a.createElement(ue,{playlist:Ee.data,currentUser:J.data,isFollowing:null===(q=Fe.data)||void 0===q?void 0:q.isFollowing,follow:function(t,n,a){var r,i=t?b.C.followPlaylist:b.C.unfollowPlaylist;l.a.fetch(z,i(e.playlistId,null===(r=J.data)||void 0===r?void 0:r.id,n,(function(){a(),X.error(je(t?"followError":"unfollowError"))})))},playAllAppLink:Je&&Xe(Je,!0),showPartialLoading:!Ee.data||!et||!$e,imageCdnUrl:!!$.data&&$.data.imageCdnUrl,getBreadcrumbs:function(){return function(e){var t=e.topicPath,n=e.presentation,a=e.availablePresentations,r=e.playlist;if(e.moviesAndTv){var i=[{name:Ne("moviesAndTv"),appLink:{application:T.O.MOVIES_AND_TV,action:P.e.MoviesAndTv.HOME}}];return null==t||t.slice(1,t.length).forEach((function(e){i.push({name:e.name,appLink:Le(e,!0)})})),i.push({name:r.name,active:!0}),i}var o=[{name:Ne("discover"),appLink:{application:T.O.DASHBOARD,action:P.e.Dashboard.HOME}}];return t&&(o.push({name:Se.i.getExploreAllTopicsTitle(null==n?void 0:n.name,null==a?void 0:a.length),appLink:{application:T.O.SUBJECT,action:P.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:null==n?void 0:n.id}}}),t.slice(1,t.length).forEach((function(e){o.push({name:e.name,appLink:Le(e)})}))),o.push({name:r.name,active:!0}),o}({availablePresentations:pe,moviesAndTv:e.moviesAndTv,playlist:Ee.data,presentation:me,topicPath:oe.data})},topicPath:oe.data,moviesAndTv:e.moviesAndTv,classificationId:e.classificationId,isUserCurator:ee,openInCuratorLink:te(null===(G=Ee.data)||void 0===G?void 0:G.typeId,null===(Z=Ee.data)||void 0===Z?void 0:Z.id),totalVideos:d.getVideoCount(Ce.data)}),a.createElement("div",{className:"mt-2"},ze?a.createElement(we,null):a.createElement(he,{videos:Qe||Me,yearGroups:ie.data,playlistId:!!Ee.data&&Ee.data.id,onSortStart:function(t){var n=Me[t];n&&xe(e.playlistId,n.id,s.eu.Start)},onSortComplete:function(t,n){if(t!==n){var a=Me[t];if(a){var r=L.l.reorder(Me,t,n),i=r.reorderedItems,o=r.reorderRequest;We(i),xe(e.playlistId,a.id,s.eu.Complete),l.a.fetch(z,b.C.reorderVideos(e.playlistId,o,null,(function(){We(null)})))}}},canEdit:Ke,showPartialLoading:!et,getVideoAppLink:function(e,t){return Xe(e,!1,t)},getSubTextAppLink:function(t){return e.getSeriesAppLink(t.series)},setFavourite:ve,canFavourite:ye,showSignIn:!(null===(Q=J.data)||void 0===Q?void 0:Q.isAuthenticated),getSignInAppLink:function(e){var t=o.Q.C$.getHref(e),n="/"!==t?{redirectUrl:t}:{};return{application:T.O.DEFAULT,action:P.e.Default.LOG_IN,params:n}},canRemovePrivateVideos:Ke,presentationAudiences:e.moviesAndTv?null:ce.data,showIndexes:!0,hasPermissions:ne,getPreviewQuestionsAppLink:function(e){return B.j.getPreviewQuestionsAppLink(e)},imageCdnUrl:null===(W=$.data)||void 0===W?void 0:W.imageCdnUrl,isPlugin:ae,getClassroomGuideAppLink:_.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:_.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:_.W.getResourceGuidanceAppLink})),(Be||Ue)&&a.createElement(m._,{isFetching:Ue,fetchNext:De})))}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var a=n(32735),r=n(20354),i=n(21750),o=n(31949),l=n(1575),s=n(31908);function c(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function d(e){var t,n,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(o.N.currentUser()),p=a.useRef(new Set),f=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):[]:[]}(e),v=f.map((function(e){return e.id})),y=(t=a.useState([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(t,n)||c(t,n)||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.")}()),g=y[0],h=y[1];a.useEffect((function(){if((null==v?void 0:v.length)&&m.hasCompleted){var e=[];v.forEach((function(t){p.current.has(t)||(e.push(t),p.current.add(t))})),e.length&&h((function(t){var n,a=[].concat(function(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t),[l.R.videoMixinAssocs(e,d.flightNamespace)]);return(null===(n=m.data)||void 0===n?void 0:n.isAuthenticated)&&a.push(i.x.hasCurriculumLinks(e,null,d.flightNamespace)),a}))}}),[null==v?void 0:v.length,m.hasCompleted]),r.a.useBasicFetchAll(g)}}}]);
2
- //# sourceMappingURL=6263-82ae071643-lite.chunk.js.map