@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
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5877],{49935:(e,t,n)=>{n.d(t,{Oo:()=>m,b2:()=>d});var r=n(32735),a=n(36848),i=n(86764),u=n(3747),s=n(5859),l=n(35223),c=n(83914),o=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,u=t.active,s=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(u?" active":"")},u?r.createElement("strong",null,n):r.createElement(a.F,{appLink:i},s&&r.createElement(c.x,{svgName:l.vn.ChevronLeft,size:c.S.Small}),r.createElement("span",{className:s?"ms-2":""},n)))},m=function(e){var t=e.breadcrumbs,n=(0,u.a)(i.r.XS),a=null==t?void 0:t.length;return!a||n&&a<2?r.createElement(r.Fragment,null):n?r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(o,{breadcrumb:t[a-2],withBackIcon:!0}))):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return r.createElement(o,{key:t,breadcrumb:e})}))))},d=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,u.a)(i.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"},s.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"}}))}))))}))},82644:(e,t,n)=>{n.d(t,{b:()=>o,n:()=>c});var r=n(32735),a=n(92802),i=n(91967),u=n(1048);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}var l=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function c(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,c=e.initialValues,o=e.onSubmit,m=l(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=u.t.deepClone(e);return function e(n){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&(u.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])}))}(t),t}(c)):c,f={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,i=r.resetForm,u=r.setFieldError,l=n&&e.validationSchema?e.validationSchema.cast(t):t;o(l,(function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.reset&&i(),n.errors)for(var r=0,l=Object.entries(n.errors);r<l.length;r++){var c=(e=l[r],t=2,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 r,a,i,u,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw a}}return s}}(e,t)||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}}(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.")}()),o=c[0],m=c[1];u(o,m)}a(!1)}))},initialStatus:f}),i.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function o(){return(0,a.u6)()}c.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},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:()=>i});var a={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},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")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>g});var r=n(32735),a=n(81886),i=n(23481),u=n(49935),s=n(22902),l=n(14070),c=n(97291),o=n(96368);function m(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="settings.settingsLayout",f=function(e){var t=(0,s.T)().hasPermissions,n=(0,o.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==c.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function g(e){var t,n=f(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:c.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var s,o=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(u.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME}}].concat((s=o,function(e){if(Array.isArray(e))return m(e)}(s)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(s)||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.")}()))})),e.description&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},706:(e,t,n)=>{n.d(t,{F:()=>a});var r=n(99940),a={getCustomerSecuritySettings:function(e,t,n){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"customers:security:settings",normalize:!1,success:t,error:n}},setCustomerSecuritySettings:function(e,t,n,a){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:r.k.PUT,normalize:!1,data:t,success:n,error:a}}}},55877:(e,t,n)=>{n.r(t),n.d(t,{SecuritySettingsView:()=>T});var r=n(32735),a=n(70680),i=n(23481),u=n(20354),s=n(39739),l=n(82644),c=n(76881),o=n(86613),m=n(31949),d=n(69883),f=n(92802),g=n(2102),h=n(33936),b=[5,6,7,8,9,10,11,12];function p(e){function t(t){var n="btn border";return t===e.currentValue?n+=" btn-dark":n+=" btn-outline-dark",t<e.minLength&&(n+=" disabled"),n}return r.createElement("div",{className:"pb-2"},r.createElement("h3",{className:"h6"},e.headingText),r.createElement("div",{className:"btn-group mb-1"},b.map((function(n){return r.createElement("button",{key:n,className:t(n),onClick:function(t){return function(t,n){t.preventDefault(),n<e.minLength||e.setMinimumPasswordLength(n)}(t,n)},type:"button"},n)}))),r.createElement("p",{dangerouslySetInnerHTML:{__html:e.minPasswordLengthText}}))}var S=i.T.encloseNamespace("settings.passwordSecuritySettings"),v=5,y=8,E=8;function L(){var e=(0,f.u6)(),t=(0,h.l)(e);return r.createElement(f.l0,null,r.createElement("h2",{className:"h4"},S("heading")),r.createElement(p,{currentValue:e.values.minStudentLength,headingText:S("studentSubheading"),minLength:v,minPasswordLengthText:S("minimumStudentLength",{length:e.values.minStudentLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minStudentLength",t)}}),r.createElement(p,{currentValue:e.values.minStaffLength,headingText:S("staffSubheading"),minLength:y,minPasswordLengthText:S("minimumStaffLength",{length:e.values.minStaffLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minStaffLength",t)}}),r.createElement(p,{currentValue:e.values.minAdminLength,headingText:S("adminSubheading"),minLength:E,minPasswordLengthText:S("minimumAdminLength",{length:e.values.minAdminLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minAdminLength",t)}}),r.createElement("div",{className:"d-flex"},r.createElement(g.m,{type:"submit",variant:"dark",disabled:!t,showSpinner:e.isSubmitting},S("saveChanges"))))}var w=n(81803),O=n(706),A=n(5173),I=(0,A.Ry)().shape({minStudentLength:(0,A.Rx)().required(),minStaffLength:(0,A.Rx)().required(),minAdminLength:(0,A.Rx)().required()}).noUnknown(),k=i.T.encloseNamespace("settings.securitySettings");function T(){var e=(0,a.I0)(),t=(0,d.Z)(),n=u.a.useBasicFetch(m.N.currentUser()),i=u.a.useBasicFetch(n.data&&O.F.getCustomerSecuritySettings(n.data.customerId)),f=s.P.getMinimumPasswordLength,g=f(i.data,c.Y.Learner,o.i.User),h=f(i.data,c.Y.Staff,o.i.User),b=f(i.data,c.Y.Staff,o.i.Admin);return n.data&&i.data?r.createElement(w.d,{heading:k("heading"),breadcrumbs:[k("breadcrumb")]},r.createElement(l.n,{initialValues:{minStudentLength:g,minStaffLength:h,minAdminLength:b},validationSchema:I,onSubmit:function(r,a){var i={securitySettings:[]};g!==r.minStudentLength&&i.securitySettings.push({userType:c.Y.Learner,userRole:o.i.User,minPasswordLength:r.minStudentLength}),h!==r.minStaffLength&&i.securitySettings.push({userType:c.Y.Staff,userRole:o.i.User,minPasswordLength:r.minStaffLength}),b!==r.minAdminLength&&i.securitySettings.push({userType:c.Y.Staff,userRole:o.i.Admin,minPasswordLength:r.minAdminLength}),u.a.fetch(e,O.F.setCustomerSecuritySettings(n.data.customerId,i,(function(){t.success(k("success"))}),(function(){t.error(k("error")),a({reset:!0})})))}},r.createElement(L,null))):r.createElement(r.Fragment,null)}}}]);
2
- //# sourceMappingURL=5877-ddfaf6a7f5-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/5877-ddfaf6a7f5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-request/SecuritySettingsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/components/edit-password-length/EditPasswordLength.tsx","file:///app/packages/projects/lite/src/apps/settings/components/password-security-settings/PasswordSecuritySettingsForm.tsx","file:///app/packages/projects/lite/src/apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/views/security-settings/SecuritySettingsView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: '&nbsp' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};","import React from 'react';\n\nconst PASSWORD_LENGTHS = [ 5, 6, 7, 8, 9, 10, 11, 12 ];\n\ninterface EditPasswordLengthProps {\n currentValue: number;\n setMinimumPasswordLength: (length: number) => void;\n minLength: number;\n\n headingText: string;\n minPasswordLengthText: string;\n}\n\nexport function EditPasswordLength(props: EditPasswordLengthProps): JSX.Element {\n function onClick(e: React.MouseEvent, option: number): void {\n e.preventDefault();\n\n if (option < props.minLength)\n return;\n\n props.setMinimumPasswordLength(option);\n }\n\n function getButtonClassName(option: number): string {\n let className = 'btn border';\n\n if (option === props.currentValue)\n className += ' btn-dark';\n else\n className += ' btn-outline-dark';\n\n if (option < props.minLength)\n className += ' disabled';\n\n return className;\n }\n\n return (\n <div className='pb-2'>\n <h3 className='h6'>{props.headingText}</h3>\n <div className='btn-group mb-1'>\n {PASSWORD_LENGTHS.map(option => (\n <button\n key={option}\n className={getButtonClassName(option)}\n onClick={e => onClick(e, option)}\n type='button'\n >\n {option}\n </button>\n ))}\n </div>\n <p dangerouslySetInnerHTML={{ __html: props.minPasswordLengthText }}/>\n </div>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nimport { EditPasswordLength } from 'apps/settings/components/edit-password-length/EditPasswordLength';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nconst namespace = 'settings.passwordSecuritySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MINIMUM_ALLOWED_STUDENT_LENGTH = 5;\nconst MINIMUM_ALLOWED_STAFF_LENGTH = 8;\nconst MINIMUM_ALLOWED_ADMIN_LENGTH = 8;\n\nexport function PasswordSecuritySettingsForm(): JSX.Element {\n const formikProps = useFormikContext<EditSecuritySettings>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <h2 className='h4'>{getPhrase('heading')}</h2>\n <EditPasswordLength\n currentValue={formikProps.values.minStudentLength}\n headingText={getPhrase('studentSubheading')}\n minLength={MINIMUM_ALLOWED_STUDENT_LENGTH}\n minPasswordLengthText={getPhrase('minimumStudentLength', { length: formikProps.values.minStudentLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStudentLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minStaffLength}\n headingText={getPhrase('staffSubheading')}\n minLength={MINIMUM_ALLOWED_STAFF_LENGTH}\n minPasswordLengthText={getPhrase('minimumStaffLength', { length: formikProps.values.minStaffLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStaffLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minAdminLength}\n headingText={getPhrase('adminSubheading')}\n minLength={MINIMUM_ALLOWED_ADMIN_LENGTH}\n minPasswordLengthText={getPhrase('minimumAdminLength', { length: formikProps.values.minAdminLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minAdminLength', length)}\n />\n\n <div className='d-flex'>\n <SpinnerButton\n type='submit'\n variant='dark'\n disabled={!canSubmit}\n showSpinner={formikProps.isSubmitting}\n >\n {getPhrase('saveChanges')}\n </SpinnerButton>\n </div>\n </Form>\n );\n}","import { number, object } from 'yup';\n\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nexport const EditPasswordSecuritySettingsValidationSchema = object().shape<EditSecuritySettings>({\n minStudentLength: number()\n .required(),\n \n minStaffLength: number()\n .required(),\n \n minAdminLength: number()\n .required()\n \n}).noUnknown();","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PasswordSecuritySettingsForm } from 'apps/settings/components/password-security-settings/PasswordSecuritySettingsForm';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-request/SecuritySettingsRequests';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\nimport { EditPasswordSecuritySettingsValidationSchema } from 'apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema';\n\nconst namespace = 'settings.securitySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SecuritySettingsView(): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const securitySettings = Flight.useBasicFetch<SecuritySettingsResponse>(\n currentUser.data && SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId)\n );\n\n const { getMinimumPasswordLength } = UserManagerHelper;\n const initialStudentLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Learner, UserRole.User);\n const initialStaffLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.User);\n const initialAdminLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.Admin);\n\n function saveSettings(data: EditSecuritySettings, onDone: (options: FormSubmissionOptions) => void): void {\n const updatedSecuritySettings: UpdateSecuritySettingsRequest = {\n securitySettings: []\n };\n\n if (initialStudentLength !== data.minStudentLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Learner,\n userRole: UserRole.User,\n minPasswordLength: data.minStudentLength\n });\n }\n\n if (initialStaffLength !== data.minStaffLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.User,\n minPasswordLength: data.minStaffLength\n });\n }\n\n if (initialAdminLength !== data.minAdminLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.Admin,\n minPasswordLength: data.minAdminLength\n });\n }\n\n Flight.fetch(dispatch, SecuritySettingsRequests.setCustomerSecuritySettings(\n currentUser.data.customerId,\n updatedSecuritySettings,\n () => {\n alerts.success(getPhrase('success'));\n },\n () => {\n alerts.error(getPhrase('error'));\n onDone({ reset: true });\n }\n ));\n }\n\n const dataLoaded = !!currentUser.data && !!securitySettings.data;\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <FormWrapper<EditSecuritySettings>\n initialValues={{\n minStudentLength: initialStudentLength,\n minStaffLength: initialStaffLength,\n minAdminLength: initialAdminLength\n }}\n validationSchema={EditPasswordSecuritySettingsValidationSchema}\n onSubmit={saveSettings}\n >\n <PasswordSecuritySettingsForm />\n </FormWrapper>\n </SettingsLayout>\n );\n}"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","FormWrapper","props","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","values","omitChildValues","child","Object","keys","forEach","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","errors","entries","value","children","f","useFormikContextWrapper","defaultProps","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","opts","Array","Math","max","floor","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","i","heading","headingButton","description","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","error","url","normalize","setCustomerSecuritySettings","data","invalidationKeys","type","PASSWORD_LENGTHS","EditPasswordLength","getButtonClassName","option","currentValue","minLength","headingText","onClick","e","preventDefault","setMinimumPasswordLength","minPasswordLengthText","getPhrase","LanguageService","MINIMUM_ALLOWED_STUDENT_LENGTH","MINIMUM_ALLOWED_STAFF_LENGTH","MINIMUM_ALLOWED_ADMIN_LENGTH","PasswordSecuritySettingsForm","canSubmit","minStudentLength","setFieldValue","minStaffLength","minAdminLength","SpinnerButton","variant","disabled","showSpinner","isSubmitting","EditPasswordSecuritySettingsValidationSchema","shape","required","noUnknown","SecuritySettingsView","dispatch","alerts","currentUser","UserRequests","securitySettings","getMinimumPasswordLength","UserManagerHelper","initialStudentLength","UserGroup","UserRole","User","initialStaffLength","initialAdminLength","onDone","updatedSecuritySettings","push","userType","userRole","minPasswordLength"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5936],{71020:(e,t,n)=>{n.d(t,{_:()=>u});var r=n(32735),a=n(80247),i=n(34152),l=n(83914),c=n(35223);const s={container:"VwD1b",spinner:"eJ85e"};function o(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,i.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){o=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw a}}return c}}(t,n)||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}}(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(s.container),ref:d},e.isFetching?r.createElement(a.Z,{as:"span",animation:"border",role:"status",className:s.spinner}):r.createElement(l.x,{svgName:c.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.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}},17997:(e,t,n)=>{n.d(t,{H:()=>o});var r=n(32735),a=n(36848),i=n(83345),l=n(22843),c=n(84591),s=n(68626),o=r.memo((function(e){var t,n,o=e.data,u=e.thumbnailSize,d=e.preloadImage,m=Object.assign(Object.assign({},e.questionsAppLink),{args:[e.data.id]}),v=null===(n=null===(t=o._timepoints)||void 0===t?void 0:t.value)||void 0===n?void 0:n.length;return r.createElement("div",{className:"flex-shrink-0 px-1 col-6 col-sm-4"},r.createElement(c.u,{type:"static",textPosition:s.z.Independent,video:o,appLink:e.getAppLink(o),imageOptions:{size:u},preload:d,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,hideDuration:!1,imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,showOwner:e.showOwner}),r.createElement("div",{className:"mt-2"},r.createElement(l.h,Object.assign({},e,{video:o,appLink:e.getAppLink(o)}))),r.createElement("div",{className:"mt-1"},r.createElement(a.F,{appLink:m,className:"cursor-pointer"},r.createElement(i.x,{namespace:"shared.interactiveWidgetItemV2",phrase:"previewQuestions",options:{count:v,smartCount:v}}))))}))},74696:(e,t,n)=>{n.d(t,{S:()=>o});var r=n(32735),a=n(68050),i=n(69111),l=n(9977),c=n(79967);const s={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function o(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,c.k)(),n="sm"===l.O.getSize(t,"md"),o=e.withReordering&&!t.xs;return r.createElement(a.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},r.createElement(i.Z,Object.assign({},l.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,!!o&&r.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},r.createElement("div",{className:"partial-loading-background ".concat(s.partialDragHandle)})),r.createElement(i.Z,{xs:l.O.getThumbnailColSize(o)},r.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(s.partialThumbnail)})))),r.createElement(i.Z,Object.assign({},l.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),r.createElement("div",{className:"partial-loading-background mb-1 ".concat(s.partialName)}),r.createElement("div",{className:"partial-loading-background ".concat(s.partialDescription)})))}o.defaultProps={numVideos:15}},3133:(e,t,n)=>{n.d(t,{R:()=>o});var r=n(32735),a=n(20789),i=n(86794),l=n(2786),c=n(64818);const s={avatarContainer:"kd18L",cvIcon:"smUBc"};function o(e){var t;if(!e.owner&&!e.isClickViewCurated)return r.createElement(r.Fragment,null);if(e.isClickViewCurated)return r.createElement("div",{className:"clamp-1 d-flex align-items-center"},r.createElement("div",{className:"".concat(s.avatarContainer," me-1 border rounded-circle position-relative")},r.createElement(i.b,{className:"me-1 ".concat(s.cvIcon)},r.createElement(l.Sd,null))),"ClickView");var n=c.l.getCommunityName(e.owner);return n?r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"".concat(s.avatarContainer," me-1")},r.createElement(a.q,{imageCdnUrl:e.imageCdnUrl,initials:c.l.getInitials(e.owner.name,e.owner.surname),imageUrl:null===(t=e.owner.avatar)||void 0===t?void 0:t.url})),r.createElement("div",{className:"clamp-1"},n)):r.createElement(r.Fragment,null)}},47862:(e,t,n)=>{n.d(t,{K:()=>d});var r=n(32735),a=n(65858),i=n(36848),l=n(83345),c=n(84591),s=n(3133),o=n(54610),u=n(68626);var d=r.memo((function(e){var t,n=Object.assign(Object.assign({},e.questionsAppLink),{args:[e.data.id]});return r.createElement("div",{className:"flex-shrink-0 px-1 ".concat("rXatl")},r.createElement("div",{className:"row m-0 border rounded p-2 h-100"},r.createElement("div",{className:"col-6 p-0"},r.createElement(c.u,{video:e.data,appLink:e.getAppLink(e.data),type:"cosmetic",imageOptions:{size:o.h2.Small},textPosition:u.z.Independent,preload:!0,analyticsOptions:{location:a.LZ.SlidingListItem}})),r.createElement("div",{className:"col-6 p-0"},r.createElement("div",{className:"ps-2"},r.createElement(i.F,{appLink:e.getAppLink(e.data)},r.createElement("h3",{className:"h6 mb-1"},r.createElement("span",{className:"clamp-2"},e.data.name))),r.createElement(s.R,{owner:e.data.owner,isClickViewCurated:null===(t=e.data._isClickViewCurated)||void 0===t?void 0:t.value,imageCdnUrl:e.imageCdnUrl}),r.createElement(i.F,{className:"info-link",appLink:n},r.createElement(l.x,{namespace:"shared.interactiveWidgetItem",phrase:"previewQuestions"}))))))}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),i=n(67058),l=n(14553),c=n(49267),s=n(49075),o={notFound:i.d,forbidden:{rating:l.q,yearLevel:l.q,region:c.a,privacy:l.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var l=Object.assign(Object.assign({},o),t);i&&a.Q.Ry.isStatusCodeError(i)&&(i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new l.badRequest):n.forbidden||a.Q.Ry.throw(new l.forbidden.privacy):n.notFound||a.Q.Ry.throw(new l.notFound))}}},91286:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(32735),a=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,n){var l=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[i(l),t,n])}},59598:(e,t,n)=>{var r;n.d(t,{K:()=>r}),function(e){e.Resources="resources",e.Interactives="interactives",e.Video="video",e.Clips="clips",e.CurriculumLinks="curriculum-links",e.VideoDetails="video-details",e.RelatedVideos="related-videos",e.ClippedFrom="clipped-from"}(r||(r={}))},84062:(e,t,n)=>{n.d(t,{M:()=>g});var r=n(32735),a=n(17082),i=n(65858),l=n(38647),c=n(16714),s=n(22902),o=n(31908),u=n(26492),d=n(78166),m=n(27638),v=n(22490),p=n(57245);function f(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 g(e){var t,n,g=e.shareLink?i.LZ.PlaySharedInteractive:i.LZ.PlayInteractive,h=(t=r.useState(!0),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,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){o=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return f(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)?f(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.")}()),y=h[0],E=h[1],b=o.M.isVideoTypeArchived(e.interactive),N=r.useMemo((function(){return(0,a.oD)()}),[]),I=(0,m.u)(g),A=I.setFavourite,w=I.canFavourite,x=(0,s.T)().hasPermissions;return r.createElement("div",{className:"px-3"},b&&r.createElement(u.T,{typeId:e.interactive.typeId,hasStudentExperience:!0}),r.createElement("div",{className:"mb-3"},r.createElement(p._,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,onShowSummary:function(e){E(!e)},summaryPortalNode:N})),r.createElement("div",null,y&&r.createElement("h1",{className:"h3 d-flex"},e.interactive.name,r.createElement(l.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups}))),r.createElement(a.t0,{node:N}),!x(c.C.StudentExperience)&&r.createElement(d.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,currentUser:e.currentUser,setFavourite:A,canFavourite:w,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:function(t,n){var r;return v.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:null===(r=e.shareLink)||void 0===r?void 0:r.id,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin}))}},25758:(e,t,n)=>{n.d(t,{x:()=>U});var r=n(32735),a=n(17082),i=n(23481),l=n(28400),c=n(65858),s=n(83657),o=n(36848),u=n(17997),d=n(83345),m=n(38647),v=n(11518),p=n(47862),f=n(10439),g=n(35429),h=n(5960),y=n(4594),E=n(58704),b=n(37802),N=n(31908),I=n(47938),A=n(78166),w=n(14070),x=n(97291),C=n(10671),S=n(27638),P=n(22490),k=n(83914),V=n(83523),O=n(76177),L=n(35223),T=i.T.encloseNamespace("interactives.previewInteractive");function j(e){return r.createElement("div",{className:"alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center",role:"alert"},e.isArchived?r.createElement("div",{className:"d-flex align-items-center"},r.createElement(k.x,{svgName:L.vn.Archive,size:k.S.Standard,className:"me-2 svg-container"}),r.createElement("div",{className:"w-100"},r.createElement("p",{className:"fw-semibold mb-0"},T("archivedInfoTitle")),r.createElement("p",{className:"mb-1"},T("archivedInfo")))):r.createElement(d.x,{phrase:"alert"}),e.isPreviewPreventScrubbingEnabled&&r.createElement(O.u,{title:T("previewPreventScrubbingExplain"),trigger:"hover",spanHack:!0},r.createElement("div",{className:"d-flex mt-1 mt-lg-0"},r.createElement("div",{className:"me-2"},r.createElement(d.x,{phrase:"previewPreventScrubbing"})),r.createElement(V.Z,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode}))))}function F(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 R="interactives.previewInteractive",M=i.T.encloseNamespace(R);function U(e){var t,n,i,k,V,O,L,T,U,q=e.shareId?c.LZ.PreviewSharedInteractive:c.LZ.PreviewInteractive,G=(0,g.g)(),D=(T=r.useState(!1),U=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,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){o=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw a}}return c}}(T,U)||function(e,t){if(e){if("string"==typeof e)return F(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)?F(e,t):void 0}}(T,U)||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[0],Z=D[1],z=N.M.getCanBeConsumed(e.interactive).canConsume,W=r.useMemo((function(){return(0,a.oD)()}),[]),Q=(0,C._)({location:C.i.PlayPage,shareId:e.shareId}),$=(0,S.u)(q),B=$.setFavourite,K=$.canFavourite,H=(0,b.r)(null).hasPlayPageV2;O=_,L=function(){var e,t,n;null===(n=null===(t=null===(e=G.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.togglePreviewPreventScrubbing)||void 0===n||n.call(t)},r.useEffect((function(){L()}),[O]);var Y,X,J,ee,te=(Y=e.interactive)._parentClip||Y._parentVideo;N.M.isClip(te)?(X=null===(n=null===(t=te.interactives)||void 0===t?void 0:t.data)||void 0===n?void 0:n.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),J=te.name,ee={application:x.O.CLIPS,action:w.e.Clips.PLAY_CLIP,args:[te.id,l.m.slugify(te.name)]}):(X=null===(k=null===(i=te.interactives)||void 0===i?void 0:i.data)||void 0===k?void 0:k.filter((function(t){return t.id.toString()!==e.interactive.id.toString()})),J=te.name,ee={application:x.O.VIDEOS,action:w.e.Videos.PLAY_VIDEO,args:[te.id,l.m.slugify(te.name)]});var ne=e.interactive.status===h.X.Draft;return r.createElement(d.D.Provider,{value:R},r.createElement("div",{className:"px-4"},r.createElement(I.W,{restrictions:e.interactive._restrictions,yearGroups:e.yearGroups,objectId:e.interactive.id,objectTypeId:y.E.Interactive,canManageVideoAccess:e.canManageVideoAccess}),r.createElement(j,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:_,toggleStudentMode:function(){Z(!_)},isArchived:N.M.isVideoTypeArchived(e.interactive)}),r.createElement("div",{className:"mb-3"},z&&r.createElement(f.r,{key:e.interactive.id,objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:null!==(V=e.queryParams.t)&&void 0!==V?V:e.queryParams.startTime,mode:"default",location:"play-page"})),r.createElement("div",{className:"d-flex justify-content-between align-items-center"},r.createElement("div",{className:"inline-block w-100"},r.createElement("div",{className:"ms-2 float-end"},r.createElement(s.e,{actions:Q.getVideoActions(e.interactive),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return Q.fetchMoreActions(e.interactive)}})),r.createElement("h1",{className:"h3 mb-2"},ne&&r.createElement("div",{className:"badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base"},r.createElement(d.x,{phrase:"draft"})),e.interactive.name,r.createElement(m.m,{tooltipPlacement:"right",className:"ps-1",video:e.interactive,yearGroups:e.yearGroups})),N.M.canViewOriginalVideo(e.interactive)&&r.createElement("div",{className:"mb-1 me-3 clamp-1"},r.createElement(d.x,{phrase:"viewOriginal"})," ",r.createElement(o.F,{appLink:ee,className:"text-info"},J)))),e.interactive.description&&r.createElement("p",null,e.interactive.description),r.createElement("div",{className:"mb-3"},r.createElement(a.t0,{node:W})),!!(null==X?void 0:X.length)&&r.createElement("div",{className:"pb-3"},H?r.createElement(v.kM,{name:M("otherInteractives",{count:X.length}),contents:E.z.Interactives,collection:X,prefetched:!0,getChildAppLink:function(e){return{application:x.O.INTERACTIVES,action:w.e.Interactives.VIEW_INTERACTIVE,args:[e.id,l.m.slugify(e.name)]}},childComponent:u.H,extraChildComponentProps:{yearGroups:e.yearGroups,questionsAppLink:{application:x.O.INTERACTIVES,action:w.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.config.imageCdnUrl,isPlugin:e.isPlugin},analyticsData:{widgetId:"interactives"}}):r.createElement(v.kM,{name:M("otherInteractives",{count:X.length}),contents:E.z.Interactives,collection:X,prefetched:!0,getChildAppLink:function(e){return{application:x.O.INTERACTIVES,action:w.e.Interactives.VIEW_INTERACTIVE,args:[e.id,l.m.slugify(e.name)]}},childComponent:p.K,extraChildComponentProps:{video:te,questionsAppLink:{application:x.O.INTERACTIVES,action:w.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.config.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),r.createElement(A.Z,{currentVideo:e.interactive,yearGroups:e.yearGroups,setFavourite:B,canFavourite:K,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:function(t,n){return P.W.getAppLink(t,Object.assign(Object.assign({},n),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin})))}},26492:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(32735),a=n(23481),i=n(65858),l=n(83914),c=n(4594),s=n(35223),o="shared.playPage";function u(e){var t=a.T.encloseNamespace(o),n=function(e){switch(e){case c.E.Video:return"video";case c.E.Clip:return"clip";case c.E.Interactive:return"interactive";default:return""}}(e.typeId);return r.createElement("div",{className:"alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center"},r.createElement(l.x,{svgName:s.vn.Archive,size:l.S.Standard,className:"me-2 svg-container"}),r.createElement("div",{className:"w-100"},r.createElement("p",{className:"fw-semibold mb-0"},t("archivedInfoTitle",{type:n})),(!e.hasStudentExperience||n===i.py.Video)&&r.createElement("p",{className:"mb-1"},t("archivedInfo",{type:"".concat(n,"s")}))))}},47938:(e,t,n)=>{n.d(t,{W:()=>m});var r=n(32735),a=n(36848),i=n(83914),l=n(83345),c=n(5345),s=n(26361),o=n(14070),u=n(97291),d="shared.playPage";function m(e){var t,n;if(!(null===(n=null===(t=e.restrictions)||void 0===t?void 0:t.value)||void 0===n?void 0:n.length)||!e.yearGroups||!e.canManageVideoAccess)return r.createElement(r.Fragment,null);if(s.l.getWeightedRestriction(e.restrictions.value).type!==c.c.Custom)return r.createElement(r.Fragment,null);var m=s.l.mapRestrictionToClass(e.restrictions),v="".concat(m," fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center");return r.createElement("div",{className:v},r.createElement("div",{className:"d-flex align-items-center"},r.createElement(i.x,{svgName:s.l.mapRestrictionToSvg(e.restrictions),size:i.S.Large}),r.createElement("span",{className:"ps-1"},s.l.mapRestrictionToText(e.restrictions,e.yearGroups))),r.createElement(a.F,{appLink:{application:u.O.DEFAULT,action:o.e.Default.APPROVE_VIDEO,params:{objectId:e.objectId,objectTypeId:e.objectTypeId}},className:"btn btn-outline-dark"},r.createElement(l.x,{namespace:d,phrase:"approve"})))}},78166:(e,t,n)=>{n.d(t,{Z:()=>h});var r=n(32735),a=n(71020),i=n(83345),l=n(74696),c=n(13231),s=n(51365),o=n(22902),u=n(59598),d=n(31908),m=n(10671),v=n(10741),p=n(22490),f=n(82431),g="shared.relatedVideos";function h(e){var t,n,h=(0,m._)({location:m.i.VideoItem}),y=(0,o.T)().hasPermissions;if(!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated))return r.createElement(r.Fragment,null);if(e.relatedVideos.hasError)return r.createElement(r.Fragment,null);if(e.relatedVideos.hasCompleted&&!(null===(n=e.relatedVideos.videos)||void 0===n?void 0:n.length))return r.createElement(r.Fragment,null);if(!e.relatedVideos.isFetching&&!e.relatedVideos.hasCompleted)return r.createElement(r.Fragment,null);var E=!d.M.isInteractive(e.currentVideo);return r.createElement("section",{id:u.K.RelatedVideos,className:"play-page-section",ref:function(t){var n,r;t&&(null===(n=e.headingRef)||void 0===n?void 0:n.current)&&(null===(r=e.relatedVideos.videos)||void 0===r?void 0:r.length)&&e.headingRef.current.set(u.K.RelatedVideos,t)}},r.createElement(s.M.Provider,{value:h},r.createElement("h2",{className:"h4 mb-0"},r.createElement(i.x,{namespace:g,phrase:E?"upNext":"relatedVideos"})),e.relatedVideos.hasCompleted?r.createElement(c.E4,{videos:e.relatedVideos.videos,yearGroups:e.yearGroups,getSubTextAppLink:function(t){return f.j.getSeriesAppLink(t.series,e.moviesAndTv?{mtv:!0}:null)},getVideoAppLink:e.getVideoAppLink,hasPermissions:y,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return v.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:p.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:p.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:p.W.getResourceGuidanceAppLink}):r.createElement(l.S,null),e.relatedVideos.hasMore&&r.createElement(a._,{isFetching:e.relatedVideos.isFetching,fetchNext:e.relatedVideos.fetchNext})))}},44110:(e,t,n)=>{n.d(t,{i:()=>l});var r=n(20354),a=n(89454),i=n(86698),l=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,l=t||n();return r.a.useBasicFetch(!!l&&a.O.presentationAudiences(l.id))}},53073:(e,t,n)=>{n.d(t,{f:()=>o});var r=n(20354),a=n(16714),i=n(12754),l=n(31949),c=n(22902),s=n(15311);function o(){var e=(0,c.T)().hasPermissions,t=(0,s.r)().hasProduct,n=r.a.useBasicFetch(l.N.currentUser());return!e(a.C.StudentExperience)&&t(i.x.Primary)&&n.data.isAuthenticated}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var r=n(32735),a=n(20354),i=n(21750),l=n(31949),c=n(1575),s=n(31908);function o(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(l.N.currentUser()),v=r.useRef(new Set),p=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(s.M.isVideo(e)||s.M.isClip(e))})):[]:[]}(e),f=p.map((function(e){return e.id})),g=(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,i,l,c=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){o=!0,a=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(o)throw a}}return c}}(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.")}()),h=g[0],y=g[1];r.useEffect((function(){if((null==f?void 0:f.length)&&m.hasCompleted){var e=[];f.forEach((function(t){v.current.has(t)||(e.push(t),v.current.add(t))})),e.length&&y((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)||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.")}()}(t),[c.R.videoMixinAssocs(e,d.flightNamespace)]);return(null===(n=m.data)||void 0===n?void 0:n.isAuthenticated)&&r.push(i.x.hasCurriculumLinks(e,null,d.flightNamespace)),r}))}}),[null==f?void 0:f.length,m.hasCompleted]),a.a.useBasicFetchAll(h)}},68050:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(95685),a=n.n(r),i=n(32735),l=n(46304),c=n(74512);const s=i.forwardRef((({bsPrefix:e,className:t,as:n="div",...r},i)=>{const s=(0,l.vE)(e,"row"),o=(0,l.pi)(),u=(0,l.zG)(),d=`${s}-cols`,m=[];return o.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,c.jsx)(n,{ref:i,...r,className:a()(t,s,...m)})}));s.displayName="Row";const o=s}}]);
2
- //# sourceMappingURL=5936-f0177219db-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/5936-f0177219db-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/interactives-widget/InteractiveWidgetItemV2.tsx","file:///app/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss","file:///app/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","file:///app/packages/libs/shared/src/components/video-owner-text/video-owner-text.scss","file:///app/packages/libs/shared/src/components/video-owner-text/VideoOwnerText.tsx","file:///app/packages/libs/shared/src/components/widgets/items/interactive-widget-item/InteractiveWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/interactive-widget-item/interactive-widget-item.scss","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/interfaces/PlayPageAnchor.ts","file:///app/packages/projects/lite/src/apps/interactives/components/play-interactive/PlayInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/InteractiveAlertBanner.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/preview-interactive/PreviewInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/hooks/interactiveHooks.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/ArchivedBanner.tsx","file:///app/packages/projects/lite/src/shared/components/play-page/RestrictionBanner.tsx","file:///app/packages/projects/lite/src/shared/components/related-videos/RelatedVideos.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useShouldPreviewInteractive.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"container\":\"VwD1b\",\"spinner\":\"eJ85e\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './infinite-scroll-footer.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`} ref={ref}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <SvgContainer\n svgName={cvSvgLibrary.ChevronDown}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n )\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveWidgetItemV2';\n\nexport interface InteractiveWidgetItemV2Props extends FixedWidgetItemProps<InteractiveMetadata> {\n imageCdnUrl: string;\n questionsAppLink: Core.AppLink;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n yearGroups: YearGroup[];\n isPlugin: boolean;\n showOwner?: boolean;\n}\n\nexport const InteractiveWidgetItemV2 = React.memo(function(props: InteractiveWidgetItemV2Props): JSX.Element {\n const { data: interactive, thumbnailSize, preloadImage } = props;\n\n const questionsAppLink: Core.AppLink = {\n ...props.questionsAppLink,\n args: [props.data.id]\n };\n\n const questionsNumber = interactive._timepoints?.value?.length;\n\n return (\n <div className={`flex-shrink-0 px-1 col-6 col-sm-4`}>\n <VideoThumbnail\n type='static'\n textPosition={ThumbnailTextPosition.Independent}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n hideDuration={false}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n showOwner={props.showOwner}\n />\n\n <div className='mt-2'>\n <ThumbnailText\n {...props}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n />\n </div>\n\n <div className='mt-1'>\n <AppLink appLink={questionsAppLink} className='cursor-pointer'>\n <Text namespace={namespace} phrase='previewQuestions' options={{ count: questionsNumber, smartCount: questionsNumber }}/>\n </AppLink>\n </div>\n\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"partialOptions\":\"Gufgq\",\"partialName\":\"SicQQ\",\"partialDescription\":\"dPGMq\",\"partialThumbnail\":\"vZrnb\",\"partialDragHandle\":\"iq73R\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <div className='mx-2'>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </div>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"kd18L\",\"cvIcon\":\"smUBc\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { ClickViewPlayLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './video-owner-text.scss';\n\ninterface VideoOwnerTextProps {\n owner: User;\n isClickViewCurated: boolean;\n imageCdnUrl: string;\n}\n\nexport function VideoOwnerText(props: VideoOwnerTextProps): JSX.Element {\n if (!props.owner && !props.isClickViewCurated)\n return <></>;\n\n if (props.isClickViewCurated) {\n return (\n <div className='clamp-1 d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-1 border rounded-circle position-relative`}>\n <SvgContainer2 className={`me-1 ${styles.cvIcon}`}>\n <ClickViewPlayLogo />\n </SvgContainer2>\n </div>\n ClickView\n </div>\n );\n }\n\n const name = UserHelper.getCommunityName(props.owner);\n\n if (!name)\n return <></>;\n\n return (\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-1`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.owner.name, props.owner.surname)}\n imageUrl={props.owner.avatar?.url}\n />\n </div>\n <div className='clamp-1'>\n {name}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { VideoOwnerText } from 'libs/shared/components/video-owner-text/VideoOwnerText';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Clip, InteractiveMetadata, Video } from 'libs/shared/interfaces';\n\nimport styles from './interactive-widget-item.scss';\n\nconst namespace = 'shared.interactiveWidgetItem';\n\nexport interface InteractiveWidgetItemProps extends FixedWidgetItemProps<InteractiveMetadata> {\n video: Video | Clip;\n questionsAppLink: Core.AppLink;\n imageCdnUrl: string;\n}\n\nexport const InteractiveWidgetItem = React.memo(function(props: InteractiveWidgetItemProps): JSX.Element {\n const questionsAppLink: Core.AppLink = {\n ...props.questionsAppLink,\n args: [props.data.id]\n };\n\n return (\n <div className={`flex-shrink-0 px-1 ${styles.item}`}>\n <div className='row m-0 border rounded p-2 h-100'>\n <div className='col-6 p-0'>\n <VideoThumbnail\n video={props.data}\n appLink={props.getAppLink(props.data)}\n type='cosmetic'\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n preload\n analyticsOptions={{ location: LocationContext.SlidingListItem }}\n />\n </div>\n\n <div className='col-6 p-0'>\n <div className='ps-2'>\n <AppLink appLink={props.getAppLink(props.data)}>\n <h3 className='h6 mb-1'><span className='clamp-2'>{props.data.name}</span></h3>\n </AppLink>\n\n <VideoOwnerText\n owner={props.data.owner}\n isClickViewCurated={props.data._isClickViewCurated?.value}\n imageCdnUrl={props.imageCdnUrl}\n />\n\n <AppLink className='info-link' appLink={questionsAppLink}>\n <Text namespace={namespace} phrase='previewQuestions' />\n </AppLink>\n </div>\n </div>\n </div>\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"rXatl\"};","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { 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}","export enum PlayPageAnchor {\n Resources = 'resources',\n Interactives = 'interactives',\n Video = 'video',\n Clips = 'clips',\n CurriculumLinks = 'curriculum-links',\n VideoDetails = 'video-details',\n RelatedVideos = 'related-videos',\n ClippedFrom='clipped-from'\n}","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey, PresentationAudience, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\ninterface PlayInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n config: Config;\n audiences: PresentationAudience[];\n queryParams: PlayViewQueryParams;\n viewKey: PlayerViewKey;\n startTime?: number;\n endTime?: number;\n\n // Share view only\n shareLink?: UnionShareObject;\n sharerInstanceRegion?: string;\n checkMarkStatus?: CheckMarkStatus;\n relatedVideos: RelatedVideosHash;\n isPlugin: boolean;\n}\n\nexport function PlayInteractive(props: PlayInteractiveProps): JSX.Element {\n const locationContext = props.shareLink ?\n LocationContext.PlaySharedInteractive :\n LocationContext.PlayInteractive;\n\n const [ showHeading, setShowHeading ] = React.useState(true);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.interactive);\n\n const summaryPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext);\n const { hasPermissions } = usePermissions();\n\n function onShowSummary(showing: boolean): void {\n setShowHeading(!showing);\n }\n\n return (\n <div className='px-3'>\n {isArchived && <ArchivedBanner typeId={props.interactive.typeId} hasStudentExperience />}\n\n <div className='mb-3'>\n <LitePlayerView\n config={props.config}\n video={props.interactive}\n currentUser={props.currentUser}\n shareLink={props.shareLink}\n viewKey={props.viewKey}\n startTime={props.startTime}\n onShowSummary={onShowSummary}\n summaryPortalNode={summaryPortalNode}\n />\n </div>\n {/* This wrapping div is here because react seems to not want to play nice\n with adding or removing a node just ahead of an OutPortal */}\n <div>\n {showHeading &&\n <h1 className='h3 d-flex'>\n {props.interactive.name}\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.yearGroups}\n />\n </h1>\n }\n </div>\n <OutPortal node={summaryPortalNode}></OutPortal>\n\n {!hasPermissions(PermissionName.StudentExperience) && (\n <RelatedVideos\n currentVideo={props.interactive}\n yearGroups={props.yearGroups}\n currentUser={props.currentUser}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n relatedVideos={props.relatedVideos}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareLink?.id,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n isPlugin={props.isPlugin}\n />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveAlertBannerProps {\n isPreviewPreventScrubbingEnabled: boolean;\n isPreviewingPreventScrubbing: boolean;\n toggleStudentMode: () => void;\n isArchived: boolean;\n}\n\nexport function InteractiveAlertBanner(props: InteractiveAlertBannerProps): JSX.Element {\n return (\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n {!props.isArchived ? <Text phrase='alert' /> : (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={cvSvgLibrary.Archive}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle')}</p>\n <p className='mb-1'>{getPhrase('archivedInfo')}</p>\n </div>\n </div>\n )}\n {props.isPreviewPreventScrubbingEnabled && (\n <Tooltip\n title={getPhrase('previewPreventScrubbingExplain')}\n trigger='hover'\n spanHack\n >\n <div className='d-flex mt-1 mt-lg-0'>\n <div className='me-2'><Text phrase='previewPreventScrubbing'/></div>\n <ToggleSwitch on={props.isPreviewingPreventScrubbing} onClick={props.toggleStudentMode} />\n </div>\n </Tooltip>\n )}\n </div>\n );\n}","import * as React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractiveWidgetItemV2, InteractiveWidgetItemV2Props } from 'libs/shared/components/play-page-v2/interactives-widget/InteractiveWidgetItemV2';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { InteractiveWidgetItem, InteractiveWidgetItemProps } from 'libs/shared/components/widgets/items/interactive-widget-item/InteractiveWidgetItem';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Clip, Config, CurrentUser, Interactive, InteractiveMetadata, PresentationAudience, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InteractiveAlertBanner } from 'apps/interactives/components/preview-interactive/InteractiveAlertBanner';\nimport { usePreviewPreventInteractive } from 'apps/interactives/hooks/interactiveHooks';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSourceVideo(interactive: InteractiveMetadata): Clip | Video {\n return interactive._parentClip || interactive._parentVideo;\n}\n\ninterface PreviewInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n config: Config;\n currentUser: CurrentUser;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n isPreviewPreventScrubbingEnabled: boolean;\n relatedVideos: RelatedVideosHash;\n canManageVideoAccess: boolean;\n isPlugin: boolean;\n\n // Share view only\n shareId?: string;\n}\n\nexport function PreviewInteractive(props: PreviewInteractiveProps): JSX.Element {\n const locationContext = props.shareId ? LocationContext.PreviewSharedInteractive : LocationContext.PreviewInteractive;\n\n const playerContext = usePlayerContext();\n\n const [ isPreviewingPreventScrubbing, setIsPreviewingPreventScrubbing ] = React.useState(false);\n\n const { canConsume } = VideoHelper.getCanBeConsumed(props.interactive);\n\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n \n const videoActions = useVideoActions({\n location: VideoActionsLocation.PlayPage,\n shareId: props.shareId\n });\n\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext);\n const { hasPlayPageV2 } = useSettings(null);\n\n usePreviewPreventInteractive(isPreviewingPreventScrubbing, togglePreviewPreventScrubbing);\n\n function togglePreviewPreventScrubbing() {\n playerContext.playerRef?.current?.togglePreviewPreventScrubbing?.();\n }\n\n function toggleStudentMode() {\n setIsPreviewingPreventScrubbing(!isPreviewingPreventScrubbing);\n }\n\n const sourceVideo = getSourceVideo(props.interactive);\n\n let otherInteractives: InteractiveMetadata[];\n let backToName: string;\n let backAppLink: Core.AppLink;\n\n if (VideoHelper.isClip(sourceVideo)) {\n otherInteractives = sourceVideo.interactives?.data?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = sourceVideo.name;\n backAppLink = {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ sourceVideo.id, TextHelper.slugify(sourceVideo.name) ]\n };\n } else {\n otherInteractives = sourceVideo.interactives?.data?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n backToName = sourceVideo.name;\n backAppLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ sourceVideo.id, TextHelper.slugify(sourceVideo.name) ]\n };\n }\n\n const isDraft = props.interactive.status === CurationStatus.Draft;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-4'>\n\n <RestrictionBanner\n restrictions={props.interactive._restrictions}\n yearGroups={props.yearGroups}\n objectId={props.interactive.id}\n objectTypeId={MasterType.Interactive}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n <InteractiveAlertBanner\n isPreviewPreventScrubbingEnabled={props.isPreviewPreventScrubbingEnabled}\n isPreviewingPreventScrubbing={isPreviewingPreventScrubbing}\n toggleStudentMode={toggleStudentMode}\n isArchived={VideoHelper.isVideoTypeArchived(props.interactive)}\n />\n\n <div className='mb-3'>\n {canConsume &&\n <GlobalPlayerConsumer\n key={props.interactive.id}\n objectId={props.interactive.id}\n objectTypeId={props.interactive.typeId}\n shareId={props.shareId}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n mode='default'\n location='play-page'\n />\n }\n </div>\n <div className='d-flex justify-content-between align-items-center'>\n <div className='inline-block w-100'>\n <div className='ms-2 float-end'>\n <ActionsComponent\n actions={videoActions.getVideoActions(props.interactive)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.interactive)}\n />\n </div>\n\n <h1 className='h3 mb-2'>\n {isDraft && (\n <div className={`badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base`}>\n <Text phrase='draft' />\n </div>\n )}\n {props.interactive.name}\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1'\n video={props.interactive}\n yearGroups={props.yearGroups}\n />\n </h1>\n {VideoHelper.canViewOriginalVideo(props.interactive) &&\n <div className='mb-1 me-3 clamp-1'>\n <Text phrase='viewOriginal' />&nbsp;<AppLink appLink={backAppLink} className='text-info'>{backToName}</AppLink>\n </div>\n }\n </div>\n </div>\n\n {props.interactive.description &&\n <p>{props.interactive.description}</p>\n }\n\n <div className='mb-3'>\n <OutPortal node={questionListPortalNode}></OutPortal>\n </div>\n\n {!!otherInteractives?.length && (\n <div className='pb-3'>\n {!hasPlayPageV2 ? (\n <FixedWidget<InteractiveWidgetItemProps>\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n video: sourceVideo,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n imageCdnUrl: props.config.imageCdnUrl\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n ) : (\n <FixedWidget<InteractiveWidgetItemV2Props>\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItemV2}\n extraChildComponentProps={{\n yearGroups: props.yearGroups,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n imageCdnUrl: props.config.imageCdnUrl,\n isPlugin: props.isPlugin\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n )}\n </div>\n )}\n\n <RelatedVideos\n currentVideo={props.interactive}\n yearGroups={props.yearGroups}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n currentUser={props.currentUser}\n audiences={props.audiences}\n relatedVideos={props.relatedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv\n })}\n moviesAndTv={props.queryParams.mtv}\n isPlugin={props.isPlugin}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nexport function usePreviewPreventInteractive(\n previewPreventInteractive: boolean,\n togglePreviewPreventInteractive: () => void\n): void {\n React.useEffect(() => {\n togglePreviewPreventInteractive();\n }, [previewPreventInteractive]);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType } from 'libs/analytics/interfaces';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.playPage';\n\ninterface ArchivedBannerProps {\n typeId: MasterType;\n hasStudentExperience: boolean;\n}\n\nfunction mapTypeId(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Video:\n return 'video';\n case MasterType.Clip:\n return 'clip';\n case MasterType.Interactive:\n return 'interactive';\n default:\n return '';\n }\n}\n\nexport function ArchivedBanner(props: ArchivedBannerProps): JSX.Element {\n const getPhrase = LanguageService.encloseNamespace(namespace);\n const type = mapTypeId(props.typeId);\n\n return (\n <div className='alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center'>\n <SvgContainer\n svgName={cvSvgLibrary.Archive}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle', { type })}</p>\n {(!props.hasStudentExperience || type === EntityType.Video) && (\n <p className='mb-1'>{getPhrase('archivedInfo', { type: `${type}s` })}</p>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'shared.playPage';\n\ninterface RestrictionBannerProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n objectId: string;\n objectTypeId: MasterType;\n canManageVideoAccess: boolean;\n}\n\nexport function RestrictionBanner(props: RestrictionBannerProps): JSX.Element {\n if (!props.restrictions?.value?.length || !props.yearGroups || !props.canManageVideoAccess)\n return <></>;\n\n const restriction = RestrictionHelper.getWeightedRestriction(props.restrictions.value);\n\n if (restriction.type !== RestrictionType.Custom)\n return <></>;\n\n const baseClassName = RestrictionHelper.mapRestrictionToClass(props.restrictions);\n const className = `${baseClassName} fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center`;\n\n return (\n <div className={className}>\n <div className='d-flex align-items-center'>\n <SvgContainer\n svgName={RestrictionHelper.mapRestrictionToSvg(props.restrictions)}\n size={SvgContainerSize.Large}\n />\n <span className='ps-1'>\n {RestrictionHelper.mapRestrictionToText(props.restrictions, props.yearGroups)}\n </span>\n </div>\n \n <AppLink\n appLink={{\n application: AppChannels.DEFAULT,\n action: Actions.Default.APPROVE_VIDEO,\n params: {\n objectId: props.objectId,\n objectTypeId: props.objectTypeId\n }\n }}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='approve' />\n </AppLink>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CanFavouriteFunc, CurrentUser, FavouriteFunc, PresentationAudience, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst namespace = 'shared.relatedVideos';\n\ninterface RelatedVideosProps {\n currentVideo: VideoTypes;\n yearGroups: YearGroup[];\n relatedVideos: RelatedVideosHash;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n getVideoAppLink: (video: VideoTypes, opts: GetVideoAppLinkOptions) => Core.AppLink;\n moviesAndTv: boolean;\n isPlugin: boolean;\n headingRef?: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n}\n\nexport function RelatedVideos(props: RelatedVideosProps): JSX.Element {\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n const { hasPermissions } = usePermissions();\n\n if (!props.currentUser?.isAuthenticated) // Don't render if user is unauthenticated\n return <></>;\n\n if (props.relatedVideos.hasError) // Don't render if request has errored\n return <></>;\n\n if (props.relatedVideos.hasCompleted && !props.relatedVideos.videos?.length) // Don't render if response is empty\n return <></>;\n\n if (!props.relatedVideos.isFetching && !props.relatedVideos.hasCompleted) // Don't render if request is never made\n return <></>;\n\n // We don't support autoplaying from interactives. This means the related videos heading won't say \"Up next\"\n const canAutoplay = !VideoHelper.isInteractive(props.currentVideo);\n\n return (\n <section\n id={PlayPageAnchor.RelatedVideos}\n className='play-page-section'\n ref={el => {\n (el && props.headingRef?.current\n && !!props.relatedVideos.videos?.length)\n && props.headingRef.current.set(PlayPageAnchor.RelatedVideos, el);\n }}\n >\n <VideoActionsContext.Provider value={videoActions}>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase={canAutoplay ? 'upNext' : 'relatedVideos'} />\n </h2>\n {props.relatedVideos.hasCompleted ? (\n <VideoList\n videos={props.relatedVideos.videos}\n yearGroups={props.yearGroups}\n getSubTextAppLink={video => {\n return SeriesAppLinkHelper.getSeriesAppLink(video.series, props.moviesAndTv ? { mtv: true } : null);\n }}\n getVideoAppLink={props.getVideoAppLink}\n hasPermissions={hasPermissions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n presentationAudiences={props.audiences}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={props.isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n ) : <PartialVideoList />\n }\n {props.relatedVideos.hasMore && (\n <InfiniteScrollFooter\n isFetching={props.relatedVideos.isFetching}\n fetchNext={props.relatedVideos.fetchNext}\n />\n )}\n </VideoActionsContext.Provider>\n </section>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nexport function useShouldPreviewInteractive() {\n const { hasPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return !hasPermissions(PermissionName.StudentExperience) &&\n hasProduct(ProductId.Primary) &&\n currentUser.data.isAuthenticated;\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [\n ...r,\n VideoRequests.videoMixinAssocs(unhydratedVideos, options.flightNamespace)\n ];\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(unhydratedVideos, null, options.flightNamespace));\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["InfiniteScrollFooter","props","ref","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","className","Spinner","as","animation","role","SvgContainer","svgName","size","S","onClick","defaultProps","InteractiveWidgetItemV2","interactive","data","thumbnailSize","preloadImage","questionsAppLink","args","id","questionsNumber","_timepoints","value","length","type","textPosition","video","appLink","getAppLink","imageOptions","preload","analyticsData","analyticsOptions","setFavourite","canFavourite","hideDuration","imageCdnUrl","isPlugin","showOwner","namespace","phrase","options","count","smartCount","PartialVideoList","Array","numVideos","fill","map","_","i","key","allowBulkActions","PartialVideoItem","breakpoints","useBreakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","VideoOwnerText","owner","isClickViewCurated","SvgContainer2","name","UserHelper","Avatar","initials","surname","imageUrl","avatar","url","InteractiveWidgetItem","VideoThumbnail","ThumbnailTextPosition","location","AppLink","_isClickViewCurated","Text","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","forEach","PlayPageAnchor","PlayInteractive","locationContext","shareLink","showHeading","setShowHeading","isArchived","summaryPortalNode","u","hasPermissions","typeId","hasStudentExperience","config","currentUser","viewKey","startTime","onShowSummary","showing","tooltipPlacement","yearGroups","node","currentVideo","relatedVideos","audiences","getVideoAppLink","v","opts","context","queryParams","contextId","playNext","shareId","moviesAndTv","mtv","getPhrase","LanguageService","InteractiveAlertBanner","isPreviewPreventScrubbingEnabled","Tooltip","title","trigger","spanHack","ToggleSwitch","on","isPreviewingPreventScrubbing","toggleStudentMode","PreviewInteractive","previewPreventInteractive","togglePreviewPreventInteractive","playerContext","setIsPreviewingPreventScrubbing","canConsume","VideoHelper","questionListPortalNode","videoActions","useVideoActions","useLiteFavourites","hasPlayPageV2","useSettings","playerRef","current","togglePreviewPreventScrubbing","otherInteractives","backToName","backAppLink","sourceVideo","_parentClip","_parentVideo","interactives","filter","toString","application","action","TextHelper","isDraft","CurationStatus","RestrictionBanner","restrictions","_restrictions","objectId","objectTypeId","MasterType","canManageVideoAccess","GlobalPlayerConsumer","t","mode","Actions","actions","getVideoActions","actionsDropdownClassName","fetchMore","fetchMoreActions","RestrictionPadlock","description","contents","WidgetContents","collection","prefetched","getChildAppLink","childComponent","extraChildComponentProps","widgetId","RelatedVideos","VideoAppLinkHelper","ArchivedBanner","mapTypeId","baseClassName","params","isAuthenticated","hasError","hasCompleted","videos","canAutoplay","el","headingRef","set","getSubTextAppLink","series","presentationAudiences","getPreviewQuestionsAppLink","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","hasMore","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","useShouldPreviewInteractive","hasProduct","useVideoMixin","objects","hydratedVideos","Set","o","getValidObjects","videoIds","request","setRequest","unhydratedVideos","has","push","add","r","newRequests","flightNamespace","bsPrefix","Component","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6054],{90690:(e,a,t)=>{t.r(a),t.d(a,{InteractiveView:()=>I});var i=t(32735),r=t(50242),d=t(20354),s=t(60051),c=t(78417),n=t(16714),u=t(61990),o=t(33803),l=t(39151),v=t(1666),m=t(20768),h=t(47812),P=t(31949),b=t(26304),p=t(91286),y=t(22902),g=t(79612),f=t(76753),F=t(51855),q=t(7179),C=t(36873),M=t(44110),k=t(53073),w=t(97816),B=t(84062),V=t(25758),G={notFound:u.l,forbidden:{privacy:o.G}};function I(e){var a,t,u,o,I,x=(0,y.T)().hasPermissions,A=(0,F.G)().isPlugin,E=d.a.useBasicFetch(l.L.config()),T=d.a.useBasicFetch(P.N.currentUser()),U=d.a.useBasicFetch((null===(a=T.data)||void 0===a?void 0:a.isAuthenticated)&&v.h.yearGroups(T.data.customerId)),_=d.a.useBasicFetch(m.b.interactiveMetadata(e.id)),S=(0,k.f)(),K=d.a.useBasicFetch(_.statusCode===r.o.Forbidden&&m.b.interactiveMetadata(e.id,c.r.StripMetadata)),j=d.a.useBasicFetch(S&&_.data&&m.b.interactive(_.data.interactiveId)),L=(0,M.i)(),N=d.a.useBasicFetch(h.k.createViewKey(e.id,s.f.MasterObject)),O=(0,C.k)({video:_.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:T.data});return(0,q.P)({id:e.id,app:"interactives"}),(0,p.v)(_,G,{forbidden:!0}),(0,b.b)(K),(0,g.M)(f.CG.getInteractiveMetadata({content:_.data})),(0,w.V)(null!==(t=O.videos)&&void 0!==t?t:[]),_.data&&E.hasCompleted&&T.hasCompleted&&(!S||j.hasCompleted)&&N.hasCompleted?S?i.createElement(V.x,{config:E.data,yearGroups:U.data,currentUser:T.data,queryParams:e.queryParams,interactive:_.data,isPreviewPreventScrubbingEnabled:j.data.preventScrubbing,audiences:L.data,relatedVideos:O,canManageVideoAccess:x(n.C.ManageVideoAccess),isPlugin:A}):i.createElement(B.M,{interactive:_.data,currentUser:T.data,config:E.data,yearGroups:U.data,audiences:L.data,queryParams:e.queryParams,viewKey:N.data,relatedVideos:O,startTime:null!==(o=null===(u=e.queryParams)||void 0===u?void 0:u.t)&&void 0!==o?o:null===(I=e.queryParams)||void 0===I?void 0:I.startTime,isPlugin:A}):i.createElement(i.Fragment,null)}}}]);
2
- //# sourceMappingURL=6054-14d4ceeae3-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6054-14d4ceeae3-lite.chunk.js","mappings":"ybAiCMA,EAAc,CAClBC,SAAU,IACVC,UAAW,CACTC,QAAS,MASP,SAAUC,EAAgBC,G,cACtBC,GAAmB,SAAnBA,eACAC,GAAa,SAAbA,SAEFC,EAAS,kBAA6B,cACtCC,EAAc,kBAAkC,mBAChDC,EAAa,mBACD,QAAhB,EAAAD,EAAYE,YAAI,eAAEC,kBAAmB,eAA4BH,EAAYE,KAAKE,aAG9EC,EAAsB,kBAC1B,wBAAwCT,EAAMU,KAE1CC,GAA2B,SAC3BC,EAA8B,kBAClCH,EAAoBI,aAAe,eACjC,wBAAwCb,EAAMU,GAAI,oBAEhDI,EAAc,kBAClBH,GAA4BF,EAAoBH,MAChD,gBAAgCG,EAAoBH,KAAKS,gBAErDC,GAAY,SACZC,EAAU,kBAAoC,kBAA6BjB,EAAMU,GAAI,mBAErFQ,GAAgB,OAAoB,CACxCC,MAAOV,EAAoBH,KAC3Bc,QAASpB,EAAMqB,YAAYD,QAC3BE,UAAWtB,EAAMqB,YAAYC,UAC7BC,YAAavB,EAAMqB,YAAYG,IAC/BpB,YAAaA,EAAYE,OAmB3B,OAhBA,OAAa,CAAEI,GAAIV,EAAMU,GAAIe,IAAK,kBAElC,OAAqBhB,EAAqBd,EAAa,CAAEE,WAAW,KACpE,OAAsBe,IACtB,OAAmB,4BAA0C,CAAEc,QAASjB,EAAoBH,SAE5F,OAAkC,QAApB,EAAAY,EAAcS,cAAM,QAAI,IAGpClB,EAAoBH,MACpBH,EAAOyB,cACPxB,EAAYwB,gBACVjB,GAA4BG,EAAYc,eAC1CX,EAAQW,aAMNjB,EAEA,gBAAC,IAAkB,CACjBR,OAAQA,EAAOG,KACfD,WAAYA,EAAWC,KACvBF,YAAaA,EAAYE,KACzBe,YAAarB,EAAMqB,YACnBP,YAAaL,EAAoBH,KACjCuB,iCAAkCf,EAAYR,KAAKwB,iBACnDd,UAAWA,EAAUV,KACrBY,cAAeA,EACfa,qBAAsB9B,EAAe,uBACrCC,SAAUA,IAMd,gBAAC,IAAe,CACdY,YAAaL,EAAoBH,KACjCF,YAAaA,EAAYE,KACzBH,OAAQA,EAAOG,KACfD,WAAYA,EAAWC,KACvBU,UAAWA,EAAUV,KACrBe,YAAarB,EAAMqB,YACnBJ,QAASA,EAAQX,KACjBY,cAAeA,EACfc,UAA+B,QAApB,EAAiB,QAAjB,EAAAhC,EAAMqB,mBAAW,eAAEY,SAAC,QAAqB,QAAjB,EAAAjC,EAAMqB,mBAAW,eAAEW,UACtD9B,SAAUA,IA9BL,gCAiCX,C","sources":["file:///app/packages/projects/lite/src/apps/interactives/views/interactive-view/InteractiveView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Interactive, InteractiveMetadata, PlayerViewKey, YearGroup } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface InteractiveViewProps {\n id: string;\n queryParams: PlayViewQueryParams;\n}\n\nexport function InteractiveView(props: InteractiveViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const strippedInteractiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n interactiveMetadata.statusCode === HttpStatus.Forbidden &&\n InteractiveRequests.interactiveMetadata(props.id, PermissionFilterOption.StripMetadata)\n );\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n const audiences = usePresentationAudiences();\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(PlayerRequests.createViewKey(props.id, MediaIdType.MasterObject));\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n\n useDeepLinks({ id: props.id, app: 'interactives' });\n\n useHandleObjectError(interactiveMetadata, videoErrors, { forbidden: true });\n useCannotConsumeError(strippedInteractiveMetadata);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n useVideoMixin(relatedVideos.videos ?? []);\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n viewKey.hasCompleted\n );\n\n if (!hasLoaded)\n return <></>;\n\n if (shouldPreviewInteractive) {\n return (\n <PreviewInteractive\n config={config.data}\n yearGroups={yearGroups.data}\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n isPlugin={isPlugin}\n />\n );\n }\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n startTime={props.queryParams?.t ?? props.queryParams?.startTime}\n isPlugin={isPlugin}\n />\n );\n}"],"names":["videoErrors","notFound","forbidden","privacy","InteractiveView","props","hasPermissions","isPlugin","config","currentUser","yearGroups","data","isAuthenticated","customerId","interactiveMetadata","id","shouldPreviewInteractive","strippedInteractiveMetadata","statusCode","interactive","interactiveId","audiences","viewKey","relatedVideos","video","context","queryParams","contextId","moviesAndTv","mtv","app","content","videos","hasCompleted","isPreviewPreventScrubbingEnabled","preventScrubbing","canManageVideoAccess","startTime","t"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6094],{94644:(e,a,t)=>{t.d(a,{r:()=>u});var i=t(50242),n=t(81886),r=t(67058),d=t(14553),s=t(49267),o=t(49075),c={notFound:r.d,forbidden:{rating:d.q,yearLevel:d.q,region:s.a,privacy:d.q},badRequest:o._};function u(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var d=Object.assign(Object.assign({},c),a);r&&n.Q.Ry.isStatusCodeError(r)&&(r!==i.o.NotFound?r!==i.o.Forbidden?t.badRequest||n.Q.Ry.throw(new d.badRequest):t.forbidden||n.Q.Ry.throw(new d.forbidden.privacy):t.notFound||n.Q.Ry.throw(new d.notFound))}}},91286:(e,a,t)=>{t.d(a,{v:()=>d});var i=t(32735),n=t(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function d(e,a,t){var d=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){d.forEach((function(e){(0,n.r)(e.statusCode,a,t)}))}),[r(d),a,t])}},75085:(e,a,t)=>{t.r(a),t.d(a,{PlayViewV2:()=>D});var i=t(32735),n=t(50242),r=t(81886),d=t(23481),s=t(20354),o=t(28400),c=t(65858),u=t(78417),l=t(16714),v=t(67058),f=t(61990),h=t(33803),p=t(89454),g=t(43012),m=t(39151),y=t(1666),b=t(20768),F=t(98064),C=t(31949),P=t(1575),w=t(26304),I=t(91286),R=t(22902),B=t(79612),q=t(76753),A=t(14070),V=t(97291),k=t(51855),x=t(82817),L=t(7179),O=t(49948),E=t(36873),M=t(27638),S=t(86698),_=t(35014),G=t(97816),N=t(33192),Q=t(81812),T=t(61169),U=d.T.encloseNamespace("shared.play"),j={notFound:f.l,forbidden:{privacy:h.G}};function D(e){var a,t,d,f=e.queryParams,h=f.context,D=f.contextId,H=f.playNext,Y=f.mtv,Z=(0,M.u)(c.LZ.PlayPage),z=Z.setFavourite,J=Z.canFavourite,K=(0,R.T)().hasPermissions,W=(0,k.G)().isPlugin,X=(0,S.y)().activePresentation,$=(0,_.I)(),ee=s.a.useBasicFetch(F.D.streamableLearning()),ae=s.a.useBasicFetch(C.N.currentUser()),te=s.a.useBasicFetch(P.R.video(e.id)),ie=s.a.useBasicFetch(g.e.videoClips(e.id)),ne=s.a.useBasicFetch(b.b.videoInteractives(e.id)),re=s.a.useBasicFetch(m.L.config()),de=s.a.useBasicFetch((null===(a=ae.data)||void 0===a?void 0:a.isAuthenticated)&&y.h.yearGroups(ae.data.customerId)),se=s.a.useBasicFetch(X&&p.O.audiencesByPresentationId(X.id)),oe=(0,Q.a)(),ce=s.a.useBasicFetch(te.statusCode===n.o.Forbidden&&P.R.video(e.id,u.r.StripMetadata)),ue=(0,x.M)(e.id,!0),le=(0,E.k)({video:te.data,context:h,contextId:D,moviesAndTv:Y,currentUser:ae.data}),ve=(0,O.l)(e.id,!0),fe=s.a.useBasicFetch(P.R.regionAlternatives(e.id));return(0,B.M)(q.CG.getVideoMetadata({content:te.data,regionAlternatives:fe.data,phraseContext:{phraseHandler:U,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:N.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:N.f.allowIndexing(),hrefLang:N.f.getContentHrefLang(fe.data,(function(e,a){return{application:V.O.VIDEOS,action:A.e.Videos.PLAY_VIDEO,args:[e,o.m.slugify(a)]}}))})),(0,I.v)(te,j,{forbidden:!0}),(0,G.V)(null!==(t=le.videos)&&void 0!==t?t:[]),(0,L.P)({id:e.id,app:"videos"}),(0,w.b)(ce),i.useEffect((function(){var e;te.data&&ee.data&&(null===(e=te.data.libraries)||void 0===e?void 0:e.data.find((function(e){return e.id===ee.data.objectId})))&&r.Q.Ry.throw(new v.d)}),[te.hasCompleted,ee.hasCompleted]),te.data&&ae.hasCompleted&&re.hasCompleted&&ve.hasCompleted?i.createElement(T.R,{video:te.data,clips:ie.data,interactives:ne.data,yearGroups:de.data,curriculums:ue,relatedVideos:le,setFavourite:z,canFavourite:J,imageCdnUrl:re.data.imageCdnUrl,currentUser:ae.data,pointsOfInterest:ve.items,playNext:H,featureAccess:$,audiences:se.data,params:e.queryParams,canManageVideoAccess:K(l.C.ManageVideoAccess),shouldShowSideTableOfContents:oe,tableOfContentsId:null===(d=e.queryParams)||void 0===d?void 0:d.tocId,isPlugin:W}):i.createElement(i.Fragment,null)}D.defaultProps={queryParams:{}}}}]);
2
- //# sourceMappingURL=6094-7ec9341357-lite.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/6094-7ec9341357-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/shared/views/play/v2/PlayViewV2.tsx"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { 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 * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, CurrentUser, InteractiveMetadata, PresentationAudience, RegionAlternative, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentation } from 'shared/hooks/usePresentation';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/v2/hooks/useShouldShowTableOfContents';\n\nimport { PlayViewProps } from '../PlayViewContainer';\n\nimport { PlayPageV2 } from './components/play-page/PlayPageV2';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nPlayViewV2.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayViewV2(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv } = props.queryParams;\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.PlayPage);\n\n const { hasPermissions } = usePermissions();\n\n const { isPlugin } = usePluginHelper();\n\n const { activePresentation } = usePresentation();\n\n const featureAccess = useVideoFeatureAccess();\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const clips = Flight.useBasicFetch<Clip[]>(ClipRequests.videoClips(props.id));\n const interactives = Flight.useBasicFetch<InteractiveMetadata[]>(InteractiveRequests.videoInteractives(props.id));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n \n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id, true);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.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.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (!video.data || !streamableLibrary.data)\n return;\n\n if (video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n config.hasCompleted &&\n pointsOfInterest.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPageV2\n video={video.data}\n clips={clips.data}\n interactives={interactives.data}\n yearGroups={yearGroups.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n imageCdnUrl={config.data.imageCdnUrl}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n isPlugin={isPlugin}\n />\n );\n}"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","map","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","videoErrors","PlayViewV2","props","queryParams","context","contextId","playNext","mtv","u","setFavourite","canFavourite","hasPermissions","isPlugin","activePresentation","featureAccess","streamableLibrary","currentUser","video","id","clips","interactives","config","yearGroups","data","isAuthenticated","customerId","audiences","shouldShowSideTableOfContents","strippedVideo","curriculums","relatedVideos","moviesAndTv","pointsOfInterest","regionAlternatives","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","stripPresentationSlug","allowIndexing","hrefLang","name","application","action","args","videos","app","libraries","find","library","objectId","hasCompleted","imageCdnUrl","items","params","canManageVideoAccess","tableOfContentsId","tocId","defaultProps"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6138],{11921:(e,t,a)=>{a.d(t,{F:()=>o});var n=a(32735),r=a(35223),l=a(83914);var i=function(e){switch(e){case"up":return"JAT0R";case"down":return"ld41u";case"right":return"HHkPe";case"left":return"jZTRR"}};function o(e){return n.createElement(l.x,{svgName:r.vn.Caret,className:"".concat(i(e.direction)," svg-container d-inline-block ").concat(e.className)})}o.defaultProps={direction:"right"}},83834:(e,t,a)=>{a.d(t,{$:()=>k});var n=a(32735),r=a(57900),l=a(11921),i=a(11607),o=a(97395),c=a(83657),s=a(36848),d=a(88711),u=a(75163),m=a(5465),p=a(54610);const f={actions:"cN3nB",actionsContainer:"xM37V",dropStyle:"kvCLS",dragStyle:"md9Na"};function g(e){var t,a=e.folder.thumbnail?o._.urlBuilder(e.folder.thumbnail.url,{size:p.h2.Small}):null,r=null===(t=e.getFolderActions)||void 0===t?void 0:t.call(e,e.folder);return n.createElement(d.j,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:f.dropStyle,dragStyle:f.dragStyle},n.createElement("div",{className:"position-relative"},n.createElement(s.F,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name},n.createElement(u.Z,{data:a,imageType:p.__.Thumbnails,imageClassName:"rounded-top-lg"},n.createElement(m.oy,{name:e.folder.name,type:m.mS.Folder,extraClasses:"rounded-top-lg"})),n.createElement("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2"},n.createElement("span",{className:"text-truncate d-block"},e.folder.name))),(null==r?void 0:r.length)&&n.createElement(c.e,{actions:r,className:f.actionsContainer,actionsDropdownClassName:f.actions,dropdownToggleSvgSize:null})))}var v=a(83345),h=a(79967);function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var y="libraries.folderList",E="has:expanded:library:folders";function k(e){var t,a,o,c=(a=n.useState(r.SG.get(E)||!1),o=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,o=[],c=!0,s=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;c=!1}else for(;!(c=(n=l.call(a)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(s)throw r}}return o}}(a,o)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?b(e,t):void 0}}(a,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=c[0],d=c[1],u=e.expandFolders||s,m=(t=(0,h.k)()).xxl||t.xl||t.lg?6:t.md?4:3;function p(){d(!u),r.SG.set(E,!u)}var f=u?e.folders:e.folders.slice(0,m),k=e.folders.length>m&&!e.expandFolders;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-between align-items-center"},e.showHeading&&n.createElement(i.L,{className:"d-inline-flex align-items-center mb-2 px-2 ".concat(k?"":"cursor-default"),onClick:p},k&&n.createElement(l.F,{direction:u?"down":"right"}),n.createElement("h2",{className:"h4 mb-0"},n.createElement(v.x,{namespace:y,phrase:"folders",options:{count:e.folders.length}}))),!(u||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},n.createElement(v.x,{namespace:y,phrase:"seeAll",options:{count:e.folders.length}}))),!(!u||!k)&&n.createElement("div",{className:"d-flex justify-content-end justify-self-end px-2"},n.createElement(i.L,{onClick:p,className:"text-dark hover-text-underline d-inline-block"},n.createElement(v.x,{namespace:y,phrase:"seeLess"}))),e.extraButtons?e.extraButtons:n.createElement(n.Fragment,null)),n.createElement("div",{className:"row mx-1"},f.map((function(t){return n.createElement("div",{key:t.id,className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement(g,{folder:t,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop}))}))))}k.defaultProps={showHeading:!0}},65403:(e,t,a)=>{a.d(t,{i:()=>i});var n=a(32735);const r={partialFolderHeading:"dhbsL",partialFolderThumbnail:"CI9vk",partialFolderName:"l0Nll"};var l=function(){return n.createElement("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3"},n.createElement("div",{className:"".concat(r.partialFolderThumbnail," partial-loading-background rounded-top-lg")}),n.createElement("div",{className:"".concat(r.partialFolderName," partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2")}," "))};function i(e){var t=e.count,a=void 0===t?3:t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(r.partialFolderHeading," h4 mb-2 partial-loading-background")}," "),n.createElement("div",{className:"row mx-n1"},Array(a).fill(null).map((function(e,t){return n.createElement(l,{key:t})}))))}},17087:(e,t,a)=>{a.d(t,{T:()=>o});var n=a(20354),r=a(98064);function l(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 a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?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 a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function o(e){var t,a,i=e.folderId,o=e.firstItem,c=e.lastItem,s=e.getAppLink,d=n.a.useBasicFetch(r.D.folderParentTree(i));if(!(null===(a=null===(t=d.data)||void 0===t?void 0:t.children)||void 0===a?void 0:a.length))return[];for(var u=d.data.children.map((function(e){return{node:e,path:[e]}})),m=[],p=function(){var e=u.pop(),t=e.node,a=e.path;t.data.id.toString()===i.toString()&&(m=a.map((function(e){return{name:e.data.name,appLink:s(e)}}))),t.children&&u.push.apply(u,l(t.children.map((function(e){return{node:e,path:[].concat(l(a),[e])}}))))};u.length;)p();return o&&m.unshift(o),c&&m.push(c),m[m.length-1].active=!0,m}},98860:(e,t,a)=>{a.d(t,{P:()=>o});var n=a(20354),r=a(98064),l=a(3010),i=a(45719);function o(e){var t=n.a.useGetFetch();function a(t){return r.D.childFolders(e,t)}return(0,l.i)(!!e&&a,!!e&&function(e){t(a(e))}),(0,i.P)(!!e&&function(e){return a(e).key})}},21325:(e,t,a)=>{a.d(t,{o:()=>o});var n=a(32735),r=a(81886),l=a(96560),i=a(67058);function o(e){n.useEffect((function(){e.hasCompleted&&!e.hasError&&e.data.type!==l.r.CustomLibrary&&r.Q.Ry.throw(new i.d)}),[e.hasCompleted])}},3435:(e,t,a)=>{a.r(t),a.d(t,{LibraryFolderView:()=>ne});var n=a(32735),r=a(70680),l=a(23481),i=a(20354),o=a(65858),c=a(43500),s=a(44522),d=a(49935),u=a(83834),m=a(10874),p=a(4201),f=a(83345),g=a(79718),v=a(51365),h=a(94644),b=a(39151),y=a(1666),E=a(98064),k=a(31949),L=a(1575),S=a(69883),x=a(91286),F=a(60115),A=a(79612),N=a(35223),C=a(68140),w=a(14070),I=a(97291),T=a(51855),B=a(10671),O=a(27638),P=a(44110),R=a(97816),j=a(71020),V=a(13231),G=a(22902),H=a(10741),D=a(22490),M=a(23232),U=a(99742),Z="libraries.libraryFolderEmptyState";function _(){return n.createElement(f.D.Provider,{value:Z},n.createElement(M.u,null,n.createElement(M.u.Image,{src:U.W.EmptyStates.Libraries.FOLDER}),n.createElement(M.u.Heading,null,n.createElement(f.x,{phrase:"heading"})),n.createElement(M.u.Info,null,n.createElement(f.x,{phrase:"info"}))))}var W=a(82431),z="libraries.libraryFolderVideos";function $(e){var t,a=(0,p.of)().focusSearchBar,r=(0,G.T)().hasPermissions;return e.videos.length||e.hasSubFolders?e.videos.length?n.createElement("div",null,e.hasSubFolders&&n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("h2",{className:"h4 mb-0"},n.createElement(f.x,{namespace:z,phrase:"videos"})),n.createElement("div",{className:"d-flex"},n.createElement(m.h,{svgName:N.vn.Search,appLink:{application:I.O.SEARCH,action:w.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:a,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(f.x,{namespace:z,phrase:"searchLibrary",options:{smartCount:null===(t=e.libraries)||void 0===t?void 0:t.length}})),n.createElement(g.p,{variant:"outline-dark",type:e.sort,getSortAppLink:e.getSortAppLink,analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),n.createElement(V.E4,{videos:e.videos,yearGroups:e.yearGroups,getVideoAppLink:D.W.getAppLink,getSubTextAppLink:function(e){return W.j.getSeriesAppLink(e.series)},setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,hasPermissions:r,getPreviewQuestionsAppLink:function(e){return H.j.getPreviewQuestionsAppLink(e)},imageCdnUrl:e.imageCdnUrl,isPlugin:e.isPlugin,getClassroomGuideAppLink:D.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:D.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:D.W.getResourceGuidanceAppLink}),(e.hasMore||e.isFetching)&&n.createElement(j._,{isFetching:e.isFetching,fetchNext:e.fetchNext,nextCursor:e.nextCursor})):n.createElement(n.Fragment,null):n.createElement(_,null)}var Q=a(98860),J=a(21325),K=a(65403),Y=a(74696);const q={subheading:"IJZtA"};function X(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"m-3"},n.createElement(K.i,null)),n.createElement("div",{className:"mx-3 mb-3"},n.createElement("div",{className:"".concat(q.subheading," partial-loading-background mb-2")}),n.createElement(Y.S,null)))}var ee=a(8406),te="libraries.libraryFolder",ae=l.T.encloseNamespace(te);function ne(e){var t,a,l,j,V,G,H,D,M,U=(0,r.I0)(),Z=(0,S.Z)(),_=(0,p.of)().focusSearchBar,W=(0,T.G)().isPlugin,z=i.a.useBasicFetch(E.D.domainLibraries(["customLibrary","sharedLibrary"])),K=i.a.useBasicFetch(E.D.library(e.libraryId)),Y=i.a.useBasicFetch(E.D.folder(e.folderId)),q=(0,Q.P)(e.folderId),ne=i.a.useBasicFetch(k.N.currentUser()),re=i.a.useBasicFetch(b.L.config()),le=i.a.useBasicFetch((null===(t=ne.data)||void 0===t?void 0:t.isAuthenticated)&&y.h.yearGroups(ne.data.customerId)),ie=(0,B._)({location:B.i.VideoItem}),oe=(0,O.u)(o.LZ.VideoThumbnail),ce=oe.setFavourite,se=oe.canFavourite,de=(0,ee.Bf)(e.folderId,K.data,e.sort),ue=(0,P.i)();(0,A.M)({title:null===(a=Y.data)||void 0===a?void 0:a.name}),(0,x.v)([K,Y]),(0,J.o)(K);var me=!!ne.data&&C.d.getOrSetSortType(ne.data.id,e.sort),pe=(0,F.K)(be,ye,(function(e,t){if(1===e)return(0,h.r)(t);Z.error(ae("error"))})),fe=pe.items,ge=pe.hasMore,ve=pe.isFetching,he=pe.nextCursor;function be(t){return L.R.collectionVideos(e.folderId,me,t)}function ye(e){return i.a.getFetch(U)(be(e))}(0,R.V)(fe);var Ee=!(!q.hasCompleted||(null===(l=q.items)||void 0===l?void 0:l.length));return n.createElement(v.M.Provider,{value:ie},K.data&&Y.data&&re.data?n.createElement(s.p,{heading:Y.data.name,banner:Y.data.banner,imageCdnUrl:re.data.imageCdnUrl,blockColourClass:(0,ee.WO)(Y.data),logo:null===(j=K.data.owner)||void 0===j?void 0:j.logo}):n.createElement(s.v,null),n.createElement("div",{className:"d-flex justify-content-between align-items-center py-3 mx-3 ".concat(Ee?"":"border-bottom")},K.data&&Y.data?n.createElement(d.Oo,{breadcrumbs:de}):n.createElement(d.b2,null),n.createElement("div",{className:"d-flex"},(Ee||!(null==fe?void 0:fe.length))&&n.createElement(m.h,{svgName:N.vn.Search,appLink:{application:I.O.SEARCH,action:w.e.Search.HOME,params:{source:c.fi.School}},className:"btn btn-outline-dark d-none d-sm-inline-block",onClick:_,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.Libraries,actionType:o.Vw.Click,descriptor:o.Bk.School}},n.createElement(f.x,{namespace:te,phrase:"searchLibrary",options:{smartCount:null!==(G=null===(V=z.data)||void 0===V?void 0:V.length)&&void 0!==G?G:1}})),Ee&&Y.data&&n.createElement(g.p,{variant:"outline-dark",type:me,getSortAppLink:function(t){return(0,ee.a5)(e.libraryId,Y.data,t)},analyticsOptions:{location:o.LZ.VideoListHeader,entity:o.py.Video,actionType:o.Vw.Sort,workflowPhase:o.eu.Complete}}))),fe&&q?n.createElement(n.Fragment,null,!!(null===(H=q.items)||void 0===H?void 0:H.length)&&n.createElement("div",{className:"px-2 py-3"},n.createElement(u.$,{folders:q.items,getAppLink:function(t){return(0,ee.a5)(e.libraryId,t,me)},expandFolders:!fe.length})),n.createElement("div",{className:"px-3 pb-3"},n.createElement($,{videos:fe,yearGroups:le.data,hasSubFolders:!!(null===(D=q.items)||void 0===D?void 0:D.length),setFavourite:ce,canFavourite:se,hasMore:ge,isFetching:ve,fetchNext:ye,nextCursor:he,sort:me,getSortAppLink:function(t){return(0,ee.a5)(e.libraryId,Y.data,t)},audiences:ue.data,libraries:z.data,imageCdnUrl:null===(M=re.data)||void 0===M?void 0:M.imageCdnUrl,isPlugin:W}))):n.createElement(X,null))}},8406:(e,t,a)=>{a.d(t,{Bf:()=>d,WO:()=>s,a5:()=>c});var n=a(28400),r=a(7733),l=a(17087),i=a(14070),o=a(97291);function c(e,t,a){return e&&t?{application:o.O.LIBRARIES,action:i.e.Libraries.FOLDER,args:[e,t.id,n.m.slugify(t.name)],params:{sort:a}}:null}function s(e){for(var t,a,n=0,l=0;null!==(a=l<(null===(t=e.name)||void 0===t?void 0:t.length))&&void 0!==a&&a;l++)n+=e.name.charCodeAt(l);return r.o[n%r.o.length]}function d(e,t,a){return(0,l.T)({folderId:t&&e,getAppLink:function(e){return c(t.id,e.data,a)},firstItem:{name:null==t?void 0:t.name,appLink:{application:o.O.LIBRARIES,action:i.e.Libraries.LIBRARY,args:[null==t?void 0:t.id,n.m.slugify(null==t?void 0:t.name)]}}})}}}]);
2
- //# sourceMappingURL=6138-d419f62f77-lite.chunk.js.map