@clickview/lite 0.52.3-dev.1 → 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 (282) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/1063-5a732288dc-lite.chunk.js +2 -0
  4. package/dist/scripts/1063-5a732288dc-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{9173-2392d447a6-lite.chunk.js → 1104-f057c6dea1-lite.chunk.js} +3 -3
  6. package/dist/scripts/{9173-2392d447a6-lite.chunk.js.map → 1104-f057c6dea1-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{1125-aac132b88f-lite.chunk.js → 1125-c5138ef662-lite.chunk.js} +2 -2
  8. package/dist/scripts/1125-c5138ef662-lite.chunk.js.map +1 -0
  9. package/dist/scripts/1169-9b7d850bab-lite.chunk.js +2 -0
  10. package/dist/scripts/1169-9b7d850bab-lite.chunk.js.map +1 -0
  11. package/dist/scripts/{1379-6f35e2e9bb-lite.chunk.js → 1379-ca519ec56b-lite.chunk.js} +3 -3
  12. package/dist/scripts/{1379-6f35e2e9bb-lite.chunk.js.map → 1379-ca519ec56b-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/1672-0d1fc90529-lite.chunk.js +3 -0
  14. package/dist/scripts/1672-0d1fc90529-lite.chunk.js.map +1 -0
  15. package/dist/scripts/1725-99450ed637-lite.chunk.js +2 -0
  16. package/dist/scripts/1725-99450ed637-lite.chunk.js.map +1 -0
  17. package/dist/scripts/1891-5914c54eca-lite.chunk.js +2 -0
  18. package/dist/scripts/1891-5914c54eca-lite.chunk.js.map +1 -0
  19. package/dist/scripts/1896-399a91d18c-lite.chunk.js +2 -0
  20. package/dist/scripts/1896-399a91d18c-lite.chunk.js.map +1 -0
  21. package/dist/scripts/193-797b89797a-lite.chunk.js +2 -0
  22. package/dist/scripts/193-797b89797a-lite.chunk.js.map +1 -0
  23. package/dist/scripts/209-fe96739cb5-lite.chunk.js +2 -0
  24. package/dist/scripts/209-fe96739cb5-lite.chunk.js.map +1 -0
  25. package/dist/scripts/2134-b8d5c46887-lite.chunk.js +2 -0
  26. package/dist/scripts/2134-b8d5c46887-lite.chunk.js.map +1 -0
  27. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js +2 -0
  28. package/dist/scripts/2142-f71cf5c71f-lite.chunk.js.map +1 -0
  29. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js +2 -0
  30. package/dist/scripts/2402-ff1b4adf1a-lite.chunk.js.map +1 -0
  31. package/dist/scripts/2548-c5dd2899df-lite.chunk.js +2 -0
  32. package/dist/scripts/2548-c5dd2899df-lite.chunk.js.map +1 -0
  33. package/dist/scripts/2952-c3a826b714-lite.chunk.js +2 -0
  34. package/dist/scripts/2952-c3a826b714-lite.chunk.js.map +1 -0
  35. package/dist/scripts/3404-23125f10ea-lite.chunk.js +2 -0
  36. package/dist/scripts/3404-23125f10ea-lite.chunk.js.map +1 -0
  37. package/dist/scripts/3633-f3609526a5-lite.chunk.js +2 -0
  38. package/dist/scripts/3633-f3609526a5-lite.chunk.js.map +1 -0
  39. package/dist/scripts/3728-eed9e78985-lite.chunk.js +2 -0
  40. package/dist/scripts/3728-eed9e78985-lite.chunk.js.map +1 -0
  41. package/dist/scripts/4063-5fa157657f-lite.chunk.js +2 -0
  42. package/dist/scripts/4063-5fa157657f-lite.chunk.js.map +1 -0
  43. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js +2 -0
  44. package/dist/scripts/4182-ba03f3ce3c-lite.chunk.js.map +1 -0
  45. package/dist/scripts/4273-e42f763f00-lite.chunk.js +3 -0
  46. package/dist/scripts/4273-e42f763f00-lite.chunk.js.map +1 -0
  47. package/dist/scripts/4395-d0815835c8-lite.chunk.js +2 -0
  48. package/dist/scripts/4395-d0815835c8-lite.chunk.js.map +1 -0
  49. package/dist/scripts/4502-af4903784e-lite.chunk.js +2 -0
  50. package/dist/scripts/4502-af4903784e-lite.chunk.js.map +1 -0
  51. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js +2 -0
  52. package/dist/scripts/4850-bb9541d3ed-lite.chunk.js.map +1 -0
  53. package/dist/scripts/5573-4352a3537e-lite.chunk.js +2 -0
  54. package/dist/scripts/5573-4352a3537e-lite.chunk.js.map +1 -0
  55. package/dist/scripts/5595-3acc9593bf-lite.chunk.js +2 -0
  56. package/dist/scripts/5595-3acc9593bf-lite.chunk.js.map +1 -0
  57. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js +2 -0
  58. package/dist/scripts/5606-69c0ca2b97-lite.chunk.js.map +1 -0
  59. package/dist/scripts/5877-628732da21-lite.chunk.js +2 -0
  60. package/dist/scripts/5877-628732da21-lite.chunk.js.map +1 -0
  61. package/dist/scripts/5936-cd98109a7b-lite.chunk.js +2 -0
  62. package/dist/scripts/5936-cd98109a7b-lite.chunk.js.map +1 -0
  63. package/dist/scripts/{5940-f335f8c290-lite.chunk.js → 5940-2767b40c40-lite.chunk.js} +2 -2
  64. package/dist/scripts/5940-2767b40c40-lite.chunk.js.map +1 -0
  65. package/dist/scripts/6054-1e9b86d631-lite.chunk.js +2 -0
  66. package/dist/scripts/6054-1e9b86d631-lite.chunk.js.map +1 -0
  67. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js +2 -0
  68. package/dist/scripts/6138-2ef7ee071a-lite.chunk.js.map +1 -0
  69. package/dist/scripts/{624-575b07d922-lite.chunk.js → 624-09b51a9d32-lite.chunk.js} +3 -3
  70. package/dist/scripts/{624-575b07d922-lite.chunk.js.map → 624-09b51a9d32-lite.chunk.js.map} +1 -1
  71. package/dist/scripts/6263-8a7931bf51-lite.chunk.js +2 -0
  72. package/dist/scripts/6263-8a7931bf51-lite.chunk.js.map +1 -0
  73. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js +2 -0
  74. package/dist/scripts/6290-28ae0e8a60-lite.chunk.js.map +1 -0
  75. package/dist/scripts/6470-9a700cabce-lite.chunk.js +2 -0
  76. package/dist/scripts/6470-9a700cabce-lite.chunk.js.map +1 -0
  77. package/dist/scripts/6481-035d218a77-lite.chunk.js +2 -0
  78. package/dist/scripts/6481-035d218a77-lite.chunk.js.map +1 -0
  79. package/dist/scripts/6532-59e9abf69d-lite.chunk.js +2 -0
  80. package/dist/scripts/6532-59e9abf69d-lite.chunk.js.map +1 -0
  81. package/dist/scripts/6596-f75129c039-lite.chunk.js +2 -0
  82. package/dist/scripts/6596-f75129c039-lite.chunk.js.map +1 -0
  83. package/dist/scripts/6604-9adec889c7-lite.chunk.js +2 -0
  84. package/dist/scripts/6604-9adec889c7-lite.chunk.js.map +1 -0
  85. package/dist/scripts/6746-3f501b95cf-lite.chunk.js +2 -0
  86. package/dist/scripts/6746-3f501b95cf-lite.chunk.js.map +1 -0
  87. package/dist/scripts/714-c00ad56229-lite.chunk.js +2 -0
  88. package/dist/scripts/714-c00ad56229-lite.chunk.js.map +1 -0
  89. package/dist/scripts/7163-84c2b15394-lite.chunk.js +2 -0
  90. package/dist/scripts/7163-84c2b15394-lite.chunk.js.map +1 -0
  91. package/dist/scripts/7178-ed74c33056-lite.chunk.js +2 -0
  92. package/dist/scripts/7178-ed74c33056-lite.chunk.js.map +1 -0
  93. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js +2 -0
  94. package/dist/scripts/7223-0bfab7e57a-lite.chunk.js.map +1 -0
  95. package/dist/scripts/7234-84c087600e-lite.chunk.js +2 -0
  96. package/dist/scripts/7234-84c087600e-lite.chunk.js.map +1 -0
  97. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js +2 -0
  98. package/dist/scripts/7267-fd5085f5c9-lite.chunk.js.map +1 -0
  99. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js +2 -0
  100. package/dist/scripts/7633-6c1ffdd082-lite.chunk.js.map +1 -0
  101. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js +2 -0
  102. package/dist/scripts/7679-8f2d6a3487-lite.chunk.js.map +1 -0
  103. package/dist/scripts/7757-7e293be936-lite.chunk.js +2 -0
  104. package/dist/scripts/7757-7e293be936-lite.chunk.js.map +1 -0
  105. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js +2 -0
  106. package/dist/scripts/7795-c6d38bc3e5-lite.chunk.js.map +1 -0
  107. package/dist/scripts/7818-230982fc27-lite.chunk.js +2 -0
  108. package/dist/scripts/7818-230982fc27-lite.chunk.js.map +1 -0
  109. package/dist/scripts/8323-360541a2a8-lite.chunk.js +3 -0
  110. package/dist/scripts/8323-360541a2a8-lite.chunk.js.map +1 -0
  111. package/dist/scripts/8709-c4f1068232-lite.chunk.js +2 -0
  112. package/dist/scripts/8709-c4f1068232-lite.chunk.js.map +1 -0
  113. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js +2 -0
  114. package/dist/scripts/8982-a3dc4a6b3c-lite.chunk.js.map +1 -0
  115. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js +2 -0
  116. package/dist/scripts/9010-024dcc8f9a-lite.chunk.js.map +1 -0
  117. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js +3 -0
  118. package/dist/scripts/9016-82d7e0afb9-lite.chunk.js.map +1 -0
  119. package/dist/scripts/9173-f9708ec0de-lite.chunk.js +2 -0
  120. package/dist/scripts/9173-f9708ec0de-lite.chunk.js.map +1 -0
  121. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js +3 -0
  122. package/dist/scripts/9230-ae200d2bd3-lite.chunk.js.map +1 -0
  123. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js +2 -0
  124. package/dist/scripts/9359-1fb4413e0d-lite.chunk.js.map +1 -0
  125. package/dist/scripts/{9395-4cf6f3948e-lite.chunk.js → 9395-e1a02b01ce-lite.chunk.js} +3 -3
  126. package/dist/scripts/{9395-4cf6f3948e-lite.chunk.js.map → 9395-e1a02b01ce-lite.chunk.js.map} +1 -1
  127. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js +2 -0
  128. package/dist/scripts/9399-d7a92ce84a-lite.chunk.js.map +1 -0
  129. package/dist/scripts/{9478-99486906b9-lite.chunk.js → 9478-abfa7ed3cc-lite.chunk.js} +3 -3
  130. package/dist/scripts/{9478-99486906b9-lite.chunk.js.map → 9478-abfa7ed3cc-lite.chunk.js.map} +1 -1
  131. package/dist/scripts/{953-fd31f9f016-lite.chunk.js → 953-225db845ab-lite.chunk.js} +3 -3
  132. package/dist/scripts/{953-fd31f9f016-lite.chunk.js.map → 953-225db845ab-lite.chunk.js.map} +1 -1
  133. package/dist/scripts/9719-9736913451-lite.chunk.js +3 -0
  134. package/dist/scripts/9719-9736913451-lite.chunk.js.map +1 -0
  135. package/dist/scripts/999-bdc7956050-lite.chunk.js +2 -0
  136. package/dist/scripts/999-bdc7956050-lite.chunk.js.map +1 -0
  137. package/dist/scripts/bundle-9f8729bedb.min.js +3 -0
  138. package/dist/scripts/bundle-9f8729bedb.min.js.map +1 -0
  139. package/package.json +1 -1
  140. package/dist/scripts/1076-10e5ee6c22-lite.chunk.js +0 -2
  141. package/dist/scripts/1076-10e5ee6c22-lite.chunk.js.map +0 -1
  142. package/dist/scripts/1125-aac132b88f-lite.chunk.js.map +0 -1
  143. package/dist/scripts/1169-9b1c04fd85-lite.chunk.js +0 -2
  144. package/dist/scripts/1169-9b1c04fd85-lite.chunk.js.map +0 -1
  145. package/dist/scripts/1672-672f298d82-lite.chunk.js +0 -3
  146. package/dist/scripts/1672-672f298d82-lite.chunk.js.map +0 -1
  147. package/dist/scripts/1725-075015497e-lite.chunk.js +0 -2
  148. package/dist/scripts/1725-075015497e-lite.chunk.js.map +0 -1
  149. package/dist/scripts/1818-64a145c5fe-lite.chunk.js +0 -2
  150. package/dist/scripts/1818-64a145c5fe-lite.chunk.js.map +0 -1
  151. package/dist/scripts/1820-993521951d-lite.chunk.js +0 -2
  152. package/dist/scripts/1820-993521951d-lite.chunk.js.map +0 -1
  153. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js +0 -2
  154. package/dist/scripts/1891-e80f9f17ee-lite.chunk.js.map +0 -1
  155. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js +0 -2
  156. package/dist/scripts/1896-32a6eeda5c-lite.chunk.js.map +0 -1
  157. package/dist/scripts/193-f08b054631-lite.chunk.js +0 -2
  158. package/dist/scripts/193-f08b054631-lite.chunk.js.map +0 -1
  159. package/dist/scripts/209-de1729d1b1-lite.chunk.js +0 -2
  160. package/dist/scripts/209-de1729d1b1-lite.chunk.js.map +0 -1
  161. package/dist/scripts/2134-bca2f4697e-lite.chunk.js +0 -2
  162. package/dist/scripts/2134-bca2f4697e-lite.chunk.js.map +0 -1
  163. package/dist/scripts/2548-b81ae38f1f-lite.chunk.js +0 -2
  164. package/dist/scripts/2548-b81ae38f1f-lite.chunk.js.map +0 -1
  165. package/dist/scripts/2703-591ccf069c-lite.chunk.js +0 -2
  166. package/dist/scripts/2703-591ccf069c-lite.chunk.js.map +0 -1
  167. package/dist/scripts/3404-171fdee802-lite.chunk.js +0 -2
  168. package/dist/scripts/3404-171fdee802-lite.chunk.js.map +0 -1
  169. package/dist/scripts/3633-66d28be6f8-lite.chunk.js +0 -2
  170. package/dist/scripts/3633-66d28be6f8-lite.chunk.js.map +0 -1
  171. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js +0 -2
  172. package/dist/scripts/3728-d7ecfc6667-lite.chunk.js.map +0 -1
  173. package/dist/scripts/3922-d40b0ce5aa-lite.chunk.js +0 -2
  174. package/dist/scripts/3922-d40b0ce5aa-lite.chunk.js.map +0 -1
  175. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js +0 -2
  176. package/dist/scripts/4182-7aecc28a6f-lite.chunk.js.map +0 -1
  177. package/dist/scripts/4395-64da004753-lite.chunk.js +0 -2
  178. package/dist/scripts/4395-64da004753-lite.chunk.js.map +0 -1
  179. package/dist/scripts/4502-2e30d86385-lite.chunk.js +0 -2
  180. package/dist/scripts/4502-2e30d86385-lite.chunk.js.map +0 -1
  181. package/dist/scripts/5143-b6896dad98-lite.chunk.js +0 -2
  182. package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +0 -1
  183. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js +0 -2
  184. package/dist/scripts/5573-6cd98b69f2-lite.chunk.js.map +0 -1
  185. package/dist/scripts/5595-c4397e12a8-lite.chunk.js +0 -2
  186. package/dist/scripts/5595-c4397e12a8-lite.chunk.js.map +0 -1
  187. package/dist/scripts/5606-6c25caedc4-lite.chunk.js +0 -2
  188. package/dist/scripts/5606-6c25caedc4-lite.chunk.js.map +0 -1
  189. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js +0 -2
  190. package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js.map +0 -1
  191. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js +0 -2
  192. package/dist/scripts/5936-6fe810d3cb-lite.chunk.js.map +0 -1
  193. package/dist/scripts/5940-f335f8c290-lite.chunk.js.map +0 -1
  194. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js +0 -2
  195. package/dist/scripts/6054-14d4ceeae3-lite.chunk.js.map +0 -1
  196. package/dist/scripts/6138-21ae042a7b-lite.chunk.js +0 -2
  197. package/dist/scripts/6138-21ae042a7b-lite.chunk.js.map +0 -1
  198. package/dist/scripts/6263-3455286798-lite.chunk.js +0 -2
  199. package/dist/scripts/6263-3455286798-lite.chunk.js.map +0 -1
  200. package/dist/scripts/6290-56412c6663-lite.chunk.js +0 -2
  201. package/dist/scripts/6290-56412c6663-lite.chunk.js.map +0 -1
  202. package/dist/scripts/6415-b29029aa1b-lite.chunk.js +0 -2
  203. package/dist/scripts/6415-b29029aa1b-lite.chunk.js.map +0 -1
  204. package/dist/scripts/6470-6216086d63-lite.chunk.js +0 -2
  205. package/dist/scripts/6470-6216086d63-lite.chunk.js.map +0 -1
  206. package/dist/scripts/6481-899eba8b3d-lite.chunk.js +0 -2
  207. package/dist/scripts/6481-899eba8b3d-lite.chunk.js.map +0 -1
  208. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js +0 -2
  209. package/dist/scripts/6532-a6b65c91a7-lite.chunk.js.map +0 -1
  210. package/dist/scripts/6604-92193d6d68-lite.chunk.js +0 -2
  211. package/dist/scripts/6604-92193d6d68-lite.chunk.js.map +0 -1
  212. package/dist/scripts/6746-b5b2739944-lite.chunk.js +0 -2
  213. package/dist/scripts/6746-b5b2739944-lite.chunk.js.map +0 -1
  214. package/dist/scripts/679-e18e7956d0-lite.chunk.js +0 -2
  215. package/dist/scripts/679-e18e7956d0-lite.chunk.js.map +0 -1
  216. package/dist/scripts/714-432082f4fa-lite.chunk.js +0 -2
  217. package/dist/scripts/714-432082f4fa-lite.chunk.js.map +0 -1
  218. package/dist/scripts/7178-e603ea6b58-lite.chunk.js +0 -2
  219. package/dist/scripts/7178-e603ea6b58-lite.chunk.js.map +0 -1
  220. package/dist/scripts/7223-135cc7d675-lite.chunk.js +0 -2
  221. package/dist/scripts/7223-135cc7d675-lite.chunk.js.map +0 -1
  222. package/dist/scripts/729-c704d587d3-lite.chunk.js +0 -2
  223. package/dist/scripts/729-c704d587d3-lite.chunk.js.map +0 -1
  224. package/dist/scripts/7679-b01da2c09d-lite.chunk.js +0 -2
  225. package/dist/scripts/7679-b01da2c09d-lite.chunk.js.map +0 -1
  226. package/dist/scripts/7757-320e868e90-lite.chunk.js +0 -2
  227. package/dist/scripts/7757-320e868e90-lite.chunk.js.map +0 -1
  228. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js +0 -2
  229. package/dist/scripts/7795-3ca0855d3a-lite.chunk.js.map +0 -1
  230. package/dist/scripts/7818-2eafc5f812-lite.chunk.js +0 -2
  231. package/dist/scripts/7818-2eafc5f812-lite.chunk.js.map +0 -1
  232. package/dist/scripts/8323-99cb03891e-lite.chunk.js +0 -3
  233. package/dist/scripts/8323-99cb03891e-lite.chunk.js.map +0 -1
  234. package/dist/scripts/8478-0292f02489-lite.chunk.js +0 -2
  235. package/dist/scripts/8478-0292f02489-lite.chunk.js.map +0 -1
  236. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js +0 -2
  237. package/dist/scripts/8766-bcc7f11eac-lite.chunk.js.map +0 -1
  238. package/dist/scripts/8800-335154fe11-lite.chunk.js +0 -2
  239. package/dist/scripts/8800-335154fe11-lite.chunk.js.map +0 -1
  240. package/dist/scripts/8982-63c31685bf-lite.chunk.js +0 -2
  241. package/dist/scripts/8982-63c31685bf-lite.chunk.js.map +0 -1
  242. package/dist/scripts/9016-0c078a39cb-lite.chunk.js +0 -3
  243. package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +0 -1
  244. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js +0 -2
  245. package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +0 -1
  246. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +0 -3
  247. package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +0 -1
  248. package/dist/scripts/9308-362f86711f-lite.chunk.js +0 -3
  249. package/dist/scripts/9308-362f86711f-lite.chunk.js.map +0 -1
  250. package/dist/scripts/9359-cc085d48a4-lite.chunk.js +0 -2
  251. package/dist/scripts/9359-cc085d48a4-lite.chunk.js.map +0 -1
  252. package/dist/scripts/9399-2a314327ac-lite.chunk.js +0 -2
  253. package/dist/scripts/9399-2a314327ac-lite.chunk.js.map +0 -1
  254. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js +0 -3
  255. package/dist/scripts/9719-cf7d4172b6-lite.chunk.js.map +0 -1
  256. package/dist/scripts/bundle-fcc536bb54.min.js +0 -3
  257. package/dist/scripts/bundle-fcc536bb54.min.js.map +0 -1
  258. /package/dist/css/{5143-lite-676baa8218.chunk.css → 1063-lite-676baa8218.chunk.css} +0 -0
  259. /package/dist/css/{9173-lite-b361d438f6.chunk.css → 1104-lite-b361d438f6.chunk.css} +0 -0
  260. /package/dist/css/{679-lite-00eb7dadb2.chunk.css → 2952-lite-00eb7dadb2.chunk.css} +0 -0
  261. /package/dist/css/{4860-lite-93d7fad455.chunk.css → 4063-lite-93d7fad455.chunk.css} +0 -0
  262. /package/dist/css/{9308-lite-a3c7435ba4.chunk.css → 4273-lite-a3c7435ba4.chunk.css} +0 -0
  263. /package/dist/css/{729-lite-93d7fad455.chunk.css → 4850-lite-93d7fad455.chunk.css} +0 -0
  264. /package/dist/css/{3922-lite-e22262b911.chunk.css → 6596-lite-e22262b911.chunk.css} +0 -0
  265. /package/dist/css/{8766-lite-8c5d7658ec.chunk.css → 7163-lite-8c5d7658ec.chunk.css} +0 -0
  266. /package/dist/css/{1818-lite-5ef1706d69.chunk.css → 7234-lite-5ef1706d69.chunk.css} +0 -0
  267. /package/dist/css/{8478-lite-e22262b911.chunk.css → 9010-lite-e22262b911.chunk.css} +0 -0
  268. /package/dist/css/{6415-lite-707657102b.chunk.css → 9173-lite-707657102b.chunk.css} +0 -0
  269. /package/dist/css/{1820-lite-c88eb54bee.chunk.css → 999-lite-c88eb54bee.chunk.css} +0 -0
  270. /package/dist/scripts/{1379-6f35e2e9bb-lite.chunk.js.LICENSE.txt → 1104-f057c6dea1-lite.chunk.js.LICENSE.txt} +0 -0
  271. /package/dist/scripts/{1672-672f298d82-lite.chunk.js.LICENSE.txt → 1379-ca519ec56b-lite.chunk.js.LICENSE.txt} +0 -0
  272. /package/dist/scripts/{624-575b07d922-lite.chunk.js.LICENSE.txt → 1672-0d1fc90529-lite.chunk.js.LICENSE.txt} +0 -0
  273. /package/dist/scripts/{8323-99cb03891e-lite.chunk.js.LICENSE.txt → 4273-e42f763f00-lite.chunk.js.LICENSE.txt} +0 -0
  274. /package/dist/scripts/{9173-2392d447a6-lite.chunk.js.LICENSE.txt → 624-09b51a9d32-lite.chunk.js.LICENSE.txt} +0 -0
  275. /package/dist/scripts/{9230-6dee40b1fb-lite.chunk.js.LICENSE.txt → 8323-360541a2a8-lite.chunk.js.LICENSE.txt} +0 -0
  276. /package/dist/scripts/{9016-0c078a39cb-lite.chunk.js.LICENSE.txt → 9016-82d7e0afb9-lite.chunk.js.LICENSE.txt} +0 -0
  277. /package/dist/scripts/{9308-362f86711f-lite.chunk.js.LICENSE.txt → 9230-ae200d2bd3-lite.chunk.js.LICENSE.txt} +0 -0
  278. /package/dist/scripts/{9395-4cf6f3948e-lite.chunk.js.LICENSE.txt → 9395-e1a02b01ce-lite.chunk.js.LICENSE.txt} +0 -0
  279. /package/dist/scripts/{9478-99486906b9-lite.chunk.js.LICENSE.txt → 9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt} +0 -0
  280. /package/dist/scripts/{953-fd31f9f016-lite.chunk.js.LICENSE.txt → 953-225db845ab-lite.chunk.js.LICENSE.txt} +0 -0
  281. /package/dist/scripts/{9719-cf7d4172b6-lite.chunk.js.LICENSE.txt → 9719-9736913451-lite.chunk.js.LICENSE.txt} +0 -0
  282. /package/dist/scripts/{bundle-fcc536bb54.min.js.LICENSE.txt → bundle-9f8729bedb.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6604-9adec889c7-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/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/flight-requests/LtiRequests.ts","file:///app/packages/projects/lite/src/apps/settings/hooks/useCanManageLti.ts","file:///app/packages/projects/lite/src/apps/settings/enums/LtiPlatformStatus.ts","file:///app/packages/projects/lite/src/apps/settings/components/lti/lti-platform-list-item/LtiPlatformListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/components/lti/lti-platform-list/lti-platform-list.scss","file:///app/packages/projects/lite/src/apps/settings/components/lti/lti-platform-list/LtiPlatformList.tsx","file:///app/packages/projects/lite/src/apps/settings/views/lti/lti-platforms/empty-state/LtiPlatformsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/lti/lti-platforms/partial-loading/partial-lti-platforms.scss","file:///app/packages/projects/lite/src/apps/settings/views/lti/lti-platforms/partial-loading/PartialLtiPlatforms.tsx","file:///app/packages/projects/lite/src/apps/settings/views/lti/lti-platforms/LtiPlatformsView.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});","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}","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 { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { LtiConsumer } from 'apps/settings/interfaces/lti/LtiConsumer';\nimport { LtiPlatform } from 'apps/settings/interfaces/lti/LtiPlatform';\nimport { CreateLtiConsumerRequest } from 'apps/settings/interfaces/lti/requests/CreateLtiConsumerRequest';\nimport { CreateLtiPlatformRequest } from 'apps/settings/interfaces/lti/requests/CreateLtiPlatformRequest';\nimport { UpdateLtiConsumerRequest } from 'apps/settings/interfaces/lti/requests/UpdateLtiConsumerRequest';\n\nexport const LtiRequests = {\n getConsumers(): Flight.Request {\n return {\n url: `/api/lti/consumers`,\n key: 'lti:consumers',\n normalize: false\n };\n },\n\n getPlatforms(): Flight.Request {\n return {\n url: `/api/lti/platforms`,\n key: 'lti:platforms',\n formatData: (data: LtiPlatform[]) => {\n return data.map(platform => {\n platform.publicJwk = JSON.stringify(platform.publicJwk);\n return platform;\n });\n },\n normalize: false\n };\n },\n\n getConsumer(consumerKey: string): Flight.Request {\n return {\n url: `/api/lti/consumers/${consumerKey}`,\n key: `lti:consumer:${consumerKey}`,\n normalize: false\n };\n },\n\n getPlatform(platformId: string): Flight.Request {\n return {\n url: `/api/lti/platforms/${platformId}`,\n key: `lti:platform:${platformId}`,\n formatData: (platform: LtiPlatform) => {\n platform.publicJwk = JSON.stringify(platform.publicJwk);\n return platform;\n },\n normalize: false\n };\n },\n\n createConsumer(\n data: CreateLtiConsumerRequest,\n success?: (consumer: LtiConsumer) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/consumers`,\n key: 'create:consumer',\n type: HttpVerbs.POST,\n invalidationKeys: ['lti:consumers'],\n data,\n success,\n error\n };\n },\n\n createPlatform(\n data: CreateLtiPlatformRequest,\n success?: (platform: LtiPlatform) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/platforms`,\n key: 'create:platform',\n type: HttpVerbs.POST,\n invalidationKeys: ['lti:platforms'],\n data,\n success,\n error\n };\n },\n\n updateConsumer(\n data: UpdateLtiConsumerRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/consumers/${data.key}`,\n key: 'update:consumer',\n type: HttpVerbs.PUT,\n invalidationKeys: [ `lti:consumers`, `lti:consumer:${data.key}` ],\n data,\n success,\n error\n };\n },\n\n updatePlatform(\n data: LtiPlatform,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/platforms/${data.id}`,\n key: 'update:platform',\n type: HttpVerbs.PUT,\n invalidationKeys: [ `lti:platforms`, `lti:platform:${data.id}` ],\n data,\n success,\n error\n };\n },\n\n deleteConsumer(\n consumerKey: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/consumers/${consumerKey}`,\n key: 'delete:consumer',\n type: HttpVerbs.DELETE,\n invalidationKeys: 'lti:consumers',\n success,\n error\n };\n },\n\n deletePlatform(\n platformId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `/api/lti/platforms/${platformId}`,\n key: 'delete:platform',\n type: HttpVerbs.DELETE,\n invalidationKeys: 'lti:platforms',\n success,\n error\n };\n }\n};","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\n/**\n * Checks if the user can access LTI based on if they have the LTI domain option enabled\n * on their customer.\n */\nexport const useCanManageLti = () => {\n const [ canAccess, setCanAccess ] = React.useState<boolean>(undefined);\n\n const { hasLti } = useSettings(LocationContext.Settings);\n\n React.useEffect(() => {\n if (hasLti && canAccess !== true) {\n setCanAccess(true);\n return;\n }\n\n if (!hasLti && canAccess !== false)\n setCanAccess(false);\n }, [hasLti]);\n\n return { canAccess };\n};","export enum LtiPlatformStatus {\n Incomplete = 0,\n Complete = 1\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';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'settings.ltiPlatformListItem';\n\ninterface LtiPlatformListItemProps {\n name: string;\n version: number;\n deleteAppLink: Core.AppLink;\n editAppLink: Core.AppLink;\n incomplete?: boolean;\n}\n\nexport function LtiPlatformListItem(props: LtiPlatformListItemProps): JSX.Element {\n function onClickEdit(e: React.MouseEvent): void {\n e.preventDefault();\n\n Core.AppLinkHelper.trigger(props.editAppLink);\n }\n\n function onClickDelete(e: React.MouseEvent): void {\n e.stopPropagation();\n e.preventDefault();\n\n Core.AppLinkHelper.trigger(props.deleteAppLink);\n }\n\n return (\n <AppLink\n appLink={props.editAppLink}\n onClick={onClickEdit}\n className='border border-secondary rounded px-3 py-2 d-flex justify-content-between align-items-center mb-2'\n >\n <span className='fw-semibold'>\n {props.name} ({props.version})\n {props.incomplete && (\n <span className='text-danger'> <Text namespace={namespace} phrase='incomplete' /></span>\n )}\n </span>\n\n <DivButton onClick={onClickDelete}>\n <SvgContainer svgName={cvSvgLibrary.Delete} title={LanguageService.getPhrase(namespace, 'deleteTooltip')} />\n </DivButton>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"W7bNX\"};","import React from 'react';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { LtiPlatformListItem } from 'apps/settings/components/lti/lti-platform-list-item/LtiPlatformListItem';\nimport { LtiPlatformStatus } from 'apps/settings/enums/LtiPlatformStatus';\nimport { LtiConsumer } from 'apps/settings/interfaces/lti/LtiConsumer';\nimport { LtiPlatform } from 'apps/settings/interfaces/lti/LtiPlatform';\n\nimport styles from './lti-platform-list.scss';\n\ninterface LtiPlatformListProps {\n platforms: LtiPlatform[];\n consumers: LtiConsumer[];\n}\n\nexport function LtiPlatformList(props: LtiPlatformListProps): JSX.Element {\n return (\n <ul className={`list-unstyled ${styles.list}`}>\n {props.platforms.map(platform => (\n <li key={platform.id}>\n <LtiPlatformListItem\n name={platform.name}\n version={1.3}\n editAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.EDIT_LTI_PLATFORM,\n args: [platform.id]\n }}\n deleteAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.DELETE_LTI_PLATFORM,\n params: { platformId: platform.id }\n }}\n incomplete={platform.status === LtiPlatformStatus.Incomplete}\n />\n </li>\n ))}\n\n {props.consumers.map(consumer => (\n <li key={consumer.key}>\n <LtiPlatformListItem\n name={consumer.name}\n version={1.1}\n editAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.EDIT_LTI_CONSUMER,\n args: [consumer.key]\n }}\n deleteAppLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.DELETE_LTI_PLATFORM,\n params: { consumerKey: consumer.key }\n }}\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\ninterface LtiPlatformsEmptyStateProps {\n createAppLink: Core.AppLink;\n}\n\nexport function LtiPlatformsEmptyState({ createAppLink }: LtiPlatformsEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.LTI} size='small'/>\n\n <EmptyState.Heading>\n You have not configured any platforms yet\n </EmptyState.Heading>\n\n <EmptyState.Info>\n Embed videos directly into your learning tools and see interactive results in your gradebook.\n </EmptyState.Info>\n\n <EmptyState.Cta\n text='Add platform'\n appLink={createAppLink}\n icon={cvSvgLibrary.Plus}\n className='btn btn-outline-dark'\n />\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"platformList\":\"wyIYe\",\"platformItem\":\"lRt_C\"};","import React from 'react';\n\nimport styles from './partial-lti-platforms.scss';\n\nexport function PartialLtiPlatforms(): JSX.Element {\n return (\n <div className={styles.platformList}>\n <div className={`${styles.platformItem} partial-loading-background mb-2 rounded`} />\n <div className={`${styles.platformItem} partial-loading-background mb-2 rounded`} />\n <div className={`${styles.platformItem} partial-loading-background mb-2 rounded`} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { LtiPlatformList } from 'apps/settings/components/lti/lti-platform-list/LtiPlatformList';\nimport { LtiRequests } from 'apps/settings/flight-requests/LtiRequests';\nimport { useCanManageLti } from 'apps/settings/hooks/useCanManageLti';\nimport { LtiConsumer } from 'apps/settings/interfaces/lti/LtiConsumer';\nimport { LtiPlatform } from 'apps/settings/interfaces/lti/LtiPlatform';\n\nimport { LtiPlatformsEmptyState } from './empty-state/LtiPlatformsEmptyState';\nimport { PartialLtiPlatforms } from './partial-loading/PartialLtiPlatforms';\n\nconst namespace = 'settings.ltiPlatforms';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst createAppLink: Core.AppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CREATE_LTI_PLATFORM\n};\n\nexport function LtiPlatformsView(): JSX.Element {\n const consumers = Flight.useBasicFetch<LtiConsumer[]>(LtiRequests.getConsumers());\n\n const platforms = Flight.useBasicFetch<LtiPlatform[]>(LtiRequests.getPlatforms());\n\n useHandleObjectError(consumers);\n useHandleObjectError(platforms);\n\n const { canAccess } = useCanManageLti();\n\n React.useEffect(() => {\n if (canAccess === false) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n });\n }\n }, [canAccess]);\n\n if (canAccess !== true)\n return <></>;\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n \n <IconButton svgName={cvSvgLibrary.Plus} appLink={createAppLink} className='btn btn-outline-dark'>\n <Text namespace={namespace} phrase='addPlatform' />\n </IconButton>\n </div>\n\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settings'), appLink: { application: AppChannels.SETTINGS, action: Actions.Settings.HOME } },\n { name: getPhrase('ltiPlatforms'), active: true }\n ]}\n />\n </div>\n\n {(() => {\n if (!platforms.data || !consumers.data)\n return <PartialLtiPlatforms />;\n\n if (!platforms.data?.length && !consumers.data?.length)\n return <LtiPlatformsEmptyState createAppLink={createAppLink} />;\n\n return (\n <LtiPlatformList\n platforms={platforms.data}\n consumers={consumers.data}\n />\n );\n })()}\n </div>\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","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","LtiRequests","getConsumers","url","normalize","getPlatforms","formatData","data","platform","publicJwk","JSON","stringify","getConsumer","consumerKey","getPlatform","platformId","createConsumer","success","error","type","invalidationKeys","createPlatform","updateConsumer","updatePlatform","id","deleteConsumer","deletePlatform","useCanManageLti","undefined","canAccess","setCanAccess","hasLti","LtiPlatformStatus","namespace","LtiPlatformListItem","AppLink","editAppLink","e","preventDefault","version","incomplete","Text","phrase","DivButton","stopPropagation","deleteAppLink","SvgContainer","title","LanguageService","LtiPlatformList","platforms","application","action","args","params","Incomplete","consumers","consumer","LtiPlatformsEmptyState","createAppLink","EmptyState","src","ImageUrls","text","icon","PartialLtiPlatforms","LtiPlatformsView","IconButton"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6746],{49935:(e,r,t)=>{t.d(r,{Oo:()=>p,b2:()=>v});var n=t(32735),a=t(23481),i=t(36848),l=t(86764),c=t(3747),o=t(5859),u=t(35223),m=t(83914);function s(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,a,i,l,c=[],o=!0,u=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(c.push(n.value),c.length!==r);o=!0);}catch(e){u=!0,a=e}finally{try{if(!o&&null!=t.return&&(l=t.return(),Object(l)!==l))return}finally{if(u)throw a}}return c}}(e,r)||function(e,r){if(e){if("string"==typeof e)return d(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var b=a.T.encloseNamespace("shared.breadcrumbComponent"),f=n.forwardRef((function(e,r){var t=e.breadcrumb,a=t.name,l=t.appLink,c=t.active,o=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(c?" active":"")},c?n.createElement("strong",null,a):n.createElement(i.F,{appLink:l,ref:r},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 r=e.breadcrumbs,t=(0,c.a)(l.r.XS),a=(null==r?void 0:r.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],v=n.useRef();if(n.useEffect((function(){var e,t=null!==(e=null==r?void 0:r.reduce((function(e,r){return e+r.name.length}),0))&&void 0!==e?e:0;a>3&&t>56&&u(!0)}),[null==r?void 0:r.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=v.current)||void 0===e||e.focus())}),[v.current,d]),!a||t&&a<2)return n.createElement(n.Fragment,null);if(t)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(f,{breadcrumb:r[a-2],withBackIcon:!0})));var g=n.createElement(f,{breadcrumb:r[0]}),h=a>2?n.createElement(f,{breadcrumb:r[a-2]}):n.createElement(n.Fragment,null),E=n.createElement(f,{breadcrumb:r[a-1]}),y=r.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":b("expand")},"...")):y.map((function(e,r){return n.createElement(f,{key:r,breadcrumb:e,ref:0===r?v:null})})),h,E))},v=n.memo((function(e){var r=e.numItems,t=void 0===r?3:r;return(0,c.a)(l.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:t}).map((function(e,r){var t=e.width;return n.createElement("li",{key:r,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:t},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},5859:(e,r,t)=>{function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}t.d(r,{u:()=>i});var a={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign(Object.assign({},a),r);return(e=Array(t.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,r){if(e){if("string"==typeof e)return n(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):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()*t.maxWidth),t.minWidth),"px")}}))}}},81803:(e,r,t)=>{t.d(r,{d:()=>f});var n=t(32735),a=t(81886),i=t(23481),l=t(49935),c=t(22902),o=t(14070),u=t(97291),m=t(96368);function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var d="settings.settingsLayout",b=function(e){var r=(0,c.T)().hasPermissions,t=(0,m.e)();if(e)return r(e);var n=a.Q.C$.getCurrentAppLink();return n.application!==u.O.SETTINGS||t.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function f(e){var r,t=b(e.requiredPermissions);if(n.useEffect((function(){t||a.Q.C$.trigger({application:u.O.SETTINGS,action:o.e.Settings.HOME},{replace:!0})}),[t]),!t)return n.createElement(n.Fragment,null);var c,m=e.breadcrumbs.map((function(r,t){return{name:r,appLink:{application:u.O.SETTINGS,action:o.e.Settings.HOME},active:t===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===(r=e.headingButton)||void 0===r?void 0:r.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(l.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:u.O.SETTINGS,action:o.e.Settings.HOME}}].concat((c=m,function(e){if(Array.isArray(e))return s(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,r){if(e){if("string"==typeof e)return s(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?s(e,r):void 0}}(c)||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)}},56746:(e,r,t)=>{t.r(r),t.d(r,{LibrariesPermissionsView:()=>I});var n=t(32735),a=t(23481),i=t(20354),l=t(65858),c=t(60376),o=t(83914),u=t(83345),m=t(83523),s=t(54610),d=t(77963),b=t(65728),f=t(39151),p=t(98064),v=t(31949),g=t(69883),h=t(37802),E=t(67453),y=t(35223),S=t(81803);const N={library:"OpkQB",svgWrapper:"M3KDT"};var k="settings.librariesPermissions",w=a.T.encloseNamespace(k);function I(){var e=i.a.useBasicFetch(f.L.config()),r=i.a.useBasicFetch(v.N.currentUser()),t=(0,h.r)(l.LZ.Settings),a=t.liteStudentCustomLibraries,I=t.isLoadingSettings,L=t.updateSetting,A=i.a.useBasicFetch(p.D.domainLibraries(["customLibrary","sharedLibrary"])),T=(0,g.Z)();return r.data&&e.data&&A.data&&!I?n.createElement(S.d,{heading:w("heading"),breadcrumbs:[w("breadcrumb")]},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(u.x,{namespace:k,phrase:"label"})),n.createElement(m.Z,{onClick:function(){var e={name:b.E.LiteStudentCustomLibraries,value:!a,kind:d.g.Temporary};L(r.data.customerId,e,(function(){T.success(w("success"))}),(function(){T.error(w("error"))}))},on:a})),n.createElement("p",{className:"mb-2"},n.createElement(u.x,{namespace:k,phrase:"description"})),n.createElement("div",{className:"border rounded-3 p-2"},A.data.map((function(e){var r,t,a,i;return n.createElement("div",{key:e.id,className:"d-flex py-1"},n.createElement("div",{className:"".concat(N.library," border rounded-circle")},n.createElement(c.f,{imageUrl:E.j.createUrl(null===(t=null===(r=e.owner)||void 0===r?void 0:r.logo)||void 0===t?void 0:t.url,{size:s.h2.Small}),svgSize:o.S.Small,svgWrapperClassName:"bg-teal ".concat(N.svgWrapper),svgName:!(null===(i=null===(a=e.owner)||void 0===a?void 0:a.logo)||void 0===i?void 0:i.url)&&y.vn.School})),n.createElement("div",{className:"ms-2"},e.name))}))))):n.createElement(n.Fragment,null)}}}]);
2
+ //# sourceMappingURL=6746-3f501b95cf-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/6746-3f501b95cf-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/libraries-visibility/libraries-permissions.scss","file:///app/packages/projects/lite/src/apps/settings/views/libraries-visibility/LibrariesPermissionsView.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}","// extracted by mini-css-extract-plugin\nexport default {\"library\":\"OpkQB\",\"svgWrapper\":\"M3KDT\"};","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 { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\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, Library } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nimport styles from './libraries-permissions.scss';\n\nconst namespace = 'settings.librariesPermissions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function LibrariesPermissionsView(): React.ReactElement {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { liteStudentCustomLibraries, isLoadingSettings, updateSetting } = useSettings(LocationContext.Settings);\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n\n const alerts = useAlerts();\n\n function onToggle() {\n const newSetting = {\n name: SettingName.LiteStudentCustomLibraries,\n value: !liteStudentCustomLibraries,\n kind: SettingKind.Temporary\n };\n\n updateSetting(\n currentUser.data.customerId,\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 !libraries.data ||\n isLoadingSettings\n )\n return <></>;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\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={liteStudentCustomLibraries}\n />\n </div>\n\n <p className='mb-2'><Text namespace={namespace} phrase='description' /></p>\n <div className='border rounded-3 p-2'>\n {libraries.data.map(lib => (\n <div key={lib.id} className='d-flex py-1'>\n <div className={`${styles.library} border rounded-circle`}>\n <IconCircle\n imageUrl={ImageHelper.createUrl(lib.owner?.logo?.url, { size: ImageSize.Small })}\n svgSize={SvgContainerSize.Small}\n svgWrapperClassName={`bg-teal ${styles.svgWrapper}`}\n svgName={!(lib.owner?.logo?.url) && cvSvgLibrary.School}\n />\n </div>\n <div className='ms-2'>\n {lib.name}\n </div>\n </div>\n ))}\n </div>\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","LanguageService","LibrariesPermissionsView","config","ConfigRequests","currentUser","UserRequests","useSettings","liteStudentCustomLibraries","isLoadingSettings","updateSetting","libraries","LibraryRequests","alerts","data","Text","phrase","ToggleSwitch","newSetting","SettingName","value","kind","SettingKind","customerId","success","error","on","lib","id","IconCircle","imageUrl","ImageHelper","owner","logo","url","svgSize","SvgContainer","svgWrapperClassName"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[714],{49935:(e,t,a)=>{a.d(t,{Oo:()=>f,b2:()=>g});var n=a(32735),r=a(23481),c=a(36848),l=a(86764),i=a(3747),s=a(5859),o=a(35223),m=a(83914);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,c,l,i=[],s=!0,o=!1;try{if(c=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=c.call(a)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(o)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(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)?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 a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var p=r.T.encloseNamespace("shared.breadcrumbComponent"),b=n.forwardRef((function(e,t){var a=e.breadcrumb,r=a.name,l=a.appLink,i=a.active,s=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?n.createElement("strong",null,r):n.createElement(c.F,{appLink:l,ref:t},s&&n.createElement(m.x,{svgName:o.vn.ChevronLeft,size:m.S.Small}),n.createElement("span",{className:s?"ms-2":""},r)))})),f=function(e){var t=e.breadcrumbs,a=(0,i.a)(l.r.XS),r=(null==t?void 0:t.length)||0,c=u(n.useState(!1),2),s=c[0],o=c[1],m=u(n.useState(!1),2),d=m[0],f=m[1],g=n.useRef();if(n.useEffect((function(){var e,a=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;r>3&&a>56&&o(!0)}),[null==t?void 0:t.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=g.current)||void 0===e||e.focus())}),[g.current,d]),!r||a&&r<2)return n.createElement(n.Fragment,null);if(a)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(b,{breadcrumb:t[r-2],withBackIcon:!0})));var E=n.createElement(b,{breadcrumb:t[0]}),v=r>2?n.createElement(b,{breadcrumb:t[r-2]}):n.createElement(n.Fragment,null),y=n.createElement(b,{breadcrumb:t[r-1]}),h=t.slice(1,r-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},E,s?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){o(!1),f(!0)},"aria-label":p("expand")},"...")):h.map((function(e,t){return n.createElement(b,{key:t,breadcrumb:e,ref:0===t?g:null})})),v,y))},g=n.memo((function(e){var t=e.numItems,a=void 0===t?3:t;return(0,i.a)(l.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"},s.u.getPartialLoadingItems({numItems:a}).map((function(e,t){var a=e.width;return n.createElement("li",{key:t,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:a},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},38502:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(32735),r=a(49985),c=a(36848),l=a(18559),i=a(11607),s=a(83914),o=a(87432);function m(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(l.C,{type:l.g.Count,data:e.tab.count})))}function u(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(c.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},n.createElement(m,{tab:e})):n.createElement(i.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(m,{tab:e})))}))))}u.defaultProps={borderRadius:"lg"}},58739:(e,t,a)=>{var n;a.d(t,{K:()=>n}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(n||(n={}))},44538:(e,t,a)=>{a.d(t,{K:()=>i});var n=a(99940),r=a(97395),c=a(58739),l=a(38389),i={getRostering:function(){return{url:"{gateway}/v1/users/me/rostering",key:"rostering"}},getSyncList:function(e){var t={};if(e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.jobStatus){var a=[];e.jobStatus.includes("completed")&&a.push.apply(a,[c.K.Completed,c.K.CompletedWithError]),e.jobStatus.includes("failed")&&a.push(c.K.Failed),e.jobStatus.includes("inProgress")&&a.push.apply(a,[c.K.Submitted,c.K.Queued,c.K.Pending,c.K.InProgress]),t.status=a}return t.type=l.m.Rostering,{url:r._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"rostering:sync:".concat(e.cursor,":").concat(e.sort,":").concat(e.jobStatus)}},createJob:function(e,t,a){return{url:"{gateway}/v1/batch/jobs",key:"rostering:sync",type:n.k.POST,invalidationKeys:["rostering:sync"],data:e,success:t,error:a}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}},getSyncScheduleSettings:function(e){return{url:"{gateway}/v1/rostering/".concat(e,"/schedule"),key:"sync-settings:".concat(e)}},updateScheduleSetting:function(e,t,a,r,c){return{type:n.k.PUT,url:"{gateway}/v1/rostering/".concat(t,"/schedule"),key:"update:sync-settings:".concat(e.customerId,":").concat(t),invalidationKeys:["sync-settings:".concat(t)],data:e,success:a,error:r,always:c}}}},5859:(e,t,a)=>{function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}a.d(t,{u:()=>c});var r={numItems:5,minWidth:50,maxWidth:100},c={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign(Object.assign({},r),t);return(e=Array(a.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 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)?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()*a.maxWidth),a.minWidth),"px")}}))}}},96268:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(32735),r=a(81886),c=a(65858),l=a(37802),i=a(14070),s=a(97291);function o(){var e=(0,l.r)(c.LZ.Settings),t=e.isLoadingSettings,a=e.domainSettings;n.useEffect((function(){t||a||r.Q.C$.trigger({application:s.O.SETTINGS,action:i.e.Settings.HOME},{replace:!0})}),[a,t])}},97990:(e,t,a)=>{a.d(t,{t:()=>p});var n=a(32735),r=a(81886),c=a(23481),l=a(65858),i=a(38502),s=a(14070),o=a(97291),m="settings.staffManagerTabs",u=c.T.encloseNamespace(m),d={staffManager:{application:o.O.USER_MANAGER,action:s.e.UserManager.STAFF},inviteRequests:{application:o.O.USER_MANAGER,action:s.e.UserManager.ACCESS_REQUESTS}};function p(e){var t=e.active;return n.createElement("div",{className:"mb-3"},n.createElement(i.r,{tabs:[{name:u("staffManager"),appLink:d.staffManager,active:"staff-manager"===t,analyticsData:{name:u("staffManager"),url:r.Q.C$.getHref(d.staffManager)},analyticsOptions:{actionType:l.Vw.Click,entity:l.py.Url,location:l.LZ.MagicTabs}},{name:u("inviteRequests"),appLink:d.inviteRequests,active:"invite-requests"===t,analyticsData:{name:c.T.getPhrase(m,"inviteRequests"),url:r.Q.C$.getHref(d.inviteRequests)},analyticsOptions:{actionType:l.Vw.Click,entity:l.py.Url,location:l.LZ.MagicTabs}}]}))}},81422:(e,t,a)=>{var n;a.d(t,{C:()=>n}),function(e){e.Approved="Approved",e.Denied="Denied",e.Pending="Pending"}(n||(n={}))},80714:(e,t,a)=>{a.r(t),a.d(t,{AccessRequestsView:()=>j});var n=a(32735),r=a(81886),c=a(23481),l=a(20354),i=a(36848),s=a(49935),o=a(83345),m=a(39151),u=a(44538),d=a(31949),p=a(14070),b=a(97291),f=a(96268),g=a(110),E=a(20789),v=a(19808),y=a(64818),h=a(23232),S=a(99742),N="userManager.inviteRequestsTableEmptyState",C=c.T.encloseNamespace(N);function k(){return n.createElement(h.u,null,n.createElement(h.u.Image,{src:S.W.EmptyStates.UserManager.STAFF}),n.createElement(h.u.Heading,null,n.createElement(o.x,{namespace:N,phrase:"heading"})),n.createElement(h.u.Info,null,n.createElement(o.x,{namespace:N,phrase:"info"})),n.createElement(h.u.Cta,{text:C("cta"),appLink:{application:b.O.SETTINGS,action:p.e.Settings.REQUESTING_ACCESS},className:"btn btn-dark"}))}var R=a(81422);const T={avatarContainer:"HxoMt",emailText:"ughCx"};var x="userManager.inviteRequestsTable";function A(e){var t=e.joinRequests,a=e.imageCdnUrl,r=e.currentUser,c=e.onResolveRequest;return t.length?n.createElement("table",{className:"w-100 table table-striped table-borderless"},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",{scope:"col",className:"ps-3"},n.createElement(o.x,{namespace:x,phrase:"nameTableHeading"})),n.createElement("th",{scope:"col"},n.createElement(o.x,{namespace:x,phrase:"dateTableHeading"})),n.createElement("th",null))),n.createElement("tbody",null,t.map((function(e){return n.createElement("tr",{key:e.id},n.createElement("td",{className:"align-middle ps-3"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(T.avatarContainer," me-2")},n.createElement(E.q,{imageCdnUrl:a,initials:y.l.getInitialsFromFullName(e.fullName)||e.email.charAt(0)})),n.createElement("div",{className:"d-flex flex-column justify-content-center"},e.fullName&&n.createElement("span",{className:"fw-semibold"},e.fullName),n.createElement("span",{className:"".concat(T.emailText)},e.email)))),n.createElement("td",{className:"align-middle"},g.O.format(e.dateCreated,r.instanceRegion===v.b.US?"MM/DD/YYYY":"DD/MM/YYYY")),n.createElement("td",{className:"text-end pe-3"},n.createElement("button",{className:"btn btn-tertiary me-1",onClick:function(){return c(e,R.C.Denied)}},n.createElement(o.x,{namespace:x,phrase:"rejectButtonLabel"})),n.createElement("button",{className:"btn btn-primary btn-dark",onClick:function(){return c(e,R.C.Approved)}},n.createElement(o.x,{namespace:x,phrase:"approveButtonLabel"}))))})))):n.createElement(k,null)}var M=a(97990),w=a(47288),L="userManager.accessRequests",I=c.T.encloseNamespace(L),O={application:b.O.SETTINGS,action:p.e.Settings.REQUESTING_ACCESS},U={application:b.O.SETTINGS,action:p.e.Settings.HOME};function j(){var e;(0,f.W)();var t=l.a.useBasicFetch(d.N.currentUser()),a=l.a.useBasicFetch(w.N.joinRequests()),c=l.a.useBasicFetch(m.L.config()),g=l.a.useBasicFetch(u.K.getRostering()),E=(null===(e=g.data)||void 0===e?void 0:e.status)&&"None"!==g.data.status;return n.useEffect((function(){if(g.hasCompleted&&E){var e={application:b.O.USER_MANAGER,action:p.e.UserManager.STAFF};r.Q.C$.trigger(e,{replace:!0})}}),[g.hasCompleted,E]),a.hasCompleted&&c.hasCompleted&&t.hasCompleted&&g.hasCompleted&&!E?n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2"},n.createElement(o.x,{namespace:L,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement(s.Oo,{breadcrumbs:[{name:I("settingsBreadcrumb"),appLink:U},{name:I("staffManagerBreadcrumb"),active:!0}]})),n.createElement(M.t,{active:"invite-requests"}),n.createElement("p",{className:"mb-3"},n.createElement(o.x,{namespace:L,phrase:"domainSettingsDescription"}),n.createElement("br",null),n.createElement(i.F,{appLink:O,className:"info-link"},n.createElement(o.x,{namespace:L,phrase:"domainSettingsLink"}))),n.createElement(A,{joinRequests:a.data,imageCdnUrl:c.data.imageCdnUrl,onResolveRequest:function(e,t){r.Q.C$.trigger({application:b.O.USER_MANAGER,action:p.e.UserManager.RESOLVE_ACCESS_REQUEST,args:[e.id],params:{status:t}})},currentUser:t.data})):n.createElement(n.Fragment,null)}},87432:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
2
+ //# sourceMappingURL=714-c00ad56229-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/714-c00ad56229-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/hooks/useDomainSettingsSwitch.ts","file:///app/packages/projects/lite/src/apps/user-manager/components/staff-manager-tabs/StaffManagerTabs.tsx","file:///app/packages/projects/lite/src/apps/user-manager/enums/JoinRequestStatus.ts","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/empty-state/InviteRequestsTableEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/invite-requests-table.scss","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/InviteRequestsTable.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/invite-requests/AccessRequestsView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"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});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","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 { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\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 React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function useDomainSettingsSwitch() {\n const { isLoadingSettings, domainSettings } = useSettings(LocationContext.Settings);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n if (!domainSettings) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [ domainSettings, isLoadingSettings ]);\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { StaffManagerAppLinks } from 'apps/user-manager/interfaces/StaffManagerAppLinks';\n\nconst namespace = 'settings.staffManagerTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst staffManagerAppLinks: StaffManagerAppLinks = {\n staffManager: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n },\n inviteRequests: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.ACCESS_REQUESTS\n }\n};\n\ninterface StaffManagerTabsProps {\n active: 'staff-manager' | 'invite-requests'\n}\n\nexport function StaffManagerTabs(props: StaffManagerTabsProps): JSX.Element {\n const { active } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('staffManager'),\n appLink: staffManagerAppLinks.staffManager,\n active: active === 'staff-manager',\n analyticsData: {\n name: getPhrase('staffManager'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.staffManager)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('inviteRequests'),\n appLink: staffManagerAppLinks.inviteRequests,\n active: active === 'invite-requests',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'inviteRequests'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.inviteRequests)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","export enum JoinRequestStatus {\n Approved = 'Approved',\n Denied = 'Denied',\n Pending = 'Pending'\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'userManager.inviteRequestsTableEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function InviteRequestsTableEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STAFF} />\n\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={getPhrase('cta')}\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n }}\n className='btn btn-dark'\n />\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"HxoMt\",\"emailText\":\"ughCx\"};","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InviteRequestsTableEmptyState } from 'apps/user-manager/components/invite-requests-table/empty-state/InviteRequestsTableEmptyState';\nimport { JoinRequestStatus } from 'apps/user-manager/enums/JoinRequestStatus';\nimport { JoinRequest } from 'apps/user-manager/interfaces/JoinRequest';\n\nimport styles from './invite-requests-table.scss';\n\nconst namespace = 'userManager.inviteRequestsTable';\n\ninterface InviteRequestsTableProps {\n joinRequests: JoinRequest[],\n imageCdnUrl: string,\n currentUser: CurrentUser;\n onResolveRequest: (request: JoinRequest, status: JoinRequestStatus) => void\n}\n\nexport function InviteRequestsTable(props: InviteRequestsTableProps) {\n const { joinRequests, imageCdnUrl, currentUser, onResolveRequest } = props;\n\n function getDateFormat(): string {\n if (currentUser.instanceRegion === InstanceRegion.US)\n return 'MM/DD/YYYY';\n return 'DD/MM/YYYY';\n }\n\n if (!joinRequests.length) {\n return <InviteRequestsTableEmptyState />;\n }\n\n return (\n <table className='w-100 table table-striped table-borderless'>\n <thead>\n <tr>\n <th scope='col' className='ps-3'><Text namespace={namespace} phrase='nameTableHeading' /></th>\n <th scope='col'><Text namespace={namespace} phrase='dateTableHeading' /></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {joinRequests.map(joinRequest => (\n <tr key={joinRequest.id}>\n <td className='align-middle ps-3'>\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-2`}>\n <Avatar\n imageCdnUrl={imageCdnUrl}\n initials={\n UserHelper.getInitialsFromFullName(joinRequest.fullName) || joinRequest.email.charAt(0)\n }\n />\n </div>\n <div className='d-flex flex-column justify-content-center'>\n {joinRequest.fullName && <span className='fw-semibold'>{joinRequest.fullName}</span>}\n <span className={`${styles.emailText}`}>{joinRequest.email}</span>\n </div>\n </div>\n </td>\n <td className='align-middle'>{DateHelper.format(joinRequest.dateCreated, getDateFormat())}</td>\n <td className='text-end pe-3'>\n <button\n className='btn btn-tertiary me-1'\n onClick={() => onResolveRequest(joinRequest, JoinRequestStatus.Denied)}\n >\n <Text namespace={namespace} phrase='rejectButtonLabel' />\n </button>\n <button\n className='btn btn-primary btn-dark'\n onClick={() => onResolveRequest(joinRequest, JoinRequestStatus.Approved)}\n >\n <Text namespace={namespace} phrase='approveButtonLabel' />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CurrentUser, RosteringResponse } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useDomainSettingsSwitch } from 'apps/settings/hooks/useDomainSettingsSwitch';\nimport { InviteRequestsTable } from 'apps/user-manager/components/invite-requests-table/InviteRequestsTable';\nimport { StaffManagerTabs } from 'apps/user-manager/components/staff-manager-tabs/StaffManagerTabs';\nimport { JoinRequestStatus } from 'apps/user-manager/enums/JoinRequestStatus';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { JoinRequest } from 'apps/user-manager/interfaces/JoinRequest';\n\nconst namespace = 'userManager.accessRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst domainSettingsAppLink: Core.AppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n};\n\nconst settingsAppLink: Core.AppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n};\n\nexport function AccessRequestsView() {\n useDomainSettingsSwitch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const joinRequests = Flight.useBasicFetch<JoinRequest[]>(UserManagerRequests.joinRequests());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n React.useEffect(() => {\n // if school has rostering, redirect to staff manager\n if (rostering.hasCompleted && hasRostering) {\n const appLink = {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n };\n Core.AppLinkHelper.trigger(appLink, { replace: true });\n }\n }, [ rostering.hasCompleted, hasRostering ]);\n\n function onResolveRequest(joinRequest: JoinRequest, status: JoinRequestStatus) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.RESOLVE_ACCESS_REQUEST,\n args: [joinRequest.id],\n params: { status }\n });\n }\n\n const dataLoaded = !joinRequests.hasCompleted\n || !config.hasCompleted\n || !currentUser.hasCompleted\n || !rostering.hasCompleted;\n\n if (dataLoaded || hasRostering) {\n return <></>;\n }\n\n return (\n <div className='px-3'>\n <h1 className='h2'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: settingsAppLink },\n { name: getPhrase('staffManagerBreadcrumb'), active: true }\n ]}\n />\n </div>\n\n <StaffManagerTabs active='invite-requests' />\n\n <p className='mb-3'>\n <Text namespace={namespace} phrase='domainSettingsDescription' />\n <br/>\n <AppLink appLink={domainSettingsAppLink} className='info-link'>\n <Text namespace={namespace} phrase={'domainSettingsLink'}/>\n </AppLink>\n </p>\n\n <InviteRequestsTable\n joinRequests={joinRequests.data}\n imageCdnUrl={config.data.imageCdnUrl}\n onResolveRequest={onResolveRequest}\n currentUser={currentUser.data}\n />\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"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","TabContents","tab","count","type","data","PillTabSelector","containerRef","borderRadius","listClassName","tabs","index","analyticsData","analyticsOptions","onSelect","onSelectTab","defaultProps","BatchJobStatus","RosteringRequests","getRostering","url","getSyncList","queryParams","params","cursor","sort","order","jobStatus","statuses","includes","push","status","createJob","success","error","invalidationKeys","getJobSummary","id","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","useDomainSettingsSwitch","isLoadingSettings","domainSettings","application","action","replace","namespace","staffManagerAppLinks","staffManager","inviteRequests","StaffManagerTabs","actionType","entity","location","JoinRequestStatus","LanguageService","InviteRequestsTableEmptyState","EmptyState","src","ImageUrls","Text","phrase","text","InviteRequestsTable","joinRequests","imageCdnUrl","currentUser","onResolveRequest","scope","joinRequest","Avatar","initials","UserHelper","fullName","email","charAt","DateHelper","dateCreated","instanceRegion","InstanceRegion","domainSettingsAppLink","settingsAppLink","AccessRequestsView","UserRequests","UserManagerRequests","config","ConfigRequests","rostering","hasRostering","hasCompleted","AppLink","args"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7163],{49935:(e,t,r)=>{r.d(t,{Oo:()=>v,b2:()=>b});var n=r(32735),a=r(23481),i=r(36848),l=r(86764),o=r(3747),c=r(5859),u=r(35223),s=r(83914);function d(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,l,o=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(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 m(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 p=a.T.encloseNamespace("shared.breadcrumbComponent"),f=n.forwardRef((function(e,t){var r=e.breadcrumb,a=r.name,l=r.appLink,o=r.active,c=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?n.createElement("strong",null,a):n.createElement(i.F,{appLink:l,ref:t},c&&n.createElement(s.x,{svgName:u.vn.ChevronLeft,size:s.S.Small}),n.createElement("span",{className:c?"ms-2":""},a)))})),v=function(e){var t=e.breadcrumbs,r=(0,o.a)(l.r.XS),a=(null==t?void 0:t.length)||0,i=d(n.useState(!1),2),c=i[0],u=i[1],s=d(n.useState(!1),2),m=s[0],v=s[1],b=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;m&&(null===(e=b.current)||void 0===e||e.focus())}),[b.current,m]),!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(f,{breadcrumb:t[a-2],withBackIcon:!0})));var y=n.createElement(f,{breadcrumb:t[0]}),g=a>2?n.createElement(f,{breadcrumb:t[a-2]}):n.createElement(n.Fragment,null),h=n.createElement(f,{breadcrumb:t[a-1]}),E=t.slice(1,a-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},y,c?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){u(!1),v(!0)},"aria-label":p("expand")},"...")):E.map((function(e,t){return n.createElement(f,{key:t,breadcrumb:e,ref:0===t?b:null})})),g,h))},b=n.memo((function(e){var t=e.numItems,r=void 0===t?3:t;return(0,o.a)(l.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"},c.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"}}))}))))}))},63719:(e,t,r)=>{r.d(t,{h:()=>o});var n=r(32735),a=r(77316);function i(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}function l(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}function o(e){var t,r,o=(t=n.useMemo((function(){return a.p.getBuilder()}),[]),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw a}}return o}}(t,r)||i(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],u=(0,o[1])(c);return u&&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)||i(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(u),[Object.assign(Object.assign({},e),{active:!0})]):u}},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")}}))}}},80024:(e,t,r)=>{r.r(t),r.d(t,{MyVideosFolderView:()=>q});var n=r(32735),a=r(81886),i=r(20354),l=r(28400),o=r(65858),c=r(43500),u=r(83657),s=r(49935),d=r(73518),m=r(83834),p=r(65403),f=r(10874),v=r(37395),b=r(4201),y=r(83345),g=r(74696),h=r(30254),E=r(13231),k=r(51365),A=r(1666),S=r(98064),w=r(31949),I=r(63719),L=r(299),O=r(91286),F=r(22902),V=r(37802),M=r(35223),N=r(35949),C=r(14070),x=r(97291),j=r(51855),D=r(27638),B=r(44110),_=r(10741),R=r(22490),P=r(98860),T=r(12617),G=r(45967),W=r(65202),Y=r(74796),H=r(82431),U=r(18097),X=r(14305),$=r(61970);const Q={uploadingList:"BrRqF"};var Z="default.myVideosFolders";function q(e){var t,r,q,z,J,K,ee,te=i.a.useGetFetch(),re=(0,D.u)(o.LZ.VideoThumbnail),ne=re.setFavourite,ae=re.canFavourite,ie=(0,B.i)(),le=(0,G.q)().handleDragEnd,oe=(0,b.of)().focusSearchBar,ce=(0,j.G)().isPlugin,ue=i.a.useBasicFetch(S.D.folder(e.id)),se=(0,P.P)(e.id),de=i.a.useBasicFetch(w.N.currentUser()),me=i.a.useBasicFetch((null===(t=de.data)||void 0===t?void 0:t.isAuthenticated)&&A.h.yearGroups(de.data.customerId)),pe=i.a.useBasicFetch((null===(r=de.data)||void 0===r?void 0:r.isAuthenticated)&&w.N.workspace());(0,O.v)(ue);var fe=(0,I.h)({name:null===(q=ue.data)||void 0===q?void 0:q.name}),ve=(0,Y.f)(),be=(0,V.r)(null),ye=be.myVideosFolders,ge=be.isLoadingSettings;n.useEffect((function(){ge||ye||a.Q.C$.trigger({application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS},{replace:!0})}),[ye,ge]);var he=(0,$.y)(),Ee=(0,$.W)(null===(z=pe.data)||void 0===z?void 0:z.id,e.id),ke=(0,F.T)().hasPermissions,Ae=function(t,r){return T.E.videos(e.id,t,r)},Se=i.a.useBasicFetch(Ae(e.cursor,e.typeFilter));(0,O.v)(Se);var we=(0,W.J)({onRemove:function(e,t){return te(Ae(e,t))},categoryId:+e.id}),Ie=we.uploadingVideos,Le=we.onClickAlternate,Oe=we.onClickDelete,Fe=we.processingIds,Ve=null===(K=null===(J=Se.data)||void 0===J?void 0:J.data)||void 0===K?void 0:K.filter((function(e){return!Fe[e.id]})),Me=(0,L.X)(Ve);return ue.data?n.createElement(k.M.Provider,{value:he},n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-start"},n.createElement("h1",{className:"h2 mb-0"},ue.data.name),n.createElement("div",{className:"d-sm-flex d-none ms-2"},n.createElement(f.h,{svgName:M.vn.Search,appLink:{application:x.O.SEARCH,action:C.e.Search.HOME,params:{source:c.fi.MyVideos}},className:"btn btn-outline-dark me-2",onClick:oe,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.MyVideos,actionType:o.Vw.Click,descriptor:o.Bk.MyVideos}},n.createElement(y.x,{namespace:Z,phrase:"searchMyVideos"})),n.createElement(u.e,{actions:ve("page",ue.data),actionsDropdownClassName:"btn btn-outline-dark"}))),n.createElement("div",{className:"mt-3"},n.createElement(s.Oo,{breadcrumbs:fe})),n.createElement("hr",null),!(null==se?void 0:se.hasCompleted)&&n.createElement(p.i,null),n.createElement(d.p,{handleDragEnd:le,dragOverlayComponent:N.U,source:ue.data},!!(null===(ee=null==se?void 0:se.items)||void 0===ee?void 0:ee.length)&&n.createElement("div",{className:"mx-n2"},n.createElement(m.$,{folders:se.items,getAppLink:function(e){return{application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(e.name)]}},expandFolders:!1,getFolderActions:function(e){return ve("folder",e)},drag:!0,drop:!0})),n.createElement(h.X,{allowBulkAction:!0,allowFilter:!0,isVideosLoading:!Se.data,checkboxHelper:Me,getVideosBulkAction:Ee,locationContext:o.LZ.MyVideos,typeFilter:e.typeFilter,getAppLink:function(){var t;return{application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(null===(t=ue.data)||void 0===t?void 0:t.name)]}}}),!!(null==Ie?void 0:Ie.length)&&n.createElement("div",{className:"position-relative ".concat(Q.uploadingList)},Ie.map((function(e){return n.createElement(U.X,{item:e,onClickAlternate:Le,onClickDelete:Oe,key:e.id,allowBulkAction:!0})}))),function(){var t,r,a,i;return Se.data?(null===(r=null===(t=Se.data)||void 0===t?void 0:t.data)||void 0===r?void 0:r.length)?n.createElement(n.Fragment,null,n.createElement(E.E4,{videos:Ve,yearGroups:me.data,getVideoAppLink:R.W.getAppLink,getSubTextAppLink:function(e){return H.j.getSeriesAppLink(e.series)},setFavourite:ne,canFavourite:ae,presentationAudiences:ie.data,canRemovePrivateVideos:!0,allowBulkAction:!0,hasPermissions:ke,getVideosBulkAction:Ee,typeFilter:e.typeFilter,checkboxHelper:Me,drag:!0,getPreviewQuestionsAppLink:function(e){return _.j.getPreviewQuestionsAppLink(e)},isPlugin:ce,getClassroomGuideAppLink:R.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:R.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:R.W.getResourceGuidanceAppLink}),!!(null===(i=null===(a=Se.data)||void 0===a?void 0:a.pagination)||void 0===i?void 0:i.cursors)&&n.createElement(v.t,{appLink:{action:C.e.MyVideos.MY_VIDEOS_FOLDER,application:x.O.MY_VIDEOS,args:[e.id,l.m.slugify(ue.data.name)],params:{cursor:e.cursor,previous:e.previous,type:e.typeFilter}},cursors:{next:Se.data.pagination.cursors.next,previous:e.cursor},buttonVariant:"outline-dark",className:"py-2 float-end",scrollTop:!0,prevHack:!0})):n.createElement(X.K,null):n.createElement(g.S,{allowBulkActions:!0})}()))):n.createElement(n.Fragment,null)}}}]);
2
+ //# sourceMappingURL=7163-84c2b15394-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7163-84c2b15394-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/hooks/useBreadcrumbs.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/my-videos-folders.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/MyVideosFolderView.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});","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};","// extracted by mini-css-extract-plugin\nexport default {\"uploadingList\":\"BrRqF\"};","import React from 'react';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { EntityType, Folder, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { DragDropMoveContext } from 'libs/shared/components/drag-drop-move/DragDropMoveContext';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoListActions } from 'libs/shared/components/video-list/video-list-actions/VideoListActions';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { BulkCheckboxManager, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, CurrentUser, Library, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DragDropOverlay } from 'shared/components/drag-drop-overlay/DragDropOverlay';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useDragDropMove } from 'apps/my-videos/hooks/useDragDropMove';\nimport { useUploadItems } from 'apps/my-videos/hooks/useUploadItems';\nimport { useGetFolderActions } from 'apps/my-videos/utils/getFolderActions';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\n\nimport { MyVideosEmptyState } from '../my-videos/empty-state/MyVideosEmptyState';\nimport { useMyVideosViewActions, useMyVideosViewBulkActions } from '../my-videos/MyVideosViewUtils';\n\nimport styles from './my-videos-folders.scss';\n\nconst namespace = 'default.myVideosFolders';\n\ninterface MyVideosFolderViewProps {\n id: string;\n cursor?: string;\n previous?: string;\n typeFilter?: SearchIndices[];\n}\n\nexport function MyVideosFolderView(props: MyVideosFolderViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const audiences = usePresentationAudiences();\n const { handleDragEnd } = useDragDropMove();\n const { focusSearchBar } = useFocusSearchBar();\n const { isPlugin } = usePluginHelper();\n\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.id));\n const subfolders = useFetchAllChildFolders(props.id);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const workspace = Flight.useBasicFetch<Library>(\n currentUser.data?.isAuthenticated && UserRequests.workspace()\n );\n\n\n useHandleObjectError(folder);\n\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const getFolderActions = useGetFolderActions();\n\n // TODO: Remove this redirect when we release my videos with folders.\n const { myVideosFolders, isLoadingSettings } = useSettings(null);\n React.useEffect(() => {\n if (isLoadingSettings || myVideosFolders)\n return;\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n }, { replace: true });\n }, [ myVideosFolders, isLoadingSettings ]);\n\n const getVideoItemActions = useMyVideosViewActions();\n const getVideosBulkActions = useMyVideosViewBulkActions(workspace.data?.id, props.id);\n const { hasPermissions } = usePermissions();\n\n const getMyVideosRequest = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n // Delete the above when master supports the new assoc types.\n return MyVideosRequests.videos(props.id, cursor, typeFilter);\n };\n\n const fetchNext = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n return fetch(getMyVideosRequest(cursor, typeFilter));\n };\n\n const videos = Flight.useBasicFetch<BasePaginatedCollection<VideoTypes>>(\n getMyVideosRequest(props.cursor, props.typeFilter)\n );\n\n useHandleObjectError(videos);\n\n const {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n } = useUploadItems({ onRemove: fetchNext, categoryId: +props.id });\n\n const omittedVideos = videos.data?.data?.filter(v => !processingIds[v.id]);\n\n const CheckboxHelper: BulkCheckboxManager = useBulkCheckboxManager(omittedVideos);\n\n function getMyVideosAppLink(): Core.AppLink {\n return {\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n application: AppChannels.MY_VIDEOS,\n args: [ props.id, TextHelper.slugify(folder.data.name) ],\n params: { cursor: props.cursor, previous: props.previous, type: props.typeFilter }\n };\n }\n\n function getCursors(): Cursors {\n return { next: videos.data.pagination.cursors.next, previous: props.cursor };\n }\n\n if (!folder.data)\n return <></>;\n\n return (\n <VideoActionsContext.Provider value={getVideoItemActions}>\n <div className='px-3'>\n <div className='d-flex justify-content-between align-items-start'>\n <h1 className='h2 mb-0'>{folder.data.name}</h1>\n <div className='d-sm-flex d-none ms-2'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.MyVideos\n }\n }}\n className='btn btn-outline-dark me-2'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.MyVideos,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.MyVideos\n }}\n >\n <Text namespace={namespace} phrase='searchMyVideos' />\n </IconButton>\n <ActionsComponent\n actions={getFolderActions('page', folder.data)}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n </div>\n <div className='mt-3'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </div>\n <hr />\n {!subfolders?.hasCompleted && <PartialFolderList />}\n <DragDropMoveContext\n handleDragEnd={handleDragEnd}\n dragOverlayComponent={DragDropOverlay}\n source={folder.data}\n >\n {!!subfolders?.items?.length &&\n <div className='mx-n2'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ f.id, TextHelper.slugify(f.name) ]\n })}\n expandFolders={false}\n getFolderActions={f => getFolderActions('folder', f)}\n drag\n drop\n />\n </div>\n }\n <VideoListActions\n allowBulkAction\n allowFilter\n isVideosLoading={!videos.data}\n checkboxHelper={CheckboxHelper}\n getVideosBulkAction={getVideosBulkActions}\n locationContext={LocationContext.MyVideos}\n typeFilter={props.typeFilter}\n getAppLink={() => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ props.id, TextHelper.slugify(folder.data?.name) ]\n })}\n />\n {!!uploadingVideos?.length && (\n <div className={`position-relative ${styles.uploadingList}`}>\n {uploadingVideos.map(uploadingVideo => (\n <UploadingItem\n item={uploadingVideo}\n onClickAlternate={onClickAlternate}\n onClickDelete={onClickDelete}\n key={uploadingVideo.id}\n allowBulkAction\n />\n ))}\n </div>\n )}\n {(() => {\n if (!videos.data)\n return <PartialVideoList allowBulkActions />;\n\n if (!videos.data?.data?.length)\n return <MyVideosEmptyState />;\n\n return (\n <>\n <VideoList\n videos={omittedVideos}\n yearGroups={yearGroups.data}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={audiences.data}\n canRemovePrivateVideos\n allowBulkAction\n hasPermissions={hasPermissions}\n getVideosBulkAction={getVideosBulkActions}\n typeFilter={props.typeFilter}\n checkboxHelper={CheckboxHelper}\n drag\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n {!!videos.data?.pagination?.cursors && (\n <Pagination\n appLink={getMyVideosAppLink()}\n cursors={getCursors()}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n scrollTop\n prevHack\n />\n )}\n </>\n );\n })()}\n </DragDropMoveContext>\n </div>\n </VideoActionsContext.Provider>\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","useBreadcrumbs","match","useBuilder","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","namespace","MyVideosFolderView","fetch","useLiteFavourites","u","setFavourite","canFavourite","audiences","usePresentationAudiences","handleDragEnd","useDragDropMove","focusSearchBar","isPlugin","usePluginHelper","folder","LibraryRequests","id","subfolders","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","workspace","useSettings","myVideosFolders","isLoadingSettings","application","action","replace","getVideoItemActions","getVideosBulkActions","hasPermissions","usePermissions","getMyVideosRequest","cursor","typeFilter","MyVideosRequests","videos","useUploadItems","onRemove","categoryId","uploadingVideos","onClickAlternate","onClickDelete","processingIds","omittedVideos","filter","v","CheckboxHelper","useBulkCheckboxManager","VideoActionsContext","value","IconButton","params","source","analyticsData","analyticsOptions","entity","location","actionType","descriptor","Text","phrase","Actions","actions","actionsDropdownClassName","hasCompleted","PartialFolderList","DragDropMoveContext","dragOverlayComponent","DragDropOverlay","items","FolderList","folders","getAppLink","f","args","TextHelper","expandFolders","getFolderActions","drag","drop","VideoListActions","allowBulkAction","allowFilter","isVideosLoading","checkboxHelper","getVideosBulkAction","locationContext","uploadingVideo","UploadingItem","item","VideoList","getVideoAppLink","VideoAppLinkHelper","getSubTextAppLink","video","SeriesAppLinkHelper","series","presentationAudiences","canRemovePrivateVideos","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","pagination","cursors","Pagination","previous","type","buttonVariant","scrollTop","prevHack","MyVideosEmptyState","PartialVideoList","allowBulkActions"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7178],{49935:(e,t,n)=>{n.d(t,{Oo:()=>p,b2:()=>b});var r=n(32735),a=n(23481),o=n(36848),i=n(86764),l=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,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(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"),g=r.forwardRef((function(e,t){var n=e.breadcrumb,a=n.name,i=n.appLink,l=n.active,c=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?r.createElement("strong",null,a):r.createElement(o.F,{appLink:i,ref:t},c&&r.createElement(u.x,{svgName:s.vn.ChevronLeft,size:u.S.Small}),r.createElement("span",{className:c?"ms-2":""},a)))})),p=function(e){var t=e.breadcrumbs,n=(0,l.a)(i.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],p=u[1],b=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=b.current)||void 0===e||e.focus())}),[b.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(g,{breadcrumb:t[a-2],withBackIcon:!0})));var v=r.createElement(g,{breadcrumb:t[0]}),y=a>2?r.createElement(g,{breadcrumb:t[a-2]}):r.createElement(r.Fragment,null),E=r.createElement(g,{breadcrumb:t[a-1]}),h=t.slice(1,a-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},v,c?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){s(!1),p(!0)},"aria-label":f("expand")},"...")):h.map((function(e,t){return r.createElement(g,{key:t,breadcrumb:e,ref:0===t?b:null})})),y,E))},b=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,l.a)(i.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},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"}}))}))))}))},41661:(e,t,n)=>{var r;n.d(t,{D:()=>r}),function(e){e.GoogleClassroom="google-classroom",e.MicrosoftTeams="microsoft-teams",e.Vivi="vivi",e.AppleTv="apply-tv"}(r||(r={}))},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(r||(r={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="22110291468057",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097"}(a||(a={}))},40841:(e,t,n)=>{n.d(t,{_:()=>l});var r=n(23481),a=n(41661),o=n(65728),i=r.T.encloseNamespace("shared.shared-utils"),l={getShareIntegrations:function(e,t){return[{id:a.D.GoogleClassroom,name:i("googleClassroom"),enabled:e,settingName:o.E.ShareToGoogleClassroom},{id:a.D.MicrosoftTeams,name:i("msftTeams"),enabled:t,settingName:o.E.ShareToMicrosoftTeams}]}}},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")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>g});var r=n(32735),a=n(81886),o=n(23481),i=n(49935),l=n(22902),c=n(14070),s=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",f=function(e){var t=(0,l.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==s.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function g(e){var t,n=f(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:s.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var l,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(i.Oo,{breadcrumbs:[{name:o.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME}}].concat((l=u,function(e){if(Array.isArray(e))return m(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 m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(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&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},27178:(e,t,n)=>{n.r(t),n.d(t,{IntegrationSettingsView:()=>Z});var r=n(32735),a=n(23481),o=n(20354),i=n(65858),l=n(41661),c=n(33514),s=n(77963),u=n(65728),m=n(39151),d=n(2744),f=n(31949),g=n(69883),p=n(37802),b=n(40841),v=n(14070),y=n(97291),E=n(81886),h=n(11607),S=n(83914),I=n(83523),T=n(99705),C=n(12778),N=n(35223),A=n(99742);const k={integrationIcon:"bqV8U",googleClassroomIconContainer:"Rl7gP",viviIconContainer:"qCgv4",appleTvIconContainer:"ASg8C",headerContainer:"GmPjw",statusIndicator:"_2Tuy",connectedStatusIndicator:"Q9uug",notConnectedStatusIndicator:"kn43h",reconnectStatusIndicator:"Kx6Vr"};function w(e){return w="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},w(e)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function L(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=w(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=w(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==w(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=a.T.encloseNamespace("settings.integrationToggle"),x=L(L(L(L({},l.D.GoogleClassroom,A.W.Integrations.GoogleClassroom),l.D.MicrosoftTeams,A.W.Integrations.MicrosoftTeams),l.D.Vivi,A.W.Integrations.Vivi),l.D.AppleTv,A.W.Integrations.AppleTV),M=L(L(L({},l.D.GoogleClassroom,k.googleClassroomIconContainer),l.D.Vivi,k.viviIconContainer),l.D.AppleTv,k.appleTvIconContainer),P=L(L(L(L({},l.D.GoogleClassroom,T.b.Integrations),l.D.MicrosoftTeams,T.b.Integrations),l.D.Vivi,T.b.ViviIntegration),l.D.AppleTv,T.b.AppleTvIntegration);function V(e){var t,n,a,o=(n=r.useState(e.integration.enabled),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}(n,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.")}()),i=o[0],l=o[1];r.useEffect((function(){l(e.integration.enabled)}),[e.updateError]);var s=x[e.integration.id],u=null!==(t=M[e.integration.id])&&void 0!==t?t:"",m=e.integration.status,d=m&&m!==c.I.Connected;return r.createElement("div",{className:"border rounded-3"},r.createElement("div",{className:"position-relative d-flex align-items-center justify-content-center py-4 rounded-top ".concat(u)},r.createElement(F,{status:m,configureTooltip:e.integration.configureTooltip,configureAppLink:e.integration.configureAppLink}),r.createElement("img",{src:s,className:k.integrationIcon})),r.createElement("div",{className:"border-top p-2"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("span",{className:"me-2"},e.integration.name),r.createElement(I.Z,{onClick:function(){e.onToggleIntegration(e.integration,!i),l(!i)},on:i,disabled:d})),r.createElement("div",null,r.createElement("a",{href:C.o.getLiteArticle(P[e.integration.id]),target:"_blank",className:"text-info"},O("learnMore")))))}var D=L(L(L({},c.I.Connected,k.connectedStatusIndicator),c.I.NotConnected,k.notConnectedStatusIndicator),c.I.Reconnect,k.reconnectStatusIndicator),G=L(L(L({},c.I.Connected,O("connectedStatusLabel")),c.I.NotConnected,O("notConnectedStatusLabel")),c.I.Reconnect,O("reconnectStatusLabel"));function F(e){var t,n,a=e.status,o=e.configureTooltip,i=e.configureAppLink,l=null!==(t=D[a])&&void 0!==t?t:"",c=null!==(n=G[a])&&void 0!==n?n:"";return r.createElement("div",{className:"d-flex justify-content-between align-items-top position-absolute ps-2 pt-1 pe-1 ".concat(k.headerContainer)},r.createElement("div",{className:"d-flex flex-row align-items-center"},l&&r.createElement("span",{className:"inline-block ".concat(k.statusIndicator," ").concat(l)}),c&&r.createElement("span",{className:"ms-1 text-white"},c)),i&&r.createElement(h.L,{className:"cursor-pointer text-white",onClick:function(e){e.stopPropagation(),e.preventDefault(),E.Q.C$.trigger(i)}},r.createElement(S.x,{size:S.S.Medium,svgName:N.vn.Cog,title:o,tooltipPlacement:"top",tooltipSpanHack:!0})))}var R=n(81803);const _={partialToggle:"p5int"};function U(e){return r.createElement("div",{className:e.className},r.createElement("div",{className:"border rounded-3 partial-loading-background ".concat(_.partialToggle)}," "))}function B(e){return r.createElement(r.Fragment,null,r.createElement(U,{className:e.className}),r.createElement(U,{className:e.className}))}const W={toggleContainer:"roVyL"};function $(e){return $="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},$(e)}function H(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 q(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=$(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=$(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Q=a.T.encloseNamespace("settings.integrationSettings"),z=q(q(q({},c.I.Connected,Q("viviConnectedStatusTooltip")),c.I.NotConnected,Q("viviNotConnectedStatusTooltip")),c.I.Reconnect,Q("viviReconnectStatusTooltip"));function Z(){var e,t,n,a,c=(n=r.useState({}),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return H(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)?H(e,t):void 0}}(n,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.")}()),E=c[0],h=c[1],S=(0,g.Z)(),I=o.a.useBasicFetch(f.N.currentUser()),T=o.a.useBasicFetch(m.L.config()),C=o.a.useBasicFetch((null===(e=I.data)||void 0===e?void 0:e.isAuthenticated)&&d.z.getViviIntegrationStatus()),N=(0,p.r)(i.LZ.Settings),A=N.shareToGoogleClassroom,k=N.shareToMicrosoftTeams,w=N.hasEnabledAppleTvPlayback,j=N.hasEnabledViviPlayback,L=N.updateSetting,O=N.isLoadingSettings,x=b._.getShareIntegrations(A,k),M=[{id:l.D.AppleTv,name:Q("appleTv"),settingName:u.E.HasEnabledAppleTvPlayback,configureAppLink:{application:y.O.SETTINGS,action:v.e.Settings.APPLE_TV},configureTooltip:Q("appleTvTooltip"),enabled:w},{id:l.D.Vivi,name:Q("vivi"),settingName:u.E.HasEnabledViviPlayback,configureAppLink:{application:y.O.SETTINGS,action:v.e.Settings.VIVI},configureTooltip:null!==(t=z[C.data])&&void 0!==t?t:"",enabled:j,status:C.data}],P=!!I.data&&!!T.data&&C.hasCompleted&&!O,D=M.length>0;function G(e,t){var n=t?"enableIntegrationSuccess":"disableIntegrationSuccess",r=t?"enableIntegrationError":"disableIntegrationError",a={name:e.settingName,value:t,kind:s.g.Temporary};L(I.data.customerId,a,(function(){S.success(Q(n,{integrationName:e.name,escapeText:!0})),h((function(t){return Object.assign(Object.assign({},t),q({},e.name,!1))}))}),(function(){S.error(Q(r,{integrationName:e.name,escapeText:!0})),h((function(t){return Object.assign(Object.assign({},t),q({},e.name,!0))}))}))}return r.createElement(R.d,{heading:Q("integrations"),breadcrumbs:[Q("integrations")]},r.createElement("h2",{className:"h4"},Q("shareIntegrations")),r.createElement("p",{className:"mb-0"},Q("shareIntegrationsDescription")),r.createElement("div",{className:"mx-n2"},P?x.map((function(e,t){var n;return r.createElement("div",{key:t,className:"d-inline-block p-2 ".concat(W.toggleContainer)},r.createElement(V,{integration:e,onToggleIntegration:G,updateError:null!==(n=E[e.name])&&void 0!==n&&n,userCountryCode:I.data.countryCode}))})):r.createElement(B,{className:"d-inline-block p-2 ".concat(W.toggleContainer)})),D&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4 mt-3"},Q("playerIntegrations")),r.createElement("p",{className:"mb-0"},Q("playerIntegrationsDescription")),r.createElement("div",{className:"mx-n2"},P?M.map((function(e,t){var n;return r.createElement("div",{key:t,className:"d-inline-block p-2 ".concat(W.toggleContainer)},r.createElement(V,{integration:e,onToggleIntegration:G,updateError:null!==(n=E[e.name])&&void 0!==n&&n,userCountryCode:I.data.countryCode}))})):r.createElement(B,{className:"d-inline-block p-2 ".concat(W.toggleContainer)}))))}}}]);
2
+ //# sourceMappingURL=7178-ed74c33056-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/7178-ed74c33056-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/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","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/components/integration-toggle/integration-toggle.scss","file:///app/packages/projects/lite/src/apps/settings/components/integration-toggle/IntegrationToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/partial-loading/partial-integration-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/partial-loading/PartialIntegrationSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/integration-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/IntegrationSettingsView.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});","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097'\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\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 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}","// extracted by mini-css-extract-plugin\nexport default {\"integrationIcon\":\"bqV8U\",\"googleClassroomIconContainer\":\"Rl7gP\",\"viviIconContainer\":\"qCgv4\",\"appleTvIconContainer\":\"ASg8C\",\"headerContainer\":\"GmPjw\",\"statusIndicator\":\"_2Tuy\",\"connectedStatusIndicator\":\"Q9uug\",\"notConnectedStatusIndicator\":\"kn43h\",\"reconnectStatusIndicator\":\"Kx6Vr\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { IntegrationStatus } from 'libs/shared/enums/IntegrationStatus';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { Integration } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './integration-toggle.scss';\n\nconst namespace = 'settings.integrationToggle';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype IntegrationLookup = {\n [key in IntegrationId]?: string;\n}\n\nconst IntegrationIconImageUrls: IntegrationLookup = {\n [IntegrationId.GoogleClassroom]: ImageUrls.Integrations.GoogleClassroom,\n [IntegrationId.MicrosoftTeams]: ImageUrls.Integrations.MicrosoftTeams,\n [IntegrationId.Vivi]: ImageUrls.Integrations.Vivi,\n [IntegrationId.AppleTv]: ImageUrls.Integrations.AppleTV\n};\n\nconst IconContainerClassNames: IntegrationLookup = {\n [IntegrationId.GoogleClassroom]: styles.googleClassroomIconContainer,\n [IntegrationId.Vivi]: styles.viviIconContainer,\n [IntegrationId.AppleTv]: styles.appleTvIconContainer\n};\n\nconst IntregrationArticles = {\n [IntegrationId.GoogleClassroom]: LiteSupportArticle.Integrations,\n [IntegrationId.MicrosoftTeams]: LiteSupportArticle.Integrations,\n [IntegrationId.Vivi]: LiteSupportArticle.ViviIntegration,\n [IntegrationId.AppleTv]: LiteSupportArticle.AppleTvIntegration\n};\n\ninterface IntegrationToggleProps {\n integration: Integration;\n onToggleIntegration: (integration: Integration, enable: boolean) => void;\n updateError: boolean;\n userCountryCode: CountryCode;\n}\n\nexport function IntegrationToggle(props: IntegrationToggleProps): JSX.Element {\n // Store enabled in local state so the toggle updated immediately\n const [ enabled, setEnabled ] = React.useState(props.integration.enabled);\n\n /**\n * Resync enabled with api value if there is an error\n */\n React.useEffect(() => {\n setEnabled(props.integration.enabled);\n }, [props.updateError]);\n\n const imageUrl = IntegrationIconImageUrls[props.integration.id];\n const containerClassName = IconContainerClassNames[props.integration.id] ?? '';\n const status = props.integration.status;\n const disabled = status && status !== IntegrationStatus.Connected;\n\n return (\n <div className='border rounded-3'>\n <div className={`position-relative d-flex align-items-center justify-content-center py-4 rounded-top ${containerClassName}`}>\n <IntegrationToggleHeader\n status={status}\n configureTooltip={props.integration.configureTooltip}\n configureAppLink={props.integration.configureAppLink}\n />\n <img src={imageUrl} className={styles.integrationIcon} />\n </div>\n <div className='border-top p-2'>\n <div className='d-flex align-items-center justify-content-between'>\n <span className='me-2'>\n {props.integration.name}\n </span>\n <ToggleSwitch\n onClick={() => {\n props.onToggleIntegration(props.integration, !enabled);\n setEnabled(!enabled);\n }}\n on={enabled}\n disabled={disabled}\n />\n </div>\n <div>\n <a\n href={ArticleHelper.getLiteArticle(IntregrationArticles[props.integration.id])}\n target='_blank'\n className='text-info'\n >\n {getPhrase('learnMore')}\n </a>\n </div>\n </div>\n </div>\n );\n}\n\ntype StatusLookup = {\n [key in IntegrationStatus]?: string;\n}\n\nconst StatusIndicatorClassNames: StatusLookup = {\n [IntegrationStatus.Connected]: styles.connectedStatusIndicator,\n [IntegrationStatus.NotConnected]: styles.notConnectedStatusIndicator,\n [IntegrationStatus.Reconnect]: styles.reconnectStatusIndicator\n};\n\nconst StatusIndicatorLabels: StatusLookup = {\n [IntegrationStatus.Connected]: getPhrase('connectedStatusLabel'),\n [IntegrationStatus.NotConnected]: getPhrase('notConnectedStatusLabel'),\n [IntegrationStatus.Reconnect]: getPhrase('reconnectStatusLabel')\n};\n\ninterface IntegrationToggleHeaderProps {\n status?: IntegrationStatus;\n configureTooltip?: string;\n configureAppLink?: Core.AppLink;\n}\n\nfunction IntegrationToggleHeader({\n status,\n configureTooltip,\n configureAppLink\n}: IntegrationToggleHeaderProps): JSX.Element {\n function onClickConfigure(e: React.MouseEvent): void {\n e.stopPropagation();\n e.preventDefault();\n\n Core.AppLinkHelper.trigger(configureAppLink);\n }\n\n const statusIndicatorClassName = StatusIndicatorClassNames[status] ?? '';\n const statusLabel = StatusIndicatorLabels[status] ?? '';\n\n return (\n <div className={`d-flex justify-content-between align-items-top position-absolute ps-2 pt-1 pe-1 ${styles.headerContainer}`}>\n <div className='d-flex flex-row align-items-center'>\n { statusIndicatorClassName && <span className={`inline-block ${styles.statusIndicator} ${statusIndicatorClassName}`} /> }\n { statusLabel && <span className={`ms-1 text-white`}>{statusLabel}</span> }\n </div>\n { configureAppLink && (\n <DivButton className={`cursor-pointer text-white`} onClick={onClickConfigure}>\n <SvgContainer\n size={SvgContainerSize.Medium}\n svgName={cvSvgLibrary.Cog}\n title={configureTooltip}\n tooltipPlacement='top'\n tooltipSpanHack\n />\n </DivButton>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialToggle\":\"p5int\"};","import React from 'react';\n\nimport styles from './partial-integration-settings.scss';\n\ninterface PartialIntegrationToggleProps {\n className: string;\n}\n\nfunction PartialIntegrationToggle(props: PartialIntegrationToggleProps): JSX.Element {\n return (\n <div className={props.className}>\n <div className={`border rounded-3 partial-loading-background ${styles.partialToggle}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\ninterface PartialIntegrationSettingsProps {\n className: string;\n}\n\nexport function PartialIntegrationSettings(props: PartialIntegrationSettingsProps): JSX.Element {\n return (\n <>\n <PartialIntegrationToggle className={props.className} />\n <PartialIntegrationToggle className={props.className} />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"toggleContainer\":\"roVyL\"};","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 { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { IntegrationStatus } from 'libs/shared/enums/IntegrationStatus';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\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, Integration } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { IntegrationToggle } from 'apps/settings/components/integration-toggle/IntegrationToggle';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nimport { PartialIntegrationSettings } from './partial-loading/PartialIntegrationSettings';\n\nimport styles from './integration-settings.scss';\n\nconst namespace = 'settings.integrationSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst viviTooltipPhrases = {\n [IntegrationStatus.Connected]: getPhrase('viviConnectedStatusTooltip'),\n [IntegrationStatus.NotConnected]: getPhrase('viviNotConnectedStatusTooltip'),\n [IntegrationStatus.Reconnect]: getPhrase('viviReconnectStatusTooltip')\n};\n\nexport function IntegrationSettingsView(): JSX.Element {\n /**\n * IntegrationToggle will blindly update the UI before the api call is returned so we need a way\n * to let if know if there is an error updating the setting\n */\n const [ updateErrors, setUpdateErrors ] = React.useState<{ [integrationName: string ]: boolean}>({});\n\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const viviStatus = Flight.useBasicFetch<IntegrationStatus>(\n currentUser.data?.isAuthenticated && PlayerIntegrationsRequests.getViviIntegrationStatus()\n );\n\n const {\n shareToGoogleClassroom,\n shareToMicrosoftTeams,\n hasEnabledAppleTvPlayback,\n hasEnabledViviPlayback,\n updateSetting,\n isLoadingSettings\n } = useSettings(LocationContext.Settings);\n\n const shareIntegrations = IntegrationHelper.getShareIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams);\n\n const playerIntegrations = [\n {\n id: IntegrationId.AppleTv,\n name: getPhrase('appleTv'),\n settingName: SettingName.HasEnabledAppleTvPlayback,\n configureAppLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.APPLE_TV\n },\n configureTooltip: getPhrase('appleTvTooltip'),\n enabled: hasEnabledAppleTvPlayback\n },\n {\n id: IntegrationId.Vivi,\n name: getPhrase('vivi'),\n settingName: SettingName.HasEnabledViviPlayback,\n configureAppLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.VIVI\n },\n configureTooltip: viviTooltipPhrases[viviStatus.data] ?? '',\n enabled: hasEnabledViviPlayback,\n status: viviStatus.data\n }\n ];\n\n const dataLoaded = !!currentUser.data &&\n !!config.data &&\n viviStatus.hasCompleted &&\n !isLoadingSettings;\n\n const showPlayerIntegrations = playerIntegrations.length > 0;\n\n function onToggleIntegration(integration: Integration, enable: boolean): void {\n const successPhraseKey = enable ? 'enableIntegrationSuccess' : 'disableIntegrationSuccess';\n const errorPhraseKey = enable ? 'enableIntegrationError' : 'disableIntegrationError';\n\n function success(): void {\n alerts.success(getPhrase(successPhraseKey, { integrationName: integration.name, escapeText: true })),\n setUpdateErrors(errors => ({ ...errors, [integration.name]: false }));\n }\n\n function error(): void {\n alerts.error(getPhrase(errorPhraseKey, { integrationName: integration.name, escapeText: true })),\n setUpdateErrors(errors => ({ ...errors, [integration.name]: true }));\n }\n\n const newSetting = {\n name: integration.settingName,\n value: enable,\n kind: SettingKind.Temporary\n };\n\n updateSetting(currentUser.data.customerId, newSetting, success, error);\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('integrations')}\n breadcrumbs={[getPhrase('integrations')]}\n >\n <h2 className='h4'>{getPhrase('shareIntegrations')}</h2>\n <p className='mb-0'>{getPhrase('shareIntegrationsDescription')}</p>\n <div className='mx-n2'>\n {dataLoaded\n ? shareIntegrations.map((integration, index) => (\n <div key={index} className={`d-inline-block p-2 ${styles.toggleContainer}`}>\n <IntegrationToggle\n integration={integration}\n onToggleIntegration={onToggleIntegration}\n updateError={updateErrors[integration.name] ?? false}\n userCountryCode={currentUser.data.countryCode}\n />\n </div>\n ))\n : <PartialIntegrationSettings className={`d-inline-block p-2 ${styles.toggleContainer}`} />\n }\n </div>\n\n {showPlayerIntegrations && (\n <>\n <h2 className='h4 mt-3'>{getPhrase('playerIntegrations')}</h2>\n <p className='mb-0'>{getPhrase('playerIntegrationsDescription')}</p>\n <div className='mx-n2'>\n {dataLoaded\n ? playerIntegrations.map((integration, index) => (\n <div key={index} className={`d-inline-block p-2 ${styles.toggleContainer}`}>\n <IntegrationToggle\n integration={integration}\n onToggleIntegration={onToggleIntegration}\n updateError={updateErrors[integration.name] ?? false}\n userCountryCode={currentUser.data.countryCode}\n />\n </div>\n ))\n : <PartialIntegrationSettings className={`d-inline-block p-2 ${styles.toggleContainer}`} />\n }\n </div>\n </>\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","IntegrationId","OnlineSupportArticle","LiteSupportArticle","IntegrationHelper","getShareIntegrations","googleClassroomSetting","msftTeamsSetting","id","enabled","settingName","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","LanguageService","IntegrationIconImageUrls","ImageUrls","IconContainerClassNames","IntregrationArticles","IntegrationToggle","integration","setEnabled","updateError","imageUrl","containerClassName","status","disabled","IntegrationStatus","I","IntegrationToggleHeader","configureTooltip","configureAppLink","src","ToggleSwitch","onToggleIntegration","on","href","ArticleHelper","target","StatusIndicatorClassNames","StatusIndicatorLabels","statusIndicatorClassName","statusLabel","DivButton","e","stopPropagation","preventDefault","SvgContainer","title","tooltipPlacement","tooltipSpanHack","PartialIntegrationToggle","PartialIntegrationSettings","viviTooltipPhrases","IntegrationSettingsView","updateErrors","setUpdateErrors","alerts","currentUser","UserRequests","config","ConfigRequests","viviStatus","data","isAuthenticated","PlayerIntegrationsRequests","useSettings","shareToGoogleClassroom","shareToMicrosoftTeams","hasEnabledAppleTvPlayback","hasEnabledViviPlayback","updateSetting","isLoadingSettings","shareIntegrations","playerIntegrations","SettingName","dataLoaded","hasCompleted","showPlayerIntegrations","enable","successPhraseKey","errorPhraseKey","newSetting","value","kind","SettingKind","customerId","success","integrationName","escapeText","errors","error","index","userCountryCode","countryCode"],"sourceRoot":""}