@clickview/streamable-learning 0.35.0 → 0.36.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/bundles.json +2 -2
  61. package/dist/css/B-attovs.chunk.css +9 -0
  62. package/dist/css/B1NucFMn.chunk.css +1 -0
  63. package/dist/css/BPdg7JW4.chunk.css +1 -0
  64. package/dist/css/BPrUSCaY.chunk.css +1 -0
  65. package/dist/css/BR0fUt9D.chunk.css +1 -0
  66. package/dist/css/BhYm6SRm.chunk.css +1 -0
  67. package/dist/css/BiRz4h1c.chunk.css +1 -0
  68. package/dist/css/Bq1ChJn4.chunk.css +1 -0
  69. package/dist/css/Bt85j9js.chunk.css +1 -0
  70. package/dist/css/BuYrqi9E.chunk.css +1 -0
  71. package/dist/css/BugV1Bpa.chunk.css +1 -0
  72. package/dist/css/BuuVPl7n.chunk.css +1 -0
  73. package/dist/css/C1NkrNqQ.chunk.css +1 -0
  74. package/dist/css/C1qv5jz5.chunk.css +1 -0
  75. package/dist/css/C7XoyEPr.chunk.css +1 -0
  76. package/dist/css/C7_MDu56.chunk.css +1 -0
  77. package/dist/css/CC5F5C8O.chunk.css +1 -0
  78. package/dist/css/CChSC6Ta.chunk.css +1 -0
  79. package/dist/css/CCsCPLDG.chunk.css +1 -0
  80. package/dist/css/CD1qrI1T.chunk.css +1 -0
  81. package/dist/css/CKqvCBj4.chunk.css +1 -0
  82. package/dist/css/CLZ0Ycds.chunk.css +1 -0
  83. package/dist/css/CO7M4rZW.chunk.css +1 -0
  84. package/dist/css/CY0yvCW4.chunk.css +1 -0
  85. package/dist/css/CYGsw8FT.chunk.css +1 -0
  86. package/dist/css/Cbi3KYBa.chunk.css +1 -0
  87. package/dist/css/CgWQu_Ss.chunk.css +1 -0
  88. package/dist/css/CliS8Q8r.chunk.css +1 -0
  89. package/dist/css/D-kQKsZN.chunk.css +1 -0
  90. package/dist/css/D2NwUVrK.chunk.css +1 -0
  91. package/dist/css/D4g1IoUU.chunk.css +1 -0
  92. package/dist/css/DBgpcO3T.chunk.css +1 -0
  93. package/dist/css/DDnpOnVB.chunk.css +1 -0
  94. package/dist/css/DZJSONGP.chunk.css +1 -0
  95. package/dist/css/DeAfaPiD.chunk.css +1 -0
  96. package/dist/css/Dj731zLm.chunk.css +1 -0
  97. package/dist/css/DjPPxa0A.chunk.css +1 -0
  98. package/dist/css/DlOtoSz0.chunk.css +1 -0
  99. package/dist/css/DwduQat7.chunk.css +1 -0
  100. package/dist/css/Dzuu2GTx.chunk.css +1 -0
  101. package/dist/css/JAvsJreH.chunk.css +1 -0
  102. package/dist/css/NKlFYVOc.chunk.css +1 -0
  103. package/dist/css/VZd8qGtK.chunk.css +1 -0
  104. package/dist/css/Y7U--2na.chunk.css +1 -0
  105. package/dist/css/ir3IcK_l.chunk.css +1 -0
  106. package/dist/css/jbMisi9r.chunk.css +1 -0
  107. package/dist/css/kS5aDtIJ.chunk.css +1 -0
  108. package/dist/css/mqCL1o7m.chunk.css +1 -0
  109. package/dist/css/qZzkUeZk.chunk.css +1 -0
  110. package/dist/css/sC_H3yXE.chunk.css +1 -0
  111. package/dist/css/wR_6C_NV.chunk.css +1 -0
  112. package/dist/en.json +1 -0
  113. package/dist/scripts/38Gc6FvJ.chunk.js +2 -0
  114. package/dist/scripts/38Gc6FvJ.chunk.js.map +1 -0
  115. package/dist/scripts/9vP26Hjl.chunk.js +2 -0
  116. package/dist/scripts/9vP26Hjl.chunk.js.map +1 -0
  117. package/dist/scripts/B-YTLo4E.chunk.js +2 -0
  118. package/dist/scripts/B-YTLo4E.chunk.js.map +1 -0
  119. package/dist/scripts/B2rqAGbQ.chunk.js +2 -0
  120. package/dist/scripts/B2rqAGbQ.chunk.js.map +1 -0
  121. package/dist/scripts/B46nd_gM.chunk.js +2 -0
  122. package/dist/scripts/B46nd_gM.chunk.js.map +1 -0
  123. package/dist/scripts/B61dxODs.chunk.js +2 -0
  124. package/dist/scripts/B61dxODs.chunk.js.map +1 -0
  125. package/dist/scripts/B928Y1m-.chunk.js +2 -0
  126. package/dist/scripts/B928Y1m-.chunk.js.map +1 -0
  127. package/dist/scripts/BBnDr_iy.chunk.js +2 -0
  128. package/dist/scripts/BBnDr_iy.chunk.js.map +1 -0
  129. package/dist/scripts/BDwX0xO5.chunk.js +7 -0
  130. package/dist/scripts/BDwX0xO5.chunk.js.map +1 -0
  131. package/dist/scripts/BFcg4phV.chunk.js +15 -0
  132. package/dist/scripts/BFcg4phV.chunk.js.map +1 -0
  133. package/dist/scripts/BOH3SvVi.chunk.js +2 -0
  134. package/dist/scripts/BOH3SvVi.chunk.js.map +1 -0
  135. package/dist/scripts/BPzvNgkA.chunk.js +10 -0
  136. package/dist/scripts/BPzvNgkA.chunk.js.map +1 -0
  137. package/dist/scripts/BWkYFXR0.chunk.js +2 -0
  138. package/dist/scripts/BWkYFXR0.chunk.js.map +1 -0
  139. package/dist/scripts/BYrL8Bl0.chunk.js +2 -0
  140. package/dist/scripts/BYrL8Bl0.chunk.js.map +1 -0
  141. package/dist/scripts/BaMuTXqa.chunk.js +2 -0
  142. package/dist/scripts/BaMuTXqa.chunk.js.map +1 -0
  143. package/dist/scripts/Bbj3u3zY.chunk.js +2 -0
  144. package/dist/scripts/Bbj3u3zY.chunk.js.map +1 -0
  145. package/dist/scripts/Bd-gJLT1.chunk.js +2 -0
  146. package/dist/scripts/Bd-gJLT1.chunk.js.map +1 -0
  147. package/dist/scripts/BdHxGaRy.chunk.js +2 -0
  148. package/dist/scripts/BdHxGaRy.chunk.js.map +1 -0
  149. package/dist/scripts/BdPgUz8g.chunk.js +2 -0
  150. package/dist/scripts/BdPgUz8g.chunk.js.map +1 -0
  151. package/dist/scripts/Be6BKGLG.chunk.js +356 -0
  152. package/dist/scripts/Be6BKGLG.chunk.js.map +1 -0
  153. package/dist/scripts/BfK6q73t.chunk.js +8 -0
  154. package/dist/scripts/BfK6q73t.chunk.js.map +1 -0
  155. package/dist/scripts/Bg1w511R.chunk.js +2 -0
  156. package/dist/scripts/Bg1w511R.chunk.js.map +1 -0
  157. package/dist/scripts/Bg6K2hsA.chunk.js +3 -0
  158. package/dist/scripts/Bg6K2hsA.chunk.js.map +1 -0
  159. package/dist/scripts/BiLpxxSD.chunk.js +2 -0
  160. package/dist/scripts/BiLpxxSD.chunk.js.map +1 -0
  161. package/dist/scripts/BmN5JsPi.chunk.js +5 -0
  162. package/dist/scripts/BmN5JsPi.chunk.js.map +1 -0
  163. package/dist/scripts/BnSh6tRF.chunk.js +2 -0
  164. package/dist/scripts/BnSh6tRF.chunk.js.map +1 -0
  165. package/dist/scripts/Bnt14Hw8.chunk.js +2 -0
  166. package/dist/scripts/Bnt14Hw8.chunk.js.map +1 -0
  167. package/dist/scripts/BpRVTpnA.chunk.js +8 -0
  168. package/dist/scripts/BpRVTpnA.chunk.js.map +1 -0
  169. package/dist/scripts/BsoISj2P.chunk.js +2 -0
  170. package/dist/scripts/BsoISj2P.chunk.js.map +1 -0
  171. package/dist/scripts/BuNZOfIz.chunk.js +2 -0
  172. package/dist/scripts/BuNZOfIz.chunk.js.map +1 -0
  173. package/dist/scripts/BvQxdtl3.chunk.js +2 -0
  174. package/dist/scripts/BvQxdtl3.chunk.js.map +1 -0
  175. package/dist/scripts/C2zcSUEr.chunk.js +2 -0
  176. package/dist/scripts/C2zcSUEr.chunk.js.map +1 -0
  177. package/dist/scripts/C35NlkUr.chunk.js +2 -0
  178. package/dist/scripts/C35NlkUr.chunk.js.map +1 -0
  179. package/dist/scripts/C5Fq7Tf-.chunk.js +2 -0
  180. package/dist/scripts/C5Fq7Tf-.chunk.js.map +1 -0
  181. package/dist/scripts/CD-ZU1Sa.chunk.js +2 -0
  182. package/dist/scripts/CD-ZU1Sa.chunk.js.map +1 -0
  183. package/dist/scripts/CEmtkty-.chunk.js +2 -0
  184. package/dist/scripts/CEmtkty-.chunk.js.map +1 -0
  185. package/dist/scripts/CO1Up6zQ.chunk.js +2 -0
  186. package/dist/scripts/CO1Up6zQ.chunk.js.map +1 -0
  187. package/dist/scripts/CPNjAJN5.chunk.js +2 -0
  188. package/dist/scripts/CPNjAJN5.chunk.js.map +1 -0
  189. package/dist/scripts/CPXlV0fg.chunk.js +2 -0
  190. package/dist/scripts/CPXlV0fg.chunk.js.map +1 -0
  191. package/dist/scripts/CQJIB_e-.chunk.js +2 -0
  192. package/dist/scripts/CQJIB_e-.chunk.js.map +1 -0
  193. package/dist/scripts/CRusuLqR.chunk.js +2 -0
  194. package/dist/scripts/CRusuLqR.chunk.js.map +1 -0
  195. package/dist/scripts/CTWahyAB.chunk.js +2 -0
  196. package/dist/scripts/CTWahyAB.chunk.js.map +1 -0
  197. package/dist/scripts/CU5Dd7rS.chunk.js +2 -0
  198. package/dist/scripts/CU5Dd7rS.chunk.js.map +1 -0
  199. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  200. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  201. package/dist/scripts/CX-Bc0hf.chunk.js +2 -0
  202. package/dist/scripts/CX-Bc0hf.chunk.js.map +1 -0
  203. package/dist/scripts/CY1om5lx.chunk.js +2 -0
  204. package/dist/scripts/CY1om5lx.chunk.js.map +1 -0
  205. package/dist/scripts/C_79jeAr.chunk.js +2 -0
  206. package/dist/scripts/C_79jeAr.chunk.js.map +1 -0
  207. package/dist/scripts/C_pobyVf.chunk.js +3 -0
  208. package/dist/scripts/C_pobyVf.chunk.js.map +1 -0
  209. package/dist/scripts/Cgf5lDwO.chunk.js +2 -0
  210. package/dist/scripts/Cgf5lDwO.chunk.js.map +1 -0
  211. package/dist/scripts/Ci9wGu6N.chunk.js +2 -0
  212. package/dist/scripts/Ci9wGu6N.chunk.js.map +1 -0
  213. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  214. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  215. package/dist/scripts/Cp-yDIHE.chunk.js +2 -0
  216. package/dist/scripts/Cp-yDIHE.chunk.js.map +1 -0
  217. package/dist/scripts/CqWRz_Vd.chunk.js +2 -0
  218. package/dist/scripts/CqWRz_Vd.chunk.js.map +1 -0
  219. package/dist/scripts/Cs-XAmfP.chunk.js +2 -0
  220. package/dist/scripts/Cs-XAmfP.chunk.js.map +1 -0
  221. package/dist/scripts/CsxsnXoH.chunk.js +2 -0
  222. package/dist/scripts/CsxsnXoH.chunk.js.map +1 -0
  223. package/dist/scripts/CvuMDF0y.chunk.js +2 -0
  224. package/dist/scripts/CvuMDF0y.chunk.js.map +1 -0
  225. package/dist/scripts/CwRpHtAf.chunk.js +2 -0
  226. package/dist/scripts/CwRpHtAf.chunk.js.map +1 -0
  227. package/dist/scripts/D4OCofAF.chunk.js +2 -0
  228. package/dist/scripts/D4OCofAF.chunk.js.map +1 -0
  229. package/dist/scripts/D4x4hAdA.chunk.js +2 -0
  230. package/dist/scripts/D4x4hAdA.chunk.js.map +1 -0
  231. package/dist/scripts/DBaknZA7.chunk.js +2 -0
  232. package/dist/scripts/DBaknZA7.chunk.js.map +1 -0
  233. package/dist/scripts/DBdD19pY.chunk.js +53 -0
  234. package/dist/scripts/DBdD19pY.chunk.js.map +1 -0
  235. package/dist/scripts/DELBynwO.chunk.js +2 -0
  236. package/dist/scripts/DELBynwO.chunk.js.map +1 -0
  237. package/dist/scripts/DEixuHfi.chunk.js +2 -0
  238. package/dist/scripts/DEixuHfi.chunk.js.map +1 -0
  239. package/dist/scripts/DFhkO_lZ.chunk.js +2 -0
  240. package/dist/scripts/DFhkO_lZ.chunk.js.map +1 -0
  241. package/dist/scripts/DIIFVn0p.chunk.js +2 -0
  242. package/dist/scripts/DIIFVn0p.chunk.js.map +1 -0
  243. package/dist/scripts/DIhfGjAK.chunk.js +2 -0
  244. package/dist/scripts/DIhfGjAK.chunk.js.map +1 -0
  245. package/dist/scripts/DK1p1ffZ.chunk.js +2 -0
  246. package/dist/scripts/DK1p1ffZ.chunk.js.map +1 -0
  247. package/dist/scripts/DK6BRHnl.chunk.js +2 -0
  248. package/dist/scripts/DK6BRHnl.chunk.js.map +1 -0
  249. package/dist/scripts/DNbkIXc2.chunk.js +2 -0
  250. package/dist/scripts/DNbkIXc2.chunk.js.map +1 -0
  251. package/dist/scripts/DRmZj7Fw.chunk.js +2 -0
  252. package/dist/scripts/DRmZj7Fw.chunk.js.map +1 -0
  253. package/dist/scripts/DTcDjqUi.chunk.js +8 -0
  254. package/dist/scripts/DTcDjqUi.chunk.js.map +1 -0
  255. package/dist/scripts/DVmtgkhY.chunk.js +2 -0
  256. package/dist/scripts/DVmtgkhY.chunk.js.map +1 -0
  257. package/dist/scripts/DWkg1qc2.chunk.js +2 -0
  258. package/dist/scripts/DWkg1qc2.chunk.js.map +1 -0
  259. package/dist/scripts/D_nzH8Cw.chunk.js +2 -0
  260. package/dist/scripts/D_nzH8Cw.chunk.js.map +1 -0
  261. package/dist/scripts/DaJTPRJr.chunk.js +2 -0
  262. package/dist/scripts/DaJTPRJr.chunk.js.map +1 -0
  263. package/dist/scripts/Dal4C0kV.chunk.js +2 -0
  264. package/dist/scripts/Dal4C0kV.chunk.js.map +1 -0
  265. package/dist/scripts/DecSY6Xq.chunk.js +2 -0
  266. package/dist/scripts/DecSY6Xq.chunk.js.map +1 -0
  267. package/dist/scripts/DgL-ti6b.chunk.js +2 -0
  268. package/dist/scripts/DgL-ti6b.chunk.js.map +1 -0
  269. package/dist/scripts/Dhn0D6IV.chunk.js +2 -0
  270. package/dist/scripts/Dhn0D6IV.chunk.js.map +1 -0
  271. package/dist/scripts/DuidBpWd.chunk.js +2 -0
  272. package/dist/scripts/DuidBpWd.chunk.js.map +1 -0
  273. package/dist/scripts/DvDdiDQN.chunk.js +7 -0
  274. package/dist/scripts/DvDdiDQN.chunk.js.map +1 -0
  275. package/dist/scripts/Dx9ncX-C.chunk.js +2 -0
  276. package/dist/scripts/Dx9ncX-C.chunk.js.map +1 -0
  277. package/dist/scripts/Dxt3JwJz.chunk.js +2 -0
  278. package/dist/scripts/Dxt3JwJz.chunk.js.map +1 -0
  279. package/dist/scripts/Dy57waqb.chunk.js +2 -0
  280. package/dist/scripts/Dy57waqb.chunk.js.map +1 -0
  281. package/dist/scripts/DzLh2mnb.chunk.js +2 -0
  282. package/dist/scripts/DzLh2mnb.chunk.js.map +1 -0
  283. package/dist/scripts/F-K8Bwdk.chunk.js +2 -0
  284. package/dist/scripts/F-K8Bwdk.chunk.js.map +1 -0
  285. package/dist/scripts/G4u5okSS.chunk.js +2 -0
  286. package/dist/scripts/G4u5okSS.chunk.js.map +1 -0
  287. package/dist/scripts/KAizYpNf.chunk.js +2 -0
  288. package/dist/scripts/KAizYpNf.chunk.js.map +1 -0
  289. package/dist/scripts/LIBRZSqN.chunk.js +8 -0
  290. package/dist/scripts/LIBRZSqN.chunk.js.map +1 -0
  291. package/dist/scripts/LgZBXsgq.chunk.js +2 -0
  292. package/dist/scripts/LgZBXsgq.chunk.js.map +1 -0
  293. package/dist/scripts/QlJI4d4R.chunk.js +2 -0
  294. package/dist/scripts/QlJI4d4R.chunk.js.map +1 -0
  295. package/dist/scripts/ShERxFU5.chunk.js +2 -0
  296. package/dist/scripts/ShERxFU5.chunk.js.map +1 -0
  297. package/dist/scripts/Ynb9IAgu.chunk.js +2 -0
  298. package/dist/scripts/Ynb9IAgu.chunk.js.map +1 -0
  299. package/dist/scripts/_8CvUiOV.chunk.js +2 -0
  300. package/dist/scripts/_8CvUiOV.chunk.js.map +1 -0
  301. package/dist/scripts/aXDrx9_z.chunk.js +6 -0
  302. package/dist/scripts/aXDrx9_z.chunk.js.map +1 -0
  303. package/dist/scripts/app-DiXzpOyg.js +220 -0
  304. package/dist/scripts/app-DiXzpOyg.js.map +1 -0
  305. package/dist/scripts/bww2eGbI.chunk.js +2 -0
  306. package/dist/scripts/bww2eGbI.chunk.js.map +1 -0
  307. package/dist/scripts/cvX-F_mx.chunk.js +2 -0
  308. package/dist/scripts/cvX-F_mx.chunk.js.map +1 -0
  309. package/dist/scripts/gtdeja1H.chunk.js +2 -0
  310. package/dist/scripts/gtdeja1H.chunk.js.map +1 -0
  311. package/dist/scripts/m9wd_474.chunk.js +2 -0
  312. package/dist/scripts/m9wd_474.chunk.js.map +1 -0
  313. package/dist/scripts/nay4aGaa.chunk.js +2 -0
  314. package/dist/scripts/nay4aGaa.chunk.js.map +1 -0
  315. package/dist/scripts/pkzD5BEm.chunk.js +2 -0
  316. package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
  317. package/dist/scripts/qO6ZefON.chunk.js +2 -0
  318. package/dist/scripts/qO6ZefON.chunk.js.map +1 -0
  319. package/dist/scripts/s4utqqzH.chunk.js +2 -0
  320. package/dist/scripts/s4utqqzH.chunk.js.map +1 -0
  321. package/dist/scripts/sxyRyCzh.chunk.js +2 -0
  322. package/dist/scripts/sxyRyCzh.chunk.js.map +1 -0
  323. package/dist/scripts/tzNty_oG.chunk.js +2 -0
  324. package/dist/scripts/tzNty_oG.chunk.js.map +1 -0
  325. package/dist/scripts/vjyJbQe4.chunk.js +2 -0
  326. package/dist/scripts/vjyJbQe4.chunk.js.map +1 -0
  327. package/dist/scripts/vuoBilPQ.chunk.js +2 -0
  328. package/dist/scripts/vuoBilPQ.chunk.js.map +1 -0
  329. package/dist/scripts/vwgUbn2Z.chunk.js +2 -0
  330. package/dist/scripts/vwgUbn2Z.chunk.js.map +1 -0
  331. package/dist/scripts/wOGv44_K.chunk.js +2 -0
  332. package/dist/scripts/wOGv44_K.chunk.js.map +1 -0
  333. package/dist/scripts/xbvkqJGe.chunk.js +2 -0
  334. package/dist/scripts/xbvkqJGe.chunk.js.map +1 -0
  335. package/dist/scripts/xywWSa0t.chunk.js +2 -0
  336. package/dist/scripts/xywWSa0t.chunk.js.map +1 -0
  337. package/dist/scripts/zUz4ZfV2.chunk.js +2 -0
  338. package/dist/scripts/zUz4ZfV2.chunk.js.map +1 -0
  339. package/package.json +5 -3
  340. package/typings/utils/imports.d.ts +2 -1
  341. package/vite.config.ts +6 -0
  342. package/dist/css/103-streamable-learning-5060b6cda5.chunk.css +0 -7
  343. package/dist/css/1269-streamable-learning-a12c4ebc99.chunk.css +0 -2
  344. package/dist/css/1457-streamable-learning-c8c8b3b9b1.chunk.css +0 -50
  345. package/dist/css/2334-streamable-learning-de03ae073a.chunk.css +0 -2
  346. package/dist/css/3322-streamable-learning-510e1aa3f3.chunk.css +0 -34
  347. package/dist/css/3838-streamable-learning-da10685fe8.chunk.css +0 -22
  348. package/dist/css/4254-streamable-learning-e493f4a027.chunk.css +0 -2
  349. package/dist/css/4607-streamable-learning-2605302fc2.chunk.css +0 -90
  350. package/dist/css/4772-streamable-learning-f83b838d71.chunk.css +0 -9
  351. package/dist/css/5003-streamable-learning-b38d2ddbbe.chunk.css +0 -98
  352. package/dist/css/5565-streamable-learning-0caae3809b.chunk.css +0 -13
  353. package/dist/css/6017-streamable-learning-098a205d01.chunk.css +0 -6
  354. package/dist/css/6356-streamable-learning-8c5b220bf6.chunk.css +0 -1
  355. package/dist/css/6987-streamable-learning-8f682301c6.chunk.css +0 -1
  356. package/dist/css/7317-streamable-learning-b5d226bbb6.chunk.css +0 -5
  357. package/dist/css/8058-streamable-learning-539cf7be18.chunk.css +0 -12
  358. package/dist/css/8294-streamable-learning-c797263ac2.chunk.css +0 -1
  359. package/dist/css/8496-streamable-learning-ce19f6ca52.chunk.css +0 -13
  360. package/dist/css/8601-streamable-learning-f525210660.chunk.css +0 -6
  361. package/dist/css/9514-streamable-learning-251703c6d1.chunk.css +0 -2
  362. package/dist/css/9766-streamable-learning-31650ffe5d.chunk.css +0 -8
  363. package/dist/css/9842-streamable-learning-24729103f7.chunk.css +0 -4
  364. package/dist/css/9899-streamable-learning-0338f8d2dc.chunk.css +0 -4
  365. package/dist/css/streamable-learning-dd0c1095d5.css +0 -23
  366. package/dist/languages/en.json +0 -1
  367. package/dist/scripts/103-aceced8961-streamable-learning.chunk.js +0 -1
  368. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js +0 -2
  369. package/dist/scripts/1097-680a971192-streamable-learning.chunk.js.LICENSE.txt +0 -105
  370. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js +0 -2
  371. package/dist/scripts/1269-2d0b903343-streamable-learning.chunk.js.LICENSE.txt +0 -1
  372. package/dist/scripts/1457-899f40d09a-streamable-learning.chunk.js +0 -1
  373. package/dist/scripts/1482-b1dd75897c-streamable-learning.chunk.js +0 -1
  374. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js +0 -2
  375. package/dist/scripts/1934-fc017df0da-streamable-learning.chunk.js.LICENSE.txt +0 -9
  376. package/dist/scripts/2042-d51622d63e-streamable-learning.chunk.js +0 -1
  377. package/dist/scripts/2087-eba9033b1c-streamable-learning.chunk.js +0 -1
  378. package/dist/scripts/2245-8cd3224e1b-streamable-learning.chunk.js +0 -1
  379. package/dist/scripts/2334-00b028191d-streamable-learning.chunk.js +0 -1
  380. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js +0 -2
  381. package/dist/scripts/2676-c842ec7e8d-streamable-learning.chunk.js.LICENSE.txt +0 -1
  382. package/dist/scripts/2877-5ffc9711f6-streamable-learning.chunk.js +0 -1
  383. package/dist/scripts/2911-2ec3a6600a-streamable-learning.chunk.js +0 -1
  384. package/dist/scripts/3057-731a8ca978-streamable-learning.chunk.js +0 -1
  385. package/dist/scripts/3093-efbcc927ea-streamable-learning.chunk.js +0 -1
  386. package/dist/scripts/3186-d1a6ccffde-streamable-learning.chunk.js +0 -1
  387. package/dist/scripts/3322-33c015dec9-streamable-learning.chunk.js +0 -1
  388. package/dist/scripts/3472-50ca92bde3-streamable-learning.chunk.js +0 -1
  389. package/dist/scripts/3838-4a38f33dc2-streamable-learning.chunk.js +0 -1
  390. package/dist/scripts/3941-2ef15ca9ac-streamable-learning.chunk.js +0 -1
  391. package/dist/scripts/4254-ef581b8105-streamable-learning.chunk.js +0 -1
  392. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js +0 -2
  393. package/dist/scripts/4607-a4edb06dba-streamable-learning.chunk.js.LICENSE.txt +0 -1
  394. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js +0 -2
  395. package/dist/scripts/4772-3cb280f959-streamable-learning.chunk.js.LICENSE.txt +0 -1
  396. package/dist/scripts/4951-df701c6a8d-streamable-learning.chunk.js +0 -1
  397. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js +0 -2
  398. package/dist/scripts/5003-7468a75d64-streamable-learning.chunk.js.LICENSE.txt +0 -1
  399. package/dist/scripts/5088-2e09e1ba6e-streamable-learning.chunk.js +0 -1
  400. package/dist/scripts/5173-a800a17d0d-streamable-learning.chunk.js +0 -1
  401. package/dist/scripts/5446-2cbe9f9d1b-streamable-learning.chunk.js +0 -1
  402. package/dist/scripts/5543-205aaa36a6-streamable-learning.chunk.js +0 -1
  403. package/dist/scripts/5565-224d86dc1b-streamable-learning.chunk.js +0 -1
  404. package/dist/scripts/578-2cc99f46f7-streamable-learning.chunk.js +0 -1
  405. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js +0 -2
  406. package/dist/scripts/6017-5bd6f9bf7a-streamable-learning.chunk.js.LICENSE.txt +0 -1
  407. package/dist/scripts/6356-eefa3ff22e-streamable-learning.chunk.js +0 -1
  408. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js +0 -2
  409. package/dist/scripts/6979-ef9a3931a2-streamable-learning.chunk.js.LICENSE.txt +0 -1
  410. package/dist/scripts/6987-e58de31cfe-streamable-learning.chunk.js +0 -1
  411. package/dist/scripts/7317-6b7186c85d-streamable-learning.chunk.js +0 -1
  412. package/dist/scripts/7347-772848ba8a-streamable-learning.chunk.js +0 -1
  413. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js +0 -2
  414. package/dist/scripts/7570-cd4f70ff52-streamable-learning.chunk.js.LICENSE.txt +0 -1
  415. package/dist/scripts/7904-96574373ca-streamable-learning.chunk.js +0 -1
  416. package/dist/scripts/7925-1e1cfa2a04-streamable-learning.chunk.js +0 -1
  417. package/dist/scripts/8058-51c4b442d6-streamable-learning.chunk.js +0 -1
  418. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js +0 -2
  419. package/dist/scripts/8126-9d09959b28-streamable-learning.chunk.js.LICENSE.txt +0 -60
  420. package/dist/scripts/8397-39ce77876d-streamable-learning.chunk.js +0 -1
  421. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js +0 -2
  422. package/dist/scripts/8496-1b2519f9fd-streamable-learning.chunk.js.LICENSE.txt +0 -1
  423. package/dist/scripts/8599-b74e1ab6e3-streamable-learning.chunk.js +0 -1
  424. package/dist/scripts/8601-37783cf18b-streamable-learning.chunk.js +0 -1
  425. package/dist/scripts/8819-2a50dd6a9b-streamable-learning.chunk.js +0 -1
  426. package/dist/scripts/8937-5103db88d8-streamable-learning.chunk.js +0 -1
  427. package/dist/scripts/9390-bbaf07ad0f-streamable-learning.chunk.js +0 -1
  428. package/dist/scripts/9514-a31ca9af06-streamable-learning.chunk.js +0 -1
  429. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js +0 -2
  430. package/dist/scripts/9766-48d72d9285-streamable-learning.chunk.js.LICENSE.txt +0 -1
  431. package/dist/scripts/9842-36d830ee87-streamable-learning.chunk.js +0 -1
  432. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js +0 -2
  433. package/dist/scripts/9899-f33e8f1d43-streamable-learning.chunk.js.LICENSE.txt +0 -1
  434. package/dist/scripts/bundle-de4d0d4897.min.js +0 -2
  435. package/dist/scripts/bundle-de4d0d4897.min.js.LICENSE.txt +0 -108
  436. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js +0 -2
  437. package/dist/scripts/pdf.worker.entry-a2092a6670.min.worker.js.LICENSE.txt +0 -21
@@ -0,0 +1,2 @@
1
+ import{c as h,g as A,ab as w,bs as p,bd as re,O as ae,bt as P,bf as G,at as N,aL as O,j as o,bu as U,bv as q,R as C,L as H,T as f,aB as Q,bw as se,a5 as te,bp as ne,a3 as ie,o as R,v as oe,aE as ue,bq as D,M as $,aK as M,h as Y,i as _,k as z}from"./app-DiXzpOyg.js";import{F as K}from"./9vP26Hjl.chunk.js";import{l as S,a as X,F as I}from"./aXDrx9_z.chunk.js";import{S as le}from"./BvQxdtl3.chunk.js";import{U as T,S as me}from"./CwRpHtAf.chunk.js";import"./CW7x8M-z.chunk.js";import"./C35NlkUr.chunk.js";import"./Dx9ncX-C.chunk.js";import"./DecSY6Xq.chunk.js";import"./CPXlV0fg.chunk.js";import"./BuNZOfIz.chunk.js";var t=(e=>(e.Ok="Ok",e.UsernameRequired="UsernameRequired",e.EmailRequired="EmailRequired",e.FirstnameRequired="FirstnameRequired",e.SurnameRequired="SurnameRequired",e.YearGroupRequired="YearGroupRequired",e.EmailAlreadyExisted="EmailAlreadyExisted",e.UsernameAlreadyExisted="UsernameAlreadyExisted",e.UserTypeRequired="UserTypeRequired",e.MasterYearGroupRequired="MasterYearGroupRequired",e.EmptyUserEntity="EmptyUserEntity",e.CustomerIdRequired="CustomerIdRequired",e.CustomerNotFoundInOnline="CustomerNotFoundInOnline",e.EmailTooLong="EmailTooLong",e.UsernameTooLong="UsernameTooLong",e.FirstnameTooLong="FirstnameTooLong",e.SurnameTooLong="SurnameTooLong",e.EmailInvalid="EmailInvalid",e.EmailInUse="EmailInUse",e.UsernameInvalid="UsernameInvalid",e.PasswordTooShort="PasswordTooShort",e.EmailDuplicated="EmailDuplicated",e.UsernameDuplicated="UsernameDuplicated",e.DisplayNameTooLong="DisplayNameTooLong",e.DisplayNameTooShort="DisplayNameTooShort",e.UsernameTooShort="UsernameTooShort",e.FirstnameInvalid="FirstnameInvalid",e.SurnameInvalid="SurnameInvalid",e.UserTypeMismatch="UserTypeMismatch",e.UserCanBeAddedInCustomer="UserCanBeAddedInCustomer",e.UserCanBeCreated="UserCanBeCreated",e.CustomerFoundInOnline="CustomerFoundInOnline",e.UserInCustomerWithOnline="UserInCustomerWithOnline",e.InvalidUserStatus="InvalidUserStatus",e.UserAlreadyExistsInCustomer="UserAlreadyExistsInCustomer",e.Rostered="UserRostered",e.InvalidYearGroup="InvalidYearGroup",e))(t||{});const de=8,k="userManager.utils",b={active:p.Active.toLowerCase(),deactivated:p.Disabled.toLowerCase(),pending:p.Inactive.toLowerCase()},j={filterIdenticalEntries(e){const i=a=>{var r,n,s,u,l,m,g;return[((r=a.firstName)==null?void 0:r.trim())??"",((n=a.surname)==null?void 0:n.trim())??"",((s=a.masterYearGroup)==null?void 0:s.id)??"",((l=(u=a.username)==null?void 0:u.toLowerCase())==null?void 0:l.trim())??"",((g=(m=a.email)==null?void 0:m.toLowerCase())==null?void 0:g.trim())??""].join(":")};return e.filter((a,r,n)=>r===n.findIndex(s=>i(s)===i(a)))},getNewDuplicates(e){if(!e)return null;const i=[],a=[],r={};e.forEach(s=>{if(!s.username){a.push(s);return}if(!r[s.username]){r[s.username]=[s];return}r[s.username].push(s)}),Object.keys(r).map(s=>{if(r[s].length===1){a.push(r[s][0]);return}i.push({errorCodes:[t.UsernameAlreadyExisted],users:r[s]})});const n={};return e.forEach(s=>{if(s.email){if(!n[s.email]){n[s.email]=[s];return}n[s.email].push(s)}}),Object.keys(n).map(s=>{if(n[s].length===1)return;const{username:u}=A.first(n[s]);if(!u||r[u].length===1)i.push({errorCodes:[t.EmailAlreadyExisted],users:n[s]});else{const l=i.findIndex(m=>A.first(m.users).username===u);i[l].errorCodes.push(t.EmailAlreadyExisted)}}),i},formatCreateOrValidateUserRequest(e,i,a){return{users:e.map(r=>{const n={firstName:r.firstName,email:r.email,surname:r.surname,username:r.username,userType:i,customerId:a,masterRole:r.masterRole||w.User,requirePasswordChange:!1,generatePassword:!!r.generatePassword,password:r.password,displayName:r.displayName||null};return i===N.Learner&&(n.masterYearGroup=r.masterYearGroup),n.username||delete n.username,n.password||delete n.password,n.password&&n.generatePassword&&(n.generatePassword=!1),r.userId&&(n.userId=r.userId),n})}},formatEditUserRequest(e){return e.displayName||(e.displayName=null),e},formatDeleteRequest(e,i,a){const r={customerId:e};if(!i.length){const n=O.DeserializeQueryParams(O.GetCurrentQueryString().substring(1));n.query&&(r.searchQuery=n.query);const s=n.status&&(Array.isArray(n.status)?n.status:[n.status]);s!=null&&s.length&&(r.userStatuses=[],s.forEach(u=>{u==="active"&&r.userStatuses.push(p.Active),u==="deactivated"&&r.userStatuses.push(p.Disabled),u==="pending"&&r.userStatuses.push(p.Inactive)})),n.yearGroup&&(r.yearGroupValues=Array.isArray(n.yearGroup)?n.yearGroup:[n.yearGroup])}return Object.keys(r).length===1?r.userIds=i.map(n=>n.id):r.userType=a,r},formatToggleStatusRequest(e,i,a){return{customerId:i,users:[{userId:e.id,status:a}]}},getErrorMessages(e,i,a,r){const n={},s=h.encloseNamespace("userManager.utils"),u={[t.Ok]:"",[t.UsernameRequired]:"",[t.EmailRequired]:s("emailRequired"),[t.FirstnameRequired]:s("nameRequired"),[t.SurnameRequired]:s("surnameRequired"),[t.YearGroupRequired]:s("yearGroupRequired"),[t.EmailAlreadyExisted]:s(a?"emailExistsShort":"emailExistsLong"),[t.UsernameAlreadyExisted]:s(a?"usernameExistsShort":"usernameExistsLong"),[t.UserTypeRequired]:"",[t.MasterYearGroupRequired]:s("yearGroupRequired"),[t.EmptyUserEntity]:"",[t.CustomerIdRequired]:"",[t.CustomerNotFoundInOnline]:"",[t.EmailTooLong]:s("emailExceeds"),[t.UsernameTooLong]:s("usernameExceeds"),[t.FirstnameTooLong]:s("nameExceeds"),[t.SurnameTooLong]:s("surnameExceeds"),[t.EmailInvalid]:s(a?"emailInvalidShort":"emailInvalidLong"),[t.EmailInUse]:s(a?"emailExistsShort":"emailExistsLong"),[t.UsernameInvalid]:s(a?"usernameInvalidShort":"usernameInvalidLong"),[t.PasswordTooShort]:s(a?"passwordTooShortShort":"passwordTooShortLong",{minLength:i}),[t.EmailDuplicated]:"",[t.UsernameDuplicated]:"",[t.DisplayNameTooLong]:s("displayNameExceeds"),[t.DisplayNameTooShort]:s("displayNameTooShort"),[t.UsernameTooShort]:s("usernameTooShort"),[t.FirstnameInvalid]:s("firstNameInvalid"),[t.SurnameInvalid]:s("surnameInvalid"),[t.CustomerFoundInOnline]:s("support"),[t.UserInCustomerWithOnline]:s("support"),[t.InvalidUserStatus]:s("support"),[t.UserTypeMismatch]:"",[t.UserCanBeAddedInCustomer]:"",[t.UserCanBeCreated]:"",[t.UserAlreadyExistsInCustomer]:"",[t.Rostered]:"",[t.InvalidYearGroup]:s("invalidYearGroupError")},l={[t.Ok]:"",[t.UsernameRequired]:"",[t.EmailRequired]:"email",[t.FirstnameRequired]:"firstName",[t.SurnameRequired]:"surname",[t.YearGroupRequired]:"masterYearGroup",[t.EmailAlreadyExisted]:"email",[t.UsernameAlreadyExisted]:"username",[t.UserTypeRequired]:"",[t.MasterYearGroupRequired]:"masterYearGroup",[t.EmptyUserEntity]:"",[t.CustomerIdRequired]:"",[t.CustomerNotFoundInOnline]:"",[t.EmailTooLong]:"email",[t.UsernameTooLong]:"username",[t.FirstnameTooLong]:"firstName",[t.SurnameTooLong]:"surname",[t.EmailInvalid]:"email",[t.EmailInUse]:"email",[t.UsernameInvalid]:"username",[t.PasswordTooShort]:"password",[t.EmailDuplicated]:"",[t.UsernameDuplicated]:"",[t.DisplayNameTooLong]:"displayName",[t.DisplayNameTooShort]:"displayName",[t.UsernameTooShort]:"username",[t.FirstnameInvalid]:"firstName",[t.SurnameInvalid]:"surname",[t.UserTypeMismatch]:"email",[t.UserCanBeAddedInCustomer]:"email",[t.UserCanBeCreated]:"email",[t.CustomerFoundInOnline]:"email",[t.UserInCustomerWithOnline]:"email",[t.InvalidUserStatus]:"email",[t.UserAlreadyExistsInCustomer]:"email",[t.Rostered]:"email",[t.InvalidYearGroup]:"masterYearGroup"};return e.forEach(m=>{var x;const g=(r==null?void 0:r[m])??u[m]??"";if(!g)return;const d=l[m];d&&(n[d]=((x=r==null?void 0:r[m])==null?void 0:x[d])??g)}),n},showEmptyState(e,i){var r;if(!e.data)return!1;const a=Object.keys(i).length;return"results"in e.data||a?!1:!((r=e.data.data)!=null&&r.length)},getFilters(e,i,a,r){const n=[P.SortBy(G.getNameSortOptions())];return i===N.Learner&&(a==null?void 0:a.length)>1&&n.push(P.YearGroup(G.getYearGroupOptions(a))),n.push(P.Status()),i===N.Staff&&n.push(P.IsAdmin(e,r)),n},getMinimumPasswordLength(e,i,a){var n;if(!e)return de;const r=(n=e.securitySettings)==null?void 0:n.find(s=>s.userRole===a&&s.userType===i);return r?r.minPasswordLength:a===w.Admin||a===w.SuperAdmin?e.defaultAdminMinPasswordLength:e.defaultMinPasswordLength},mapStatusParamsToValue(e){if(!e)return;const i=a=>{switch(a){case"active":return p.Active;case"deactivated":return p.Disabled;case"pending":return p.Inactive}};return Array.isArray(e)?e.map(i):[i(e)]},buildSearchData({customerId:e,userId:i,userType:a,queryParams:r={}}){const n=j.buildSearchFiltersData(e,a,r),s=j.buildSearchSortData(e,r);return{query:r.query,indices:["user"],searchType:"user",customerIdOverride:e,userId:i,customerId:e,filters:n,sorts:s}},buildSearchDataAndKey({customerId:e,userId:i,userType:a,queryParams:r,cursor:n}){const s=j.buildSearchData({customerId:e,userId:i||"",userType:a,queryParams:r||{}});n&&(s.cursor=n);let u=`search:users:${n||""}`;return u+=ae.flattenObjectToString(s),{key:u,data:s}},buildSearchParams(e,i,a={}){let r=j.buildSearchFiltersObject(e,i,a);return r=Object.keys(r).reduce((n,s)=>(n[`${re.FILTER_PARAM_PREFIX}${s}`]=r[s],n),{}),{query:a.query,index:"user",customerIdOverride:e,...r}},buildSearchSortData(e,i={}){const a={};if(i.sort)switch(i.sort){case"first-name-atoz":a.firstName="asc";break;case"first-name-ztoa":a.firstName="desc";break;case"surname-atoz":a.surname="asc";break;case"surname-ztoa":a.surname="desc";break;case"newest":a.userProfile={customerId:e,fieldOrders:{dateCreated:"desc"}};break;case"oldest":a.userProfile={customerId:e,fieldOrders:{dateCreated:"asc"}};break}else a.userProfile={customerId:e,fieldOrders:{dateCreated:"desc"}};return a},buildSearchFiltersData(e,i,a={}){const r={userType:i.toLowerCase()};return r.userProfile={customerId:e},a.isAdmin==="true"&&(r.userProfile.role=[w.Admin.toLowerCase(),w.SuperAdmin.toLowerCase()]),a.yearGroup&&(r.yearGroup={customerId:e},Array.isArray(a.yearGroup)?r.yearGroup.value=a.yearGroup:r.yearGroup.value=[a.yearGroup]),a.status&&(Array.isArray(a.status)?r.userProfile.status=a.status.map(n=>b[n]):r.userProfile.status=[b[a.status]]),r},buildSearchFiltersObject(e,i,a={}){const r={userType:i.toLowerCase(),customerId:e.toString()};return a.isAdmin==="true"&&(r.userRole=w.Admin.toLowerCase()),a.yearGroup&&(Array.isArray(a.yearGroup)?r.yearGroup=`${a.yearGroup.join(",")}`:r.yearGroup=a.yearGroup),a.status&&(Array.isArray(a.status)?r.userProfileStatus=a.status.map(n=>b[n]).join(","):r.userProfileStatus=b[a.status]),r},buildGetUsersQuery(e,i={}){const{yearGroup:a="",status:r="",isAdmin:n="",sort:s="newest"}=i,u=[`usertype:${e}`];if(a&&(Array.isArray(a)?u.push(`yeargroups.value:[${a.join(",")}]`):u.push(`yeargroups.value:${a}`)),n==="true"&&u.push(`userprofiles.role:${w.Admin}`),r&&(Array.isArray(r)?u.push(`status:[${r.map(l=>b[l]).join(",")}]`):u.push(`status:${b[r]}`)),s)switch(s){case"first-name-atoz":u.push("orderby:name");break;case"first-name-ztoa":u.push("orderbydesc:name");break;case"surname-atoz":u.push("orderby:surname");break;case"surname-ztoa":u.push("orderbydesc:surname");break;case"newest":u.push("orderbydesc:timestamp");break;case"oldest":u.push("orderby:timestamp");break}return`{${u.join(",")}}avatar`},shouldDisplayAuthenticationMethods(e){var r;return!(e!=null&&e.length)||!!!((r=A.first(e).authenticationMethods)!=null&&r.length)?!1:!!e.find(n=>{var u;return!!((u=n.authenticationMethods)==null?void 0:u.find(l=>!l.local))})},handleAsyncErrors(e,i,a,r){var u;const n=(u=e==null?void 0:e[0])==null?void 0:u.errorCodes;if(!(n!=null&&n.length))return!0;const s={};return(n.includes(t.EmailAlreadyExisted)||n.includes(t.EmailInUse))&&(!a||a.email!==i.email)&&(s.email=h.getPhrase(k,"emailExistsLong")),n.includes(t.UsernameAlreadyExisted)&&(!a||a.username!==i.username)&&(s.username=h.getPhrase(k,"usernameExistsLong")),Object.keys(s).length?(r({errors:s}),!1):!0},getInitialErrorsForInvalidYearGroups(e){return!e||e.value===0?{masterYearGroup:h.getPhrase(k,"yearGroupRequired")}:{}}},B="settings.emailSettings",ce=S.object().shape({email:S.string().required(()=>h.getPhrase(B,"emailRequired")).email(()=>h.getPhrase(B,"emailInvalid")).trim().default("")});function he(){return o.jsx(le,{children:o.jsx("svg",{viewBox:"0 0 24 24",children:o.jsx("path",{d:"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z"})})})}const Z="settings.emailSettings",F=h.encloseNamespace(Z);function pe(e){const i=U(q.MDDown),[a,r]=C.useState(!i),n=e.currentUser.emailVerified;return C.useEffect(()=>{!i&&!a&&r(!0)},[i,a]),o.jsxs(H.Provider,{value:Z,children:[o.jsxs("h2",{className:"h4 d-flex align-items-center",children:[o.jsx(f,{phrase:"heading"}),n&&o.jsxs("span",{className:"font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2",children:[o.jsx(f,{phrase:"verified"}),o.jsx(he,{})]})]}),n&&o.jsx("p",{children:o.jsx(f,{phrase:"info",options:{email:e.currentUser.email}})}),a?o.jsx(X,{initialValues:{email:e.currentUser.email||""},onSubmit:e.onChangeEmail,validationSchema:ce,children:o.jsxs(Q,{children:[o.jsx(I,{className:"w-75",name:"email",placeholder:F("emailPlaceholder"),autoComplete:"email"}),o.jsxs("div",{className:`d-flex justify-content-end w-75 ${i?"ms-n2":""}`,children:[i&&o.jsx("button",{type:"button",className:"btn btn-link me-2",onClick:()=>r(!1),children:o.jsx(f,{phrase:"cancel"})}),o.jsx(K,{isNew:!1,submitText:F(n?"updateEmail":"verifyEmail"),variant:n?"outline-dark":"dark"})]})]})}):o.jsx(o.Fragment,{children:o.jsx("div",{className:"d-flex",children:o.jsx("button",{className:"btn btn-outline-dark me-2",onClick:()=>r(!0),children:o.jsx(f,{phrase:"change"})})})})]})}const fe="_partialLabel_1h6pk_1",ge="_partialInfo_1h6pk_5",ye="_partialInput_1h6pk_10",we="_partialSubmit_1h6pk_14",Se="_partialNote_1h6pk_18",E={partialLabel:fe,partialInfo:ge,partialInput:ye,partialSubmit:we,partialNote:Se};function xe(){return o.jsxs("div",{className:"w-50",children:[o.jsx("div",{className:`partial-loading-background mb-2 ${E.partialLabel}`}),o.jsx("div",{className:`partial-loading-background ${E.partialInfo}`}),o.jsx("div",{className:"form-group",children:o.jsx("div",{className:`partial-loading-background ${E.partialInput}`})}),o.jsx("div",{className:`partial-loading-background ${E.partialSubmit}`}),o.jsx("div",{className:`partial-loading-background mt-2 ${E.partialNote}`})]})}const J="shared.changePasswordForm",y=h.encloseNamespace(J);V.defaultProps={submitVariant:"outline-dark",buttonContainerClass:"btn-container d-flex justify-content-end align-items-center",inputWidthClass:"w-100"};function V(e){const i=se();return o.jsxs(Q,{children:[!e.hideCurrentPassword&&o.jsx(I,{className:e.inputWidthClass,name:"currentPassword",label:y("currentPassword"),placeholder:y("currentPasswordPlaceholder"),type:"password",autoComplete:"current-password",showRequiredStar:!0}),o.jsx(I,{className:e.inputWidthClass,name:"newPassword",label:y("newPassword"),placeholder:y("newPasswordPlaceholder"),type:"password",autoComplete:"new-password",showRequiredStar:!0}),o.jsx(I,{className:e.inputWidthClass,name:"confirmPassword",label:y("confirmPassword"),placeholder:y("confirmPasswordPlaceholder"),type:"password",autoComplete:"off",showRequiredStar:!0}),e.showChangeOnNextLogin&&o.jsx(I,{id:"changeOnNextLogin",name:"changeOnNextLogin",label:y("changeOnNextLogin"),type:"checkbox",checked:i.values.changeOnNextLogin,checkboxLabelFontWeight:"normal"}),!e.hideButtons&&o.jsxs("div",{className:e.buttonContainerClass,children:[!e.hideCancelButton&&!!e.onClickCancel&&o.jsx("button",{type:"button",className:`btn btn-link me-2 ${e.buttonSize==="lg"?"btn-lg":""}`,onClick:e.onClickCancel,children:o.jsx(f,{namespace:J,phrase:"cancel"})}),o.jsx(K,{isNew:!1,submitText:e.submitText||y("save"),variant:e.submitVariant,size:e.buttonSize})]})]})}const be="settings.passwordSettings",v=h.encloseNamespace(be),Ee=e=>S.object().shape({currentPassword:S.string().required(()=>v("currentPasswordRequired")).trim().default(""),newPassword:S.string().required(()=>v("newPasswordRequired")).min(e,()=>v("newPasswordMinLength",{minLen:e})).trim().default(""),confirmPassword:S.string().required(()=>v("confirmPasswordRequired")).oneOf([S.ref("newPassword"),null],()=>v("passwordsDontMatch")).trim().default("")}),W="settings.passwordSettings",ve={currentPassword:"",newPassword:"",confirmPassword:""};function Ie(e){const i=U(q.MDDown),[a,r]=C.useState(!i);C.useEffect(()=>{!i&&!a&&r(!0)},[i,a]);function n(s,u){e.onChangePassword(s,u,()=>u({reset:!0}))}return o.jsxs(H.Provider,{value:W,children:[o.jsx("h2",{className:"h4",children:o.jsx(f,{phrase:"heading"})}),a?o.jsxs(o.Fragment,{children:[o.jsx("p",{children:o.jsx(f,{phrase:"info"})}),o.jsx(X,{initialValues:ve,onSubmit:n,validationSchema:Ee(e.minPasswordLength),children:o.jsx(V,{onClickCancel:()=>r(!1),hideCancelButton:!i,submitText:h.getPhrase(W,"savePassword"),buttonContainerClass:i?"d-flex justify-content-end ms-n2 w-75":"d-flex justify-content-end w-75",inputWidthClass:"w-75"})})]}):o.jsx("button",{className:"btn btn-outline-dark ",onClick:()=>r(!0),children:o.jsx(f,{phrase:"change"})})]})}const je={getCustomerSecuritySettings(e,i,a){return{url:`{gateway}/v1/customers/${e}/settings/security`,key:"customers:security:settings",normalize:!1,success:i,error:a}},setCustomerSecuritySettings(e,i,a,r){return{url:`{gateway}/v1/customers/${e}/settings/security`,key:"update:security:settings",invalidationKeys:"customers:security:settings",type:te.PUT,normalize:!1,data:i,success:a,error:r}}},Le="settings.accountSettings",c=h.encloseNamespace(Le);function Oe(){var g;const e=ne(),i=ie(),a=U(q.MDDown),r=R(ue.currentUser()),n=R(r.data&&T.getUser(r.data.id)),s=R(r.data&&je.getCustomerSecuritySettings(r.data.customerId));oe({title:c("heading")});function u(d,x){D(e,T.changeEmail(d.email,()=>{$.logUserAction({id:r.data.id,oldEmail:r.data.email,newEmail:d.email},{actionType:z.VerifyEmail,entity:_.User,location:Y.Settings,workflowPhase:M.Start}),i.success(c("changeEmailRequestSuccess",{email:d.email,escapeText:!0}))},()=>{i.error(c("changeEmailRequestError"))},x))}function l(d,x,ee){D(e,T.changePassword(d,()=>{$.logUserAction({id:r.data.id,oldPassword:d.currentPassword,newPassword:d.newPassword},{actionType:z.ChangePassword,entity:_.User,location:Y.Settings,workflowPhase:M.Complete}),i.success(c("changePasswordSuccess")),ee()},({responseJSON:L})=>{L.errorCode==="user.password-too-short"?i.error(c("changePasswordRequirementsError")):L.errorCode==="user.invalid-password"?i.error(c("changePasswordInvalid")):L.errorCode==="user.same-password"?i.error(c("changePasswordSame")):L.errorCode==="user.locked-out"?i.error(c("changePasswordLockedOut")):i.error(c("changePasswordError"))},x))}const m=j.getMinimumPasswordLength(s.data,(g=n.data)==null?void 0:g.userType,r.data.role);return o.jsxs(me,{heading:c("heading"),breadcrumbs:[c("breadcrumb")],children:[o.jsx("div",{className:a?"w-100":"w-50",children:r.data?o.jsx(pe,{currentUser:r.data,onChangeEmail:u}):o.jsx(xe,{})}),o.jsx("hr",{}),o.jsx("div",{className:a?"w-100":"w-50",children:s.data&&o.jsx(Ie,{onChangePassword:l,minPasswordLength:m})})]})}export{Oe as AccountSettingsView};
2
+ //# sourceMappingURL=Bd-gJLT1.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bd-gJLT1.chunk.js","sources":["../../../../libs/shared/src/apps/user-manager/enums/UserValidationCode.ts","../../../../libs/shared/src/apps/user-manager/utils/UserManagerHelper.ts","../../src/apps/settings/components/email-settings/EmailSettingsValidationSchema.ts","../../src/apps/settings/components/email-settings/VerifiedEmailIcon.tsx","../../src/apps/settings/components/email-settings/EmailSettings.tsx","../../src/apps/settings/components/email-settings/partial-loading/PartialEmailSettings.tsx","../../../../libs/shared/src/apps/user-manager/components/change-password-form/ChangePasswordForm.tsx","../../src/apps/settings/components/password-settings/PasswordSettingsValidationSchema.ts","../../src/apps/settings/components/password-settings/PasswordSettings.tsx","../../src/apps/settings/flight-requests/SecuritySettingsRequests.ts","../../src/apps/settings/views/account-settings/AccountSettingsView.tsx"],"sourcesContent":["// Copied directly from User API\nexport enum UserValidationCode {\n Ok = 'Ok',\n UsernameRequired = 'UsernameRequired',\n EmailRequired = 'EmailRequired',\n FirstnameRequired = 'FirstnameRequired',\n SurnameRequired = 'SurnameRequired',\n YearGroupRequired = 'YearGroupRequired',\n EmailAlreadyExisted = 'EmailAlreadyExisted', // This means another user has this email address, and it's verified\n UsernameAlreadyExisted = 'UsernameAlreadyExisted',\n UserTypeRequired = 'UserTypeRequired',\n MasterYearGroupRequired = 'MasterYearGroupRequired',\n EmptyUserEntity = 'EmptyUserEntity',\n CustomerIdRequired = 'CustomerIdRequired',\n CustomerNotFoundInOnline = 'CustomerNotFoundInOnline',\n EmailTooLong = 'EmailTooLong',\n UsernameTooLong = 'UsernameTooLong',\n FirstnameTooLong = 'FirstnameTooLong',\n SurnameTooLong = 'SurnameTooLong',\n EmailInvalid = 'EmailInvalid',\n EmailInUse = 'EmailInUse', // This means another user has this email address, but it's unverified\n UsernameInvalid = 'UsernameInvalid',\n PasswordTooShort = 'PasswordTooShort',\n EmailDuplicated = 'EmailDuplicated', // Same email has been used in the same request\n UsernameDuplicated = 'UsernameDuplicated', // Same username has been used in the same request\n DisplayNameTooLong = 'DisplayNameTooLong',\n DisplayNameTooShort = 'DisplayNameTooShort',\n UsernameTooShort = 'UsernameTooShort',\n FirstnameInvalid = 'FirstnameInvalid',\n SurnameInvalid = 'SurnameInvalid',\n\n // user man 3.0\n UserTypeMismatch = 'UserTypeMismatch',\n UserCanBeAddedInCustomer = 'UserCanBeAddedInCustomer',\n UserCanBeCreated = 'UserCanBeCreated',\n CustomerFoundInOnline = 'CustomerFoundInOnline',\n UserInCustomerWithOnline = 'UserInCustomerWithOnline',\n InvalidUserStatus = 'InvalidUserStatus',\n UserAlreadyExistsInCustomer = 'UserAlreadyExistsInCustomer',\n\n // a user created by rostered\n Rostered='UserRostered',\n\n // Unknown year group\n InvalidYearGroup = 'InvalidYearGroup',\n}","import { FormikErrors } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { SearchFilter, SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { FilterHelper, Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserValidationCode } from 'libs/shared/apps/user-manager/enums/UserValidationCode';\nimport { BulkCreateOrValidateUserRequest, BulkDeleteUsersRequest, BulkUpdateUserStatusRequest, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, User, UserCollection, YearGroup } from 'libs/shared/interfaces';\n\nimport { FilterConstants } from '../../search/constants/FilterConstants';\nimport { DuplicateUserSet } from '../interfaces/viewmodels/BulkUserUploadViewModel';\n\nconst FALLBACK_MIN_PASSWORD_LENGTH = 8;\nconst namespace = 'userManager.utils';\n\nconst StatusMap: HashObject = {\n active: ObjectStatus.Active.toLowerCase(),\n deactivated: ObjectStatus.Disabled.toLowerCase(),\n pending: ObjectStatus.Inactive.toLowerCase()\n};\n\nexport const UserManagerHelper = {\n filterIdenticalEntries(spreadsheetEntries: EditUserRequest[]): EditUserRequest[] {\n const identify = (u: EditUserRequest) => {\n return [\n u.firstName?.trim() ?? '',\n u.surname?.trim() ?? '',\n u.masterYearGroup?.id ?? '',\n u.username?.toLowerCase()?.trim() ?? '',\n u.email?.toLowerCase()?.trim() ?? ''\n ].join(':');\n };\n\n return spreadsheetEntries.filter((entry, index, self) =>\n index === self.findIndex(u => identify(u) === identify(entry)));\n },\n\n getNewDuplicates(users?: EditUserRequest[]): DuplicateUserSet[] {\n if (!users)\n return null;\n\n const duplicateSets: DuplicateUserSet[] = [];\n const validUsers: EditUserRequest[] = [];\n\n /**\n * Find all users in uploaded spreadsheet with duplicate usernames.\n */\n const usernameDuplicateLookup: { [ username: string ]: EditUserRequest[]; } = {};\n\n users.forEach(user => {\n if (!user.username) {\n validUsers.push(user);\n return;\n }\n\n if (!usernameDuplicateLookup[user.username]) {\n usernameDuplicateLookup[user.username] = [user];\n return;\n }\n\n usernameDuplicateLookup[user.username].push(user);\n });\n\n Object.keys(usernameDuplicateLookup).map(username => {\n if (usernameDuplicateLookup[username].length === 1) {\n validUsers.push(usernameDuplicateLookup[username][0]);\n return;\n }\n\n duplicateSets.push({\n errorCodes: [UserValidationCode.UsernameAlreadyExisted],\n users: usernameDuplicateLookup[username]\n });\n });\n\n /**\n * Find all remaining users in spreadsheet with duplicate emails\n */\n const emailDuplicateLookup: { [ email: string ]: EditUserRequest[]; } = {};\n\n users.forEach(user => {\n if (!user.email)\n return;\n\n if (!emailDuplicateLookup[user.email]) {\n emailDuplicateLookup[user.email] = [user];\n return;\n }\n\n emailDuplicateLookup[user.email].push(user);\n });\n\n Object.keys(emailDuplicateLookup).map(email => {\n if (emailDuplicateLookup[email].length === 1)\n return;\n\n const { username } = ArrayHelper.first(emailDuplicateLookup[email]);\n\n if (!username || usernameDuplicateLookup[username].length === 1) {\n duplicateSets.push({\n errorCodes: [UserValidationCode.EmailAlreadyExisted],\n users: emailDuplicateLookup[email]\n });\n } else {\n const dupeSetIndex = duplicateSets.findIndex(set => ArrayHelper.first(set.users).username === username);\n\n duplicateSets[dupeSetIndex].errorCodes.push(UserValidationCode.EmailAlreadyExisted);\n }\n });\n\n return duplicateSets;\n },\n\n formatCreateOrValidateUserRequest(\n users: EditUserRequest[],\n userType: UserGroup,\n customerId: string\n ): BulkCreateOrValidateUserRequest {\n return {\n users: users.map((u: EditUserRequest) => {\n const obj: EditUserRequest = {\n firstName: u.firstName,\n email: u.email,\n surname: u.surname,\n username: u.username,\n userType,\n customerId,\n masterRole: u.masterRole || UserRole.User,\n requirePasswordChange: false,\n generatePassword: !!u.generatePassword,\n password: u.password,\n displayName: u.displayName || null\n };\n\n if (userType === UserGroup.Learner)\n obj.masterYearGroup = u.masterYearGroup;\n\n if (!obj.username)\n delete obj.username;\n\n if (!obj.password)\n delete obj.password;\n\n if (obj.password && obj.generatePassword)\n obj.generatePassword = false;\n\n if (u.userId)\n obj.userId = u.userId;\n\n return obj;\n })\n };\n },\n\n formatEditUserRequest(user: EditUserRequest): EditUserRequest {\n if (!user.displayName)\n user.displayName = null;\n\n return user;\n },\n\n formatDeleteRequest(customerId: string, users?: User[], userType?: UserGroup): BulkDeleteUsersRequest {\n const body: BulkDeleteUsersRequest = {\n customerId\n };\n\n if (!users.length) {\n const queryParams = Core.LocationUtils.DeserializeQueryParams(\n Core.LocationUtils.GetCurrentQueryString().substring(1)\n );\n\n if (queryParams.query)\n body.searchQuery = queryParams.query;\n\n const statuses = queryParams.status &&\n (Array.isArray(queryParams.status) ? queryParams.status : [queryParams.status]);\n\n if (statuses?.length) {\n body.userStatuses = [];\n\n statuses.forEach(status => {\n if (status === 'active') body.userStatuses.push(ObjectStatus.Active);\n if (status === 'deactivated') body.userStatuses.push(ObjectStatus.Disabled);\n if (status === 'pending') body.userStatuses.push(ObjectStatus.Inactive);\n });\n }\n \n if (queryParams.yearGroup) {\n body.yearGroupValues = Array.isArray(queryParams.yearGroup) ? queryParams.yearGroup : [queryParams.yearGroup];\n }\n }\n\n if (Object.keys(body).length === 1) {\n body.userIds = users.map(u => u.id);\n } else {\n body.userType = userType;\n }\n\n return body;\n },\n\n formatToggleStatusRequest(user: User, customerId: string, newStatus: ObjectStatus): BulkUpdateUserStatusRequest {\n return {\n customerId,\n users: [{\n userId: user.id,\n status: newStatus\n }]\n };\n },\n\n getErrorMessages(\n errorCodes: UserValidationCode[],\n minPasswordLength: number,\n shortMessages?: boolean,\n localMessage?: HashObject\n ) {\n const messages: HashObject = {};\n\n const getPhrase = LanguageService.encloseNamespace('userManager.utils');\n\n const CodeToMessageMap = {\n [UserValidationCode.Ok]: '',\n [UserValidationCode.UsernameRequired]: '',\n [UserValidationCode.EmailRequired]: getPhrase('emailRequired'),\n [UserValidationCode.FirstnameRequired]: getPhrase('nameRequired'),\n [UserValidationCode.SurnameRequired]: getPhrase('surnameRequired'),\n [UserValidationCode.YearGroupRequired]: getPhrase('yearGroupRequired'),\n [UserValidationCode.EmailAlreadyExisted]: getPhrase(shortMessages ? 'emailExistsShort' : 'emailExistsLong'),\n [UserValidationCode.UsernameAlreadyExisted]: getPhrase(shortMessages ? 'usernameExistsShort' : 'usernameExistsLong'),\n [UserValidationCode.UserTypeRequired]: '',\n [UserValidationCode.MasterYearGroupRequired]: getPhrase('yearGroupRequired'),\n [UserValidationCode.EmptyUserEntity]: '',\n [UserValidationCode.CustomerIdRequired]: '',\n [UserValidationCode.CustomerNotFoundInOnline]: '',\n [UserValidationCode.EmailTooLong]: getPhrase('emailExceeds'),\n [UserValidationCode.UsernameTooLong]: getPhrase('usernameExceeds'),\n [UserValidationCode.FirstnameTooLong]: getPhrase('nameExceeds'),\n [UserValidationCode.SurnameTooLong]: getPhrase('surnameExceeds'),\n [UserValidationCode.EmailInvalid]: getPhrase(shortMessages ? 'emailInvalidShort' : 'emailInvalidLong'),\n [UserValidationCode.EmailInUse]: getPhrase(shortMessages ? 'emailExistsShort' : 'emailExistsLong'),\n [UserValidationCode.UsernameInvalid]: getPhrase(shortMessages ? 'usernameInvalidShort' : 'usernameInvalidLong'),\n [UserValidationCode.PasswordTooShort]: getPhrase(shortMessages ? 'passwordTooShortShort' : 'passwordTooShortLong', { minLength: minPasswordLength }),\n [UserValidationCode.EmailDuplicated]: '',\n [UserValidationCode.UsernameDuplicated]: '',\n [UserValidationCode.DisplayNameTooLong]: getPhrase('displayNameExceeds'),\n [UserValidationCode.DisplayNameTooShort]: getPhrase('displayNameTooShort'),\n [UserValidationCode.UsernameTooShort]: getPhrase('usernameTooShort'),\n [UserValidationCode.FirstnameInvalid]: getPhrase('firstNameInvalid'),\n [UserValidationCode.SurnameInvalid]: getPhrase('surnameInvalid'),\n [UserValidationCode.CustomerFoundInOnline]: getPhrase('support'),\n [UserValidationCode.UserInCustomerWithOnline]: getPhrase('support'),\n [UserValidationCode.InvalidUserStatus]: getPhrase('support'),\n [UserValidationCode.UserTypeMismatch]: '',\n [UserValidationCode.UserCanBeAddedInCustomer]: '',\n [UserValidationCode.UserCanBeCreated]: '',\n [UserValidationCode.UserAlreadyExistsInCustomer]: '',\n [UserValidationCode.Rostered]: '',\n [UserValidationCode.InvalidYearGroup]: getPhrase('invalidYearGroupError')\n };\n\n const CodeToFieldMap = {\n [UserValidationCode.Ok]: '',\n [UserValidationCode.UsernameRequired]: '',\n [UserValidationCode.EmailRequired]: 'email',\n [UserValidationCode.FirstnameRequired]: 'firstName',\n [UserValidationCode.SurnameRequired]: 'surname',\n [UserValidationCode.YearGroupRequired]: 'masterYearGroup',\n [UserValidationCode.EmailAlreadyExisted]: 'email',\n [UserValidationCode.UsernameAlreadyExisted]: 'username',\n [UserValidationCode.UserTypeRequired]: '',\n [UserValidationCode.MasterYearGroupRequired]: 'masterYearGroup',\n [UserValidationCode.EmptyUserEntity]: '',\n [UserValidationCode.CustomerIdRequired]: '',\n [UserValidationCode.CustomerNotFoundInOnline]: '',\n [UserValidationCode.EmailTooLong]: 'email',\n [UserValidationCode.UsernameTooLong]: 'username',\n [UserValidationCode.FirstnameTooLong]: 'firstName',\n [UserValidationCode.SurnameTooLong]: 'surname',\n [UserValidationCode.EmailInvalid]: 'email',\n [UserValidationCode.EmailInUse]: 'email',\n [UserValidationCode.UsernameInvalid]: 'username',\n [UserValidationCode.PasswordTooShort]: 'password',\n [UserValidationCode.EmailDuplicated]: '',\n [UserValidationCode.UsernameDuplicated]: '',\n [UserValidationCode.DisplayNameTooLong]: 'displayName',\n [UserValidationCode.DisplayNameTooShort]: 'displayName',\n [UserValidationCode.UsernameTooShort]: 'username',\n [UserValidationCode.FirstnameInvalid]: 'firstName',\n [UserValidationCode.SurnameInvalid]: 'surname',\n [UserValidationCode.UserTypeMismatch]: 'email',\n [UserValidationCode.UserCanBeAddedInCustomer]: 'email',\n [UserValidationCode.UserCanBeCreated]: 'email',\n [UserValidationCode.CustomerFoundInOnline]: 'email',\n [UserValidationCode.UserInCustomerWithOnline]: 'email',\n [UserValidationCode.InvalidUserStatus]: 'email',\n [UserValidationCode.UserAlreadyExistsInCustomer]: 'email',\n [UserValidationCode.Rostered]: 'email',\n [UserValidationCode.InvalidYearGroup]: 'masterYearGroup'\n };\n\n errorCodes.forEach(code => {\n const message = localMessage?.[code] ?? CodeToMessageMap[code] ?? '';\n\n if (!message)\n return;\n\n const field = CodeToFieldMap[code];\n\n if (!field)\n return;\n\n messages[field] = localMessage?.[code]?.[field] ?? message;\n });\n\n return messages;\n },\n\n showEmptyState(userRequest: Flight.Response<UserCollection | SearchResults<User>>, queryParams: HashObject): boolean {\n if (!userRequest.data)\n return false;\n\n const hasQueryParams = Object.keys(queryParams).length;\n\n if (('results' in userRequest.data) || hasQueryParams)\n return false;\n\n return !userRequest.data.data?.length;\n },\n\n getFilters(customer: Customer, userType: UserGroup, yearGroups?: YearGroup[], countryCode?: string): SearchFilter[] {\n const filters = [Filters.SortBy(FilterHelper.getNameSortOptions())];\n\n if (userType === UserGroup.Learner && yearGroups?.length > 1)\n filters.push(Filters.YearGroup(FilterHelper.getYearGroupOptions(yearGroups)));\n\n filters.push(Filters.Status());\n \n if (userType === UserGroup.Staff)\n filters.push(Filters.IsAdmin(customer, countryCode));\n\n return filters;\n },\n\n getMinimumPasswordLength(\n securitySettings: SecuritySettingsResponse,\n userType: UserGroup,\n userRole: UserRole\n ): number {\n if (!securitySettings)\n return FALLBACK_MIN_PASSWORD_LENGTH;\n\n const customSetting = securitySettings.securitySettings?.find(s => {\n return s.userRole === userRole && s.userType === userType;\n });\n\n if (customSetting)\n return customSetting.minPasswordLength;\n\n if (userRole === UserRole.Admin || userRole === UserRole.SuperAdmin)\n return securitySettings.defaultAdminMinPasswordLength;\n\n return securitySettings.defaultMinPasswordLength;\n },\n\n mapStatusParamsToValue(statusParam: string | string[]): ObjectStatus[] {\n if (!statusParam)\n return;\n\n const convertToValue = (status: string): ObjectStatus => {\n switch (status) {\n case 'active':\n return ObjectStatus.Active;\n case 'deactivated':\n return ObjectStatus.Disabled;\n case 'pending':\n return ObjectStatus.Inactive;\n }\n };\n\n if (!Array.isArray(statusParam))\n return [convertToValue(statusParam)];\n\n return statusParam.map(convertToValue);\n },\n\n buildSearchData({\n customerId,\n userId,\n userType,\n queryParams = {}\n }: {\n customerId: string,\n userId?: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams\n }): HashObject {\n const filters = UserManagerHelper.buildSearchFiltersData(customerId, userType, queryParams);\n const sorts = UserManagerHelper.buildSearchSortData(customerId, queryParams);\n\n return {\n query: queryParams.query,\n indices: ['user'],\n searchType: 'user',\n customerIdOverride: customerId,\n userId,\n customerId,\n filters,\n sorts\n };\n },\n\n buildSearchDataAndKey({\n customerId,\n userId,\n userType,\n queryParams,\n cursor\n }: {\n customerId: string,\n userId?: string,\n userType: UserGroup,\n queryParams?: UserManagerQueryParams,\n cursor?: string,\n }): {key: string, data: HashObject} {\n const data = UserManagerHelper.buildSearchData({\n customerId,\n userId: userId || '',\n userType,\n queryParams: queryParams || {}\n });\n\n if (cursor)\n data.cursor = cursor;\n\n let key = `search:users:${cursor || ''}`;\n key += ObjectHelper.flattenObjectToString(data);\n\n return { key, data };\n },\n\n buildSearchParams(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n let filters = UserManagerHelper.buildSearchFiltersObject(customerId, userType, queryParams);\n\n filters = Object.keys(filters).reduce((prev: HashObject, current) => {\n prev[`${FilterConstants.FILTER_PARAM_PREFIX}${current}`] = filters[current];\n return prev;\n }, {});\n\n return {\n query: queryParams.query,\n index: 'user',\n customerIdOverride: customerId,\n ...filters\n };\n },\n\n buildSearchSortData(customerId: string, queryParams: UserManagerQueryParams = {}): HashObject {\n const sorts: HashObject = {};\n\n if (queryParams.sort) {\n switch (queryParams.sort) {\n case 'first-name-atoz':\n sorts.firstName = 'asc';\n break;\n\n case 'first-name-ztoa':\n sorts.firstName = 'desc';\n break;\n\n case 'surname-atoz':\n sorts.surname = 'asc';\n break;\n\n case 'surname-ztoa':\n sorts.surname = 'desc';\n break;\n\n case 'newest':\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'desc'\n }\n };\n break;\n case 'oldest':\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'asc'\n }\n };\n break;\n\n default:\n break;\n }\n } else {\n // default to newest sort\n sorts.userProfile = {\n customerId,\n fieldOrders: {\n dateCreated: 'desc'\n }\n };\n }\n\n return sorts;\n },\n\n buildSearchFiltersData(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n const filters: HashObject = {\n userType: userType.toLowerCase()\n };\n\n filters.userProfile = {\n customerId\n };\n\n if (queryParams.isAdmin === 'true')\n filters.userProfile.role = [ UserRole.Admin.toLowerCase(), UserRole.SuperAdmin.toLowerCase() ];\n\n if (queryParams.yearGroup) {\n filters.yearGroup = { customerId };\n if (Array.isArray(queryParams.yearGroup)) {\n filters.yearGroup.value = queryParams.yearGroup;\n } else {\n filters.yearGroup.value = [queryParams.yearGroup];\n }\n }\n\n if (queryParams.status) {\n if (!Array.isArray(queryParams.status)) {\n filters.userProfile.status = [StatusMap[queryParams.status]];\n } else {\n filters.userProfile.status = queryParams.status.map(val => StatusMap[val]);\n }\n }\n\n return filters;\n },\n\n buildSearchFiltersObject(\n customerId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): HashObject {\n const filters: HashObject = {\n userType: userType.toLowerCase(),\n customerId: customerId.toString()\n };\n\n if (queryParams.isAdmin === 'true')\n filters.userRole = UserRole.Admin.toLowerCase();\n\n if (queryParams.yearGroup) {\n if (Array.isArray(queryParams.yearGroup)) {\n filters.yearGroup = `${queryParams.yearGroup.join(',')}`;\n } else {\n filters.yearGroup = queryParams.yearGroup;\n }\n }\n\n if (queryParams.status) {\n if (!Array.isArray(queryParams.status)) {\n filters.userProfileStatus = StatusMap[queryParams.status];\n } else {\n filters.userProfileStatus = queryParams.status.map(val => StatusMap[val]).join(',');\n }\n }\n\n return filters;\n },\n\n buildGetUsersQuery(\n userType: UserGroup,\n queryParams: UserManagerQueryParams = {}\n ): string {\n const { yearGroup = '', status = '', isAdmin = '', sort = 'newest' } = queryParams;\n\n const filters = [`usertype:${userType}`];\n\n if (yearGroup) {\n if (Array.isArray(yearGroup)) {\n filters.push(`yeargroups.value:[${yearGroup.join(',')}]`);\n } else {\n filters.push(`yeargroups.value:${yearGroup}`);\n }\n }\n\n if (isAdmin === 'true')\n filters.push(`userprofiles.role:${UserRole.Admin}`);\n\n if (status) {\n if (!Array.isArray(status)) {\n filters.push(`status:${StatusMap[status]}`);\n } else {\n filters.push(`status:[${status.map(val => StatusMap[val]).join(',')}]`);\n }\n }\n\n if (sort) {\n switch (sort) {\n case 'first-name-atoz':\n filters.push('orderby:name');\n break;\n \n case 'first-name-ztoa':\n filters.push('orderbydesc:name');\n break;\n \n case 'surname-atoz':\n filters.push('orderby:surname');\n break;\n \n case 'surname-ztoa':\n filters.push('orderbydesc:surname');\n break;\n\n case 'newest':\n filters.push('orderbydesc:timestamp');\n break;\n\n case 'oldest':\n filters.push('orderby:timestamp');\n break;\n \n default:\n break;\n }\n }\n\n return `{${filters.join(',')}}avatar`;\n },\n\n shouldDisplayAuthenticationMethods(users: User[]): boolean {\n if (!users?.length)\n return false;\n\n const hasFetchedAuthenticationMethods = !!ArrayHelper.first(users).authenticationMethods?.length;\n\n if (!hasFetchedAuthenticationMethods)\n return false;\n\n const userWithSSO = users.find(u => {\n const ssoLoginMethod = u.authenticationMethods?.find(am => !am.local);\n\n return !!ssoLoginMethod;\n });\n\n /**\n * If any user in the list has an authentication method that isn't local (meaning it's SSO)\n * then we display authentication methods.\n * \n * Otherwise we don't show them, as every user list item would just say \"ClickView\"\n */\n if (userWithSSO)\n return true;\n\n return false;\n },\n\n handleAsyncErrors(\n errors: ErroredUsers,\n updatedUser: EditUserRequest,\n oldUser: User | null,\n onDone: (options: FormSubmissionOptions) => void\n ): boolean {\n const errorCodes = errors?.[0]?.errorCodes;\n\n if (!errorCodes?.length)\n return true;\n\n const errorMessages: FormikErrors<EditUserRequest> = {};\n\n if (\n errorCodes.includes(UserValidationCode.EmailAlreadyExisted) ||\n errorCodes.includes(UserValidationCode.EmailInUse)\n ) {\n if (!oldUser || oldUser.email !== updatedUser.email)\n errorMessages.email = LanguageService.getPhrase(namespace, 'emailExistsLong');\n }\n\n if (errorCodes.includes(UserValidationCode.UsernameAlreadyExisted)) {\n if (!oldUser || oldUser.username !== updatedUser.username)\n errorMessages.username = LanguageService.getPhrase(namespace, 'usernameExistsLong');\n }\n\n if (!Object.keys(errorMessages).length)\n return true;\n\n onDone({\n errors: errorMessages\n });\n\n return false;\n },\n\n getInitialErrorsForInvalidYearGroups(yearGroup: YearGroup): FormikErrors<EditUserRequest> {\n if (!yearGroup || yearGroup.value === 0)\n return {\n masterYearGroup: LanguageService.getPhrase(namespace, 'yearGroupRequired') as FormikErrors<YearGroup>\n };\n\n return {};\n }\n};","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.emailSettings';\n\nexport const EmailSettingsValidationSchema = object().shape({\n email: string()\n .required(() => LanguageService.getPhrase(namespace, 'emailRequired'))\n .email(() => LanguageService.getPhrase(namespace, 'emailInvalid'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\n\nexport function VerifiedEmailIcon(): JSX.Element {\n return (\n <SvgContainer2>\n <svg viewBox='0 0 24 24'>\n <path d='M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z'/>\n </svg>\n </SvgContainer2>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { EmailSettingsValidationSchema } from './EmailSettingsValidationSchema';\nimport { VerifiedEmailIcon } from './VerifiedEmailIcon';\n\nconst namespace = 'settings.emailSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface EmailSettingsModel {\n email: string;\n}\n\ninterface EmailSettingsProps {\n currentUser: CurrentUser;\n onChangeEmail: (emailModel: EmailSettingsModel) => void;\n}\n\nexport function EmailSettings(props: EmailSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n const isVerified = props.currentUser.emailVerified;\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4 d-flex align-items-center'>\n <Text phrase='heading' />\n {isVerified && (\n <span className='font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2'>\n <Text phrase='verified' />\n <VerifiedEmailIcon />\n </span>\n )}\n </h2>\n\n {isVerified && (\n <p><Text phrase='info' options={{ email: props.currentUser.email }} /></p>\n )}\n\n {!showForm\n ? (\n <>\n <div className='d-flex'>\n <button className='btn btn-outline-dark me-2' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n </div>\n </>\n ) : (\n <FormWrapper<EmailSettingsModel>\n initialValues={{ email: props.currentUser.email || '' }}\n onSubmit={props.onChangeEmail}\n validationSchema={EmailSettingsValidationSchema}\n >\n <Form>\n <FormField\n className='w-75'\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n autoComplete='email'\n />\n <div className={`d-flex justify-content-end w-75 ${isSmallScreen ? 'ms-n2' : ''}`}>\n {isSmallScreen && (\n <button type='button' className='btn btn-link me-2' onClick={() => setShowForm(false)}>\n <Text phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={isVerified ? getPhrase('updateEmail') : getPhrase('verifyEmail')}\n variant={isVerified ? 'outline-dark' : 'dark'}\n />\n </div>\n </Form>\n </FormWrapper>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport styles from './partial-email-settings.module.scss';\n\nexport function PartialEmailSettings(): JSX.Element {\n return (\n <div className='w-50'>\n <div className={`partial-loading-background mb-2 ${styles.partialLabel}`} />\n <div className={`partial-loading-background ${styles.partialInfo}`} />\n\n <div className='form-group'>\n <div className={`partial-loading-background ${styles.partialInput}`} />\n </div>\n <div className={`partial-loading-background ${styles.partialSubmit}`} />\n <div className={`partial-loading-background mt-2 ${styles.partialNote}`} />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField, FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.changePasswordForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChangePasswordFormProps {\n onClickCancel?: () => void;\n \n hideButtons?: boolean;\n buttonContainerClass?: string;\n buttonSize?: FormSize;\n hideCancelButton?: boolean;\n hideCurrentPassword?: boolean;\n inputWidthClass?: string;\n showChangeOnNextLogin?: boolean;\n\n submitText?: string;\n submitVariant?: ButtonProps['variant'];\n}\n\nChangePasswordForm.defaultProps = {\n submitVariant: 'outline-dark',\n buttonContainerClass: 'btn-container d-flex justify-content-end align-items-center',\n inputWidthClass: 'w-100'\n};\n\nexport function ChangePasswordForm(props: ChangePasswordFormProps): JSX.Element {\n const formikProps = useFormikContext<ChangePasswordRequest>();\n\n return (\n <Form>\n {!props.hideCurrentPassword && (\n <FormField\n className={props.inputWidthClass}\n name='currentPassword'\n label={getPhrase('currentPassword')}\n placeholder={getPhrase('currentPasswordPlaceholder')}\n type='password'\n autoComplete='current-password'\n showRequiredStar\n />\n )}\n\n <FormField\n className={props.inputWidthClass}\n name='newPassword'\n label={getPhrase('newPassword')}\n placeholder={getPhrase('newPasswordPlaceholder')}\n type='password'\n autoComplete='new-password'\n showRequiredStar\n />\n\n <FormField\n className={props.inputWidthClass}\n name='confirmPassword'\n label={getPhrase('confirmPassword')}\n placeholder={getPhrase('confirmPasswordPlaceholder')}\n type='password'\n autoComplete='off'\n showRequiredStar\n />\n\n {props.showChangeOnNextLogin &&\n <FormField\n id='changeOnNextLogin'\n name='changeOnNextLogin'\n label={getPhrase('changeOnNextLogin')}\n type='checkbox'\n checked={formikProps.values.changeOnNextLogin}\n checkboxLabelFontWeight={'normal'}\n />\n }\n \n {!props.hideButtons && (\n <div className={props.buttonContainerClass}>\n {(!props.hideCancelButton && !!props.onClickCancel) && (\n <button\n type='button'\n className={`btn btn-link me-2 ${props.buttonSize === 'lg' ? 'btn-lg' : ''}`}\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={props.submitText || getPhrase('save')}\n variant={props.submitVariant}\n size={props.buttonSize}\n />\n </div>\n )}\n </Form>\n );\n}","import { object, ref, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.passwordSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getPasswordSettingsValidationSchema = (minPasswordLength: number) => object().shape({\n currentPassword: string()\n .required(() => getPhrase('currentPasswordRequired'))\n .trim()\n .default(''),\n newPassword: string()\n .required(() => getPhrase('newPasswordRequired'))\n .min(minPasswordLength, () => getPhrase('newPasswordMinLength', { minLen: minPasswordLength }))\n .trim()\n .default(''),\n confirmPassword: string()\n .required(() => getPhrase('confirmPasswordRequired'))\n .oneOf([ ref('newPassword'), null ], () => getPhrase('passwordsDontMatch'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordForm } from 'libs/shared/apps/user-manager/components/change-password-form/ChangePasswordForm';\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\n\nimport { getPasswordSettingsValidationSchema } from './PasswordSettingsValidationSchema';\n\nconst namespace = 'settings.passwordSettings';\n\nconst initialValues: ChangePasswordRequest = {\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n};\n\ninterface PasswordSettingsProps {\n onChangePassword: (\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ) => void;\n minPasswordLength: number;\n}\n\nexport function PasswordSettings(props: PasswordSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n function onSubmitPassword(data: ChangePasswordRequest, onDone: (options?: FormSubmissionOptions) => void) {\n props.onChangePassword(data, onDone, () => onDone({ reset: true }));\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'><Text phrase='heading' /></h2>\n\n {!showForm\n ? (\n <button className='btn btn-outline-dark ' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n ) : (\n <>\n <p><Text phrase='info' /></p>\n\n <FormWrapper<ChangePasswordRequest>\n initialValues={initialValues}\n onSubmit={onSubmitPassword}\n validationSchema={getPasswordSettingsValidationSchema(props.minPasswordLength)}\n >\n <ChangePasswordForm\n onClickCancel={() => setShowForm(false)}\n hideCancelButton={!isSmallScreen}\n submitText={LanguageService.getPhrase(namespace, 'savePassword')}\n buttonContainerClass={isSmallScreen\n ? 'd-flex justify-content-end ms-n2 w-75'\n : 'd-flex justify-content-end w-75'\n }\n inputWidthClass='w-75'\n />\n </FormWrapper>\n </>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces/ChangePasswordRequest';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { EmailSettings, EmailSettingsModel } from 'apps/settings/components/email-settings/EmailSettings';\nimport { PartialEmailSettings } from 'apps/settings/components/email-settings/partial-loading/PartialEmailSettings';\nimport { PasswordSettings } from 'apps/settings/components/password-settings/PasswordSettings';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/settings/flight-requests/UserManagerRequests';\n\nconst namespace = 'settings.accountSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AccountSettingsView(): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const masterCurrentUser = Flight.useBasicFetch<User>(currentUser.data &&\n UserManagerRequests.getUser(currentUser.data.id));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n useSetPageMetadata({ title: getPhrase('heading') });\n\n function onChangeEmail(emailModel: EmailSettingsModel, onDone?: () => void): void {\n Flight.fetch(dispatch, UserManagerRequests.changeEmail(emailModel.email, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldEmail: currentUser.data.email,\n newEmail: emailModel.email\n }, {\n actionType: UserAction.VerifyEmail,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Start\n });\n\n alerts.success(getPhrase('changeEmailRequestSuccess', { email: emailModel.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('changeEmailRequestError'));\n }, onDone));\n }\n\n function onChangePassword(\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ): void {\n Flight.fetch(dispatch, UserManagerRequests.changePassword(passwordModel, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n }, {\n actionType: UserAction.ChangePassword,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('changePasswordSuccess'));\n onSuccess();\n }, ({ responseJSON }: JQuery.jqXHR) => {\n if (responseJSON.errorCode === 'user.password-too-short')\n alerts.error(getPhrase('changePasswordRequirementsError'));\n else if (responseJSON.errorCode === 'user.invalid-password')\n alerts.error(getPhrase('changePasswordInvalid'));\n else if (responseJSON.errorCode === 'user.same-password')\n alerts.error(getPhrase('changePasswordSame'));\n else if (responseJSON.errorCode === 'user.locked-out')\n alerts.error(getPhrase('changePasswordLockedOut'));\n else\n alerts.error(getPhrase('changePasswordError'));\n }, onDone));\n }\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n passwordPolicy.data,\n masterCurrentUser.data?.userType,\n currentUser.data.role\n );\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {(currentUser.data)\n ? (\n <EmailSettings\n currentUser={currentUser.data}\n onChangeEmail={onChangeEmail}\n />\n ) : <PartialEmailSettings />\n }\n </div>\n\n <hr />\n\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {passwordPolicy.data && (\n <PasswordSettings onChangePassword={onChangePassword} minPasswordLength={minPasswordLength} />\n )}\n </div>\n </SettingsLayout>\n );\n}"],"names":["UserValidationCode","FALLBACK_MIN_PASSWORD_LENGTH","namespace","StatusMap","ObjectStatus","UserManagerHelper","spreadsheetEntries","identify","u","_a","_b","_c","_e","_d","_g","_f","entry","index","self","users","duplicateSets","validUsers","usernameDuplicateLookup","user","username","emailDuplicateLookup","email","ArrayHelper","dupeSetIndex","set","userType","customerId","obj","UserRole","UserGroup","body","queryParams","Core.LocationUtils","statuses","status","newStatus","errorCodes","minPasswordLength","shortMessages","localMessage","messages","getPhrase","LanguageService","CodeToMessageMap","CodeToFieldMap","code","message","field","userRequest","hasQueryParams","customer","yearGroups","countryCode","filters","Filters","FilterHelper","securitySettings","userRole","customSetting","statusParam","convertToValue","userId","sorts","cursor","data","key","ObjectHelper","prev","current","FilterConstants","val","yearGroup","isAdmin","sort","am","errors","updatedUser","oldUser","onDone","errorMessages","EmailSettingsValidationSchema","object","string","VerifiedEmailIcon","jsx","SvgContainer2","EmailSettings","props","isSmallScreen","useMediaQuery","MediaQueryStrings","showForm","setShowForm","React","isVerified","jsxs","LanguageNamespaceContext","Text","FormWrapper","Form","FormField","FormButtons","Fragment","PartialEmailSettings","styles","ChangePasswordForm","formikProps","useFormikContext","getPasswordSettingsValidationSchema","ref","initialValues","PasswordSettings","onSubmitPassword","SecuritySettingsRequests","success","error","HttpVerbs","AccountSettingsView","dispatch","useDispatch","alerts","useAlerts","currentUser","Flight.useBasicFetch","UserRequests","masterCurrentUser","UserManagerRequests","passwordPolicy","useSetPageMetadata","onChangeEmail","emailModel","Flight.fetch","AnalyticsHelper","UserAction","EntityType","LocationContext","WorkflowPhase","onChangePassword","passwordModel","onSuccess","responseJSON","SettingsLayout"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var c=(i=>(i.Any="Any",i.Staff="Staff",i.Learner="Learner",i))(c||{}),n=(i=>(i.Draft="Draft",i.Published="Published",i.Archived="Archived",i))(n||{}),f=(i=>(i.Discover="discover",i.Classification="classification",i.ClassificationDirectory="classification-directory",i.ClassificationCurriculum="classification-curriculum",i.MoviesAndTv="movies-and-tv",i.Company="company",i.Search="search",i))(f||{});export{n as D,f as a,c as b};
2
+ //# sourceMappingURL=BdHxGaRy.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdHxGaRy.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/Dashboard.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\nimport { BaseObject, BasePaginatedCollection, CuratedWidget, CuratedWidgetContent, CuratedWidgetData } from 'libs/shared/interfaces';\n\nexport enum DashboardLearningLevel {\n Any = 'Any',\n Level_1 = 'Level_1',\n Level_2 = 'Level_2',\n Level_3 = 'Level_3',\n Level_4 = 'Level_4',\n}\n\nexport enum DashboardUserType {\n Any = 'Any',\n Staff = 'Staff',\n Learner = 'Learner',\n}\n\nexport enum DashboardStatus {\n Draft = 'Draft',\n Published = 'Published',\n Archived = 'Archived',\n}\n\nexport interface Dashboard extends BaseObject {\n libraryType: LibraryType;\n customerType: CustomerType;\n userRole: number;\n}\n\nexport interface CuratedDashboard<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BaseObject {\n contentRegion: ContentRegion;\n description: string;\n learningLevel: DashboardLearningLevel;\n userType: DashboardUserType;\n status: DashboardStatus;\n target: string;\n widgets: CuratedWidget<TWidgetData, TWidgetContent>[];\n metadata: HashObject;\n datePublished: string;\n}\n\nexport interface CuratedDashboardCollection<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BasePaginatedCollection<CuratedDashboard<TWidgetData, TWidgetContent>>{}\n\n/**\n * Dashboard identification below\n */\nexport enum DashboardTargetType {\n Discover = 'discover',\n Classification = 'classification',\n ClassificationDirectory = 'classification-directory',\n ClassificationCurriculum = 'classification-curriculum',\n MoviesAndTv = 'movies-and-tv',\n Company = 'company',\n Search = 'search'\n}\n\ninterface DiscoverDashboardInfo {\n targetType: DashboardTargetType.Discover;\n presentationId: string;\n}\n\nexport interface ClassificationDashboardInfo {\n targetType: DashboardTargetType.Classification;\n classificationId: string;\n}\n\nexport interface ClassificationDirectoryInfo {\n targetType: DashboardTargetType.ClassificationDirectory;\n classificationId: string;\n}\n\nexport interface ClassificationCurriculumInfo {\n targetType: DashboardTargetType.ClassificationCurriculum;\n classificationId: string;\n}\n\ninterface MoviesAndTvDashboardInfo {\n targetType: DashboardTargetType.MoviesAndTv;\n presentationId: string;\n}\n\nexport interface CompanyDashboardInfo {\n targetType: DashboardTargetType.Company;\n companyId: string;\n presentationId: string;\n}\n\nexport type DashboardTargetInfo = DiscoverDashboardInfo |\n ClassificationDashboardInfo |\n ClassificationDirectoryInfo |\n ClassificationCurriculumInfo |\n MoviesAndTvDashboardInfo |\n CompanyDashboardInfo;\n\nexport interface UnknownDashboardTargetInfo {\n targetType: DashboardTargetType;\n presentationId: string;\n classificationId: string;\n companyId: string;\n}"],"names":["DashboardUserType","DashboardStatus","DashboardTargetType"],"mappings":"AAeO,IAAKA,GAAAA,IACXA,EAAA,IAAM,MACNA,EAAA,MAAQ,QACRA,EAAA,QAAU,UAHCA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACXA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,SAAW,WAHAA,IAAAA,GAAA,CAAA,CAAA,EAmCAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,eAAiB,iBACjBA,EAAA,wBAA0B,2BAC1BA,EAAA,yBAA2B,4BAC3BA,EAAA,YAAc,gBACdA,EAAA,QAAU,UACVA,EAAA,OAAS,SAPCA,IAAAA,GAAA,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{j as l}from"./app-DiXzpOyg.js";const t=2;function r(e){var n;return((n=e.availableCurriculums)==null?void 0:n.length)<t||!e.selectedCurriculum?l.jsx(l.Fragment,{}):l.jsx("select",{className:`mb-3 form-select ${e.className}`,onChange:a=>e.onChangeCurriculum(a.target.value),value:e.selectedCurriculum.id,children:e.availableCurriculums.map(a=>l.jsx("option",{id:a.id,value:a.id,children:a.name},a.id))})}export{r as C};
2
+ //# sourceMappingURL=BdPgUz8g.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdPgUz8g.chunk.js","sources":["../../../../libs/shared/src/components/curriculum-links/CurriculumDropdown.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Presentation } from 'libs/shared/interfaces';\n\nconst MIN_CURRICULUMS = 2;\n\ninterface CurriculumDropdownProps {\n availableCurriculums: Presentation[];\n onChangeCurriculum: (id: string) => void;\n selectedCurriculum?: Presentation;\n className?: string;\n}\n\nexport function CurriculumDropdown(props: CurriculumDropdownProps): JSX.Element {\n // No need to show a dropdown if they don't have enough curriculums\n if (props.availableCurriculums?.length < MIN_CURRICULUMS || !props.selectedCurriculum)\n return <></>;\n\n return (\n <select\n className={`mb-3 form-select ${props.className}`}\n onChange={e => props.onChangeCurriculum(e.target.value)}\n value={props.selectedCurriculum.id}\n >\n {props.availableCurriculums.map(curriculum => {\n return (\n <option\n key={curriculum.id}\n id={curriculum.id}\n value={curriculum.id}\n >\n {curriculum.name}\n </option>\n );\n })}\n </select>\n );\n}"],"names":["MIN_CURRICULUMS","CurriculumDropdown","props","_a","jsx","Fragment","e","curriculum"],"mappings":"sCAIA,MAAMA,EAAkB,EASjB,SAASC,EAAmBC,EAA6C,OAE9E,QAAIC,EAAAD,EAAM,uBAAN,YAAAC,EAA4B,QAASH,GAAmB,CAACE,EAAM,mBAC1DE,EAAAA,IAAAC,EAAAA,SAAA,EAAE,EAGTD,EAAAA,IAAC,SAAA,CACC,UAAW,oBAAoBF,EAAM,SAAS,GAC9C,SAAUI,GAAKJ,EAAM,mBAAmBI,EAAE,OAAO,KAAK,EACtD,MAAOJ,EAAM,mBAAmB,GAE/B,SAAAA,EAAM,qBAAqB,IAAIK,GAE5BH,EAAAA,IAAC,SAAA,CAEC,GAAIG,EAAW,GACf,MAAOA,EAAW,GAEjB,SAAAA,EAAW,IAAA,EAJPA,EAAW,EAAA,CAOrB,CAAA,CAAA,CAGP"}