@clickview/lite 0.52.3-dev.0 → 0.52.3-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{1760-lite-d230b51c8b.chunk.css → 1019-lite-402889ede4.chunk.css} +2 -1
  3. package/dist/css/{6094-lite-d230b51c8b.chunk.css → 2548-lite-402889ede4.chunk.css} +2 -1
  4. package/dist/css/{6546-lite-991b6e8255.chunk.css → 6596-lite-e22262b911.chunk.css} +2 -1
  5. package/dist/css/{1867-lite-991b6e8255.chunk.css → 9010-lite-e22262b911.chunk.css} +2 -1
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{1760-33f1791560-lite.chunk.js → 1019-8fc84c7c2e-lite.chunk.js} +2 -2
  8. package/dist/scripts/{1760-33f1791560-lite.chunk.js.map → 1019-8fc84c7c2e-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/1063-5a732288dc-lite.chunk.js +2 -0
  10. package/dist/scripts/1063-5a732288dc-lite.chunk.js.map +1 -0
  11. package/dist/scripts/{9173-2392d447a6-lite.chunk.js → 1104-f057c6dea1-lite.chunk.js} +3 -3
  12. package/dist/scripts/{9173-2392d447a6-lite.chunk.js.map → 1104-f057c6dea1-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{1125-aac132b88f-lite.chunk.js → 1125-c5138ef662-lite.chunk.js} +2 -2
  14. package/dist/scripts/1125-c5138ef662-lite.chunk.js.map +1 -0
  15. package/dist/scripts/1169-9b7d850bab-lite.chunk.js +2 -0
  16. package/dist/scripts/1169-9b7d850bab-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{1379-082bbab71a-lite.chunk.js → 1379-ca519ec56b-lite.chunk.js} +3 -3
  18. package/dist/scripts/{1379-082bbab71a-lite.chunk.js.map → 1379-ca519ec56b-lite.chunk.js.map} +1 -1
  19. package/dist/scripts/1672-0d1fc90529-lite.chunk.js +3 -0
  20. package/dist/scripts/1672-0d1fc90529-lite.chunk.js.map +1 -0
  21. package/dist/scripts/1725-99450ed637-lite.chunk.js +2 -0
  22. package/dist/scripts/1725-99450ed637-lite.chunk.js.map +1 -0
  23. package/dist/scripts/1891-5914c54eca-lite.chunk.js +2 -0
  24. package/dist/scripts/1891-5914c54eca-lite.chunk.js.map +1 -0
  25. package/dist/scripts/1896-399a91d18c-lite.chunk.js +2 -0
  26. package/dist/scripts/1896-399a91d18c-lite.chunk.js.map +1 -0
  27. package/dist/scripts/193-797b89797a-lite.chunk.js +2 -0
  28. package/dist/scripts/193-797b89797a-lite.chunk.js.map +1 -0
  29. package/dist/scripts/209-fe96739cb5-lite.chunk.js +2 -0
  30. package/dist/scripts/209-fe96739cb5-lite.chunk.js.map +1 -0
  31. package/dist/scripts/2134-b8d5c46887-lite.chunk.js +2 -0
  32. package/dist/scripts/2134-b8d5c46887-lite.chunk.js.map +1 -0
  33. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js +2 -0
  34. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js.map +1 -0
  35. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js +2 -0
  36. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js.map +1 -0
  37. package/dist/scripts/2548-c5dd2899df-lite.chunk.js +2 -0
  38. package/dist/scripts/2548-c5dd2899df-lite.chunk.js.map +1 -0
  39. package/dist/scripts/2952-c3a826b714-lite.chunk.js +2 -0
  40. package/dist/scripts/2952-c3a826b714-lite.chunk.js.map +1 -0
  41. package/dist/scripts/3404-23125f10ea-lite.chunk.js +2 -0
  42. package/dist/scripts/3404-23125f10ea-lite.chunk.js.map +1 -0
  43. package/dist/scripts/3633-f3609526a5-lite.chunk.js +2 -0
  44. package/dist/scripts/3633-f3609526a5-lite.chunk.js.map +1 -0
  45. package/dist/scripts/3728-eed9e78985-lite.chunk.js +2 -0
  46. package/dist/scripts/3728-eed9e78985-lite.chunk.js.map +1 -0
  47. package/dist/scripts/4063-5fa157657f-lite.chunk.js +2 -0
  48. package/dist/scripts/4063-5fa157657f-lite.chunk.js.map +1 -0
  49. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js +2 -0
  50. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js.map +1 -0
  51. package/dist/scripts/4273-e42f763f00-lite.chunk.js +3 -0
  52. package/dist/scripts/4273-e42f763f00-lite.chunk.js.map +1 -0
  53. package/dist/scripts/4395-d0815835c8-lite.chunk.js +2 -0
  54. package/dist/scripts/4395-d0815835c8-lite.chunk.js.map +1 -0
  55. package/dist/scripts/4502-af4903784e-lite.chunk.js +2 -0
  56. package/dist/scripts/4502-af4903784e-lite.chunk.js.map +1 -0
  57. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js +2 -0
  58. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js.map +1 -0
  59. package/dist/scripts/5573-4352a3537e-lite.chunk.js +2 -0
  60. package/dist/scripts/5573-4352a3537e-lite.chunk.js.map +1 -0
  61. package/dist/scripts/5595-3acc9593bf-lite.chunk.js +2 -0
  62. package/dist/scripts/5595-3acc9593bf-lite.chunk.js.map +1 -0
  63. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js +2 -0
  64. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js.map +1 -0
  65. package/dist/scripts/5877-628732da21-lite.chunk.js +2 -0
  66. package/dist/scripts/5877-628732da21-lite.chunk.js.map +1 -0
  67. package/dist/scripts/5936-cd98109a7b-lite.chunk.js +2 -0
  68. package/dist/scripts/5936-cd98109a7b-lite.chunk.js.map +1 -0
  69. package/dist/scripts/{5940-f335f8c290-lite.chunk.js → 5940-2767b40c40-lite.chunk.js} +2 -2
  70. package/dist/scripts/5940-2767b40c40-lite.chunk.js.map +1 -0
  71. package/dist/scripts/6054-1e9b86d631-lite.chunk.js +2 -0
  72. package/dist/scripts/6054-1e9b86d631-lite.chunk.js.map +1 -0
  73. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js +2 -0
  74. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js.map +1 -0
  75. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js → 624-09b51a9d32-lite.chunk.js} +3 -3
  76. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.map → 624-09b51a9d32-lite.chunk.js.map} +1 -1
  77. package/dist/scripts/6263-8a7931bf51-lite.chunk.js +2 -0
  78. package/dist/scripts/6263-8a7931bf51-lite.chunk.js.map +1 -0
  79. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js +2 -0
  80. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js.map +1 -0
  81. package/dist/scripts/6470-9a700cabce-lite.chunk.js +2 -0
  82. package/dist/scripts/6470-9a700cabce-lite.chunk.js.map +1 -0
  83. package/dist/scripts/6481-035d218a77-lite.chunk.js +2 -0
  84. package/dist/scripts/6481-035d218a77-lite.chunk.js.map +1 -0
  85. package/dist/scripts/6532-59e9abf69d-lite.chunk.js +2 -0
  86. package/dist/scripts/6532-59e9abf69d-lite.chunk.js.map +1 -0
  87. package/dist/scripts/6596-f75129c039-lite.chunk.js +2 -0
  88. package/dist/scripts/6596-f75129c039-lite.chunk.js.map +1 -0
  89. package/dist/scripts/6604-9adec889c7-lite.chunk.js +2 -0
  90. package/dist/scripts/6604-9adec889c7-lite.chunk.js.map +1 -0
  91. package/dist/scripts/6746-3f501b95cf-lite.chunk.js +2 -0
  92. package/dist/scripts/6746-3f501b95cf-lite.chunk.js.map +1 -0
  93. package/dist/scripts/714-c00ad56229-lite.chunk.js +2 -0
  94. package/dist/scripts/714-c00ad56229-lite.chunk.js.map +1 -0
  95. package/dist/scripts/7163-84c2b15394-lite.chunk.js +2 -0
  96. package/dist/scripts/7163-84c2b15394-lite.chunk.js.map +1 -0
  97. package/dist/scripts/7178-ed74c33056-lite.chunk.js +2 -0
  98. package/dist/scripts/7178-ed74c33056-lite.chunk.js.map +1 -0
  99. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js +2 -0
  100. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js.map +1 -0
  101. package/dist/scripts/7234-84c087600e-lite.chunk.js +2 -0
  102. package/dist/scripts/7234-84c087600e-lite.chunk.js.map +1 -0
  103. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js +2 -0
  104. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js.map +1 -0
  105. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js +2 -0
  106. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js.map +1 -0
  107. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js +2 -0
  108. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js.map +1 -0
  109. package/dist/scripts/7757-7e293be936-lite.chunk.js +2 -0
  110. package/dist/scripts/7757-7e293be936-lite.chunk.js.map +1 -0
  111. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js +2 -0
  112. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js.map +1 -0
  113. package/dist/scripts/7818-230982fc27-lite.chunk.js +2 -0
  114. package/dist/scripts/7818-230982fc27-lite.chunk.js.map +1 -0
  115. package/dist/scripts/8323-360541a2a8-lite.chunk.js +3 -0
  116. package/dist/scripts/8323-360541a2a8-lite.chunk.js.map +1 -0
  117. package/dist/scripts/8709-c4f1068232-lite.chunk.js +2 -0
  118. package/dist/scripts/8709-c4f1068232-lite.chunk.js.map +1 -0
  119. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js +2 -0
  120. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js.map +1 -0
  121. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js +2 -0
  122. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js.map +1 -0
  123. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js +3 -0
  124. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js.map +1 -0
  125. package/dist/scripts/9173-f9708ec0de-lite.chunk.js +2 -0
  126. package/dist/scripts/9173-f9708ec0de-lite.chunk.js.map +1 -0
  127. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js +3 -0
  128. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js.map +1 -0
  129. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js +2 -0
  130. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js.map +1 -0
  131. package/dist/scripts/{9395-90b87097fa-lite.chunk.js → 9395-e1a02b01ce-lite.chunk.js} +3 -3
  132. package/dist/scripts/{9395-90b87097fa-lite.chunk.js.map → 9395-e1a02b01ce-lite.chunk.js.map} +1 -1
  133. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js +2 -0
  134. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js.map +1 -0
  135. package/dist/scripts/{9478-99486906b9-lite.chunk.js → 9478-abfa7ed3cc-lite.chunk.js} +3 -3
  136. package/dist/scripts/{9478-99486906b9-lite.chunk.js.map → 9478-abfa7ed3cc-lite.chunk.js.map} +1 -1
  137. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js → 953-225db845ab-lite.chunk.js} +3 -3
  138. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.map → 953-225db845ab-lite.chunk.js.map} +1 -1
  139. package/dist/scripts/9620-95e6cc7b2b-lite.chunk.js +3 -0
  140. package/dist/scripts/9620-95e6cc7b2b-lite.chunk.js.map +1 -0
  141. package/dist/scripts/9719-9736913451-lite.chunk.js +3 -0
  142. package/dist/scripts/9719-9736913451-lite.chunk.js.map +1 -0
  143. package/dist/scripts/999-bdc7956050-lite.chunk.js +2 -0
  144. package/dist/scripts/999-bdc7956050-lite.chunk.js.map +1 -0
  145. package/dist/scripts/bundle-9f8729bedb.min.js +3 -0
  146. package/dist/scripts/bundle-9f8729bedb.min.js.map +1 -0
  147. package/package.json +1 -1
  148. package/dist/scripts/1125-aac132b88f-lite.chunk.js.map +0 -1
  149. package/dist/scripts/1169-534a29a204-lite.chunk.js +0 -2
  150. package/dist/scripts/1169-534a29a204-lite.chunk.js.map +0 -1
  151. package/dist/scripts/1672-672f298d82-lite.chunk.js +0 -3
  152. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +0 -1
  153. package/dist/scripts/1725-075015497e-lite.chunk.js +0 -2
  154. package/dist/scripts/1725-075015497e-lite.chunk.js.map +0 -1
  155. package/dist/scripts/1818-64a145c5fe-lite.chunk.js +0 -2
  156. package/dist/scripts/1818-64a145c5fe-lite.chunk.js.map +0 -1
  157. package/dist/scripts/1820-993521951d-lite.chunk.js +0 -2
  158. package/dist/scripts/1820-993521951d-lite.chunk.js.map +0 -1
  159. package/dist/scripts/1867-260ef9f8c2-lite.chunk.js +0 -2
  160. package/dist/scripts/1867-260ef9f8c2-lite.chunk.js.map +0 -1
  161. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js +0 -2
  162. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js.map +0 -1
  163. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js +0 -2
  164. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js.map +0 -1
  165. package/dist/scripts/193-f08b054631-lite.chunk.js +0 -2
  166. package/dist/scripts/193-f08b054631-lite.chunk.js.map +0 -1
  167. package/dist/scripts/209-de1729d1b1-lite.chunk.js +0 -2
  168. package/dist/scripts/209-de1729d1b1-lite.chunk.js.map +0 -1
  169. package/dist/scripts/2134-bca2f4697e-lite.chunk.js +0 -2
  170. package/dist/scripts/2134-bca2f4697e-lite.chunk.js.map +0 -1
  171. package/dist/scripts/2703-591ccf069c-lite.chunk.js +0 -2
  172. package/dist/scripts/2703-591ccf069c-lite.chunk.js.map +0 -1
  173. package/dist/scripts/3404-171fdee802-lite.chunk.js +0 -2
  174. package/dist/scripts/3404-171fdee802-lite.chunk.js.map +0 -1
  175. package/dist/scripts/3633-66d28be6f8-lite.chunk.js +0 -2
  176. package/dist/scripts/3633-66d28be6f8-lite.chunk.js.map +0 -1
  177. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js +0 -2
  178. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js.map +0 -1
  179. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js +0 -2
  180. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js.map +0 -1
  181. package/dist/scripts/4395-64da004753-lite.chunk.js +0 -2
  182. package/dist/scripts/4395-64da004753-lite.chunk.js.map +0 -1
  183. package/dist/scripts/4502-2e30d86385-lite.chunk.js +0 -2
  184. package/dist/scripts/4502-2e30d86385-lite.chunk.js.map +0 -1
  185. package/dist/scripts/5143-b6896dad98-lite.chunk.js +0 -2
  186. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +0 -1
  187. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js +0 -2
  188. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js.map +0 -1
  189. package/dist/scripts/5595-c4397e12a8-lite.chunk.js +0 -2
  190. package/dist/scripts/5595-c4397e12a8-lite.chunk.js.map +0 -1
  191. package/dist/scripts/5606-6c25caedc4-lite.chunk.js +0 -2
  192. package/dist/scripts/5606-6c25caedc4-lite.chunk.js.map +0 -1
  193. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js +0 -2
  194. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js.map +0 -1
  195. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js +0 -2
  196. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js.map +0 -1
  197. package/dist/scripts/5940-f335f8c290-lite.chunk.js.map +0 -1
  198. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js +0 -2
  199. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js.map +0 -1
  200. package/dist/scripts/6094-24c430efb3-lite.chunk.js +0 -2
  201. package/dist/scripts/6094-24c430efb3-lite.chunk.js.map +0 -1
  202. package/dist/scripts/6138-21ae042a7b-lite.chunk.js +0 -2
  203. package/dist/scripts/6138-21ae042a7b-lite.chunk.js.map +0 -1
  204. package/dist/scripts/6263-3455286798-lite.chunk.js +0 -2
  205. package/dist/scripts/6263-3455286798-lite.chunk.js.map +0 -1
  206. package/dist/scripts/6290-56412c6663-lite.chunk.js +0 -2
  207. package/dist/scripts/6290-56412c6663-lite.chunk.js.map +0 -1
  208. package/dist/scripts/6415-b29029aa1b-lite.chunk.js +0 -2
  209. package/dist/scripts/6415-b29029aa1b-lite.chunk.js.map +0 -1
  210. package/dist/scripts/6470-6216086d63-lite.chunk.js +0 -2
  211. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +0 -1
  212. package/dist/scripts/6481-899eba8b3d-lite.chunk.js +0 -2
  213. package/dist/scripts/6481-899eba8b3d-lite.chunk.js.map +0 -1
  214. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js +0 -2
  215. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js.map +0 -1
  216. package/dist/scripts/6546-faa6f93a0e-lite.chunk.js +0 -2
  217. package/dist/scripts/6546-faa6f93a0e-lite.chunk.js.map +0 -1
  218. package/dist/scripts/6587-ba8e36be0b-lite.chunk.js +0 -2
  219. package/dist/scripts/6587-ba8e36be0b-lite.chunk.js.map +0 -1
  220. package/dist/scripts/6604-92193d6d68-lite.chunk.js +0 -2
  221. package/dist/scripts/6604-92193d6d68-lite.chunk.js.map +0 -1
  222. package/dist/scripts/6746-b5b2739944-lite.chunk.js +0 -2
  223. package/dist/scripts/6746-b5b2739944-lite.chunk.js.map +0 -1
  224. package/dist/scripts/679-e18e7956d0-lite.chunk.js +0 -2
  225. package/dist/scripts/679-e18e7956d0-lite.chunk.js.map +0 -1
  226. package/dist/scripts/714-432082f4fa-lite.chunk.js +0 -2
  227. package/dist/scripts/714-432082f4fa-lite.chunk.js.map +0 -1
  228. package/dist/scripts/7178-e603ea6b58-lite.chunk.js +0 -2
  229. package/dist/scripts/7178-e603ea6b58-lite.chunk.js.map +0 -1
  230. package/dist/scripts/7223-135cc7d675-lite.chunk.js +0 -2
  231. package/dist/scripts/7223-135cc7d675-lite.chunk.js.map +0 -1
  232. package/dist/scripts/729-c704d587d3-lite.chunk.js +0 -2
  233. package/dist/scripts/729-c704d587d3-lite.chunk.js.map +0 -1
  234. package/dist/scripts/7679-b01da2c09d-lite.chunk.js +0 -2
  235. package/dist/scripts/7679-b01da2c09d-lite.chunk.js.map +0 -1
  236. package/dist/scripts/7757-320e868e90-lite.chunk.js +0 -2
  237. package/dist/scripts/7757-320e868e90-lite.chunk.js.map +0 -1
  238. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js +0 -2
  239. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js.map +0 -1
  240. package/dist/scripts/7818-2eafc5f812-lite.chunk.js +0 -2
  241. package/dist/scripts/7818-2eafc5f812-lite.chunk.js.map +0 -1
  242. package/dist/scripts/8323-99cb03891e-lite.chunk.js +0 -3
  243. package/dist/scripts/8323-99cb03891e-lite.chunk.js.map +0 -1
  244. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js +0 -2
  245. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js.map +0 -1
  246. package/dist/scripts/8800-335154fe11-lite.chunk.js +0 -2
  247. package/dist/scripts/8800-335154fe11-lite.chunk.js.map +0 -1
  248. package/dist/scripts/8982-63c31685bf-lite.chunk.js +0 -2
  249. package/dist/scripts/8982-63c31685bf-lite.chunk.js.map +0 -1
  250. package/dist/scripts/9016-0c078a39cb-lite.chunk.js +0 -3
  251. package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +0 -1
  252. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js +0 -2
  253. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +0 -1
  254. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +0 -3
  255. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +0 -1
  256. package/dist/scripts/9308-362f86711f-lite.chunk.js +0 -3
  257. package/dist/scripts/9308-362f86711f-lite.chunk.js.map +0 -1
  258. package/dist/scripts/9359-cc085d48a4-lite.chunk.js +0 -2
  259. package/dist/scripts/9359-cc085d48a4-lite.chunk.js.map +0 -1
  260. package/dist/scripts/9399-2a314327ac-lite.chunk.js +0 -2
  261. package/dist/scripts/9399-2a314327ac-lite.chunk.js.map +0 -1
  262. package/dist/scripts/9620-f1d717b02b-lite.chunk.js +0 -3
  263. package/dist/scripts/9620-f1d717b02b-lite.chunk.js.map +0 -1
  264. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js +0 -3
  265. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js.map +0 -1
  266. package/dist/scripts/bundle-724fc2e388.min.js +0 -3
  267. package/dist/scripts/bundle-724fc2e388.min.js.map +0 -1
  268. /package/dist/css/{5143-lite-676baa8218.chunk.css → 1063-lite-676baa8218.chunk.css} +0 -0
  269. /package/dist/css/{9173-lite-b361d438f6.chunk.css → 1104-lite-b361d438f6.chunk.css} +0 -0
  270. /package/dist/css/{679-lite-00eb7dadb2.chunk.css → 2952-lite-00eb7dadb2.chunk.css} +0 -0
  271. /package/dist/css/{4860-lite-93d7fad455.chunk.css → 4063-lite-93d7fad455.chunk.css} +0 -0
  272. /package/dist/css/{9308-lite-a3c7435ba4.chunk.css → 4273-lite-a3c7435ba4.chunk.css} +0 -0
  273. /package/dist/css/{729-lite-93d7fad455.chunk.css → 4850-lite-93d7fad455.chunk.css} +0 -0
  274. /package/dist/css/{8766-lite-8c5d7658ec.chunk.css → 7163-lite-8c5d7658ec.chunk.css} +0 -0
  275. /package/dist/css/{1818-lite-5ef1706d69.chunk.css → 7234-lite-5ef1706d69.chunk.css} +0 -0
  276. /package/dist/css/{6415-lite-707657102b.chunk.css → 9173-lite-707657102b.chunk.css} +0 -0
  277. /package/dist/css/{1820-lite-c88eb54bee.chunk.css → 999-lite-c88eb54bee.chunk.css} +0 -0
  278. /package/dist/scripts/{1379-082bbab71a-lite.chunk.js.LICENSE.txt → 1104-f057c6dea1-lite.chunk.js.LICENSE.txt} +0 -0
  279. /package/dist/scripts/{1672-672f298d82-lite.chunk.js.LICENSE.txt → 1379-ca519ec56b-lite.chunk.js.LICENSE.txt} +0 -0
  280. /package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.LICENSE.txt → 1672-0d1fc90529-lite.chunk.js.LICENSE.txt} +0 -0
  281. /package/dist/scripts/{8323-99cb03891e-lite.chunk.js.LICENSE.txt → 4273-e42f763f00-lite.chunk.js.LICENSE.txt} +0 -0
  282. /package/dist/scripts/{9173-2392d447a6-lite.chunk.js.LICENSE.txt → 624-09b51a9d32-lite.chunk.js.LICENSE.txt} +0 -0
  283. /package/dist/scripts/{9230-6dee40b1fb-lite.chunk.js.LICENSE.txt → 8323-360541a2a8-lite.chunk.js.LICENSE.txt} +0 -0
  284. /package/dist/scripts/{9016-0c078a39cb-lite.chunk.js.LICENSE.txt → 9016-82d7e0afb9-lite.chunk.js.LICENSE.txt} +0 -0
  285. /package/dist/scripts/{9308-362f86711f-lite.chunk.js.LICENSE.txt → 9230-ae200d2bd3-lite.chunk.js.LICENSE.txt} +0 -0
  286. /package/dist/scripts/{9395-90b87097fa-lite.chunk.js.LICENSE.txt → 9395-e1a02b01ce-lite.chunk.js.LICENSE.txt} +0 -0
  287. /package/dist/scripts/{9478-99486906b9-lite.chunk.js.LICENSE.txt → 9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt} +0 -0
  288. /package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.LICENSE.txt → 953-225db845ab-lite.chunk.js.LICENSE.txt} +0 -0
  289. /package/dist/scripts/{9620-f1d717b02b-lite.chunk.js.LICENSE.txt → 9620-95e6cc7b2b-lite.chunk.js.LICENSE.txt} +0 -0
  290. /package/dist/scripts/{9719-cf7d4172b6-lite.chunk.js.LICENSE.txt → 9719-9736913451-lite.chunk.js.LICENSE.txt} +0 -0
  291. /package/dist/scripts/{bundle-724fc2e388.min.js.LICENSE.txt → bundle-9f8729bedb.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/5940-2767b40c40-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PartialPlaylistList.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-count/PlaylistCount.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistOwnerAvatar.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistItem.tsx","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/PlaylistList.tsx","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/components/audience-label/AudienceLabel.tsx","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts","file:///app/packages/libs/shared/src/apps/playlists/components/sort-select/PlaylistSortSelect.tsx","file:///app/packages/projects/lite/src/apps/playlists/components/favourites-playlist-item/favourites-playlist-item.scss","file:///app/packages/projects/lite/src/apps/playlists/components/favourites-playlist-item/FavouritesPlaylistItem.tsx","file:///app/packages/projects/lite/src/apps/playlists/views/playlists/empty-state/PlaylistsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/playlists/views/playlists/PlaylistsView.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/views/favourites/hooks/useFavouritesCount.ts","file:///app/packages/libs/shared/src/apps/playlists/components/playlist-list/playlist.scss","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 * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport styles from './playlist.scss';\n\ninterface PartialPlaylistListProps {\n numItems?: number;\n itemClassName?: string;\n showHeading?: boolean;\n}\n\nPartialPlaylistList.defaultProps = {\n numItems: 8\n};\n\nexport function PartialPlaylistList(props: PartialPlaylistListProps): JSX.Element {\n const PARTIAL_PLAYLISTS = [...Array(props.numItems)];\n\n const className = props.itemClassName || '';\n\n return (\n <>\n {props.showHeading && <div className={`${styles.partialHeading} mb-1 partial-loading-background`} />}\n <Row className='mx-n1 mb-n2'>\n {PARTIAL_PLAYLISTS.map((p, idx) => (\n <Col key={idx} xs={6} sm={4} lg={3} className={`${className} px-1 pb-2`}>\n <div className={`${styles.playlistItem} partial-loading-background rounded-3`} />\n </Col>\n ))}\n </Row>\n </>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Playlist } from 'libs/shared/interfaces';\n\nconst namespace = 'playlists.playlistCount';\n\nfunction getCount(playlist: Playlist): number | false {\n if (!playlist)\n return false;\n\n const videos = playlist.videos?.count ?? 0;\n const interactives = playlist.interactives?.count ?? 0;\n const clips = playlist.clips?.count ?? 0;\n\n return videos + interactives + clips;\n}\n\ninterface PlaylistCountProps {\n playlist: Playlist;\n}\n\nexport function PlaylistCount(props: PlaylistCountProps): JSX.Element {\n const count = getCount(props.playlist);\n\n if (count === false || Number.isNaN(count))\n return <></>;\n\n return (\n <span className='text-shadow font-size-sm'>\n <Text namespace={namespace} phrase='count' options={{ smartCount: count }} />\n </span>\n );\n}","import * as React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { CurrentUser, Playlist } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\ninterface PlaylistOwnerAvatarProps {\n playlist: Playlist;\n imageCdnUrl: string;\n currentUser?: CurrentUser;\n}\n\nexport function PlaylistOwnerAvatar(props: PlaylistOwnerAvatarProps): JSX.Element {\n const { _liteOwner } = props.playlist;\n\n if (props.playlist._isClickViewCurated?.value)\n return (\n <ClickViewAvatar />\n );\n\n if (!_liteOwner?.id || !props.currentUser?.id)\n return <></>;\n\n const currentUserIsOwner = _liteOwner.id.toString() === props.currentUser.id.toString();\n\n if (currentUserIsOwner)\n return <></>;\n\n const url = typeof _liteOwner.avatar === 'string' ? _liteOwner.avatar : _liteOwner.avatar?.url;\n\n return (\n <Avatar\n imageUrl={url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(_liteOwner.name, _liteOwner.surname)}\n />\n );\n}","import * as React from 'react';\nimport { format } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, EntityType, HashObject } from 'libs/analytics/interfaces';\n\nimport { PlaylistCount } from 'libs/shared/apps/playlists/components/playlist-count/PlaylistCount';\nimport { PlaylistOwnerAvatar } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistOwnerAvatar';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ResizeType } from 'libs/shared/enums/Images';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './playlist.scss';\n\nconst namespace = 'playlists.playlistList';\n\nexport type PlaylistItemStyle = 'square' | 'round' | 'round-left';\n\nexport interface PlaylistItemProps {\n data: Playlist;\n appLink: Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n bgColourClassNames?: string[];\n titleClassName?: string;\n imageCdnUrl?: string;\n itemStyle?: PlaylistItemStyle;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n audienceLabelClass?: string;\n}\n\nPlaylistItem.defaultProps = {\n itemStyle: 'square'\n};\n\nexport function PlaylistItem(props: PlaylistItemProps): JSX.Element {\n const imageUrl = ImageHelper.createUrl(props.data.cover && props.data.cover.url, {\n size: ImageSize.Medium,\n resizeType: ResizeType.Cover\n });\n\n const audiences = props.data.subjectPresentationAudiences &&\n props.data.subjectPresentationAudiences.data;\n\n const mergedAudience = useMergeAudiences(audiences, props.presentationAudiences);\n\n let className = styles.playlistItem;\n\n const showImage = !!imageUrl || !!props.showFallbackImage;\n\n if (showImage)\n className += ` ${styles.playlistItemGradient}`;\n\n if (!showImage && props.bgColourClassNames)\n className += ` ${styles.playlistItem} ${getBgColorClass(props.data.name, props.bgColourClassNames)}`;\n\n if (props.itemStyle === 'round')\n className += ` rounded-3 overflow-hidden`;\n\n if (props.itemStyle === 'round-left')\n className += ` rounded-start-lg overflow-hidden`;\n\n const analyticsData = { ...props.analyticsData,\n id: props.data?.id,\n name: props.data?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Playlist\n };\n\n const getTitle = () => {\n if (!props.data.contentModifiedDate || props.data._isClickViewCurated?.value)\n return '';\n\n return LanguageService.getPhrase(namespace, 'lastUpdated', {\n timeago: format(DateHelper.convertUTCToLocal(props.data.contentModifiedDate))\n });\n };\n\n return (\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={getTitle()}\n >\n <BaseImage data={imageUrl} alt={props.data.name} className={className}>\n {!!props.showFallbackImage && <ImageFallback type={ImageFallbackType.Playlist} />}\n <div className={`text-white ${styles.playlistMetadata}`}>\n {!!props.showCount && (\n <PlaylistCount playlist={props.data} />\n )}\n <h5 className={`mb-0 ${props.titleClassName || ''}`}><span className='text-shadow clamp-2'>{props.data.name}</span></h5>\n {!!audiences && !!audiences.length && !!mergedAudience &&\n <AudienceLabel\n className={`${props.audienceLabelClass ? props.audienceLabelClass : ''} mt-1`}\n audience={mergedAudience}\n border='white'\n />\n }\n </div>\n {!!props.showOwner && !!props.imageCdnUrl &&\n <div className={styles.ownerAvatarContainer}>\n <PlaylistOwnerAvatar\n playlist={props.data}\n currentUser={props.currentUser}\n imageCdnUrl={props.imageCdnUrl}\n />\n </div>\n }\n </BaseImage>\n </AppLink>\n );\n}","import * as React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CurrentUser, Playlist, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { PlaylistItem, PlaylistItemStyle } from './PlaylistItem';\n\ninterface PlaylistListProps {\n playlists: Playlist[];\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n currentUser?: CurrentUser;\n presentationAudiences?: PresentationAudience[];\n itemContainerClassName?: string;\n itemTitleClassName?: string;\n bgColourClassNames?: string[];\n itemStyle?: PlaylistItemStyle;\n imageCdnUrl?: string;\n showCount?: boolean;\n showOwner?: boolean;\n showFallbackImage?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n extraPlaylistItem?: JSX.Element;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Playlist,\n location: LocationContext.PlaylistListItem,\n descriptor: ClickDescriptor.Cover\n};\n\nexport function PlaylistList(props: PlaylistListProps): JSX.Element {\n return (\n <Row as='ul' className='list-unstyled mx-n1'>\n {props.extraPlaylistItem && (\n <Col as='li' key='extra-playlist-item' xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n {props.extraPlaylistItem}\n </Col>\n )}\n\n {props.playlists.map(p => (\n <Col as='li' key={p.id} xs={6} sm={4} lg={3} className={`mb-2 px-1 ${props.itemContainerClassName ? props.itemContainerClassName : ''}`}>\n <PlaylistItem\n data={p}\n appLink={props.getPlaylistAppLink(p)}\n imageCdnUrl={props.imageCdnUrl}\n currentUser={props.currentUser}\n presentationAudiences={props.presentationAudiences}\n bgColourClassNames={props.bgColourClassNames}\n showCount={props.showCount}\n showOwner={props.showOwner}\n showFallbackImage={props.showFallbackImage}\n titleClassName={props.itemTitleClassName}\n itemStyle={props.itemStyle}\n analyticsData={props.analyticsData}\n analyticsOptions={{ ...props.analyticsOptions, ...analyticsOptions }}\n />\n </Col>\n ))}\n </Row>\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 showBorder?: boolean; // only works for button without text label\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 customSize?: boolean;\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 {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 svgSize={props.dropdownToggleSvgSize}\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 showBorder={a.showBorder}\n customSize={props.customSize}\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 </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 aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' 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 <li 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 </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Audience } from 'libs/shared/interfaces';\n\nimport styles from './audience-label.scss';\n\ntype AudienceBorderColour = 'dark' | 'white';\n\ninterface AudienceLabelProps {\n audience: Audience;\n border: AudienceBorderColour;\n className?: string;\n}\n\nexport function AudienceLabel(props: AudienceLabelProps): JSX.Element {\n if (!props.audience)\n return <></>;\n\n // Note: the audience-label class is applied so that parent components can override styling, and Online can style this component\n return (\n <div\n className={`audience-label border rounded-pill d-inline-block px-2 text-nowrap \n ${'border-' + props.border} ${props.className ? props.className : ''}`}\n >\n {props.audience.name}\n </div>\n );\n}\n\ninterface AudienceLabelListProps {\n audiences: Audience[];\n border: AudienceBorderColour;\n}\n\nexport function AudienceLabelList(props: AudienceLabelListProps): JSX.Element {\n if (!props.audiences || !props.audiences.length)\n return <></>;\n\n return (\n <>\n {props.audiences.map((a, idx) => (\n <span key={idx} className={styles.audienceLabelListItem}>\n <AudienceLabel audience={a} border={props.border} />\n </span>\n ))}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\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}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n internationalSecondaryBuilder(audiences: PresentationAudience[]): string {\n return AudienceStringBuilders.englandSecondaryBuilder(audiences);\n },\n\n scotlandPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'First')\n firstAudienceLevel = '1st';\n\n if (lastAudienceLevel === 'First')\n lastAudienceLevel = '1st';\n\n if (firstAudienceLevel === 'Second')\n firstAudienceLevel = '2nd';\n\n if (lastAudienceLevel === 'Second')\n lastAudienceLevel = '2nd';\n\n if (firstAudienceLevel === lastAudienceLevel)\n return `${firstAudienceLevel} Level`;\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Level`;\n },\n\n internationalPrimaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n let [firstAudienceLevel] = firstAudience.name.split(' ');\n let [lastAudienceLevel] = lastAudience.name.split(' ');\n\n if (firstAudienceLevel === 'Lower')\n firstAudienceLevel = 'Low';\n\n if (lastAudienceLevel === 'Lower')\n lastAudienceLevel = 'Low';\n\n if (firstAudienceLevel === 'Middle')\n firstAudienceLevel = 'Mid';\n\n if (lastAudienceLevel === 'Middle')\n lastAudienceLevel = 'Mid';\n\n return `${firstAudienceLevel} - ${lastAudienceLevel} Pri`;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scotlandSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n englandPrimaryBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INTERNATIONAL_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n // TODO: Implement this properly\n mergedAudienceString = AudienceStringBuilders.internationalSecondaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.INTERNATIONAL_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.internationalPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.SCOTLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.scotlandPrimaryBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENGLISH_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englandSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCOTLAND_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scotlandSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENGLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.englandPrimaryBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): HashObject {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'playlists.playlistSortSelect';\n\nconst getSortTypes = FunctionHelper.memoize(() => {\n return {\n [PlaylistSortType.RecentlyUpdated]: {\n name: LanguageService.getPhrase(namespace, 'recentlyUpdated')\n },\n [PlaylistSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [PlaylistSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [PlaylistSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [PlaylistSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n }\n };\n});\n\ninterface PlaylistSortSelectProps {\n type: PlaylistSortType;\n getSortAppLink: (sort: PlaylistSortType) => Core.AppLink;\n variant?: ButtonProps['variant'];\n}\n\nPlaylistSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function PlaylistSortSelect(props: PlaylistSortSelectProps): JSX.Element {\n const { type, getSortAppLink, variant } = props;\n const sortTypes = getSortTypes();\n\n return (\n <div className='dropdown'>\n <button className={`btn btn-${variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[type].name}\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby='sort-select'>\n {Object.values(PlaylistSortType).map(k => {\n let className = 'dropdown-item';\n\n if (k === type)\n className += ' active';\n\n return (\n <li key={k}>\n <AppLink\n \n className={className}\n appLink={getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={{\n location: LocationContext.PlaylistListHeader,\n entity: EntityType.Playlists,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n >\n {sortTypes[k].name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"playlistMetadata\":\"vv8fW\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './favourites-playlist-item.scss';\n\nconst namespace = 'playlists.favouritesPlaylistItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FavouritesPlaylistItemProps {\n data: VideoTypes[];\n count: number;\n isLoadingCount: boolean;\n}\n\nexport function FavouritesPlaylistItem(props: FavouritesPlaylistItemProps): JSX.Element {\n const analyticsData = {\n name: 'Favourites',\n extraItem: 'user-favourites'\n };\n\n const analyticsOptions = {\n entity: EntityType.Playlist,\n actionType: UserAction.Click,\n location: LocationContext.PlaylistListItem\n };\n\n const coverUrl = ImageUrls.FAVOURITES_PLAYLIST.FAV_PLAYLIST_COVER ;\n const appLink = {\n application: AppChannels.MY_FAVOURITES,\n action: Actions.MyFavourites.MY_FAVOURITES\n };\n\n return (\n <AppLink\n appLink={appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={getPhrase('favouritesTitle')}\n >\n <div className='position-relative'>\n <div className={`text-white font-size-sm text-shadow ${styles.playlistMetadata}`}>\n {!props.isLoadingCount && (\n <span>\n <Text namespace={namespace} phrase='count' options={{ smartCount: props.count }} />\n </span>\n )}\n <h5 className={`mb-0`}><span className='clamp-2'>{getPhrase('favouritesTitle')}</span></h5>\n </div>\n \n <img src={coverUrl} className='w-100 h-100 rounded-3'/>\n </div>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'playlists.playlistsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PlaylistEmptyStateProps {\n isStudent: boolean;\n}\n\nexport function PlaylistsEmptyState(props: PlaylistEmptyStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLISTS} altText={getPhrase('info')} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase={props.isStudent ? 'studentInfo' : 'info'} /></EmptyState.Info>\n\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'cta')}\n icon={cvSvgLibrary.Plus}\n appLink={{\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.NEW_PLAYLIST\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function PlaylistsPublicEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLISTS_PUBLIC} altText={getPhrase('info')} />\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'publicCta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.PlaylistsLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { PartialPlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PartialPlaylistList';\nimport { PlaylistList } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistList';\nimport { PlaylistSortSelect } from 'libs/shared/apps/playlists/components/sort-select/PlaylistSortSelect';\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\nimport { PlaylistType } from 'libs/shared/apps/playlists/enums/PlaylistType';\nimport { PlaylistCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier';\nimport { PlaylistSortHelper } from 'libs/shared/apps/playlists/utils/PlaylistSortHelper';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Playlist } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useFavouritesCount } from 'shared/views/favourites/hooks/useFavouritesCount';\n\nimport { FavouritesPlaylistItem } from 'apps/playlists/components/favourites-playlist-item/FavouritesPlaylistItem';\n\nimport { PlaylistsEmptyState, PlaylistsPublicEmptyState } from './empty-state/PlaylistsEmptyState';\n\nconst namespace = 'playlists.playlists';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSortAppLink(sort: PlaylistSortType): Core.AppLink {\n return {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.HOME,\n params: {\n sort: sort\n }\n };\n}\n\ninterface PlaylistsViewProps {\n getPlaylistAppLink: (playlist: Playlist) => Core.AppLink;\n sort?: PlaylistSortType;\n}\n\nexport function PlaylistsView(props: PlaylistsViewProps): React.ReactElement {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { hasLocalPermissions, hasPermissions, isLoaded } = usePermissions();\n\n const isStudent = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const audiences = usePresentationAudiences();\n\n const sort = !!user.data && PlaylistSortHelper.getOrSetSortType(user.data.id, props.sort);\n\n const { count, favourites, isLoading } = useFavouritesCount(user.data?.id);\n\n const favouritesPlaylist = {\n count,\n isLoadingCount: isLoading,\n data: favourites\n };\n\n const getPlaylistRequest = !!sort && ((cursor?: string) =>\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(sort, cursor, PlaylistType.All)));\n\n const fetchNext = !!getPlaylistRequest && ((cursor?: string) => {\n Flight.getFetch(dispatch)(getPlaylistRequest(cursor));\n });\n\n useSetPageMetadata({\n title: getPhrase('pageTitle'),\n description: getPhrase('pageDescription')\n });\n\n const shouldFetch = !hasLocalPermissions(LocalPermissionName.ViewPlaylistsLanding) && sort;\n\n const {\n items: playlists,\n hasMore,\n isFetching\n } = useInfiniteList<Playlist>(shouldFetch ? getPlaylistRequest : false, fetchNext, onError);\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const actions = [\n {\n label: getPhrase('createPlaylist'),\n appLink: { application: AppChannels.PLAYLISTS, action: Actions.Playlists.NEW_PLAYLIST },\n svgName: cvSvgLibrary.Plus,\n className: 'btn btn-outline-dark',\n button: true,\n analyticsData: {},\n analyticsOptions: {\n location: LocationContext.Banner,\n entity: EntityType.Playlist,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Create\n }\n }\n ];\n\n const dataLoaded = (\n !!playlists &&\n !!user.data &&\n !!config.data &&\n (!!audiences.data || audiences.hasError) &&\n !!isLoaded\n );\n\n if (hasLocalPermissions(LocalPermissionName.ViewPlaylistsLanding))\n return <PlaylistsPublicEmptyState />;\n\n if (dataLoaded && !favouritesPlaylist.count && !playlists?.length)\n return <PlaylistsEmptyState isStudent={isStudent} />;\n\n return (\n <div className='bg-white px-3'>\n <div className='d-flex justify-content-between align-items-end pb-3'>\n <h1 className='h2 mb-0'><Text namespace={namespace} phrase='headerTitle' /></h1>\n {!!sort &&\n <ActionsComponent\n actions={actions}\n sortComponent={(\n <PlaylistSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={getSortAppLink}\n />\n )}\n />\n }\n </div>\n {dataLoaded\n ? (\n <PlaylistList\n playlists={playlists}\n getPlaylistAppLink={props.getPlaylistAppLink}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={user.data}\n presentationAudiences={audiences.data || []}\n bgColourClassNames={BG_COLOUR_CLASS_NAMES}\n itemContainerClassName='columns-of-five'\n itemStyle='round'\n showCount\n showOwner\n extraPlaylistItem={\n favouritesPlaylist.count\n ? <FavouritesPlaylistItem {...favouritesPlaylist}/>\n : null\n }\n />\n ) : <PartialPlaylistList itemClassName='columns-of-five' />\n }\n {(dataLoaded && (hasMore || isFetching)) &&\n <InfiniteScrollFooter isFetching={isFetching} fetchNext={fetchNext} />\n }\n </div>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","\nimport { Flight } from 'libs/common/flight';\n\nimport { FavouriteRequests } from 'libs/shared/flight-requests/FavouriteRequests';\nimport { FavouritesCountResponse } from 'libs/shared/interfaces';\n\nexport function useFavouritesCount(userId?: string) {\n// todo there is a beckend bug that we cannot group fetch these three number\n const favouriteVideosCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesVideosCount(userId));\n const favouriteClipsCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesClipsCount(userId));\n const favouriteInteractivesCount = Flight.useBasicFetch<FavouritesCountResponse>(userId &&\n FavouriteRequests.getFavouritesInteractivesCount(userId));\n \n const totalCount = favouriteVideosCount.data?.count\n + favouriteInteractivesCount.data?.count\n + favouriteClipsCount.data?.count;\n\n const favourites = [\n ...(favouriteVideosCount.data?.data || []),\n ...(favouriteClipsCount.data?.data || []),\n ...(favouriteInteractivesCount.data?.data || [])\n ];\n\n return {\n count: totalCount,\n favourites,\n isLoading: !favouriteVideosCount.data?.data\n || !favouriteClipsCount.data?.data\n || !favouriteInteractivesCount.data?.data\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"playlistItem\":\"CaRJx\",\"playlistItemGradient\":\"BI7p2\",\"playlistMetadata\":\"eDk1l\",\"partialHeading\":\"w4lWh\",\"ownerAvatarContainer\":\"JImqE\"};","\"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":["PartialPlaylistList","props","PARTIAL_PLAYLISTS","Array","numItems","className","itemClassName","showHeading","map","p","idx","key","xs","sm","lg","defaultProps","namespace","PlaylistCount","count","playlist","videos","interactives","clips","getCount","Number","isNaN","Text","phrase","options","smartCount","PlaylistOwnerAvatar","_liteOwner","_isClickViewCurated","value","ClickViewAvatar","id","currentUser","toString","url","avatar","Avatar","imageUrl","imageCdnUrl","initials","UserHelper","name","surname","PlaylistItem","ImageHelper","data","cover","size","resizeType","audiences","subjectPresentationAudiences","mergedAudience","presentationAudiences","showImage","showFallbackImage","bgColourClassNames","getBgColorClass","itemStyle","analyticsData","analyticsOptions","entity","AppLink","appLink","title","contentModifiedDate","LanguageService","timeago","DateHelper","getTitle","BaseImage","alt","ImageFallback","type","showCount","titleClassName","length","AudienceLabel","audienceLabelClass","audience","border","showOwner","actionType","location","descriptor","PlaylistList","as","extraPlaylistItem","itemContainerClassName","playlists","getPlaylistAppLink","itemTitleClassName","Actions","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","label","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","openInNewTab","disabled","iconButton","showBorder","customSize","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","showDivider","undefined","group","Tooltip","S","InfiniteScrollFooter","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","Spinner","animation","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useMergeAudiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","yearsAndGradesBuilder","combinedNames","join","numberList","split","filter","num","wordList","audienceWithoutNum","find","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","i","j","isContinguous","ranges","processAudienceRanges","internationalSecondaryBuilder","englandSecondaryBuilder","scotlandPrimaryBuilder","firstAudience","ArrayHelper","lastAudience","firstAudienceLevel","lastAudienceLevel","internationalPrimaryBuilder","toLowerCase","scotlandSecondaryBuilder","englandPrimaryBuilder","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","word","lastAudienceNumber","firstAudienceString","lastAudienceString","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","v","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","params","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","reduce","state","audienceStr","getAudienceParams","getSortTypes","PlaylistSortType","PlaylistSortSelect","getSortAppLink","variant","sortTypes","Object","values","k","workflowPhase","getPhrase","FavouritesPlaylistItem","coverUrl","ImageUrls","application","extraItem","isLoadingCount","src","PlaylistsEmptyState","EmptyState","altText","isStudent","text","icon","PlaylistsPublicEmptyState","SignUp","PlaylistsView","dispatch","alerts","usePermissions","hasLocalPermissions","hasPermissions","isLoaded","PermissionName","config","ConfigRequests","user","UserRequests","usePresentationAudiences","PlaylistSortHelper","useFavouritesCount","favourites","favouritesPlaylist","isLoading","getPlaylistRequest","PlaylistRequests","PlaylistCollectionIdentifier","PlaylistType","useSetPageMetadata","description","shouldFetch","pageNumber","httpStatus","error","dataLoaded","hasError","P","redirectOnError","activePresentation","getFallbackPresentation","presentation","userId","favouriteVideosCount","favouriteClipsCount","favouriteInteractivesCount","Row","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","parseInt","trim","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","unit"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6054],{63719:(e,t,a)=>{a.d(t,{h:()=>c});var r=a(32735),n=a(77316);function i(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=Array(t);a<t;a++)r[a]=e[a];return r}function c(e){var t,a,c=(t=r.useMemo((function(){return n.p.getBuilder()}),[]),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var r,n,i,o,c=[],u=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(r=i.call(a)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){s=!0,n=e}finally{try{if(!u&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw n}}return c}}(t,a)||i(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],s=(0,c[1])(u);return s&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(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.")}()}(s),[Object.assign(Object.assign({},e),{active:!0})]):s}},90690:(e,t,a)=>{a.r(t),a.d(t,{InteractiveView:()=>V});var r=a(32735),n=a(50242),i=a(20354),o=a(60051),c=a(78417),u=a(16714),s=a(61990),d=a(33803),l=a(39151),v=a(1666),m=a(20768),f=a(47812),y=a(31949),b=a(63719),h=a(26304),p=a(91286),g=a(22902),P=a(79612),w=a(37802),A=a(76753),S=a(51855),I=a(7179),M=a(36873),C=a(44110),F=a(53073),q=a(97816),j=a(84062),k=a(25758),B={notFound:s.l,forbidden:{privacy:d.G}};function V(e){var t,a,s,d,V,x,E=(0,g.T)().hasPermissions,G=(0,S.G)().isPlugin,O=i.a.useBasicFetch(l.L.config()),T=i.a.useBasicFetch(y.N.currentUser()),U=i.a.useBasicFetch((null===(t=T.data)||void 0===t?void 0:t.isAuthenticated)&&v.h.yearGroups(T.data.customerId)),_=i.a.useBasicFetch(m.b.interactiveMetadata(e.id)),K=(0,F.f)(),L=i.a.useBasicFetch(_.statusCode===n.o.Forbidden&&m.b.interactiveMetadata(e.id,c.r.StripMetadata)),N=i.a.useBasicFetch(K&&_.data&&m.b.interactive(_.data.interactiveId)),$=(0,C.i)(),z=i.a.useBasicFetch(f.k.createViewKey(e.id,o.f.MasterObject)),D=(0,M.k)({video:_.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:T.data});(0,I.P)({id:e.id,app:"interactives"}),(0,p.v)(_,B,{forbidden:!0}),(0,h.b)(L),(0,P.M)(A.CG.getInteractiveMetadata({content:_.data})),(0,q.V)(null!==(a=D.videos)&&void 0!==a?a:[]);var H=(0,w.r)(null),J=H.hasPlayPageV2,Q=H.isLoadingSettings,R=(0,b.h)({name:null===(s=_.data)||void 0===s?void 0:s.name});return _.data&&O.hasCompleted&&T.hasCompleted&&(!K||N.hasCompleted)&&z.hasCompleted&&!Q?K?r.createElement(k.x,{config:O.data,yearGroups:U.data,currentUser:T.data,queryParams:e.queryParams,interactive:_.data,isPreviewPreventScrubbingEnabled:N.data.preventScrubbing,audiences:$.data,relatedVideos:D,canManageVideoAccess:E(u.C.ManageVideoAccess),isPlugin:G,breadcrumbs:J&&R}):r.createElement(j.M,{interactive:_.data,currentUser:T.data,config:O.data,yearGroups:U.data,audiences:$.data,queryParams:e.queryParams,viewKey:z.data,relatedVideos:D,startTime:null!==(V=null===(d=e.queryParams)||void 0===d?void 0:d.t)&&void 0!==V?V:null===(x=e.queryParams)||void 0===x?void 0:x.startTime,isPlugin:G}):r.createElement(r.Fragment,null)}}}]);
2
+ //# sourceMappingURL=6054-1e9b86d631-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6054-1e9b86d631-lite.chunk.js","mappings":"ohBAKM,SAAUA,EAAeC,GAC7B,I,IAAqF,G,EAAvD,WAAc,kBAAM,gBAA8B,GAAE,I,EAAG,E,unBAA7EC,EAAK,KAEPC,GAAcC,EAFK,MAEMF,GAE/B,OAAKC,GAAgBF,EAGd,GAAP,O,yWAAA,CAAYE,GAAW,gCAAOF,GAAO,CAAEI,QAAQ,MAFtCF,CAGX,C,8WCqBMG,EAAc,CAClBC,SAAU,IACVC,UAAW,CACTC,QAAS,MASP,SAAUC,EAAgBC,G,gBACtBC,GAAmB,SAAnBA,eACAC,GAAa,SAAbA,SAEFC,EAAS,kBAA6B,cACtCC,EAAc,kBAAkC,mBAChDC,EAAa,mBACD,QAAhB,EAAAD,EAAYE,YAAI,eAAEC,kBAAmB,eAA4BH,EAAYE,KAAKE,aAG9EC,EAAsB,kBAC1B,wBAAwCT,EAAMU,KAE1CC,GAA2B,SAC3BC,EAA8B,kBAClCH,EAAoBI,aAAe,eACjC,wBAAwCb,EAAMU,GAAI,oBAEhDI,EAAc,kBAClBH,GAA4BF,EAAoBH,MAChD,gBAAgCG,EAAoBH,KAAKS,gBAErDC,GAAY,SACZC,EAAU,kBAAoC,kBAA6BjB,EAAMU,GAAI,mBAErFQ,GAAgB,OAAoB,CACxCC,MAAOV,EAAoBH,KAC3Bc,QAASpB,EAAMqB,YAAYD,QAC3BE,UAAWtB,EAAMqB,YAAYC,UAC7BC,YAAavB,EAAMqB,YAAYG,IAC/BpB,YAAaA,EAAYE,QAG3B,OAAa,CAAEI,GAAIV,EAAMU,GAAIe,IAAK,kBAElC,OAAqBhB,EAAqBd,EAAa,CAAEE,WAAW,KACpE,OAAsBe,IACtB,OAAmB,4BAA0C,CAAEc,QAASjB,EAAoBH,SAE5F,OAAkC,QAApB,EAAAY,EAAcS,cAAM,QAAI,IAEtC,OAA6C,OAAY,MAAjDC,EAAa,EAAbA,cAAeC,EAAiB,EAAjBA,kBACjBrC,GAAc,OAAe,CAAEsC,KAA8B,QAAxB,EAAArB,EAAoBH,YAAI,eAAEwB,OAWrE,OARErB,EAAoBH,MACpBH,EAAO4B,cACP3B,EAAY2B,gBACVpB,GAA4BG,EAAYiB,eAC1Cd,EAAQc,eACPF,EAMClB,EAEA,gBAAC,IAAkB,CACjBR,OAAQA,EAAOG,KACfD,WAAYA,EAAWC,KACvBF,YAAaA,EAAYE,KACzBe,YAAarB,EAAMqB,YACnBP,YAAaL,EAAoBH,KACjC0B,iCAAkClB,EAAYR,KAAK2B,iBACnDjB,UAAWA,EAAUV,KACrBY,cAAeA,EACfgB,qBAAsBjC,EAAe,uBACrCC,SAAUA,EACVV,YAAaoC,GAAiBpC,IAMlC,gBAAC,IAAe,CACdsB,YAAaL,EAAoBH,KACjCF,YAAaA,EAAYE,KACzBH,OAAQA,EAAOG,KACfD,WAAYA,EAAWC,KACvBU,UAAWA,EAAUV,KACrBe,YAAarB,EAAMqB,YACnBJ,QAASA,EAAQX,KACjBY,cAAeA,EACfiB,UAA+B,QAApB,EAAiB,QAAjB,EAAAnC,EAAMqB,mBAAW,eAAEe,SAAC,QAAqB,QAAjB,EAAApC,EAAMqB,mBAAW,eAAEc,UACtDjC,SAAUA,IA/BL,gCAkCX,C","sources":["file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/interactives/views/interactive-view/InteractiveView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, Interactive, InteractiveMetadata, PlayerViewKey, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface InteractiveViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nexport function InteractiveView(props: InteractiveViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const strippedInteractiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n interactiveMetadata.statusCode === HttpStatus.Forbidden &&\n InteractiveRequests.interactiveMetadata(props.id, PermissionFilterOption.StripMetadata)\n );\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n const audiences = usePresentationAudiences();\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n\n useDeepLinks({ id: props.id, app: 'interactives' });\n\n useHandleObjectError(interactiveMetadata, videoErrors, { forbidden: true });\n useCannotConsumeError(strippedInteractiveMetadata);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n\n const { hasPlayPageV2, isLoadingSettings } = useSettings(null);\n const breadcrumbs = useBreadcrumbs({ name: interactiveMetadata.data?.name });\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n viewKey.hasCompleted &&\n !isLoadingSettings\n );\n\n if (!hasLoaded)\n return <></>;\n\n if (shouldPreviewInteractive) {\n return (\n <PreviewInteractive\n config={config.data}\n yearGroups={yearGroups.data}\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n isPlugin={isPlugin}\n breadcrumbs={hasPlayPageV2 && breadcrumbs}\n />\n );\n }\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n isPlugin={isPlugin}\n />\n );\n}"],"names":["useBreadcrumbs","current","match","breadcrumbs","useBuilder","active","videoErrors","notFound","forbidden","privacy","InteractiveView","props","hasPermissions","isPlugin","config","currentUser","yearGroups","data","isAuthenticated","customerId","interactiveMetadata","id","shouldPreviewInteractive","strippedInteractiveMetadata","statusCode","interactive","interactiveId","audiences","viewKey","relatedVideos","video","context","queryParams","contextId","moviesAndTv","mtv","app","content","videos","hasPlayPageV2","isLoadingSettings","name","hasCompleted","isPreviewPreventScrubbingEnabled","preventScrubbing","canManageVideoAccess","startTime","t"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6138],{11921:(e,t,a)=>{a.d(t,{F:()=>o});var n=a(32735),r=a(35223),l=a(83914);var i=function(e){switch(e){case"up":return"JAT0R";case"down":return"ld41u";case"right":return"HHkPe";case"left":return"jZTRR"}};function o(e){return n.createElement(l.x,{svgName:r.vn.Caret,className:"".concat(i(e.direction)," svg-container d-inline-block ").concat(e.className)})}o.defaultProps={direction:"right"}},83834:(e,t,a)=>{a.d(t,{$:()=>k});var n=a(32735),r=a(57900),l=a(11921),i=a(11607),o=a(97395),c=a(83657),s=a(36848),d=a(88711),u=a(75163),m=a(5465),p=a(54610);const g={actions:"cN3nB",actionsContainer:"xM37V",dropStyle:"kvCLS",dragStyle:"md9Na"};function v(e){var t,a=e.folder.thumbnail?o._.urlBuilder(e.folder.thumbnail.url,{size:p.h2.Small}):null,r=null===(t=e.getFolderActions)||void 0===t?void 0:t.call(e,e.folder);return n.createElement(d.j,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:g.dropStyle,dragStyle:g.dragStyle},n.createElement("div",{className:"position-relative"},n.createElement(s.F,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name},n.createElement(u.Z,{data:a,imageType:p.__.Thumbnails,imageClassName:"rounded-top-lg"},n.createElement(m.oy,{name:e.folder.name,type:m.mS.Folder,extraClasses:"rounded-top-lg"})),n.createElement("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2"},n.createElement("span",{className:"text-truncate d-block"},e.folder.name))),(null==r?void 0:r.length)&&n.createElement(c.e,{actions:r,className:g.actionsContainer,actionsDropdownClassName:g.actions,dropdownToggleSvgSize:null})))}var f=a(83345),h=a(79967);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var E="libraries.folderList",y="has:expanded:library:folders";function k(e){var t,a,o,c=(a=n.useState(r.SG.get(y)||!1),o=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,l,i,o=[],c=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=l.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(s)throw r}}return o}}(a,o)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}(a,o)||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.")}()),s=c[0],d=c[1],u=e.expandFolders||s,m=(t=(0,h.k)()).xxl||t.xl||t.lg?6:t.md?4:3;function p(){d(!u),r.SG.set(y,!u)}var g=u?e.folders:e.folders.slice(0,m),k=e.folders.length>m&&!e.expandFolders;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-between align-items-center"},e.showHeading&&n.createElement(i.L,{className:"d-inline-flex align-items-center mb-2 px-2 ".concat(k?"":"cursor-default"),onClick:p},k&&n.createElement(l.F,{direction:u?"down":"right"}),n.createElement("h2",{className:"h4 mb-0"},n.createElement(f.x,{namespace:E,phrase:"folders",options:{count:e.folders.length}}))),!(u||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},n.createElement(f.x,{namespace:E,phrase:"seeAll",options:{count:e.folders.length}}))),!(!u||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},n.createElement(f.x,{namespace:E,phrase:"seeLess"}))),e.extraButtons?e.extraButtons:n.createElement(n.Fragment,null)),n.createElement("div",{className:"row mx-1"},g.map((function(t){return n.createElement("div",{key:t.id,className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement(v,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop}))}))))}k.defaultProps={showHeading:!0}},65403:(e,t,a)=>{a.d(t,{i:()=>i});var n=a(32735);const r={partialFolderHeading:"dhbsL",partialFolderThumbnail:"CI9vk",partialFolderName:"l0Nll"};var l=function(){return n.createElement("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement("div",{className:"".concat(r.partialFolderThumbnail," partial-loading-background rounded-top-lg")}),n.createElement("div",{className:"".concat(r.partialFolderName," partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2")}," "))};function i(e){var t=e.count,a=void 0===t?3:t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(r.partialFolderHeading," h4 mb-2 partial-loading-background")}," "),n.createElement("div",{className:"row mx-n1"},Array(a).fill(null).map((function(e,t){return n.createElement(l,{key:t})}))))}},98860:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(20354),r=a(98064),l=a(3010),i=a(45719);function o(e){var t=n.a.useGetFetch();function a(t){return r.D.childFolders(e,t)}return(0,l.i)(!!e&&a,!!e&&function(e){t(a(e))}),(0,i.P)(!!e&&function(e){return a(e).key})}},21325:(e,t,a)=>{a.d(t,{o:()=>o});var n=a(32735),r=a(81886),l=a(96560),i=a(67058);function o(e){n.useEffect((function(){e.hasCompleted&&!e.hasError&&e.data.type!==l.r.CustomLibrary&&r.Q.Ry.throw(new i.d)}),[e.hasCompleted])}},3435:(e,t,a)=>{a.r(t),a.d(t,{LibraryFolderView:()=>re});var n=a(32735),r=a(70680),l=a(23481),i=a(20354),o=a(65858),c=a(43500),s=a(44522),d=a(49935),u=a(83834),m=a(10874),p=a(4201),g=a(83345),v=a(79718),f=a(51365),h=a(94644),b=a(39151),E=a(1666),y=a(98064),k=a(31949),x=a(1575),F=a(69883),L=a(63719),S=a(91286),N=a(60115),C=a(79612),A=a(35223),w=a(68140),I=a(14070),P=a(97291),T=a(51855),O=a(10671),V=a(27638),j=a(44110),B=a(97816),R=a(71020),G=a(13231),H=a(22902),D=a(10741),M=a(22490),Z=a(23232),_=a(99742),U="libraries.libraryFolderEmptyState";function W(){return n.createElement(g.D.Provider,{value:U},n.createElement(Z.u,null,n.createElement(Z.u.Image,{src:_.W.EmptyStates.Libraries.FOLDER}),n.createElement(Z.u.Heading,null,n.createElement(g.x,{phrase:"heading"})),n.createElement(Z.u.Info,null,n.createElement(g.x,{phrase:"info"}))))}var z=a(82431),Q="libraries.libraryFolderVideos";function $(e){var t,a=(0,p.of)().focusSearchBar,r=(0,H.T)().hasPermissions;return e.videos.length||e.hasSubFolders?e.videos.length?n.createElement("div",null,e.hasSubFolders&&n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("h2",{className:"h4 mb-0"},n.createElement(g.x,{namespace:Q,phrase:"videos"})),n.createElement("div",{className:"d-flex"},n.createElement(m.h,{svgName:A.vn.Search,appLink:{application:P.O.SEARCH,action:I.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:a,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(g.x,{namespace:Q,phrase:"searchLibrary",options:{smartCount:null===(t=e.libraries)||void 0===t?void 0:t.length}})),n.createElement(v.p,{variant:"outline-dark",type:e.sort,getSortAppLink:e.getSortAppLink,analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),n.createElement(G.E4,{videos:e.videos,yearGroups:e.yearGroups,getVideoAppLink:M.W.getAppLink,getSubTextAppLink:function(e){return z.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:r,getPreviewQuestionsAppLink:function(e){return D.j.getPreviewQuestionsAppLink(e)},imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,getClassroomGuideAppLink:M.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:M.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:M.W.getResourceGuidanceAppLink}),(e.hasMore||e.isFetching)&&n.createElement(R._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})):n.createElement(n.Fragment,null):n.createElement(W,null)}var J=a(98860),K=a(21325),q=a(65403),X=a(74696);const Y={subheading:"IJZtA"};function ee(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"m-3"},n.createElement(q.i,null)),n.createElement("div",{className:"mx-3 mb-3"},n.createElement("div",{className:"".concat(Y.subheading," partial-loading-background mb-2")}),n.createElement(X.S,null)))}var te=a(8406),ae="libraries.libraryFolder",ne=l.T.encloseNamespace(ae);function re(e){var t,a,l,R,G,H,D,M,Z,_,U=(0,r.I0)(),W=(0,F.Z)(),z=(0,p.of)().focusSearchBar,Q=(0,T.G)().isPlugin,q=i.a.useBasicFetch(y.D.domainLibraries(["customLibrary","sharedLibrary"])),X=i.a.useBasicFetch(y.D.library(e.libraryId)),Y=i.a.useBasicFetch(y.D.folder(e.folderId)),re=(0,J.P)(e.folderId),le=i.a.useBasicFetch(k.N.currentUser()),ie=i.a.useBasicFetch(b.L.config()),oe=i.a.useBasicFetch((null===(t=le.data)||void 0===t?void 0:t.isAuthenticated)&&E.h.yearGroups(le.data.customerId)),ce=(0,O._)({location:O.i.VideoItem}),se=(0,V.u)(o.LZ.VideoThumbnail),de=se.setFavourite,ue=se.canFavourite,me=(0,L.h)({name:null===(a=Y.data)||void 0===a?void 0:a.name}),pe=(0,j.i)();(0,C.M)({title:null===(l=Y.data)||void 0===l?void 0:l.name}),(0,S.v)([X,Y]),(0,K.o)(X);var ge=!!le.data&&w.d.getOrSetSortType(le.data.id,e.sort),ve=(0,N.K)(ye,ke,(function(e,t){if(1===e)return(0,h.r)(t);W.error(ne("error"))})),fe=ve.items,he=ve.hasMore,be=ve.isFetching,Ee=ve.nextCursor;function ye(t){return x.R.collectionVideos(e.folderId,ge,t)}function ke(e){return i.a.getFetch(U)(ye(e))}(0,B.V)(fe);var xe=!(!re.hasCompleted||(null===(R=re.items)||void 0===R?void 0:R.length));return n.createElement(f.M.Provider,{value:ce},X.data&&Y.data&&ie.data?n.createElement(s.p,{heading:Y.data.name,banner:Y.data.banner,imageCdnUrl:ie.data.imageCdnUrl,blockColourClass:(0,te.W)(Y.data),logo:null===(G=X.data.owner)||void 0===G?void 0:G.logo}):n.createElement(s.v,null),n.createElement("div",{className:"d-flex justify-content-between align-items-center py-3 mx-3 ".concat(xe?"":"border-bottom")},X.data&&Y.data?n.createElement(d.Oo,{breadcrumbs:me}):n.createElement(d.b2,null),n.createElement("div",{className:"d-flex"},(xe||!(null==fe?void 0:fe.length))&&n.createElement(m.h,{svgName:A.vn.Search,appLink:{application:P.O.SEARCH,action:I.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:z,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(g.x,{namespace:ae,phrase:"searchLibrary",options:{smartCount:null!==(D=null===(H=q.data)||void 0===H?void 0:H.length)&&void 0!==D?D:1}})),xe&&Y.data&&n.createElement(v.p,{variant:"outline-dark",type:ge,getSortAppLink:function(t){return(0,te.a)(e.libraryId,Y.data,t)},analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),fe&&re?n.createElement(n.Fragment,null,!!(null===(M=re.items)||void 0===M?void 0:M.length)&&n.createElement("div",{className:"px-2 py-3"},n.createElement(u.$,{folders:re.items,getAppLink:function(t){return(0,te.a)(e.libraryId,t,ge)},expandFolders:!fe.length})),n.createElement("div",{className:"px-3 pb-3"},n.createElement($,{videos:fe,yearGroups:oe.data,hasSubFolders:!!(null===(Z=re.items)||void 0===Z?void 0:Z.length),setFavourite:de,canFavourite:ue,hasMore:he,isFetching:be,fetchNext:ke,nextCursor:Ee,sort:ge,getSortAppLink:function(t){return(0,te.a)(e.libraryId,Y.data,t)},audiences:pe.data,libraries:q.data,imageCdnUrl:null===(_=ie.data)||void 0===_?void 0:_.imageCdnUrl,isPlugin:Q}))):n.createElement(ee,null))}},8406:(e,t,a)=>{a.d(t,{W:()=>c,a:()=>o});var n=a(28400),r=a(7733),l=a(14070),i=a(97291);function o(e,t,a){return e&&t?{application:i.O.LIBRARIES,action:l.e.Libraries.FOLDER,args:[e,t.id,n.m.slugify(t.name)],params:{sort:a}}:null}function c(e){for(var t,a,n=0,l=0;null!==(a=l<(null===(t=e.name)||void 0===t?void 0:t.length))&&void 0!==a&&a;l++)n+=e.name.charCodeAt(l);return r.o[n%r.o.length]}}}]);
2
+ //# sourceMappingURL=6138-2ef7ee071a-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6138-2ef7ee071a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState.tsx","file:///app/packages/projects/lite/src/apps/libraries/components/library-folder-videos/LibraryFolderVideos.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/library-folder-partial-loading.scss","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/LibraryFolderPartialLoading.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderView.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolderView(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolderView}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolderView} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolderView} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n &nbsp;\n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}>&nbsp;</div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import React from 'react';\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';\n\nconst namespace = 'libraries.libraryFolderEmptyState';\n\nexport function LibraryFolderEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Libraries.FOLDER} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, FavouriteFunc, Library, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n videos: VideoTypes[];\n yearGroups: YearGroup[];\n hasSubFolders: boolean;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n libraries: Library[];\n\n getSortAppLink: (sort: VideoSortType) => Core.AppLink;\n sort: VideoSortType;\n\n isFetching: boolean;\n hasMore: boolean;\n fetchNext: (cursor: string) => void;\n nextCursor?: string;\n imageCdnUrl?: string;\n isPlugin: boolean;\n}\n\nexport function LibraryFolderVideos(props: LibraryFolderVideosProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n const { hasPermissions } = usePermissions();\n\n if (!props.videos.length && !props.hasSubFolders)\n return <LibraryFolderEmptyState />;\n\n if (!props.videos.length)\n return <></>;\n\n return (\n <div>\n {/* With no subfolders, we don't show this subheading, and the sort is moved up to the parent component */}\n {props.hasSubFolders && (\n <div className='d-flex justify-content-between align-items-center'>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='videos' />\n </h2>\n\n <div className='d-flex'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: props.libraries?.length }} />\n </IconButton>\n <VideoSortSelect\n variant='outline-dark'\n type={props.sort}\n getSortAppLink={props.getSortAppLink}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n </div>\n </div>\n )}\n\n <VideoList\n videos={props.videos}\n yearGroups={props.yearGroups}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"subheading\":\"IJZtA\"};","import React from 'react';\n\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './library-folder-partial-loading.scss';\n\nexport function LibraryFolderPartialLoading(): JSX.Element {\n return (\n <>\n <div className='m-3'>\n <PartialFolderList />\n </div>\n\n <div className='mx-3 mb-3'>\n <div className={`${styles.subheading} partial-loading-background mb-2`} />\n <PartialVideoList />\n </div>\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Folder, Library, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { LibraryFolderVideos } from 'apps/libraries/components/library-folder-videos/LibraryFolderVideos';\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\n\nimport { LibraryFolderPartialLoading } from './partial-loading/LibraryFolderPartialLoading';\nimport { getFolderAppLink, getFolderBgColourClass } from './LibraryFolderViewUtils';\n\nconst namespace = 'libraries.libraryFolder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LibraryFolderViewProps {\n libraryId: string;\n folderId: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryFolderView(props: LibraryFolderViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { focusSearchBar } = useFocusSearchBar();\n const { isPlugin } = usePluginHelper();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.libraryId));\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.folderId));\n const subfolders = useFetchAllChildFolders(props.folderId);\n\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n user.data?.isAuthenticated && CustomerRequests.yearGroups(user.data.customerId)\n );\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!user.data && VideoSortHelper.getOrSetSortType(user.data.id, props.sort);\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<VideoTypes>(getVideosRequest, fetchNext, onError);\n\n useVideoMixin(videos);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return VideoRequests.collectionVideos(props.folderId, sort, cursor);\n }\n\n function fetchNext(cursor?: string): void {\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const hasNoSubfolders = !!(subfolders.hasCompleted && !subfolders.items?.length);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n {(library.data && folder.data && config.data)\n ? (\n <BannerHeader\n heading={folder.data.name}\n banner={folder.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n blockColourClass={getFolderBgColourClass(folder.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n <div className={`d-flex justify-content-between align-items-center py-3 mx-3 ${hasNoSubfolders ? '' : 'border-bottom'}`}>\n {(library.data && folder.data)\n ? <Breadcrumbs breadcrumbs={breadcrumbs} />\n : <PartialBreadcrumbs />\n }\n \n <div className='d-flex'>\n {(hasNoSubfolders || !videos?.length) &&\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n {(hasNoSubfolders && folder.data) && (\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n )}\n </div>\n </div>\n\n {(videos && subfolders) ? (\n <>\n {!!subfolders.items?.length && (\n <div className='px-2 py-3'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.libraryId, f, sort)}\n expandFolders={!videos.length}\n />\n </div>\n )}\n\n <div className='px-3 pb-3'>\n <LibraryFolderVideos\n videos={videos}\n yearGroups={yearGroups.data}\n hasSubFolders={!!subfolders.items?.length}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n hasMore={hasMore}\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n sort={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n audiences={audiences.data}\n libraries={libraries.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n isPlugin={isPlugin}\n />\n </div>\n </>\n ) : <LibraryFolderPartialLoading />}\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","LibraryFolder","thumbnailUrl","folder","thumbnail","UrlHelper","url","size","actions","getFolderActions","DragDropMoveWrapper","draggable","drag","id","data","droppable","drop","dropStye","dragStyle","AppLink","appLink","getAppLink","title","name","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","length","Actions","actionsDropdownClassName","dropdownToggleSvgSize","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","LocalStorageHelper","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","useBreakpoints","xxl","xl","lg","md","onToggleFolderView","displayableFolders","folders","slice","canToggleCollapsedView","showHeading","DivButton","onClick","Text","phrase","options","count","extraButtons","map","f","key","PartialFolder","PartialFolderList","Array","fill","_","i","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","src","ImageUrls","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","videos","hasSubFolders","IconButton","application","action","params","source","analyticsData","analyticsOptions","entity","location","actionType","descriptor","smartCount","libraries","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","yearGroups","getVideoAppLink","VideoAppLinkHelper","getSubTextAppLink","video","SeriesAppLinkHelper","series","setFavourite","canFavourite","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","imageCdnUrl","isPlugin","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","usePluginHelper","LibraryRequests","library","libraryId","folderId","subfolders","user","UserRequests","config","ConfigRequests","isAuthenticated","CustomerRequests","customerId","videoActions","useVideoActions","useLiteFavourites","u","breadcrumbs","useBreadcrumbs","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","blockColourClass","logo","owner","Breadcrumbs","getFolderAppLink","args","getFolderBgColourClass","charCode","charCodeAt"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
- /*! For license information please see 624-7ab5fb3f3b-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[624],{80624:(t,e,r)=>{r.r(e),r.d(e,{PlaySharedVideoViewContainer:()=>u});var n=r(32735),o=r(37802);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(){a=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new N(n||[]);return o(a,"_invoke",{value:O(t,r,c)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var y="suspendedStart",v="suspendedYield",d="executing",g="completed",m={};function w(){}function b(){}function L(){}var x={};h(x,u,(function(){return this}));var E=Object.getPrototypeOf,_=E&&E(E(F([])));_&&_!==r&&n.call(_,u)&&(x=_);var S=L.prototype=w.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,c,u){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,h=f.value;return h&&"object"==i(h)&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,c,u)}),(function(t){r("throw",t,c,u)})):e.resolve(h).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,u)}))}u(l.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function O(e,r,n){var o=y;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=j(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var l=p(e,r,n);if("normal"===l.type){if(o=n.done?g:v,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=g,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function G(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function F(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(i(e)+" is not iterable")}return b.prototype=L,o(S,"constructor",{value:L,configurable:!0}),o(L,"constructor",{value:b,configurable:!0}),b.displayName=h(L,f,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,L):(t.__proto__=L,h(t,f,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},k(P.prototype),h(P.prototype,l,(function(){return this})),e.AsyncIterator=P,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new P(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(S),h(S,f,"Generator"),h(S,u,(function(){return this})),h(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(G),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),G(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;G(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:F(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}var c=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))};function u(t){var e=this,i=(0,o.r)(null),u=i.hasPlayPageV2,l=i.isLoadingSettings,f=n.useMemo((function(){if(!l)return n.lazy((function(){return c(e,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u?Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(3767),r.e(4591),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(6450),r.e(322),r.e(6587),r.e(1169),r.e(1760)]).then(r.bind(r,43156)):Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(4591),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(322),r.e(184),r.e(9139),r.e(5466)]).then(r.bind(r,93978));case 2:return e=t.sent,t.abrupt("return",{default:"PlaySharedVideoViewV2"in e?e.PlaySharedVideoViewV2:e.PlaySharedVideoView});case 4:case"end":return t.stop()}}),t)})))}))}),[l]);return l?n.createElement(n.Fragment,null):n.createElement(n.Suspense,{fallback:n.createElement(n.Fragment,null)},n.createElement(f,Object.assign({},t)))}}}]);
3
- //# sourceMappingURL=624-7ab5fb3f3b-lite.chunk.js.map
1
+ /*! For license information please see 624-09b51a9d32-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[624],{80624:(t,e,r)=>{r.r(e),r.d(e,{PlaySharedVideoViewContainer:()=>u});var n=r(32735),o=r(37802);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(){a=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new N(n||[]);return o(a,"_invoke",{value:O(t,r,c)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var y="suspendedStart",v="suspendedYield",d="executing",g="completed",m={};function w(){}function b(){}function L(){}var x={};h(x,u,(function(){return this}));var E=Object.getPrototypeOf,_=E&&E(E(F([])));_&&_!==r&&n.call(_,u)&&(x=_);var S=L.prototype=w.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,c,u){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,h=f.value;return h&&"object"==i(h)&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,c,u)}),(function(t){r("throw",t,c,u)})):e.resolve(h).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,u)}))}u(l.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function O(e,r,n){var o=y;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=j(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var l=p(e,r,n);if("normal"===l.type){if(o=n.done?g:v,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=g,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function G(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function F(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(i(e)+" is not iterable")}return b.prototype=L,o(S,"constructor",{value:L,configurable:!0}),o(L,"constructor",{value:b,configurable:!0}),b.displayName=h(L,f,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,L):(t.__proto__=L,h(t,f,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},k(P.prototype),h(P.prototype,l,(function(){return this})),e.AsyncIterator=P,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new P(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(S),h(S,f,"Generator"),h(S,u,(function(){return this})),h(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(G),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),G(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;G(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:F(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}var c=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))};function u(t){var e=this,i=(0,o.r)(null),u=i.hasPlayPageV2,l=i.isLoadingSettings,f=n.useMemo((function(){if(!l)return n.lazy((function(){return c(e,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u?Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(3767),r.e(4591),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(6450),r.e(322),r.e(2142),r.e(1169),r.e(1019)]).then(r.bind(r,43156)):Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(4591),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(322),r.e(184),r.e(9139),r.e(5466)]).then(r.bind(r,93978));case 2:return e=t.sent,t.abrupt("return",{default:"PlaySharedVideoViewV2"in e?e.PlaySharedVideoViewV2:e.PlaySharedVideoView});case 4:case"end":return t.stop()}}),t)})))}))}),[l]);return l?n.createElement(n.Fragment,null):n.createElement(n.Suspense,{fallback:n.createElement(n.Fragment,null)},n.createElement(f,Object.assign({},t)))}}}]);
3
+ //# sourceMappingURL=624-09b51a9d32-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/624-7ab5fb3f3b-lite.chunk.js","mappings":";6iOAMM,SAAUA,EAA6BC,GAAyB,WACpE,GAA6C,OAAY,MAAjDC,EAAa,EAAbA,cAAeC,EAAiB,EAAjBA,kBAEjBC,EAAO,WAAc,WACzB,IAAID,EAGJ,OAAO,QAAW,kBAAW,gHACZ,OADY,SACLD,EAAgB,iMAAuC,4KAAgC,OAAjG,OAANG,EAAS,EAAH,uBACJ,CACNC,QAAS,0BAA2BD,EAClCA,EAAOE,sBACPF,EAAOG,sBACV,0CACF,GACH,GAAG,CAACL,IAEJ,OAAIA,EACK,iCAGP,gBAAC,WAAc,CAACM,SAAU,kCACxB,gBAACL,EAAI,iBAAKH,IAGhB","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-video/PlaySharedVideoViewContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoViewContainer(props: ShareLinkViewProps): JSX.Element {\n const { hasPlayPageV2, isLoadingSettings } = useSettings(null);\n\n const View = React.useMemo(() => {\n if (isLoadingSettings)\n return;\n\n return React.lazy(async () => {\n const module = await (hasPlayPageV2 ? import('./v2/PlaySharedVideoViewV2') : import('./PlaySharedVideoView'));\n return ({\n default: 'PlaySharedVideoViewV2' in module ?\n module.PlaySharedVideoViewV2 :\n module.PlaySharedVideoView\n });\n });\n }, [isLoadingSettings]);\n\n if (isLoadingSettings)\n return <></>;\n\n return (\n <React.Suspense fallback={<></>}>\n <View {...props} />\n </React.Suspense>\n );\n}"],"names":["PlaySharedVideoViewContainer","props","hasPlayPageV2","isLoadingSettings","View","module","default","PlaySharedVideoViewV2","PlaySharedVideoView","fallback"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/624-09b51a9d32-lite.chunk.js","mappings":";6iOAMM,SAAUA,EAA6BC,GAAyB,WACpE,GAA6C,OAAY,MAAjDC,EAAa,EAAbA,cAAeC,EAAiB,EAAjBA,kBAEjBC,EAAO,WAAc,WACzB,IAAID,EAGJ,OAAO,QAAW,kBAAW,gHACZ,OADY,SACLD,EAAgB,iMAAuC,4KAAgC,OAAjG,OAANG,EAAS,EAAH,uBACJ,CACNC,QAAS,0BAA2BD,EAClCA,EAAOE,sBACPF,EAAOG,sBACV,0CACF,GACH,GAAG,CAACL,IAEJ,OAAIA,EACK,iCAGP,gBAAC,WAAc,CAACM,SAAU,kCACxB,gBAACL,EAAI,iBAAKH,IAGhB","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-video/PlaySharedVideoViewContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoViewContainer(props: ShareLinkViewProps): JSX.Element {\n const { hasPlayPageV2, isLoadingSettings } = useSettings(null);\n\n const View = React.useMemo(() => {\n if (isLoadingSettings)\n return;\n\n return React.lazy(async () => {\n const module = await (hasPlayPageV2 ? import('./v2/PlaySharedVideoViewV2') : import('./PlaySharedVideoView'));\n return ({\n default: 'PlaySharedVideoViewV2' in module ?\n module.PlaySharedVideoViewV2 :\n module.PlaySharedVideoView\n });\n });\n }, [isLoadingSettings]);\n\n if (isLoadingSettings)\n return <></>;\n\n return (\n <React.Suspense fallback={<></>}>\n <View {...props} />\n </React.Suspense>\n );\n}"],"names":["PlaySharedVideoViewContainer","props","hasPlayPageV2","isLoadingSettings","View","module","default","PlaySharedVideoViewV2","PlaySharedVideoView","fallback"],"sourceRoot":""}