@clickview/lite 0.52.1 → 0.52.2-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{1329-lite-ec64553644.chunk.css → 1329-lite-55772b1036.chunk.css} +2 -2
  3. package/dist/css/{986-lite-6bdd43b250.chunk.css → 3532-lite-a3c7435ba4.chunk.css} +1 -1
  4. package/dist/css/{3969-lite-cb4c4824f6.chunk.css → 3969-lite-94ca677007.chunk.css} +1 -1
  5. package/dist/css/{4489-lite-e971ca8ab6.chunk.css → 4489-lite-49c28410f9.chunk.css} +1 -1
  6. package/dist/css/4690-lite-e1f88a6b47.chunk.css +4 -0
  7. package/dist/css/{537-lite-53bb989a96.chunk.css → 537-lite-390b70028c.chunk.css} +1 -1
  8. package/dist/css/{6489-lite-5ffcd32447.chunk.css → 6489-lite-a917e953c8.chunk.css} +1 -1
  9. package/dist/css/{8192-lite-cf3253f7b8.chunk.css → 8192-lite-282a716c03.chunk.css} +1 -1
  10. package/dist/css/{841-lite-93cc5f2469.chunk.css → 841-lite-4a007cd7be.chunk.css} +1 -1
  11. package/dist/css/{1820-lite-eaf5a9db1c.chunk.css → 999-lite-02c517e917.chunk.css} +1 -1
  12. package/dist/languages/en.json +1 -1
  13. package/dist/scripts/{1080-5b00242a31-lite.chunk.js → 1080-d24c9657ec-lite.chunk.js} +2 -2
  14. package/dist/scripts/{1080-5b00242a31-lite.chunk.js.map → 1080-d24c9657ec-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/{9173-2392d447a6-lite.chunk.js → 1104-f057c6dea1-lite.chunk.js} +3 -3
  16. package/dist/scripts/{9173-2392d447a6-lite.chunk.js.map → 1104-f057c6dea1-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/{1125-aac132b88f-lite.chunk.js → 1125-55dc0a4586-lite.chunk.js} +2 -2
  18. package/dist/scripts/1125-55dc0a4586-lite.chunk.js.map +1 -0
  19. package/dist/scripts/1169-3de585be6a-lite.chunk.js +2 -0
  20. package/dist/scripts/1169-3de585be6a-lite.chunk.js.map +1 -0
  21. package/dist/scripts/1329-850346e6e6-lite.chunk.js +3 -0
  22. package/dist/scripts/1329-850346e6e6-lite.chunk.js.map +1 -0
  23. package/dist/scripts/{1379-082bbab71a-lite.chunk.js → 1379-976d20185f-lite.chunk.js} +3 -3
  24. package/dist/scripts/{1379-082bbab71a-lite.chunk.js.map → 1379-976d20185f-lite.chunk.js.map} +1 -1
  25. package/dist/scripts/1672-60a3ab42f5-lite.chunk.js +3 -0
  26. package/dist/scripts/1672-60a3ab42f5-lite.chunk.js.map +1 -0
  27. package/dist/scripts/1725-1e864ba78a-lite.chunk.js +2 -0
  28. package/dist/scripts/1725-1e864ba78a-lite.chunk.js.map +1 -0
  29. package/dist/scripts/1891-109e674486-lite.chunk.js +2 -0
  30. package/dist/scripts/1891-109e674486-lite.chunk.js.map +1 -0
  31. package/dist/scripts/193-797b89797a-lite.chunk.js +2 -0
  32. package/dist/scripts/193-797b89797a-lite.chunk.js.map +1 -0
  33. package/dist/scripts/2004-7d1bf8b246-lite.chunk.js +3 -0
  34. package/dist/scripts/2004-7d1bf8b246-lite.chunk.js.map +1 -0
  35. package/dist/scripts/209-d2e6b93965-lite.chunk.js +2 -0
  36. package/dist/scripts/209-d2e6b93965-lite.chunk.js.map +1 -0
  37. package/dist/scripts/2134-b9145f8ce8-lite.chunk.js +2 -0
  38. package/dist/scripts/2134-b9145f8ce8-lite.chunk.js.map +1 -0
  39. package/dist/scripts/2952-6a32a90314-lite.chunk.js +2 -0
  40. package/dist/scripts/2952-6a32a90314-lite.chunk.js.map +1 -0
  41. package/dist/scripts/3003-7685240aed-lite.chunk.js +2 -0
  42. package/dist/scripts/3003-7685240aed-lite.chunk.js.map +1 -0
  43. package/dist/scripts/3020-6c9c7d2176-lite.chunk.js +2 -0
  44. package/dist/scripts/3020-6c9c7d2176-lite.chunk.js.map +1 -0
  45. package/dist/scripts/338-e21a3cd6fe-lite.chunk.js +3 -0
  46. package/dist/scripts/338-e21a3cd6fe-lite.chunk.js.map +1 -0
  47. package/dist/scripts/3532-2fed0eb7a4-lite.chunk.js +3 -0
  48. package/dist/scripts/3532-2fed0eb7a4-lite.chunk.js.map +1 -0
  49. package/dist/scripts/3633-025f418c19-lite.chunk.js +2 -0
  50. package/dist/scripts/3633-025f418c19-lite.chunk.js.map +1 -0
  51. package/dist/scripts/3640-694d1d6d2a-lite.chunk.js +2 -0
  52. package/dist/scripts/3640-694d1d6d2a-lite.chunk.js.map +1 -0
  53. package/dist/scripts/3728-2c71d3021e-lite.chunk.js +2 -0
  54. package/dist/scripts/3728-2c71d3021e-lite.chunk.js.map +1 -0
  55. package/dist/scripts/3966-0e3c4f329e-lite.chunk.js +2 -0
  56. package/dist/scripts/3966-0e3c4f329e-lite.chunk.js.map +1 -0
  57. package/dist/scripts/{3969-6d5f2f272f-lite.chunk.js → 3969-e36f1922eb-lite.chunk.js} +1 -1
  58. package/dist/scripts/{3969-6d5f2f272f-lite.chunk.js.map → 3969-e36f1922eb-lite.chunk.js.map} +1 -1
  59. package/dist/scripts/4063-5fa157657f-lite.chunk.js +2 -0
  60. package/dist/scripts/4063-5fa157657f-lite.chunk.js.map +1 -0
  61. package/dist/scripts/4182-7ae9edf4a5-lite.chunk.js +2 -0
  62. package/dist/scripts/4182-7ae9edf4a5-lite.chunk.js.map +1 -0
  63. package/dist/scripts/4395-37537617e2-lite.chunk.js +2 -0
  64. package/dist/scripts/4395-37537617e2-lite.chunk.js.map +1 -0
  65. package/dist/scripts/4502-83e4017e54-lite.chunk.js +2 -0
  66. package/dist/scripts/4502-83e4017e54-lite.chunk.js.map +1 -0
  67. package/dist/scripts/4690-d64efe8020-lite.chunk.js +2 -0
  68. package/dist/scripts/4690-d64efe8020-lite.chunk.js.map +1 -0
  69. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js +2 -0
  70. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js.map +1 -0
  71. package/dist/scripts/5143-d46f032e9e-lite.chunk.js +2 -0
  72. package/dist/scripts/5143-d46f032e9e-lite.chunk.js.map +1 -0
  73. package/dist/scripts/5157-855821ccce-lite.chunk.js +2 -0
  74. package/dist/scripts/5157-855821ccce-lite.chunk.js.map +1 -0
  75. package/dist/scripts/537-f63ad5863e-lite.chunk.js +3 -0
  76. package/dist/scripts/537-f63ad5863e-lite.chunk.js.map +1 -0
  77. package/dist/scripts/5549-bb01b24470-lite.chunk.js +2 -0
  78. package/dist/scripts/5549-bb01b24470-lite.chunk.js.map +1 -0
  79. package/dist/scripts/5573-304fea77a6-lite.chunk.js +2 -0
  80. package/dist/scripts/5573-304fea77a6-lite.chunk.js.map +1 -0
  81. package/dist/scripts/5595-842c05064c-lite.chunk.js +2 -0
  82. package/dist/scripts/5595-842c05064c-lite.chunk.js.map +1 -0
  83. package/dist/scripts/5606-680582b817-lite.chunk.js +2 -0
  84. package/dist/scripts/5606-680582b817-lite.chunk.js.map +1 -0
  85. package/dist/scripts/5877-e75dcce0ef-lite.chunk.js +2 -0
  86. package/dist/scripts/5877-e75dcce0ef-lite.chunk.js.map +1 -0
  87. package/dist/scripts/5936-b509535ec7-lite.chunk.js +2 -0
  88. package/dist/scripts/5936-b509535ec7-lite.chunk.js.map +1 -0
  89. package/dist/scripts/6054-1e9b86d631-lite.chunk.js +2 -0
  90. package/dist/scripts/6054-1e9b86d631-lite.chunk.js.map +1 -0
  91. package/dist/scripts/6094-6c1e95073a-lite.chunk.js +2 -0
  92. package/dist/scripts/6094-6c1e95073a-lite.chunk.js.map +1 -0
  93. package/dist/scripts/6138-5791b93cc1-lite.chunk.js +2 -0
  94. package/dist/scripts/6138-5791b93cc1-lite.chunk.js.map +1 -0
  95. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js → 624-bf0ff6257f-lite.chunk.js} +3 -3
  96. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.map → 624-bf0ff6257f-lite.chunk.js.map} +1 -1
  97. package/dist/scripts/6263-cfd4ebfe8b-lite.chunk.js +2 -0
  98. package/dist/scripts/6263-cfd4ebfe8b-lite.chunk.js.map +1 -0
  99. package/dist/scripts/6290-eb223883fe-lite.chunk.js +2 -0
  100. package/dist/scripts/6290-eb223883fe-lite.chunk.js.map +1 -0
  101. package/dist/scripts/6470-1012a7889c-lite.chunk.js +2 -0
  102. package/dist/scripts/6470-1012a7889c-lite.chunk.js.map +1 -0
  103. package/dist/scripts/6481-39b72a58ef-lite.chunk.js +2 -0
  104. package/dist/scripts/6481-39b72a58ef-lite.chunk.js.map +1 -0
  105. package/dist/scripts/6489-9287613d14-lite.chunk.js +3 -0
  106. package/dist/scripts/6489-9287613d14-lite.chunk.js.map +1 -0
  107. package/dist/scripts/6532-9edab80cc6-lite.chunk.js +2 -0
  108. package/dist/scripts/6532-9edab80cc6-lite.chunk.js.map +1 -0
  109. package/dist/scripts/6604-2353daa8c0-lite.chunk.js +2 -0
  110. package/dist/scripts/6604-2353daa8c0-lite.chunk.js.map +1 -0
  111. package/dist/scripts/6741-572db2d1e9-lite.chunk.js +3 -0
  112. package/dist/scripts/6741-572db2d1e9-lite.chunk.js.map +1 -0
  113. package/dist/scripts/6746-72d35335ba-lite.chunk.js +2 -0
  114. package/dist/scripts/6746-72d35335ba-lite.chunk.js.map +1 -0
  115. package/dist/scripts/6852-f49f6f19d3-lite.chunk.js +2 -0
  116. package/dist/scripts/6852-f49f6f19d3-lite.chunk.js.map +1 -0
  117. package/dist/scripts/714-67adeb44da-lite.chunk.js +2 -0
  118. package/dist/scripts/714-67adeb44da-lite.chunk.js.map +1 -0
  119. package/dist/scripts/7163-8b5ab059b6-lite.chunk.js +2 -0
  120. package/dist/scripts/7163-8b5ab059b6-lite.chunk.js.map +1 -0
  121. package/dist/scripts/7178-4b9c33a63e-lite.chunk.js +2 -0
  122. package/dist/scripts/7178-4b9c33a63e-lite.chunk.js.map +1 -0
  123. package/dist/scripts/7223-e2f8a43b89-lite.chunk.js +2 -0
  124. package/dist/scripts/7223-e2f8a43b89-lite.chunk.js.map +1 -0
  125. package/dist/scripts/7234-595d44446f-lite.chunk.js +2 -0
  126. package/dist/scripts/7234-595d44446f-lite.chunk.js.map +1 -0
  127. package/dist/scripts/7267-dac72aeb98-lite.chunk.js +2 -0
  128. package/dist/scripts/7267-dac72aeb98-lite.chunk.js.map +1 -0
  129. package/dist/scripts/{7293-687e60dba2-lite.chunk.js → 7293-1ad518e385-lite.chunk.js} +2 -2
  130. package/dist/scripts/7293-1ad518e385-lite.chunk.js.map +1 -0
  131. package/dist/scripts/7679-f43777e02e-lite.chunk.js +2 -0
  132. package/dist/scripts/7679-f43777e02e-lite.chunk.js.map +1 -0
  133. package/dist/scripts/7757-2785d666ad-lite.chunk.js +2 -0
  134. package/dist/scripts/7757-2785d666ad-lite.chunk.js.map +1 -0
  135. package/dist/scripts/7795-b641104969-lite.chunk.js +2 -0
  136. package/dist/scripts/7795-b641104969-lite.chunk.js.map +1 -0
  137. package/dist/scripts/7818-cff0f2276c-lite.chunk.js +2 -0
  138. package/dist/scripts/7818-cff0f2276c-lite.chunk.js.map +1 -0
  139. package/dist/scripts/{8192-f26370c5a6-lite.chunk.js → 8192-ea5cee15d7-lite.chunk.js} +1 -1
  140. package/dist/scripts/{8192-f26370c5a6-lite.chunk.js.map → 8192-ea5cee15d7-lite.chunk.js.map} +1 -1
  141. package/dist/scripts/8200-1e4518c5d8-lite.chunk.js +3 -0
  142. package/dist/scripts/8200-1e4518c5d8-lite.chunk.js.map +1 -0
  143. package/dist/scripts/8323-fb330a8f47-lite.chunk.js +3 -0
  144. package/dist/scripts/8323-fb330a8f47-lite.chunk.js.map +1 -0
  145. package/dist/scripts/841-d69c7f4b4d-lite.chunk.js +3 -0
  146. package/dist/scripts/841-d69c7f4b4d-lite.chunk.js.map +1 -0
  147. package/dist/scripts/8709-f360baa021-lite.chunk.js +2 -0
  148. package/dist/scripts/8709-f360baa021-lite.chunk.js.map +1 -0
  149. package/dist/scripts/8722-00d7443d09-lite.chunk.js +2 -0
  150. package/dist/scripts/8722-00d7443d09-lite.chunk.js.map +1 -0
  151. package/dist/scripts/8982-6848480133-lite.chunk.js +2 -0
  152. package/dist/scripts/8982-6848480133-lite.chunk.js.map +1 -0
  153. package/dist/scripts/9016-e17da8b633-lite.chunk.js +3 -0
  154. package/dist/scripts/9016-e17da8b633-lite.chunk.js.map +1 -0
  155. package/dist/scripts/9173-a0c6c7be25-lite.chunk.js +2 -0
  156. package/dist/scripts/9173-a0c6c7be25-lite.chunk.js.map +1 -0
  157. package/dist/scripts/9226-a7c61f9129-lite.chunk.js +2 -0
  158. package/dist/scripts/9226-a7c61f9129-lite.chunk.js.map +1 -0
  159. package/dist/scripts/9230-537f1fcc38-lite.chunk.js +3 -0
  160. package/dist/scripts/9230-537f1fcc38-lite.chunk.js.map +1 -0
  161. package/dist/scripts/9359-deb452cb10-lite.chunk.js +2 -0
  162. package/dist/scripts/9359-deb452cb10-lite.chunk.js.map +1 -0
  163. package/dist/scripts/{9395-90b87097fa-lite.chunk.js → 9395-e9b5cdbdce-lite.chunk.js} +3 -3
  164. package/dist/scripts/{9395-90b87097fa-lite.chunk.js.map → 9395-e9b5cdbdce-lite.chunk.js.map} +1 -1
  165. package/dist/scripts/9399-721a368168-lite.chunk.js +2 -0
  166. package/dist/scripts/9399-721a368168-lite.chunk.js.map +1 -0
  167. package/dist/scripts/{9478-99486906b9-lite.chunk.js → 9478-abfa7ed3cc-lite.chunk.js} +3 -3
  168. package/dist/scripts/{9478-99486906b9-lite.chunk.js.map → 9478-abfa7ed3cc-lite.chunk.js.map} +1 -1
  169. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js → 953-bf3d621a33-lite.chunk.js} +3 -3
  170. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.map → 953-bf3d621a33-lite.chunk.js.map} +1 -1
  171. package/dist/scripts/9719-ed1956607c-lite.chunk.js +3 -0
  172. package/dist/scripts/9719-ed1956607c-lite.chunk.js.map +1 -0
  173. package/dist/scripts/999-d7e93dac12-lite.chunk.js +2 -0
  174. package/dist/scripts/999-d7e93dac12-lite.chunk.js.map +1 -0
  175. package/dist/scripts/bundle-9a72d04e7d.min.js +3 -0
  176. package/dist/scripts/bundle-9a72d04e7d.min.js.map +1 -0
  177. package/package.json +1 -2
  178. package/dist/css/4690-lite-a4fdd7e61e.chunk.css +0 -4
  179. package/dist/scripts/1125-aac132b88f-lite.chunk.js.map +0 -1
  180. package/dist/scripts/1169-5a0d974a94-lite.chunk.js +0 -2
  181. package/dist/scripts/1169-5a0d974a94-lite.chunk.js.map +0 -1
  182. package/dist/scripts/1329-7064e95200-lite.chunk.js +0 -3
  183. package/dist/scripts/1329-7064e95200-lite.chunk.js.map +0 -1
  184. package/dist/scripts/1466-735d7dad48-lite.chunk.js +0 -3
  185. package/dist/scripts/1466-735d7dad48-lite.chunk.js.map +0 -1
  186. package/dist/scripts/1672-672f298d82-lite.chunk.js +0 -3
  187. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +0 -1
  188. package/dist/scripts/1725-075015497e-lite.chunk.js +0 -2
  189. package/dist/scripts/1725-075015497e-lite.chunk.js.map +0 -1
  190. package/dist/scripts/1818-4949c9b748-lite.chunk.js +0 -2
  191. package/dist/scripts/1818-4949c9b748-lite.chunk.js.map +0 -1
  192. package/dist/scripts/1820-345bf53a3c-lite.chunk.js +0 -2
  193. package/dist/scripts/1820-345bf53a3c-lite.chunk.js.map +0 -1
  194. package/dist/scripts/1867-6f801de383-lite.chunk.js +0 -2
  195. package/dist/scripts/1867-6f801de383-lite.chunk.js.map +0 -1
  196. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js +0 -2
  197. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js.map +0 -1
  198. package/dist/scripts/193-f08b054631-lite.chunk.js +0 -2
  199. package/dist/scripts/193-f08b054631-lite.chunk.js.map +0 -1
  200. package/dist/scripts/2004-d891104ed4-lite.chunk.js +0 -3
  201. package/dist/scripts/2004-d891104ed4-lite.chunk.js.map +0 -1
  202. package/dist/scripts/209-57b05f6c83-lite.chunk.js +0 -2
  203. package/dist/scripts/209-57b05f6c83-lite.chunk.js.map +0 -1
  204. package/dist/scripts/2134-bca2f4697e-lite.chunk.js +0 -2
  205. package/dist/scripts/2134-bca2f4697e-lite.chunk.js.map +0 -1
  206. package/dist/scripts/2703-591ccf069c-lite.chunk.js +0 -2
  207. package/dist/scripts/2703-591ccf069c-lite.chunk.js.map +0 -1
  208. package/dist/scripts/3020-dbc723b098-lite.chunk.js +0 -2
  209. package/dist/scripts/3020-dbc723b098-lite.chunk.js.map +0 -1
  210. package/dist/scripts/3633-66d28be6f8-lite.chunk.js +0 -2
  211. package/dist/scripts/3633-66d28be6f8-lite.chunk.js.map +0 -1
  212. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js +0 -2
  213. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js.map +0 -1
  214. package/dist/scripts/3966-a3bb0e0161-lite.chunk.js +0 -2
  215. package/dist/scripts/3966-a3bb0e0161-lite.chunk.js.map +0 -1
  216. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js +0 -2
  217. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js.map +0 -1
  218. package/dist/scripts/4395-64da004753-lite.chunk.js +0 -2
  219. package/dist/scripts/4395-64da004753-lite.chunk.js.map +0 -1
  220. package/dist/scripts/4502-2e30d86385-lite.chunk.js +0 -2
  221. package/dist/scripts/4502-2e30d86385-lite.chunk.js.map +0 -1
  222. package/dist/scripts/4690-03372d68ac-lite.chunk.js +0 -2
  223. package/dist/scripts/4690-03372d68ac-lite.chunk.js.map +0 -1
  224. package/dist/scripts/5143-b6896dad98-lite.chunk.js +0 -2
  225. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +0 -1
  226. package/dist/scripts/5157-54aeb51bdf-lite.chunk.js +0 -2
  227. package/dist/scripts/5157-54aeb51bdf-lite.chunk.js.map +0 -1
  228. package/dist/scripts/537-536e52ef91-lite.chunk.js +0 -3
  229. package/dist/scripts/537-536e52ef91-lite.chunk.js.map +0 -1
  230. package/dist/scripts/5562-e011962a62-lite.chunk.js +0 -3
  231. package/dist/scripts/5562-e011962a62-lite.chunk.js.map +0 -1
  232. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js +0 -2
  233. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js.map +0 -1
  234. package/dist/scripts/5595-96a0649af0-lite.chunk.js +0 -2
  235. package/dist/scripts/5595-96a0649af0-lite.chunk.js.map +0 -1
  236. package/dist/scripts/5606-6c25caedc4-lite.chunk.js +0 -2
  237. package/dist/scripts/5606-6c25caedc4-lite.chunk.js.map +0 -1
  238. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js +0 -2
  239. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js.map +0 -1
  240. package/dist/scripts/5936-f0177219db-lite.chunk.js +0 -2
  241. package/dist/scripts/5936-f0177219db-lite.chunk.js.map +0 -1
  242. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js +0 -2
  243. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js.map +0 -1
  244. package/dist/scripts/6094-7ec9341357-lite.chunk.js +0 -2
  245. package/dist/scripts/6094-7ec9341357-lite.chunk.js.map +0 -1
  246. package/dist/scripts/6138-d419f62f77-lite.chunk.js +0 -2
  247. package/dist/scripts/6138-d419f62f77-lite.chunk.js.map +0 -1
  248. package/dist/scripts/6263-af99de5a35-lite.chunk.js +0 -2
  249. package/dist/scripts/6263-af99de5a35-lite.chunk.js.map +0 -1
  250. package/dist/scripts/6290-56412c6663-lite.chunk.js +0 -2
  251. package/dist/scripts/6290-56412c6663-lite.chunk.js.map +0 -1
  252. package/dist/scripts/6415-8b354a10c7-lite.chunk.js +0 -2
  253. package/dist/scripts/6415-8b354a10c7-lite.chunk.js.map +0 -1
  254. package/dist/scripts/6470-6216086d63-lite.chunk.js +0 -2
  255. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +0 -1
  256. package/dist/scripts/6481-03a4f1082e-lite.chunk.js +0 -2
  257. package/dist/scripts/6481-03a4f1082e-lite.chunk.js.map +0 -1
  258. package/dist/scripts/6489-953bb87f64-lite.chunk.js +0 -3
  259. package/dist/scripts/6489-953bb87f64-lite.chunk.js.map +0 -1
  260. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js +0 -2
  261. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js.map +0 -1
  262. package/dist/scripts/6546-bc3a8099ba-lite.chunk.js +0 -2
  263. package/dist/scripts/6546-bc3a8099ba-lite.chunk.js.map +0 -1
  264. package/dist/scripts/6587-23e7b1d196-lite.chunk.js +0 -2
  265. package/dist/scripts/6587-23e7b1d196-lite.chunk.js.map +0 -1
  266. package/dist/scripts/6604-92193d6d68-lite.chunk.js +0 -2
  267. package/dist/scripts/6604-92193d6d68-lite.chunk.js.map +0 -1
  268. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +0 -3
  269. package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +0 -1
  270. package/dist/scripts/6746-b5b2739944-lite.chunk.js +0 -2
  271. package/dist/scripts/6746-b5b2739944-lite.chunk.js.map +0 -1
  272. package/dist/scripts/679-92bb80f478-lite.chunk.js +0 -2
  273. package/dist/scripts/679-92bb80f478-lite.chunk.js.map +0 -1
  274. package/dist/scripts/714-432082f4fa-lite.chunk.js +0 -2
  275. package/dist/scripts/714-432082f4fa-lite.chunk.js.map +0 -1
  276. package/dist/scripts/7178-e603ea6b58-lite.chunk.js +0 -2
  277. package/dist/scripts/7178-e603ea6b58-lite.chunk.js.map +0 -1
  278. package/dist/scripts/7223-135cc7d675-lite.chunk.js +0 -2
  279. package/dist/scripts/7223-135cc7d675-lite.chunk.js.map +0 -1
  280. package/dist/scripts/729-c704d587d3-lite.chunk.js +0 -2
  281. package/dist/scripts/729-c704d587d3-lite.chunk.js.map +0 -1
  282. package/dist/scripts/7293-687e60dba2-lite.chunk.js.map +0 -1
  283. package/dist/scripts/7679-81c2a40df4-lite.chunk.js +0 -2
  284. package/dist/scripts/7679-81c2a40df4-lite.chunk.js.map +0 -1
  285. package/dist/scripts/7757-b149c4c215-lite.chunk.js +0 -2
  286. package/dist/scripts/7757-b149c4c215-lite.chunk.js.map +0 -1
  287. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js +0 -2
  288. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js.map +0 -1
  289. package/dist/scripts/7818-2eafc5f812-lite.chunk.js +0 -2
  290. package/dist/scripts/7818-2eafc5f812-lite.chunk.js.map +0 -1
  291. package/dist/scripts/8200-8a55f1631f-lite.chunk.js +0 -3
  292. package/dist/scripts/8200-8a55f1631f-lite.chunk.js.map +0 -1
  293. package/dist/scripts/8323-99cb03891e-lite.chunk.js +0 -3
  294. package/dist/scripts/8323-99cb03891e-lite.chunk.js.map +0 -1
  295. package/dist/scripts/841-0c50273ad2-lite.chunk.js +0 -3
  296. package/dist/scripts/841-0c50273ad2-lite.chunk.js.map +0 -1
  297. package/dist/scripts/8722-c5f95553f2-lite.chunk.js +0 -2
  298. package/dist/scripts/8722-c5f95553f2-lite.chunk.js.map +0 -1
  299. package/dist/scripts/8766-9605550480-lite.chunk.js +0 -2
  300. package/dist/scripts/8766-9605550480-lite.chunk.js.map +0 -1
  301. package/dist/scripts/8800-c88fefeace-lite.chunk.js +0 -2
  302. package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +0 -1
  303. package/dist/scripts/8982-63c31685bf-lite.chunk.js +0 -2
  304. package/dist/scripts/8982-63c31685bf-lite.chunk.js.map +0 -1
  305. package/dist/scripts/9016-0c078a39cb-lite.chunk.js +0 -3
  306. package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +0 -1
  307. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js +0 -2
  308. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +0 -1
  309. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +0 -3
  310. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +0 -1
  311. package/dist/scripts/9359-fa72fcdedc-lite.chunk.js +0 -2
  312. package/dist/scripts/9359-fa72fcdedc-lite.chunk.js.map +0 -1
  313. package/dist/scripts/9399-b724e4fb06-lite.chunk.js +0 -2
  314. package/dist/scripts/9399-b724e4fb06-lite.chunk.js.map +0 -1
  315. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js +0 -3
  316. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js.map +0 -1
  317. package/dist/scripts/986-e9379d557d-lite.chunk.js +0 -3
  318. package/dist/scripts/986-e9379d557d-lite.chunk.js.LICENSE.txt +0 -1
  319. package/dist/scripts/986-e9379d557d-lite.chunk.js.map +0 -1
  320. package/dist/scripts/bundle-d646383f3e.min.js +0 -3
  321. package/dist/scripts/bundle-d646383f3e.min.js.map +0 -1
  322. /package/dist/css/{9173-lite-b361d438f6.chunk.css → 1104-lite-b361d438f6.chunk.css} +0 -0
  323. /package/dist/css/{679-lite-00eb7dadb2.chunk.css → 2952-lite-00eb7dadb2.chunk.css} +0 -0
  324. /package/dist/css/{1867-lite-ae7bb51ed6.chunk.css → 3640-lite-ae7bb51ed6.chunk.css} +0 -0
  325. /package/dist/css/{4860-lite-93d7fad455.chunk.css → 4063-lite-93d7fad455.chunk.css} +0 -0
  326. /package/dist/css/{729-lite-93d7fad455.chunk.css → 4850-lite-93d7fad455.chunk.css} +0 -0
  327. /package/dist/css/{6546-lite-ae7bb51ed6.chunk.css → 5549-lite-ae7bb51ed6.chunk.css} +0 -0
  328. /package/dist/css/{8766-lite-8c5d7658ec.chunk.css → 7163-lite-8c5d7658ec.chunk.css} +0 -0
  329. /package/dist/css/{1818-lite-5ef1706d69.chunk.css → 7234-lite-5ef1706d69.chunk.css} +0 -0
  330. /package/dist/css/{6415-lite-707657102b.chunk.css → 9173-lite-707657102b.chunk.css} +0 -0
  331. /package/dist/scripts/{1329-7064e95200-lite.chunk.js.LICENSE.txt → 1104-f057c6dea1-lite.chunk.js.LICENSE.txt} +0 -0
  332. /package/dist/scripts/{1379-082bbab71a-lite.chunk.js.LICENSE.txt → 1329-850346e6e6-lite.chunk.js.LICENSE.txt} +0 -0
  333. /package/dist/scripts/{1466-735d7dad48-lite.chunk.js.LICENSE.txt → 1379-976d20185f-lite.chunk.js.LICENSE.txt} +0 -0
  334. /package/dist/scripts/{1672-672f298d82-lite.chunk.js.LICENSE.txt → 1672-60a3ab42f5-lite.chunk.js.LICENSE.txt} +0 -0
  335. /package/dist/scripts/{2004-d891104ed4-lite.chunk.js.LICENSE.txt → 2004-7d1bf8b246-lite.chunk.js.LICENSE.txt} +0 -0
  336. /package/dist/scripts/{537-536e52ef91-lite.chunk.js.LICENSE.txt → 338-e21a3cd6fe-lite.chunk.js.LICENSE.txt} +0 -0
  337. /package/dist/scripts/{5562-e011962a62-lite.chunk.js.LICENSE.txt → 3532-2fed0eb7a4-lite.chunk.js.LICENSE.txt} +0 -0
  338. /package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.LICENSE.txt → 537-f63ad5863e-lite.chunk.js.LICENSE.txt} +0 -0
  339. /package/dist/scripts/{6489-953bb87f64-lite.chunk.js.LICENSE.txt → 624-bf0ff6257f-lite.chunk.js.LICENSE.txt} +0 -0
  340. /package/dist/scripts/{6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt → 6489-9287613d14-lite.chunk.js.LICENSE.txt} +0 -0
  341. /package/dist/scripts/{8200-8a55f1631f-lite.chunk.js.LICENSE.txt → 6741-572db2d1e9-lite.chunk.js.LICENSE.txt} +0 -0
  342. /package/dist/scripts/{8323-99cb03891e-lite.chunk.js.LICENSE.txt → 8200-1e4518c5d8-lite.chunk.js.LICENSE.txt} +0 -0
  343. /package/dist/scripts/{841-0c50273ad2-lite.chunk.js.LICENSE.txt → 8323-fb330a8f47-lite.chunk.js.LICENSE.txt} +0 -0
  344. /package/dist/scripts/{9173-2392d447a6-lite.chunk.js.LICENSE.txt → 841-d69c7f4b4d-lite.chunk.js.LICENSE.txt} +0 -0
  345. /package/dist/scripts/{9016-0c078a39cb-lite.chunk.js.LICENSE.txt → 9016-e17da8b633-lite.chunk.js.LICENSE.txt} +0 -0
  346. /package/dist/scripts/{9230-6dee40b1fb-lite.chunk.js.LICENSE.txt → 9230-537f1fcc38-lite.chunk.js.LICENSE.txt} +0 -0
  347. /package/dist/scripts/{9395-90b87097fa-lite.chunk.js.LICENSE.txt → 9395-e9b5cdbdce-lite.chunk.js.LICENSE.txt} +0 -0
  348. /package/dist/scripts/{9478-99486906b9-lite.chunk.js.LICENSE.txt → 9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt} +0 -0
  349. /package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.LICENSE.txt → 953-bf3d621a33-lite.chunk.js.LICENSE.txt} +0 -0
  350. /package/dist/scripts/{9719-cf7d4172b6-lite.chunk.js.LICENSE.txt → 9719-ed1956607c-lite.chunk.js.LICENSE.txt} +0 -0
  351. /package/dist/scripts/{bundle-d646383f3e.min.js.LICENSE.txt → bundle-9a72d04e7d.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 3532-2fed0eb7a4-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3532],{7870:(e,t,n)=>{n.d(t,{N:()=>c});var a=n(97395),i=n(75896),r=n(110),o=n(40424),c={calendarEvents:function(e,t,n){return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/content",{from:e,to:t,presentationId:n}),publicUrl:a._.urlBuilder("/api/discover/special-events/content",{from:e,to:t,presentationId:n}),key:"presentation:".concat(n,":events:from:").concat(e,":to").concat(t)}},nextTopicSpecialEvent:function(e,t){var n={presentationId:t,limit:1,from:r.O.format(new Date,"YYYY-MM-DD"),objectType:o.VH.Classification};return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/object/".concat(e,"/next-events"),n),publicUrl:a._.urlBuilder("/api/discover/special-events/object/".concat(e,"/next-events"),n),key:"presentation:".concat(t,":events:classification:").concat(e),formatData:function(e){return i.m.first(e)}}}}},69395:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),i=n(91967);const r={disabled:"pERi4",disabledHighlighted:"AxyWm"};function o(e){var t=e.audience,n=e.highlight,o=e.setAudience,c=e.isDisabled,s=e.extraClasses,l=function(e,t){return e?t?"".concat(r.disabledHighlighted," text-light"):"bg-gray-900 text-light":t?"".concat(r.disabled," text-secondary"):"bg-light"}(n,c),u="rounded-pill d-inline-block me-1 user-select-none ".concat(c?"cursor-default":"cursor-pointer"," ").concat(l," ").concat(s);return a.createElement("span",{className:u,onClick:function(){!c&&i.q.isFunction(o)&&o(t,!n)},role:"checkbox","aria-checked":n},t.name.split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.substring(1)})).join(" "))}o.defaultProps={extraClasses:""}},28046:(e,t,n)=>{n.d(t,{l:()=>p,v:()=>m});var a=n(39479),i=["pdf"],r=["doc","docx","dotx","dot","rtf","docm","odt"],o=["csv","txt"],c=["xls","xlt","xlsx"],s=["jpg","tif","png","bmp","gif","jpeg"],l="video/*",u=["zip","rar"],d=["ppt","pot","pps","pptx"],f=["srt"],p={IMAGES:".".concat(s.join(",.")),VIDEO:l,MIXED_MEDIA:".".concat(s.join(",."),",").concat(l),RESOURCES:".".concat([].concat(r,c,d,i,o,s,u).join(",.")),SUBTITLES:".".concat(f.join(",."))},m={getResourceType:function(e){var t=e.toLowerCase();return a.contains(r,t)?"document":a.contains(c,t)?"excel":a.contains(d,t)?"powerpoint":a.contains(i,t)?"pdf":a.contains(o,t)?"text":a.contains(s,t)?"image":a.contains(u,t)?"archive":a.contains(f,t)?"subtitle":""}}},38502:(e,t,n)=>{n.d(t,{r:()=>d});var a=n(32735),i=n(49985),r=n(36848),o=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function d(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(r.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&i.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},75838:(e,t,n)=>{n.d(t,{w:()=>l});var a=n(32735),i=n(92869),r=n(65858),o=n(36848),c=n(11607);const s={itemsWrapper:"m6mGm",anchorWrapper:"QptZj",default:"_AZa8",selectedItem:"Nuiel",disabled:"WIzWJ",floatIcon:"ARudn",arrowIcon:"tEF5Q",listIcon:"Ql2wi"};function l(e){var t={actionType:r.Vw.Click,entity:r.py.Widget,location:r.LZ.TableOfContents};return a.createElement("div",{className:"".concat(s.itemsWrapper)},e.items.map((function(n,r){return e.localState?a.createElement(c.L,{key:n.id,className:"".concat(s.anchorWrapper," ").concat(e.activeId===n.id?s.selectedItem:""),onClick:function(){var t;i.t.preventScrollTop(),e.setControlledId(n.id),null===(t=e.onItemClick)||void 0===t||t.call(e,n)}},a.createElement("div",{className:"".concat(e.activeId||0!==r?"":s.default," ")},n.name)):a.createElement(o.F,{key:n.id,appLink:e.getAppLink(n),appLinkOptions:{replace:!0},className:"".concat(s.anchorWrapper," ").concat(e.activeId===n.id?s.selectedItem:""),onClick:function(){var t;i.t.preventScrollTop(),e.setControlledId(n.id),null===(t=e.onItemClick)||void 0===t||t.call(e,n)},analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:n.id,name:n.name}),analyticsOptions:t},a.createElement("div",{className:"".concat(e.activeId||0!==r?"":s.default," ")},n.name))})))}},17101:(e,t,n)=>{var a;n.d(t,{n:()=>a}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer",e[e.RequestLivestream=7]="RequestLivestream"}(a||(a={}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),i=n(81886),r=n(67058),o=n(14553),c=n(49267),s=n(49075),l={notFound:r.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);r&&i.Q.Ry.isStatusCodeError(r)&&(r!==a.o.NotFound?r!==a.o.Forbidden?n.badRequest||i.Q.Ry.throw(new o.badRequest):n.forbidden||i.Q.Ry.throw(new o.forbidden.privacy):n.notFound||i.Q.Ry.throw(new o.notFound))}}},7198:(e,t,n)=>{n.d(t,{f:()=>i});var a=n(99940),i={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:a.k.POST,data:Object.assign(Object.assign({},e),t)}}}},25665:(e,t,n)=>{n.d(t,{k:()=>s});var a=n(99940),i=n(97395);function r(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)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e){return i._.urlBuilder("/api/domain/v1/subjects/classifications/following",{id:e})},s={follow:function(e,t,n,i){return{url:"/api/domain/v1/subjects/classifications/following",key:"follow:".concat(e.join(",")),type:a.k.POST,data:e,formatData:function(){return e.map((function(e){return{id:e,followers:{data:[t]}}}))},success:n,error:i,invalidationKeys:[].concat(r(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}},unfollow:function(e,t,n,i){return{url:c(e),key:"unfollow:".concat(e.join(",")),type:a.k.DELETE,formatData:function(){return e.map((function(e){return{id:e,followers:{data:[]}}}))},success:n,error:i,invalidationKeys:[].concat(r(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var a=n(32735),i=n(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){o.forEach((function(e){(0,i.r)(e.statusCode,t,n)}))}),[r(o),t,n])}},94631:(e,t,n)=>{n.d(t,{D:()=>i});var a=n(32735);function i(e){var t=a.useRef();return a.useEffect((function(){t.current=e})),t.current}},65332:(e,t,n)=>{n.d(t,{D:()=>r});var a,i=n(32735),r=function(e){var t=e.setActiveId,n=e.headingElements,r=e.controlledId,o=e.setControlledId,c=i.useRef(0);i.useEffect((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){if(r)return t(r),void(a=window.setTimeout((function(){o("")}),800));if(e.isIntersecting)t(e.target.id),c.current=window.scrollY;else{var i=c.current-window.scrollY>0,s=n.findIndex((function(t){return t.id===e.target.id})),l=n[s-1];i&&(null==l?void 0:l.id)&&t(null==l?void 0:l.id)}}))}),{rootMargin:"-67px 0px -80% 0px"});return n.forEach((function(t){return e.observe(t)})),function(){a&&window.clearTimeout(a),e.disconnect()}}),[t,n.length,r])}},76196:(e,t,n)=>{n.d(t,{P:()=>o});var a=n(32735),i=n(94631);function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var o=function(e,t){var n,o,c=(n=a.useState(!1),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(n,o)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(n,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],l=c[1],u=(0,i.D)(t),d=t;a.useLayoutEffect((function(){if(!s||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var n=t.getBoundingClientRect();window.scrollBy({top:n.top-80,behavior:"smooth"}),s||l(!0)}}}),[e,u,d,s])}},52167:(e,t,n)=>{n.d(t,{m:()=>l});var a=n(53301),i=n.n(a),r=n(28046),o=n(19808),c=n(86613);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var l={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===c.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion}},mapInstanceRegionToTag:function(e){switch(e){case o.b.AU:return"au";case o.b.NZ:return"nz";case o.b.UK:return"uk";case o.b.US:return"us"}},getTags:function(e,t,n,a){var i,r=[t].concat(function(e){if(Array.isArray(e))return s(e)}(i=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(i)||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.")}());r.push(n?"student":"staff"),e.role===c.i.Admin&&r.push("administrator");var o=l.mapInstanceRegionToTag(e.instanceRegion);return o&&r.push(o),r},categorizeFiles:function(e){return e.reduce((function(e,t){var n=t.get("fileInfo");return i().isValidFile(t.get("file"),r.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e}),{imageUrls:[],videoUrls:[]})}}},70986:(e,t,n)=>{n.r(t),n.d(t,{CuratedClassificationView:()=>kt});var a=n(32735),i=n(23481),r=n(20354),o=n(28400),c=n(49985),s=n(65858),l=n(7870),u=n(23232),d=n(83345),f=n(76177),p=n(40424),m=n(35223),v="subjects.curatedClassificationEmptyState",g=i.T.encloseNamespace(v);function y(e){var t,n,r=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===p.GL.Archived;return a.createElement(d.D.Provider,{value:v},a.createElement(u.u,null,a.createElement(u.u.Image,{src:e.imageUrl,altText:g("headingForNP")}),e.isReadonly?a.createElement(a.Fragment,null,a.createElement(u.u.Heading,null,a.createElement(d.x,{namespace:v,phrase:"headingForCurator"})),a.createElement(u.u.Info,null,a.createElement(d.x,{namespace:v,phrase:"info"})),a.createElement(f.u,{title:r?i.T.getPhrase(v,"archivedCtaTooltip"):"",spanHack:!0},a.createElement(u.u.Cta,{text:i.T.getPhrase(v,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:m.vn.Plus,disabled:r}))):a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"headingForNP"}))))}var b=n(10874),h=n(75838),w=n(75795);const T={container:"k1iOO",mobile:"QwoBj"};function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function I(e){var t,n,i=(t=a.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=i[0],o=i[1];return a.createElement("div",{className:"".concat(T.mobile," d-inline-flex gap-1")},r&&a.createElement("div",{className:"bg-white px-3 pt-3 pb-2 border border-dark rounded-1 ps-3"},a.createElement("h2",{className:"h5"},e.title),a.createElement(h.w,{items:e.widgets,activeId:e.activeId,appLink:e.appLink,analyticsData:e.analyticsData,setControlledId:e.setControlledId,getAppLink:e.getAppLink,onItemClick:function(){return o(!1)}})),a.createElement("div",{className:T.container},a.createElement(b.h,{className:"btn btn-outline-dark",svgName:m.vn.TableOfContents,onClick:function(){var t;o(!r),t={actionType:r?s.Vw.Hide:s.Vw.Open,entity:s.py.TableOfContents,location:s.LZ.Dashboard},c.k.logUserAction(e.analyticsData,t)}})))}function E(e){return a.createElement("aside",{className:"col-3"},a.createElement("div",{className:"".concat(T.container," ps-3")},a.createElement("h2",{className:"h5"},e.title),a.createElement(h.w,{items:e.widgets,activeId:e.activeId,appLink:e.appLink,analyticsData:e.analyticsData,setControlledId:e.setControlledId,getAppLink:e.getAppLink})))}function k(e){function t(e){var t=w.O.getCurrentRoute().appLink,n=t.params?Object.assign({},t.params):{};return n.tocId=e.id,Object.assign(Object.assign({},t),{params:n})}return a.createElement(a.Fragment,null,e.isSmallScreen?a.createElement(I,Object.assign({},e,{getAppLink:t})):a.createElement(E,Object.assign({},e,{getAppLink:t})))}var C="subjects.teacherOnlyEmptyState",L=i.T.encloseNamespace(C);function A(e){var t;return a.createElement(d.D.Provider,{value:C},a.createElement(u.u,null,a.createElement(u.u.Image,{src:e.imageUrl,altText:L("heading")}),a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"heading"})),a.createElement(u.u.Info,null,a.createElement(d.x,{phrase:"info"})),a.createElement(u.u.Cta,{text:L("cta"),appLink:null===(t=e.ctaAppLink)||void 0===t?void 0:t.call(e),className:"btn btn-dark"})))}var O=n(75896),x=n(42308),j=n(80889),P=n(77843),N=n(44522),F=n(13231),D=n(88513),R=n(32624),U=n(86764),B=n(78479),V=n(3747),_=n(65332),G=n(76196),W=n(42735),M="subjects.classificationComingSoon",q=i.T.encloseNamespace(M);function H(e){var t,n,i=!!(null===(n=null===(t=e.data.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);return a.createElement(d.D.Provider,{value:M},a.createElement(u.u,{className:"pt-0"},a.createElement(u.u.Image,{src:e.imageUrl,altText:q("comingSoon")}),a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"comingSoon"})),a.createElement(u.u.Info,null,a.createElement(d.x,{phrase:"info"})),e.canFollowSubjects&&a.createElement(W.K,{svgName:i?m.vn.BellFilled:m.vn.Bell,onClick:function(){var t;null===(t=e.onToggleFollow)||void 0===t||t.call(e)},showSpinner:e.showFollowButtonSpinner,className:"btn follow-btn me-2 ".concat(i?"btn-outline-dark":"btn-dark")},a.createElement(d.x,{phrase:i?"following":"follow"}))))}var Z=n(49935),Q=n(79967),z=n(69454),$=n(87114),J=n(57900),Y=n(81886),K=n(2948),X=n(1048),ee=n(69395),te=n(11607),ne=n(38143),ae=n(5859);function ie(e,t){if(e){if("string"==typeof e)return re(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var oe="subjects.audienceFilter";function ce(e){var t,n,i=e.audiences,r=e.activeAudiences,o=e.appLink,c=e.disabled||!o,s=(t=(0,K.D)(ne.g.AUDIENCE_FILTER,void 0,{storage:J.Z1.SessionStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(t,n)||ie(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function l(e,t){var n;if(!c){var a,i=t?[].concat(function(e){return function(e){if(Array.isArray(e))return re(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ie(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.")}()}(null!==(n=null==r?void 0:r.map((function(e){return e.name})))&&void 0!==n?n:[]),[e.name]):r.map((function(e){return e.name})).filter((function(t){return t!==e.name}));Y.Q.C$.trigger(Object.assign(Object.assign({},o),{params:(a=X.t.omit(o.params,["a"]),i.length?Object.assign({},a,{a:i}):a)}),{replace:!0})}}return a.useEffect((function(){e.disablePersist||s(r)}),[r]),i&&i.length?a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},i.map((function(e){return a.createElement(ee.e,{key:e.masterId,audience:e,highlight:!c&&!!(null==r?void 0:r.find((function(t){return t.masterId===e.masterId}))),setAudience:l,isDisabled:c})})),!c&&!!r&&!!Object.keys(r).length&&a.createElement(te.L,{className:"info-link d-inline-block ms-1",onClick:function(){if(!c){var e=X.t.omit(o.params,["a"]);Y.Q.C$.trigger(Object.assign(Object.assign({},o),{params:e}),{replace:!0})}}},a.createElement(d.x,{namespace:oe,phrase:"clear"}))):a.createElement(a.Fragment,null)}var se=ae.u.getPartialLoadingItems({numItems:6}),le=function(){return a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},se.map((function(e,t){var n=e.width;return a.createElement("span",{key:t,className:"rounded-pill partial-loading-background me-1",dangerouslySetInnerHTML:{__html:"&nbsp"},style:{width:n}})})))};function ue(e){return a.createElement(ce,{audiences:e.audiences,activeAudiences:e.activeAudiences,disabled:e.isReadonly,appLink:e.appLink,disablePersist:e.disablePersist})}var de=n(38502),fe=n(10253),pe=n(30064);const me={curatedTopicTab:"CmVlO",tabTransition:"rX31t"};var ve="shared.classificationDashboard";function ge(e,t,n,a){var r,o,c,l,u,d,f,p,v,g,y,b,h,w,T,S,I,E=t.lg||t.xl||t.xxl||t.xs;return $.i.isTopLevelTopic(e.classification)?[{name:E?i.T.getPhrase(ve,"newReleases"):"",appLink:e.isReadonly?null:null===(o=null===(r=e.appLinks)||void 0===r?void 0:r.classification)||void 0===o?void 0:o.call(r,e.classification),active:"new-releases"===n,svgName:m.vn.Sparkle,analyticsData:{id:"new-releases",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:i.T.getPhrase(ve,"newReleases"),url:Y.Q.C$.getHref(null===(l=null===(c=e.appLinks)||void 0===c?void 0:c.classification)||void 0===l?void 0:l.call(c,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?me.tabTransition:"")},{name:E?i.T.getPhrase(ve,"allTopics"):"",appLink:e.isReadonly?null:null===(d=null===(u=e.appLinks)||void 0===u?void 0:u.classificationDirectory)||void 0===d?void 0:d.call(u,e.classification),active:"all-topics"===n,svgName:m.vn.Grid,analyticsData:{id:"all-topics",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:i.T.getPhrase(ve,"allTopics"),url:Y.Q.C$.getHref(null===(p=null===(f=e.appLinks)||void 0===f?void 0:f.classificationDirectory)||void 0===p?void 0:p.call(f,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?me.tabTransition:"")}]:[{name:E?i.T.getPhrase(ve,"topic"):"",appLink:e.isReadonly?null:null===(g=null===(v=e.appLinks)||void 0===v?void 0:v.classification)||void 0===g?void 0:g.call(v,e.classification),active:"curated-topic"===n,svgName:m.vn.Rectangles,analyticsData:{id:"curated-topic",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:i.T.getPhrase(ve,"topic"),url:Y.Q.C$.getHref(null===(b=null===(y=e.appLinks)||void 0===y?void 0:y.classification)||void 0===b?void 0:b.call(y,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:(I=a?me.tabTransition:"",t.xs?I+" w-100":E?" ".concat(me.curatedTopicTab):I)},{name:E?i.T.getPhrase(ve,"videoList"):"",appLink:e.isReadonly?null:null===(w=null===(h=e.appLinks)||void 0===h?void 0:h.classificationVideos)||void 0===w?void 0:w.call(h,e.classification),active:"video-list"===n,svgName:m.vn.WidgetSeries,analyticsData:{id:"video-list",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:i.T.getPhrase(ve,"videoList"),url:Y.Q.C$.getHref(null===(S=null===(T=e.appLinks)||void 0===T?void 0:T.classificationVideos)||void 0===S?void 0:S.call(T,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:"".concat(t.xs?"w-100":""," ").concat(a?me.tabTransition:"")}]}function ye(e){var t=(0,Q.k)(),n=(0,pe.d)(e.activeTab),i=n.tab,r=n.isHighlighting,o=(0,fe.c)("topics-directory-tab").setProductTipRef;return a.createElement(de.r,{borderRadius:"sm",containerRef:function(e){return o(e)},className:t.xs?"w-100":"",listClassName:"d-flex flex-nowrap",tabs:ge(e,t,i,r)})}function be(e){var t,n,i,r,o,c,s,l=(0,Q.k)(),u=(r=e.audiences,o=e.activeAudiences,c=e.isEmpty,!!e.isComingSoon||!(!c||(null==o?void 0:o.length))||!z.T.shouldShowAudiences(r));function d(){return!(!e.classification||!e.dashboard)&&!P.S.isSystemGeneratedDashboard(e.dashboard.widgets)&&!!e.canViewTopicTabs&&($.i.isTopLevelTopic(e.classification)?e.hasTopicDirectoryDashboard:!!e.hasTopicVideosDashboard)}return a.createElement("div",{className:(s="d-flex flex-column py-3 mb-3",e.isComingSoon||(s+=" border-bottom"),!d()&&!u||l.xs?s+" row-gap-3":s)},a.createElement("div",{className:function(){if(u)return l.xs?"d-flex flex-column justify-content-between row-gap-3":"d-flex align-items-center justify-content-between";var e="";return e+="d-flex align-items-center justify-content-between mb-1",l.xs&&(e+=" row-gap-3 mb-0"),e}()},a.createElement(Z.Oo,{breadcrumbs:null===(t=e.getBreadcrumbs)||void 0===t?void 0:t.call(e)}),d()&&u&&a.createElement(ye,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})),a.createElement("div",{className:function(){var e="d-flex align-items-end justify-content-between";return l.xs&&(e+=" row-gap-3 flex-wrap"),e}()},!u&&a.createElement(ue,{audiences:e.audiences,activeAudiences:e.activeAudiences,appLink:null===(i=(n=e.appLinks).audience)||void 0===i?void 0:i.call(n),isReadonly:e.isReadonly,disablePersist:!e.isViewingCurrentPresentation}),d()&&!u&&a.createElement(ye,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})))}function he(e){return he="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},he(e)}function we(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Te(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Se="shared.classificationDashboard";function Ie(e){return e.widgetId===x.z.Blurb&&e.templateId===B.f.Heading}function Ee(e){var t,n=function(e,t){var n,i,o,c,s=a.useMemo((function(){return e?{isSystemGeneratedDashboard:P.S.isSystemGeneratedDashboard(e.widgets),systemGeneratedVideoWidget:e.widgets.find((function(e){return e.widgetId===x.z.ClassificationPinnedVideos}))}:{isSystemGeneratedDashboard:!1,systemGeneratedVideoWidget:null}}),[null==e?void 0:e.id]),l=s.isSystemGeneratedDashboard,u=s.systemGeneratedVideoWidget,d=r.a.useBasicFetch(!!u&&j._.dashboardWidgetContent(null==u?void 0:u.id,P.S.getWidgetParams(u.widgetId,u.templateId,P.S.getDashboardTargetType(e),null==t?void 0:t.map((function(e){return e.masterId}))),null==u?void 0:u.templateId));return l?{widgets:null!==(i=null===(n=null==e?void 0:e.widgets)||void 0===n?void 0:n.filter((function(e){return e.widgetId!==x.z.ClassificationPinnedVideos})))&&void 0!==i?i:[],videoList:null!==(c=null===(o=d.data)||void 0===o?void 0:o.content)&&void 0!==c?c:[],videoListWidgetId:null==u?void 0:u.id}:{widgets:O.m.sortBy(null==e?void 0:e.widgets,"index")}}(e.dashboard,e.activeAudiences),o=n.widgets,c=n.videoList,l=n.videoListWidgetId,u=(0,V.a)(U.r.LGDown),d=a.useRef(new Set),f=a.useMemo((function(){return o.reduce((function(e,t){return e[t.id]=!1,e}),{})}),[null==o?void 0:o.length]),m=we(a.useState(f),2),v=m[0],g=m[1],b=we(a.useState(window.location.hash.slice(1)||""),2),h=b[0],w=b[1],T=we(a.useState(""),2),S=T[0],I=T[1],E=Array.from(d.current);function C(t,n,a){var i,r=P.S.getWidgetParams(n,a,P.S.getDashboardTargetType(e.dashboard),null===(i=e.activeAudiences)||void 0===i?void 0:i.map((function(e){return e.masterId})));return e.getWidgetContentRequest(t,r,a)}(0,G.P)(E,e.tableOfContentsId),(0,_.D)({setActiveId:I,headingElements:E,controlledId:h,setControlledId:w});var L=!e.isComingSoon&&!e.isTeacherOnly&&(!e.dashboard||e.dashboard.status===p.GL.Archived&&!e.isReadonly||e.dashboard.status===p.GL.Draft&&!e.isPreviewing||!(null==o?void 0:o.length)||(!c||!c.length)&&Object.values(v).every((function(e){return!!e})));a.useEffect((function(){L&&g(f)}),[null==o?void 0:o.length]);var B=a.useCallback((function(e,t){if(v[e]!==t){for(var n,a=(Object.assign(Object.assign({},v),(u={},f=t,(d=function(e){var t=function(e,t){if("object"!=he(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=he(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==he(t)?t:t+""}(d=e))in u?Object.defineProperty(u,d,{value:f,enumerable:!0,configurable:!0,writable:!0}):u[d]=f,u))),i=0;i<o.length;){var r=o[i];if(Ie(r)){for(var c=!0,s=i+1;c&&s<o.length;){var l=o[s];if(Ie(l))break;a[l.id]||(n=l).widgetId===x.z.CuratedClassifications||n.widgetId===x.z.Classifications||(c=!1),s++}i=s,a[r.id]=c}else i++}g(a)}var u,d,f}),[v,o]);function W(e){return Ie(e)&&v[e.id]}function M(e,t){if(e.widgetId===x.z.ClassificationDashboardExternalMedia){var n=o[t-1];return v[n.id]?e.name.replace("Other videos","Videos"):e.name}return e.name}var q,Z=o.filter((function(e){var t;return!W(e)&&!!(null===(t=e.metadata)||void 0===t?void 0:t.showInTableOfContents)})),Q=Z.length>=2,z=Q&&!u;return a.createElement("div",{className:"bg-white px-4 ".concat((q=P.S.getDashboardTargetType(e.dashboard),e.moviesAndTv||q===p.ku.ClassificationVideos?"":"dashboard-spacing-lg"))},a.createElement(N.p,{heading:e.classification.name,banner:e.classification.banner,imageCdnUrl:e.imageCdnUrl,actions:null===(t=e.getBannerActions)||void 0===t?void 0:t.call(e),actionsDropdownClassName:"btn btn-outline-dark",specialEvent:e.specialEvent,calendarTheme:{background:"bg-light-blue",border:"border-light-blue"},showComingSoon:e.isComingSoon}),a.createElement(be,{dashboard:e.dashboard,classification:e.classification,presentation:e.presentation,appLinks:e.appLinks,activeTab:e.tab,audiences:e.audiences,activeAudiences:e.activeAudiences,getBreadcrumbs:e.getBreadcrumbs,hasTopicDirectoryDashboard:e.hasTopicDirectoryDashboard,hasTopicVideosDashboard:e.hasTopicVideosDashboard,canViewTopicTabs:e.canViewTopicTabs,isComingSoon:e.isComingSoon,isEmpty:L,isViewingCurrentPresentation:e.isViewCurrentPresentation,isReadonly:e.isReadonly}),e.isComingSoon&&a.createElement(H,{imageUrl:e.comingSoonImageUrl,data:e.classification,canFollowSubjects:e.canFollowSubjects,showFollowButtonSpinner:e.showFollowButtonSpinner,onToggleFollow:function(){return e.onToggleFollow(e.classification,s.LZ.ClassificationComingSoon)}}),!e.isComingSoon&&a.createElement("div",{className:"".concat(z?"row no-wrap":"")},a.createElement("div",{className:z?"col-9":""},o.map((function(t,n){return W(t)?a.createElement(a.Fragment,{key:t.id}):a.createElement(R.L,{headingElementRef:d,key:t.id,id:t.id,name:M(t,n),description:t.description,templateId:t.templateId,widgetTypeId:t.widgetId,audiences:e.audiences,getContentRequest:C,setIsEmpty:B,setFavourite:e.setFavourite,canFavourite:e.canFavourite,appLinks:e.appLinks,yearGroups:e.yearGroups,presentation:e.presentation,analyticsData:e.analyticsData,isScrollToTargetWidget:e.scrollToWidgetId===t.id,imageCdnUrl:e.imageCdnUrl,onSubmitFeedback:e.onSubmitFeedback,metadata:t.metadata,isBot:e.isBot,hasTableOfContents:z,lazyLoad:e.lazyLoad,dashboardTarget:P.S.getDashboardTargetType(e.dashboard),widgetIndex:n,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,contentType:e.contentType,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,onToggleFollowClassification:e.onToggleFollow,isPlugin:e.isPlugin})}))),Q&&a.createElement(k,{widgets:Z,title:e.classification.name,activeId:S,clickable:!e.isReadonly,analyticsData:e.analyticsData,setControlledId:w,isSmallScreen:u}),!!(null==c?void 0:c.length)&&a.createElement(a.Fragment,null,a.createElement(D.B,{name:i.T.getPhrase(Se,"videos"),description:""}),a.createElement(F.E4,{videos:c,yearGroups:e.yearGroups,getVideoAppLink:function(t,n){return e.appLinks.videoType(t,Object.assign(Object.assign({},n),{contextId:l}))},getSubTextAppLink:e.appLinks.subText,hasPermissions:e.hasPermissions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,getPreviewQuestionsAppLink:e.appLinks.previewQuestions,isPlugin:e.isPlugin,getClassroomGuideAppLink:e.appLinks.classroomGuide,getInteractiveGuidanceAppLink:e.appLinks.interactiveGuidance,getResourceGuidanceAppLink:e.appLinks.resourceGuidance}))),L&&a.createElement(y,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.appLinks.widgetWizard}),e.isTeacherOnly&&a.createElement(A,{imageUrl:e.emptyImageUrl,ctaAppLink:function(){return e.appLinks.allTopics(e.classification.presentationId)}}))}function ke(){return a.createElement("div",{className:"bg-white px-4"},a.createElement(N.v,null),a.createElement("div",{className:"d-flex flex-column row-gap-3 py-3 mb-3 border-bottom"},a.createElement(Z.b2,null),a.createElement(le,null)))}Ee.defaultProps={appLinks:{}};var Ce=n(14875),Le=n(51365),Ae=n(2284),Oe=n(17101),xe=n(4594),je=n(16714),Pe=n(12754),Ne=n(89454),Fe=n(21750),De=n(39151),Re=n(1666),Ue=n(7198),Be=n(25665),Ve=n(31949),_e=n(69883),Ge=n(63719),We=n(56520),Me=n(91286),qe=n(22902),He=n(79612),Ze=n(52167),Qe=n(76753),ze=n(99742),$e=n(14070),Je=n(97291),Ye=n(51855),Ke=n(10671),Xe=n(7179),et=n(27638),tt=n(86698),nt=n(33192),at=n(64364);function it(e){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},it(e)}function rt(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,ot(a.key),a)}}function ot(e){var t=function(e,t){if("object"!=it(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=it(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==it(t)?t:t+""}function ct(e,t,n){return t=lt(t),function(e,t){if(t&&("object"==it(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,st()?Reflect.construct(t,n||[],lt(e).constructor):t.apply(e,n))}function st(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(st=function(){return!!e})()}function lt(e){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},lt(e)}function ut(e,t){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ut(e,t)}var dt="subjects.topicNotFoundError",ft=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),ct(this,t,["Topic doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ut(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"TopicNotFoundError"}},{key:"heading",get:function(){return i.T.getPhrase(dt,"heading")}},{key:"description",get:function(){return i.T.getPhrase(dt,"description")}},{key:"cta",get:function(){return{text:i.T.getPhrase(dt,"cta"),appLink:{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION_ALL}}}}])&&rt(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(at.H),pt=n(37802),mt=n(23737),vt=n(183),gt=n(22490),yt=n(82431),bt=["preview","dashboardId","skipPrompt"];i.T.encloseNamespace("subjects.classification");const ht={followButton:"HlRXj"};function wt(e){return wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wt(e)}function Tt(){Tt=function(){return t};var e,t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,a){var r=t&&t.prototype instanceof y?t:y,o=Object.create(r.prototype),c=new x(a||[]);return i(o,"_invoke",{value:C(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var f="suspendedStart",p="suspendedYield",m="executing",v="completed",g={};function y(){}function b(){}function h(){}var w={};l(w,o,(function(){return this}));var T=Object.getPrototypeOf,S=T&&T(T(j([])));S&&S!==n&&a.call(S,o)&&(w=S);var I=h.prototype=y.prototype=Object.create(w);function E(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(i,r,o,c){var s=d(e[i],e,r);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==wt(u)&&a.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,c)}))}c(s.arg)}var r;i(this,"_invoke",{value:function(e,a){function i(){return new t((function(t,i){n(e,a,t,i)}))}return r=r?r.then(i,i):i()}})}function C(t,n,a){var i=f;return function(r,o){if(i===m)throw Error("Generator is already running");if(i===v){if("throw"===r)throw o;return{value:e,done:!0}}for(a.method=r,a.arg=o;;){var c=a.delegate;if(c){var s=L(c,a);if(s){if(s===g)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(i===f)throw i=v,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);i=m;var l=d(t,n,a);if("normal"===l.type){if(i=a.done?v:p,l.arg===g)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(i=v,a.method="throw",a.arg=l.arg)}}}function L(t,n){var a=n.method,i=t.iterator[a];if(i===e)return n.delegate=null,"throw"===a&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==a&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+a+"' method")),g;var r=d(i,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,g;var o=r.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function j(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,r=function n(){for(;++i<t.length;)if(a.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return r.next=r}}throw new TypeError(wt(t)+" is not iterable")}return b.prototype=h,i(I,"constructor",{value:h,configurable:!0}),i(h,"constructor",{value:b,configurable:!0}),b.displayName=l(h,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,l(e,s,"GeneratorFunction")),e.prototype=Object.create(I),e},t.awrap=function(e){return{__await:e}},E(k.prototype),l(k.prototype,c,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,a,i,r){void 0===r&&(r=Promise);var o=new k(u(e,n,a,i),r);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},E(I),l(I,s,"Generator"),l(I,o,(function(){return this})),l(I,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var a in t)n.push(a);return n.reverse(),function e(){for(;n.length;){var a=n.pop();if(a in t)return e.value=a,e.done=!1,e}return e.done=!0,e}},t.values=j,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(O),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(a,i){return c.type="throw",c.arg=t,n.next=a,i&&(n.method="next",n.arg=e),!!i}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],c=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return i(o.catchLoc,!0);if(this.prev<o.finallyLoc)return i(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return i(o.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return i(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var o=r?r.completion:{};return o.type=e,o.arg=t,r?(this.method="next",this.next=r.finallyLoc,g):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var i=a.arg;O(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,n,a){return this.delegate={iterator:j(t),resultName:n,nextLoc:a},"next"===this.method&&(this.arg=e),g}},t}function St(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var It=function(e,t,n,a){return new(n||(n=Promise))((function(i,r){function o(e){try{s(a.next(e))}catch(e){r(e)}}function c(e){try{s(a.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((a=a.apply(e,t||[])).next())}))};kt.defaultProps={queryParams:{}};var Et=i.T.encloseNamespace("subjects.classification");function kt(e){var t,n,i,u,d,f,v,g,y,b,h,w,T,S,I,E=(S=a.useState(!1),I=2,function(e){if(Array.isArray(e))return e}(S)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,c=[],s=!0,l=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=r.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,i=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return c}}(S,I)||function(e,t){if(e){if("string"==typeof e)return St(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?St(e,t):void 0}}(S,I)||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.")}()),k=E[0],C=E[1],L=(0,_e.Z)(),A=r.a.useGetFetchAsync(),O=(0,qe.T)(),x=O.hasPermissions,N=O.hasLocalPermissions,F=(0,Ye.G)().isPlugin,D=r.a.useBasicFetch(De.L.config()),R=r.a.useBasicFetch(Ve.N.currentUser()),B=(0,We.R0)(),_=B.openInCurationStudioLabel,G=B.isUserCurator,W=B.getOpenInCurationStudioLink,M=r.a.useBasicFetch(x(je.C.CanSubmitFeedback)&&R.data&&Re.h.customer(R.data.customerId)),q=r.a.useBasicFetch(Fe.x.classification(e.id,null===(t=R.data)||void 0===t?void 0:t.id)),H=r.a.useBasicFetch(q.data&&Fe.x.presentationById(q.data.presentationId)),Z=r.a.useBasicFetch(q.data&&Ne.O.audiencesByPresentationId(q.data.presentationId)),Q=r.a.useBasicFetch(q.data&&l.N.nextTopicSpecialEvent(e.id,q.data.presentationId)),J=(0,tt.y)(),Y=J.activePresentation,K=J.availablePresentations,ee=J.canAccessPresentation,te=r.a.useBasicFetch((null===(n=R.data)||void 0===n?void 0:n.isAuthenticated)&&Re.h.yearGroups(R.data.customerId)),ne=r.a.useBasicFetch(Fe.x.path(e.id)),ae=function(e,t,n){var a=(0,pt.r)(null).hasTopicDirectories,i=(0,mt.y)({classificationId:e,queryParams:t,targetType:p.ku.Classification}),r=i.dashboard,o=i.isPreviewing,c=i.isTeacherOnly,s=(0,mt.y)({classificationId:e,queryParams:t,targetType:p.ku.ClassificationDirectory}).dashboard,l=(0,mt.y)({classificationId:e,queryParams:t,targetType:p.ku.ClassificationVideos}).dashboard;return{dashboard:function(){switch(n){case p.ku.Classification:return r;case p.ku.ClassificationDirectory:return s;case p.ku.ClassificationVideos:return l}}(),canViewTopicTabs:a,hasTopicDirectoryDashboard:!!s.data,hasTopicVideosDashboard:!!l.data,isTeacherOnly:c,isPreviewing:o}}(e.id,e.queryParams,e.targetType),ie=ae.dashboard,re=ae.hasTopicDirectoryDashboard,oe=ae.hasTopicVideosDashboard,ce=ae.canViewTopicTabs,se=ae.isPreviewing,le=ae.isTeacherOnly,ue=r.a.useBasicFetch(Fe.x.regionAlternatives(e.id));(0,He.M)(Qe.CG.getClassificationMetadata({content:q.data,phraseContext:{phraseHandler:Et,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:nt.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:nt.f.allowIndexing(),hrefLang:nt.f.getContentHrefLang(ue.data,(function(e,t){return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION,args:[e,o.m.slugify(t)]}}))})),(0,Me.v)(q,{notFound:ft}),(0,Xe.P)({id:e.id,app:"topics"});var de=(null==Y?void 0:Y.id)===(null===(i=H.data)||void 0===i?void 0:i.id),fe=(0,V.a)(U.r.MDDown),pe=(0,V.a)(U.r.SMDown),me=(0,et.u)(s.LZ.ExpandableVideoThumbnail),ve=me.setFavourite,ge=me.canFavourite,ye=(0,Ke._)({location:Ke.i.VideoItem}),be=x(je.C.FollowSubjects),he=(null===(u=q.data)||void 0===u?void 0:u.status)===Ae.W.ComingSoon&&!se,we=z.T.getActiveAudiencesFromParams(Z.data,e.queryParams),Te=null!==(d=null==we?void 0:we.map((function(e){return e.masterId})))&&void 0!==d?d:[],Se=P.S.getDashboardTargetType(ie.data);function Ie(e,t){var n,a,i;if(be&&q){var r=e.id.toString()===(null===(a=null===(n=q.data)||void 0===n?void 0:n.id)||void 0===a?void 0:a.toString());r&&C(!0);var o=$.i.isFollowing(e),l=o?Be.k.unfollow:Be.k.follow;A(l([e.id],null===(i=R.data)||void 0===i?void 0:i.id)).then((function(){c.k.logUserAction(rt,{location:t,actionType:s.Vw.Follow,workflowPhase:s.eu.Complete,descriptor:o?s.DL.Off:s.DL.On,entity:s.py.Classification}),r||L.success(Et(o?"unfollowed":"followed",{name:e.name}))})).finally((function(){r&&C(!1)}))}}var at=function(e,t,n){return{audience:function(){switch(t){case p.ku.ClassificationDirectory:return null;case p.ku.ClassificationVideos:return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION_VIDEOS,args:[e.id,o.m.slugify(e.name)],params:n};default:return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION,args:[e.id,o.m.slugify(e.name)],params:n}}},classification:function(t){var a=t||e;return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION,args:[a.id,o.m.slugify(a.name)],params:X.t.omit(n,bt)}},classificationDirectory:function(t){var a=t||e;return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION_TOPICS,args:[a.id,o.m.slugify(a.name)],params:X.t.omit(n,bt)}},classificationVideos:function(t){var a=t||e;return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION_VIDEOS,args:[a.id,o.m.slugify(a.name)],params:X.t.omit(n,bt)}},videoType:function(e,t){return gt.W.getAppLink(e,Object.assign(Object.assign({},t),{context:vt.Q.Widget,moviesAndTv:n.mtv}))},allTopics:function(e){return{application:Je.O.SUBJECT,action:$e.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:e}}},series:function(t){return yt.j.getSeriesAppLink(t,{classificationId:e.id,mtv:!!n.mtv||void 0})},subText:function(t){return yt.j.getSeriesAppLink(t.series,{classificationId:e.id,mtv:!!n.mtv||void 0})},playlist:function(t){return{application:Je.O.PLAYLISTS,action:$e.e.Playlists.PLAYLIST,args:[t.id,o.m.slugify(t.name)],params:{classificationId:e.id,mtv:!!n.mtv||void 0}}},resource:function(e,t,n){return n?{application:Je.O.VIDEOS,action:$e.e.Videos.PREVIEW_PDF,args:[e.id],params:{videoId:t}}:{application:Je.O.SIGN_UP,action:$e.e.SignUp.SIGN_UP}},classroomGuide:gt.W.getClassroomGuideAppLink,interactiveGuidance:gt.W.getInteractiveGuidanceAppLink,resourceGuidance:gt.W.getResourceGuidanceAppLink}}(q.data,Se,e.queryParams),it=(0,Ge.h)({name:null===(f=q.data)||void 0===f?void 0:f.name}),rt={presentationId:null===(v=H.data)||void 0===v?void 0:v.id,presentationName:null===(g=H.data)||void 0===g?void 0:g.name,currentClassificationId:null===(y=q.data)||void 0===y?void 0:y.id,currentClassificationName:null===(b=q.data)||void 0===b?void 0:b.name,followingCurrentClassification:!!(null===(T=null===(w=null===(h=q.data)||void 0===h?void 0:h.followers)||void 0===w?void 0:w.data)||void 0===T?void 0:T.length),activeAudienceNames:(null==we?void 0:we.length)?we.map((function(e){return e.name})):null,activeAudienceIds:Te.length?Te:null};return D.data&&ie.hasCompleted&&q.data&&H.data&&ne.data&&K&&Z.data&&Q.hasCompleted?a.createElement(Le.M.Provider,{value:ye},a.createElement("div",{className:"position-relative"},!(!se||!ie.data)&&a.createElement(Ce.a,{status:ie.data.status,type:"topic"}),a.createElement(Ee,{dashboard:ie.data,classification:q.data,getWidgetContentRequest:j._.dashboardWidgetContent,getBreadcrumbs:function(){var e;if(ee(null===(e=H.data)||void 0===e?void 0:e.id))return function(){return it}}(),hasPermissions:x,hasLocalPermissions:N,presentation:H.data,onToggleFollow:Ie,getBannerActions:function(){var e,t,n,a,i,r=!!(null===(n=null===(t=null===(e=q.data)||void 0===e?void 0:e.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);if(!be)return[];var o=[{label:pe?"":Et(r?"following":"follow"),onClick:function(){return Ie(q.data,s.LZ.Banner)},svgName:r?m.vn.BellFilled:m.vn.Bell,className:"btn follow-btn me-2 ".concat(r?"btn-outline-dark":"btn-dark"," ").concat(ht.followButton),button:!0,tooltip:r||fe?void 0:Et("followBtnTooltip"),showSpinner:k}];return G&&o.push({label:_,href:W(xe.E.Subject,null===(a=q.data)||void 0===a?void 0:a.id,null===(i=H.data)||void 0===i?void 0:i.id),openInNewTab:!0}),o},audiences:e.queryParams.mtv?null:Z.data,activeAudiences:we,analyticsData:rt,imageCdnUrl:D.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:ze.W.Fallbacks.RESOURCE_THUMBNAIL,emptyImageUrl:le?ze.W.EmptyStates.Topics.TEACHER_ONLY:ze.W.EmptyStates.Topics.TOPIC,isComingSoon:he,showFollowButtonSpinner:k,comingSoonImageUrl:ze.W.EmptyStates.Topics.COMING_SOON,appLinks:at,isPreviewing:se,setFavourite:ve,canFavourite:ge,isViewCurrentPresentation:de,canFollowSubjects:be,onSubmitFeedback:x(je.C.CanSubmitFeedback)&&function(e){return It(this,void 0,void 0,Tt().mark((function t(){var n;return Tt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,A(Ue.f.submitFeedback({type:Oe.n.Footer,user:Ze.m.getUserInfo(R.data,M.data),tags:Ze.m.getTags(R.data,Pe.x.Primary,x(je.C.StudentExperience),["topics","in product feedback"])},{reaction:e.type,feedback:e.content,location:"Topic Footer",presentationName:H.data.description,presentationId:H.data.id,dashboardName:ie.data.name,dashboardId:ie.data.id,classificationName:q.data.name,classificationId:q.data.id}));case 2:return n=t.sent,c.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:H.data.id,classificationId:q.data.id,dashboardId:ie.data.id},{actionType:s.Vw.Submit,location:s.LZ.ClassificationFooter,entity:s.py.Feedback,workflowPhase:s.eu.Complete}),t.abrupt("return",n);case 5:case"end":return t.stop()}}),t)})))},tableOfContentsId:e.queryParams.tocId,yearGroups:te.data,lazyLoad:!nt.f.isBot(),moviesAndTv:e.queryParams.mtv,isTeacherOnly:le,specialEvent:Q.data,isBot:nt.f.isBot(),canViewTopicTabs:ce,hasTopicDirectoryDashboard:re,hasTopicVideosDashboard:oe,tab:$.i.getActiveTopicTab(q.data,e.targetType),isPlugin:F}))):a.createElement(ke,null)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
3
+ //# sourceMappingURL=3532-2fed0eb7a4-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/3532-2fed0eb7a4-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/calendar/flight-request/CalendarRequests.ts","file:///app/packages/libs/shared/src/apps/subjects/components/audience-item/audience-item.scss","file:///app/packages/libs/shared/src/apps/subjects/components/audience-item/AudienceItem.tsx","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/table-of-contents-list/table-of-contents-list.scss","file:///app/packages/libs/shared/src/components/table-of-contents-list/TableOfContentsList.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/flight-requests/FollowRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/usePrevious.ts","file:///app/packages/libs/shared/src/hooks/useTableOfContentsActiveHeading.tsx","file:///app/packages/libs/shared/src/hooks/useTableOfContentsScroll.tsx","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/empty-state/CuratedClassificationEmptyState.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/table-of-contents/table-of-contents.scss","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/table-of-contents/TableOfContents.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/teacher-only/TeacherOnlyEmptyState.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/classification-coming-soon/ClassificationComingSoon.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/audience-filter/AudienceFilter.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/audiences/ClassificationDashboardAudiences.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/classification-tabs/classification-tabs.scss","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/classification-tabs/ClassificationTabs.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/classification-dashboard-nav/ClassificationDashboardNav.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/ClassificationDashboard.tsx","file:///app/packages/libs/shared/src/apps/subjects/hooks/useGetTopicsWidgets.ts","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/partial-loading/PartialClassificationDashboard.tsx","file:///app/packages/projects/lite/src/apps/subjects/errors/TopicNotFoundError.ts","file:///app/packages/projects/lite/src/apps/subjects/views/classification/ClassificationViewUtils.ts","file:///app/packages/projects/lite/src/apps/subjects/views/classification/curated-classification-view.scss","file:///app/packages/projects/lite/src/apps/subjects/views/classification/CuratedClassificationView.tsx","file:///app/packages/projects/lite/src/apps/subjects/hooks/useFetchClassificationDashboard.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { CalendarEvent, CalendarEventContentType } from 'libs/shared/interfaces';\n\nexport const CalendarRequests = {\n calendarEvents(\n from: string,\n to: string,\n presentationId: string\n ): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/discover/special-events/content', { from, to, presentationId }),\n publicUrl: UrlHelper.urlBuilder(`/api/discover/special-events/content`, { from, to, presentationId }),\n key: `presentation:${presentationId}:events:from:${from}:to${to}`\n };\n },\n\n nextTopicSpecialEvent(\n classificationId: string,\n presentationId: string\n ): Flight.PublicRequest {\n const params = {\n presentationId,\n limit: 1,\n from: DateHelper.format(new Date(), 'YYYY-MM-DD'),\n objectType: CalendarEventContentType.Classification\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/discover/special-events/object/${classificationId}/next-events`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/discover/special-events/object/${classificationId}/next-events`, params),\n key: `presentation:${presentationId}:events:classification:${classificationId}`,\n formatData: (events: CalendarEvent[]) => ArrayHelper.first(events)\n };\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"disabled\":\"pERi4\",\"disabledHighlighted\":\"AxyWm\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport styles from './audience-item.scss';\n\nfunction lowerCaseToTitleCase(str: string): string {\n return str.split(' ').map((s: string) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ');\n}\n\nfunction getColourClass(highlight: boolean, isDisabled: boolean): string {\n if (highlight) return isDisabled ? `${styles.disabledHighlighted} text-light` : 'bg-gray-900 text-light';\n if (isDisabled) return `${styles.disabled} text-secondary`;\n return 'bg-light';\n}\n\ninterface AudienceItemProps {\n audience: PresentationAudience;\n highlight: boolean;\n setAudience?: (audience: PresentationAudience, highlight: boolean) => void;\n isDisabled?: boolean;\n extraClasses?: string;\n}\n\nAudienceItem.defaultProps = {\n extraClasses: ''\n};\n\nexport function AudienceItem(props: AudienceItemProps): React.ReactElement {\n const { audience, highlight, setAudience, isDisabled, extraClasses } = props;\n\n const colourClass = getColourClass(highlight, isDisabled);\n const cursorClass = isDisabled ? 'cursor-default' : 'cursor-pointer';\n const className = `rounded-pill d-inline-block me-1 user-select-none ${cursorClass} ${colourClass} ${extraClasses}`;\n\n const onClick = () => {\n if (isDisabled || !FunctionHelper.isFunction(setAudience))\n return;\n\n setAudience(audience, !highlight);\n };\n\n return (\n <span\n className={className}\n onClick={onClick}\n role='checkbox'\n aria-checked={highlight}\n >\n {lowerCaseToTitleCase(audience.name)}\n </span>\n );\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"itemsWrapper\":\"m6mGm\",\"anchorWrapper\":\"QptZj\",\"default\":\"_AZa8\",\"selectedItem\":\"Nuiel\",\"disabled\":\"WIzWJ\",\"floatIcon\":\"ARudn\",\"arrowIcon\":\"tEF5Q\",\"listIcon\":\"Ql2wi\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\n\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './table-of-contents-list.scss';\n\nexport interface TableOfContentsItem<T=string> {\n name: string;\n id: T;\n}\n\ninterface TableOfContentsProps<T> {\n items: TableOfContentsItem<T>[];\n activeId: string;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n setControlledId: (arg: string) => void;\n // set to true if the TOC is controlled by a local state rather than query params\n localState?: boolean;\n getAppLink?: (args: TableOfContentsItem<T>) => Core.AppLink;\n onItemClick?: (args: TableOfContentsItem<T>) => void;\n}\n\nexport function TableOfContentsList<T extends string>(props: TableOfContentsProps<T>): JSX.Element {\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Widget,\n location: LocationContext.TableOfContents\n };\n\n return (\n <div className={`${styles.itemsWrapper}`}>\n {props.items.map((item, idx) => {\n if (props.localState) {\n return (\n <DivButton\n key={item.id}\n className={`${styles.anchorWrapper} ${props.activeId === item.id ? styles.selectedItem : ''}`}\n onClick={() => {\n ScrollHelper.preventScrollTop();\n props.setControlledId(item.id);\n\n props.onItemClick?.(item);\n }}\n >\n <div className={`${!props.activeId && idx === 0 ? styles.default : ''} `}>\n {item.name}\n </div>\n </DivButton>\n );\n }\n\n return (\n <AppLink\n key={item.id}\n appLink={props.getAppLink(item)}\n appLinkOptions={{ replace: true }}\n className={`${styles.anchorWrapper} ${props.activeId === item.id ? styles.selectedItem : ''}`}\n onClick={() => {\n ScrollHelper.preventScrollTop();\n props.setControlledId(item.id);\n\n props.onItemClick?.(item);\n }}\n analyticsData={{\n ...props.analyticsData,\n id: item.id,\n name: item.name\n }}\n analyticsOptions={analyticsOptions}\n >\n <div className={`${!props.activeId && idx === 0 ? styles.default : ''} `}>\n {item.name}\n </div>\n </AppLink>\n );\n })}\n </div>\n );\n}","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\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 { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nconst endpoints = {\n follow: () => `/api/domain/v1/subjects/classifications/following`,\n unfollow: (ids: string[]) => UrlHelper.urlBuilder('/api/domain/v1/subjects/classifications/following', { id: ids })\n};\n\nexport const FollowRequests = {\n /**\n * @param data - array of object ids the user is going to follow\n */\n follow(\n ids: string[],\n userId: string,\n success?: (data: string[]) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: endpoints.follow(),\n key: `follow:${ids.join(',')}`,\n type: HttpVerbs.POST,\n data: ids,\n formatData: () => {\n return ids.map(id => ({\n id,\n followers: {\n data: [userId]\n }\n }));\n },\n success,\n error,\n invalidationKeys: [ ...ids.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications' ]\n };\n },\n\n unfollow(ids: string[], userId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: endpoints.unfollow(ids),\n key: `unfollow:${ids.join(',')}`,\n type: HttpVerbs.DELETE,\n formatData: () => {\n return ids.map(id => ({\n id,\n followers: {\n data: []\n }\n }));\n },\n success,\n error,\n invalidationKeys: [ ...ids.map(id => `classification:${id}`), 'my:subject:preferences', 'classifications' ]\n };\n }\n};\n","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import React from 'react';\n\ntype TableOfContentsActiveOption = {\n setActiveId: (id: string) => void;\n headingElements: Element[];\n controlledId?: string;\n setControlledId?: (arg: string) => void;\n}\n\nlet timer: number;\n\nexport const useTableOfContentsActiveHeading = (\n { setActiveId, headingElements, controlledId, setControlledId }: TableOfContentsActiveOption\n) => {\n const scrollPositionRef = React.useRef(0);\n\n React.useEffect(() => {\n const callback = (headings: IntersectionObserverEntry[]) => {\n headings.forEach(heading => {\n if (controlledId) {\n setActiveId(controlledId);\n // can use scrollEnd event when the new event type is supported\n timer = window.setTimeout(() => {\n setControlledId('');\n }, 800);\n return;\n }\n if (heading.isIntersecting) {\n setActiveId(heading.target.id);\n scrollPositionRef.current = window.scrollY;\n } else {\n const scrollDistance = scrollPositionRef.current - window.scrollY;\n const isScrollingUp = scrollDistance > 0;\n const curIndex = headingElements.findIndex(h => h.id === heading.target.id);\n const prevHeading = headingElements[curIndex - 1];\n if (isScrollingUp && prevHeading?.id) {\n setActiveId(prevHeading?.id);\n }\n }\n });\n };\n\n const observer = new IntersectionObserver(callback, {\n // rootMargin top: same as the cv-nav-height\n rootMargin: '-67px 0px -80% 0px'\n });\n\n headingElements.forEach(element => observer.observe(element));\n\n return () => {\n timer && window.clearTimeout(timer);\n observer.disconnect();\n };\n }, [ setActiveId, headingElements.length, controlledId ]);\n};\n\n","import React from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nconst HEADER_OFFSET = 80; // Size of header + some extra spacing\n\nexport const useTableOfContentsScroll = (elements: Element[], activeId: string) => {\n const [ hasDoneInitialScroll, setHasDoneInitialScroll ] = React.useState(false);\n\n const previousId = usePrevious(activeId);\n const currentId = activeId;\n\n React.useLayoutEffect(() => {\n if (!hasDoneInitialScroll || previousId !== currentId) {\n const target = elements.find(heading => heading && (heading?.id === currentId));\n\n if (target) {\n const rec = target.getBoundingClientRect();\n\n window.scrollBy({\n top: rec.top - HEADER_OFFSET,\n behavior: 'smooth'\n });\n \n if (!hasDoneInitialScroll)\n setHasDoneInitialScroll(true);\n }\n }\n }, [ elements, previousId, currentId, hasDoneInitialScroll ]);\n};","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.curatedClassificationEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CuratedClassificationEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function CuratedClassificationEmptyState(props: CuratedClassificationEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('headingForNP')} />\n {!props.isReadonly ? (\n <EmptyState.Heading>\n <Text phrase='headingForNP' />\n </EmptyState.Heading>\n ) : (\n <>\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='headingForCurator' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"k1iOO\",\"mobile\":\"QwoBj\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { TableOfContentsList } from 'libs/shared/components/table-of-contents-list/TableOfContentsList';\nimport { CuratedWidget } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './table-of-contents.scss';\n\ninterface TableOfContentsContainerProps {\n widgets: CuratedWidget[];\n title: string;\n activeId: string;\n appLink?: Core.AppLink;\n clickable?: boolean;\n analyticsData?: HashObject;\n setControlledId: (arg: string) => void;\n isSmallScreen?: boolean;\n}\ninterface TableOfContentsProps extends TableOfContentsContainerProps {\n getAppLink: (widget: CuratedWidget) => Core.AppLink\n}\n\nfunction TableOfContentsMobile(props: TableOfContentsProps) {\n const [ isExpanded, setIsExpanded ] = React.useState(false);\n\n function logUserAction() {\n const analyticsOptions = {\n actionType: !isExpanded ? UserAction.Open : UserAction.Hide,\n entity: EntityType.TableOfContents,\n location: LocationContext.Dashboard\n };\n\n AnalyticsHelper.logUserAction(props.analyticsData, analyticsOptions);\n }\n\n function onClickIcon() {\n setIsExpanded(!isExpanded);\n logUserAction();\n }\n\n return (\n <div className={`${styles.mobile} d-inline-flex gap-1`}>\n \n {isExpanded && (\n <div className='bg-white px-3 pt-3 pb-2 border border-dark rounded-1 ps-3'>\n <h2 className='h5'>{props.title}</h2>\n <TableOfContentsList\n items={props.widgets}\n activeId={props.activeId}\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n setControlledId={props.setControlledId}\n getAppLink={props.getAppLink}\n onItemClick={() => setIsExpanded(false)}\n />\n </div>\n )}\n <div className={styles.container}>\n <IconButton\n className='btn btn-outline-dark'\n svgName={cvSvgLibrary.TableOfContents}\n onClick={onClickIcon}\n />\n </div>\n </div>\n );\n}\n\nfunction TableOfContents(props: TableOfContentsProps): JSX.Element {\n return (\n <aside className='col-3'>\n <div className={`${styles.container} ps-3`}>\n <h2 className='h5'>{props.title}</h2>\n \n <TableOfContentsList\n items={props.widgets}\n activeId={props.activeId}\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n setControlledId={props.setControlledId}\n getAppLink={props.getAppLink}\n />\n </div>\n </aside>\n );\n}\n\nexport function TableOfContentsContainer(props: TableOfContentsContainerProps): JSX.Element {\n function getAppLink(widget: CuratedWidget): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n \n const params: HashObject = currentAppLink.params\n ? { ...(currentAppLink.params as HashObject) }\n : {};\n\n params.tocId = widget.id;\n\n return {\n ...currentAppLink,\n params\n };\n }\n\n return (\n <>\n {!props.isSmallScreen\n ? <TableOfContents {...props} getAppLink={getAppLink} />\n : <TableOfContentsMobile {...props} getAppLink={getAppLink} />\n }\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'subjects.teacherOnlyEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TeacherOnlyEmptyStateProps {\n imageUrl: string;\n ctaAppLink?: () => Core.AppLink;\n}\n\nexport function TeacherOnlyEmptyState(props: TeacherOnlyEmptyStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('heading')} />\n <EmptyState.Heading>\n <Text phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text phrase='info' />\n </EmptyState.Info>\n\n <EmptyState.Cta\n text={getPhrase('cta')}\n appLink={props.ctaAppLink?.()}\n className='btn btn-dark'\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Classification } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.classificationComingSoon';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ComingSoonProps {\n data: Classification;\n onToggleFollow?: () => void;\n canFollowSubjects: boolean;\n imageUrl: string;\n showFollowButtonSpinner: boolean;\n}\n\nexport function ClassificationComingSoon(props: ComingSoonProps): JSX.Element {\n const isFollowing = !!props.data.followers?.data?.length;\n function onClick(): void {\n props.onToggleFollow?.();\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState className='pt-0'>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('comingSoon')} />\n\n <EmptyState.Heading>\n <Text phrase='comingSoon' />\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n </EmptyState.Info>\n\n {props.canFollowSubjects && (\n <ActionButton\n svgName={isFollowing ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell}\n onClick={onClick}\n showSpinner={props.showFollowButtonSpinner}\n className={`btn follow-btn me-2 ${isFollowing ? 'btn-outline-dark' : 'btn-dark'}`}\n >\n <Text phrase={isFollowing ? 'following' : 'follow'} />\n </ActionButton>\n )}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import * as React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceItem } from 'libs/shared/apps/subjects/components/audience-item/AudienceItem';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\n\nconst namespace = 'subjects.audienceFilter';\n\ninterface AudienceFilterProps {\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n disabled?: boolean;\n appLink: Core.AppLink;\n disablePersist?: boolean;\n}\n\nexport function AudienceFilter(props: AudienceFilterProps): React.ReactElement {\n const { audiences, activeAudiences, appLink } = props;\n\n const isDisabled = props.disabled || !appLink;\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n React.useEffect(() => {\n if (!props.disablePersist)\n setActiveAudiences(activeAudiences);\n }, [activeAudiences]);\n\n function onToggleAudience(audience: PresentationAudience, isSelected: boolean): void {\n if (isDisabled)\n return;\n\n const activeAudienceNames = isSelected\n ? [ ...(activeAudiences?.map(a => a.name) ?? []), audience.name ]\n : activeAudiences.map(a => a.name).filter(name => name !== audience.name);\n\n const getParams = () => {\n const otherParams = ObjectHelper.omit(appLink.params, ['a']);\n\n if (!activeAudienceNames.length)\n return otherParams;\n\n return Object.assign({}, otherParams, { a: activeAudienceNames });\n };\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: getParams()\n }, { replace: true });\n }\n\n function onClickClearAudiences(): void {\n if (isDisabled)\n return;\n\n const params = ObjectHelper.omit(appLink.params, ['a']);\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params\n }, { replace: true });\n }\n\n if (!audiences || !audiences.length)\n return <></>;\n\n return (\n <div className='d-flex flex-wrap row-gap-2'>\n {audiences.map((a: PresentationAudience) => (\n <AudienceItem\n key={a.masterId}\n audience={a}\n highlight={!isDisabled && !!activeAudiences?.find(aa => aa.masterId === a.masterId)}\n setAudience={onToggleAudience}\n isDisabled={isDisabled}\n />\n ))}\n {(!isDisabled && !!activeAudiences && !!Object.keys(activeAudiences).length) && (\n <DivButton className='info-link d-inline-block ms-1' onClick={onClickClearAudiences}>\n <Text namespace={namespace} phrase='clear' />\n </DivButton>\n )}\n </div>\n );\n}\n\nconst PARTIAL_AUDIENCES = PartialLoadingHelper.getPartialLoadingItems({ numItems: 6 });\n\nexport const PartialAudienceFilter = () => (\n <div className={'d-flex flex-wrap row-gap-2'}>\n {PARTIAL_AUDIENCES.map(({ width }, idx) => (\n <span\n key={idx}\n className='rounded-pill partial-loading-background me-1'\n dangerouslySetInnerHTML={{ __html: '&nbsp' }}\n style={{ width }}\n />\n ))}\n </div>\n);","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AudienceFilter } from 'libs/shared/apps/subjects/components/audience-filter/AudienceFilter';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\ninterface ClassificationDashboardAudiencesProps {\n audiences: PresentationAudience[];\n activeAudiences: PresentationAudience[];\n appLink: Core.AppLink;\n isReadonly: boolean;\n disablePersist: boolean;\n}\n\nexport function ClassificationDashboardAudiences(props: ClassificationDashboardAudiencesProps): JSX.Element {\n return (\n <AudienceFilter\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n disabled={props.isReadonly}\n appLink={props.appLink}\n disablePersist={props.disablePersist}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"curatedTopicTab\":\"CmVlO\",\"tabTransition\":\"rX31t\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { useProductTipsContext } from 'libs/shared/context/product-tips-context/ProductTipsContext';\nimport { Breakpoints, useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { useDirectoryTabProductTipSwitcher } from '../../../hooks/useDirectoryTabProductTipSwitcher';\n\nimport styles from './classification-tabs.scss';\n\nconst namespace = 'shared.classificationDashboard';\n\nexport type ClassificationTab = 'new-releases' | 'all-topics' | 'curated-topic' | 'video-list';\n\nfunction getTabs(\n props: ClassificationTabsProps,\n breakpoints: Breakpoints,\n activeTab: ClassificationTab,\n isHighlighting: boolean\n): PillTab[] {\n const showText = breakpoints.lg || breakpoints.xl || breakpoints.xxl || breakpoints.xs;\n\n function getTopicTabClassName(): string {\n let className = isHighlighting ? styles.tabTransition : '';\n\n if (breakpoints.xs)\n return className + ' w-100';\n\n if (showText)\n return className = ` ${styles.curatedTopicTab}`;\n\n return className;\n }\n\n if (TopicsHelper.isTopLevelTopic(props.classification)) {\n return [{\n name: showText ? LanguageService.getPhrase(namespace, 'newReleases') : '',\n appLink: !props.isReadonly ? props.appLinks?.classification?.(props.classification) : null,\n active: activeTab === 'new-releases',\n svgName: cvSvgLibrary.Sparkle,\n analyticsData: {\n id: 'new-releases',\n classificationId: props.classification.id,\n classificationName: props.classification.name,\n presentationId: props.presentation.id,\n presentationDescription: props.presentation.description,\n name: LanguageService.getPhrase(namespace, 'newReleases'),\n url: Core.AppLinkHelper.getHref(props.appLinks?.classification?.(props.classification))\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n },\n className: `${breakpoints.xs ? 'w-100' : ''} ${isHighlighting ? styles.tabTransition : ''}`\n \n }, {\n name: showText ? LanguageService.getPhrase(namespace, 'allTopics') : '',\n appLink: !props.isReadonly ? props.appLinks?.classificationDirectory?.(props.classification) : null,\n active: activeTab === 'all-topics',\n svgName: cvSvgLibrary.Grid,\n analyticsData: {\n id: 'all-topics',\n classificationId: props.classification.id,\n classificationName: props.classification.name,\n presentationId: props.presentation.id,\n presentationDescription: props.presentation.description,\n name: LanguageService.getPhrase(namespace, 'allTopics'),\n url: Core.AppLinkHelper.getHref(props.appLinks?.classificationDirectory?.(props.classification))\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n },\n className: `${breakpoints.xs ? 'w-100' : ''} ${isHighlighting ? styles.tabTransition : ''}`\n }];\n }\n\n return [{\n name: showText ? LanguageService.getPhrase(namespace, 'topic') : '',\n appLink: !props.isReadonly ? props.appLinks?.classification?.(props.classification) : null,\n active: activeTab === 'curated-topic',\n svgName: cvSvgLibrary.Rectangles,\n analyticsData: {\n id: 'curated-topic',\n classificationId: props.classification.id,\n classificationName: props.classification.name,\n presentationId: props.presentation.id,\n presentationDescription: props.presentation.description,\n name: LanguageService.getPhrase(namespace, 'topic'),\n url: Core.AppLinkHelper.getHref(props.appLinks?.classification?.(props.classification))\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n },\n className: getTopicTabClassName()\n }, {\n name: showText ? LanguageService.getPhrase(namespace, 'videoList') : '',\n appLink: !props.isReadonly ? props.appLinks?.classificationVideos?.(props.classification) : null,\n active: activeTab === 'video-list',\n svgName: cvSvgLibrary.WidgetSeries,\n analyticsData: {\n id: 'video-list',\n classificationId: props.classification.id,\n classificationName: props.classification.name,\n presentationId: props.presentation.id,\n presentationDescription: props.presentation.description,\n name: LanguageService.getPhrase(namespace, 'videoList'),\n url: Core.AppLinkHelper.getHref(props.appLinks?.classificationVideos?.(props.classification))\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n },\n className: `${breakpoints.xs ? 'w-100' : ''} ${isHighlighting ? styles.tabTransition : ''}`\n }];\n}\n\ninterface ClassificationTabsProps {\n classification: Classification;\n presentation: Presentation;\n appLinks: WidgetAppLinks;\n activeTab: ClassificationTab;\n isReadonly: boolean;\n}\n\nexport function ClassificationTabs(props: ClassificationTabsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n const { tab, isHighlighting } = useDirectoryTabProductTipSwitcher(props.activeTab);\n\n const { setProductTipRef } = useProductTipsContext('topics-directory-tab');\n\n return (\n <PillTabSelector\n borderRadius='sm'\n containerRef={el => setProductTipRef(el)}\n className={breakpoints.xs ? 'w-100' : ''}\n listClassName='d-flex flex-nowrap'\n tabs={getTabs(props, breakpoints, tab, isHighlighting)}\n />\n );\n}","import React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classification, CuratedDashboard, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ClassificationDashboardAudiences } from '../audiences/ClassificationDashboardAudiences';\nimport { ClassificationTab, ClassificationTabs } from '../classification-tabs/ClassificationTabs';\n\nfunction shouldHideAudiences(\n audiences: PresentationAudience[],\n activeAudiences: PresentationAudience[],\n isEmpty: boolean,\n isComingSoon: boolean\n): boolean {\n if (isComingSoon)\n return true;\n\n if (isEmpty && !activeAudiences?.length)\n return true;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return true;\n\n return false;\n}\n\ninterface ClassificationDashboardNavProps {\n dashboard: CuratedDashboard;\n classification: Classification;\n presentation: Presentation;\n appLinks: WidgetAppLinks;\n activeTab: ClassificationTab;\n audiences: PresentationAudience[];\n activeAudiences: PresentationAudience[];\n getBreadcrumbs: () => Breadcrumb[];\n\n hasTopicDirectoryDashboard: boolean;\n hasTopicVideosDashboard: boolean;\n canViewTopicTabs: boolean;\n isComingSoon: boolean;\n isEmpty: boolean;\n isViewingCurrentPresentation: boolean;\n isReadonly: boolean;\n}\n\nexport function ClassificationDashboardNav(props: ClassificationDashboardNavProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const hideAudiences = shouldHideAudiences(\n props.audiences,\n props.activeAudiences,\n props.isEmpty,\n props.isComingSoon\n );\n\n function canShowTabs(): boolean {\n if (!props.classification || !props.dashboard)\n return false;\n\n if (CuratedDashboardHelper.isSystemGeneratedDashboard(props.dashboard.widgets))\n return false;\n\n // TODO: This is controlled by a domain option that will eventually be deleted on release\n if (!props.canViewTopicTabs)\n return false;\n\n /**\n * For our top-level topics, we can show the topic tab if the topic has a directory dashboard.\n */\n if (TopicsHelper.isTopLevelTopic(props.classification))\n return props.hasTopicDirectoryDashboard;\n\n /**\n * For our lower level topics, we can show the video tab if the topic has one\n */\n if (props.hasTopicVideosDashboard)\n return true;\n\n return false;\n }\n\n function getContainerClass(): string {\n let className = 'd-flex flex-column py-3 mb-3';\n\n if (!props.isComingSoon)\n className += ' border-bottom';\n\n if ((canShowTabs() || hideAudiences) && !breakpoints.xs)\n return className;\n\n return className + ' row-gap-3';\n }\n\n function getTopRowClass(): string {\n if (hideAudiences) {\n if (breakpoints.xs)\n return 'd-flex flex-column justify-content-between row-gap-3';\n\n return 'd-flex align-items-center justify-content-between';\n }\n\n let className = '';\n\n className += 'd-flex align-items-center justify-content-between mb-1';\n\n if (breakpoints.xs)\n className += ' row-gap-3 mb-0';\n\n return className;\n }\n\n function getBottomRowClass(): string {\n let className = 'd-flex align-items-end justify-content-between';\n\n if (breakpoints.xs)\n className += ' row-gap-3 flex-wrap';\n\n return className;\n }\n\n return (\n <div className={getContainerClass()}>\n <div className={getTopRowClass()}>\n <Breadcrumbs breadcrumbs={props.getBreadcrumbs?.()} />\n\n {canShowTabs() && hideAudiences && (\n <ClassificationTabs\n classification={props.classification}\n activeTab={props.activeTab}\n appLinks={props.appLinks}\n presentation={props.presentation}\n isReadonly={props.isReadonly}\n />\n )}\n </div>\n\n <div className={getBottomRowClass()}>\n {!hideAudiences && (\n <ClassificationDashboardAudiences\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n appLink={props.appLinks.audience?.()}\n isReadonly={props.isReadonly}\n disablePersist={!props.isViewingCurrentPresentation}\n />\n )}\n\n {canShowTabs() && !hideAudiences && (\n <ClassificationTabs\n classification={props.classification}\n activeTab={props.activeTab}\n appLinks={props.appLinks}\n presentation={props.presentation}\n isReadonly={props.isReadonly}\n />\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsOptions, HashObject, LocationContext } from 'libs/analytics/interfaces';\n\nimport { CuratedClassificationEmptyState } from 'libs/shared/apps/subjects/components/classification-dashboard/empty-state/CuratedClassificationEmptyState';\nimport { TableOfContentsContainer } from 'libs/shared/apps/subjects/components/classification-dashboard/table-of-contents/TableOfContents';\nimport { TeacherOnlyEmptyState } from 'libs/shared/apps/subjects/components/classification-dashboard/teacher-only/TeacherOnlyEmptyState';\nimport { useGetTopicsWidgets } from 'libs/shared/apps/subjects/hooks/useGetTopicsWidgets';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { BannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSubTextType } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { CalendarEvent, CalendarEventContentType, CanFavouriteFunc, Classification, CuratedDashboard, CuratedWidget, CuratedWidgetQueryParams, DashboardStatus, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { ClassificationComingSoon } from './classification-coming-soon/ClassificationComingSoon';\nimport { ClassificationDashboardNav } from './classification-dashboard-nav/ClassificationDashboardNav';\nimport { ClassificationTab } from './classification-tabs/ClassificationTabs';\n\nconst namespace = 'shared.classificationDashboard';\n\nfunction isHeadingWidget(widget: CuratedWidget) {\n return widget.widgetId === WidgetTypeId.Blurb && widget.templateId === WidgetTemplate.Heading;\n}\n\nfunction isTopicWidget(widget: CuratedWidget) {\n return widget.widgetId === WidgetTypeId.CuratedClassifications || widget.widgetId === WidgetTypeId.Classifications;\n}\n\ninterface ClassificationDashboardProps {\n dashboard: CuratedDashboard;\n classification: Classification;\n presentation: Presentation;\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n hasTopicDirectoryDashboard: boolean;\n hasTopicVideosDashboard: boolean;\n canViewTopicTabs: boolean;\n tab: ClassificationTab;\n specialEvent?: CalendarEvent;\n\n audiences: PresentationAudience[];\n activeAudiences?: PresentationAudience[];\n\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate\n ) => Flight.Request;\n\n getBannerActions?: () => ActionOptions[];\n getBreadcrumbs?: () => Breadcrumb[];\n onToggleFollow?: (classification: Classification, locationContext: LocationContext) => void;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n canFollowSubjects: boolean;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n\n appLinks?: WidgetAppLinks;\n\n imageCdnUrl: string\n emptyImageUrl: string;\n comingSoonImageUrl?: string;\n\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n\n scrollToWidgetId?: string;\n tableOfContentsId?: string;\n\n // Means the dashboard contains no linked or working filters\n isReadonly?: boolean;\n\n // Means the dashboard is being previewed by ClickView staff either in product or in curator\n isPreviewing?: boolean;\n\n // Means the parent topic for the dashboard has a status of \"Coming Soon\"\n isComingSoon?: boolean;\n\n showFollowButtonSpinner?: boolean;\n \n isViewCurrentPresentation?: boolean;\n\n yearGroups?: YearGroup[];\n\n // By default widgets will always be lazyloaded. We override this behaviour only in extenuating \n // circumstances, such as dynamic rendering for SEO.\n lazyLoad?: boolean;\n\n moviesAndTv?: boolean;\n\n isTeacherOnly?: boolean;\n\n // Fallback url to display for the company logo. Only used by Streamable Learning atm\n companyLogoFallbackUrl?: string;\n\n subTextType?: VideoSubTextType;\n \n contentType?: CalendarEventContentType;\n\n isBot?: boolean;\n\n isPlugin: boolean;\n}\n\nClassificationDashboard.defaultProps = {\n appLinks: {}\n};\n\nexport function ClassificationDashboard(props: ClassificationDashboardProps): JSX.Element {\n const { widgets, videoList, videoListWidgetId } = useGetTopicsWidgets(props.dashboard, props.activeAudiences);\n\n const isSmallScreen = useMediaQuery(MediaQueryStrings.LGDown);\n const headingRef = React.useRef<Set<Element>>(new Set());\n\n const initialEmptyWidgets = React.useMemo(() => {\n return widgets.reduce((acc: HashObject<boolean>, widget) => {\n acc[widget.id] = false;\n return acc;\n }, {});\n }, [widgets?.length]);\n\n const [ emptyWidgets, setEmptyWidgets ] = React.useState(initialEmptyWidgets);\n\n const [ controlledId, setControlledId ] = React.useState(window.location.hash.slice(1) || '');\n\n const [ tableOfContentActiveId, setTableOfContentActiveId ] = React.useState<string>('');\n\n const headingElements = Array.from(headingRef.current);\n useTableOfContentsScroll(headingElements, props.tableOfContentsId);\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n function shouldShowEmptyState(): boolean {\n if (props.isComingSoon)\n return false;\n\n if (props.isTeacherOnly)\n return false;\n\n if (!props.dashboard)\n return true;\n\n if (props.dashboard.status === DashboardStatus.Archived && !props.isReadonly)\n return true;\n\n if (props.dashboard.status === DashboardStatus.Draft && !props.isPreviewing)\n return true;\n\n if (!widgets?.length)\n return true;\n\n if (videoList && videoList.length)\n return false;\n\n return Object.values(emptyWidgets).every(state => !!state);\n }\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard),\n props.activeAudiences?.map(a => a.masterId)\n );\n\n return props.getWidgetContentRequest(id, params, template);\n }\n\n const showEmptyState = shouldShowEmptyState();\n\n React.useEffect(() => {\n /**\n * When we add the first widget of the dashboard, the showEmptyState is `true`, the WidgetContainer is not going to be rendered to lazyload the `content`\n * so we set the emptyWidget to initial make sure the widget container is rendered to lazyload `widget.content`\n * and let the WidgetContainer to re-set the empty state based on the actual `widget.content` from backend\n */\n if (showEmptyState) {\n setEmptyWidgets(initialEmptyWidgets);\n }\n }, [widgets?.length]);\n\n const onSetIsEmpty = React.useCallback((widgetId: string, isEmpty: boolean) => {\n if (emptyWidgets[widgetId] === isEmpty)\n return;\n\n const newEmptyState = {\n ...emptyWidgets,\n [widgetId]: isEmpty\n };\n\n let index = 0;\n\n /**\n * Every time a widget is identified as empty, we check each heading blurb widget\n * to see if it should be hidden. This will be the case when all widgets beneath a heading\n * (up until the next heading) are empty.\n */\n while (index < widgets.length) {\n const currentWidget = widgets[index];\n\n if (!isHeadingWidget(currentWidget)) {\n index++;\n continue;\n }\n\n let isHeadingEmpty = true;\n let subWidgetIndex = index + 1;\n\n while (isHeadingEmpty && subWidgetIndex < widgets.length) {\n const headingSubWidget = widgets[subWidgetIndex];\n\n if (isHeadingWidget(headingSubWidget))\n break;\n\n if (!newEmptyState[headingSubWidget.id] && !isTopicWidget(headingSubWidget))\n isHeadingEmpty = false;\n\n subWidgetIndex++;\n }\n\n index = subWidgetIndex;\n\n newEmptyState[currentWidget.id] = isHeadingEmpty;\n }\n\n setEmptyWidgets(newEmptyState);\n }, [ emptyWidgets, widgets ]);\n\n function hideWidget(widget: CuratedWidget): boolean {\n return isHeadingWidget(widget) && emptyWidgets[widget.id];\n }\n\n function useLargeDashboardSpacing(): boolean {\n const target = CuratedDashboardHelper.getDashboardTargetType(props.dashboard);\n\n if (props.moviesAndTv || target === DashboardTargetType.ClassificationVideos)\n return false;\n\n return true;\n }\n\n function getWidgetHeading(widget: CuratedWidget, index: number): string {\n if (widget.widgetId === WidgetTypeId.ClassificationDashboardExternalMedia) {\n const previousWidget = widgets[index - 1];\n\n if (emptyWidgets[previousWidget.id])\n return widget.name.replace('Other videos', 'Videos');\n\n return widget.name;\n }\n\n return widget.name;\n }\n\n const widgetsInTableOfContents = widgets.filter(w => {\n return !hideWidget(w) && !!w.metadata?.showInTableOfContents;\n });\n\n const shouldShowTableOfContents = widgetsInTableOfContents.length >= 2;\n const shouldShowSideTableOfContents = shouldShowTableOfContents && !isSmallScreen;\n /**\n * We don't put the .topic-dashboard class when we're in a movies and tv classification\n * because we don't want the extra padding between widgets.\n */\n return (\n <div className={`bg-white px-4 ${useLargeDashboardSpacing() ? 'dashboard-spacing-lg' : ''}`}>\n <BannerHeader\n heading={props.classification.name}\n banner={props.classification.banner}\n imageCdnUrl={props.imageCdnUrl}\n actions={props.getBannerActions?.()}\n actionsDropdownClassName='btn btn-outline-dark'\n specialEvent={props.specialEvent}\n calendarTheme={{\n background: 'bg-light-blue',\n border: 'border-light-blue'\n }}\n showComingSoon={props.isComingSoon}\n />\n\n <ClassificationDashboardNav\n dashboard={props.dashboard}\n classification={props.classification}\n presentation={props.presentation}\n appLinks={props.appLinks}\n activeTab={props.tab}\n audiences={props.audiences}\n activeAudiences={props.activeAudiences}\n getBreadcrumbs={props.getBreadcrumbs}\n hasTopicDirectoryDashboard={props.hasTopicDirectoryDashboard}\n hasTopicVideosDashboard={props.hasTopicVideosDashboard}\n canViewTopicTabs={props.canViewTopicTabs}\n isComingSoon={props.isComingSoon}\n isEmpty={showEmptyState}\n isViewingCurrentPresentation={props.isViewCurrentPresentation}\n isReadonly={props.isReadonly}\n />\n\n {props.isComingSoon && (\n <ClassificationComingSoon\n imageUrl={props.comingSoonImageUrl}\n data={props.classification}\n canFollowSubjects={props.canFollowSubjects}\n showFollowButtonSpinner={props.showFollowButtonSpinner}\n onToggleFollow={() => props.onToggleFollow(props.classification, LocationContext.ClassificationComingSoon)}\n />\n )}\n\n {!props.isComingSoon && (\n <div className={`${shouldShowSideTableOfContents ? 'row no-wrap' : ''}`}>\n <div className={shouldShowSideTableOfContents ? 'col-9' : ''}>\n {widgets.map((widget, idx) => {\n if (hideWidget(widget))\n return <React.Fragment key={widget.id}></React.Fragment>;\n\n return (\n <WidgetContainerView\n headingElementRef={headingRef}\n key={widget.id}\n id={widget.id}\n name={getWidgetHeading(widget, idx)}\n description={widget.description}\n templateId={widget.templateId}\n widgetTypeId={widget.widgetId}\n audiences={props.audiences}\n getContentRequest={getWidgetContentRequest}\n setIsEmpty={onSetIsEmpty}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n appLinks={props.appLinks}\n yearGroups={props.yearGroups}\n presentation={props.presentation}\n analyticsData={props.analyticsData}\n isScrollToTargetWidget={props.scrollToWidgetId === widget.id}\n imageCdnUrl={props.imageCdnUrl}\n onSubmitFeedback={props.onSubmitFeedback}\n metadata={widget.metadata}\n isBot={props.isBot}\n hasTableOfContents={shouldShowSideTableOfContents}\n lazyLoad={props.lazyLoad}\n dashboardTarget={CuratedDashboardHelper.getDashboardTargetType(props.dashboard)}\n widgetIndex={idx}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n isPreviewing={props.isReadonly}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n contentType={props.contentType}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n onToggleFollowClassification={props.onToggleFollow}\n isPlugin={props.isPlugin}\n />\n );\n })}\n </div>\n\n {shouldShowTableOfContents && (\n <TableOfContentsContainer\n widgets={widgetsInTableOfContents}\n title={props.classification.name}\n activeId={tableOfContentActiveId}\n clickable={!props.isReadonly}\n analyticsData={props.analyticsData}\n setControlledId={setControlledId}\n isSmallScreen={isSmallScreen}\n />\n )}\n\n {!!videoList?.length && (\n <>\n <WidgetHeader name={LanguageService.getPhrase(namespace, 'videos')} description='' />\n <VideoList\n videos={videoList}\n yearGroups={props.yearGroups}\n getVideoAppLink={(v, opts) => props.appLinks.videoType(v, { ...opts, contextId: videoListWidgetId })}\n getSubTextAppLink={props.appLinks.subText}\n hasPermissions={props.hasPermissions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n companyLogoFallbackUrl={props.companyLogoFallbackUrl}\n subTextType={props.subTextType}\n getPreviewQuestionsAppLink={props.appLinks.previewQuestions}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={props.appLinks.classroomGuide}\n getInteractiveGuidanceAppLink={props.appLinks.interactiveGuidance}\n getResourceGuidanceAppLink={props.appLinks.resourceGuidance}\n />\n </>\n )}\n </div>\n )}\n\n {showEmptyState && (\n <CuratedClassificationEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.appLinks.widgetWizard}\n />\n )}\n\n {props.isTeacherOnly && (\n <TeacherOnlyEmptyState\n imageUrl={props.emptyImageUrl}\n ctaAppLink={() => props.appLinks.allTopics(props.classification.presentationId)}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { CuratedDashboard, CuratedMediaWidget, CuratedWidget, PresentationAudience, Video } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nexport interface Response {\n widgets: CuratedWidget[];\n\n videoList?: Video[];\n videoListWidgetId?: string;\n}\n\n/**\n * This hook helps us with custom logic for to display system generated dashboards in a slightly\n * different way.\n */\nexport function useGetTopicsWidgets(dashboard: CuratedDashboard, activeAudiences: PresentationAudience[]): Response {\n const {\n isSystemGeneratedDashboard,\n systemGeneratedVideoWidget\n } = React.useMemo(() => {\n if (!dashboard) {\n return {\n isSystemGeneratedDashboard: false,\n systemGeneratedVideoWidget: null\n };\n }\n\n const isSystemGeneratedDashboard = CuratedDashboardHelper.isSystemGeneratedDashboard(dashboard.widgets);\n\n return {\n isSystemGeneratedDashboard,\n systemGeneratedVideoWidget: dashboard.widgets.find(widget => {\n return widget.widgetId === WidgetTypeId.ClassificationPinnedVideos;\n })\n };\n }, [dashboard?.id]);\n\n const systemGeneratedVideoContent = Flight.useBasicFetch<CuratedMediaWidget<Video[]>>(\n !!systemGeneratedVideoWidget &&\n DashboardRequests.dashboardWidgetContent(\n systemGeneratedVideoWidget?.id,\n CuratedDashboardHelper.getWidgetParams(\n systemGeneratedVideoWidget.widgetId,\n systemGeneratedVideoWidget.templateId,\n CuratedDashboardHelper.getDashboardTargetType(dashboard),\n activeAudiences?.map(a => a.masterId)\n ),\n systemGeneratedVideoWidget?.templateId\n )\n );\n\n // Non system generated dashboards are returned as per usual\n if (!isSystemGeneratedDashboard)\n return { widgets: ArrayHelper.sortBy(dashboard?.widgets, 'index') };\n\n // System generated dashboard have the video widget removed and returned as a separate video list\n return {\n widgets: dashboard?.widgets?.filter(widget => widget.widgetId !== WidgetTypeId.ClassificationPinnedVideos) ?? [],\n videoList: systemGeneratedVideoContent.data?.content ?? [],\n videoListWidgetId: systemGeneratedVideoWidget?.id\n };\n}","import React from 'react';\n\nimport { PartialAudienceFilter } from 'libs/shared/apps/subjects/components/audience-filter/AudienceFilter';\nimport { PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nexport function PartialClassificationDashboard(): JSX.Element {\n return (\n <div className='bg-white px-4'>\n <PartialBannerHeader />\n\n <div className='d-flex flex-column row-gap-3 py-3 mb-3 border-bottom'>\n <PartialBreadcrumbs />\n <PartialAudienceFilter />\n </div>\n </div>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorCta, ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'subjects.topicNotFoundError';\n\nexport class TopicNotFoundError extends ErrorPageError {\n constructor() {\n super('Topic doesn\\'t exist');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TopicNotFoundError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n\n // @ts-ignore\n public get cta(): ErrorCta {\n return {\n text: LanguageService.getPhrase(namespace, 'cta'),\n appLink: {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL\n }\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, DashboardTargetType, Playlist, PlaylistCollection, Resource, Series, SeriesCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nexport interface ClassificationViewQueryParams {\n a?: string[];\n dashboardId?: string;\n preview?: 'true';\n tocId?: string;\n mtv?: boolean;\n}\n\nconst OMITTED_PARAMS = [ 'preview', 'dashboardId', 'skipPrompt' ];\n\n/**\n * Checks if the classification would have any content with\n * no filters applied\n */\nexport function hasNoContentUnfiltered(classification: Classification): boolean {\n if (!classification)\n return false;\n\n return (\n classification.series?.count === 0 &&\n classification.pinnedVideos?.count === 0 &&\n classification.playlists?.count === 0\n );\n}\n\ninterface HeroVideoWithVideoList {\n heroVideo: Video;\n videoList: Video[];\n}\n\nexport function extractHeroVideo(\n series: SeriesCollection,\n playlists: PlaylistCollection,\n videos: VideoCollection,\n classification: Classification\n): HeroVideoWithVideoList {\n if (!series || !playlists || !videos || !classification)\n return {\n heroVideo: null,\n videoList: videos && videos.data\n };\n\n // If the subject has no series/playlists, and has only 1 video, that video is displayed as the hero.\n if (!series.data.length && !playlists.data.length && videos.data.length === 1) {\n return {\n heroVideo: ArrayHelper.first(videos.data),\n videoList: []\n };\n }\n\n const pinnedVideoIndex = videos.data.findIndex(video => video.id === classification.pinnedVideoMasterId);\n\n if (pinnedVideoIndex === -1)\n return {\n heroVideo: null,\n videoList: videos.data\n };\n\n return {\n heroVideo: videos.data[pinnedVideoIndex],\n videoList: videos.data.filter(vid => vid.id !== classification.pinnedVideoMasterId)\n };\n}\nconst getPhrase = LanguageService.encloseNamespace('subjects.classification');\n\nexport function getBannerActions(\n classification: Classification,\n canFollowSubjects: boolean,\n onFollow: () => void,\n showFollowButtonSpinner: boolean,\n isSmallScreen: boolean\n): ActionOptions[] {\n if (!canFollowSubjects)\n return [];\n\n const isFollowing = !!classification.followers?.data?.length;\n\n return [{\n label: getPhrase(isFollowing ? 'following' : 'follow'),\n onClick: onFollow,\n svgName: isFollowing ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell,\n className: `btn follow-btn ${isFollowing ? 'btn-outline-dark' : 'btn-dark'}`,\n button: true,\n tooltip: (isFollowing || isSmallScreen) ? undefined : getPhrase('followBtnTooltip'),\n showSpinner: showFollowButtonSpinner\n }];\n}\n\nexport function getClassificationAppLinks(\n classification: Classification,\n targetType: DashboardTargetType,\n params: ClassificationViewQueryParams\n): WidgetAppLinks {\n return {\n audience: () => {\n switch (targetType) {\n case DashboardTargetType.ClassificationDirectory: {\n return null;\n }\n case DashboardTargetType.ClassificationVideos: {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_VIDEOS,\n args: [ classification.id, TextHelper.slugify(classification.name) ],\n params\n };\n }\n default: {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification.id, TextHelper.slugify(classification.name) ],\n params\n };\n }\n }\n },\n \n classification: (_classification: Classification | null) => {\n const appLinkClassification = _classification || classification;\n\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ appLinkClassification.id, TextHelper.slugify(appLinkClassification.name) ],\n params: ObjectHelper.omit(params, OMITTED_PARAMS)\n };\n },\n\n classificationDirectory: (_classification: Classification) => {\n const appLinkClassification = _classification || classification;\n\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_TOPICS,\n args: [ appLinkClassification.id, TextHelper.slugify(appLinkClassification.name) ],\n params: ObjectHelper.omit(params, OMITTED_PARAMS)\n };\n },\n\n classificationVideos: (_classification: Classification) => {\n const appLinkClassification = _classification || classification;\n\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_VIDEOS,\n args: [ appLinkClassification.id, TextHelper.slugify(appLinkClassification.name) ],\n params: ObjectHelper.omit(params, OMITTED_PARAMS)\n };\n },\n\n videoType: (video: Video, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget,\n moviesAndTv: params.mtv\n })\n ),\n\n allTopics: (presentationId: string) => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL,\n params: { presentationId }\n }),\n\n series: (series: Series) => {\n return SeriesAppLinkHelper.getSeriesAppLink(series, {\n classificationId: classification.id,\n mtv: params.mtv ? true : undefined\n });\n },\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series, {\n classificationId: classification.id,\n mtv: params.mtv ? true : undefined\n }),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ],\n params: {\n classificationId: classification.id,\n mtv: params.mtv ? true : undefined\n }\n }),\n\n resource: (resource: Resource, videoId: string, canViewResources: boolean) => {\n if (!canViewResources) {\n return {\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n };\n }\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PREVIEW_PDF,\n args: [resource.id],\n params: {\n videoId\n }\n };\n },\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"followButton\":\"HlRXj\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CalendarRequests } from 'libs/shared/apps/calendar/flight-request/CalendarRequests';\nimport { ClassificationDashboard } from 'libs/shared/apps/subjects/components/classification-dashboard/ClassificationDashboard';\nimport { PartialClassificationDashboard } from 'libs/shared/apps/subjects/components/classification-dashboard/partial-loading/PartialClassificationDashboard';\nimport { PreviewBanner } from 'libs/shared/apps/subjects/components/preview-banner/PreviewBanner';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { FollowRequests } from 'libs/shared/flight-requests/FollowRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CalendarEvent, Classification, Config, CurrentUser, Customer, DashboardTargetType, Presentation, PresentationAudience, RegionAlternative, YearGroup } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\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 { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { TopicNotFoundError } from 'apps/subjects/errors/TopicNotFoundError';\nimport { useFetchClassificationDashboard } from 'apps/subjects/hooks/useFetchClassificationDashboard';\n\nimport { ClassificationViewQueryParams, getClassificationAppLinks } from './ClassificationViewUtils';\n\nimport styles from './curated-classification-view.scss';\n\ninterface CuratedClassificationViewProps {\n id: string;\n queryParams?: ClassificationViewQueryParams;\n targetType: DashboardTargetType;\n}\n\nCuratedClassificationView.defaultProps = {\n queryParams: {}\n};\n\nconst namespace = 'subjects.classification';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function CuratedClassificationView(props: CuratedClassificationViewProps): React.ReactElement {\n const [ showFollowButtonSpinner, setShowFollowButtonSpinner ] = React.useState<boolean>(false);\n\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n const { hasPermissions, hasLocalPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { openInCurationStudioLabel, isUserCurator, getOpenInCurationStudioLink } = useCurationStudio();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const classification = Flight.useBasicFetch<Classification>(\n ClassificationRequests.classification(props.id, currentUser.data?.id)\n );\n\n const presentation = Flight.useBasicFetch<Presentation>(\n classification.data &&\n ClassificationRequests.presentationById(classification.data.presentationId)\n );\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n classification.data &&\n AudienceRequests.audiencesByPresentationId(classification.data.presentationId)\n );\n\n const specialEvent = Flight.useBasicFetch<CalendarEvent>(\n classification.data &&\n CalendarRequests.nextTopicSpecialEvent(props.id, classification.data.presentationId)\n );\n\n const {\n activePresentation,\n availablePresentations,\n canAccessPresentation\n } = usePresentation();\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const path = Flight.useBasicFetch<Classification[]>(ClassificationRequests.path(props.id));\n\n const {\n dashboard,\n hasTopicDirectoryDashboard,\n hasTopicVideosDashboard,\n canViewTopicTabs,\n isPreviewing,\n isTeacherOnly\n } = useFetchClassificationDashboard(props.id, props.queryParams, props.targetType);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n ClassificationRequests.regionAlternatives(props.id)\n );\n\n useSetPageMetadata(PageMetadataHelper.getClassificationMetadata({\n content: classification.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(classification, {\n notFound: TopicNotFoundError\n });\n useDeepLinks({ id: props.id, app: 'topics' });\n\n const isViewCurrentPresentation = activePresentation?.id === presentation.data?.id;\n \n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n const isMobile = useMediaQuery(MediaQueryStrings.SMDown);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.ExpandableVideoThumbnail);\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const canFollowSubjects = hasPermissions(PermissionName.FollowSubjects);\n const isComingSoon = (\n classification.data?.status === ClassificationStatus.ComingSoon &&\n !isPreviewing\n );\n\n /**\n * We use the current active audiences to re-fetch content for that specific audience set.\n */\n const activeAudiences = AudienceHelper.getActiveAudiencesFromParams(audiences.data, props.queryParams);\n const activeAudienceIds = activeAudiences?.map(a => a.masterId) ?? [];\n\n const targetType = CuratedDashboardHelper.getDashboardTargetType(dashboard.data);\n\n /**\n * Following\n */\n function onToggleFollow(followedClassification: Classification, location: LocationContext) {\n if (!canFollowSubjects || !classification)\n return;\n\n const isTogglingCurrentTopic = followedClassification.id.toString() === classification.data?.id?.toString();\n\n if (isTogglingCurrentTopic)\n setShowFollowButtonSpinner(true);\n\n const isFollowing = TopicsHelper.isFollowing(followedClassification);\n\n const request = isFollowing\n ? FollowRequests.unfollow\n : FollowRequests.follow;\n\n fetchAsync(request([followedClassification.id], currentUser.data?.id))\n .then(() => {\n AnalyticsHelper.logUserAction(analyticsData, {\n location,\n actionType: UserAction.Follow,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: isFollowing ? ToggleDescriptor.Off : ToggleDescriptor.On,\n entity: EntityType.Classification\n });\n\n if (!isTogglingCurrentTopic) {\n alerts.success(getPhrase(isFollowing ? 'unfollowed' : 'followed', { name: followedClassification.name }));\n }\n })\n .finally(() => {\n if (isTogglingCurrentTopic)\n setShowFollowButtonSpinner(false);\n });\n }\n\n async function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = await fetchAsync<void>(FeedbackRequests.submitFeedback({\n type: FeedbackType.Footer,\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n ProductId.Primary,\n hasPermissions(PermissionName.StudentExperience),\n [ 'topics', 'in product feedback' ]\n )\n }, {\n reaction: feedback.type,\n feedback: feedback.content,\n location: 'Topic Footer',\n presentationName: presentation.data.description,\n presentationId: presentation.data.id,\n dashboardName: dashboard.data.name,\n dashboardId: dashboard.data.id,\n classificationName: classification.data.name,\n classificationId: classification.data.id\n }));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.data.id,\n classificationId: classification.data.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.ClassificationFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n function getBannerActions(): ActionOptions[] {\n const isFollowing = !!classification.data?.followers?.data?.length;\n\n if (!canFollowSubjects)\n return [];\n\n const actions: ActionOptions[] = [{\n label: isMobile ? '' : getPhrase(isFollowing ? 'following' : 'follow'),\n onClick: () => onToggleFollow(classification.data, LocationContext.Banner),\n svgName: isFollowing ? cvSvgLibrary.BellFilled : cvSvgLibrary.Bell,\n className: `btn follow-btn me-2 ${isFollowing ? 'btn-outline-dark' : 'btn-dark'} ${styles.followButton}`,\n button: true,\n tooltip: (isFollowing || isSmallScreen) ? undefined : getPhrase('followBtnTooltip'),\n showSpinner: showFollowButtonSpinner\n }];\n\n if (isUserCurator)\n actions.push({\n label: openInCurationStudioLabel,\n href: getOpenInCurationStudioLink(MasterType.Subject, classification.data?.id, presentation.data?.id),\n openInNewTab: true\n });\n \n return actions;\n }\n\n const appLinks = getClassificationAppLinks(classification.data, targetType, props.queryParams);\n\n const breadcrumbs = useBreadcrumbs({ name: classification.data?.name });\n function getBreadcrumbs(): () => Breadcrumb[] {\n if (!canAccessPresentation(presentation.data?.id))\n return;\n\n return () => breadcrumbs;\n }\n \n /**\n * Additional topics data to be mixed in with lower-level component analytics collection\n */\n const analyticsData = {\n presentationId: presentation.data?.id,\n presentationName: presentation.data?.name,\n currentClassificationId: classification.data?.id,\n currentClassificationName: classification.data?.name,\n followingCurrentClassification: !!classification.data?.followers?.data?.length,\n activeAudienceNames: activeAudiences?.length ? activeAudiences.map(a => a.name) : null,\n activeAudienceIds: activeAudienceIds.length ? activeAudienceIds : null\n };\n\n const dataLoaded = !!config.data\n && dashboard.hasCompleted\n && !!classification.data\n && !!presentation.data\n && !!path.data\n && !!availablePresentations\n && !!audiences.data\n && specialEvent.hasCompleted;\n\n if (!dataLoaded)\n return <PartialClassificationDashboard />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='position-relative'>\n {!!(isPreviewing && dashboard.data) && <PreviewBanner status={dashboard.data.status} type='topic' />}\n <ClassificationDashboard\n dashboard={dashboard.data}\n classification={classification.data}\n getWidgetContentRequest={DashboardRequests.dashboardWidgetContent}\n getBreadcrumbs={getBreadcrumbs()}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n presentation={presentation.data}\n onToggleFollow={onToggleFollow}\n getBannerActions={getBannerActions}\n audiences={props.queryParams.mtv ? null : audiences.data}\n activeAudiences={activeAudiences}\n analyticsData={analyticsData}\n imageCdnUrl={config.data.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n emptyImageUrl={isTeacherOnly ? ImageUrls.EmptyStates.Topics.TEACHER_ONLY : ImageUrls.EmptyStates.Topics.TOPIC}\n isComingSoon={isComingSoon}\n showFollowButtonSpinner={showFollowButtonSpinner}\n comingSoonImageUrl={ImageUrls.EmptyStates.Topics.COMING_SOON}\n appLinks={appLinks}\n isPreviewing={isPreviewing}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n isViewCurrentPresentation={isViewCurrentPresentation}\n canFollowSubjects={canFollowSubjects}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n tableOfContentsId={props.queryParams.tocId}\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n moviesAndTv={props.queryParams.mtv}\n isTeacherOnly={isTeacherOnly}\n specialEvent={specialEvent.data}\n isBot={SeoHelper.isBot()}\n canViewTopicTabs={canViewTopicTabs}\n hasTopicDirectoryDashboard={hasTopicDirectoryDashboard}\n hasTopicVideosDashboard={hasTopicVideosDashboard}\n tab={TopicsHelper.getActiveTopicTab(classification.data, props.targetType)}\n // just... one... more.. prop....\n isPlugin={isPlugin}\n />\n </div>\n </VideoActionsContext.Provider>\n );\n}\n","import { useSettings } from 'libs/shared/hooks/useSettings';\nimport { DashboardTargetType } from 'libs/shared/interfaces';\n\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\n\nimport { ClassificationViewQueryParams } from '../views/classification/ClassificationViewUtils';\n\nexport function useFetchClassificationDashboard(\n id: string,\n queryParams: ClassificationViewQueryParams,\n targetType: DashboardTargetType\n) {\n const { hasTopicDirectories } = useSettings(null);\n\n const {\n dashboard: curatedTopicDashboard,\n isPreviewing,\n isTeacherOnly\n } = useFetchCuratedDashboard({\n classificationId: id,\n queryParams: queryParams,\n targetType: DashboardTargetType.Classification\n });\n\n const { dashboard: directoryDashboard } = useFetchCuratedDashboard({\n classificationId: id,\n queryParams: queryParams,\n targetType: DashboardTargetType.ClassificationDirectory\n });\n\n const { dashboard: videosDashboard } = useFetchCuratedDashboard({\n classificationId: id,\n queryParams: queryParams,\n targetType: DashboardTargetType.ClassificationVideos\n });\n\n function getDashboard() {\n switch (targetType) {\n case DashboardTargetType.Classification:\n return curatedTopicDashboard;\n case DashboardTargetType.ClassificationDirectory:\n return directoryDashboard;\n case DashboardTargetType.ClassificationVideos:\n return videosDashboard;\n }\n }\n\n return {\n dashboard: getDashboard(),\n canViewTopicTabs: hasTopicDirectories,\n hasTopicDirectoryDashboard: !!directoryDashboard.data,\n hasTopicVideosDashboard: !!videosDashboard.data,\n isTeacherOnly,\n isPreviewing\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["CalendarRequests","calendarEvents","from","to","presentationId","url","publicUrl","key","nextTopicSpecialEvent","classificationId","params","limit","Date","objectType","formatData","events","AudienceItem","props","audience","highlight","setAudience","isDisabled","extraClasses","colourClass","getColourClass","className","onClick","FunctionHelper","role","name","split","map","s","charAt","toUpperCase","substring","join","defaultProps","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","TabContents","tab","svgName","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","index","active","appLink","analyticsData","analyticsOptions","onSelect","onSelectTab","TableOfContentsList","actionType","entity","location","items","item","idx","localState","DivButton","id","activeId","ScrollHelper","setControlledId","onItemClick","AppLink","getAppLink","appLinkOptions","replace","FeedbackType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","FeedbackRequests","submitFeedback","requestData","formValues","endpoints","ids","FollowRequests","follow","userId","success","error","followers","invalidationKeys","unfollow","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","usePrevious","value","current","timer","useTableOfContentsActiveHeading","setActiveId","headingElements","controlledId","scrollPositionRef","observer","IntersectionObserver","headings","heading","window","setTimeout","isIntersecting","target","scrollY","isScrollingUp","curIndex","findIndex","h","prevHeading","rootMargin","element","observe","clearTimeout","disconnect","length","useTableOfContentsScroll","elements","hasDoneInitialScroll","setHasDoneInitialScroll","previousId","currentId","find","rec","getBoundingClientRect","scrollBy","top","behavior","FeedbackFormHelper","getUserInfo","currentUser","customer","username","email","userType","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","mapInstanceRegionToTag","getTags","product","hasStudentExperience","extraTags","tags","push","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","namespace","getPhrase","LanguageService","CuratedClassificationEmptyState","isArchived","dashboard","EmptyState","src","imageUrl","altText","isReadonly","Text","phrase","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","TableOfContentsMobile","isExpanded","setIsExpanded","widgets","IconButton","AnalyticsHelper","TableOfContents","TableOfContentsContainer","widget","currentAppLink","ContextService","tocId","isSmallScreen","TeacherOnlyEmptyState","ctaAppLink","ClassificationComingSoon","isFollowing","canFollowSubjects","ActionButton","onToggleFollow","showSpinner","showFollowButtonSpinner","AudienceFilter","audiences","activeAudiences","setActiveAudiences","SharedViewModelKeys","undefined","storage","onToggleAudience","isSelected","otherParams","activeAudienceNames","a","filter","ObjectHelper","Object","assign","disablePersist","masterId","aa","keys","PARTIAL_AUDIENCES","PartialLoadingHelper","numItems","PartialAudienceFilter","width","dangerouslySetInnerHTML","__html","style","ClassificationDashboardAudiences","getTabs","breakpoints","activeTab","isHighlighting","showText","lg","xl","xxl","xs","TopicsHelper","classification","appLinks","classificationName","presentation","presentationDescription","description","classificationDirectory","classificationVideos","ClassificationTabs","useBreakpoints","useDirectoryTabProductTipSwitcher","setProductTipRef","el","ClassificationDashboardNav","isEmpty","hideAudiences","isComingSoon","AudienceHelper","canShowTabs","canViewTopicTabs","hasTopicDirectoryDashboard","hasTopicVideosDashboard","getTopRowClass","Breadcrumbs","breadcrumbs","getBreadcrumbs","getBottomRowClass","isViewingCurrentPresentation","isHeadingWidget","widgetId","WidgetTypeId","templateId","WidgetTemplate","ClassificationDashboard","isSystemGeneratedDashboard","systemGeneratedVideoWidget","systemGeneratedVideoContent","DashboardRequests","videoList","content","videoListWidgetId","useGetTopicsWidgets","headingRef","Set","initialEmptyWidgets","acc","emptyWidgets","setEmptyWidgets","hash","slice","tableOfContentActiveId","setTableOfContentActiveId","getWidgetContentRequest","widgetTypeId","template","tableOfContentsId","showEmptyState","isTeacherOnly","isPreviewing","values","every","state","onSetIsEmpty","newEmptyState","currentWidget","isHeadingEmpty","subWidgetIndex","headingSubWidget","hideWidget","getWidgetHeading","previousWidget","widgetsInTableOfContents","w","metadata","showInTableOfContents","shouldShowTableOfContents","shouldShowSideTableOfContents","moviesAndTv","BannerHeader","banner","imageCdnUrl","actions","getBannerActions","actionsDropdownClassName","specialEvent","calendarTheme","background","border","showComingSoon","isViewCurrentPresentation","comingSoonImageUrl","WidgetContainerView","headingElementRef","getContentRequest","setIsEmpty","setFavourite","canFavourite","yearGroups","isScrollToTargetWidget","scrollToWidgetId","onSubmitFeedback","isBot","hasTableOfContents","lazyLoad","dashboardTarget","widgetIndex","hasPermissions","hasLocalPermissions","companyLogoFallbackUrl","subTextType","contentType","resourceThumbnailFallbackImageUrl","preferences","onToggleFollowClassification","isPlugin","clickable","WidgetHeader","VideoList","videos","getVideoAppLink","v","opts","videoType","contextId","getSubTextAppLink","subText","presentationAudiences","getPreviewQuestionsAppLink","previewQuestions","getClassroomGuideAppLink","classroomGuide","getInteractiveGuidanceAppLink","interactiveGuidance","getResourceGuidanceAppLink","resourceGuidance","emptyImageUrl","widgetWizard","allTopics","PartialClassificationDashboard","TopicNotFoundError","application","action","ErrorPageError","OMITTED_PARAMS","CuratedClassificationView","queryParams","setShowFollowButtonSpinner","alerts","fetchAsync","usePermissions","usePluginHelper","config","ConfigRequests","UserRequests","useCurationStudio","openInCurationStudioLabel","isUserCurator","getOpenInCurationStudioLink","PermissionName","CustomerRequests","ClassificationRequests","AudienceRequests","usePresentation","activePresentation","availablePresentations","canAccessPresentation","isAuthenticated","path","targetType","hasTopicDirectories","useSettings","curatedTopicDashboard","directoryDashboard","videosDashboard","getDashboard","useFetchClassificationDashboard","regionAlternatives","useSetPageMetadata","PageMetadataHelper","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","hrefLang","args","TextHelper","useDeepLinks","app","isMobile","useLiteFavourites","u","videoActions","useVideoActions","ClassificationStatus","activeAudienceIds","followedClassification","isTogglingCurrentTopic","toString","request","then","workflowPhase","descriptor","_classification","appLinkClassification","video","VideoAppLinkHelper","context","RelatedVideosContext","mtv","series","SeriesAppLinkHelper","playlist","resource","videoId","canViewResources","getClassificationAppLinks","useBreadcrumbs","presentationName","currentClassificationId","currentClassificationName","followingCurrentClassification","hasCompleted","VideoActionsContext","PreviewBanner","label","button","tooltip","href","MasterType","openInNewTab","ImageUrls","feedback","user","ProductId","reaction","dashboardName","dashboardId","promise","feedbackType"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3633],{50690:(e,t,n)=>{n.d(t,{b:()=>a});var r=n(12788),a={renderInPortalIfExists:function(e,t){return t?(0,r.createPortal)(e,t):e}}},84963:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(32735),a=n(23481),o=n(83914),i=n(76177),l=n(35223);const c={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function u(e){return r.createElement(i.u,{title:a.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(c.tooltip),spanHack:!0},r.createElement("div",{className:"d-flex text-dark align-items-center ".concat(c.tag," ").concat(e.className)},r.createElement(o.x,{svgName:l.vn.Timer}),!e.onlyIcon&&a.T.getPhrase(s,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>i});var r=n(32735),a=n(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function i(e){var t,n,i;return r.createElement(a.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},r.createElement("div",{className:"position-relative ".concat(o.dateItem)},r.createElement("div",{className:"".concat(null===(i=e.theme)||void 0===i?void 0:i.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:r.createElement(r.Fragment,null," ")),r.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),r.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},44522:(e,t,n)=>{n.d(t,{p:()=>x,v:()=>w});var r=n(32735),a=n(110),o=n(50690),i=n(84963),l=n(73679),c=n(83657),s=n(23481),u=n(36848),d=n(83914),m=n(35223),f="shared.backButton";function v(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,a=t.appLink,o=t.color,i=t.extraClasses,l=t.textShadow,c=n?s.T.getPhrase(f,"backTo",{backToName:n}):s.T.getPhrase(f,"back"),v="black"===o?"":"text-white",p=l?"text-shadow":"";return r.createElement(u.F,{appLink:a,className:"d-inline-flex align-items-center h5 mb-0 ".concat(i," ").concat(v," ").concat(p)},r.createElement(d.x,{svgName:m.vn.ChevronLeft,size:d.S.Medium}),r.createElement("span",{className:"ms-1"},c))}v.defaultProps={color:"black",extraClasses:""};var p=n(36518),b=n(83345),g=n(10587),h=n(94232),y=n(54610),E=n(79967),C=n(67453);const N={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var k="".concat(g.y[y.__.Banners].width,":").concat(g.y[y.__.Banners].height);function S(e){return e.length<160?"h1":N.headingLarge}var x=r.memo((function(e){var t,n,s,u,d=e.heading,m=e.banner,f=e.imageCdnUrl,g=e.actions,x=e.sortComponent,w=e.blockColourClass,A=e.specialEvent,I=r.useContext(h.n),L=(0,E.k)().xxl?1920:1200,O=r.useMemo((function(){if(!A||e.showComingSoon)return!1;var t=a.O.format(new Date,"YYYY-MM-DD");return A.endDate?A.startDate<=t&&A.endDate>=t:A.startDate===t}),[A]),F=e.imageOptions||{width:L,ratio:k,resizeType:y.Nq.Cover},P=!!m&&!!f&&C.j.createBannerUrl(m,{fallbackBaseUrl:f,fallbackCategoryName:d,type:y.__.Banners},F),T={className:"banner banner-header ".concat(e.bannerClassName),style:P?{backgroundImage:"url('".concat(P,"')")}:{}};!m&&w&&(delete T.style,T.className+=" ".concat(w));var j=e.detailsComponent;return o.b.renderInPortalIfExists(r.createElement("header",Object.assign({},T),r.createElement("div",{className:"container ".concat(N.container," position-relative inner-banner")},e.backButtonAppLink&&r.createElement("div",{className:"pt-3"},r.createElement(v,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),r.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(N.bannerContent," px-2 ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?N.bannerContentWithLogo:""))},!!A&&r.createElement("div",{className:"position-relative ".concat(N.specialEventContainer)},r.createElement(l.s,{body:{type:A.endDate?"range":"day",text:A.endDate?"".concat(a.O.format(A.startDate,"DD"),"-").concat(a.O.format(A.endDate,"DD")):a.O.format(A.startDate,"DD")},month:a.O.format(A.startDate,"MMMM"),theme:e.calendarTheme})),r.createElement("div",null,O&&r.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},r.createElement(b.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&r.createElement(i.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),r.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&r.createElement("div",{className:"".concat(N.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&r.createElement(p.w,{src:C.j.createUrl(null===(s=e.logo)||void 0===s?void 0:s.url,{size:y.h2.Medium})})),r.createElement("h1",{className:"text-white text-shadow pe-3 position-static ".concat(N.heading," ").concat(S(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,j&&r.createElement(j,null)))),!!g&&r.createElement("div",{className:N.actionsContainer},r.createElement(c.e,{actions:g,sortComponent:x,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&r.createElement("div",{className:N.logoContainer},r.createElement("img",{src:C.j.createUrl(e.logo.url,{size:y.h2.Small}),className:"rounded-circle"})))),null==I?void 0:I.container)}),(function(e,t){var n,r;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(r=t.logo)||void 0===r?void 0:r.url)}));function w(){var e=r.useContext(h.n);return o.b.renderInPortalIfExists(r.createElement("div",{className:"partial-banner partial-loading-background ".concat(N.banner)}),null==e?void 0:e.container)}},49935:(e,t,n)=>{n.d(t,{Oo:()=>m,b2:()=>f});var r=n(32735),a=n(36848),o=n(86764),i=n(3747),l=n(5859),c=n(35223),s=n(83914);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d=function(e){var t=e.breadcrumb,n=t.name,o=t.appLink,i=t.active,l=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?r.createElement("strong",null,n):r.createElement(a.F,{appLink:o},l&&r.createElement(s.x,{svgName:c.vn.ChevronLeft,size:s.S.Small}),r.createElement("span",{className:l?"ms-2":""},n)))},m=function(e){var t,n,a=e.breadcrumbs,l=(0,i.a)(o.r.XS),c=(null==a?void 0:a.length)||0,s=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=s[0],f=s[1];if(r.useEffect((function(){var e,t=null!==(e=null==a?void 0:a.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;c>3&&t>56&&f(!0)}),[null==a?void 0:a.length]),!c||l&&c<2)return r.createElement(r.Fragment,null);if(l)return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(d,{breadcrumb:a[c-2],withBackIcon:!0})));var v=r.createElement(d,{breadcrumb:a[0]}),p=c>2?r.createElement(d,{breadcrumb:a[c-2]}):r.createElement(r.Fragment,null),b=r.createElement(d,{breadcrumb:a[c-1]}),g=a.slice(1,c-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},v,m?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){return f(!1)}},"...")):g.map((function(e,t){return r.createElement(d,{key:t,breadcrumb:e})})),p,b))},f=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,i.a)(o.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},71020:(e,t,n)=>{n.d(t,{_:()=>u});var r=n(32735),a=n(80247),o=n(34152),i=n(83914),l=n(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=(0,o.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1];return r.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),r.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:d},e.isFetching?r.createElement(a.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):r.createElement(i.x,{svgName:l.vn.ChevronDown,className:"svg-container cursor-pointer",size:i.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},74696:(e,t,n)=>{n.d(t,{S:()=>s});var r=n(32735),a=n(68050),o=n(69111),i=n(9977),l=n(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return r.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return r.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&r.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),r.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===i.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return r.createElement(a.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},r.createElement(o.Z,Object.assign({},i.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),r.createElement(a.Z,null,!!s&&r.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},r.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),r.createElement(o.Z,{xs:i.O.getThumbnailColSize(s)},r.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),r.createElement(o.Z,Object.assign({},i.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),r.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),r.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),o=n(67058),i=n(14553),l=n(49267),c=n(49075),s={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:l.a,privacy:i.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},s),t);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==r.o.NotFound?o!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new i.badRequest):n.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):n.notFound||a.Q.Ry.throw(new i.notFound))}}},60115:(e,t,n)=>{n.d(t,{K:()=>s});var r=n(32735),a=n(50242),o=n(91967),i=400,l=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t,n,s,u,d){var m,f,v,p,b=(m=(0,r.useState)(0),f=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(m,f)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(m,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=b[0],h=b[1],y=t,E=(0,l.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),s,u);return v={fetchNextPage:function(){if(t&&e&&E)return h((function(e){return e+1})),y(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:d},p=function(){if(!v.isFetching){if(v.scrollContainer){var e=v.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-i)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-i)return;v.fetchNextPage()}},(0,r.useEffect)((function(){var e=o.q.throttle(p,200),t=v.scrollContainer||window;return v.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[v.hasMore,v.fetchNextPage,v.scrollContainer]),(0,r.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(y(),h((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,r.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&o.q.isFunction(n)){var r=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(g,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},63719:(e,t,n)=>{n.d(t,{h:()=>l});var r=n(32735),a=n(77316);function o(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){var t,n,l=(t=r.useMemo((function(){return a.p.getBuilder()}),[]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||o(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],s=(0,l[1])(c);return s&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(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}},5859:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{u:()=>o});var a={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},44110:(e,t,n)=>{n.d(t,{i:()=>i});var r=n(20354),a=n(89454),o=n(86698),i=function(){var e=(0,o.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,i=t||n();return r.a.useBasicFetch(!!i&&a.O.presentationAudiences(i.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var r=n(32735),a=n(20354),o=n(21750),i=n(31949),l=n(1575),c=n(31908);function s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e){var t,n,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=a.a.useBasicFetch(i.N.currentUser()),f=r.useRef(new Set),v=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):[]:[]}(e),p=v.map((function(e){return e.id})),b=(t=r.useState([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||s(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=b[0],h=b[1];r.useEffect((function(){if((null==p?void 0:p.length)&&m.hasCompleted){var e=[];p.forEach((function(t){f.current.has(t)||(e.push(t),f.current.add(t))})),e.length&&h((function(t){var n,r=[].concat(function(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t),[l.R.videoMixinAssocs(e,d.flightNamespace)]);return(null===(n=m.data)||void 0===n?void 0:n.isAuthenticated)&&r.push(o.x.hasCurriculumLinks(e,null,d.flightNamespace)),r}))}}),[null==p?void 0:p.length,m.hasCompleted]),a.a.useBasicFetchAll(g)}},19530:(e,t,n)=>{n.r(t),n.d(t,{FavouritesView:()=>Q});var r=n(32735),a=n(70680),o=n(23481),i=n(20354),l=n(65858),c=n(44522),s=n(49935),u=n(71020),d=n(83345),m=n(74696),f=n(13231),v=n(51365),p=n(16714),b=n(94644),g=n(39151),h=n(1666),y=n(63419),E=n(31949),C=n(69883),N=n(63719),k=n(60115),S=n(22902),x=n(79612),w=n(99742),A=n(51855),I=n(27638),L=n(44110),O=n(97816),F=n(10741),P=n(22490),T=n(82431),j=n(23232),D=n(83914),M=n(35223),B=n(14070),R=n(97291),V="shared.favouritesEmptyState",_=o.T.encloseNamespace(V);function U(){return r.createElement(d.D.Provider,{value:V},r.createElement(j.u,null,r.createElement(j.u.Image,{src:w.W.EmptyStates.FAVOURITED_VIDEOS,altText:_("info")}),r.createElement("div",{className:"d-flex mb-2"},r.createElement(j.u.Heading,{className:"h3 mb-0"},r.createElement(d.x,{phrase:"emptyStateHeading1"})),r.createElement("div",{className:"box-shadow rounded-circle p-1 bg-white mx-1"},r.createElement(D.x,{svgName:M.vn.HeartOutline,size:D.S.Small})),r.createElement(j.u.Heading,{className:"h3 mb-0"},r.createElement(d.x,{phrase:"emptyStateHeading2"}))),r.createElement(j.u.Info,null,r.createElement(d.x,{phrase:"info"})),r.createElement(j.u.Cta,{text:o.T.getPhrase(V,"cta"),appLink:{application:R.O.DASHBOARD,action:B.e.Dashboard.HOME}})))}function H(){return r.createElement(d.D.Provider,{value:V},r.createElement(j.u,null,r.createElement(j.u.Image,{src:w.W.EmptyStates.FAVOURITED_VIDEOS_PUBLIC,altText:_("publicInfo")}),r.createElement(j.u.Heading,null,r.createElement(d.x,{phrase:"publicHeading"})),r.createElement(j.u.Info,null,r.createElement(d.x,{phrase:"publicInfo"})),r.createElement(j.u.Cta,{text:o.T.getPhrase(V,"publicCta"),appLink:{application:R.O.SIGN_UP,action:B.e.SignUp.SIGN_UP},analyticsData:{},analyticsOptions:{actionType:l.Vw.Click,location:l.LZ.MyFavouritesLanding,entity:l.py.AppLink,workflowPhase:l.eu.Start,descriptor:l.Yu.SignUp}})))}var W=n(26323),G=n(31908),Z=n(10671),q="shared.favourites";const $={banner:"FEWd3"};var z="shared.favourites";function Q(){var e,t,n,j=(0,a.I0)(),D=(0,C.Z)(),B=(0,I.u)(l.LZ.VideoThumbnail),R=B.setFavourite,V=B.canFavourite,_=(0,A.G)().isPlugin,Q=function(){var e=(0,Z._)({location:Z.i.VideoItem}),t=(0,I.u)(l.LZ.VideoThumbnail).setFavourite;return Object.assign(Object.assign({},e),{getVideoActions:function(n){return G.M.getCanBeConsumed(n).canConsume?e.getVideoActions(n):[{label:o.T.getPhrase(q,"removeFromFavourites"),svgName:M.vn.Delete,button:!1,className:"btn btn-link text-danger",onClick:function(){return t(n,!1)}}]}})}();(0,x.M)({title:o.T.getPhrase(z,"pageTitle")});var Y=(0,S.T)(),X=Y.hasLocalPermissions,J=Y.hasPermissions,K=i.a.useBasicFetch(E.N.currentUser()),ee=i.a.useBasicFetch((null===(e=K.data)||void 0===e?void 0:e.isAuthenticated)&&h.h.yearGroups(K.data.customerId)),te=i.a.useBasicFetch(g.L.config()),ne=function(e){return y.P.getFavourites(K.data.id,e)},re=function(e){return i.a.getFetch(j)(ne(e))},ae=!X(p.E.ViewMyFavouritesLanding)&&K.hasCompleted,oe=(0,k.K)(!!ae&&ne,re,(function(e,t){if(1===e)return(0,b.r)(t);D.error(o.T.getPhrase(z,"error"))})),ie=oe.items,le=oe.hasMore,ce=oe.isFetching;(0,O.V)(ie);var se=(0,L.i)(),ue=(0,N.h)({name:o.T.getPhrase(z,"header")}),de=(0,W.B)(null===(t=K.data)||void 0===t?void 0:t.id),me=de.count;return de.isLoading?r.createElement(r.Fragment,null):X(p.E.ViewMyFavouritesLanding)?r.createElement(H,null):r.createElement(v.M.Provider,{value:Q},r.createElement("div",{className:"p-3"},r.createElement(c.p,{heading:o.T.getPhrase(z,"header"),banner:{url:w.W.FAVOURITES_PLAYLIST.FAV_PLAYLIST_BANNER},bannerClassName:"".concat($.banner," bg-pink"),imageCdnUrl:null===(n=te.data)||void 0===n?void 0:n.imageCdnUrl,detailsComponent:function(){return r.createElement("div",{className:"mb-n1 font-size-normal fw-normal mt-1"},r.createElement(d.x,{namespace:z,phrase:"videos",options:{smartCount:me}}))}}),(null==ue?void 0:ue.length)&&r.createElement("div",{className:"border-bottom pb-3"},r.createElement(s.Oo,{breadcrumbs:ue})),ie?ie.length?r.createElement(r.Fragment,null,r.createElement(f.E4,{videos:ie,yearGroups:ee.data,getVideoAppLink:P.W.getAppLink,hasPermissions:J,getSubTextAppLink:function(e){return T.j.getSeriesAppLink(e.series)},setFavourite:R,canFavourite:V,presentationAudiences:se.data,getPreviewQuestionsAppLink:function(e){return F.j.getPreviewQuestionsAppLink(e)},isPlugin:_,getClassroomGuideAppLink:P.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:P.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:P.W.getResourceGuidanceAppLink}),(le||ce)&&r.createElement(u._,{isFetching:ce,fetchNext:re})):r.createElement(U,null):r.createElement(m.S,null)))}},26323:(e,t,n)=>{n.d(t,{B:()=>l});var r=n(20354),a=n(63419);function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function l(e){var t,n,i,l,c,s,u,d,m,f=r.a.useBasicFetch(e&&a.P.getFavouritesVideosCount(e)),v=r.a.useBasicFetch(e&&a.P.getFavouritesClipsCount(e)),p=r.a.useBasicFetch(e&&a.P.getFavouritesInteractivesCount(e));return{count:(null===(t=f.data)||void 0===t?void 0:t.count)+(null===(n=p.data)||void 0===n?void 0:n.count)+(null===(i=v.data)||void 0===i?void 0:i.count),favourites:[].concat(o((null===(l=f.data)||void 0===l?void 0:l.data)||[]),o((null===(c=v.data)||void 0===c?void 0:c.data)||[]),o((null===(s=p.data)||void 0===s?void 0:s.data)||[])),isLoading:!(null===(u=f.data)||void 0===u?void 0:u.data)||!(null===(d=v.data)||void 0===d?void 0:d.data)||!(null===(m=p.data)||void 0===m?void 0:m.data)}}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(95685),a=n.n(r),o=n(32735),i=n(46304),l=n(74512);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...r},o)=>{const c=(0,i.vE)(e,"row"),s=(0,i.pi)(),u=(0,i.zG)(),d=`${c}-cols`,m=[];return s.forEach((e=>{const t=r[e];let n;delete r[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const a=e!==u?`-${e}`:"";null!=n&&m.push(`${d}${a}-${n}`)})),(0,l.jsx)(n,{ref:o,...r,className:a()(t,c,...m)})}));c.displayName="Row";const s=c}}]);
2
+ //# sourceMappingURL=3633-025f418c19-lite.chunk.js.map