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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{1760-lite-d230b51c8b.chunk.css → 1019-lite-402889ede4.chunk.css} +2 -1
  3. package/dist/css/{6094-lite-d230b51c8b.chunk.css → 2548-lite-402889ede4.chunk.css} +2 -1
  4. package/dist/css/{6546-lite-991b6e8255.chunk.css → 6596-lite-e22262b911.chunk.css} +2 -1
  5. package/dist/css/{1867-lite-991b6e8255.chunk.css → 9010-lite-e22262b911.chunk.css} +2 -1
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{1760-33f1791560-lite.chunk.js → 1019-8fc84c7c2e-lite.chunk.js} +2 -2
  8. package/dist/scripts/{1760-33f1791560-lite.chunk.js.map → 1019-8fc84c7c2e-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/1063-5a732288dc-lite.chunk.js +2 -0
  10. package/dist/scripts/1063-5a732288dc-lite.chunk.js.map +1 -0
  11. package/dist/scripts/{9173-2392d447a6-lite.chunk.js → 1104-f057c6dea1-lite.chunk.js} +3 -3
  12. package/dist/scripts/{9173-2392d447a6-lite.chunk.js.map → 1104-f057c6dea1-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{1125-aac132b88f-lite.chunk.js → 1125-c5138ef662-lite.chunk.js} +2 -2
  14. package/dist/scripts/1125-c5138ef662-lite.chunk.js.map +1 -0
  15. package/dist/scripts/1169-9b7d850bab-lite.chunk.js +2 -0
  16. package/dist/scripts/1169-9b7d850bab-lite.chunk.js.map +1 -0
  17. package/dist/scripts/{1379-082bbab71a-lite.chunk.js → 1379-ca519ec56b-lite.chunk.js} +3 -3
  18. package/dist/scripts/{1379-082bbab71a-lite.chunk.js.map → 1379-ca519ec56b-lite.chunk.js.map} +1 -1
  19. package/dist/scripts/1672-0d1fc90529-lite.chunk.js +3 -0
  20. package/dist/scripts/1672-0d1fc90529-lite.chunk.js.map +1 -0
  21. package/dist/scripts/1725-99450ed637-lite.chunk.js +2 -0
  22. package/dist/scripts/1725-99450ed637-lite.chunk.js.map +1 -0
  23. package/dist/scripts/1891-5914c54eca-lite.chunk.js +2 -0
  24. package/dist/scripts/1891-5914c54eca-lite.chunk.js.map +1 -0
  25. package/dist/scripts/1896-399a91d18c-lite.chunk.js +2 -0
  26. package/dist/scripts/1896-399a91d18c-lite.chunk.js.map +1 -0
  27. package/dist/scripts/193-797b89797a-lite.chunk.js +2 -0
  28. package/dist/scripts/193-797b89797a-lite.chunk.js.map +1 -0
  29. package/dist/scripts/209-fe96739cb5-lite.chunk.js +2 -0
  30. package/dist/scripts/209-fe96739cb5-lite.chunk.js.map +1 -0
  31. package/dist/scripts/2134-b8d5c46887-lite.chunk.js +2 -0
  32. package/dist/scripts/2134-b8d5c46887-lite.chunk.js.map +1 -0
  33. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js +2 -0
  34. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js.map +1 -0
  35. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js +2 -0
  36. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js.map +1 -0
  37. package/dist/scripts/2548-c5dd2899df-lite.chunk.js +2 -0
  38. package/dist/scripts/2548-c5dd2899df-lite.chunk.js.map +1 -0
  39. package/dist/scripts/2952-c3a826b714-lite.chunk.js +2 -0
  40. package/dist/scripts/2952-c3a826b714-lite.chunk.js.map +1 -0
  41. package/dist/scripts/3404-23125f10ea-lite.chunk.js +2 -0
  42. package/dist/scripts/3404-23125f10ea-lite.chunk.js.map +1 -0
  43. package/dist/scripts/3633-f3609526a5-lite.chunk.js +2 -0
  44. package/dist/scripts/3633-f3609526a5-lite.chunk.js.map +1 -0
  45. package/dist/scripts/3728-eed9e78985-lite.chunk.js +2 -0
  46. package/dist/scripts/3728-eed9e78985-lite.chunk.js.map +1 -0
  47. package/dist/scripts/4063-5fa157657f-lite.chunk.js +2 -0
  48. package/dist/scripts/4063-5fa157657f-lite.chunk.js.map +1 -0
  49. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js +2 -0
  50. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js.map +1 -0
  51. package/dist/scripts/4273-e42f763f00-lite.chunk.js +3 -0
  52. package/dist/scripts/4273-e42f763f00-lite.chunk.js.map +1 -0
  53. package/dist/scripts/4395-d0815835c8-lite.chunk.js +2 -0
  54. package/dist/scripts/4395-d0815835c8-lite.chunk.js.map +1 -0
  55. package/dist/scripts/4502-af4903784e-lite.chunk.js +2 -0
  56. package/dist/scripts/4502-af4903784e-lite.chunk.js.map +1 -0
  57. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js +2 -0
  58. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js.map +1 -0
  59. package/dist/scripts/5573-4352a3537e-lite.chunk.js +2 -0
  60. package/dist/scripts/5573-4352a3537e-lite.chunk.js.map +1 -0
  61. package/dist/scripts/5595-3acc9593bf-lite.chunk.js +2 -0
  62. package/dist/scripts/5595-3acc9593bf-lite.chunk.js.map +1 -0
  63. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js +2 -0
  64. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js.map +1 -0
  65. package/dist/scripts/5877-628732da21-lite.chunk.js +2 -0
  66. package/dist/scripts/5877-628732da21-lite.chunk.js.map +1 -0
  67. package/dist/scripts/5936-cd98109a7b-lite.chunk.js +2 -0
  68. package/dist/scripts/5936-cd98109a7b-lite.chunk.js.map +1 -0
  69. package/dist/scripts/{5940-f335f8c290-lite.chunk.js → 5940-2767b40c40-lite.chunk.js} +2 -2
  70. package/dist/scripts/5940-2767b40c40-lite.chunk.js.map +1 -0
  71. package/dist/scripts/6054-1e9b86d631-lite.chunk.js +2 -0
  72. package/dist/scripts/6054-1e9b86d631-lite.chunk.js.map +1 -0
  73. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js +2 -0
  74. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js.map +1 -0
  75. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js → 624-09b51a9d32-lite.chunk.js} +3 -3
  76. package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.map → 624-09b51a9d32-lite.chunk.js.map} +1 -1
  77. package/dist/scripts/6263-8a7931bf51-lite.chunk.js +2 -0
  78. package/dist/scripts/6263-8a7931bf51-lite.chunk.js.map +1 -0
  79. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js +2 -0
  80. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js.map +1 -0
  81. package/dist/scripts/6470-9a700cabce-lite.chunk.js +2 -0
  82. package/dist/scripts/6470-9a700cabce-lite.chunk.js.map +1 -0
  83. package/dist/scripts/6481-035d218a77-lite.chunk.js +2 -0
  84. package/dist/scripts/6481-035d218a77-lite.chunk.js.map +1 -0
  85. package/dist/scripts/6532-59e9abf69d-lite.chunk.js +2 -0
  86. package/dist/scripts/6532-59e9abf69d-lite.chunk.js.map +1 -0
  87. package/dist/scripts/6596-f75129c039-lite.chunk.js +2 -0
  88. package/dist/scripts/6596-f75129c039-lite.chunk.js.map +1 -0
  89. package/dist/scripts/6604-9adec889c7-lite.chunk.js +2 -0
  90. package/dist/scripts/6604-9adec889c7-lite.chunk.js.map +1 -0
  91. package/dist/scripts/6746-3f501b95cf-lite.chunk.js +2 -0
  92. package/dist/scripts/6746-3f501b95cf-lite.chunk.js.map +1 -0
  93. package/dist/scripts/714-c00ad56229-lite.chunk.js +2 -0
  94. package/dist/scripts/714-c00ad56229-lite.chunk.js.map +1 -0
  95. package/dist/scripts/7163-84c2b15394-lite.chunk.js +2 -0
  96. package/dist/scripts/7163-84c2b15394-lite.chunk.js.map +1 -0
  97. package/dist/scripts/7178-ed74c33056-lite.chunk.js +2 -0
  98. package/dist/scripts/7178-ed74c33056-lite.chunk.js.map +1 -0
  99. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js +2 -0
  100. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js.map +1 -0
  101. package/dist/scripts/7234-84c087600e-lite.chunk.js +2 -0
  102. package/dist/scripts/7234-84c087600e-lite.chunk.js.map +1 -0
  103. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js +2 -0
  104. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js.map +1 -0
  105. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js +2 -0
  106. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js.map +1 -0
  107. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js +2 -0
  108. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js.map +1 -0
  109. package/dist/scripts/7757-7e293be936-lite.chunk.js +2 -0
  110. package/dist/scripts/7757-7e293be936-lite.chunk.js.map +1 -0
  111. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js +2 -0
  112. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js.map +1 -0
  113. package/dist/scripts/7818-230982fc27-lite.chunk.js +2 -0
  114. package/dist/scripts/7818-230982fc27-lite.chunk.js.map +1 -0
  115. package/dist/scripts/8323-360541a2a8-lite.chunk.js +3 -0
  116. package/dist/scripts/8323-360541a2a8-lite.chunk.js.map +1 -0
  117. package/dist/scripts/8709-c4f1068232-lite.chunk.js +2 -0
  118. package/dist/scripts/8709-c4f1068232-lite.chunk.js.map +1 -0
  119. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js +2 -0
  120. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js.map +1 -0
  121. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js +2 -0
  122. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js.map +1 -0
  123. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js +3 -0
  124. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js.map +1 -0
  125. package/dist/scripts/9173-f9708ec0de-lite.chunk.js +2 -0
  126. package/dist/scripts/9173-f9708ec0de-lite.chunk.js.map +1 -0
  127. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js +3 -0
  128. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js.map +1 -0
  129. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js +2 -0
  130. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js.map +1 -0
  131. package/dist/scripts/{9395-90b87097fa-lite.chunk.js → 9395-e1a02b01ce-lite.chunk.js} +3 -3
  132. package/dist/scripts/{9395-90b87097fa-lite.chunk.js.map → 9395-e1a02b01ce-lite.chunk.js.map} +1 -1
  133. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js +2 -0
  134. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js.map +1 -0
  135. package/dist/scripts/{9478-99486906b9-lite.chunk.js → 9478-abfa7ed3cc-lite.chunk.js} +3 -3
  136. package/dist/scripts/{9478-99486906b9-lite.chunk.js.map → 9478-abfa7ed3cc-lite.chunk.js.map} +1 -1
  137. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js → 953-225db845ab-lite.chunk.js} +3 -3
  138. package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.map → 953-225db845ab-lite.chunk.js.map} +1 -1
  139. package/dist/scripts/9620-95e6cc7b2b-lite.chunk.js +3 -0
  140. package/dist/scripts/9620-95e6cc7b2b-lite.chunk.js.map +1 -0
  141. package/dist/scripts/9719-9736913451-lite.chunk.js +3 -0
  142. package/dist/scripts/9719-9736913451-lite.chunk.js.map +1 -0
  143. package/dist/scripts/999-bdc7956050-lite.chunk.js +2 -0
  144. package/dist/scripts/999-bdc7956050-lite.chunk.js.map +1 -0
  145. package/dist/scripts/bundle-9f8729bedb.min.js +3 -0
  146. package/dist/scripts/bundle-9f8729bedb.min.js.map +1 -0
  147. package/package.json +1 -1
  148. package/dist/scripts/1125-aac132b88f-lite.chunk.js.map +0 -1
  149. package/dist/scripts/1169-534a29a204-lite.chunk.js +0 -2
  150. package/dist/scripts/1169-534a29a204-lite.chunk.js.map +0 -1
  151. package/dist/scripts/1672-672f298d82-lite.chunk.js +0 -3
  152. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +0 -1
  153. package/dist/scripts/1725-075015497e-lite.chunk.js +0 -2
  154. package/dist/scripts/1725-075015497e-lite.chunk.js.map +0 -1
  155. package/dist/scripts/1818-64a145c5fe-lite.chunk.js +0 -2
  156. package/dist/scripts/1818-64a145c5fe-lite.chunk.js.map +0 -1
  157. package/dist/scripts/1820-993521951d-lite.chunk.js +0 -2
  158. package/dist/scripts/1820-993521951d-lite.chunk.js.map +0 -1
  159. package/dist/scripts/1867-260ef9f8c2-lite.chunk.js +0 -2
  160. package/dist/scripts/1867-260ef9f8c2-lite.chunk.js.map +0 -1
  161. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js +0 -2
  162. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js.map +0 -1
  163. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js +0 -2
  164. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js.map +0 -1
  165. package/dist/scripts/193-f08b054631-lite.chunk.js +0 -2
  166. package/dist/scripts/193-f08b054631-lite.chunk.js.map +0 -1
  167. package/dist/scripts/209-de1729d1b1-lite.chunk.js +0 -2
  168. package/dist/scripts/209-de1729d1b1-lite.chunk.js.map +0 -1
  169. package/dist/scripts/2134-bca2f4697e-lite.chunk.js +0 -2
  170. package/dist/scripts/2134-bca2f4697e-lite.chunk.js.map +0 -1
  171. package/dist/scripts/2703-591ccf069c-lite.chunk.js +0 -2
  172. package/dist/scripts/2703-591ccf069c-lite.chunk.js.map +0 -1
  173. package/dist/scripts/3404-171fdee802-lite.chunk.js +0 -2
  174. package/dist/scripts/3404-171fdee802-lite.chunk.js.map +0 -1
  175. package/dist/scripts/3633-66d28be6f8-lite.chunk.js +0 -2
  176. package/dist/scripts/3633-66d28be6f8-lite.chunk.js.map +0 -1
  177. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js +0 -2
  178. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js.map +0 -1
  179. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js +0 -2
  180. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js.map +0 -1
  181. package/dist/scripts/4395-64da004753-lite.chunk.js +0 -2
  182. package/dist/scripts/4395-64da004753-lite.chunk.js.map +0 -1
  183. package/dist/scripts/4502-2e30d86385-lite.chunk.js +0 -2
  184. package/dist/scripts/4502-2e30d86385-lite.chunk.js.map +0 -1
  185. package/dist/scripts/5143-b6896dad98-lite.chunk.js +0 -2
  186. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +0 -1
  187. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js +0 -2
  188. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js.map +0 -1
  189. package/dist/scripts/5595-c4397e12a8-lite.chunk.js +0 -2
  190. package/dist/scripts/5595-c4397e12a8-lite.chunk.js.map +0 -1
  191. package/dist/scripts/5606-6c25caedc4-lite.chunk.js +0 -2
  192. package/dist/scripts/5606-6c25caedc4-lite.chunk.js.map +0 -1
  193. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js +0 -2
  194. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js.map +0 -1
  195. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js +0 -2
  196. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js.map +0 -1
  197. package/dist/scripts/5940-f335f8c290-lite.chunk.js.map +0 -1
  198. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js +0 -2
  199. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js.map +0 -1
  200. package/dist/scripts/6094-24c430efb3-lite.chunk.js +0 -2
  201. package/dist/scripts/6094-24c430efb3-lite.chunk.js.map +0 -1
  202. package/dist/scripts/6138-21ae042a7b-lite.chunk.js +0 -2
  203. package/dist/scripts/6138-21ae042a7b-lite.chunk.js.map +0 -1
  204. package/dist/scripts/6263-3455286798-lite.chunk.js +0 -2
  205. package/dist/scripts/6263-3455286798-lite.chunk.js.map +0 -1
  206. package/dist/scripts/6290-56412c6663-lite.chunk.js +0 -2
  207. package/dist/scripts/6290-56412c6663-lite.chunk.js.map +0 -1
  208. package/dist/scripts/6415-b29029aa1b-lite.chunk.js +0 -2
  209. package/dist/scripts/6415-b29029aa1b-lite.chunk.js.map +0 -1
  210. package/dist/scripts/6470-6216086d63-lite.chunk.js +0 -2
  211. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +0 -1
  212. package/dist/scripts/6481-899eba8b3d-lite.chunk.js +0 -2
  213. package/dist/scripts/6481-899eba8b3d-lite.chunk.js.map +0 -1
  214. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js +0 -2
  215. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js.map +0 -1
  216. package/dist/scripts/6546-faa6f93a0e-lite.chunk.js +0 -2
  217. package/dist/scripts/6546-faa6f93a0e-lite.chunk.js.map +0 -1
  218. package/dist/scripts/6587-ba8e36be0b-lite.chunk.js +0 -2
  219. package/dist/scripts/6587-ba8e36be0b-lite.chunk.js.map +0 -1
  220. package/dist/scripts/6604-92193d6d68-lite.chunk.js +0 -2
  221. package/dist/scripts/6604-92193d6d68-lite.chunk.js.map +0 -1
  222. package/dist/scripts/6746-b5b2739944-lite.chunk.js +0 -2
  223. package/dist/scripts/6746-b5b2739944-lite.chunk.js.map +0 -1
  224. package/dist/scripts/679-e18e7956d0-lite.chunk.js +0 -2
  225. package/dist/scripts/679-e18e7956d0-lite.chunk.js.map +0 -1
  226. package/dist/scripts/714-432082f4fa-lite.chunk.js +0 -2
  227. package/dist/scripts/714-432082f4fa-lite.chunk.js.map +0 -1
  228. package/dist/scripts/7178-e603ea6b58-lite.chunk.js +0 -2
  229. package/dist/scripts/7178-e603ea6b58-lite.chunk.js.map +0 -1
  230. package/dist/scripts/7223-135cc7d675-lite.chunk.js +0 -2
  231. package/dist/scripts/7223-135cc7d675-lite.chunk.js.map +0 -1
  232. package/dist/scripts/729-c704d587d3-lite.chunk.js +0 -2
  233. package/dist/scripts/729-c704d587d3-lite.chunk.js.map +0 -1
  234. package/dist/scripts/7679-b01da2c09d-lite.chunk.js +0 -2
  235. package/dist/scripts/7679-b01da2c09d-lite.chunk.js.map +0 -1
  236. package/dist/scripts/7757-320e868e90-lite.chunk.js +0 -2
  237. package/dist/scripts/7757-320e868e90-lite.chunk.js.map +0 -1
  238. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js +0 -2
  239. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js.map +0 -1
  240. package/dist/scripts/7818-2eafc5f812-lite.chunk.js +0 -2
  241. package/dist/scripts/7818-2eafc5f812-lite.chunk.js.map +0 -1
  242. package/dist/scripts/8323-99cb03891e-lite.chunk.js +0 -3
  243. package/dist/scripts/8323-99cb03891e-lite.chunk.js.map +0 -1
  244. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js +0 -2
  245. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js.map +0 -1
  246. package/dist/scripts/8800-335154fe11-lite.chunk.js +0 -2
  247. package/dist/scripts/8800-335154fe11-lite.chunk.js.map +0 -1
  248. package/dist/scripts/8982-63c31685bf-lite.chunk.js +0 -2
  249. package/dist/scripts/8982-63c31685bf-lite.chunk.js.map +0 -1
  250. package/dist/scripts/9016-0c078a39cb-lite.chunk.js +0 -3
  251. package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +0 -1
  252. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js +0 -2
  253. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +0 -1
  254. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +0 -3
  255. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +0 -1
  256. package/dist/scripts/9308-362f86711f-lite.chunk.js +0 -3
  257. package/dist/scripts/9308-362f86711f-lite.chunk.js.map +0 -1
  258. package/dist/scripts/9359-cc085d48a4-lite.chunk.js +0 -2
  259. package/dist/scripts/9359-cc085d48a4-lite.chunk.js.map +0 -1
  260. package/dist/scripts/9399-2a314327ac-lite.chunk.js +0 -2
  261. package/dist/scripts/9399-2a314327ac-lite.chunk.js.map +0 -1
  262. package/dist/scripts/9620-f1d717b02b-lite.chunk.js +0 -3
  263. package/dist/scripts/9620-f1d717b02b-lite.chunk.js.map +0 -1
  264. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js +0 -3
  265. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js.map +0 -1
  266. package/dist/scripts/bundle-724fc2e388.min.js +0 -3
  267. package/dist/scripts/bundle-724fc2e388.min.js.map +0 -1
  268. /package/dist/css/{5143-lite-676baa8218.chunk.css → 1063-lite-676baa8218.chunk.css} +0 -0
  269. /package/dist/css/{9173-lite-b361d438f6.chunk.css → 1104-lite-b361d438f6.chunk.css} +0 -0
  270. /package/dist/css/{679-lite-00eb7dadb2.chunk.css → 2952-lite-00eb7dadb2.chunk.css} +0 -0
  271. /package/dist/css/{4860-lite-93d7fad455.chunk.css → 4063-lite-93d7fad455.chunk.css} +0 -0
  272. /package/dist/css/{9308-lite-a3c7435ba4.chunk.css → 4273-lite-a3c7435ba4.chunk.css} +0 -0
  273. /package/dist/css/{729-lite-93d7fad455.chunk.css → 4850-lite-93d7fad455.chunk.css} +0 -0
  274. /package/dist/css/{8766-lite-8c5d7658ec.chunk.css → 7163-lite-8c5d7658ec.chunk.css} +0 -0
  275. /package/dist/css/{1818-lite-5ef1706d69.chunk.css → 7234-lite-5ef1706d69.chunk.css} +0 -0
  276. /package/dist/css/{6415-lite-707657102b.chunk.css → 9173-lite-707657102b.chunk.css} +0 -0
  277. /package/dist/css/{1820-lite-c88eb54bee.chunk.css → 999-lite-c88eb54bee.chunk.css} +0 -0
  278. /package/dist/scripts/{1379-082bbab71a-lite.chunk.js.LICENSE.txt → 1104-f057c6dea1-lite.chunk.js.LICENSE.txt} +0 -0
  279. /package/dist/scripts/{1672-672f298d82-lite.chunk.js.LICENSE.txt → 1379-ca519ec56b-lite.chunk.js.LICENSE.txt} +0 -0
  280. /package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.LICENSE.txt → 1672-0d1fc90529-lite.chunk.js.LICENSE.txt} +0 -0
  281. /package/dist/scripts/{8323-99cb03891e-lite.chunk.js.LICENSE.txt → 4273-e42f763f00-lite.chunk.js.LICENSE.txt} +0 -0
  282. /package/dist/scripts/{9173-2392d447a6-lite.chunk.js.LICENSE.txt → 624-09b51a9d32-lite.chunk.js.LICENSE.txt} +0 -0
  283. /package/dist/scripts/{9230-6dee40b1fb-lite.chunk.js.LICENSE.txt → 8323-360541a2a8-lite.chunk.js.LICENSE.txt} +0 -0
  284. /package/dist/scripts/{9016-0c078a39cb-lite.chunk.js.LICENSE.txt → 9016-82d7e0afb9-lite.chunk.js.LICENSE.txt} +0 -0
  285. /package/dist/scripts/{9308-362f86711f-lite.chunk.js.LICENSE.txt → 9230-ae200d2bd3-lite.chunk.js.LICENSE.txt} +0 -0
  286. /package/dist/scripts/{9395-90b87097fa-lite.chunk.js.LICENSE.txt → 9395-e1a02b01ce-lite.chunk.js.LICENSE.txt} +0 -0
  287. /package/dist/scripts/{9478-99486906b9-lite.chunk.js.LICENSE.txt → 9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt} +0 -0
  288. /package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.LICENSE.txt → 953-225db845ab-lite.chunk.js.LICENSE.txt} +0 -0
  289. /package/dist/scripts/{9620-f1d717b02b-lite.chunk.js.LICENSE.txt → 9620-95e6cc7b2b-lite.chunk.js.LICENSE.txt} +0 -0
  290. /package/dist/scripts/{9719-cf7d4172b6-lite.chunk.js.LICENSE.txt → 9719-9736913451-lite.chunk.js.LICENSE.txt} +0 -0
  291. /package/dist/scripts/{bundle-724fc2e388.min.js.LICENSE.txt → bundle-9f8729bedb.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8323-360541a2a8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/header/continue-buttons/BulkUserActionsContinueButton.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayoutPartialLoading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/bulk-user-actions-wizard-layout.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout.tsx","file:///app/packages/libs/shared/src/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel.ts","file:///app/packages/libs/shared/src/apps/user-manager/utils/BulkUserActionsAnalyticsHelper.ts","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/wizard/header/WizardHeader.tsx","file:///app/packages/libs/shared/src/components/wizard/step-list/WizardStepList.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useBulkActionsUsers.ts","file:///app/packages/projects/lite/src/apps/user-manager/hooks/useBulkActionsUsersWrapper.ts"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\n\nconst namespace = 'userManager.userWizardBackButtons';\n\ninterface BulkUserActionsBackButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n}\n\nexport function BulkUserActionsBackButton(props: BulkUserActionsBackButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n function getActionDetailsAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'activationEmail':\n return props.appLinks.bulkActionsSelectAction;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n }\n\n function getAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.userManager;\n \n case 'select-action':\n return props.appLinks.bulkActionsReviewAccounts;\n\n case 'action-details':\n return props.appLinks.bulkActionsSelectAction;\n\n case 'confirmation':\n return getActionDetailsAppLink();\n }\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className='btn btn-link me-2'\n appLink={getAppLink()}\n >\n <Text namespace={namespace} phrase={props.currentStep === 'review-accounts' ? 'cancel' : 'back'} />\n </AppLink>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ContextService } from 'libs/analytics/services/ContextService';\n\nimport { BulkUserActionStepId } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\nconst namespace = 'userManager.userWizardHeader';\n\ninterface BulkUserActionsContinueButtonProps {\n currentStep: BulkUserActionStepId;\n appLinks: UserManagerAppLinks;\n onFinish: () => void;\n}\n\nexport function BulkUserActionsContinueButton(props: BulkUserActionsContinueButtonProps): JSX.Element {\n const [viewModel] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n\n const { disableNext, onClickConfirm, showButtons } = React.useContext(WizardLayoutContext);\n\n const currentAppLink = ContextService.getCurrentContext().appLink;\n\n function getContinueAppLink(): Core.AppLink {\n switch (props.currentStep) {\n case 'review-accounts':\n return props.appLinks.bulkActionsSelectAction;\n case 'select-action':\n return getSelectActionAppLink();\n case 'action-details':\n return props.appLinks.bulkActionsConfirmation[viewModel?.subAction];\n default:\n return null;\n }\n }\n\n function getSelectActionAppLink(): Core.AppLink {\n if (!viewModel?.action)\n return null;\n \n switch (viewModel.action) {\n case 'delete':\n return props.appLinks.bulkActionsActionDetails.delete;\n case 'activation':\n return props.appLinks.bulkActionsActionDetails.activation;\n case 'yearGroupRollover':\n return props.appLinks.bulkActionsActionDetails.yearGroupRollover;\n case 'changeYearGroup':\n return props.appLinks.bulkActionsActionDetails.changeYearGroup;\n case 'addToClassroom':\n return props.appLinks.bulkActionsActionDetails.addToClassroom;\n case 'resetPassword':\n return props.appLinks.bulkActionsActionDetails.resetPassword;\n case 'resetEmail':\n return props.appLinks.bulkActionsConfirmation.resetEmail;\n case 'activationEmail':\n return props.appLinks.bulkActionsConfirmation.activationEmail;\n case 'removeFromSchool':\n return props.appLinks.bulkActionsActionDetails.removeFromSchool;\n }\n \n Core.ErrorHelper.throw(new DevError(`Missing switch statement case for ${viewModel.action} in BulkUserActionsContinueButton.tsx`));\n }\n\n if (currentAppLink.action === props.appLinks.bulkActionsStatus.complete.action && showButtons) {\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={props.appLinks.userManager}\n disabled={disableNext}\n onClick={props.onFinish}\n >\n <Text\n namespace={namespace}\n phrase={'finish'}\n />\n </AppLink>\n );\n }\n\n if (props.currentStep === 'confirmation') {\n return (\n <Button\n className={disableNext ? 'disabled' : ''}\n variant='dark'\n onClick={() => {\n BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep);\n onClickConfirm();\n }}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='confirm'\n />\n </Button>\n );\n }\n\n if (props.currentStep === 'status')\n return <></>;\n\n return (\n <AppLink\n className={`btn btn-dark ${disableNext ? 'disabled' : ''}`}\n appLink={getContinueAppLink()}\n onClick={() => BulkUserActionsAnalyticsHelper.onClickNext(viewModel, props.currentStep)}\n disabled={disableNext}\n >\n <Text\n namespace={namespace}\n phrase='next'\n />\n </AppLink>\n );\n}","import React from 'react';\n\nexport function BulkUserActionsWizardLayoutPartialLoading(): React.ReactElement {\n return (\n <>\n <div className={`partial-loading-background mb-2`} style={{ height: '1.75rem', width: '15rem' }} />\n <div className={`partial-loading-background mb-3`} style={{ height: '1.5rem', width: '12rem' }} />\n <div className={`partial-loading-background mb-2`} style={{ height: '8em', width: '40rem' }} />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wizardContent\":\"UBwkq\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BulkUserActionsBackButton } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/header/back-buttons/BulkUserActionsBackButton';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { BulkUserActionsAnalyticsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsAnalyticsHelper';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { WizardHeader } from 'libs/shared/components/wizard/header/WizardHeader';\nimport { WizardStepList } from 'libs/shared/components/wizard/step-list/WizardStepList';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContextProvider } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\nimport { BulkUserActionsContinueButton } from '../header/continue-buttons/BulkUserActionsContinueButton';\n\nimport { BulkUserActionsWizardLayoutPartialLoading } from './BulkUserActionsWizardLayoutPartialLoading';\n\nimport styles from './bulk-user-actions-wizard-layout.scss';\n\nconst namespace = 'userManager.bulkUserActionsWizardLayout';\n\nexport type BulkUserActionStepId = 'review-accounts' | 'select-action' | 'action-details' | 'confirmation' | 'status';\nexport type BulkUserActionOptions = 'delete' | 'activation' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\nexport type BulkUserSubAction = 'delete' | 'deactivate' | 'reactivate' | 'changeYearGroup' | 'yearGroupRollover' | 'addToClassroom' | 'resetPassword' | 'resetEmail' | 'activationEmail' | 'removeFromSchool';\n\nexport const BULK_USER_ACTIONS_NAV_LOCK_ID = 'bulk-user-actions-wizard';\n\ntype BulkUserActionsWizardLayoutProps = React.PropsWithChildren<{\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n currentStep: BulkUserActionStepId;\n users: User[];\n userCount: number;\n \n preventNavLock?: boolean;\n disableAppLinks?: boolean;\n hideHeader?: boolean;\n loaded: boolean;\n\n /**\n * Used by year group rollover to allow loading straight into the details view\n */\n preventRedirect?: boolean;\n}>;\n\nexport function BulkUserActionsWizardLayout(props: BulkUserActionsWizardLayoutProps): JSX.Element {\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const navLock = useNavLock();\n\n React.useEffect(() => {\n // If there is no view model, redirect away\n if (!viewModel?.userIdMap?.size && !props.preventRedirect) {\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n logWizardExitEvent();\n return;\n }\n\n if (props.preventNavLock)\n return;\n\n navLock.lock({\n id: BULK_USER_ACTIONS_NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: BulkUserActionsHelper.getWizardAppLinks(props.appLinks),\n onConfirmUnlock: () => {\n logWizardExitEvent();\n setViewModel({});\n }\n });\n\n return () => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n };\n }, []);\n\n function onFinish(): void {\n setViewModel({});\n }\n function logWizardExitEvent(): void {\n /**\n * If there is no viewmodel present when this is called, it means the viewmodel was never\n * initialized with data. This can happen for example if the user page loads onto the wizard.\n * In this case, we don't log an exit event.\n */\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n step: props.currentStep,\n userCount: viewModel?.userIdMap?.size ?? 0\n };\n\n const actionName: string | null = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n workflowPhase: WorkflowPhase.Discard,\n actionType: UserAction.BulkAction,\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User\n });\n }\n\n const loaded = props.loaded && !!props.users?.length;\n\n return (\n <WizardLayoutContextProvider>\n <div className='px-3'>\n <WizardHeader\n title={LanguageService.getPhrase(namespace, 'bulkActions')}\n currentStep={props.currentStep}\n hideHeader={props.hideHeader}\n loaded={props.loaded}\n continueButton={\n <BulkUserActionsContinueButton\n currentStep={props.currentStep}\n appLinks={props.appLinks}\n onFinish={onFinish}\n />\n }\n backButton={\n <BulkUserActionsBackButton currentStep={props.currentStep} appLinks={props.appLinks} />\n }\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: props.appLinks.settings\n },\n {\n name: LanguageService.getPhrase(namespace, props.userType === UserGroup.Learner ? 'studentManager' : 'staffManager'),\n appLink: props.appLinks.userManager\n },\n {\n name: LanguageService.getPhrase(namespace, 'bulkActions'),\n active: true\n }\n ]}\n />\n\n <div className='row g-0'>\n <div className='col-3'>\n <WizardStepList<BulkUserActionStepId>\n steps={BulkUserActionsHelper.getSteps(\n props.userType,\n props.userCount,\n props.appLinks,\n viewModel?.action\n )}\n currentStep={props.currentStep}\n disableAppLinks={!loaded || props.disableAppLinks}\n />\n </div>\n\n <div className={`col-9 ${styles.wizardContent}`}>\n {loaded ?\n props.children :\n <BulkUserActionsWizardLayoutPartialLoading />\n }\n </div>\n </div>\n </div>\n </WizardLayoutContextProvider>\n );\n}\n","import { Classroom, YearGroup } from 'libs/shared/interfaces';\n\nimport { BulkUserActionOptions, BulkUserSubAction } from '../../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerQueryParams } from '../query-params/UserManagerQueryParams';\n\n// Please keep this array up to date with the interface below, so that the data we log to analytics remains accurate\nexport const BaseBulkUserActionsViewModelKeys: Array<keyof BulkUserActionsViewModel> = [\n 'userIdMap', 'params', 'action', 'subAction', 'allUsersSelected', 'allUsersCount', 'scrollContainer'\n];\n\nexport interface BulkUserActionsViewModel {\n userIdMap?: Map<string, boolean>;\n params?: UserManagerQueryParams;\n\n action?: BulkUserActionOptions; // TODO: Rename this to \"actionCategory\"\n subAction?: BulkUserSubAction; // TODO: Rename this to \"action\"\n\n // Used to determine if we can show year group rollover\n allUsersSelected?: boolean;\n allUsersCount?: number;\n scrollContainer?: HTMLElement;\n}\n\nexport interface BulkUserActionsYearGroupRolloverViewModel extends BulkUserActionsViewModel {\n yearGroup: YearGroup;\n}\n\nexport interface BulkUserActionsAddToClassroomViewModel extends BulkUserActionsViewModel {\n classroom: Classroom;\n}\n\nexport interface BulkUserActionsResetPasswordViewModel extends BulkUserActionsViewModel {\n password: string;\n changeOnNextLogin: boolean;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport { BulkUserActionStepId } from '../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { BaseBulkUserActionsViewModelKeys, BulkUserActionsViewModel } from '../interfaces/viewmodels/BulkUserActionsViewModel';\n\nexport const BulkUserActionsAnalyticsHelper = {\n getAnalyticsActionName(viewModel: BulkUserActionsViewModel): string | null {\n if (!viewModel?.action)\n return null;\n\n switch (viewModel.action) {\n case 'activation': {\n if (!viewModel?.subAction)\n return 'Deactivate / reactivate';\n\n if (viewModel.subAction === 'deactivate')\n return 'Deactivate';\n\n return 'Reactivate';\n }\n case 'addToClassroom':\n return 'Add to classroom';\n case 'changeYearGroup':\n return 'Change year group';\n case 'delete':\n return 'Delete user';\n case 'resetEmail':\n return 'Send password reset email';\n case 'activationEmail':\n return 'Send account activation email';\n case 'resetPassword':\n return 'Reset password';\n case 'yearGroupRollover':\n return 'Annual year group rollover';\n case 'removeFromSchool':\n return 'Remove user';\n default:\n return null;\n }\n },\n\n onClickNext(viewModel: BulkUserActionsViewModel, currentStep: BulkUserActionStepId): void {\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n userCount: viewModel.userIdMap.size,\n step: currentStep\n };\n\n const actionName = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n const actionData = ObjectHelper.omit(viewModel, BaseBulkUserActionsViewModelKeys);\n\n // Adds extra items like the `yearGroup` on year group actions or `password` on the reset pw action\n if (Object.keys(actionData).length)\n analyticsData.actionData = actionData;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n location: LocationContext.BulkUserActionsWizard,\n workflowPhase: WorkflowPhase.Next,\n actionType: UserAction.BulkAction,\n entity: EntityType.User\n });\n },\n\n logYearGroupRolloverEntry(location: LocationContext): void {\n AnalyticsHelper.logUserAction({\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName({ action: 'yearGroupRollover' })\n }, {\n entity: EntityType.User,\n actionType: UserAction.BulkAction,\n workflowPhase: WorkflowPhase.Start,\n location\n });\n },\n\n getJobStatus(status: BatchJobStatus): string | null {\n switch (status) {\n case BatchJobStatus.Completed:\n return 'Success';\n case BatchJobStatus.CompletedWithError:\n return 'Completed with some errors';\n case BatchJobStatus.Failed:\n return 'Failed';\n default:\n return null;\n }\n }\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\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\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\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 = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n return (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n );\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 || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\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 const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\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 React from 'react';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\n\ninterface WizardHeaderProps<TStepId> {\n currentStep: TStepId;\n title: string;\n continueButton: JSX.Element;\n backButton: JSX.Element;\n breadcrumbs?: Breadcrumb[];\n hideHeader?: boolean;\n loaded: boolean;\n}\n\nexport function WizardHeader<TStepId>(props: WizardHeaderProps<TStepId>): JSX.Element {\n const { showButtons } = React.useContext(WizardLayoutContext);\n\n return (\n <div className='d-flex justify-content-between'>\n {!props.hideHeader ? (\n <div>\n <h1 className='h2'>{props.title}</h1>\n\n {props.breadcrumbs &&\n <div className='pb-3'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n </div>\n ) : <div/>}\n\n {props.loaded && showButtons && (\n <div className='d-flex align-items-center'>\n {props.backButton}\n {props.continueButton}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nconst namespace = 'shared.wizardStepList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface WizardStep<StepId extends string> {\n id: StepId;\n text: string;\n appLink?: Core.AppLink;\n subText?: string;\n disabled?: boolean;\n}\n\ninterface WizardStepListItemProps {\n appLink: Core.AppLink;\n isSelected: boolean;\n isCompleted: boolean;\n text: string;\n subText?: string;\n disabled: boolean;\n index: number;\n hideStepNumber?: boolean;\n}\n\nfunction WizardStepListItem(props: WizardStepListItemProps): JSX.Element {\n const content = (\n <>\n <div className='d-flex'>\n {!props.hideStepNumber && <div className='flex-shrink-0 flex-grow-0'>{`${props.index + 1}.`}&nbsp;</div>}\n <div>{props.text}</div>\n </div>\n\n {props.subText && (\n <div className='ms-2 ps-1 pt-1'>\n {props.subText}\n </div>\n )}\n </>\n );\n\n \n let className = 'px-2 py-1 mb-1 rounded d-inline-block';\n\n if (props.isSelected) {\n className += ` bg-light-blue fw-semibold`;\n }\n\n if ((!props.isSelected && props.isCompleted))\n className += ` text-info`;\n\n return (\n <li>\n {(props.isCompleted && props.appLink)\n ? (\n <AppLink appLink={props.appLink} className={className}>\n {content}\n </AppLink>\n ) : (\n <div className={className}>\n {content}\n </div>\n )\n }\n </li>\n );\n}\n\ninterface WizardStepListProps<StepId extends string> {\n currentStep: StepId;\n steps: WizardStep<StepId>[];\n disableAppLinks?: boolean;\n}\n\nexport function WizardStepList<StepId extends string>(props: WizardStepListProps<StepId>): JSX.Element {\n const currentStepNumber = props.steps.reduce((acc, step, i) => {\n if (step.id === props.currentStep)\n acc = i + 1;\n\n return acc;\n }, 1);\n\n return (\n <>\n <h2 className='h4'>\n {getPhrase('stepNumber', { currentStep: currentStepNumber, totalSteps: props.steps.length })}\n </h2>\n\n <ol className='list-unstyled'>\n {props.steps.map((step, i) => {\n const isSelected = step.id === props.currentStep;\n const isCompleted = currentStepNumber > i + 1;\n\n return (\n <WizardStepListItem\n index={i}\n key={step.id}\n text={step.text}\n subText={step.subText}\n isSelected={isSelected}\n isCompleted={isCompleted}\n appLink={!props.disableAppLinks && step.appLink}\n disabled={step.disabled}\n />\n );\n })}\n </ol>\n </>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","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';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { BULK_USER_ACTIONS_NAV_LOCK_ID } from 'libs/shared/apps/user-manager/components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { User } from 'libs/shared/interfaces';\n\ninterface Options {\n customerId: string;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n\n getUsersRequest: (\n userIds: string[],\n success?: (users: User[]) => void,\n error?: () => void\n ) => Flight.Request;\n}\n\nexport const useBulkActionsUsers = (options: Options) => {\n const { appLinks, getUsersRequest } = options;\n\n const [ viewModel, setViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const dispatch = useDispatch();\n const navLock = useNavLock();\n\n function getCursor(items: User[]): string {\n return items[items.length - 1]?.id;\n }\n\n /**\n * We can't rely on the non-existance of a next cursor to determine if we have more items to fetch\n * so instead we assume we have more, and then set it to false when we don't in getRequest\n * - Sha\n */\n const [ hasMore, setHasMore ] = React.useState(true);\n const pagination = React.useRef<{ pages: HashObject<string[]>, keys: IterableIterator<string>}>({\n keys: viewModel?.userIdMap?.keys(),\n pages: {}\n });\n\n function* nextIds(iterable: IterableIterator<string>, take: number): Generator<string> {\n while (take-- > 0) {\n const next = iterable.next().value;\n if (!next) return;\n yield next;\n }\n }\n\n function getRequest(lastId?: string): Flight.Request {\n if (!viewModel?.userIdMap?.size || !pagination.current.keys)\n return null;\n\n if (pagination.current.pages[lastId]) {\n const ids = pagination.current.pages[lastId];\n\n if (!ids.length) return null;\n return getUsersRequest(ids);\n }\n\n const ids = [...nextIds(pagination.current.keys, UserManagerConstants.USER_PAGE_LIMIT)];\n pagination.current.pages[lastId] = ids;\n\n if (!ids.length) {\n setHasMore(false);\n return null;\n }\n return getUsersRequest(ids);\n }\n\n function fetchNext(cursor?: string) {\n const request = getRequest(cursor);\n\n if (!request)\n return;\n\n return Flight.getFetch(dispatch)(request);\n }\n\n const {\n items,\n isFetching,\n nextCursor\n } = useInfiniteList<User, User[]>(getRequest, fetchNext, null, d => d, getCursor, viewModel?.scrollContainer);\n\n const forceUpdate = useForceUpdate();\n function removeUser(user: User): void {\n viewModel.userIdMap.delete(user.id.toString());\n setViewModel('allUsersSelected', false);\n forceUpdate();\n\n AnalyticsHelper.logUserAction({\n id: user.id.toString(),\n userCount: getCount()\n }, {\n location: LocationContext.BulkUserActionsWizard,\n entity: EntityType.User,\n actionType: UserAction.Remove\n });\n }\n\n function getCount(): number {\n return viewModel?.userIdMap?.size;\n }\n\n /**\n * Should only be used by the year group rollover details page\n */\n function setAllUserIds(userIds: string[]): void {\n const map = new Map<string, boolean>();\n userIds.forEach(id => {\n map.set(id, true);\n });\n setViewModel({\n userIdMap: map,\n allUsersSelected: true,\n allUsersCount: map.size\n });\n pagination.current.keys = map.keys();\n forceUpdate();\n }\n\n const users = items?.filter(u => viewModel.userIdMap.has(u.id.toString())) ?? [];\n\n // This hook detects if the user has removed all users\n React.useEffect(() => {\n if (!viewModel?.userIdMap || viewModel.userIdMap.size)\n return;\n\n // If this is reached, it means the admin has removed all users from the selected list.\n // The setTimeout here allows react to run it's final UI updates with the new state before we dispose of the view.\n setTimeout(() => {\n navLock.unlock(BULK_USER_ACTIONS_NAV_LOCK_ID);\n Core.AppLinkHelper.trigger(appLinks.userManager, { replace: true });\n }, 0);\n }, [ viewModel?.userIdMap?.size, isFetching ]);\n\n return {\n users,\n isFetching,\n removeUser,\n hasMore,\n fetchNext: () => fetchNext(nextCursor),\n count: getCount(),\n setAllUserIds\n };\n};","import { Flight } from 'libs/common/flight';\n\nimport { useBulkActionsUsers } from 'libs/shared/apps/user-manager/hooks/useBulkActionsUsers';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nexport const useBulkActionsUsersWrapper = (userType: UserGroup) => {\n const appLinks = getUserManagerAppLinks(userType);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return useBulkActionsUsers({\n customerId: currentUser.data?.customerId,\n userType,\n appLinks,\n getUsersRequest: UserRequests.usersById\n });\n};"],"names":["namespace","BulkUserActionsBackButton","props","viewModel","SharedViewModelKeys","currentStep","AppLink","className","appLink","appLinks","userManager","bulkActionsReviewAccounts","bulkActionsSelectAction","action","bulkActionsActionDetails","activation","yearGroupRollover","changeYearGroup","addToClassroom","resetPassword","removeFromSchool","getActionDetailsAppLink","getAppLink","Text","phrase","BulkUserActionsContinueButton","WizardLayoutContext","disableNext","onClickConfirm","showButtons","ContextService","bulkActionsStatus","complete","disabled","onClick","onFinish","Button","variant","BulkUserActionsAnalyticsHelper","bulkActionsConfirmation","resetEmail","activationEmail","DevError","getSelectActionAppLink","subAction","getContinueAppLink","BulkUserActionsWizardLayoutPartialLoading","style","height","width","BULK_USER_ACTIONS_NAV_LOCK_ID","BulkUserActionsWizardLayout","setViewModel","navLock","useNavLock","logWizardExitEvent","analyticsData","step","userCount","userIdMap","size","actionName","AnalyticsHelper","workflowPhase","actionType","location","entity","preventRedirect","preventNavLock","lock","id","title","LanguageService","text","appLinkWhitelist","BulkUserActionsHelper","onConfirmUnlock","unlock","replace","loaded","users","length","WizardHeader","hideHeader","continueButton","backButton","breadcrumbs","name","settings","userType","UserGroup","active","WizardStepList","steps","disableAppLinks","children","BaseBulkUserActionsViewModelKeys","getAnalyticsActionName","onClickNext","actionData","ObjectHelper","Object","keys","logYearGroupRolloverEntry","getJobStatus","status","BatchJobStatus","getPhrase","BreadcrumbItem","ref","breadcrumb","withBackIcon","svgName","S","Breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","secondLast","last","rest","slice","map","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","WizardStepListItem","content","hideStepNumber","index","subText","isSelected","isCompleted","currentStepNumber","acc","i","totalSteps","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","statusCode","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","opts","Array","Math","max","floor","random","useBulkActionsUsersWrapper","nextIds","getUsersRequest","dispatch","setHasMore","pagination","pages","iterable","take","value","lastId","ids","UserManagerConstants","d","forceUpdate","useForceUpdate","getCount","filter","u","has","setTimeout","removeUser","user","count","setAllUserIds","userIds","Map","forEach","set","allUsersSelected","allUsersCount","useBulkActionsUsers","customerId","UserRequests","data"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8709],{50690:(e,t,n)=>{n.d(t,{b:()=>a});var r=n(12788),a={renderInPortalIfExists:function(e,t){return t?(0,r.createPortal)(e,t):e}}},84963:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(32735),a=n(23481),o=n(83914),l=n(76177),i=n(35223);const c={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function u(e){return r.createElement(l.u,{title:a.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(c.tooltip),spanHack:!0},r.createElement("div",{className:"d-flex text-dark align-items-center ".concat(c.tag," ").concat(e.className)},r.createElement(o.x,{svgName:i.vn.Timer}),!e.onlyIcon&&a.T.getPhrase(s,"comingSoon")))}},73679:(e,t,n)=>{n.d(t,{s:()=>l});var r=n(32735),a=n(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function l(e){var t,n,l;return r.createElement(a.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(n=e.theme)||void 0===n?void 0:n.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},r.createElement("div",{className:"position-relative ".concat(o.dateItem)},r.createElement("div",{className:"".concat(null===(l=e.theme)||void 0===l?void 0:l.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:r.createElement(r.Fragment,null," ")),r.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),r.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},44522:(e,t,n)=>{n.d(t,{p:()=>k,v:()=>x});var r=n(32735),a=n(110),o=n(50690),l=n(84963),i=n(73679),c=n(83657),s=n(23481),u=n(36848),m=n(83914),d=n(35223),f="shared.backButton";function b(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,a=t.appLink,o=t.color,l=t.extraClasses,i=t.textShadow,c=n?s.T.getPhrase(f,"backTo",{backToName:n}):s.T.getPhrase(f,"back"),b="black"===o?"":"text-white",v=i?"text-shadow":"";return r.createElement(u.F,{appLink:a,className:"d-inline-flex align-items-center h5 mb-0 ".concat(l," ").concat(b," ").concat(v)},r.createElement(m.x,{svgName:d.vn.ChevronLeft,size:m.S.Medium}),r.createElement("span",{className:"ms-1"},c))}b.defaultProps={color:"black",extraClasses:""};var v=n(36518),p=n(83345),h=n(10587),g=n(94232),y=n(54610),E=n(79967),w=n(67453);const N={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var C="".concat(h.y[y.__.Banners].width,":").concat(h.y[y.__.Banners].height);function S(e){return e.length<160?"h1":N.headingLarge}var k=r.memo((function(e){var t,n,s,u,m=e.heading,d=e.banner,f=e.imageCdnUrl,h=e.actions,k=e.sortComponent,x=e.blockColourClass,A=e.specialEvent,O=r.useContext(g.n),j=(0,E.k)().xxl?1920:1200,I=r.useMemo((function(){if(!A||e.showComingSoon)return!1;var t=a.O.format(new Date,"YYYY-MM-DD");return A.endDate?A.startDate<=t&&A.endDate>=t:A.startDate===t}),[A]),D=e.imageOptions||{width:j,ratio:C,resizeType:y.Nq.Cover},T=!!d&&!!f&&w.j.createBannerUrl(d,{fallbackBaseUrl:f,fallbackCategoryName:m,type:y.__.Banners},D),L={className:"banner banner-header ".concat(e.bannerClassName),style:T?{backgroundImage:"url('".concat(T,"')")}:{}};!d&&x&&(delete L.style,L.className+=" ".concat(x));var M=e.detailsComponent;return o.b.renderInPortalIfExists(r.createElement("header",Object.assign({},L),r.createElement("div",{className:"container ".concat(N.container," position-relative inner-banner")},e.backButtonAppLink&&r.createElement("div",{className:"pt-3"},r.createElement(b,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),r.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(N.bannerContent," px-2 ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?N.bannerContentWithLogo:""))},!!A&&r.createElement("div",{className:"position-relative ".concat(N.specialEventContainer)},r.createElement(i.s,{body:{type:A.endDate?"range":"day",text:A.endDate?"".concat(a.O.format(A.startDate,"DD"),"-").concat(a.O.format(A.endDate,"DD")):a.O.format(A.startDate,"DD")},month:a.O.format(A.startDate,"MMMM"),theme:e.calendarTheme})),r.createElement("div",null,I&&r.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},r.createElement(p.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&r.createElement(l.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),r.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&r.createElement("div",{className:"".concat(N.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&r.createElement(v.w,{src:w.j.createUrl(null===(s=e.logo)||void 0===s?void 0:s.url,{size:y.h2.Medium})})),r.createElement("h1",{className:"text-white text-shadow pe-3 position-static ".concat(N.heading," ").concat(S(m)," ").concat(e.alignLogoLeft?"w-50":"")},m,M&&r.createElement(M,null)))),!!h&&r.createElement("div",{className:N.actionsContainer},r.createElement(c.e,{actions:h,sortComponent:k,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&r.createElement("div",{className:N.logoContainer},r.createElement("img",{src:w.j.createUrl(e.logo.url,{size:y.h2.Small}),className:"rounded-circle"})))),null==O?void 0:O.container)}),(function(e,t){var n,r;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(r=t.logo)||void 0===r?void 0:r.url)}));function x(){var e=r.useContext(g.n);return o.b.renderInPortalIfExists(r.createElement("div",{className:"partial-banner partial-loading-background ".concat(N.banner)}),null==e?void 0:e.container)}},49935:(e,t,n)=>{n.d(t,{Oo:()=>v,b2:()=>p});var r=n(32735),a=n(23481),o=n(36848),l=n(86764),i=n(3747),c=n(5859),s=n(35223),u=n(83914);function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,i=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(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 f=a.T.encloseNamespace("shared.breadcrumbComponent"),b=r.forwardRef((function(e,t){var n=e.breadcrumb,a=n.name,l=n.appLink,i=n.active,c=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?r.createElement("strong",null,a):r.createElement(o.F,{appLink:l,ref:t},c&&r.createElement(u.x,{svgName:s.vn.ChevronLeft,size:u.S.Small}),r.createElement("span",{className:c?"ms-2":""},a)))})),v=function(e){var t=e.breadcrumbs,n=(0,i.a)(l.r.XS),a=(null==t?void 0:t.length)||0,o=m(r.useState(!1),2),c=o[0],s=o[1],u=m(r.useState(!1),2),d=u[0],v=u[1],p=r.useRef();if(r.useEffect((function(){var e,n=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;a>3&&n>56&&s(!0)}),[null==t?void 0:t.length]),r.useLayoutEffect((function(){var e;d&&(null===(e=p.current)||void 0===e||e.focus())}),[p.current,d]),!a||n&&a<2)return r.createElement(r.Fragment,null);if(n)return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(b,{breadcrumb:t[a-2],withBackIcon:!0})));var h=r.createElement(b,{breadcrumb:t[0]}),g=a>2?r.createElement(b,{breadcrumb:t[a-2]}):r.createElement(r.Fragment,null),y=r.createElement(b,{breadcrumb:t[a-1]}),E=t.slice(1,a-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},h,c?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){s(!1),v(!0)},"aria-label":f("expand")},"...")):E.map((function(e,t){return r.createElement(b,{key:t,breadcrumb:e,ref:0===t?p:null})})),g,y))},p=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,i.a)(l.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"},c.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},71020:(e,t,n)=>{n.d(t,{_:()=>u});var r=n(32735),a=n(80247),o=n(34152),l=n(83914),i=n(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=(0,o.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,i=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=u[0],d=u[1];return r.useEffect((function(){var t;e.fetchOnScroll&&d&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[d,e.isFetching]),r.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:m},e.isFetching?r.createElement(a.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):r.createElement(l.x,{svgName:i.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}},74696:(e,t,n)=>{n.d(t,{S:()=>s});var r=n(32735),a=n(68050),o=n(69111),l=n(9977),i=n(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return r.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return r.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&r.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),r.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,i.k)(),n="sm"===l.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return r.createElement(a.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},r.createElement(o.Z,Object.assign({},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,!!s&&r.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},r.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),r.createElement(o.Z,{xs:l.O.getThumbnailColSize(s)},r.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),r.createElement(o.Z,Object.assign({},l.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),r.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),r.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},79718:(e,t,n)=>{n.d(t,{p:()=>d});var r=n(32735),a=n(23481),o=n(91967),l=n(36848),i=n(23788);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=c(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u="shared.videoSortSelect",m=o.q.memoize((function(){return s(s(s(s(s(s({},i.D.RecentlyAdded,{name:a.T.getPhrase(u,"recentlyAdded")}),i.D.AtoZ,{name:a.T.getPhrase(u,"atoz")}),i.D.ZtoA,{name:a.T.getPhrase(u,"ztoa")}),i.D.Newest,{name:a.T.getPhrase(u,"newest")}),i.D.Oldest,{name:a.T.getPhrase(u,"oldest")}),i.D.Series,{name:a.T.getPhrase(u,"series")})}));function d(e){var t=e.sortTypes||m();return r.createElement("div",{className:"dropdown"},r.createElement("button",{className:"btn btn-".concat(e.variant," ms-2 dropdown-toggle"),type:"button",id:"sort-select","data-bs-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},t[e.type].name),r.createElement("ul",{className:"dropdown-menu dropdown-menu-end","aria-labelledby":"sort-select"},Object.keys(t).map((function(n){var a="dropdown-item";return n===e.type&&(a+=" active"),r.createElement("li",{key:n},r.createElement(l.F,{className:a,appLink:e.getSortAppLink(n),analyticsData:{sort:t[n].name},analyticsOptions:e.analyticsOptions},t[n].name))}))))}d.defaultProps={variant:"light"}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),o=n(67058),l=n(14553),i=n(49267),c=n(49075),s={notFound:o.d,forbidden:{rating:l.q,yearLevel:l.q,region:i.a,privacy:l.q},badRequest:c._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var l=Object.assign(Object.assign({},s),t);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==r.o.NotFound?o!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new 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 o(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)}))}),[o(l),t,n])}},60115:(e,t,n)=>{n.d(t,{K:()=>s});var r=n(32735),a=n(50242),o=n(91967),l=400,i=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s(e,t,n,s,u,m){var d,f,b,v,p=(d=(0,r.useState)(0),f=2,function(e){if(Array.isArray(e))return e}(d)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,i=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(d,f)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(d,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=p[0],g=p[1],y=t,E=(0,i.P)((function(t){if(!e)return null;var n=e(t);return n?n.key:null}),s,u);return b={fetchNextPage:function(){if(t&&e&&E)return g((function(e){return e+1})),y(E.nextCursor)},hasMore:!!(null==E?void 0:E.nextCursor),isFetching:null==E?void 0:E.isFetching,scrollContainer:m},v=function(){if(!b.isFetching){if(b.scrollContainer){var e=b.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-l)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-l)return;b.fetchNextPage()}},(0,r.useEffect)((function(){var e=o.q.throttle(v,200),t=b.scrollContainer||window;return b.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}}),[b.hasMore,b.fetchNextPage,b.scrollContainer]),(0,r.useEffect)((function(){E&&E.shouldInitialFetch&&t&&(y(),g((function(e){return e+1})))}),[null==E?void 0:E.shouldInitialFetch,t]),(0,r.useEffect)((function(){var e,t;if((null==E?void 0:E.statusCode)&&o.q.isFunction(n)){var r=+(null===(t=null===(e=E.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(h,E.statusCode)}}),[null==E?void 0:E.statusCode]),{items:null==E?void 0:E.items,hasMore:!!(null==E?void 0:E.nextCursor),nextCursor:null==E?void 0:E.nextCursor,isFetching:null==E?void 0:E.isFetching,totalItems:null==E?void 0:E.totalItems,hasFirstPageCompleted:null==E?void 0:E.hasFirstPageCompleted}}},63719:(e,t,n)=>{n.d(t,{h:()=>i});var r=n(32735),a=n(77316);function o(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}function l(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 i(e){var t,n,i=(t=r.useMemo((function(){return a.p.getBuilder()}),[]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,i=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(t,n)||o(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=i[0],s=(0,i[1])(c);return s&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(s),[Object.assign(Object.assign({},e),{active:!0})]):s}},5859:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{u:()=>o});var a={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},44110:(e,t,n)=>{n.d(t,{i:()=>l});var r=n(20354),a=n(89454),o=n(86698),l=function(){var e=(0,o.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,l=t||n();return r.a.useBasicFetch(!!l&&a.O.presentationAudiences(l.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>m});var r=n(32735),a=n(20354),o=n(21750),l=n(31949),i=n(1575),c=n(31908);function s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function m(e){var t,n,m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=a.a.useBasicFetch(l.N.currentUser()),f=r.useRef(new Set),b=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):[]:[]}(e),v=b.map((function(e){return e.id})),p=(t=r.useState([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,i=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(t,n)||s(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=p[0],g=p[1];r.useEffect((function(){if((null==v?void 0:v.length)&&d.hasCompleted){var e=[];v.forEach((function(t){f.current.has(t)||(e.push(t),f.current.add(t))})),e.length&&g((function(t){var n,r=[].concat(function(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t),[i.R.videoMixinAssocs(e,m.flightNamespace)]);return(null===(n=d.data)||void 0===n?void 0:n.isAuthenticated)&&r.push(o.x.hasCurriculumLinks(e,null,m.flightNamespace)),r}))}}),[null==v?void 0:v.length,d.hasCompleted]),a.a.useBasicFetchAll(h)}},68050:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(95685),a=n.n(r),o=n(32735),l=n(46304),i=n(74512);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...r},o)=>{const c=(0,l.vE)(e,"row"),s=(0,l.pi)(),u=(0,l.zG)(),m=`${c}-cols`,d=[];return s.forEach((e=>{const t=r[e];let n;delete r[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const a=e!==u?`-${e}`:"";null!=n&&d.push(`${m}${a}-${n}`)})),(0,i.jsx)(n,{ref:o,...r,className:a()(t,c,...d)})}));c.displayName="Row";const s=c}}]);
2
+ //# sourceMappingURL=8709-c4f1068232-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8709-c4f1068232-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/infinite-scroll-footer.scss","file:///app/packages/libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","file:///app/packages/libs/shared/src/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-sort-select/VideoSortSelect.tsx","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/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <>&nbsp;</>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={DateHelper.format(specialEvent.startDate, 'MMMM')}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3`}>\n {props.logo?.url &&\n <LazyImage src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Medium })} />}\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Small })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\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\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\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 = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n return (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n );\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 || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\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 const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\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});","// 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}","// 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","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\n\nconst namespace = 'shared.videoSortSelect';\n\ntype SortTypes = {[sort: string]: { name: string }};\n\nconst getSortTypes: () => SortTypes = FunctionHelper.memoize(() => {\n return {\n [VideoSortType.RecentlyAdded]: {\n name: LanguageService.getPhrase(namespace, 'recentlyAdded')\n },\n [VideoSortType.AtoZ]: {\n name: LanguageService.getPhrase(namespace, 'atoz')\n },\n [VideoSortType.ZtoA]: {\n name: LanguageService.getPhrase(namespace, 'ztoa')\n },\n [VideoSortType.Newest]: {\n name: LanguageService.getPhrase(namespace, 'newest')\n },\n [VideoSortType.Oldest]: {\n name: LanguageService.getPhrase(namespace, 'oldest')\n },\n [VideoSortType.Series]: {\n name: LanguageService.getPhrase(namespace, 'series')\n }\n };\n});\n\ninterface VideoSortSelectProps {\n type: VideoSortType;\n getSortAppLink: (sort: string) => Core.AppLink;\n variant?: ButtonProps['variant'];\n sortTypes?: SortTypes;\n analyticsOptions: AnalyticsOptions;\n}\n\nVideoSortSelect.defaultProps = {\n variant: 'light'\n};\n\nexport function VideoSortSelect(props: VideoSortSelectProps): JSX.Element {\n const sortTypes = props.sortTypes || getSortTypes();\n\n return (\n <div className='dropdown'>\n <button className={`btn btn-${props.variant} ms-2 dropdown-toggle`} type='button' id='sort-select' data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>\n {sortTypes[props.type].name}\n </button>\n <ul className='dropdown-menu dropdown-menu-end' aria-labelledby='sort-select'>\n {Object.keys(sortTypes).map(k => {\n let className = 'dropdown-item';\n\n if (k === props.type)\n className += ' active';\n\n return (\n <li key={k}>\n <AppLink\n className={className}\n appLink={props.getSortAppLink(k)}\n analyticsData={{\n sort: sortTypes[k].name\n }}\n analyticsOptions={props.analyticsOptions}\n >\n {sortTypes[k].name}\n </AppLink>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { 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 { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","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 { 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 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":["PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","className","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","BackButton","textShadow","backToName","color","extraClasses","backPhrase","colorClass","textShadowClass","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","calendarTheme","Text","phrase","LazyImage","src","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","getPhrase","BreadcrumbItem","ref","breadcrumb","name","active","withBackIcon","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","secondLast","last","rest","slice","onClick","map","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","InfiniteScrollFooter","inView","fetchOnScroll","isFetching","fetchNext","nextCursor","Spinner","as","animation","role","PartialVideoList","Array","numVideos","fill","_","i","allowBulkActions","PartialVideoItem","breakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","getSortTypes","VideoSortSelect","sortTypes","variant","id","Object","keys","k","getSortAppLink","sort","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","SCROLL_TOLERANCE","useInfiniteList","getRequest","onError","getItems","getCursor","scrollContainer","options","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","request","fetchNextPage","currentVal","hasMore","getBoundingClientRect","scrollTop","scrollHeight","window","innerHeight","document","documentElement","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","useBreadcrumbs","match","useBuilder","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","opts","Math","max","floor","random","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","useVideoMixin","objects","currentUser","hydratedVideos","Set","videos","filter","o","data","getValidObjects","videoIds","v","setRequest","hasCompleted","unhydratedVideos","has","push","add","r","newRequests","flightNamespace","isAuthenticated","bsPrefix","Component","decoratedBsPrefix","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8982],{49935:(e,t,r)=>{r.d(t,{Oo:()=>p,b2:()=>h});var n=r(32735),a=r(23481),i=r(36848),c=r(86764),l=r(3747),o=r(5859),u=r(35223),m=r(83914);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,c,l=[],o=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(u)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var f=a.T.encloseNamespace("shared.breadcrumbComponent"),b=n.forwardRef((function(e,t){var r=e.breadcrumb,a=r.name,c=r.appLink,l=r.active,o=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?n.createElement("strong",null,a):n.createElement(i.F,{appLink:c,ref:t},o&&n.createElement(m.x,{svgName:u.vn.ChevronLeft,size:m.S.Small}),n.createElement("span",{className:o?"ms-2":""},a)))})),p=function(e){var t=e.breadcrumbs,r=(0,l.a)(c.r.XS),a=(null==t?void 0:t.length)||0,i=s(n.useState(!1),2),o=i[0],u=i[1],m=s(n.useState(!1),2),d=m[0],p=m[1],h=n.useRef();if(n.useEffect((function(){var e,r=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;a>3&&r>56&&u(!0)}),[null==t?void 0:t.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=h.current)||void 0===e||e.focus())}),[h.current,d]),!a||r&&a<2)return n.createElement(n.Fragment,null);if(r)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(b,{breadcrumb:t[a-2],withBackIcon:!0})));var g=n.createElement(b,{breadcrumb:t[0]}),v=a>2?n.createElement(b,{breadcrumb:t[a-2]}):n.createElement(n.Fragment,null),E=n.createElement(b,{breadcrumb:t[a-1]}),y=t.slice(1,a-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},g,o?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){u(!1),p(!0)},"aria-label":f("expand")},"...")):y.map((function(e,t){return n.createElement(b,{key:t,breadcrumb:e,ref:0===t?h:null})})),v,E))},h=n.memo((function(e){var t=e.numItems,r=void 0===t?3:t;return(0,l.a)(c.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},o.u.getPartialLoadingItems({numItems:r}).map((function(e,t){var r=e.width;return n.createElement("li",{key:t,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:r},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},5859:(e,t,r)=>{function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}r.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]:{},r=Object.assign(Object.assign({},a),t);return(e=Array(r.numItems),function(e){if(Array.isArray(e))return n(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 n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(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()*r.maxWidth),r.minWidth),"px")}}))}}},81803:(e,t,r)=>{r.d(t,{d:()=>b});var n=r(32735),a=r(81886),i=r(23481),c=r(49935),l=r(22902),o=r(14070),u=r(97291),m=r(96368);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var d="settings.settingsLayout",f=function(e){var t=(0,l.T)().hasPermissions,r=(0,m.e)();if(e)return t(e);var n=a.Q.C$.getCurrentAppLink();return n.application!==u.O.SETTINGS||r.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function b(e){var t,r=f(e.requiredPermissions);if(n.useEffect((function(){r||a.Q.C$.trigger({application:u.O.SETTINGS,action:o.e.Settings.HOME},{replace:!0})}),[r]),!r)return n.createElement(n.Fragment,null);var l,m=e.breadcrumbs.map((function(t,r){return{name:t,appLink:{application:u.O.SETTINGS,action:o.e.Settings.HOME},active:r===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(c.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:u.O.SETTINGS,action:o.e.Settings.HOME}}].concat((l=m,function(e){if(Array.isArray(e))return s(e)}(l)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(l)||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&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},58982:(e,t,r)=>{r.r(t),r.d(t,{SearchSettingsView:()=>v});var n=r(32735),a=r(23481),i=r(20354),c=r(65858),l=r(83345),o=r(83523),u=r(77963),m=r(65728),s=r(39151),d=r(31949),f=r(69883),b=r(37802),p=r(81803),h="settings.searchSettings",g=a.T.encloseNamespace(h);function v(){var e=i.a.useBasicFetch(s.L.config()),t=i.a.useBasicFetch(d.N.currentUser()),r=(0,b.r)(c.LZ.Settings),a=r.showExchangeSearchResults,v=r.isLoadingSettings,E=r.updateSetting,y=(0,f.Z)();return t.data&&e.data&&!v?n.createElement(p.d,{heading:g("heading"),breadcrumbs:[g("heading")]},n.createElement("div",{className:"w-50"},n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("p",{className:"fw-semibold mb-1"},n.createElement(l.x,{namespace:h,phrase:"label"})),n.createElement(o.Z,{onClick:function(){var e={name:m.E.ShowExchangeSearchResultsUser,value:!a,kind:u.g.Temporary};E(t.data.id,e,(function(){y.success(g("success"))}),(function(){y.error(g("error"))}))},on:a})),n.createElement("p",{className:"mb-2"},n.createElement(l.x,{namespace:h,phrase:"description"})))):n.createElement(n.Fragment,null)}}}]);
2
+ //# sourceMappingURL=8982-a3dc4a6b3c-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8982-a3dc4a6b3c-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/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/search-settings/SearchSettingsView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\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\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\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 = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n return (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n );\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 || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\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 const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\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});","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 React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nconst namespace = 'settings.searchSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SearchSettingsView(): React.ReactElement {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { showExchangeSearchResults, isLoadingSettings, updateSetting } = useSettings(LocationContext.Settings);\n\n const alerts = useAlerts();\n\n function onToggle() {\n const newSetting = {\n name: SettingName.ShowExchangeSearchResultsUser,\n value: !showExchangeSearchResults,\n kind: SettingKind.Temporary\n };\n\n updateSetting(\n currentUser.data.id,\n newSetting,\n () => {\n alerts.success(getPhrase('success'));\n },\n () => {\n alerts.error(getPhrase('error'));\n }\n );\n }\n\n if (\n !currentUser.data ||\n !config.data ||\n isLoadingSettings\n )\n return <></>;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n >\n <div className='w-50'>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold mb-1'><Text namespace={namespace} phrase='label' /></p>\n \n <ToggleSwitch\n onClick={onToggle}\n on={showExchangeSearchResults}\n />\n </div>\n\n <p className='mb-2'><Text namespace={namespace} phrase='description' /></p>\n </div>\n \n </SettingsLayout>\n );\n}"],"names":["getPhrase","BreadcrumbItem","props","ref","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","secondLast","last","rest","slice","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","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","children","SearchSettingsView","config","currentUser","showExchangeSearchResults","isLoadingSettings","updateSetting","alerts","data","phrase","newSetting","value","kind","id","success","error","on"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9010],{94644:(e,t,a)=>{a.d(t,{r:()=>l});var i=a(50242),n=a(81886),r=a(67058),o=a(14553),c=a(49267),s=a(49075),d={notFound:r.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var r;r="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},d),t);r&&n.Q.Ry.isStatusCodeError(r)&&(r!==i.o.NotFound?r!==i.o.Forbidden?a.badRequest||n.Q.Ry.throw(new o.badRequest):a.forbidden||n.Q.Ry.throw(new o.forbidden.privacy):a.notFound||n.Q.Ry.throw(new o.notFound))}}},91286:(e,t,a)=>{a.d(t,{v:()=>o});var i=a(32735),n=a(94644);function r(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,a){var o=Array.isArray(e)?e:[e];(0,i.useEffect)((function(){o.forEach((function(e){(0,n.r)(e.statusCode,t,a)}))}),[r(o),t,a])}},63719:(e,t,a)=>{a.d(t,{h:()=>c});var i=a(32735),n=a(77316);function r(e,t){if(e){if("string"==typeof e)return o(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,i=Array(t);a<t;a++)i[a]=e[a];return i}function c(e){var t,a,c=(t=i.useMemo((function(){return n.p.getBuilder()}),[]),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var i,n,r,o,c=[],s=!0,d=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(i=r.call(a)).done)&&(c.push(i.value),c.length!==t);s=!0);}catch(e){d=!0,n=e}finally{try{if(!s&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(d)throw n}}return c}}(t,a)||r(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=c[0],d=(0,c[1])(s);return d&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||r(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.")}()}(d),[Object.assign(Object.assign({},e),{active:!0})]):d}},5859:(e,t,a)=>{function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,i=Array(t);a<t;a++)i[a]=e[a];return i}a.d(t,{u:()=>r});var n={numItems:5,minWidth:50,maxWidth:100},r={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign(Object.assign({},n),t);return(e=Array(a.numItems),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.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*a.maxWidth),a.minWidth),"px")}}))}}},44110:(e,t,a)=>{a.d(t,{i:()=>o});var i=a(20354),n=a(89454),r=a(86698),o=function(){var e=(0,r.y)({redirectOnError:!0}),t=e.activePresentation,a=e.getFallbackPresentation,o=t||a();return i.a.useBasicFetch(!!o&&n.O.presentationAudiences(o.id))}},36073:(e,t,a)=>{a.r(t),a.d(t,{PlayClipViewV2:()=>j});var i=a(32735),n=a(50242),r=a(23481),o=a(20354),c=a(65858),s=a(78417),d=a(16714),l=a(67058),u=a(33803),p=a(43012),v=a(39151),m=a(1666),f=a(20768),y=a(31949),g=a(1575),h=a(63719),I=a(26304),b=a(91286),A=a(22902),P=a(15311),C=a(79612),E=a(76753),O=a(51855),V=a(7179),F=a(49948),S=a(36873),R=a(27638),x=a(44110),w=a(35014),L=a(97816),G=a(81812),T=a(14085),k=r.T.encloseNamespace("shared.playClipV2"),q={notFound:l.d,forbidden:{privacy:u.G}};function j(e){var t,a,r,l,u,j,N=e.queryParams,M=N.context,U=N.contextId,_=N.mtv,B=(0,P.r)().hasProduct,W=(0,R.u)(c.LZ.PlayClip),D=W.setFavourite,H=W.canFavourite,Q=(0,A.T)().hasPermissions,K=(0,O.G)().isPlugin,Y=o.a.useBasicFetch(y.N.currentUser()),Z=o.a.useBasicFetch(v.L.config()),$=o.a.useBasicFetch(p.e.clip(e.id)),J=o.a.useBasicFetch(f.b.videoInteractives(e.id)),z=o.a.useBasicFetch(!!(null===(t=$.data)||void 0===t?void 0:t._parentVideo)&&g.R.video($.data._parentVideo.id));(0,L.V)([z.data]);var X=o.a.useBasicFetch(!!(null===(a=$.data)||void 0===a?void 0:a._parentVideo)&&p.e.videoClips($.data._parentVideo.id)),ee=o.a.useBasicFetch($.statusCode===n.o.Forbidden&&p.e.clip(e.id,s.r.StripMetadata)),te=(0,S.k)({video:z.data,context:M,contextId:U,moviesAndTv:_,currentUser:Y.data}),ae=(0,x.i)(),ie=o.a.useBasicFetch((null===(r=Y.data)||void 0===r?void 0:r.isAuthenticated)&&m.h.yearGroups(Y.data.customerId)),ne=(0,G.a)(),re=(0,F.l)(e.id,!0),oe=(0,w.I)(),ce=(0,h.h)({name:null===(l=$.data)||void 0===l?void 0:l.name});return(0,C.M)(E.CG.getClipMetadata({content:$.data,phraseContext:{phraseHandler:k,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"}})),(0,b.v)($,q,{forbidden:!0}),(0,L.V)(null!==(u=te.videos)&&void 0!==u?u:[]),(0,I.b)(ee),(0,V.P)({id:e.id,app:"clips"}),$.data&&Y.hasCompleted&&Z.hasCompleted&&re.hasCompleted?i.createElement(T.S,{clip:$.data,clips:X.data,interactives:J.data,originalVideo:z.data,currentUser:Y.data,yearGroups:ie.data,relatedVideos:"playlist"===M?te:Object.assign(Object.assign({},te),{videos:[]}),canFavourite:H,setFavourite:D,hasProduct:B,queryParams:e.queryParams,audiences:ae.data,imageCdnUrl:Z.data.imageCdnUrl,canManageVideoAccess:Q(d.C.ManageVideoAccess),pointsOfInterest:re.items,featureAccess:oe,tableOfContentsId:null===(j=e.queryParams)||void 0===j?void 0:j.tocId,shouldShowSideTableOfContents:ne,isPlugin:K,breadcrumbs:ce}):i.createElement(i.Fragment,null)}j.defaultProps={queryParams:{}}},14085:(e,t,a)=>{a.d(t,{S:()=>H});var i=a(32735),n=a(28400),r=a(49935),o=a(5640),c=a(8887),s=a(51184),d=a(64921),l=a(95812),u=a(53709),p=a(71063),v=a(10439),m=a(35429),f=a(4594),y=a(16714),g=a(12754),h=a(22902),I=a(65332),b=a(76196),A=a(59598),P=a(31908),C=a(26492),E=a(9465),O=a(91479),V=a(47938),F=a(81024),S=a(78166),R=a(99742),x=a(14070),w=a(97291),L=a(22490),G=a(63010),T=a(14476),k=a(53256),q=a(83345),j=a(13231),N=a(51365),M=a(10671),U=a(10741),_="shared.playClipV2";function B(e){var t=(0,h.T)().hasPermissions,a=(0,M._)({location:M.i.VideoItem});return i.createElement("section",{className:"play-page-section",id:A.K.ClippedFrom,ref:function(t){var a;t&&(null===(a=e.headingRef)||void 0===a?void 0:a.current)&&e.headingRef.current.set(A.K.ClippedFrom,t)}},i.createElement("h2",{className:"h4 mb-0"},i.createElement(q.x,{namespace:_,phrase:"clippedFrom"})),i.createElement(N.M.Provider,{value:a},i.createElement(j.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,a){return L.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},hasPermissions:t,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return U.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:e.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:e.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:e.getResourceGuidanceAppLink})))}const W={main:"iQ0Ie",expandedToc:"sIoV8"};var D=function(e,t,a){return function(i){return a?{application:w.O.VIDEOS,action:x.e.Videos.PREVIEW_PDF,args:[i.id],params:{videoId:e,shareId:t}}:{application:w.O.SIGN_UP,action:x.e.SignUp.SIGN_UP}}};function H(e){var t,a,q,j,N,M,U,_,H,Q,K=(0,m.g)(),Y=(0,h.T)().hasPermissions,Z=P.M.getCanBeConsumed(e.clip).canConsume,$=(0,G.Q)(e.tableOfContentsId),J=$.tableOfContentsActiveId,z=$.setTableOfContentsActiveId,X=$.controlledId,ee=$.setControlledId,te=$.tableOfContentsExpanded,ae=$.onToggleTableOfContents,ie=(0,s.Wp)(e.clip)&&e.featureAccess.canViewGlance,ne=(0,T.i)(ie),re=ne.headingRef,oe=ne.headingElements,ce=oe.map((function(t){var a;return{id:t.id,name:k.d.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:null===(a=e.clip.resources)||void 0===a?void 0:a.data,isPlayClipPage:!0})}}));(0,I.D)({setActiveId:z,headingElements:oe,controlledId:X,setControlledId:ee}),(0,b.P)(oe,e.tableOfContentsId);var se=P.M.isVideoTypeArchived(e.clip),de=Y(y.C.StudentExperience),le=i.useRef(!1);function ue(){var e,t,a,i;le.current=!(null===(t=null===(e=null==K?void 0:K.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(i=null===(a=null==K?void 0:K.playerRef)||void 0===a?void 0:a.current)||void 0===i||i.pause()}function pe(){var e,t;le.current&&(null===(t=null===(e=null==K?void 0:K.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())}function ve(){var t,a;return!(!e.originalVideo||!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value)||!(null===(a=e.currentUser)||void 0===a?void 0:a.isAuthenticated)||!e.hasProduct(g.x.Primary)||de)}var me="picture-in-picture"===K.mode||e.featureAccess.canViewPublicLayout,fe=null!==(a=null===(t=e.clips)||void 0===t?void 0:t.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==a?a:[];return i.createElement("div",{className:"px-4 play-page-sections-container"},i.createElement("main",{className:"".concat(W.main," ").concat(e.shouldShowSideTableOfContents&&te?W.expandedToc:e.shouldShowSideTableOfContents&&!te?"pe-4":void 0)},!!(null===(q=e.breadcrumbs)||void 0===q?void 0:q.length)&&i.createElement("div",{className:"mb-2"},i.createElement(r.Oo,{breadcrumbs:e.breadcrumbs})),i.createElement(V.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:f.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),se&&i.createElement(C.T,{typeId:e.clip.typeId,hasStudentExperience:de}),i.createElement("section",{id:A.K.Video,className:"mb-2 ".concat(p.M.GLOBAL_PLAYER_SELECTOR),ref:function(e){e&&(null==re?void 0:re.current)&&re.current.set(A.K.Video,e)}},Z&&i.createElement(v.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(j=e.queryParams)||void 0===j?void 0:j.context,contextId:null===(N=e.queryParams)||void 0===N?void 0:N.contextId,moviesAndTv:null===(M=e.queryParams)||void 0===M?void 0:M.mtv,playNext:null===(U=e.queryParams)||void 0===U?void 0:U.playNext,startTime:null!==(H=null===(_=e.queryParams)||void 0===_?void 0:_.t)&&void 0!==H?H:null===(Q=e.queryParams)||void 0===Q?void 0:Q.startTime,mode:"default",location:"play-page"}),i.createElement("div",{className:me?"":"d-none"},i.createElement(F.S,{video:e.clip,type:"pip"}))),i.createElement(O.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:ve()?{application:w.O.VIDEOS,action:x.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,n.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),ie?i.createElement(d.j,{video:e.clip,pointsOfInterest:e.pointsOfInterest,setStartTime:function(e){var t;return null===(t=K.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:w.O.SEARCH,action:x.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:ie}):i.createElement(c.a,{video:e.clip,onLaunchImmersiveReader:ue,onExitImmersiveReader:pe,getTagAppLink:function(e){return{application:w.O.SEARCH,action:x.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:re,suppressInteractivity:e.featureAccess.canViewPublicLayout}),i.createElement(u.M,{video:e.clip,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.imageCdnUrl,getAppLink:D(e.clip.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsData:{clipId:e.clip.id,clipName:e.clip.name},resourceThumbnailFallbackUrl:R.W.Fallbacks.RESOURCE_THUMBNAIL,headingRef:re}),i.createElement(l.J,{video:e.clip,interactives:e.interactives,imageCdnUrl:e.imageCdnUrl,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},canViewInteractives:e.featureAccess.canViewInteractives,headingRef:re,yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}),i.createElement(o.O,{clips:fe||[],video:e.clip,canViewClips:e.featureAccess.canViewClips,yearGroups:e.yearGroups,audiences:e.audiences,imageCdnUrl:e.imageCdnUrl,setFavourite:e.setFavourite,canFavourite:e.canFavourite,headingRef:re,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},isPlugin:e.isPlugin}),ie&&i.createElement(c.a,{video:e.clip,onLaunchImmersiveReader:ue,onExitImmersiveReader:pe,getTagAppLink:function(e){return{application:w.O.SEARCH,action:x.e.Search.HOME,params:{tagOrClassification:e.name}}},headingRef:re,suppressInteractivity:e.featureAccess.canViewPublicLayout}),!!ve()&&i.createElement(B,{originalVideo:e.originalVideo,setFavourite:e.setFavourite,canFavourite:e.canFavourite,yearGroups:e.yearGroups,shareId:e.shareId,queryParams:e.queryParams,audiences:e.audiences,headingRef:re,isPlugin:e.isPlugin,getClassroomGuideAppLink:L.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:L.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:L.W.getResourceGuidanceAppLink}),i.createElement(S.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,a){return L.W.getAppLink(t,Object.assign(Object.assign({},a),{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})),i.createElement(E.h,{isExpanded:te,setIsExpanded:ae,items:ce,activeId:J,setControlledId:ee,analyticsData:{clipId:e.clip.id,clipName:e.clip.name},showInSide:e.shouldShowSideTableOfContents}))}}}]);
2
+ //# sourceMappingURL=9010-024dcc8f9a-lite.chunk.js.map