@clickview/curator 1.100.0-rc.1 → 1.100.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 (321) hide show
  1. package/dist/.vite/manifest.json +1779 -1779
  2. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js → -6zuD8lo.chunk.js} +2 -2
  3. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js.map → -6zuD8lo.chunk.js.map} +1 -1
  4. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js → 0A42jU2r.chunk.js} +2 -2
  5. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js.map → 0A42jU2r.chunk.js.map} +1 -1
  6. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js → 0ogjGD4J2.chunk.js} +2 -2
  7. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js.map → 0ogjGD4J2.chunk.js.map} +1 -1
  8. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js → 2aCj1HHJ2.chunk.js} +2 -2
  9. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js.map → 2aCj1HHJ2.chunk.js.map} +1 -1
  10. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js → 2zbtFQka.chunk.js} +2 -2
  11. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js.map → 2zbtFQka.chunk.js.map} +1 -1
  12. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js → 3IQ_8AZP2.chunk.js} +2 -2
  13. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js.map → 3IQ_8AZP2.chunk.js.map} +1 -1
  14. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js → 3eMwLZ5D.chunk.js} +2 -2
  15. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js.map → 3eMwLZ5D.chunk.js.map} +1 -1
  16. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js → 4Tx2JSvk2.chunk.js} +2 -2
  17. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js.map → 4Tx2JSvk2.chunk.js.map} +1 -1
  18. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js → 5uVJfyDx2.chunk.js} +2 -2
  19. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js.map → 5uVJfyDx2.chunk.js.map} +1 -1
  20. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js → 6l2s6d3Q.chunk.js} +2 -2
  21. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js.map → 6l2s6d3Q.chunk.js.map} +1 -1
  22. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js → 8RAh0VA72.chunk.js} +2 -2
  23. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js.map → 8RAh0VA72.chunk.js.map} +1 -1
  24. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js → 9nk_zFtT.chunk.js} +2 -2
  25. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js.map → 9nk_zFtT.chunk.js.map} +1 -1
  26. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js → Ae4rMqFm2.chunk.js} +2 -2
  27. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js.map → Ae4rMqFm2.chunk.js.map} +1 -1
  28. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js → B0mCquXn.chunk.js} +2 -2
  29. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js.map → B0mCquXn.chunk.js.map} +1 -1
  30. package/dist/Assets/js/dist/scripts/B1pBJzjh.chunk.js +1 -0
  31. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js → B6IinlWw2.chunk.js} +2 -2
  32. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js.map → B6IinlWw2.chunk.js.map} +1 -1
  33. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js → B6NMAAhW.chunk.js} +2 -2
  34. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js.map → B6NMAAhW.chunk.js.map} +1 -1
  35. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js → B8RZKQTs2.chunk.js} +2 -2
  36. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js.map → B8RZKQTs2.chunk.js.map} +1 -1
  37. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js → B9R92bqj.chunk.js} +2 -2
  38. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js.map → B9R92bqj.chunk.js.map} +1 -1
  39. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js → BAFYJZ4c.chunk.js} +2 -2
  40. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js.map → BAFYJZ4c.chunk.js.map} +1 -1
  41. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js → BFPSIGJg.chunk.js} +2 -2
  42. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js.map → BFPSIGJg.chunk.js.map} +1 -1
  43. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js → BGiLDtc92.chunk.js} +2 -2
  44. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js.map → BGiLDtc92.chunk.js.map} +1 -1
  45. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js → BH6LIpwu2.chunk.js} +2 -2
  46. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js.map → BH6LIpwu2.chunk.js.map} +1 -1
  47. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js → BMj3pXcm.chunk.js} +2 -2
  48. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js.map → BMj3pXcm.chunk.js.map} +1 -1
  49. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js → BQTfNBFU.chunk.js} +2 -2
  50. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js.map → BQTfNBFU.chunk.js.map} +1 -1
  51. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js → BT-jeT7C.chunk.js} +2 -2
  52. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js.map → BT-jeT7C.chunk.js.map} +1 -1
  53. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js → BUD4osIg2.chunk.js} +2 -2
  54. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js.map → BUD4osIg2.chunk.js.map} +1 -1
  55. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js → BVoG71Kc.chunk.js} +2 -2
  56. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js.map → BVoG71Kc.chunk.js.map} +1 -1
  57. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js → BW5iVK1B2.chunk.js} +2 -2
  58. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js.map → BW5iVK1B2.chunk.js.map} +1 -1
  59. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js → BW9r-3iO.chunk.js} +2 -2
  60. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js.map → BW9r-3iO.chunk.js.map} +1 -1
  61. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js → BX1tMzoa.chunk.js} +2 -2
  62. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js.map → BX1tMzoa.chunk.js.map} +1 -1
  63. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js → BXaC-l33.chunk.js} +2 -2
  64. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js.map → BXaC-l33.chunk.js.map} +1 -1
  65. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js → BY-c3M2b2.chunk.js} +2 -2
  66. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js.map → BY-c3M2b2.chunk.js.map} +1 -1
  67. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js → BYMuPFbe.chunk.js} +2 -2
  68. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js.map → BYMuPFbe.chunk.js.map} +1 -1
  69. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js → BaOAOuSc2.chunk.js} +2 -2
  70. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js.map → BaOAOuSc2.chunk.js.map} +1 -1
  71. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js → Bb_f3Lku.chunk.js} +2 -2
  72. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js.map → Bb_f3Lku.chunk.js.map} +1 -1
  73. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js → BdJYoUIO.chunk.js} +2 -2
  74. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js.map → BdJYoUIO.chunk.js.map} +1 -1
  75. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js → Bf-6iyfX2.chunk.js} +2 -2
  76. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js.map → Bf-6iyfX2.chunk.js.map} +1 -1
  77. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js → BiPUuGEE2.chunk.js} +2 -2
  78. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js.map → BiPUuGEE2.chunk.js.map} +1 -1
  79. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js → Bj4-NRWf.chunk.js} +2 -2
  80. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js.map → Bj4-NRWf.chunk.js.map} +1 -1
  81. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js → BkVcraos2.chunk.js} +2 -2
  82. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js.map → BkVcraos2.chunk.js.map} +1 -1
  83. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js → BkZ7WS_H.chunk.js} +2 -2
  84. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js.map → BkZ7WS_H.chunk.js.map} +1 -1
  85. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js → BoMt5mMW2.chunk.js} +2 -2
  86. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js.map → BoMt5mMW2.chunk.js.map} +1 -1
  87. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js → Bo_WsHZq2.chunk.js} +2 -2
  88. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js.map → Bo_WsHZq2.chunk.js.map} +1 -1
  89. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js → BpV5ErII.chunk.js} +2 -2
  90. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js.map → BpV5ErII.chunk.js.map} +1 -1
  91. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js → BrBPGjLi2.chunk.js} +2 -2
  92. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js.map → BrBPGjLi2.chunk.js.map} +1 -1
  93. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js → BrHyZG_m.chunk.js} +2 -2
  94. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js.map → BrHyZG_m.chunk.js.map} +1 -1
  95. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js → Bu4F3uuX.chunk.js} +2 -2
  96. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js.map → Bu4F3uuX.chunk.js.map} +1 -1
  97. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js → BvW9SXzy.chunk.js} +2 -2
  98. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js.map → BvW9SXzy.chunk.js.map} +1 -1
  99. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js → BwKHls91.chunk.js} +2 -2
  100. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js.map → BwKHls91.chunk.js.map} +1 -1
  101. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js → BxZNJjbX2.chunk.js} +2 -2
  102. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js.map → BxZNJjbX2.chunk.js.map} +1 -1
  103. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js → BygVW5WL.chunk.js} +2 -2
  104. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js.map → BygVW5WL.chunk.js.map} +1 -1
  105. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js → ByzsHBuo.chunk.js} +2 -2
  106. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js.map → ByzsHBuo.chunk.js.map} +1 -1
  107. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js +3 -0
  108. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js.map +1 -0
  109. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js → C0UYMHUe.chunk.js} +2 -2
  110. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js.map → C0UYMHUe.chunk.js.map} +1 -1
  111. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js → C0_pEFCD.chunk.js} +2 -2
  112. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js.map → C0_pEFCD.chunk.js.map} +1 -1
  113. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js → C2jRLu4_2.chunk.js} +2 -2
  114. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js.map → C2jRLu4_2.chunk.js.map} +1 -1
  115. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js → C2tBl3l9.chunk.js} +2 -2
  116. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js.map → C2tBl3l9.chunk.js.map} +1 -1
  117. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js → C4eazpDh.chunk.js} +2 -2
  118. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js.map → C4eazpDh.chunk.js.map} +1 -1
  119. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js → CBq4vrjT.chunk.js} +2 -2
  120. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js.map → CBq4vrjT.chunk.js.map} +1 -1
  121. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js → CBzqRw-k.chunk.js} +2 -2
  122. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js.map → CBzqRw-k.chunk.js.map} +1 -1
  123. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js → CDAdfAL02.chunk.js} +2 -2
  124. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js.map → CDAdfAL02.chunk.js.map} +1 -1
  125. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js → CE1Dxq8p.chunk.js} +2 -2
  126. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js.map → CE1Dxq8p.chunk.js.map} +1 -1
  127. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js → CG2julEA.chunk.js} +2 -2
  128. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js.map → CG2julEA.chunk.js.map} +1 -1
  129. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js → CGcN4g0d2.chunk.js} +2 -2
  130. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js.map → CGcN4g0d2.chunk.js.map} +1 -1
  131. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js → CJmV_FfR2.chunk.js} +2 -2
  132. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js.map → CJmV_FfR2.chunk.js.map} +1 -1
  133. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js → CKvVGIRL.chunk.js} +2 -2
  134. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js.map → CKvVGIRL.chunk.js.map} +1 -1
  135. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js → CL1DcbTZ.chunk.js} +2 -2
  136. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js.map → CL1DcbTZ.chunk.js.map} +1 -1
  137. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js → CNLx6_fS.chunk.js} +2 -2
  138. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js.map → CNLx6_fS.chunk.js.map} +1 -1
  139. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js → CNUVs80P.chunk.js} +2 -2
  140. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js.map → CNUVs80P.chunk.js.map} +1 -1
  141. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js → CPa__SNX.chunk.js} +2 -2
  142. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js.map → CPa__SNX.chunk.js.map} +1 -1
  143. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js → CSA2Tnv9.chunk.js} +2 -2
  144. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js.map → CSA2Tnv9.chunk.js.map} +1 -1
  145. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js → CT-xEpNT2.chunk.js} +2 -2
  146. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js.map → CT-xEpNT2.chunk.js.map} +1 -1
  147. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js → CT0vfLa0.chunk.js} +2 -2
  148. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js.map → CT0vfLa0.chunk.js.map} +1 -1
  149. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js → CUDnXypB.chunk.js} +2 -2
  150. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js.map → CUDnXypB.chunk.js.map} +1 -1
  151. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js → CeMQZB5J.chunk.js} +2 -2
  152. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js.map → CeMQZB5J.chunk.js.map} +1 -1
  153. package/dist/Assets/js/dist/scripts/Cf5cjLzK.chunk.js +2 -0
  154. package/dist/Assets/js/dist/scripts/{D2iK_uRt.chunk.js.map → Cf5cjLzK.chunk.js.map} +1 -1
  155. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js → CfGaxIgd.chunk.js} +2 -2
  156. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js.map → CfGaxIgd.chunk.js.map} +1 -1
  157. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js → Cqfub35W2.chunk.js} +2 -2
  158. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js.map → Cqfub35W2.chunk.js.map} +1 -1
  159. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js → Cv8UpP5_2.chunk.js} +2 -2
  160. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js.map → Cv8UpP5_2.chunk.js.map} +1 -1
  161. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js → CvV6jx2d.chunk.js} +2 -2
  162. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js.map → CvV6jx2d.chunk.js.map} +1 -1
  163. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js → CxENQntH.chunk.js} +2 -2
  164. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js.map → CxENQntH.chunk.js.map} +1 -1
  165. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js → CxIfJCSc.chunk.js} +2 -2
  166. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js.map → CxIfJCSc.chunk.js.map} +1 -1
  167. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js → CxggKQxV.chunk.js} +2 -2
  168. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js.map → CxggKQxV.chunk.js.map} +1 -1
  169. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js → CyNNZ1So.chunk.js} +2 -2
  170. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js.map → CyNNZ1So.chunk.js.map} +1 -1
  171. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js → Cz-WSyAE.chunk.js} +2 -2
  172. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js.map → Cz-WSyAE.chunk.js.map} +1 -1
  173. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js → D2aQFJWt2.chunk.js} +2 -2
  174. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js.map → D2aQFJWt2.chunk.js.map} +1 -1
  175. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js → D2h9W4GA2.chunk.js} +2 -2
  176. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js.map → D2h9W4GA2.chunk.js.map} +1 -1
  177. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js → D3NAhMJm.chunk.js} +2 -2
  178. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js.map → D3NAhMJm.chunk.js.map} +1 -1
  179. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js → D3aWaqBW.chunk.js} +2 -2
  180. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js.map → D3aWaqBW.chunk.js.map} +1 -1
  181. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js → D4xcR0492.chunk.js} +2 -2
  182. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js.map → D4xcR0492.chunk.js.map} +1 -1
  183. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js → D5ek2PiI.chunk.js} +2 -2
  184. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js.map → D5ek2PiI.chunk.js.map} +1 -1
  185. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js → D61ei_h6.chunk.js} +2 -2
  186. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js.map → D61ei_h6.chunk.js.map} +1 -1
  187. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js → D6wyTufc.chunk.js} +2 -2
  188. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js.map → D6wyTufc.chunk.js.map} +1 -1
  189. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js → D7I90XOo.chunk.js} +2 -2
  190. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js.map → D7I90XOo.chunk.js.map} +1 -1
  191. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js → DArfNv9S.chunk.js} +2 -2
  192. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js.map → DArfNv9S.chunk.js.map} +1 -1
  193. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js → DB-51xws2.chunk.js} +2 -2
  194. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js.map → DB-51xws2.chunk.js.map} +1 -1
  195. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js → DENdEA1F.chunk.js} +2 -2
  196. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js.map → DENdEA1F.chunk.js.map} +1 -1
  197. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js → DFYiLmms2.chunk.js} +2 -2
  198. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js.map → DFYiLmms2.chunk.js.map} +1 -1
  199. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js → DHa-x1js2.chunk.js} +2 -2
  200. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js.map → DHa-x1js2.chunk.js.map} +1 -1
  201. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js → DHeA2NJS.chunk.js} +2 -2
  202. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js.map → DHeA2NJS.chunk.js.map} +1 -1
  203. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js → DIDxfMO_.chunk.js} +2 -2
  204. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js.map → DIDxfMO_.chunk.js.map} +1 -1
  205. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js → DMq1wDNm2.chunk.js} +2 -2
  206. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js.map → DMq1wDNm2.chunk.js.map} +1 -1
  207. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js → DNWM9yfh2.chunk.js} +2 -2
  208. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js.map → DNWM9yfh2.chunk.js.map} +1 -1
  209. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js → DSj7VCEo2.chunk.js} +2 -2
  210. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js.map → DSj7VCEo2.chunk.js.map} +1 -1
  211. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js → DSvehN9D2.chunk.js} +2 -2
  212. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js.map → DSvehN9D2.chunk.js.map} +1 -1
  213. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js → DTvCgZ4c.chunk.js} +2 -2
  214. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js.map → DTvCgZ4c.chunk.js.map} +1 -1
  215. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js → DWHKdmdQ.chunk.js} +2 -2
  216. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js.map → DWHKdmdQ.chunk.js.map} +1 -1
  217. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js → DYFGF9Pe.chunk.js} +2 -2
  218. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js.map → DYFGF9Pe.chunk.js.map} +1 -1
  219. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js → DYOxTenc2.chunk.js} +2 -2
  220. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js.map → DYOxTenc2.chunk.js.map} +1 -1
  221. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js → DZthp5T62.chunk.js} +2 -2
  222. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js.map → DZthp5T62.chunk.js.map} +1 -1
  223. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js → Djgwr16q.chunk.js} +2 -2
  224. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js.map → Djgwr16q.chunk.js.map} +1 -1
  225. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js → DjnvbVQs.chunk.js} +2 -2
  226. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js.map → DjnvbVQs.chunk.js.map} +1 -1
  227. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js → DmrhyI9D2.chunk.js} +2 -2
  228. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js.map → DmrhyI9D2.chunk.js.map} +1 -1
  229. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js → DnZGILQc.chunk.js} +2 -2
  230. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js.map → DnZGILQc.chunk.js.map} +1 -1
  231. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js → DqnZw1cj.chunk.js} +2 -2
  232. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js.map → DqnZw1cj.chunk.js.map} +1 -1
  233. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js → DrAKpy8L2.chunk.js} +2 -2
  234. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js.map → DrAKpy8L2.chunk.js.map} +1 -1
  235. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js → DsM1bfoR.chunk.js} +2 -2
  236. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js.map → DsM1bfoR.chunk.js.map} +1 -1
  237. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js → Dt2TCPUI.chunk.js} +2 -2
  238. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js.map → Dt2TCPUI.chunk.js.map} +1 -1
  239. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js → DtylOK55.chunk.js} +2 -2
  240. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js.map → DtylOK55.chunk.js.map} +1 -1
  241. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js → DuTcsFNo2.chunk.js} +2 -2
  242. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js.map → DuTcsFNo2.chunk.js.map} +1 -1
  243. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js → Dw0mo6Cf.chunk.js} +2 -2
  244. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js.map → Dw0mo6Cf.chunk.js.map} +1 -1
  245. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js → DwISzabN.chunk.js} +2 -2
  246. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js.map → DwISzabN.chunk.js.map} +1 -1
  247. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js → DxW67uUT.chunk.js} +2 -2
  248. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js.map → DxW67uUT.chunk.js.map} +1 -1
  249. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js → Eg4zYYCO.chunk.js} +2 -2
  250. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js.map → Eg4zYYCO.chunk.js.map} +1 -1
  251. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js → GT6nO4Jv.chunk.js} +2 -2
  252. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js.map → GT6nO4Jv.chunk.js.map} +1 -1
  253. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js → GpDEun8c2.chunk.js} +2 -2
  254. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js.map → GpDEun8c2.chunk.js.map} +1 -1
  255. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js → OKjYL31I.chunk.js} +2 -2
  256. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js.map → OKjYL31I.chunk.js.map} +1 -1
  257. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js → OrCUhFjq2.chunk.js} +2 -2
  258. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js.map → OrCUhFjq2.chunk.js.map} +1 -1
  259. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js → SVXAAhk02.chunk.js} +2 -2
  260. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js.map → SVXAAhk02.chunk.js.map} +1 -1
  261. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js → SmmnJrec.chunk.js} +2 -2
  262. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js.map → SmmnJrec.chunk.js.map} +1 -1
  263. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js → T3BageSw2.chunk.js} +2 -2
  264. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js.map → T3BageSw2.chunk.js.map} +1 -1
  265. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js → T6xxjp_W.chunk.js} +2 -2
  266. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js.map → T6xxjp_W.chunk.js.map} +1 -1
  267. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js → Uc2eW092.chunk.js} +2 -2
  268. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js.map → Uc2eW092.chunk.js.map} +1 -1
  269. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js → XHoEdG1q.chunk.js} +2 -2
  270. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js.map → XHoEdG1q.chunk.js.map} +1 -1
  271. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js → Y14NYZ692.chunk.js} +2 -2
  272. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js.map → Y14NYZ692.chunk.js.map} +1 -1
  273. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js → Y_IcNhI9.chunk.js} +2 -2
  274. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js.map → Y_IcNhI9.chunk.js.map} +1 -1
  275. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js → Yr5eNz05.chunk.js} +2 -2
  276. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js.map → Yr5eNz05.chunk.js.map} +1 -1
  277. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js → Yrc9o6bG2.chunk.js} +2 -2
  278. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js.map → Yrc9o6bG2.chunk.js.map} +1 -1
  279. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js → app-RphP4Ht0.js} +4 -4
  280. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js.map → app-RphP4Ht0.js.map} +1 -1
  281. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js → cUgHqo-u.chunk.js} +2 -2
  282. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js.map → cUgHqo-u.chunk.js.map} +1 -1
  283. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js → dmUfJoJz2.chunk.js} +2 -2
  284. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js.map → dmUfJoJz2.chunk.js.map} +1 -1
  285. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js → fapHSEex.chunk.js} +2 -2
  286. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js.map → fapHSEex.chunk.js.map} +1 -1
  287. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js → jf0e_ii92.chunk.js} +2 -2
  288. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js.map → jf0e_ii92.chunk.js.map} +1 -1
  289. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js → kp4jXqVv.chunk.js} +2 -2
  290. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js.map → kp4jXqVv.chunk.js.map} +1 -1
  291. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js +2 -0
  292. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js.map +1 -0
  293. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js → n7lzp_Mc2.chunk.js} +2 -2
  294. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js.map → n7lzp_Mc2.chunk.js.map} +1 -1
  295. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js → nvtWO4PW2.chunk.js} +2 -2
  296. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js.map → nvtWO4PW2.chunk.js.map} +1 -1
  297. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js → oYKM19q12.chunk.js} +2 -2
  298. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js.map → oYKM19q12.chunk.js.map} +1 -1
  299. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js → ohTu1tHz.chunk.js} +2 -2
  300. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js.map → ohTu1tHz.chunk.js.map} +1 -1
  301. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js → uCRnfBEw2.chunk.js} +2 -2
  302. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js.map → uCRnfBEw2.chunk.js.map} +1 -1
  303. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js → udVWVmrH2.chunk.js} +2 -2
  304. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js.map → udVWVmrH2.chunk.js.map} +1 -1
  305. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js → v0VARBBE2.chunk.js} +2 -2
  306. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js.map → v0VARBBE2.chunk.js.map} +1 -1
  307. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js → vf9_5VGa2.chunk.js} +2 -2
  308. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js.map → vf9_5VGa2.chunk.js.map} +1 -1
  309. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js → wTEWtWoE2.chunk.js} +2 -2
  310. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js.map → wTEWtWoE2.chunk.js.map} +1 -1
  311. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js → xj8_Pfx7.chunk.js} +2 -2
  312. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js.map → xj8_Pfx7.chunk.js.map} +1 -1
  313. package/dist/bundles.json +1 -1
  314. package/dist/en.json +1 -1
  315. package/package.json +1 -1
  316. package/dist/Assets/js/dist/scripts/D2iK_uRt.chunk.js +0 -2
  317. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js +0 -3
  318. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js.map +0 -1
  319. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js +0 -2
  320. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js.map +0 -1
  321. package/dist/Assets/js/dist/scripts/DrBVabtm.chunk.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DGjNB2Bz.chunk.js","names":[],"sources":["../../../../../src/apps/users/views/user-search/UserSearchView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, User, UserCollection } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { ObjectCollection } from 'shared/components';\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { AppChannels } from 'shared/constants/RadioChannels';\n\nimport { CuratorUserRequests } from 'apps/users/flight-requests/CuratorUserRequests';\n\nfunction getUserAppLink(user: User): Core.AppLink {\n return {\n application: AppChannels.USERS,\n action: Actions.Users.EDIT_USER,\n args: [user.id],\n params: { userType: user.userType }\n };\n}\n\nfunction getTypeText(user: User): string {\n if (UserHelper.getUserRole(user) === UserRole.Admin)\n return 'Administrator';\n\n const userTypeString = UserHelper.getUserType(user);\n\n if (userTypeString === UserGroup.Unknown)\n return 'Unknown';\n\n if (userTypeString === UserGroup.Learner)\n return 'Student';\n\n if (userTypeString === UserGroup.Staff)\n return 'Staff';\n}\n\nfunction getCustomerAppLink(customer: Customer): Core.AppLink {\n return {\n application: AppChannels.CUSTOMERS,\n action: Actions.Customers.MANAGE_CUSTOMER,\n args: [customer.id]\n };\n}\n\nfunction goToSearchResults(query: string): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.USERS,\n action: Actions.Users.HOME,\n params: { query }\n });\n}\n\nfunction useMixinCustomers(users: Flight.Response<UserCollection>): Flight.Response<User[]> {\n return Flight.useBasicFetch<User[]>(!!users.data?.data?.length\n && CuratorUserRequests.getById(users.data.data.map(u => u.id)));\n}\n\ninterface UserSearchViewProps {\n query?: string;\n cursor?: string;\n}\n\nexport function UserSearchView(props: UserSearchViewProps): JSX.Element {\n /**\n * Both of the below requests will end up with the same user data so it doesn't matter which\n * one we use to render.\n */\n const userSearchResult = Flight.useBasicFetch<UserCollection>(!!props.query &&\n CuratorUserRequests.searchUsers(props.query, props.cursor, true));\n const usersWithCustomers = useMixinCustomers(userSearchResult);\n\n const isLoaded = userSearchResult.data?.data?.length ?\n usersWithCustomers.hasCompleted :\n userSearchResult.hasCompleted;\n\n return (\n <>\n <div className='pb-3 w-50'>\n {/**\n * TODO: Add instant search once backend supports it.\n */}\n <SearchBar\n initialQuery={props.query}\n placeholder='Search for a user by name, username or email...'\n onSuggestionSelected={(user: User) => Core.AppLinkHelper.trigger(getUserAppLink(user))}\n onSubmit={goToSearchResults}\n />\n </div>\n {isLoaded && (userSearchResult.data.data.length ?\n (\n <ObjectCollection\n collection={userSearchResult.data}\n columns={[\n {\n header: 'Name',\n accessor: user => `${user.name} ${user.surname}`,\n appLink: getUserAppLink\n },\n {\n header: 'Username',\n accessor: 'username',\n appLink: getUserAppLink\n },\n {\n header: 'Email',\n accessor: 'email',\n appLink: getUserAppLink\n },\n {\n header: 'Type - Customer',\n accessor: user => {\n const customers = user.customers?.data ?? [];\n\n return (\n <ul className='list-unstyled'>\n {customers.map((c, idx) => {\n const currentProfile = user.userProfiles?.data.find(profile => profile.customer.id === c.id);\n return (\n <li key={idx}>\n <AppLink appLink={getCustomerAppLink(c)}>\n <strong>{`${currentProfile?.role ? `${getTypeText(user)} - ` : ''}`}</strong>\n {`${c.name} - ${c.crmId}`}\n </AppLink>\n </li>\n );\n })}\n </ul>\n );\n }\n }\n \n ]}\n collectionAppLink={{\n application: AppChannels.USERS,\n action: Actions.Users.HOME,\n params: { query: props.query }\n }}\n />\n ) : <p>No users found, please try a different search query.</p>\n )}\n </>\n );\n}\n"],"mappings":"4cAkBA,SAAS,EAAe,EAA0B,CAChD,MAAO,CACL,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,UACtB,KAAM,CAAC,EAAK,EAAE,EACd,OAAQ,CAAE,SAAU,EAAK,QAAS,CACpC,CACF,CAEA,SAAS,EAAY,EAAoB,CACvC,GAAI,EAAW,YAAY,CAAI,IAAM,EAAS,MAC5C,MAAO,gBAET,IAAM,EAAiB,EAAW,YAAY,CAAI,EAElD,GAAI,IAAmB,EAAU,QAC/B,MAAO,UAET,GAAI,IAAmB,EAAU,QAC/B,MAAO,UAET,GAAI,IAAmB,EAAU,MAC/B,MAAO,OACX,CAEA,SAAS,EAAmB,EAAkC,CAC5D,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,EAAQ,UAAU,gBAC1B,KAAM,CAAC,EAAS,EAAE,CACpB,CACF,CAEA,SAAS,EAAkB,EAAqB,CAC9C,EAAmB,QAAQ,CACzB,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,KACtB,OAAQ,CAAE,OAAM,CAClB,CAAC,CACH,CAEA,SAAS,EAAkB,EAAiE,CAC1F,OAAO,EAA6B,CAAC,CAAC,EAAM,MAAM,MAAM,QACnD,EAAoB,QAAQ,EAAM,KAAK,KAAK,IAAI,GAAK,EAAE,EAAE,CAAC,CAAC,CAClE,CAOA,SAAgB,EAAe,EAAyC,CAKtE,IAAM,EAAmB,EAAqC,CAAC,CAAC,EAAM,OACpE,EAAoB,YAAY,EAAM,MAAO,EAAM,OAAQ,EAAI,CAAC,EAC5D,EAAqB,EAAkB,CAAgB,EAEvD,EAAW,EAAiB,MAAM,MAAM,OAC5C,EAAmB,aACnB,EAAiB,aAEnB,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sBAIb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,EAAM,MACpB,YAAY,kDACZ,qBAAuB,GAAA,EAAkC,QAAQ,EAAe,CAAI,CAAC,EACrF,SAAU,CACX,CAAA,CACE,CAAA,EACJ,IAAa,EAAiB,KAAK,KAAK,QAErC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAiB,KAC7B,QAAS,CACP,CACE,OAAQ,OACR,SAAU,GAAQ,GAAG,EAAK,KAAK,GAAG,EAAK,UACvC,QAAS,CACX,EACA,CACE,OAAQ,WACR,SAAU,WACV,QAAS,CACX,EACA,CACE,OAAQ,QACR,SAAU,QACV,QAAS,CACX,EACA,CACE,OAAQ,kBACR,SAAU,IAIN,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,0BAHE,EAAK,WAAW,MAAQ,CAAC,EAAA,CAI5B,KAAK,EAAG,IAAQ,CACzB,IAAM,EAAiB,EAAK,cAAc,KAAK,KAAK,GAAW,EAAQ,SAAS,KAAO,EAAE,EAAE,EAC3F,OACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAS,QAAS,EAAmB,CAAC,WAAtC,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,GAAG,GAAgB,KAAO,GAAG,EAAY,CAAI,EAAE,KAAO,IAAa,CAAA,EAC3E,GAAG,EAAE,KAAK,KAAK,EAAE,OACX,GACP,EALK,CAKL,CAER,CAAC,CACC,CAAA,CAGV,CAEF,EACA,kBAAmB,CACjB,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,KACtB,OAAQ,CAAE,MAAO,EAAM,KAAM,CAC/B,CACD,CAAA,GACC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAG,sDAAuD,CAAA,EAEhE,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"CUDnXypB.chunk.js","names":[],"sources":["../../../../../src/apps/users/views/user-search/UserSearchView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, User, UserCollection } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { ObjectCollection } from 'shared/components';\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { AppChannels } from 'shared/constants/RadioChannels';\n\nimport { CuratorUserRequests } from 'apps/users/flight-requests/CuratorUserRequests';\n\nfunction getUserAppLink(user: User): Core.AppLink {\n return {\n application: AppChannels.USERS,\n action: Actions.Users.EDIT_USER,\n args: [user.id],\n params: { userType: user.userType }\n };\n}\n\nfunction getTypeText(user: User): string {\n if (UserHelper.getUserRole(user) === UserRole.Admin)\n return 'Administrator';\n\n const userTypeString = UserHelper.getUserType(user);\n\n if (userTypeString === UserGroup.Unknown)\n return 'Unknown';\n\n if (userTypeString === UserGroup.Learner)\n return 'Student';\n\n if (userTypeString === UserGroup.Staff)\n return 'Staff';\n}\n\nfunction getCustomerAppLink(customer: Customer): Core.AppLink {\n return {\n application: AppChannels.CUSTOMERS,\n action: Actions.Customers.MANAGE_CUSTOMER,\n args: [customer.id]\n };\n}\n\nfunction goToSearchResults(query: string): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.USERS,\n action: Actions.Users.HOME,\n params: { query }\n });\n}\n\nfunction useMixinCustomers(users: Flight.Response<UserCollection>): Flight.Response<User[]> {\n return Flight.useBasicFetch<User[]>(!!users.data?.data?.length\n && CuratorUserRequests.getById(users.data.data.map(u => u.id)));\n}\n\ninterface UserSearchViewProps {\n query?: string;\n cursor?: string;\n}\n\nexport function UserSearchView(props: UserSearchViewProps): JSX.Element {\n /**\n * Both of the below requests will end up with the same user data so it doesn't matter which\n * one we use to render.\n */\n const userSearchResult = Flight.useBasicFetch<UserCollection>(!!props.query &&\n CuratorUserRequests.searchUsers(props.query, props.cursor, true));\n const usersWithCustomers = useMixinCustomers(userSearchResult);\n\n const isLoaded = userSearchResult.data?.data?.length ?\n usersWithCustomers.hasCompleted :\n userSearchResult.hasCompleted;\n\n return (\n <>\n <div className='pb-3 w-50'>\n {/**\n * TODO: Add instant search once backend supports it.\n */}\n <SearchBar\n initialQuery={props.query}\n placeholder='Search for a user by name, username or email...'\n onSuggestionSelected={(user: User) => Core.AppLinkHelper.trigger(getUserAppLink(user))}\n onSubmit={goToSearchResults}\n />\n </div>\n {isLoaded && (userSearchResult.data.data.length ?\n (\n <ObjectCollection\n collection={userSearchResult.data}\n columns={[\n {\n header: 'Name',\n accessor: user => `${user.name} ${user.surname}`,\n appLink: getUserAppLink\n },\n {\n header: 'Username',\n accessor: 'username',\n appLink: getUserAppLink\n },\n {\n header: 'Email',\n accessor: 'email',\n appLink: getUserAppLink\n },\n {\n header: 'Type - Customer',\n accessor: user => {\n const customers = user.customers?.data ?? [];\n\n return (\n <ul className='list-unstyled'>\n {customers.map((c, idx) => {\n const currentProfile = user.userProfiles?.data.find(profile => profile.customer.id === c.id);\n return (\n <li key={idx}>\n <AppLink appLink={getCustomerAppLink(c)}>\n <strong>{`${currentProfile?.role ? `${getTypeText(user)} - ` : ''}`}</strong>\n {`${c.name} - ${c.crmId}`}\n </AppLink>\n </li>\n );\n })}\n </ul>\n );\n }\n }\n \n ]}\n collectionAppLink={{\n application: AppChannels.USERS,\n action: Actions.Users.HOME,\n params: { query: props.query }\n }}\n />\n ) : <p>No users found, please try a different search query.</p>\n )}\n </>\n );\n}\n"],"mappings":"4cAkBA,SAAS,EAAe,EAA0B,CAChD,MAAO,CACL,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,UACtB,KAAM,CAAC,EAAK,EAAE,EACd,OAAQ,CAAE,SAAU,EAAK,QAAS,CACpC,CACF,CAEA,SAAS,EAAY,EAAoB,CACvC,GAAI,EAAW,YAAY,CAAI,IAAM,EAAS,MAC5C,MAAO,gBAET,IAAM,EAAiB,EAAW,YAAY,CAAI,EAElD,GAAI,IAAmB,EAAU,QAC/B,MAAO,UAET,GAAI,IAAmB,EAAU,QAC/B,MAAO,UAET,GAAI,IAAmB,EAAU,MAC/B,MAAO,OACX,CAEA,SAAS,EAAmB,EAAkC,CAC5D,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,EAAQ,UAAU,gBAC1B,KAAM,CAAC,EAAS,EAAE,CACpB,CACF,CAEA,SAAS,EAAkB,EAAqB,CAC9C,EAAmB,QAAQ,CACzB,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,KACtB,OAAQ,CAAE,OAAM,CAClB,CAAC,CACH,CAEA,SAAS,EAAkB,EAAiE,CAC1F,OAAO,EAA6B,CAAC,CAAC,EAAM,MAAM,MAAM,QACnD,EAAoB,QAAQ,EAAM,KAAK,KAAK,IAAI,GAAK,EAAE,EAAE,CAAC,CAAC,CAClE,CAOA,SAAgB,EAAe,EAAyC,CAKtE,IAAM,EAAmB,EAAqC,CAAC,CAAC,EAAM,OACpE,EAAoB,YAAY,EAAM,MAAO,EAAM,OAAQ,EAAI,CAAC,EAC5D,EAAqB,EAAkB,CAAgB,EAEvD,EAAW,EAAiB,MAAM,MAAM,OAC5C,EAAmB,aACnB,EAAiB,aAEnB,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sBAIb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,EAAM,MACpB,YAAY,kDACZ,qBAAuB,GAAA,EAAkC,QAAQ,EAAe,CAAI,CAAC,EACrF,SAAU,CACX,CAAA,CACE,CAAA,EACJ,IAAa,EAAiB,KAAK,KAAK,QAErC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAiB,KAC7B,QAAS,CACP,CACE,OAAQ,OACR,SAAU,GAAQ,GAAG,EAAK,KAAK,GAAG,EAAK,UACvC,QAAS,CACX,EACA,CACE,OAAQ,WACR,SAAU,WACV,QAAS,CACX,EACA,CACE,OAAQ,QACR,SAAU,QACV,QAAS,CACX,EACA,CACE,OAAQ,kBACR,SAAU,IAIN,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,0BAHE,EAAK,WAAW,MAAQ,CAAC,EAAA,CAI5B,KAAK,EAAG,IAAQ,CACzB,IAAM,EAAiB,EAAK,cAAc,KAAK,KAAK,GAAW,EAAQ,SAAS,KAAO,EAAE,EAAE,EAC3F,OACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAS,QAAS,EAAmB,CAAC,WAAtC,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,GAAG,GAAgB,KAAO,GAAG,EAAY,CAAI,EAAE,KAAO,IAAa,CAAA,EAC3E,GAAG,EAAE,KAAK,KAAK,EAAE,OACX,GACP,EALK,CAKL,CAER,CAAC,CACC,CAAA,CAGV,CAEF,EACA,kBAAmB,CACjB,YAAa,EAAY,MACzB,OAAQ,EAAQ,MAAM,KACtB,OAAQ,CAAE,MAAO,EAAM,KAAM,CAC/B,CACD,CAAA,GACC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAG,sDAAuD,CAAA,EAEhE,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./M97_Ztsu.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{t as i}from"./Da4lNxpT2.chunk.js";import{y as a}from"./BhKv6dKl2.chunk.js";import{n as o}from"./C6KIBIQi.chunk.js";import{t as s}from"./BMjA_FNA.chunk.js";import{s as c,u as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{c as d,i as f}from"./DA0I3jYA.chunk.js";import{t as p}from"./dKyhMawf.chunk.js";import{t as m}from"./BhWPGAdN2.chunk.js";import{t as h}from"./BcwM0but2.chunk.js";import{t as g}from"./ogE6FIPU2.chunk.js";import{t as _}from"./D3exV_Ay2.chunk.js";e();var v=t(),y=o(),b={traffic:()=>y.accessor(e=>e,{id:`traffic`,header:`Traffic from content region`,cell:e=>{let t=e.getValue().trafficFrom.name;return(0,v.jsx)(v.Fragment,{children:t})},size:500}),actions:(e,t)=>y.accessor(e=>e,{id:`destination`,header:`Dashboard region`,cell:r=>{let i=r.getValue().destination.contentRegion,a=r.row.original.canUpdate,o=e.find(e=>e.contentRegion===n.GLOBAL);return(0,v.jsx)(`div`,{children:(0,v.jsxs)(`select`,{className:`form-select`,value:i??``,disabled:!a,onChange:e=>{let n=e.target.value||null;t(r.row.index,n)},children:[(0,v.jsx)(`option`,{value:``,disabled:!0,children:`Select region`}),!o&&(0,v.jsx)(`option`,{value:null,children:`None`}),e.map(e=>(0,v.jsx)(`option`,{value:e.contentRegion,children:e.name},e.contentRegion))]})})},size:500})},x={table:`striped-list no-full-width pb-3`,cell:`p-2`,row:`striped-row rounded p-2`};function S(e){let{values:t,setFieldValue:n,isSubmitting:r,dirty:a}=d();function o(e,t){n(`mappings[${e}].destination.contentRegion`,t)}let c=[b.traffic(),b.actions(e.availableContentRegions,o)];return(0,v.jsx)(f,{children:(0,v.jsxs)(`div`,{className:`mt-3`,children:[(0,v.jsx)(s,{data:t.mappings,columns:c,theme:x}),(0,v.jsx)(i,{className:`mt-3`,type:`submit`,disabled:!a||r,variant:`dark`,children:`Save`})]})})}function C(e){let t=l(),i=c(r.currentUser()),o=c(h.getContentPartner(e.contentPartnerId)),s=c(o.data&&h.getRegionsMapping(o.data._slug.value)),d=u(),f=g();async function y(e){let n=e.mappings.filter(e=>e.canUpdate&&e.destination?.contentRegion!==void 0);try{await t(h.updateRegionsMapping(o.data._slug.value,n)),d.success(`Successfully updated regions mapping`)}catch{d.error(`Failed to update regions mapping`)}}let b=o.hasCompleted&&s.hasCompleted,x={mappings:[...s.data?.mappings||[]].sort((e,t)=>{let r=e.trafficFrom.contentRegion===n.GLOBAL;return r===(t.trafficFrom.contentRegion===n.GLOBAL)?e.trafficFrom.name.localeCompare(t.trafficFrom.name):r?1:-1})};return(0,v.jsxs)(v.Fragment,{children:[!!i.data&&(0,v.jsx)(_,{contentPartnerId:e.contentPartnerId,activeAction:f.viewRegionsMapping(e.contentPartnerId).action,currentUser:i.data}),b?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(a,{object:{name:`${o.data?.name} dashboard regions mapping`}}),(0,v.jsx)(p,{initialValues:x,onSubmit:y,children:(0,v.jsx)(S,{availableContentRegions:s.data.availableContentRegions})})]}):(0,v.jsx)(m,{})]})}export{C as RegionsMappingView};
2
- //# sourceMappingURL=cXanUGwK.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./M97_Ztsu.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{t as i}from"./Da4lNxpT2.chunk.js";import{y as a}from"./GpDEun8c2.chunk.js";import{n as o}from"./C6KIBIQi.chunk.js";import{t as s}from"./BMjA_FNA.chunk.js";import{s as c,u as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{c as d,i as f}from"./DA0I3jYA.chunk.js";import{t as p}from"./dKyhMawf.chunk.js";import{t as m}from"./BhWPGAdN2.chunk.js";import{t as h}from"./BcwM0but2.chunk.js";import{t as g}from"./ogE6FIPU2.chunk.js";import{t as _}from"./SVXAAhk02.chunk.js";e();var v=t(),y=o(),b={traffic:()=>y.accessor(e=>e,{id:`traffic`,header:`Traffic from content region`,cell:e=>{let t=e.getValue().trafficFrom.name;return(0,v.jsx)(v.Fragment,{children:t})},size:500}),actions:(e,t)=>y.accessor(e=>e,{id:`destination`,header:`Dashboard region`,cell:r=>{let i=r.getValue().destination.contentRegion,a=r.row.original.canUpdate,o=e.find(e=>e.contentRegion===n.GLOBAL);return(0,v.jsx)(`div`,{children:(0,v.jsxs)(`select`,{className:`form-select`,value:i??``,disabled:!a,onChange:e=>{let n=e.target.value||null;t(r.row.index,n)},children:[(0,v.jsx)(`option`,{value:``,disabled:!0,children:`Select region`}),!o&&(0,v.jsx)(`option`,{value:null,children:`None`}),e.map(e=>(0,v.jsx)(`option`,{value:e.contentRegion,children:e.name},e.contentRegion))]})})},size:500})},x={table:`striped-list no-full-width pb-3`,cell:`p-2`,row:`striped-row rounded p-2`};function S(e){let{values:t,setFieldValue:n,isSubmitting:r,dirty:a}=d();function o(e,t){n(`mappings[${e}].destination.contentRegion`,t)}let c=[b.traffic(),b.actions(e.availableContentRegions,o)];return(0,v.jsx)(f,{children:(0,v.jsxs)(`div`,{className:`mt-3`,children:[(0,v.jsx)(s,{data:t.mappings,columns:c,theme:x}),(0,v.jsx)(i,{className:`mt-3`,type:`submit`,disabled:!a||r,variant:`dark`,children:`Save`})]})})}function C(e){let t=l(),i=c(r.currentUser()),o=c(h.getContentPartner(e.contentPartnerId)),s=c(o.data&&h.getRegionsMapping(o.data._slug.value)),d=u(),f=g();async function y(e){let n=e.mappings.filter(e=>e.canUpdate&&e.destination?.contentRegion!==void 0);try{await t(h.updateRegionsMapping(o.data._slug.value,n)),d.success(`Successfully updated regions mapping`)}catch{d.error(`Failed to update regions mapping`)}}let b=o.hasCompleted&&s.hasCompleted,x={mappings:[...s.data?.mappings||[]].sort((e,t)=>{let r=e.trafficFrom.contentRegion===n.GLOBAL;return r===(t.trafficFrom.contentRegion===n.GLOBAL)?e.trafficFrom.name.localeCompare(t.trafficFrom.name):r?1:-1})};return(0,v.jsxs)(v.Fragment,{children:[!!i.data&&(0,v.jsx)(_,{contentPartnerId:e.contentPartnerId,activeAction:f.viewRegionsMapping(e.contentPartnerId).action,currentUser:i.data}),b?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(a,{object:{name:`${o.data?.name} dashboard regions mapping`}}),(0,v.jsx)(p,{initialValues:x,onSubmit:y,children:(0,v.jsx)(S,{availableContentRegions:s.data.availableContentRegions})})]}):(0,v.jsx)(m,{})]})}export{C as RegionsMappingView};
2
+ //# sourceMappingURL=CeMQZB5J.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cXanUGwK.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/regions-mapping/components/RegionsMappingTable.tsx","../../../../../src/apps/content-partners/views/regions-mapping/RegionsMappingView.tsx"],"sourcesContent":["import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { Form, useFormikContext } from 'formik';\n\nimport { TableThemeV2, TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\n\nimport { ContentPartnerRegion, ContentPartnerRegionMapping } from 'apps/content-partners/interfaces/ContentPartnerRegionsMappingResponse';\nimport { RegionsMappingFormData } from 'apps/content-partners/views/regions-mapping/RegionsMappingView';\n\nconst columnHelper = createColumnHelper<ContentPartnerRegionMapping>();\nconst RegionsMappingColumns = {\n traffic: () => columnHelper.accessor(v => v, {\n id: 'traffic',\n header: 'Traffic from content region',\n cell: props => {\n const name = props.getValue().trafficFrom.name;\n return <>{name}</>;\n },\n size: 500\n }),\n\n actions: (\n availableRegions: ContentPartnerRegion[],\n onRegionChange: (rowIndex: number, value: string | null) => void\n ) => columnHelper.accessor(v => v, {\n id: 'destination',\n header: 'Dashboard region',\n cell: props => {\n const currentValue = props.getValue().destination.contentRegion;\n const canUpdate = props.row.original.canUpdate;\n // if we have a published global region dashboard, it will become the fallback\n const hasFallback = availableRegions.find(r => r.contentRegion === ContentRegion.GLOBAL);\n\n return (\n <div>\n <select\n className='form-select'\n value={currentValue ?? ''}\n disabled={!canUpdate}\n onChange={e => {\n const value = e.target.value || null;\n onRegionChange(props.row.index, value);\n }}\n >\n <option value='' disabled>Select region</option>\n {!hasFallback && <option value={null} >None</option>}\n {availableRegions.map(region => (\n <option key={region.contentRegion} value={region.contentRegion}>\n {region.name}\n </option>\n ))}\n </select>\n </div>\n );\n },\n size: 500\n })\n};\n\nconst TABLE_THEME: TableThemeV2 = {\n table: 'striped-list no-full-width pb-3',\n cell: 'p-2',\n row: 'striped-row rounded p-2'\n};\n\ninterface RegionsMappingTableProps {\n availableContentRegions: ContentPartnerRegion[];\n}\n\nexport function RegionsMappingTable(props: RegionsMappingTableProps): JSX.Element {\n const { values, setFieldValue, isSubmitting, dirty } = useFormikContext<RegionsMappingFormData>();\n\n function handleRegionChange(rowIndex: number, value: string | null) {\n setFieldValue(`mappings[${rowIndex}].destination.contentRegion`, value);\n }\n\n const columns = [\n RegionsMappingColumns.traffic(),\n RegionsMappingColumns.actions(props.availableContentRegions, handleRegionChange)\n ];\n\n return (\n <Form>\n <div className='mt-3'>\n <TableV2\n data={values.mappings}\n columns={columns}\n theme={TABLE_THEME}\n />\n <Button\n className='mt-3'\n type='submit'\n disabled={!dirty || isSubmitting}\n variant='dark'\n >\n Save\n </Button>\n </div>\n </Form>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, PartnerProfile } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components/object-header/ObjectHeader';\n\nimport { EditContentPartnerNav } from 'apps/content-partners/components/edit-content-partner-nav/EditContentPartnerNav';\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { ContentPartnerRegionMapping, ContentPartnerRegionsMapping } from 'apps/content-partners/interfaces/ContentPartnerRegionsMappingResponse';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\nimport { RegionsMappingTable } from 'apps/content-partners/views/regions-mapping/components/RegionsMappingTable';\n\ninterface ContentPartnerReportsViewProps {\n contentPartnerId: string;\n}\n\nexport interface RegionsMappingFormData {\n mappings: ContentPartnerRegionMapping[];\n}\n\nexport function RegionsMappingView(props: ContentPartnerReportsViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const contentPartner = Flight.useBasicFetch<PartnerProfile>(\n ContentPartnerRequests.getContentPartner(props.contentPartnerId)\n );\n\n const mappings = Flight.useBasicFetch<ContentPartnerRegionsMapping>(\n contentPartner.data && ContentPartnerRequests.getRegionsMapping(contentPartner.data._slug.value)\n );\n const alert = useAlerts();\n\n const appLinks = getContentPartnerAppLinks();\n\n async function onSubmit(formData: RegionsMappingFormData) {\n const payload: ContentPartnerRegionMapping[] = formData.mappings\n .filter(m => m.canUpdate && m.destination?.contentRegion !== undefined);\n\n try {\n await fetchAsync(ContentPartnerRequests.updateRegionsMapping(contentPartner.data._slug.value, payload));\n alert.success('Successfully updated regions mapping');\n } catch {\n alert.error('Failed to update regions mapping');\n }\n }\n\n const loaded = contentPartner.hasCompleted && mappings.hasCompleted;\n\n const mappingsSorted = [...(mappings.data?.mappings || [])].sort((a, b) => {\n const aIsGlobal = a.trafficFrom.contentRegion === ContentRegion.GLOBAL;\n const bIsGlobal = b.trafficFrom.contentRegion === ContentRegion.GLOBAL;\n if (aIsGlobal !== bIsGlobal) return aIsGlobal ? 1 : -1;\n return a.trafficFrom.name.localeCompare(b.trafficFrom.name);\n });\n const initialValues: RegionsMappingFormData = {\n mappings: mappingsSorted\n };\n\n return (\n <>\n {!!currentUser.data &&\n <EditContentPartnerNav\n contentPartnerId={props.contentPartnerId}\n activeAction={appLinks.viewRegionsMapping(props.contentPartnerId).action}\n currentUser={currentUser.data}\n />\n }\n {(() => {\n if (!loaded)\n return <PopupLoadingSpinner />;\n\n return (\n <>\n <ObjectHeader object={{ name: `${contentPartner.data?.name} dashboard regions mapping` }} />\n <FormWrapper<RegionsMappingFormData>\n initialValues={initialValues}\n onSubmit={onSubmit}\n >\n <RegionsMappingTable\n availableContentRegions={mappings.data.availableContentRegions}\n />\n </FormWrapper>\n </>\n );\n })()}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CeMQZB5J.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/regions-mapping/components/RegionsMappingTable.tsx","../../../../../src/apps/content-partners/views/regions-mapping/RegionsMappingView.tsx"],"sourcesContent":["import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { Form, useFormikContext } from 'formik';\n\nimport { TableThemeV2, TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\n\nimport { ContentPartnerRegion, ContentPartnerRegionMapping } from 'apps/content-partners/interfaces/ContentPartnerRegionsMappingResponse';\nimport { RegionsMappingFormData } from 'apps/content-partners/views/regions-mapping/RegionsMappingView';\n\nconst columnHelper = createColumnHelper<ContentPartnerRegionMapping>();\nconst RegionsMappingColumns = {\n traffic: () => columnHelper.accessor(v => v, {\n id: 'traffic',\n header: 'Traffic from content region',\n cell: props => {\n const name = props.getValue().trafficFrom.name;\n return <>{name}</>;\n },\n size: 500\n }),\n\n actions: (\n availableRegions: ContentPartnerRegion[],\n onRegionChange: (rowIndex: number, value: string | null) => void\n ) => columnHelper.accessor(v => v, {\n id: 'destination',\n header: 'Dashboard region',\n cell: props => {\n const currentValue = props.getValue().destination.contentRegion;\n const canUpdate = props.row.original.canUpdate;\n // if we have a published global region dashboard, it will become the fallback\n const hasFallback = availableRegions.find(r => r.contentRegion === ContentRegion.GLOBAL);\n\n return (\n <div>\n <select\n className='form-select'\n value={currentValue ?? ''}\n disabled={!canUpdate}\n onChange={e => {\n const value = e.target.value || null;\n onRegionChange(props.row.index, value);\n }}\n >\n <option value='' disabled>Select region</option>\n {!hasFallback && <option value={null} >None</option>}\n {availableRegions.map(region => (\n <option key={region.contentRegion} value={region.contentRegion}>\n {region.name}\n </option>\n ))}\n </select>\n </div>\n );\n },\n size: 500\n })\n};\n\nconst TABLE_THEME: TableThemeV2 = {\n table: 'striped-list no-full-width pb-3',\n cell: 'p-2',\n row: 'striped-row rounded p-2'\n};\n\ninterface RegionsMappingTableProps {\n availableContentRegions: ContentPartnerRegion[];\n}\n\nexport function RegionsMappingTable(props: RegionsMappingTableProps): JSX.Element {\n const { values, setFieldValue, isSubmitting, dirty } = useFormikContext<RegionsMappingFormData>();\n\n function handleRegionChange(rowIndex: number, value: string | null) {\n setFieldValue(`mappings[${rowIndex}].destination.contentRegion`, value);\n }\n\n const columns = [\n RegionsMappingColumns.traffic(),\n RegionsMappingColumns.actions(props.availableContentRegions, handleRegionChange)\n ];\n\n return (\n <Form>\n <div className='mt-3'>\n <TableV2\n data={values.mappings}\n columns={columns}\n theme={TABLE_THEME}\n />\n <Button\n className='mt-3'\n type='submit'\n disabled={!dirty || isSubmitting}\n variant='dark'\n >\n Save\n </Button>\n </div>\n </Form>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, PartnerProfile } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components/object-header/ObjectHeader';\n\nimport { EditContentPartnerNav } from 'apps/content-partners/components/edit-content-partner-nav/EditContentPartnerNav';\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { ContentPartnerRegionMapping, ContentPartnerRegionsMapping } from 'apps/content-partners/interfaces/ContentPartnerRegionsMappingResponse';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\nimport { RegionsMappingTable } from 'apps/content-partners/views/regions-mapping/components/RegionsMappingTable';\n\ninterface ContentPartnerReportsViewProps {\n contentPartnerId: string;\n}\n\nexport interface RegionsMappingFormData {\n mappings: ContentPartnerRegionMapping[];\n}\n\nexport function RegionsMappingView(props: ContentPartnerReportsViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const contentPartner = Flight.useBasicFetch<PartnerProfile>(\n ContentPartnerRequests.getContentPartner(props.contentPartnerId)\n );\n\n const mappings = Flight.useBasicFetch<ContentPartnerRegionsMapping>(\n contentPartner.data && ContentPartnerRequests.getRegionsMapping(contentPartner.data._slug.value)\n );\n const alert = useAlerts();\n\n const appLinks = getContentPartnerAppLinks();\n\n async function onSubmit(formData: RegionsMappingFormData) {\n const payload: ContentPartnerRegionMapping[] = formData.mappings\n .filter(m => m.canUpdate && m.destination?.contentRegion !== undefined);\n\n try {\n await fetchAsync(ContentPartnerRequests.updateRegionsMapping(contentPartner.data._slug.value, payload));\n alert.success('Successfully updated regions mapping');\n } catch {\n alert.error('Failed to update regions mapping');\n }\n }\n\n const loaded = contentPartner.hasCompleted && mappings.hasCompleted;\n\n const mappingsSorted = [...(mappings.data?.mappings || [])].sort((a, b) => {\n const aIsGlobal = a.trafficFrom.contentRegion === ContentRegion.GLOBAL;\n const bIsGlobal = b.trafficFrom.contentRegion === ContentRegion.GLOBAL;\n if (aIsGlobal !== bIsGlobal) return aIsGlobal ? 1 : -1;\n return a.trafficFrom.name.localeCompare(b.trafficFrom.name);\n });\n const initialValues: RegionsMappingFormData = {\n mappings: mappingsSorted\n };\n\n return (\n <>\n {!!currentUser.data &&\n <EditContentPartnerNav\n contentPartnerId={props.contentPartnerId}\n activeAction={appLinks.viewRegionsMapping(props.contentPartnerId).action}\n currentUser={currentUser.data}\n />\n }\n {(() => {\n if (!loaded)\n return <PopupLoadingSpinner />;\n\n return (\n <>\n <ObjectHeader object={{ name: `${contentPartner.data?.name} dashboard regions mapping` }} />\n <FormWrapper<RegionsMappingFormData>\n initialValues={initialValues}\n onSubmit={onSubmit}\n >\n <RegionsMappingTable\n availableContentRegions={mappings.data.availableContentRegions}\n />\n </FormWrapper>\n </>\n );\n })()}\n </>\n );\n}\n"],"mappings":"8pBAWM,EAAe,EAAgD,EAC/D,EAAwB,CAC5B,YAAe,EAAa,SAAS,GAAK,EAAG,CAC3C,GAAI,UACJ,OAAQ,8BACR,KAAM,GAAS,CACb,IAAM,EAAO,EAAM,SAAS,CAAC,CAAC,YAAY,KAC1C,OAAO,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SAAG,CAAO,CAAA,CACnB,EACA,KAAM,GACR,CAAC,EAED,SACE,EACA,IACG,EAAa,SAAS,GAAK,EAAG,CACjC,GAAI,cACJ,OAAQ,mBACR,KAAM,GAAS,CACb,IAAM,EAAe,EAAM,SAAS,CAAC,CAAC,YAAY,cAC5C,EAAY,EAAM,IAAI,SAAS,UAE/B,EAAc,EAAiB,KAAK,GAAK,EAAE,gBAAkB,EAAc,MAAM,EAEvF,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAAC,SAAD,CACE,UAAU,cACV,MAAO,GAAgB,GACvB,SAAU,CAAC,EACX,SAAU,GAAK,CACb,IAAM,EAAQ,EAAE,OAAO,OAAS,KAChC,EAAe,EAAM,IAAI,MAAO,CAAK,CACvC,WAPF,EASE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,MAAM,GAAG,SAAA,YAAS,eAAqB,CAAA,EAC9C,CAAC,IAAe,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,MAAO,cAAO,MAAY,CAAA,EAClD,EAAiB,IAAI,IACpB,EAAA,EAAA,IAAA,CAAC,SAAD,CAAmC,MAAO,EAAO,uBAC9C,EAAO,IACF,EAFK,EAAO,aAEZ,CACT,CACK,GACL,CAAA,CAET,EACA,KAAM,GACR,CAAC,CACH,EAEM,EAA4B,CAChC,MAAO,kCACP,KAAM,MACN,IAAK,yBACP,EAMA,SAAgB,EAAoB,EAA8C,CAChF,GAAM,CAAE,SAAQ,gBAAe,eAAc,SAAU,EAAyC,EAEhG,SAAS,EAAmB,EAAkB,EAAsB,CAClE,EAAc,YAAY,EAAS,6BAA8B,CAAK,CACxE,CAEA,IAAM,EAAU,CACd,EAAsB,QAAQ,EAC9B,EAAsB,QAAQ,EAAM,wBAAyB,CAAkB,CACjF,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EAAO,SACJ,UACT,MAAO,CACR,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAU,OACV,KAAK,SACL,SAAU,CAAC,GAAS,EACpB,QAAQ,gBACT,MAEO,CAAA,CACL,GACD,CAAA,CAEV,CC3EA,SAAgB,EAAmB,EAAoD,CACrF,IAAM,EAAa,EAAwB,EACrC,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAiB,EACrB,EAAuB,kBAAkB,EAAM,gBAAgB,CACjE,EAEM,EAAW,EACf,EAAe,MAAQ,EAAuB,kBAAkB,EAAe,KAAK,MAAM,KAAK,CACjG,EACM,EAAQ,EAAU,EAElB,EAAW,EAA0B,EAE3C,eAAe,EAAS,EAAkC,CACxD,IAAM,EAAyC,EAAS,SACrD,OAAO,GAAK,EAAE,WAAa,EAAE,aAAa,gBAAkB,IAAA,EAAS,EAExE,GAAI,CACF,MAAM,EAAW,EAAuB,qBAAqB,EAAe,KAAK,MAAM,MAAO,CAAO,CAAC,EACtG,EAAM,QAAQ,sCAAsC,CACtD,MAAQ,CACN,EAAM,MAAM,kCAAkC,CAChD,CACF,CAEA,IAAM,EAAS,EAAe,cAAgB,EAAS,aAQjD,EAAwC,CAC5C,SAPqB,CAAC,GAAI,EAAS,MAAM,UAAY,CAAC,CAAE,CAAC,CAAC,MAAM,EAAG,IAAM,CACzE,IAAM,EAAY,EAAE,YAAY,gBAAkB,EAAc,OAGhE,OADI,KADc,EAAE,YAAY,gBAAkB,EAAc,QAEzD,EAAE,YAAY,KAAK,cAAc,EAAE,YAAY,IAAI,EADtB,EAAY,EAAI,EAEtD,CAEY,CACZ,EAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACxB,aAAc,EAAS,mBAAmB,EAAM,gBAAgB,CAAC,CAAC,OAClE,YAAa,EAAY,IAC1B,CAAA,EAGI,GAIH,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,CAAE,KAAM,GAAG,EAAe,MAAM,KAAK,2BAA4B,CAAI,CAAA,GAC3F,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACL,qBAEV,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,wBAAyB,EAAS,KAAK,uBACxC,CAAA,CACU,CAAA,CACb,CAAA,CAAA,GAbK,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,CAAA,CAgBjC,CAAA,CAAA,CAEN"}
@@ -0,0 +1,2 @@
1
+ import{C as e,a as t,b as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import{t as o}from"./C1PTqhPY.chunk.js";var s=r(t(),1);function c(e,t){return{userId:e.id,firstName:e.name,surname:e.surname,userType:e.userType,customerId:t,email:e.email||``,masterYearGroup:e.masterYearGroup??null,username:e.username,masterRole:e.userProfile?.role,status:e.status,displayName:e.metadata?.displayName??``}}function l(e,t,n){return{application:a.CUSTOMERS,action:t===o.Learner?i.Customers.MANAGE_STUDENTS:i.Customers.MANAGE_STAFF,args:[e],params:{cursor:n}}}function u(t,r,i){let[a,o]=(0,s.useState)(!1),[c,u]=(0,s.useState)(null);(0,s.useEffect)(()=>{t.statusCode===n.Ok&&(o(!0),u(t.data.userType)),t.statusCode===n.NotFound&&a&&e.trigger(l(r,c,i))},[t.statusCode])}export{c as n,u as r,l as t};
2
+ //# sourceMappingURL=Cf5cjLzK.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D2iK_uRt.chunk.js","names":[],"sources":["../../../../../src/apps/crm-studio/views/users/edit-user/EditUserUtils.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { AppChannels } from 'shared/constants/RadioChannels';\n\nexport function getUserInitialValues(user: User, customerId: string): EditUserRequest {\n return {\n userId: user.id,\n firstName: user.name,\n surname: user.surname,\n userType: user.userType,\n customerId,\n email: user.email || '',\n masterYearGroup: user.masterYearGroup ?? null,\n username: user.username,\n masterRole: user.userProfile?.role,\n status: user.status,\n displayName: user.metadata?.displayName ?? ''\n };\n}\n\nexport function getCustomerAppLink(customerId: string, userType: UserGroup, cursor?: string): Core.AppLink {\n return {\n application: AppChannels.CUSTOMERS,\n action: userType === UserGroup.Learner ?\n Actions.Customers.MANAGE_STUDENTS :\n Actions.Customers.MANAGE_STAFF,\n args: [customerId],\n params: { cursor }\n };\n}\n\nexport function useRedirectOnDelete(user: Flight.Response<User>, customerId: string, cursor?: string): void {\n const [ userLoaded, setUserLoaded ] = useState(false);\n // We store userType in state as it won't be accessible from Flight once the user is deleted.\n const [ userType, setUserType ] = useState(null);\n\n useEffect(() => {\n if (user.statusCode === HttpStatus.Ok) {\n setUserLoaded(true);\n setUserType(user.data.userType);\n }\n\n if (user.statusCode === HttpStatus.NotFound && userLoaded)\n Core.AppLinkHelper.trigger(getCustomerAppLink(customerId, userType, cursor));\n }, [user.statusCode]);\n}\n"],"mappings":"mMAaA,SAAgB,EAAqB,EAAY,EAAqC,CACpF,MAAO,CACL,OAAQ,EAAK,GACb,UAAW,EAAK,KAChB,QAAS,EAAK,QACd,SAAU,EAAK,SACf,aACA,MAAO,EAAK,OAAS,GACrB,gBAAiB,EAAK,iBAAmB,KACzC,SAAU,EAAK,SACf,WAAY,EAAK,aAAa,KAC9B,OAAQ,EAAK,OACb,YAAa,EAAK,UAAU,aAAe,EAC7C,CACF,CAEA,SAAgB,EAAmB,EAAoB,EAAqB,EAA+B,CACzG,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,IAAa,EAAU,QAC7B,EAAQ,UAAU,gBAClB,EAAQ,UAAU,aACpB,KAAM,CAAC,CAAU,EACjB,OAAQ,CAAE,QAAO,CACnB,CACF,CAEA,SAAgB,EAAoB,EAA6B,EAAoB,EAAuB,CAC1G,GAAM,CAAE,EAAY,IAAA,EAAA,EAAA,SAAA,CAA2B,EAAK,EAE9C,CAAE,EAAU,IAAA,EAAA,EAAA,SAAA,CAAyB,IAAI,GAE/C,EAAA,EAAA,UAAA,KAAgB,CACV,EAAK,aAAe,EAAW,KACjC,EAAc,EAAI,EAClB,EAAY,EAAK,KAAK,QAAQ,GAG5B,EAAK,aAAe,EAAW,UAAY,GAC7C,EAAmB,QAAQ,EAAmB,EAAY,EAAU,CAAM,CAAC,CAC/E,EAAG,CAAC,EAAK,UAAU,CAAC,CACtB"}
1
+ {"version":3,"file":"Cf5cjLzK.chunk.js","names":[],"sources":["../../../../../src/apps/crm-studio/views/users/edit-user/EditUserUtils.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/CuratorActions';\nimport { AppChannels } from 'shared/constants/RadioChannels';\n\nexport function getUserInitialValues(user: User, customerId: string): EditUserRequest {\n return {\n userId: user.id,\n firstName: user.name,\n surname: user.surname,\n userType: user.userType,\n customerId,\n email: user.email || '',\n masterYearGroup: user.masterYearGroup ?? null,\n username: user.username,\n masterRole: user.userProfile?.role,\n status: user.status,\n displayName: user.metadata?.displayName ?? ''\n };\n}\n\nexport function getCustomerAppLink(customerId: string, userType: UserGroup, cursor?: string): Core.AppLink {\n return {\n application: AppChannels.CUSTOMERS,\n action: userType === UserGroup.Learner ?\n Actions.Customers.MANAGE_STUDENTS :\n Actions.Customers.MANAGE_STAFF,\n args: [customerId],\n params: { cursor }\n };\n}\n\nexport function useRedirectOnDelete(user: Flight.Response<User>, customerId: string, cursor?: string): void {\n const [ userLoaded, setUserLoaded ] = useState(false);\n // We store userType in state as it won't be accessible from Flight once the user is deleted.\n const [ userType, setUserType ] = useState(null);\n\n useEffect(() => {\n if (user.statusCode === HttpStatus.Ok) {\n setUserLoaded(true);\n setUserType(user.data.userType);\n }\n\n if (user.statusCode === HttpStatus.NotFound && userLoaded)\n Core.AppLinkHelper.trigger(getCustomerAppLink(customerId, userType, cursor));\n }, [user.statusCode]);\n}\n"],"mappings":"qMAaA,SAAgB,EAAqB,EAAY,EAAqC,CACpF,MAAO,CACL,OAAQ,EAAK,GACb,UAAW,EAAK,KAChB,QAAS,EAAK,QACd,SAAU,EAAK,SACf,aACA,MAAO,EAAK,OAAS,GACrB,gBAAiB,EAAK,iBAAmB,KACzC,SAAU,EAAK,SACf,WAAY,EAAK,aAAa,KAC9B,OAAQ,EAAK,OACb,YAAa,EAAK,UAAU,aAAe,EAC7C,CACF,CAEA,SAAgB,EAAmB,EAAoB,EAAqB,EAA+B,CACzG,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,IAAa,EAAU,QAC7B,EAAQ,UAAU,gBAClB,EAAQ,UAAU,aACpB,KAAM,CAAC,CAAU,EACjB,OAAQ,CAAE,QAAO,CACnB,CACF,CAEA,SAAgB,EAAoB,EAA6B,EAAoB,EAAuB,CAC1G,GAAM,CAAE,EAAY,IAAA,EAAA,EAAA,SAAA,CAA2B,EAAK,EAE9C,CAAE,EAAU,IAAA,EAAA,EAAA,SAAA,CAAyB,IAAI,GAE/C,EAAA,EAAA,UAAA,KAAgB,CACV,EAAK,aAAe,EAAW,KACjC,EAAc,EAAI,EAClB,EAAY,EAAK,KAAK,QAAQ,GAG5B,EAAK,aAAe,EAAW,UAAY,GAC7C,EAAmB,QAAQ,EAAmB,EAAY,EAAU,CAAM,CAAC,CAC/E,EAAG,CAAC,EAAK,UAAU,CAAC,CACtB"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{b as a,y as o}from"./BhKv6dKl2.chunk.js";import{n as s}from"./CbiGs3Tn.chunk.js";import{s as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as l,t as u}from"./DmEz0Sg_2.chunk.js";import{t as d}from"./C8hLOeBc2.chunk.js";import{t as f}from"./C5i_8zoU.chunk.js";import{t as p}from"./DICjfxIb.chunk.js";import{t as m}from"./0KUhq7W7.chunk.js";e();var h=t();function g(e){return(0,h.jsxs)(p,{children:[(0,h.jsx)(p.Image,{src:d.EmptyStates.INTERACTIVES}),(0,h.jsx)(p.Heading,{children:`No interactives`}),(0,h.jsx)(p.Info,{children:`No interactives have been created on this clip yet.`}),(0,h.jsx)(p.Cta,{text:`Create an interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.NEW_INTERACTIVE,args:[e.clipId]}})]})}var _=r.INTERACTIVES,v=e=>({application:_,action:n.Interactives.PREVIEW_INTERACTIVE,args:[e.id]});function y(e){let t=c(f.clip(e.clipId)),r=c(i.currentUser()),d=c(f.clipInteractives(e.clipId)),p=!d.data||!r.data||!t.data;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(m,{clipId:e.clipId,activeAction:n.Clips.EDIT_CLIP_INTERACTIVES,currentUser:r.data}),p?(0,h.jsx)(`div`,{className:`text-center mt-5`,children:(0,h.jsx)(s,{as:`div`,animation:`border`,role:`status`})}):d.data.data.length?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(o,{object:t.data}),(0,h.jsx)(a,{collection:d.data,columns:[{header:`ID`,accessor:`id`,appLink:v},{header:`Name`,accessor:`name`,appLink:v},{header:`Description`,accessor:`description`,appLink:v},{header:`Status`,accessor:e=>(0,h.jsx)(u,{data:e.status,type:l.Status})},{header:`Creator`,accessor:e=>e.owner?.email??`Unknown`}],collectionAppLink:{application:_,action:n.Clips.EDIT_CLIP_INTERACTIVES},newObjectAppLink:{application:_,action:n.Interactives.NEW_INTERACTIVE,args:[e.clipId]},objectName:`Interactive`})]}):(0,h.jsx)(g,{clipId:e.clipId})]})}export{y as EditClipInteractivesView};
2
- //# sourceMappingURL=CRNBuqmR.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{b as a,y as o}from"./GpDEun8c2.chunk.js";import{n as s}from"./CbiGs3Tn.chunk.js";import{s as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as l,t as u}from"./DmEz0Sg_2.chunk.js";import{t as d}from"./C8hLOeBc2.chunk.js";import{t as f}from"./C5i_8zoU.chunk.js";import{t as p}from"./DICjfxIb.chunk.js";import{t as m}from"./DnZGILQc.chunk.js";e();var h=t();function g(e){return(0,h.jsxs)(p,{children:[(0,h.jsx)(p.Image,{src:d.EmptyStates.INTERACTIVES}),(0,h.jsx)(p.Heading,{children:`No interactives`}),(0,h.jsx)(p.Info,{children:`No interactives have been created on this clip yet.`}),(0,h.jsx)(p.Cta,{text:`Create an interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.NEW_INTERACTIVE,args:[e.clipId]}})]})}var _=r.INTERACTIVES,v=e=>({application:_,action:n.Interactives.PREVIEW_INTERACTIVE,args:[e.id]});function y(e){let t=c(f.clip(e.clipId)),r=c(i.currentUser()),d=c(f.clipInteractives(e.clipId)),p=!d.data||!r.data||!t.data;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(m,{clipId:e.clipId,activeAction:n.Clips.EDIT_CLIP_INTERACTIVES,currentUser:r.data}),p?(0,h.jsx)(`div`,{className:`text-center mt-5`,children:(0,h.jsx)(s,{as:`div`,animation:`border`,role:`status`})}):d.data.data.length?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(o,{object:t.data}),(0,h.jsx)(a,{collection:d.data,columns:[{header:`ID`,accessor:`id`,appLink:v},{header:`Name`,accessor:`name`,appLink:v},{header:`Description`,accessor:`description`,appLink:v},{header:`Status`,accessor:e=>(0,h.jsx)(u,{data:e.status,type:l.Status})},{header:`Creator`,accessor:e=>e.owner?.email??`Unknown`}],collectionAppLink:{application:_,action:n.Clips.EDIT_CLIP_INTERACTIVES},newObjectAppLink:{application:_,action:n.Interactives.NEW_INTERACTIVE,args:[e.clipId]},objectName:`Interactive`})]}):(0,h.jsx)(g,{clipId:e.clipId})]})}export{y as EditClipInteractivesView};
2
+ //# sourceMappingURL=CfGaxIgd.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CRNBuqmR.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-interactives/empty-state/ClipInteractiveEmptyState.tsx","../../../../../src/apps/clips/views/edit-clip-interactives/EditClipInteractivesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\ninterface ClipInteractiveEmptyStateProps {\n clipId: string;\n}\n\nexport function ClipInteractiveEmptyState(props: ClipInteractiveEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.INTERACTIVES} />\n\n <EmptyState.Heading>No interactives</EmptyState.Heading>\n <EmptyState.Info>No interactives have been created on this clip yet.</EmptyState.Info>\n\n <EmptyState.Cta\n text='Create an interactive'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.NEW_INTERACTIVE,\n args: [props.clipId]\n }}\n />\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Clip, InteractiveCollection, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { CuratorUser } from 'libs/shared/interfaces/models/User';\n\nimport { ObjectCollection, ObjectHeader } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { ClipInteractiveEmptyState } from 'apps/clips/views/edit-clip-interactives/empty-state/ClipInteractiveEmptyState';\n\nconst application = AppChannels.INTERACTIVES;\n\nconst getAppLink = (interactive: InteractiveMetadata) => ({\n application,\n action: Actions.Interactives.PREVIEW_INTERACTIVE,\n args: [interactive.id]\n});\n\ninterface EditClipInteractivesViewProps {\n clipId: string;\n}\n\nexport function EditClipInteractivesView(\n props: EditClipInteractivesViewProps\n): React.ReactElement {\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactives = Flight.useBasicFetch<InteractiveCollection>(ClipRequests.clipInteractives(props.clipId));\n\n const isLoading = !interactives.data || !currentUser.data || !clip.data;\n\n return (\n <>\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_INTERACTIVES}\n currentUser={currentUser.data}\n />\n\n {(() => {\n if (isLoading) {\n return (\n <div className='text-center mt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return interactives.data.data.length ? (\n <>\n <ObjectHeader object={clip.data} />\n <ObjectCollection\n collection={interactives.data}\n columns={[\n {\n header: 'ID',\n accessor: 'id',\n appLink: getAppLink\n },\n {\n header: 'Name',\n accessor: 'name',\n appLink: getAppLink\n },\n {\n header: 'Description',\n accessor: 'description',\n appLink: getAppLink\n },\n {\n header: 'Status',\n accessor: interactive => <Badge data={interactive.status} type={BadgeType.Status} />\n },\n {\n header: 'Creator',\n accessor: interactive => interactive.owner?.email ?? 'Unknown'\n }\n ]}\n collectionAppLink={{ application, action: Actions.Clips.EDIT_CLIP_INTERACTIVES }}\n newObjectAppLink={{ application, action: Actions.Interactives.NEW_INTERACTIVE, args: [props.clipId]}}\n objectName='Interactive'\n />\n </>\n ) : (\n <ClipInteractiveEmptyState clipId={props.clipId} />\n );\n })()}\n </>\n );\n}\n"],"mappings":"8jBAWA,SAAgB,EAA0B,EAAoD,CAC5F,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,MAAZ,CAAkB,IAAK,EAAU,YAAY,YAAe,CAAA,GAE5D,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAoB,iBAAmC,CAAA,GACvD,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAA,SAAiB,qDAAoE,CAAA,GAErF,EAAA,EAAA,IAAA,CAAC,EAAW,IAAZ,CACE,KAAK,wBACL,QAAS,CACP,YAAa,EAAY,aACzB,OAAQ,EAAQ,aAAa,gBAC7B,KAAM,CAAC,EAAM,MAAM,CACrB,CACD,CAAA,CACS,CAAA,CAAA,CAEhB,CCZA,IAAM,EAAc,EAAY,aAE1B,EAAc,IAAsC,CACxD,cACA,OAAQ,EAAQ,aAAa,oBAC7B,KAAM,CAAC,EAAY,EAAE,CACvB,GAMA,SAAgB,EACd,EACoB,CACpB,IAAM,EAAO,EAA2B,EAAa,KAAK,EAAM,MAAM,CAAC,EACjE,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAe,EAA4C,EAAa,iBAAiB,EAAM,MAAM,CAAC,EAEtG,EAAY,CAAC,EAAa,MAAQ,CAAC,EAAY,MAAQ,CAAC,EAAK,KAEnE,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAM,OACd,aAAc,EAAQ,MAAM,uBAC5B,YAAa,EAAY,IAC1B,CAAA,EAGK,GAEA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,EAIF,EAAa,KAAK,KAAK,QAC5B,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,EAAK,IAAO,CAAA,GAClC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAa,KACzB,QAAS,CACP,CACE,OAAQ,KACR,SAAU,KACV,QAAS,CACX,EACA,CACE,OAAQ,OACR,SAAU,OACV,QAAS,CACX,EACA,CACE,OAAQ,cACR,SAAU,cACV,QAAS,CACX,EACA,CACE,OAAQ,SACR,SAAU,IAAe,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,KAAM,EAAY,OAAQ,KAAM,EAAU,MAAS,CAAA,CACrF,EACA,CACE,OAAQ,UACR,SAAU,GAAe,EAAY,OAAO,OAAS,SACvD,CACF,EACA,kBAAmB,CAAE,cAAa,OAAQ,EAAQ,MAAM,sBAAuB,EAC/E,iBAAkB,CAAE,cAAa,OAAQ,EAAQ,aAAa,gBAAiB,KAAM,CAAC,EAAM,MAAM,CAAC,EACnG,WAAW,aACZ,CAAA,CACD,CAAA,CAAA,GAEF,EAAA,EAAA,IAAA,CAAC,EAAD,CAA2B,OAAQ,EAAM,MAAS,CAAA,CAGtD,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"CfGaxIgd.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-interactives/empty-state/ClipInteractiveEmptyState.tsx","../../../../../src/apps/clips/views/edit-clip-interactives/EditClipInteractivesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\ninterface ClipInteractiveEmptyStateProps {\n clipId: string;\n}\n\nexport function ClipInteractiveEmptyState(props: ClipInteractiveEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.INTERACTIVES} />\n\n <EmptyState.Heading>No interactives</EmptyState.Heading>\n <EmptyState.Info>No interactives have been created on this clip yet.</EmptyState.Info>\n\n <EmptyState.Cta\n text='Create an interactive'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.NEW_INTERACTIVE,\n args: [props.clipId]\n }}\n />\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Clip, InteractiveCollection, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { CuratorUser } from 'libs/shared/interfaces/models/User';\n\nimport { ObjectCollection, ObjectHeader } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { ClipInteractiveEmptyState } from 'apps/clips/views/edit-clip-interactives/empty-state/ClipInteractiveEmptyState';\n\nconst application = AppChannels.INTERACTIVES;\n\nconst getAppLink = (interactive: InteractiveMetadata) => ({\n application,\n action: Actions.Interactives.PREVIEW_INTERACTIVE,\n args: [interactive.id]\n});\n\ninterface EditClipInteractivesViewProps {\n clipId: string;\n}\n\nexport function EditClipInteractivesView(\n props: EditClipInteractivesViewProps\n): React.ReactElement {\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactives = Flight.useBasicFetch<InteractiveCollection>(ClipRequests.clipInteractives(props.clipId));\n\n const isLoading = !interactives.data || !currentUser.data || !clip.data;\n\n return (\n <>\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_INTERACTIVES}\n currentUser={currentUser.data}\n />\n\n {(() => {\n if (isLoading) {\n return (\n <div className='text-center mt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return interactives.data.data.length ? (\n <>\n <ObjectHeader object={clip.data} />\n <ObjectCollection\n collection={interactives.data}\n columns={[\n {\n header: 'ID',\n accessor: 'id',\n appLink: getAppLink\n },\n {\n header: 'Name',\n accessor: 'name',\n appLink: getAppLink\n },\n {\n header: 'Description',\n accessor: 'description',\n appLink: getAppLink\n },\n {\n header: 'Status',\n accessor: interactive => <Badge data={interactive.status} type={BadgeType.Status} />\n },\n {\n header: 'Creator',\n accessor: interactive => interactive.owner?.email ?? 'Unknown'\n }\n ]}\n collectionAppLink={{ application, action: Actions.Clips.EDIT_CLIP_INTERACTIVES }}\n newObjectAppLink={{ application, action: Actions.Interactives.NEW_INTERACTIVE, args: [props.clipId]}}\n objectName='Interactive'\n />\n </>\n ) : (\n <ClipInteractiveEmptyState clipId={props.clipId} />\n );\n })()}\n </>\n );\n}\n"],"mappings":"8jBAWA,SAAgB,EAA0B,EAAoD,CAC5F,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,MAAZ,CAAkB,IAAK,EAAU,YAAY,YAAe,CAAA,GAE5D,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAoB,iBAAmC,CAAA,GACvD,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAA,SAAiB,qDAAoE,CAAA,GAErF,EAAA,EAAA,IAAA,CAAC,EAAW,IAAZ,CACE,KAAK,wBACL,QAAS,CACP,YAAa,EAAY,aACzB,OAAQ,EAAQ,aAAa,gBAC7B,KAAM,CAAC,EAAM,MAAM,CACrB,CACD,CAAA,CACS,CAAA,CAAA,CAEhB,CCZA,IAAM,EAAc,EAAY,aAE1B,EAAc,IAAsC,CACxD,cACA,OAAQ,EAAQ,aAAa,oBAC7B,KAAM,CAAC,EAAY,EAAE,CACvB,GAMA,SAAgB,EACd,EACoB,CACpB,IAAM,EAAO,EAA2B,EAAa,KAAK,EAAM,MAAM,CAAC,EACjE,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAe,EAA4C,EAAa,iBAAiB,EAAM,MAAM,CAAC,EAEtG,EAAY,CAAC,EAAa,MAAQ,CAAC,EAAY,MAAQ,CAAC,EAAK,KAEnE,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAM,OACd,aAAc,EAAQ,MAAM,uBAC5B,YAAa,EAAY,IAC1B,CAAA,EAGK,GAEA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,EAIF,EAAa,KAAK,KAAK,QAC5B,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,EAAK,IAAO,CAAA,GAClC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAa,KACzB,QAAS,CACP,CACE,OAAQ,KACR,SAAU,KACV,QAAS,CACX,EACA,CACE,OAAQ,OACR,SAAU,OACV,QAAS,CACX,EACA,CACE,OAAQ,cACR,SAAU,cACV,QAAS,CACX,EACA,CACE,OAAQ,SACR,SAAU,IAAe,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,KAAM,EAAY,OAAQ,KAAM,EAAU,MAAS,CAAA,CACrF,EACA,CACE,OAAQ,UACR,SAAU,GAAe,EAAY,OAAO,OAAS,SACvD,CACF,EACA,kBAAmB,CAAE,cAAa,OAAQ,EAAQ,MAAM,sBAAuB,EAC/E,iBAAkB,CAAE,cAAa,OAAQ,EAAQ,aAAa,gBAAiB,KAAM,CAAC,EAAM,MAAM,CAAC,EACnG,WAAW,aACZ,CAAA,CACD,CAAA,CAAA,GAEF,EAAA,EAAA,IAAA,CAAC,EAAD,CAA2B,OAAQ,EAAM,MAAS,CAAA,CAGtD,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{G as r,R as i,t as a,tt as o}from"./C7Gmh7eY.chunk.js";import{t as s}from"./D-JsEiDq2.chunk.js";import{s as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";var l=n(e()),u=t();function d(e){let[t,n]=l.useState(e.initialField),d=c(r.getTopic(e.id)),{formComponent:f,next:p}=a[e.stage].forms[t];return(0,u.jsx)(o,{subStage:e.stage,pipelineId:e.pipelineId,children:(0,u.jsx)(i.Provider,{value:!!p,children:(0,u.jsx)(s,{title:d.data?.name,closePopup:e.closePopup,backdrop:`static`,showLoadingSpinner:!d.hasCompleted,children:(0,u.jsx)(f,{id:e.id,onNext:()=>n(p),closePopup:e.closePopup,stage:e.stage,theme:e.theme})})})})}export{d as EditTopicContainerView};
2
- //# sourceMappingURL=BNr7ZL3F2.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{G as r,R as i,t as a,tt as o}from"./DWHKdmdQ.chunk.js";import{t as s}from"./D-JsEiDq2.chunk.js";import{s as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";var l=n(e()),u=t();function d(e){let[t,n]=l.useState(e.initialField),d=c(r.getTopic(e.id)),{formComponent:f,next:p}=a[e.stage].forms[t];return(0,u.jsx)(o,{subStage:e.stage,pipelineId:e.pipelineId,children:(0,u.jsx)(i.Provider,{value:!!p,children:(0,u.jsx)(s,{title:d.data?.name,closePopup:e.closePopup,backdrop:`static`,showLoadingSpinner:!d.hasCompleted,children:(0,u.jsx)(f,{id:e.id,onNext:()=>n(p),closePopup:e.closePopup,stage:e.stage,theme:e.theme})})})})}export{d as EditTopicContainerView};
2
+ //# sourceMappingURL=Cqfub35W2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BNr7ZL3F2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/edit-classification/EditTopicContainerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineNextFormContext } from 'apps/assembly-line/contexts/AssemblyLineNextFormContext';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineTopic, AssemblyLineTopicField } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\n\ninterface EditTopicContainerViewProps extends PopupViewProps {\n id: string;\n stage: AssemblyLineStage;\n initialField: AssemblyLineTopicField;\n pipelineId: ContentPipelineId;\n theme?: string;\n}\n\nexport function EditTopicContainerView(props: EditTopicContainerViewProps): JSX.Element {\n const [ currentField, setCurrentField ] = React.useState<string>(props.initialField);\n\n const topic = Flight.useBasicFetch<AssemblyLineTopic>(AssemblyLineRequests.getTopic(props.id));\n\n const { formComponent: FormComponent, next } = AssemblyLineStageConfig[props.stage].forms[currentField];\n\n return (\n <AssemblyLineStageContext subStage={props.stage} pipelineId={props.pipelineId}>\n <AssemblyLineNextFormContext.Provider value={!!next}>\n <Popup\n title={topic.data?.name}\n closePopup={props.closePopup}\n backdrop='static'\n showLoadingSpinner={!topic.hasCompleted}\n >\n <FormComponent\n id={props.id}\n onNext={() => setCurrentField(next)}\n closePopup={props.closePopup}\n stage={props.stage}\n theme={props.theme}\n />\n </Popup>\n </AssemblyLineNextFormContext.Provider>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"qPAuBA,SAAgB,EAAuB,EAAiD,CACtF,GAAM,CAAE,EAAc,GAAA,EAA0B,SAAiB,EAAM,YAAY,EAE7E,EAAQ,EAAwC,EAAqB,SAAS,EAAM,EAAE,CAAC,EAEvF,CAAE,cAAe,EAAe,QAAS,EAAwB,EAAM,MAAM,CAAC,MAAM,GAE1F,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAA0B,SAAU,EAAM,MAAO,WAAY,EAAM,qBACjE,EAAA,EAAA,IAAA,CAAC,EAA4B,SAA7B,CAAsC,MAAO,CAAC,CAAC,YAC7C,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MAAM,KACnB,WAAY,EAAM,WAClB,SAAS,SACT,mBAAoB,CAAC,EAAM,uBAE3B,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,EAAM,GACV,WAAc,EAAgB,CAAI,EAClC,WAAY,EAAM,WAClB,MAAO,EAAM,MACb,MAAO,EAAM,KACd,CAAA,CACI,CAAA,CAC6B,CAAA,CACd,CAAA,CAE9B"}
1
+ {"version":3,"file":"Cqfub35W2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/edit-classification/EditTopicContainerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineNextFormContext } from 'apps/assembly-line/contexts/AssemblyLineNextFormContext';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineTopic, AssemblyLineTopicField } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\n\ninterface EditTopicContainerViewProps extends PopupViewProps {\n id: string;\n stage: AssemblyLineStage;\n initialField: AssemblyLineTopicField;\n pipelineId: ContentPipelineId;\n theme?: string;\n}\n\nexport function EditTopicContainerView(props: EditTopicContainerViewProps): JSX.Element {\n const [ currentField, setCurrentField ] = React.useState<string>(props.initialField);\n\n const topic = Flight.useBasicFetch<AssemblyLineTopic>(AssemblyLineRequests.getTopic(props.id));\n\n const { formComponent: FormComponent, next } = AssemblyLineStageConfig[props.stage].forms[currentField];\n\n return (\n <AssemblyLineStageContext subStage={props.stage} pipelineId={props.pipelineId}>\n <AssemblyLineNextFormContext.Provider value={!!next}>\n <Popup\n title={topic.data?.name}\n closePopup={props.closePopup}\n backdrop='static'\n showLoadingSpinner={!topic.hasCompleted}\n >\n <FormComponent\n id={props.id}\n onNext={() => setCurrentField(next)}\n closePopup={props.closePopup}\n stage={props.stage}\n theme={props.theme}\n />\n </Popup>\n </AssemblyLineNextFormContext.Provider>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"qPAuBA,SAAgB,EAAuB,EAAiD,CACtF,GAAM,CAAE,EAAc,GAAA,EAA0B,SAAiB,EAAM,YAAY,EAE7E,EAAQ,EAAwC,EAAqB,SAAS,EAAM,EAAE,CAAC,EAEvF,CAAE,cAAe,EAAe,QAAS,EAAwB,EAAM,MAAM,CAAC,MAAM,GAE1F,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAA0B,SAAU,EAAM,MAAO,WAAY,EAAM,qBACjE,EAAA,EAAA,IAAA,CAAC,EAA4B,SAA7B,CAAsC,MAAO,CAAC,CAAC,YAC7C,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MAAM,KACnB,WAAY,EAAM,WAClB,SAAS,SACT,mBAAoB,CAAC,EAAM,uBAE3B,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,EAAM,GACV,WAAc,EAAgB,CAAI,EAClC,WAAY,EAAM,WAClB,MAAO,EAAM,MACb,MAAO,EAAM,KACd,CAAA,CACI,CAAA,CAC6B,CAAA,CACd,CAAA,CAE9B"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./C1kx8Ra5.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{s as a,u as o}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as s}from"./Bwpvc7Th2.chunk.js";import{t as c}from"./BcwM0but2.chunk.js";import{t as l}from"./CoqIP93V2.chunk.js";import{t as u}from"./ogE6FIPU2.chunk.js";import{t as d}from"./D3exV_Ay2.chunk.js";import{t as f}from"./FBRb9Ucn2.chunk.js";import{t as p}from"./Da_9BBKD2.chunk.js";var m=n(e()),h=t();function g(e){let t=s(),n=o(),g=a(c.getContentPartner(e.contentPartnerId)),_=a(i.currentUser()),v=a(l.contentRegions()),[y,b]=m.useState(null);async function x(e){b(e)}async function S(i,a){let o=f.getPartnerLinkObjectByType(g.data.links,`website`),s=!!i.websiteLink?.length,l={...r.omit(i,[`contentRegions`,`parent`,`websiteLink`]),contentRegionIds:i.contentRegions.map(e=>e.id),websiteLink:s?i.websiteLink:null,parentId:i.parent?.id};try{if(await n(c.updateContentPartner(e.contentPartnerId,l,a,a)),o?.id&&!s&&await n(c.deleteContentPartnerLink(e.contentPartnerId,o.id)),!l.videoBanner&&g.data.videoBanner&&await n(c.deleteContentPartnerVideoBanner(e.contentPartnerId,g.data.videoBanner.id)),y)if(y.masterVideoId&&y.pendingProcessId)await n(c.updateVideoBanner(g.data._slug.value,y.masterVideoId,y.pendingProcessId)),b(null);else throw Error(`Pending video banner is not valid.`);t.success(`Successfully updated the content partner.`)}catch(e){t.error(e.responseJSON?.message||`There was an error updating the content partner. Please try again.`)}}let C=u();return(0,h.jsxs)(h.Fragment,{children:[!!_.data&&(0,h.jsx)(d,{contentPartnerId:e.contentPartnerId,activeAction:C.editContentPartner(e.contentPartnerId).action,currentUser:_.data}),!!g.data&&!!_.data&&(0,h.jsx)(p,{currentUser:_.data,contentPartner:g.data,contentRegions:v.data?.data,onSave:S,onVideoUploadComplete:x})]})}export{g as EditContentPartnerView};
2
- //# sourceMappingURL=DRmwJ1it2.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./C1kx8Ra5.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{s as a,u as o}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as s}from"./Bwpvc7Th2.chunk.js";import{t as c}from"./BcwM0but2.chunk.js";import{t as l}from"./CoqIP93V2.chunk.js";import{t as u}from"./ogE6FIPU2.chunk.js";import{t as d}from"./SVXAAhk02.chunk.js";import{t as f}from"./FBRb9Ucn2.chunk.js";import{t as p}from"./Bo_WsHZq2.chunk.js";var m=n(e()),h=t();function g(e){let t=s(),n=o(),g=a(c.getContentPartner(e.contentPartnerId)),_=a(i.currentUser()),v=a(l.contentRegions()),[y,b]=m.useState(null);async function x(e){b(e)}async function S(i,a){let o=f.getPartnerLinkObjectByType(g.data.links,`website`),s=!!i.websiteLink?.length,l={...r.omit(i,[`contentRegions`,`parent`,`websiteLink`]),contentRegionIds:i.contentRegions.map(e=>e.id),websiteLink:s?i.websiteLink:null,parentId:i.parent?.id};try{if(await n(c.updateContentPartner(e.contentPartnerId,l,a,a)),o?.id&&!s&&await n(c.deleteContentPartnerLink(e.contentPartnerId,o.id)),!l.videoBanner&&g.data.videoBanner&&await n(c.deleteContentPartnerVideoBanner(e.contentPartnerId,g.data.videoBanner.id)),y)if(y.masterVideoId&&y.pendingProcessId)await n(c.updateVideoBanner(g.data._slug.value,y.masterVideoId,y.pendingProcessId)),b(null);else throw Error(`Pending video banner is not valid.`);t.success(`Successfully updated the content partner.`)}catch(e){t.error(e.responseJSON?.message||`There was an error updating the content partner. Please try again.`)}}let C=u();return(0,h.jsxs)(h.Fragment,{children:[!!_.data&&(0,h.jsx)(d,{contentPartnerId:e.contentPartnerId,activeAction:C.editContentPartner(e.contentPartnerId).action,currentUser:_.data}),!!g.data&&!!_.data&&(0,h.jsx)(p,{currentUser:_.data,contentPartner:g.data,contentRegions:v.data?.data,onSave:S,onVideoUploadComplete:x})]})}export{g as EditContentPartnerView};
2
+ //# sourceMappingURL=Cv8UpP5_2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DRmwJ1it2.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/edit-content-partner/EditContentPartnerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { ContentRegionCollection, CurrentUser } from 'libs/shared/interfaces';\n\nimport { PendingItem } from 'shared/components/upload-video/UploadVideo';\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\nimport { ContentPartnerProfile } from 'shared/interfaces/models/ContentPartnerProfile';\n\nimport { EditContentPartner } from 'apps/content-partners/components/edit-content-partner/EditContentPartner';\nimport { EditContentPartnerNav } from 'apps/content-partners/components/edit-content-partner-nav/EditContentPartnerNav';\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { EditPartnerFormData } from 'apps/content-partners/interfaces/EditPartnerFormData';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\n\ninterface EditContentPartnerViewProps {\n contentPartnerId: string;\n}\n\nexport function EditContentPartnerView(props: EditContentPartnerViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const contentPartner = Flight.useBasicFetch<ContentPartnerProfile>(\n ContentPartnerRequests.getContentPartner(props.contentPartnerId)\n );\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const contentRegions = Flight.useBasicFetch<ContentRegionCollection>(ContentRegionRequests.contentRegions());\n\n const [ pendingVideoBanner, setPendingVideoBanner ] = React.useState<PendingItem | null>(null);\n\n async function onVideoUploadComplete(pendingItem: PendingItem) {\n setPendingVideoBanner(pendingItem);\n }\n\n async function saveContentPartner(\n data: EditPartnerFormData,\n onDone?: () => void\n ) {\n const existingWebsiteLink = ContentPartnersHelper.getPartnerLinkObjectByType(contentPartner.data.links, 'website');\n const hasCurrentWebsiteLink = !!data.websiteLink?.length;\n\n const payload = {\n ...ObjectHelper.omit(data, [ 'contentRegions', 'parent', 'websiteLink' ]),\n contentRegionIds: data.contentRegions.map(cr => cr.id),\n websiteLink: !hasCurrentWebsiteLink ? null : data.websiteLink,\n parentId: data.parent?.id\n };\n try {\n await fetchAsync(ContentPartnerRequests.updateContentPartner(\n props.contentPartnerId,\n payload,\n onDone,\n onDone\n ));\n\n // Delete the existing website link if it exists and the current website link is not set\n if (existingWebsiteLink?.id && !hasCurrentWebsiteLink) {\n await fetchAsync(ContentPartnerRequests.deleteContentPartnerLink(\n props.contentPartnerId,\n existingWebsiteLink.id\n ));\n }\n\n if (!payload.videoBanner && contentPartner.data.videoBanner) {\n await fetchAsync(ContentPartnerRequests.deleteContentPartnerVideoBanner(\n props.contentPartnerId,\n contentPartner.data.videoBanner.id\n ));\n }\n\n if (pendingVideoBanner) {\n if (pendingVideoBanner.masterVideoId && pendingVideoBanner.pendingProcessId) {\n await fetchAsync(ContentPartnerRequests.updateVideoBanner(\n contentPartner.data._slug.value,\n pendingVideoBanner.masterVideoId,\n pendingVideoBanner.pendingProcessId\n ));\n\n setPendingVideoBanner(null);\n } else {\n throw new Error('Pending video banner is not valid.');\n }\n }\n\n alerts.success('Successfully updated the content partner.');\n } catch (xhr) {\n alerts.error(xhr.responseJSON?.message || 'There was an error updating the content partner. Please try again.');\n }\n }\n\n const appLinks = getContentPartnerAppLinks();\n\n return (\n <>\n {!!currentUser.data &&\n <EditContentPartnerNav\n contentPartnerId={props.contentPartnerId}\n activeAction={appLinks.editContentPartner(props.contentPartnerId).action}\n currentUser={currentUser.data}\n />\n }\n {!!contentPartner.data && !!currentUser.data && (\n <EditContentPartner\n currentUser={currentUser.data}\n contentPartner={contentPartner.data}\n contentRegions={contentRegions.data?.data}\n onSave={saveContentPartner}\n onVideoUploadComplete={onVideoUploadComplete}\n />\n )}\n </>\n );\n}\n"],"mappings":"ogBAwBA,SAAgB,EAAuB,EAAiD,CACtF,IAAM,EAAS,EAAU,EACnB,EAAa,EAAwB,EAErC,EAAiB,EACrB,EAAuB,kBAAkB,EAAM,gBAAgB,CACjE,EACM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAiB,EAA8C,EAAsB,eAAe,CAAC,EAErG,CAAE,EAAoB,GAAA,EAAgC,SAA6B,IAAI,EAE7F,eAAe,EAAsB,EAA0B,CAC7D,EAAsB,CAAW,CACnC,CAEA,eAAe,EACb,EACA,EACA,CACA,IAAM,EAAsB,EAAsB,2BAA2B,EAAe,KAAK,MAAO,SAAS,EAC3G,EAAwB,CAAC,CAAC,EAAK,aAAa,OAE5C,EAAU,CACd,GAAG,EAAa,KAAK,EAAM,CAAE,iBAAkB,SAAU,aAAc,CAAC,EACxE,iBAAkB,EAAK,eAAe,IAAI,GAAM,EAAG,EAAE,EACrD,YAAc,EAA+B,EAAK,YAAZ,KACtC,SAAU,EAAK,QAAQ,EACzB,EACA,GAAI,CAuBF,GAtBA,MAAM,EAAW,EAAuB,qBACtC,EAAM,iBACN,EACA,EACA,CACF,CAAC,EAGG,GAAqB,IAAM,CAAC,GAC9B,MAAM,EAAW,EAAuB,yBACtC,EAAM,iBACN,EAAoB,EACtB,CAAC,EAGC,CAAC,EAAQ,aAAe,EAAe,KAAK,aAC9C,MAAM,EAAW,EAAuB,gCACtC,EAAM,iBACN,EAAe,KAAK,YAAY,EAClC,CAAC,EAGC,EACF,GAAI,EAAmB,eAAiB,EAAmB,iBACzD,MAAM,EAAW,EAAuB,kBACtC,EAAe,KAAK,MAAM,MAC1B,EAAmB,cACnB,EAAmB,gBACrB,CAAC,EAED,EAAsB,IAAI,OAE1B,MAAU,MAAM,oCAAoC,EAIxD,EAAO,QAAQ,2CAA2C,CAC5D,OAAS,EAAK,CACZ,EAAO,MAAM,EAAI,cAAc,SAAW,oEAAoE,CAChH,CACF,CAEA,IAAM,EAAW,EAA0B,EAE3C,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACxB,aAAc,EAAS,mBAAmB,EAAM,gBAAgB,CAAC,CAAC,OAClE,YAAa,EAAY,IAC1B,CAAA,EAEF,CAAC,CAAC,EAAe,MAAQ,CAAC,CAAC,EAAY,OACtC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,eAAgB,EAAe,KAC/B,eAAgB,EAAe,MAAM,KACrC,OAAQ,EACe,uBACxB,CAAA,CAEH,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"Cv8UpP5_2.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/edit-content-partner/EditContentPartnerView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContentPartnersHelper } from 'libs/shared/apps/content-partners/utils/ContentPartnersHelper';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { ContentRegionCollection, CurrentUser } from 'libs/shared/interfaces';\n\nimport { PendingItem } from 'shared/components/upload-video/UploadVideo';\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\nimport { ContentPartnerProfile } from 'shared/interfaces/models/ContentPartnerProfile';\n\nimport { EditContentPartner } from 'apps/content-partners/components/edit-content-partner/EditContentPartner';\nimport { EditContentPartnerNav } from 'apps/content-partners/components/edit-content-partner-nav/EditContentPartnerNav';\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { EditPartnerFormData } from 'apps/content-partners/interfaces/EditPartnerFormData';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\n\ninterface EditContentPartnerViewProps {\n contentPartnerId: string;\n}\n\nexport function EditContentPartnerView(props: EditContentPartnerViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const contentPartner = Flight.useBasicFetch<ContentPartnerProfile>(\n ContentPartnerRequests.getContentPartner(props.contentPartnerId)\n );\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const contentRegions = Flight.useBasicFetch<ContentRegionCollection>(ContentRegionRequests.contentRegions());\n\n const [ pendingVideoBanner, setPendingVideoBanner ] = React.useState<PendingItem | null>(null);\n\n async function onVideoUploadComplete(pendingItem: PendingItem) {\n setPendingVideoBanner(pendingItem);\n }\n\n async function saveContentPartner(\n data: EditPartnerFormData,\n onDone?: () => void\n ) {\n const existingWebsiteLink = ContentPartnersHelper.getPartnerLinkObjectByType(contentPartner.data.links, 'website');\n const hasCurrentWebsiteLink = !!data.websiteLink?.length;\n\n const payload = {\n ...ObjectHelper.omit(data, [ 'contentRegions', 'parent', 'websiteLink' ]),\n contentRegionIds: data.contentRegions.map(cr => cr.id),\n websiteLink: !hasCurrentWebsiteLink ? null : data.websiteLink,\n parentId: data.parent?.id\n };\n try {\n await fetchAsync(ContentPartnerRequests.updateContentPartner(\n props.contentPartnerId,\n payload,\n onDone,\n onDone\n ));\n\n // Delete the existing website link if it exists and the current website link is not set\n if (existingWebsiteLink?.id && !hasCurrentWebsiteLink) {\n await fetchAsync(ContentPartnerRequests.deleteContentPartnerLink(\n props.contentPartnerId,\n existingWebsiteLink.id\n ));\n }\n\n if (!payload.videoBanner && contentPartner.data.videoBanner) {\n await fetchAsync(ContentPartnerRequests.deleteContentPartnerVideoBanner(\n props.contentPartnerId,\n contentPartner.data.videoBanner.id\n ));\n }\n\n if (pendingVideoBanner) {\n if (pendingVideoBanner.masterVideoId && pendingVideoBanner.pendingProcessId) {\n await fetchAsync(ContentPartnerRequests.updateVideoBanner(\n contentPartner.data._slug.value,\n pendingVideoBanner.masterVideoId,\n pendingVideoBanner.pendingProcessId\n ));\n\n setPendingVideoBanner(null);\n } else {\n throw new Error('Pending video banner is not valid.');\n }\n }\n\n alerts.success('Successfully updated the content partner.');\n } catch (xhr) {\n alerts.error(xhr.responseJSON?.message || 'There was an error updating the content partner. Please try again.');\n }\n }\n\n const appLinks = getContentPartnerAppLinks();\n\n return (\n <>\n {!!currentUser.data &&\n <EditContentPartnerNav\n contentPartnerId={props.contentPartnerId}\n activeAction={appLinks.editContentPartner(props.contentPartnerId).action}\n currentUser={currentUser.data}\n />\n }\n {!!contentPartner.data && !!currentUser.data && (\n <EditContentPartner\n currentUser={currentUser.data}\n contentPartner={contentPartner.data}\n contentRegions={contentRegions.data?.data}\n onSave={saveContentPartner}\n onVideoUploadComplete={onVideoUploadComplete}\n />\n )}\n </>\n );\n}\n"],"mappings":"ogBAwBA,SAAgB,EAAuB,EAAiD,CACtF,IAAM,EAAS,EAAU,EACnB,EAAa,EAAwB,EAErC,EAAiB,EACrB,EAAuB,kBAAkB,EAAM,gBAAgB,CACjE,EACM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAiB,EAA8C,EAAsB,eAAe,CAAC,EAErG,CAAE,EAAoB,GAAA,EAAgC,SAA6B,IAAI,EAE7F,eAAe,EAAsB,EAA0B,CAC7D,EAAsB,CAAW,CACnC,CAEA,eAAe,EACb,EACA,EACA,CACA,IAAM,EAAsB,EAAsB,2BAA2B,EAAe,KAAK,MAAO,SAAS,EAC3G,EAAwB,CAAC,CAAC,EAAK,aAAa,OAE5C,EAAU,CACd,GAAG,EAAa,KAAK,EAAM,CAAE,iBAAkB,SAAU,aAAc,CAAC,EACxE,iBAAkB,EAAK,eAAe,IAAI,GAAM,EAAG,EAAE,EACrD,YAAc,EAA+B,EAAK,YAAZ,KACtC,SAAU,EAAK,QAAQ,EACzB,EACA,GAAI,CAuBF,GAtBA,MAAM,EAAW,EAAuB,qBACtC,EAAM,iBACN,EACA,EACA,CACF,CAAC,EAGG,GAAqB,IAAM,CAAC,GAC9B,MAAM,EAAW,EAAuB,yBACtC,EAAM,iBACN,EAAoB,EACtB,CAAC,EAGC,CAAC,EAAQ,aAAe,EAAe,KAAK,aAC9C,MAAM,EAAW,EAAuB,gCACtC,EAAM,iBACN,EAAe,KAAK,YAAY,EAClC,CAAC,EAGC,EACF,GAAI,EAAmB,eAAiB,EAAmB,iBACzD,MAAM,EAAW,EAAuB,kBACtC,EAAe,KAAK,MAAM,MAC1B,EAAmB,cACnB,EAAmB,gBACrB,CAAC,EAED,EAAsB,IAAI,OAE1B,MAAU,MAAM,oCAAoC,EAIxD,EAAO,QAAQ,2CAA2C,CAC5D,OAAS,EAAK,CACZ,EAAO,MAAM,EAAI,cAAc,SAAW,oEAAoE,CAChH,CACF,CAEA,IAAM,EAAW,EAA0B,EAE3C,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACxB,aAAc,EAAS,mBAAmB,EAAM,gBAAgB,CAAC,CAAC,OAClE,YAAa,EAAY,IAC1B,CAAA,EAEF,CAAC,CAAC,EAAe,MAAQ,CAAC,CAAC,EAAY,OACtC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,eAAgB,EAAe,KAC/B,eAAgB,EAAe,MAAM,KACrC,OAAQ,EACe,uBACxB,CAAA,CAEH,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{a as r,n as i}from"./Crs6pJ2h.chunk.js";import{t as a}from"./Di_u2uix.chunk.js";import{t as o}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as s,K as c,X as l,t as u}from"./C7Gmh7eY.chunk.js";import{t as d}from"./CLCeObem2.chunk.js";import{t as f}from"./cwPDEI372.chunk.js";import{t as p}from"./DbAhNsCO2.chunk.js";import{t as m}from"./D-JsEiDq2.chunk.js";import{t as h}from"./CHTOLKFB.chunk.js";import{s as g,u as _}from"./Dgk5cBBe.chunk.js";import{t as v}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as y}from"./Bwpvc7Th2.chunk.js";import{t as b}from"./D10cUDG82.chunk.js";import{t as x}from"./suzdRjwd.chunk.js";import{t as S}from"./CZyPFSXo.chunk.js";import{t as C}from"./RUvwm6_V.chunk.js";import{c as w,i as T}from"./DA0I3jYA.chunk.js";import{t as E}from"./dKyhMawf.chunk.js";import{t as D}from"./Broadxiw.chunk.js";import{t as O}from"./D0JviwKV2.chunk.js";import{n as k}from"./C4Ey4nzb2.chunk.js";import{t as A}from"./2NdfwDHB.chunk.js";import{t as j}from"./CJnHr1ww2.chunk.js";import{t as M}from"./Dy4nscVE2.chunk.js";import{t as N}from"./BQUnEGe12.chunk.js";import{t as P}from"./0S5J0xX22.chunk.js";import{t as F}from"./CcZKy7SH.chunk.js";var I=n(e()),L=t();function R(e){let[t,n]=I.useState();if(!e.templates||!e.templates.length)return(0,L.jsx)(`div`,{className:`alert alert-info`,children:`You don't have any saved reports for ${e.entityType} yet. Go to the new report page to create one.`});function r(){e.onGenerateByTemplate(t)}return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`h3`,{className:`h6 mb-2`,children:`Select a saved report template`}),e.templates.map(e=>(0,L.jsxs)(`div`,{className:`my-2 d-flex align-items-center justify-content-between`,children:[(0,L.jsx)(p.Check,{type:`radio`,id:e.id,name:e.id,label:e.name,checked:t?.id===e.id,onChange:()=>{n(e)}}),(0,L.jsxs)(`div`,{className:`d-flex cursor-pointer`,children:[(0,L.jsx)(D,{appLink:{application:o.ASSEMBLY_LINE,action:a.AssemblyLine.EDIT_REPORT_TEMPLATE,args:[e.id]},svg:b}),(0,L.jsx)(D,{appLink:{application:o.ASSEMBLY_LINE,action:a.AssemblyLine.DELETE_REPORT_TEMPLATE,args:[e.id]},svg:A})]})]},e.id)),(0,L.jsx)(O,{children:(0,L.jsx)(O.Submit,{variant:`dark`,text:`Generate`,onClick:r,disabled:!t})})]})}var z={container:`_container_1g6z5_1`};function B(e){let t=w();return(0,L.jsx)(k,{name:e.field,id:e.field,value:t.values[e.field],children:()=>(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,L.jsxs)(`span`,{children:[(0,L.jsx)(`label`,{className:`form-label`,htmlFor:e.field,children:e.label}),e.infoTooltip&&(0,L.jsx)(r,{spanHack:!0,spanHackClassName:`d-inline`,title:e.infoTooltip,children:(0,L.jsx)(i,{svg:C})}),(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(h,{id:`all-${e.field}`,label:`Select all`,checked:t.values[e.field].length===e.options.length,onChange:n=>{t.setFieldTouched(e.field,!0),n.target.checked?t.setFieldValue(e.field,[...e.options.map(e=>e.id)]):t.setFieldValue(e.field,[])}})]}),(0,L.jsx)(`div`,{className:`border rounded px-2 py-1 ${z.container}`,children:(0,L.jsxs)(`div`,{className:`${e.showInTwoCols?`row px-2`:``}`,children:[e.defaultSelected?.map(t=>(0,L.jsx)(h,{onChange:()=>{},className:`${e.showInTwoCols?` col-6`:``}`,id:t.id,label:t.id,checked:!0,disabled:!0},t.id)),e.options.map(n=>(0,L.jsx)(h,{className:`${e.showInTwoCols?`my-1 col-6`:`py-1`}`,id:n.id,label:n.description||n.name,checked:!!t.values[e.field].find(e=>e===n.id),onChange:()=>{t.setFieldTouched(e.field,!0),t.values[e.field].includes(n.id)?t.setFieldValue(e.field,t.values[e.field].filter(e=>e!==n.id)):t.setFieldValue(e.field,[...t.values[e.field],n.id])}},n.id))]})})]})})}function V(e){let t=w(),n=e.presentations.find(e=>e.id===t.values.presentationId);return(0,L.jsx)(k,{label:`Select a presentation`,name:`presentation`,id:`presentationId`,value:t.values.presentationId,children:()=>(0,L.jsx)(`div`,{className:`mb-2`,children:(0,L.jsx)(F,{stage:`curated_topic`,presentations:e.presentations,setPresentation:e=>{t.setFieldValue(`presentationId`,e)},selectedPresentation:n,objectType:`video`})})})}var H=[`ID`,`Name`],U=`content-pipeline-report`;function W(e){let[t,n]=I.useState(`new`),[r,i]=I.useState(!1),a=w(),o=a.values.scopeType,s=a.values.scopeType===`library`?e.libraries:e.presentations,c=e.columns.filter(e=>!H.find(t=>t===e)),l=a.values.scopeType===`library`?`libraries`:`presentations`,d=[{name:`New Report`,active:t===`new`,onSelect:()=>n(`new`)},{name:`Saved Reports`,active:t===`previous`,onSelect:()=>n(`previous`)}];function f(t){let n=e.objectType===`dashboard`?`curated-topic`:e.objectType;return t.length===0?`${n}-${U}`:a.values.scopeType===`library`?t.length===1?`${n}-${e.libraries.find(e=>e.id.toString()===t[0].toString()).description}-${U}`:`${n}-${t.length}-libraries-${U}`:a.values.scopeType===`presentation`?t.length===1?`${n}-${e.presentations.find(e=>e.id.toString()===t[0].toString()).description}-${U}`:`${n}-${t.length}-presentations-${U}`:``}I.useEffect(()=>{if(a.touched.reportName)return;let e=f(a.values.scopes);a.setFieldValue(`reportName`,e)},[a.values.scopes.join(`,`),a.touched.reportName]);function m(){e.onSubmit(a.values,r)}return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{children:(0,L.jsx)(N,{tabs:d,className:`mb-3`})}),t===`new`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(T,{children:[(0,L.jsx)(B,{field:`scopes`,label:`Select ${l}`,options:s.map(e=>({id:e.id.toString(),name:e.name,description:e.description}))}),(0,L.jsx)(B,{field:`stages`,label:`Select stages`,options:e.stages.map(e=>({id:e,name:u[e].label}))}),o===`library`&&(0,L.jsx)(V,{presentations:e.presentations}),(0,L.jsxs)(`div`,{className:`my-3`,children:[(0,L.jsx)(`label`,{className:`form-label`,htmlFor:`stage`,children:`Select filters`}),(0,L.jsx)(P,{initialState:a.values.filters,queryParams:e.queryParams,columns:e.columns,showInDropdown:!1,options:e.filterOptions,onFiltersChange:e=>{a.setFieldValue(`filters`,e)}}),a.errors.filters?.length>0&&(0,L.jsx)(`div`,{className:`d-block invalid-feedback`,children:`Has invalid filters`})]}),(0,L.jsx)(B,{showInTwoCols:!0,field:`columns`,label:`Select columns`,options:c.map(e=>({id:e,name:e})),defaultSelected:H.map(e=>({id:e,name:e})),infoTooltip:`The order that you select the columns is the same order they will appear in the report`}),(0,L.jsx)(k,{id:`report-name`,name:`reportName`,value:a.values.reportName,label:`Report name`,type:`text`}),(0,L.jsx)(p.Check,{type:`checkbox`,id:`save-template`,name:`save-template`,className:`mb-2`,checked:r,onChange:e=>{i(e.target.checked)},label:`Save this report as a template`})]}),(0,L.jsx)(O,{children:(0,L.jsx)(O.Submit,{variant:`dark`,text:`Generate`,onClick:m,disabled:!a.dirty||!a.isValid})})]}):(0,L.jsx)(R,{templates:e.reportTemplates,entityType:e.objectType,onGenerateByTemplate:e.onGenerateByTemplate})]})}var G=n(d());function K(e){return G.object().shape({scopes:G.array().of(G.string()).required().min(1),stages:G.array().of(G.string()).required().min(1),columns:G.array().of(G.string()),filters:G.array().of(G.object().test(`filters`,`Invalid filter`,t=>c.isFilterValid(t,e))).default([]),reportName:G.string().required(`Report name is required`)})}function q(e){let t=y(),n=M(e.params,e.params.stage),r=u[e.params.stage].objectType,i=g(s.getReportTemplates(r)),a=Object.entries(u).filter(([,e])=>e.objectType===r&&!!e.inReport).map(([e])=>e),o=r===`video`?`library`:`presentation`,d=g(x.hostedLibraries()),p=d.data?.filter(e=>!l.ContentPipelineBlackListLibraries.includes(+e.id)),h=g(S.presentations(f.Subject)),b=g(s.reportColumns(r)),C=_(),w=c.getAllFilters(r,e.params.stage,e.params.presentationId,`clickview`).sort((e,t)=>e.label.localeCompare(t.label)).filter(e=>e.name!==`library`);async function T(n,i){let a={name:`stage`,operator:`in`,values:n.stages},o=n.presentationId?{name:`presentations`,operator:`in`,values:[n.presentationId]}:null,l={name:n.scopeType===`library`?`library`:`presentation`,operator:`in`,values:n.scopes},u=c.serializeFilterRequestBody(n.filters),d=[a,l,o].filter(e=>e!==null),f={columns:v.uniq([...H,...n.columns]),entityType:r,searchRequest:{filters:[...u,...d]}};i&&C(s.createReportTemplate({...f,name:n.reportName}));try{t.info(`Generating your report...`,`This may take a couple of minutes.`),e.closePopup();let r=await C(s.generateReport(f));j.safeDownloadCsv(r,`${n.reportName}.csv`),t.success(`Successfully generated report.`)}catch(e){if(e.responseJSON?.type===`too-many-ids`){t.error(`Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.`);return}t.error(`Failed to generate report. Please try again, or reach out to the product team.`)}}async function D(n){try{t.info(`Generating your report...`,`This may take a couple of minutes.`),e.closePopup();let r=await C(s.generateReport(n));j.safeDownloadCsv(r,`${n.name}.csv`),t.success(`Successfully generated report.`)}catch(e){if(e.responseJSON?.type===`too-many-ids`){t.error(`Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.`);return}t.error(`Failed to generate report. Please try again, or reach out to the product team.`)}}return(0,L.jsx)(m,{title:`Generate report`,closePopup:e.closePopup,showLoadingSpinner:!d.data||!h.data||!i.data,backdrop:`static`,size:`lg`,children:(0,L.jsx)(E,{initialValues:{scopes:[],stages:[],columns:[],scopeType:o,filters:n,reportName:`${r}-${U}`},validationSchema:K(w),allowInitialSubmit:!0,onSubmit:null,children:(0,L.jsx)(W,{libraries:p,presentations:h.data,stages:a,columns:b.data??[],objectType:r,queryParams:e.params,onSubmit:T,filterOptions:w,reportTemplates:i.data?.data,onGenerateByTemplate:D})})})}export{q as AssemblyLineGenerateReportView};
2
- //# sourceMappingURL=DOfeXfSj.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{a as r,n as i}from"./Crs6pJ2h.chunk.js";import{t as a}from"./Di_u2uix.chunk.js";import{t as o}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as s,K as c,X as l,t as u}from"./DWHKdmdQ.chunk.js";import{t as d}from"./CLCeObem2.chunk.js";import{t as f}from"./cwPDEI372.chunk.js";import{t as p}from"./DbAhNsCO2.chunk.js";import{t as m}from"./D-JsEiDq2.chunk.js";import{t as h}from"./CHTOLKFB.chunk.js";import{s as g,u as _}from"./Dgk5cBBe.chunk.js";import{t as v}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as y}from"./Bwpvc7Th2.chunk.js";import{t as b}from"./D10cUDG82.chunk.js";import{t as x}from"./suzdRjwd.chunk.js";import{t as S}from"./CZyPFSXo.chunk.js";import{t as C}from"./RUvwm6_V.chunk.js";import{c as w,i as T}from"./DA0I3jYA.chunk.js";import{t as E}from"./dKyhMawf.chunk.js";import{t as D}from"./Broadxiw.chunk.js";import{t as O}from"./D0JviwKV2.chunk.js";import{n as k}from"./C4Ey4nzb2.chunk.js";import{t as A}from"./2NdfwDHB.chunk.js";import{t as j}from"./CJnHr1ww2.chunk.js";import{t as M}from"./T3BageSw2.chunk.js";import{t as N}from"./BQUnEGe12.chunk.js";import{t as P}from"./3IQ_8AZP2.chunk.js";import{t as F}from"./SmmnJrec.chunk.js";var I=n(e()),L=t();function R(e){let[t,n]=I.useState();if(!e.templates||!e.templates.length)return(0,L.jsx)(`div`,{className:`alert alert-info`,children:`You don't have any saved reports for ${e.entityType} yet. Go to the new report page to create one.`});function r(){e.onGenerateByTemplate(t)}return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`h3`,{className:`h6 mb-2`,children:`Select a saved report template`}),e.templates.map(e=>(0,L.jsxs)(`div`,{className:`my-2 d-flex align-items-center justify-content-between`,children:[(0,L.jsx)(p.Check,{type:`radio`,id:e.id,name:e.id,label:e.name,checked:t?.id===e.id,onChange:()=>{n(e)}}),(0,L.jsxs)(`div`,{className:`d-flex cursor-pointer`,children:[(0,L.jsx)(D,{appLink:{application:o.ASSEMBLY_LINE,action:a.AssemblyLine.EDIT_REPORT_TEMPLATE,args:[e.id]},svg:b}),(0,L.jsx)(D,{appLink:{application:o.ASSEMBLY_LINE,action:a.AssemblyLine.DELETE_REPORT_TEMPLATE,args:[e.id]},svg:A})]})]},e.id)),(0,L.jsx)(O,{children:(0,L.jsx)(O.Submit,{variant:`dark`,text:`Generate`,onClick:r,disabled:!t})})]})}var z={container:`_container_1g6z5_1`};function B(e){let t=w();return(0,L.jsx)(k,{name:e.field,id:e.field,value:t.values[e.field],children:()=>(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,L.jsxs)(`span`,{children:[(0,L.jsx)(`label`,{className:`form-label`,htmlFor:e.field,children:e.label}),e.infoTooltip&&(0,L.jsx)(r,{spanHack:!0,spanHackClassName:`d-inline`,title:e.infoTooltip,children:(0,L.jsx)(i,{svg:C})}),(0,L.jsx)(`span`,{className:`text-danger`,children:`*`})]}),(0,L.jsx)(h,{id:`all-${e.field}`,label:`Select all`,checked:t.values[e.field].length===e.options.length,onChange:n=>{t.setFieldTouched(e.field,!0),n.target.checked?t.setFieldValue(e.field,[...e.options.map(e=>e.id)]):t.setFieldValue(e.field,[])}})]}),(0,L.jsx)(`div`,{className:`border rounded px-2 py-1 ${z.container}`,children:(0,L.jsxs)(`div`,{className:`${e.showInTwoCols?`row px-2`:``}`,children:[e.defaultSelected?.map(t=>(0,L.jsx)(h,{onChange:()=>{},className:`${e.showInTwoCols?` col-6`:``}`,id:t.id,label:t.id,checked:!0,disabled:!0},t.id)),e.options.map(n=>(0,L.jsx)(h,{className:`${e.showInTwoCols?`my-1 col-6`:`py-1`}`,id:n.id,label:n.description||n.name,checked:!!t.values[e.field].find(e=>e===n.id),onChange:()=>{t.setFieldTouched(e.field,!0),t.values[e.field].includes(n.id)?t.setFieldValue(e.field,t.values[e.field].filter(e=>e!==n.id)):t.setFieldValue(e.field,[...t.values[e.field],n.id])}},n.id))]})})]})})}function V(e){let t=w(),n=e.presentations.find(e=>e.id===t.values.presentationId);return(0,L.jsx)(k,{label:`Select a presentation`,name:`presentation`,id:`presentationId`,value:t.values.presentationId,children:()=>(0,L.jsx)(`div`,{className:`mb-2`,children:(0,L.jsx)(F,{stage:`curated_topic`,presentations:e.presentations,setPresentation:e=>{t.setFieldValue(`presentationId`,e)},selectedPresentation:n,objectType:`video`})})})}var H=[`ID`,`Name`],U=`content-pipeline-report`;function W(e){let[t,n]=I.useState(`new`),[r,i]=I.useState(!1),a=w(),o=a.values.scopeType,s=a.values.scopeType===`library`?e.libraries:e.presentations,c=e.columns.filter(e=>!H.find(t=>t===e)),l=a.values.scopeType===`library`?`libraries`:`presentations`,d=[{name:`New Report`,active:t===`new`,onSelect:()=>n(`new`)},{name:`Saved Reports`,active:t===`previous`,onSelect:()=>n(`previous`)}];function f(t){let n=e.objectType===`dashboard`?`curated-topic`:e.objectType;return t.length===0?`${n}-${U}`:a.values.scopeType===`library`?t.length===1?`${n}-${e.libraries.find(e=>e.id.toString()===t[0].toString()).description}-${U}`:`${n}-${t.length}-libraries-${U}`:a.values.scopeType===`presentation`?t.length===1?`${n}-${e.presentations.find(e=>e.id.toString()===t[0].toString()).description}-${U}`:`${n}-${t.length}-presentations-${U}`:``}I.useEffect(()=>{if(a.touched.reportName)return;let e=f(a.values.scopes);a.setFieldValue(`reportName`,e)},[a.values.scopes.join(`,`),a.touched.reportName]);function m(){e.onSubmit(a.values,r)}return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{children:(0,L.jsx)(N,{tabs:d,className:`mb-3`})}),t===`new`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(T,{children:[(0,L.jsx)(B,{field:`scopes`,label:`Select ${l}`,options:s.map(e=>({id:e.id.toString(),name:e.name,description:e.description}))}),(0,L.jsx)(B,{field:`stages`,label:`Select stages`,options:e.stages.map(e=>({id:e,name:u[e].label}))}),o===`library`&&(0,L.jsx)(V,{presentations:e.presentations}),(0,L.jsxs)(`div`,{className:`my-3`,children:[(0,L.jsx)(`label`,{className:`form-label`,htmlFor:`stage`,children:`Select filters`}),(0,L.jsx)(P,{initialState:a.values.filters,queryParams:e.queryParams,columns:e.columns,showInDropdown:!1,options:e.filterOptions,onFiltersChange:e=>{a.setFieldValue(`filters`,e)}}),a.errors.filters?.length>0&&(0,L.jsx)(`div`,{className:`d-block invalid-feedback`,children:`Has invalid filters`})]}),(0,L.jsx)(B,{showInTwoCols:!0,field:`columns`,label:`Select columns`,options:c.map(e=>({id:e,name:e})),defaultSelected:H.map(e=>({id:e,name:e})),infoTooltip:`The order that you select the columns is the same order they will appear in the report`}),(0,L.jsx)(k,{id:`report-name`,name:`reportName`,value:a.values.reportName,label:`Report name`,type:`text`}),(0,L.jsx)(p.Check,{type:`checkbox`,id:`save-template`,name:`save-template`,className:`mb-2`,checked:r,onChange:e=>{i(e.target.checked)},label:`Save this report as a template`})]}),(0,L.jsx)(O,{children:(0,L.jsx)(O.Submit,{variant:`dark`,text:`Generate`,onClick:m,disabled:!a.dirty||!a.isValid})})]}):(0,L.jsx)(R,{templates:e.reportTemplates,entityType:e.objectType,onGenerateByTemplate:e.onGenerateByTemplate})]})}var G=n(d());function K(e){return G.object().shape({scopes:G.array().of(G.string()).required().min(1),stages:G.array().of(G.string()).required().min(1),columns:G.array().of(G.string()),filters:G.array().of(G.object().test(`filters`,`Invalid filter`,t=>c.isFilterValid(t,e))).default([]),reportName:G.string().required(`Report name is required`)})}function q(e){let t=y(),n=M(e.params,e.params.stage),r=u[e.params.stage].objectType,i=g(s.getReportTemplates(r)),a=Object.entries(u).filter(([,e])=>e.objectType===r&&!!e.inReport).map(([e])=>e),o=r===`video`?`library`:`presentation`,d=g(x.hostedLibraries()),p=d.data?.filter(e=>!l.ContentPipelineBlackListLibraries.includes(+e.id)),h=g(S.presentations(f.Subject)),b=g(s.reportColumns(r)),C=_(),w=c.getAllFilters(r,e.params.stage,e.params.presentationId,`clickview`).sort((e,t)=>e.label.localeCompare(t.label)).filter(e=>e.name!==`library`);async function T(n,i){let a={name:`stage`,operator:`in`,values:n.stages},o=n.presentationId?{name:`presentations`,operator:`in`,values:[n.presentationId]}:null,l={name:n.scopeType===`library`?`library`:`presentation`,operator:`in`,values:n.scopes},u=c.serializeFilterRequestBody(n.filters),d=[a,l,o].filter(e=>e!==null),f={columns:v.uniq([...H,...n.columns]),entityType:r,searchRequest:{filters:[...u,...d]}};i&&C(s.createReportTemplate({...f,name:n.reportName}));try{t.info(`Generating your report...`,`This may take a couple of minutes.`),e.closePopup();let r=await C(s.generateReport(f));j.safeDownloadCsv(r,`${n.reportName}.csv`),t.success(`Successfully generated report.`)}catch(e){if(e.responseJSON?.type===`too-many-ids`){t.error(`Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.`);return}t.error(`Failed to generate report. Please try again, or reach out to the product team.`)}}async function D(n){try{t.info(`Generating your report...`,`This may take a couple of minutes.`),e.closePopup();let r=await C(s.generateReport(n));j.safeDownloadCsv(r,`${n.name}.csv`),t.success(`Successfully generated report.`)}catch(e){if(e.responseJSON?.type===`too-many-ids`){t.error(`Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.`);return}t.error(`Failed to generate report. Please try again, or reach out to the product team.`)}}return(0,L.jsx)(m,{title:`Generate report`,closePopup:e.closePopup,showLoadingSpinner:!d.data||!h.data||!i.data,backdrop:`static`,size:`lg`,children:(0,L.jsx)(E,{initialValues:{scopes:[],stages:[],columns:[],scopeType:o,filters:n,reportName:`${r}-${U}`},validationSchema:K(w),allowInitialSubmit:!0,onSubmit:null,children:(0,L.jsx)(W,{libraries:p,presentations:h.data,stages:a,columns:b.data??[],objectType:r,queryParams:e.params,onSubmit:T,filterOptions:w,reportTemplates:i.data?.data,onGenerateByTemplate:D})})})}export{q as AssemblyLineGenerateReportView};
2
+ //# sourceMappingURL=CvV6jx2d.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DOfeXfSj.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/generate-report/components/AssemblyLineSavedReports.tsx","../../../../../src/apps/assembly-line/views/generate-report/formfields/generate-report-form-field/generate-report-form-field.module.scss","../../../../../src/apps/assembly-line/views/generate-report/formfields/generate-report-form-field/GenerateReportFormField.tsx","../../../../../src/apps/assembly-line/views/generate-report/formfields/presentation-form-field/PresentationFormField.tsx","../../../../../src/apps/assembly-line/views/generate-report/components/AssemblyLineGenerateReportForm.tsx","../../../../../src/apps/assembly-line/views/generate-report/validation/AssemblyLineGenerateReportSchema.ts","../../../../../src/apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ReportTemplate } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\n\ninterface AssemblyLineSavedReportsProps {\n templates: ReportTemplate[];\n entityType: string;\n onGenerateByTemplate: (template: ReportTemplate) => Promise<void>;\n}\n\nexport function AssemblyLineSavedReports(props: AssemblyLineSavedReportsProps): JSX.Element {\n const [ selectedTemplate, setSelectedTemplate ] = React.useState<ReportTemplate>();\n\n if (!props.templates || !props.templates.length)\n return (\n <div className='alert alert-info'>\n {`You don't have any saved reports for ${props.entityType} yet. Go to the new report page to create one.`}\n </div>\n );\n\n function onSubmit() {\n props.onGenerateByTemplate(selectedTemplate);\n }\n\n return (\n <>\n <h3 className='h6 mb-2'>Select a saved report template</h3>\n {props.templates.map(template => (\n <div key={template.id} className='my-2 d-flex align-items-center justify-content-between'>\n <Form.Check\n type='radio'\n id={template.id}\n name={template.id}\n label={template.name}\n checked={selectedTemplate?.id === template.id}\n onChange={() => {\n setSelectedTemplate(template);\n }}\n />\n <div className='d-flex cursor-pointer'>\n <IconButton\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.EDIT_REPORT_TEMPLATE,\n args: [template.id]\n }}\n svg={EditSvg}\n />\n\n <IconButton\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.DELETE_REPORT_TEMPLATE,\n args: [template.id]\n }}\n svg={DeleteSvg}\n />\n </div>\n </div>\n ))}\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n text='Generate'\n onClick={onSubmit}\n disabled={!selectedTemplate}\n />\n </PopupButtons>\n </>\n );\n}\n",":local {\n .container {\n max-height: 27rem;\n overflow-y: auto;\n }\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\n\nimport { AssemblyLineGenerateReportFormData } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\n\nimport styles from './generate-report-form-field.module.scss';\n\ninterface GenerateReportFormFieldOptions {\n id: string;\n name: string;\n description?: string;\n}\n\ninterface GenerateReportFormFieldProps {\n field: 'scopes' | 'stages' | 'columns';\n options: GenerateReportFormFieldOptions[];\n label: string;\n showInTwoCols?: boolean;\n defaultSelected?: GenerateReportFormFieldOptions[];\n infoTooltip?: string;\n}\n\nexport function GenerateReportFormField(props: GenerateReportFormFieldProps) {\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n \n return (\n <FormField<AssemblyLineGenerateReportFormData>\n name={props.field}\n id={props.field}\n value={formikProps.values[props.field]}\n >\n {() => {\n return (\n <>\n <div className='d-flex justify-content-between'>\n {/* header */}\n <span>\n <label className='form-label' htmlFor={props.field}>{props.label}</label>\n {props.infoTooltip && (\n <Tooltip\n spanHack\n spanHackClassName='d-inline'\n title={props.infoTooltip}>\n <SvgContainer svg={InfoSvg} />\n </Tooltip>\n )}\n <span className='text-danger'>*</span>\n </span>\n <Checkbox\n id={`all-${props.field}`}\n label='Select all'\n checked={formikProps.values[props.field].length === props.options.length}\n onChange={e => {\n formikProps.setFieldTouched(props.field, true);\n if (!e.target.checked) {\n formikProps.setFieldValue(props.field, []);\n } else {\n formikProps.setFieldValue(props.field, [...props.options.map(o => o.id)]);\n }\n }}\n />\n </div>\n {/* options list */}\n <div className={`border rounded px-2 py-1 ${styles.container}`}>\n <div className={`${props.showInTwoCols ? 'row px-2' : ''}`}>\n {props.defaultSelected?.map(col => (\n <Checkbox\n onChange={() => {}}\n className={`${props.showInTwoCols ? ' col-6' : ''}`}\n id={col.id}\n label={col.id}\n key={col.id}\n checked={true}\n disabled\n />\n ))}\n {props.options.map(opt => {\n return (\n <Checkbox\n className={`${props.showInTwoCols ? 'my-1 col-6' : 'py-1'}`}\n id={opt.id}\n key={opt.id}\n label={opt.description || opt.name}\n checked={!!formikProps.values[props.field].find(s => s === opt.id)}\n onChange={() => {\n formikProps.setFieldTouched(props.field, true);\n \n if ((formikProps.values[props.field] as string[]).includes(opt.id)) {\n formikProps.setFieldValue(\n props.field,\n formikProps.values[props.field].filter(s => s !== opt.id)\n );\n } else {\n formikProps.setFieldValue(props.field, [ ...formikProps.values[props.field], opt.id ]);\n }\n }}\n />\n );\n })}\n </div>\n </div>\n </>\n );\n }}\n </FormField>\n );\n}\n","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { PresentationFilter } from 'apps/assembly-line/components/presentation-filter/PresentationFilter';\nimport { AssemblyLineGenerateReportFormData } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\n\ninterface PresentationFormFieldProps {\n presentations: Presentation[];\n}\n\nexport function PresentationFormField(props: PresentationFormFieldProps) {\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n const selectedPresentation = props.presentations.find(p => p.id === formikProps.values.presentationId);\n\n return (\n <FormField<AssemblyLineGenerateReportFormData>\n label='Select a presentation'\n name='presentation'\n id='presentationId'\n value={formikProps.values.presentationId}\n >\n {() => {\n return (\n <div className='mb-2'>\n <PresentationFilter\n stage='curated_topic'\n presentations={props.presentations}\n setPresentation={id => {\n formikProps.setFieldValue('presentationId', id);\n }}\n selectedPresentation={selectedPresentation}\n objectType='video'\n />\n </div>\n );\n }}\n </FormField>\n );\n}\n","import React from 'react';\nimport { Form as BsForm } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Library, Presentation } from 'libs/shared/interfaces';\n\nimport { ConditionalFiltersButton } from 'apps/assembly-line/components/conditional-filters/ConditionalFiltersButton';\nimport { AssemblyLineFilterConfigType } from 'apps/assembly-line/constants/AssemblyLineFilterConfig';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { ReportTemplate } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\nimport { AssemblyLineGenerateReportFormData, AssemblyLineGenerateReportViewParams } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\nimport { AssemblyLineSavedReports } from 'apps/assembly-line/views/generate-report/components/AssemblyLineSavedReports';\nimport { GenerateReportFormField } from 'apps/assembly-line/views/generate-report/formfields/generate-report-form-field/GenerateReportFormField';\nimport { PresentationFormField } from 'apps/assembly-line/views/generate-report/formfields/presentation-form-field/PresentationFormField';\n\nexport const DEFAULT_COLUMNS = [ 'ID', 'Name' ];\nexport const FILE_NAME_SUFFIX = 'content-pipeline-report';\n\ninterface AssemblyLineGenerateReportFormProps {\n stages: AssemblyLineStage[];\n objectType: AssemblyLineObjectType;\n libraries: Library[];\n presentations: Presentation[];\n columns: string[];\n queryParams: AssemblyLineGenerateReportViewParams;\n onSubmit: (val: AssemblyLineGenerateReportFormData, saveTemplate: boolean) => Promise<void>;\n filterOptions: AssemblyLineFilterConfigType[];\n reportTemplates: ReportTemplate[];\n onGenerateByTemplate: (template: ReportTemplate) => Promise<void>;\n}\n\nexport function AssemblyLineGenerateReportForm(props: AssemblyLineGenerateReportFormProps): JSX.Element {\n const [ mode, setMode ] = React.useState<'new' | 'previous'>('new');\n const [ shouldSaveTemplate, setShouldSaveTemplate ] = React.useState(false);\n\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n\n const scopeType = formikProps.values.scopeType;\n const options = formikProps.values.scopeType === 'library' ? props.libraries : props.presentations;\n const selectableColumns = props.columns.filter(col => !DEFAULT_COLUMNS.find(d => d === col));\n const scopeTypeLabel = formikProps.values.scopeType === 'library' ? 'libraries' : 'presentations';\n\n const tabs = [{\n name: 'New Report',\n active: mode === 'new',\n onSelect: () => setMode('new')\n }, {\n name: 'Saved Reports',\n active: mode === 'previous',\n onSelect: () => setMode('previous')\n }];\n\n function getFileName(scopes: string[]): string {\n const type = props.objectType === 'dashboard' ? 'curated-topic' : props.objectType;\n if (scopes.length === 0)\n return `${type}-${FILE_NAME_SUFFIX}`;\n\n if (formikProps.values.scopeType === 'library') {\n if (scopes.length === 1) {\n const selectedLibraries = props.libraries.find(l => l.id.toString() === scopes[0].toString());\n return `${type}-${selectedLibraries.description}-${FILE_NAME_SUFFIX}`;\n }\n\n return `${type}-${scopes.length}-libraries-${FILE_NAME_SUFFIX}`;\n }\n\n if (formikProps.values.scopeType === 'presentation') {\n if (scopes.length === 1) {\n const selectedPresentations = props.presentations.find(p => p.id.toString() === scopes[0].toString());\n return `${type}-${selectedPresentations.description}-${FILE_NAME_SUFFIX}`;\n }\n\n return `${type}-${scopes.length}-presentations-${FILE_NAME_SUFFIX}`;\n }\n return '';\n }\n\n React.useEffect(() => {\n if (formikProps.touched.reportName)\n return;\n\n const fileName = getFileName(formikProps.values.scopes);\n\n formikProps.setFieldValue('reportName', fileName);\n }, [ formikProps.values.scopes.join(','), formikProps.touched.reportName ]);\n\n function onSubmit() {\n props.onSubmit(formikProps.values, shouldSaveTemplate);\n }\n\n return (\n <>\n <div>\n <PillTabSelector\n tabs={tabs}\n className='mb-3'\n />\n </div>\n {mode === 'new' ? (\n <>\n <Form>\n <GenerateReportFormField\n field='scopes'\n label={`Select ${scopeTypeLabel}`}\n options={options.map(opt => ({\n id: opt.id.toString(),\n name: opt.name,\n description: opt.description\n }))}\n />\n <GenerateReportFormField\n field='stages'\n label='Select stages'\n options={props.stages.map(s => ({ id: s, name: AssemblyLineStageConfig[s].label }))}\n />\n\n { scopeType === 'library' && <PresentationFormField presentations={props.presentations}/> }\n\n {/* filters */}\n <div className='my-3'>\n <label className='form-label' htmlFor='stage'>Select filters</label>\n <ConditionalFiltersButton\n initialState={formikProps.values.filters}\n queryParams={props.queryParams}\n columns={props.columns}\n showInDropdown={false}\n options={props.filterOptions}\n onFiltersChange={filters => {\n formikProps.setFieldValue('filters', filters);\n }}\n />\n {formikProps.errors.filters?.length > 0 && (\n <div className='d-block invalid-feedback'>Has invalid filters</div>\n )}\n </div>\n\n <GenerateReportFormField\n showInTwoCols\n field='columns'\n label='Select columns'\n options={selectableColumns.map(col => ({\n id: col,\n name: col\n }))}\n defaultSelected={DEFAULT_COLUMNS.map(col => ({\n id: col,\n name: col\n }))}\n infoTooltip='The order that you select the columns is the same order they will appear in the report'\n />\n\n <FormField\n id='report-name'\n name='reportName'\n value={formikProps.values.reportName}\n label='Report name'\n type='text'\n />\n <BsForm.Check\n type='checkbox'\n id='save-template'\n name='save-template'\n className='mb-2'\n checked={shouldSaveTemplate}\n onChange={e => {\n setShouldSaveTemplate(e.target.checked);\n }}\n label='Save this report as a template'\n />\n </Form>\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n text='Generate'\n onClick={onSubmit}\n disabled={!formikProps.dirty || !formikProps.isValid}\n />\n </PopupButtons>\n </>\n ) : (\n <AssemblyLineSavedReports\n templates={props.reportTemplates}\n entityType={props.objectType}\n onGenerateByTemplate={props.onGenerateByTemplate}\n />\n )}\n </>\n );\n}\n","import * as Yup from 'yup';\n\nimport { ConditionalFilterConfig } from 'apps/assembly-line/interfaces/ConditionalFilterTypes';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nexport function getAssemblyLineGenerateReportSchema(options: ConditionalFilterConfig<string>[]) {\n return Yup.object().shape({\n scopes: Yup\n .array()\n .of(Yup.string())\n .required()\n .min(1),\n\n stages: Yup\n .array()\n .of(Yup.string())\n .required()\n .min(1),\n\n columns: Yup\n .array()\n .of(Yup.string()),\n\n filters: Yup\n .array()\n .of(\n Yup.object().test(\n 'filters',\n 'Invalid filter',\n f => AssemblyLineFilterHelper.isFilterValid(f, options)\n )\n )\n .default([]),\n\n reportName: Yup\n .string()\n .required('Report name is required')\n });\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Library, PopupViewProps, Presentation } from 'libs/shared/interfaces';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\n\nimport { HardCoded } from 'shared/constants/HardCoded';\nimport { LibraryRequests } from 'shared/flight-requests/LibraryRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { ConditionalFilterState } from 'apps/assembly-line/components/conditional-filters/ConditionalFilters';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineFilterField, AssemblyLineFilterRequest } from 'apps/assembly-line/interfaces/requests/AssemblyLineFilterRequest';\nimport { AssemblyLineReportRequest } from 'apps/assembly-line/interfaces/requests/AssemblyLineReportRequest';\nimport { ReportTemplate, ReportTemplateCollection } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineGenerateReportForm, DEFAULT_COLUMNS, FILE_NAME_SUFFIX } from 'apps/assembly-line/views/generate-report/components/AssemblyLineGenerateReportForm';\nimport { getAssemblyLineGenerateReportSchema } from 'apps/assembly-line/views/generate-report/validation/AssemblyLineGenerateReportSchema';\n\nexport type AssemblyLineGenerateReportViewParams = Record<string, string> & { stage: AssemblyLineStage };\n\nexport interface AssemblyLineGenerateReportViewProps extends PopupViewProps {\n params?: AssemblyLineGenerateReportViewParams;\n}\n\nexport interface AssemblyLineGenerateReportFormData {\n scopes: string[];\n stages: AssemblyLineStage[];\n columns: string[];\n scopeType: 'library' | 'presentation';\n filters: ConditionalFilterState<AssemblyLineFilterField>[];\n reportName: string;\n presentationId?: string;\n}\n\nexport function AssemblyLineGenerateReportView(props: AssemblyLineGenerateReportViewProps): JSX.Element {\n const alerts = useAlerts();\n const filters = useAssemblyLineFilters(props.params, props.params.stage);\n const objectType = AssemblyLineStageConfig[props.params.stage].objectType;\n const templates = Flight.useBasicFetch<ReportTemplateCollection>(AssemblyLineRequests.getReportTemplates(objectType));\n\n const stages = Object.entries(AssemblyLineStageConfig)\n .filter(([ , config ]) => config.objectType === objectType && !!config.inReport)\n .map(([stage]) => stage as AssemblyLineStage);\n\n const scopeType = objectType === 'video' ? 'library' : 'presentation' ;\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.hostedLibraries());\n const filteredLibraries = libraries.data?.filter(l => {\n return !HardCoded.ContentPipelineBlackListLibraries.includes(+l.id);\n });\n\n const presentations = Flight.useBasicFetch<Presentation[]>(SubjectRequests.presentations(PresentationType.Subject));\n\n const columns = Flight.useBasicFetch<string[]>(AssemblyLineRequests.reportColumns(objectType));\n const fetchAsync = Flight.useGetFetchAsync();\n\n const filterOptions = AssemblyLineFilterHelper\n .getAllFilters(objectType, props.params.stage, props.params.presentationId, 'clickview')\n .sort((a, b) => a.label.localeCompare(b.label))\n .filter(f => f.name !== 'library');\n\n async function onSubmit(data: AssemblyLineGenerateReportFormData, shouldSave: boolean) {\n const stageFilter: AssemblyLineFilterRequest = { name: 'stage', operator: 'in', values: data.stages };\n const presentationFilter: AssemblyLineFilterRequest = !data.presentationId ? null : { name: 'presentations', operator: 'in', values: [data.presentationId]};\n const scopeFilter: AssemblyLineFilterRequest = {\n name: data.scopeType === 'library' ? 'library' : 'presentation',\n operator: 'in',\n values: data.scopes\n };\n const restFilters = AssemblyLineFilterHelper.serializeFilterRequestBody(data.filters);\n const additionalFilters = [ stageFilter, scopeFilter, presentationFilter ].filter(filter => filter !== null);\n\n const payload: AssemblyLineReportRequest = {\n columns: ArrayHelper.uniq([ ...DEFAULT_COLUMNS, ...data.columns ]),\n entityType: objectType,\n searchRequest: { filters: [ ...restFilters, ...additionalFilters ]}\n };\n\n if (shouldSave) {\n fetchAsync<void>(AssemblyLineRequests.createReportTemplate({ ...payload, name: data.reportName }));\n }\n\n try {\n alerts.info('Generating your report...', 'This may take a couple of minutes.');\n props.closePopup();\n\n const rawData = await fetchAsync<string>(AssemblyLineRequests.generateReport(payload));\n FileHelper.safeDownloadCsv(rawData, `${data.reportName}.csv`);\n\n alerts.success('Successfully generated report.');\n } catch (e) {\n if (e.responseJSON?.type === 'too-many-ids') {\n alerts.error('Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.');\n return;\n }\n alerts.error('Failed to generate report. Please try again, or reach out to the product team.');\n }\n }\n \n async function onGenerateByTemplate(template: ReportTemplate) {\n try {\n alerts.info('Generating your report...', 'This may take a couple of minutes.');\n props.closePopup();\n \n const rawData = await fetchAsync<string>(AssemblyLineRequests.generateReport(template));\n FileHelper.safeDownloadCsv(rawData, `${template.name}.csv`);\n\n alerts.success('Successfully generated report.');\n } catch (e) {\n if (e.responseJSON?.type === 'too-many-ids') {\n alerts.error('Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.');\n return;\n }\n alerts.error('Failed to generate report. Please try again, or reach out to the product team.');\n }\n }\n\n return (\n <Popup\n title='Generate report'\n closePopup={props.closePopup}\n showLoadingSpinner={!libraries.data || !presentations.data || !templates.data}\n backdrop='static'\n size='lg'\n >\n <FormWrapper<AssemblyLineGenerateReportFormData>\n initialValues={{\n scopes: [],\n stages: [],\n columns: [],\n scopeType,\n filters,\n reportName: `${objectType}-${FILE_NAME_SUFFIX}`\n }}\n validationSchema={getAssemblyLineGenerateReportSchema(filterOptions)}\n allowInitialSubmit\n onSubmit={null}\n >\n <AssemblyLineGenerateReportForm\n libraries={filteredLibraries}\n presentations={presentations.data}\n stages={stages}\n columns={columns.data ?? []}\n objectType={objectType}\n queryParams={props.params}\n onSubmit={onSubmit}\n filterOptions={filterOptions}\n reportTemplates={templates.data?.data}\n onGenerateByTemplate={onGenerateByTemplate}\n />\n </FormWrapper>\n </Popup>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CvV6jx2d.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/generate-report/components/AssemblyLineSavedReports.tsx","../../../../../src/apps/assembly-line/views/generate-report/formfields/generate-report-form-field/generate-report-form-field.module.scss","../../../../../src/apps/assembly-line/views/generate-report/formfields/generate-report-form-field/GenerateReportFormField.tsx","../../../../../src/apps/assembly-line/views/generate-report/formfields/presentation-form-field/PresentationFormField.tsx","../../../../../src/apps/assembly-line/views/generate-report/components/AssemblyLineGenerateReportForm.tsx","../../../../../src/apps/assembly-line/views/generate-report/validation/AssemblyLineGenerateReportSchema.ts","../../../../../src/apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { EditSvg } from 'libs/shared/images/svg/actions/EditSvg';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ReportTemplate } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\n\ninterface AssemblyLineSavedReportsProps {\n templates: ReportTemplate[];\n entityType: string;\n onGenerateByTemplate: (template: ReportTemplate) => Promise<void>;\n}\n\nexport function AssemblyLineSavedReports(props: AssemblyLineSavedReportsProps): JSX.Element {\n const [ selectedTemplate, setSelectedTemplate ] = React.useState<ReportTemplate>();\n\n if (!props.templates || !props.templates.length)\n return (\n <div className='alert alert-info'>\n {`You don't have any saved reports for ${props.entityType} yet. Go to the new report page to create one.`}\n </div>\n );\n\n function onSubmit() {\n props.onGenerateByTemplate(selectedTemplate);\n }\n\n return (\n <>\n <h3 className='h6 mb-2'>Select a saved report template</h3>\n {props.templates.map(template => (\n <div key={template.id} className='my-2 d-flex align-items-center justify-content-between'>\n <Form.Check\n type='radio'\n id={template.id}\n name={template.id}\n label={template.name}\n checked={selectedTemplate?.id === template.id}\n onChange={() => {\n setSelectedTemplate(template);\n }}\n />\n <div className='d-flex cursor-pointer'>\n <IconButton\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.EDIT_REPORT_TEMPLATE,\n args: [template.id]\n }}\n svg={EditSvg}\n />\n\n <IconButton\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.DELETE_REPORT_TEMPLATE,\n args: [template.id]\n }}\n svg={DeleteSvg}\n />\n </div>\n </div>\n ))}\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n text='Generate'\n onClick={onSubmit}\n disabled={!selectedTemplate}\n />\n </PopupButtons>\n </>\n );\n}\n",":local {\n .container {\n max-height: 27rem;\n overflow-y: auto;\n }\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\n\nimport { AssemblyLineGenerateReportFormData } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\n\nimport styles from './generate-report-form-field.module.scss';\n\ninterface GenerateReportFormFieldOptions {\n id: string;\n name: string;\n description?: string;\n}\n\ninterface GenerateReportFormFieldProps {\n field: 'scopes' | 'stages' | 'columns';\n options: GenerateReportFormFieldOptions[];\n label: string;\n showInTwoCols?: boolean;\n defaultSelected?: GenerateReportFormFieldOptions[];\n infoTooltip?: string;\n}\n\nexport function GenerateReportFormField(props: GenerateReportFormFieldProps) {\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n \n return (\n <FormField<AssemblyLineGenerateReportFormData>\n name={props.field}\n id={props.field}\n value={formikProps.values[props.field]}\n >\n {() => {\n return (\n <>\n <div className='d-flex justify-content-between'>\n {/* header */}\n <span>\n <label className='form-label' htmlFor={props.field}>{props.label}</label>\n {props.infoTooltip && (\n <Tooltip\n spanHack\n spanHackClassName='d-inline'\n title={props.infoTooltip}>\n <SvgContainer svg={InfoSvg} />\n </Tooltip>\n )}\n <span className='text-danger'>*</span>\n </span>\n <Checkbox\n id={`all-${props.field}`}\n label='Select all'\n checked={formikProps.values[props.field].length === props.options.length}\n onChange={e => {\n formikProps.setFieldTouched(props.field, true);\n if (!e.target.checked) {\n formikProps.setFieldValue(props.field, []);\n } else {\n formikProps.setFieldValue(props.field, [...props.options.map(o => o.id)]);\n }\n }}\n />\n </div>\n {/* options list */}\n <div className={`border rounded px-2 py-1 ${styles.container}`}>\n <div className={`${props.showInTwoCols ? 'row px-2' : ''}`}>\n {props.defaultSelected?.map(col => (\n <Checkbox\n onChange={() => {}}\n className={`${props.showInTwoCols ? ' col-6' : ''}`}\n id={col.id}\n label={col.id}\n key={col.id}\n checked={true}\n disabled\n />\n ))}\n {props.options.map(opt => {\n return (\n <Checkbox\n className={`${props.showInTwoCols ? 'my-1 col-6' : 'py-1'}`}\n id={opt.id}\n key={opt.id}\n label={opt.description || opt.name}\n checked={!!formikProps.values[props.field].find(s => s === opt.id)}\n onChange={() => {\n formikProps.setFieldTouched(props.field, true);\n \n if ((formikProps.values[props.field] as string[]).includes(opt.id)) {\n formikProps.setFieldValue(\n props.field,\n formikProps.values[props.field].filter(s => s !== opt.id)\n );\n } else {\n formikProps.setFieldValue(props.field, [ ...formikProps.values[props.field], opt.id ]);\n }\n }}\n />\n );\n })}\n </div>\n </div>\n </>\n );\n }}\n </FormField>\n );\n}\n","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Presentation } from 'libs/shared/interfaces';\n\nimport { PresentationFilter } from 'apps/assembly-line/components/presentation-filter/PresentationFilter';\nimport { AssemblyLineGenerateReportFormData } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\n\ninterface PresentationFormFieldProps {\n presentations: Presentation[];\n}\n\nexport function PresentationFormField(props: PresentationFormFieldProps) {\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n const selectedPresentation = props.presentations.find(p => p.id === formikProps.values.presentationId);\n\n return (\n <FormField<AssemblyLineGenerateReportFormData>\n label='Select a presentation'\n name='presentation'\n id='presentationId'\n value={formikProps.values.presentationId}\n >\n {() => {\n return (\n <div className='mb-2'>\n <PresentationFilter\n stage='curated_topic'\n presentations={props.presentations}\n setPresentation={id => {\n formikProps.setFieldValue('presentationId', id);\n }}\n selectedPresentation={selectedPresentation}\n objectType='video'\n />\n </div>\n );\n }}\n </FormField>\n );\n}\n","import React from 'react';\nimport { Form as BsForm } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Library, Presentation } from 'libs/shared/interfaces';\n\nimport { ConditionalFiltersButton } from 'apps/assembly-line/components/conditional-filters/ConditionalFiltersButton';\nimport { AssemblyLineFilterConfigType } from 'apps/assembly-line/constants/AssemblyLineFilterConfig';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { ReportTemplate } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\nimport { AssemblyLineGenerateReportFormData, AssemblyLineGenerateReportViewParams } from 'apps/assembly-line/views/generate-report/AssemblyLineGenerateReportView';\nimport { AssemblyLineSavedReports } from 'apps/assembly-line/views/generate-report/components/AssemblyLineSavedReports';\nimport { GenerateReportFormField } from 'apps/assembly-line/views/generate-report/formfields/generate-report-form-field/GenerateReportFormField';\nimport { PresentationFormField } from 'apps/assembly-line/views/generate-report/formfields/presentation-form-field/PresentationFormField';\n\nexport const DEFAULT_COLUMNS = [ 'ID', 'Name' ];\nexport const FILE_NAME_SUFFIX = 'content-pipeline-report';\n\ninterface AssemblyLineGenerateReportFormProps {\n stages: AssemblyLineStage[];\n objectType: AssemblyLineObjectType;\n libraries: Library[];\n presentations: Presentation[];\n columns: string[];\n queryParams: AssemblyLineGenerateReportViewParams;\n onSubmit: (val: AssemblyLineGenerateReportFormData, saveTemplate: boolean) => Promise<void>;\n filterOptions: AssemblyLineFilterConfigType[];\n reportTemplates: ReportTemplate[];\n onGenerateByTemplate: (template: ReportTemplate) => Promise<void>;\n}\n\nexport function AssemblyLineGenerateReportForm(props: AssemblyLineGenerateReportFormProps): JSX.Element {\n const [ mode, setMode ] = React.useState<'new' | 'previous'>('new');\n const [ shouldSaveTemplate, setShouldSaveTemplate ] = React.useState(false);\n\n const formikProps = useFormikContext<AssemblyLineGenerateReportFormData>();\n\n const scopeType = formikProps.values.scopeType;\n const options = formikProps.values.scopeType === 'library' ? props.libraries : props.presentations;\n const selectableColumns = props.columns.filter(col => !DEFAULT_COLUMNS.find(d => d === col));\n const scopeTypeLabel = formikProps.values.scopeType === 'library' ? 'libraries' : 'presentations';\n\n const tabs = [{\n name: 'New Report',\n active: mode === 'new',\n onSelect: () => setMode('new')\n }, {\n name: 'Saved Reports',\n active: mode === 'previous',\n onSelect: () => setMode('previous')\n }];\n\n function getFileName(scopes: string[]): string {\n const type = props.objectType === 'dashboard' ? 'curated-topic' : props.objectType;\n if (scopes.length === 0)\n return `${type}-${FILE_NAME_SUFFIX}`;\n\n if (formikProps.values.scopeType === 'library') {\n if (scopes.length === 1) {\n const selectedLibraries = props.libraries.find(l => l.id.toString() === scopes[0].toString());\n return `${type}-${selectedLibraries.description}-${FILE_NAME_SUFFIX}`;\n }\n\n return `${type}-${scopes.length}-libraries-${FILE_NAME_SUFFIX}`;\n }\n\n if (formikProps.values.scopeType === 'presentation') {\n if (scopes.length === 1) {\n const selectedPresentations = props.presentations.find(p => p.id.toString() === scopes[0].toString());\n return `${type}-${selectedPresentations.description}-${FILE_NAME_SUFFIX}`;\n }\n\n return `${type}-${scopes.length}-presentations-${FILE_NAME_SUFFIX}`;\n }\n return '';\n }\n\n React.useEffect(() => {\n if (formikProps.touched.reportName)\n return;\n\n const fileName = getFileName(formikProps.values.scopes);\n\n formikProps.setFieldValue('reportName', fileName);\n }, [ formikProps.values.scopes.join(','), formikProps.touched.reportName ]);\n\n function onSubmit() {\n props.onSubmit(formikProps.values, shouldSaveTemplate);\n }\n\n return (\n <>\n <div>\n <PillTabSelector\n tabs={tabs}\n className='mb-3'\n />\n </div>\n {mode === 'new' ? (\n <>\n <Form>\n <GenerateReportFormField\n field='scopes'\n label={`Select ${scopeTypeLabel}`}\n options={options.map(opt => ({\n id: opt.id.toString(),\n name: opt.name,\n description: opt.description\n }))}\n />\n <GenerateReportFormField\n field='stages'\n label='Select stages'\n options={props.stages.map(s => ({ id: s, name: AssemblyLineStageConfig[s].label }))}\n />\n\n { scopeType === 'library' && <PresentationFormField presentations={props.presentations}/> }\n\n {/* filters */}\n <div className='my-3'>\n <label className='form-label' htmlFor='stage'>Select filters</label>\n <ConditionalFiltersButton\n initialState={formikProps.values.filters}\n queryParams={props.queryParams}\n columns={props.columns}\n showInDropdown={false}\n options={props.filterOptions}\n onFiltersChange={filters => {\n formikProps.setFieldValue('filters', filters);\n }}\n />\n {formikProps.errors.filters?.length > 0 && (\n <div className='d-block invalid-feedback'>Has invalid filters</div>\n )}\n </div>\n\n <GenerateReportFormField\n showInTwoCols\n field='columns'\n label='Select columns'\n options={selectableColumns.map(col => ({\n id: col,\n name: col\n }))}\n defaultSelected={DEFAULT_COLUMNS.map(col => ({\n id: col,\n name: col\n }))}\n infoTooltip='The order that you select the columns is the same order they will appear in the report'\n />\n\n <FormField\n id='report-name'\n name='reportName'\n value={formikProps.values.reportName}\n label='Report name'\n type='text'\n />\n <BsForm.Check\n type='checkbox'\n id='save-template'\n name='save-template'\n className='mb-2'\n checked={shouldSaveTemplate}\n onChange={e => {\n setShouldSaveTemplate(e.target.checked);\n }}\n label='Save this report as a template'\n />\n </Form>\n <PopupButtons>\n <PopupButtons.Submit\n variant='dark'\n text='Generate'\n onClick={onSubmit}\n disabled={!formikProps.dirty || !formikProps.isValid}\n />\n </PopupButtons>\n </>\n ) : (\n <AssemblyLineSavedReports\n templates={props.reportTemplates}\n entityType={props.objectType}\n onGenerateByTemplate={props.onGenerateByTemplate}\n />\n )}\n </>\n );\n}\n","import * as Yup from 'yup';\n\nimport { ConditionalFilterConfig } from 'apps/assembly-line/interfaces/ConditionalFilterTypes';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nexport function getAssemblyLineGenerateReportSchema(options: ConditionalFilterConfig<string>[]) {\n return Yup.object().shape({\n scopes: Yup\n .array()\n .of(Yup.string())\n .required()\n .min(1),\n\n stages: Yup\n .array()\n .of(Yup.string())\n .required()\n .min(1),\n\n columns: Yup\n .array()\n .of(Yup.string()),\n\n filters: Yup\n .array()\n .of(\n Yup.object().test(\n 'filters',\n 'Invalid filter',\n f => AssemblyLineFilterHelper.isFilterValid(f, options)\n )\n )\n .default([]),\n\n reportName: Yup\n .string()\n .required('Report name is required')\n });\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Library, PopupViewProps, Presentation } from 'libs/shared/interfaces';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\n\nimport { HardCoded } from 'shared/constants/HardCoded';\nimport { LibraryRequests } from 'shared/flight-requests/LibraryRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { ConditionalFilterState } from 'apps/assembly-line/components/conditional-filters/ConditionalFilters';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineFilterField, AssemblyLineFilterRequest } from 'apps/assembly-line/interfaces/requests/AssemblyLineFilterRequest';\nimport { AssemblyLineReportRequest } from 'apps/assembly-line/interfaces/requests/AssemblyLineReportRequest';\nimport { ReportTemplate, ReportTemplateCollection } from 'apps/assembly-line/interfaces/responses/ReportTemplate';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineGenerateReportForm, DEFAULT_COLUMNS, FILE_NAME_SUFFIX } from 'apps/assembly-line/views/generate-report/components/AssemblyLineGenerateReportForm';\nimport { getAssemblyLineGenerateReportSchema } from 'apps/assembly-line/views/generate-report/validation/AssemblyLineGenerateReportSchema';\n\nexport type AssemblyLineGenerateReportViewParams = Record<string, string> & { stage: AssemblyLineStage };\n\nexport interface AssemblyLineGenerateReportViewProps extends PopupViewProps {\n params?: AssemblyLineGenerateReportViewParams;\n}\n\nexport interface AssemblyLineGenerateReportFormData {\n scopes: string[];\n stages: AssemblyLineStage[];\n columns: string[];\n scopeType: 'library' | 'presentation';\n filters: ConditionalFilterState<AssemblyLineFilterField>[];\n reportName: string;\n presentationId?: string;\n}\n\nexport function AssemblyLineGenerateReportView(props: AssemblyLineGenerateReportViewProps): JSX.Element {\n const alerts = useAlerts();\n const filters = useAssemblyLineFilters(props.params, props.params.stage);\n const objectType = AssemblyLineStageConfig[props.params.stage].objectType;\n const templates = Flight.useBasicFetch<ReportTemplateCollection>(AssemblyLineRequests.getReportTemplates(objectType));\n\n const stages = Object.entries(AssemblyLineStageConfig)\n .filter(([ , config ]) => config.objectType === objectType && !!config.inReport)\n .map(([stage]) => stage as AssemblyLineStage);\n\n const scopeType = objectType === 'video' ? 'library' : 'presentation' ;\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.hostedLibraries());\n const filteredLibraries = libraries.data?.filter(l => {\n return !HardCoded.ContentPipelineBlackListLibraries.includes(+l.id);\n });\n\n const presentations = Flight.useBasicFetch<Presentation[]>(SubjectRequests.presentations(PresentationType.Subject));\n\n const columns = Flight.useBasicFetch<string[]>(AssemblyLineRequests.reportColumns(objectType));\n const fetchAsync = Flight.useGetFetchAsync();\n\n const filterOptions = AssemblyLineFilterHelper\n .getAllFilters(objectType, props.params.stage, props.params.presentationId, 'clickview')\n .sort((a, b) => a.label.localeCompare(b.label))\n .filter(f => f.name !== 'library');\n\n async function onSubmit(data: AssemblyLineGenerateReportFormData, shouldSave: boolean) {\n const stageFilter: AssemblyLineFilterRequest = { name: 'stage', operator: 'in', values: data.stages };\n const presentationFilter: AssemblyLineFilterRequest = !data.presentationId ? null : { name: 'presentations', operator: 'in', values: [data.presentationId]};\n const scopeFilter: AssemblyLineFilterRequest = {\n name: data.scopeType === 'library' ? 'library' : 'presentation',\n operator: 'in',\n values: data.scopes\n };\n const restFilters = AssemblyLineFilterHelper.serializeFilterRequestBody(data.filters);\n const additionalFilters = [ stageFilter, scopeFilter, presentationFilter ].filter(filter => filter !== null);\n\n const payload: AssemblyLineReportRequest = {\n columns: ArrayHelper.uniq([ ...DEFAULT_COLUMNS, ...data.columns ]),\n entityType: objectType,\n searchRequest: { filters: [ ...restFilters, ...additionalFilters ]}\n };\n\n if (shouldSave) {\n fetchAsync<void>(AssemblyLineRequests.createReportTemplate({ ...payload, name: data.reportName }));\n }\n\n try {\n alerts.info('Generating your report...', 'This may take a couple of minutes.');\n props.closePopup();\n\n const rawData = await fetchAsync<string>(AssemblyLineRequests.generateReport(payload));\n FileHelper.safeDownloadCsv(rawData, `${data.reportName}.csv`);\n\n alerts.success('Successfully generated report.');\n } catch (e) {\n if (e.responseJSON?.type === 'too-many-ids') {\n alerts.error('Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.');\n return;\n }\n alerts.error('Failed to generate report. Please try again, or reach out to the product team.');\n }\n }\n \n async function onGenerateByTemplate(template: ReportTemplate) {\n try {\n alerts.info('Generating your report...', 'This may take a couple of minutes.');\n props.closePopup();\n \n const rawData = await fetchAsync<string>(AssemblyLineRequests.generateReport(template));\n FileHelper.safeDownloadCsv(rawData, `${template.name}.csv`);\n\n alerts.success('Successfully generated report.');\n } catch (e) {\n if (e.responseJSON?.type === 'too-many-ids') {\n alerts.error('Report has exceeded the maximum of 15,000 rows. Please reduce the number of selections and try again.');\n return;\n }\n alerts.error('Failed to generate report. Please try again, or reach out to the product team.');\n }\n }\n\n return (\n <Popup\n title='Generate report'\n closePopup={props.closePopup}\n showLoadingSpinner={!libraries.data || !presentations.data || !templates.data}\n backdrop='static'\n size='lg'\n >\n <FormWrapper<AssemblyLineGenerateReportFormData>\n initialValues={{\n scopes: [],\n stages: [],\n columns: [],\n scopeType,\n filters,\n reportName: `${objectType}-${FILE_NAME_SUFFIX}`\n }}\n validationSchema={getAssemblyLineGenerateReportSchema(filterOptions)}\n allowInitialSubmit\n onSubmit={null}\n >\n <AssemblyLineGenerateReportForm\n libraries={filteredLibraries}\n presentations={presentations.data}\n stages={stages}\n columns={columns.data ?? []}\n objectType={objectType}\n queryParams={props.params}\n onSubmit={onSubmit}\n filterOptions={filterOptions}\n reportTemplates={templates.data?.data}\n onGenerateByTemplate={onGenerateByTemplate}\n />\n </FormWrapper>\n </Popup>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{G as i,x as a}from"./C7Gmh7eY.chunk.js";import{y as o}from"./BhKv6dKl2.chunk.js";import{s,u as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as l}from"./Bwpvc7Th2.chunk.js";import{t as u}from"./JmL1DHFu.chunk.js";import{t as d}from"./C5i_8zoU.chunk.js";import{t as f}from"./0KUhq7W7.chunk.js";import{n as p,t as m}from"./DjlPflaG.chunk.js";e();var h=t();function g(e){let t=c(),g=l(),_=s(r.currentUser()),v=s(d.clip(e.clipId)),y=s(i.getAssemblyLineVideo(e.clipId)),b=m(e.clipId),x=s(d.getTags(e.clipId));function S(n){return t(a.updateAtAGlance(e.clipId,n))}function C(){return t(a.updateAtAGlance(e.clipId,null))}async function w(n){if(!n.length)try{return await Promise.all(b.items.map(e=>t(a.deletePointOfInterest(e.id)))),{...v.data,pointsOfInterest:{data:[],pagination:null}}}catch{return v.data}return t(a.updatePointOfInterest(e.clipId,n.map(e=>({...e,id:e.id.toString().includes(`lookup`)?null:e.id}))))}async function T(n,r){await Promise.all([t(u.updateContentPipelineVideo(e.clipId,{hasPointsOfInterest:n})),t(u.addContentPipelineVideoComment(e.clipId,`bypassPointsOfInterest`,r.bypassCategory,r.bypassReason))]),g.success(`Successfully removed points of interest requirement`)}return b?.hasCompleted&&v.data&&x.data&&y.hasCompleted?(0,h.jsxs)(h.Fragment,{children:[!!_.data&&(0,h.jsx)(f,{clipId:e.clipId,activeAction:n.Clips.EDIT_CLIP_GLANCE,currentUser:_.data}),(0,h.jsx)(o,{object:v.data}),(0,h.jsx)(p,{obj:v.data,tags:x.data,initialPois:b.items,saveGlance:S,deleteGlance:C,updatePointsOfInterest:w,onToggleHasPointsOfInterest:T,contentPipelineVideo:y.data})]}):(0,h.jsx)(h.Fragment,{})}export{g as EditClipGlanceView};
2
- //# sourceMappingURL=DnGnhqys.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{G as i,x as a}from"./DWHKdmdQ.chunk.js";import{y as o}from"./GpDEun8c2.chunk.js";import{s,u as c}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as l}from"./Bwpvc7Th2.chunk.js";import{t as u}from"./JmL1DHFu.chunk.js";import{t as d}from"./C5i_8zoU.chunk.js";import{t as f}from"./DnZGILQc.chunk.js";import{n as p,t as m}from"./fapHSEex.chunk.js";e();var h=t();function g(e){let t=c(),g=l(),_=s(r.currentUser()),v=s(d.clip(e.clipId)),y=s(i.getAssemblyLineVideo(e.clipId)),b=m(e.clipId),x=s(d.getTags(e.clipId));function S(n){return t(a.updateAtAGlance(e.clipId,n))}function C(){return t(a.updateAtAGlance(e.clipId,null))}async function w(n){if(!n.length)try{return await Promise.all(b.items.map(e=>t(a.deletePointOfInterest(e.id)))),{...v.data,pointsOfInterest:{data:[],pagination:null}}}catch{return v.data}return t(a.updatePointOfInterest(e.clipId,n.map(e=>({...e,id:e.id.toString().includes(`lookup`)?null:e.id}))))}async function T(n,r){await Promise.all([t(u.updateContentPipelineVideo(e.clipId,{hasPointsOfInterest:n})),t(u.addContentPipelineVideoComment(e.clipId,`bypassPointsOfInterest`,r.bypassCategory,r.bypassReason))]),g.success(`Successfully removed points of interest requirement`)}return b?.hasCompleted&&v.data&&x.data&&y.hasCompleted?(0,h.jsxs)(h.Fragment,{children:[!!_.data&&(0,h.jsx)(f,{clipId:e.clipId,activeAction:n.Clips.EDIT_CLIP_GLANCE,currentUser:_.data}),(0,h.jsx)(o,{object:v.data}),(0,h.jsx)(p,{obj:v.data,tags:x.data,initialPois:b.items,saveGlance:S,deleteGlance:C,updatePointsOfInterest:w,onToggleHasPointsOfInterest:T,contentPipelineVideo:y.data})]}):(0,h.jsx)(h.Fragment,{})}export{g as EditClipGlanceView};
2
+ //# sourceMappingURL=CxENQntH.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DnGnhqys.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-glance/EditClipGlanceView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Clip, CuratorUser, PointOfInterest, TagCollection } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components';\nimport { Actions } from 'shared/constants';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { CommentFormData } from 'apps/assembly-line/interfaces/primitives/CommentFormData';\nimport { AssemblyLineVideoResponse } from 'apps/assembly-line/interfaces/responses/AssemblyLineVideoResponse';\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { EditGlanceAndPois } from 'apps/glance/components/edit-glance-and-pois/EditGlanceAndPois';\nimport { GlanceRequests } from 'apps/glance/flight-requests/GlanceRequests';\nimport { useFetchPointsOfInterest } from 'apps/glance/hooks/useFetchPointsOfInterest';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\n\ninterface EditClipGlanceViewProps {\n clipId: string;\n}\n\nexport function EditClipGlanceView(props: EditClipGlanceViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const contentPipelineVideo = Flight.useBasicFetch<AssemblyLineVideoResponse>(\n AssemblyLineRequests.getAssemblyLineVideo(props.clipId)\n );\n const initialPois = useFetchPointsOfInterest(props.clipId);\n const tags = Flight.useBasicFetch<TagCollection>(ClipRequests.getTags(props.clipId));\n\n function saveGlance(data: UpdateGlanceRequest): Promise<void> {\n return fetchAsync(GlanceRequests.updateAtAGlance(props.clipId, data));\n }\n\n function deleteGlance(): Promise<void> {\n return fetchAsync(GlanceRequests.updateAtAGlance(props.clipId, null));\n }\n\n async function updatePointsOfInterest(pointsOfInterest: PointOfInterest[]): Promise<Clip> {\n if (!pointsOfInterest.length) {\n try {\n await Promise.all(initialPois.items.map(poi => fetchAsync<void>(GlanceRequests.deletePointOfInterest(poi.id))));\n return {\n ...clip.data,\n pointsOfInterest: {\n data: [],\n pagination: null\n }\n };\n } catch {\n return clip.data;\n }\n }\n\n return fetchAsync<Clip>(GlanceRequests.updatePointOfInterest(\n props.clipId,\n pointsOfInterest.map((poi: PointOfInterest) => {\n return {\n ...poi,\n id: poi.id.toString().includes('lookup') ? null : poi.id\n };\n })\n ));\n }\n\n async function onToggleHasPointsOfInterest(state: boolean, comment: CommentFormData): Promise<void> {\n await Promise.all([\n fetchAsync(VideoRequests.updateContentPipelineVideo(props.clipId, { hasPointsOfInterest: state })),\n fetchAsync(VideoRequests.addContentPipelineVideoComment(\n props.clipId,\n 'bypassPointsOfInterest',\n comment.bypassCategory,\n comment.bypassReason\n ))\n ]);\n\n alerts.success('Successfully removed points of interest requirement');\n }\n\n const dataLoaded = (\n !!initialPois?.hasCompleted &&\n !!clip.data &&\n !!tags.data &&\n !!contentPipelineVideo.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <>\n {!!currentUser.data &&\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_GLANCE}\n currentUser={currentUser.data}\n />\n }\n <ObjectHeader object={clip.data} />\n\n <EditGlanceAndPois\n obj={clip.data}\n tags={tags.data}\n initialPois={initialPois.items}\n saveGlance={saveGlance}\n deleteGlance={deleteGlance}\n updatePointsOfInterest={updatePointsOfInterest}\n onToggleHasPointsOfInterest={onToggleHasPointsOfInterest}\n contentPipelineVideo={contentPipelineVideo.data}\n />\n </>\n );\n}\n"],"mappings":"uhBA0BA,SAAgB,EAAmB,EAA6C,CAC9E,IAAM,EAAa,EAAwB,EACrC,EAAS,EAAU,EAEnB,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAO,EAA2B,EAAa,KAAK,EAAM,MAAM,CAAC,EACjE,EAAuB,EAC3B,EAAqB,qBAAqB,EAAM,MAAM,CACxD,EACM,EAAc,EAAyB,EAAM,MAAM,EACnD,EAAO,EAAoC,EAAa,QAAQ,EAAM,MAAM,CAAC,EAEnF,SAAS,EAAW,EAA0C,CAC5D,OAAO,EAAW,EAAe,gBAAgB,EAAM,OAAQ,CAAI,CAAC,CACtE,CAEA,SAAS,GAA8B,CACrC,OAAO,EAAW,EAAe,gBAAgB,EAAM,OAAQ,IAAI,CAAC,CACtE,CAEA,eAAe,EAAuB,EAAoD,CACxF,GAAI,CAAC,EAAiB,OACpB,GAAI,CAEF,OADA,MAAM,QAAQ,IAAI,EAAY,MAAM,IAAI,GAAO,EAAiB,EAAe,sBAAsB,EAAI,EAAE,CAAC,CAAC,CAAC,EACvG,CACL,GAAG,EAAK,KACR,iBAAkB,CAChB,KAAM,CAAC,EACP,WAAY,IACd,CACF,CACF,MAAQ,CACN,OAAO,EAAK,IACd,CAGF,OAAO,EAAiB,EAAe,sBACrC,EAAM,OACN,EAAiB,IAAK,IACb,CACL,GAAG,EACH,GAAI,EAAI,GAAG,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAI,KAAO,EAAI,EACxD,EACD,CACH,CAAC,CACH,CAEA,eAAe,EAA4B,EAAgB,EAAyC,CAClG,MAAM,QAAQ,IAAI,CAChB,EAAW,EAAc,2BAA2B,EAAM,OAAQ,CAAE,oBAAqB,CAAM,CAAC,CAAC,EACjG,EAAW,EAAc,+BACvB,EAAM,OACN,yBACA,EAAQ,eACR,EAAQ,YACV,CAAC,CACH,CAAC,EAED,EAAO,QAAQ,qDAAqD,CACtE,CAYA,OATI,GAAa,cACb,EAAK,MACL,EAAK,MACL,EAAqB,cAOvB,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAM,OACd,aAAc,EAAQ,MAAM,iBAC5B,YAAa,EAAY,IAC1B,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,EAAK,IAAO,CAAA,GAElC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,IAAK,EAAK,KACV,KAAM,EAAK,KACX,YAAa,EAAY,MACb,aACE,eACU,yBACK,8BAC7B,qBAAsB,EAAqB,IAC5C,CAAA,CACD,CAAA,CAAA,GAvBK,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAyBf"}
1
+ {"version":3,"file":"CxENQntH.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-glance/EditClipGlanceView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Clip, CuratorUser, PointOfInterest, TagCollection } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components';\nimport { Actions } from 'shared/constants';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { CommentFormData } from 'apps/assembly-line/interfaces/primitives/CommentFormData';\nimport { AssemblyLineVideoResponse } from 'apps/assembly-line/interfaces/responses/AssemblyLineVideoResponse';\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { EditGlanceAndPois } from 'apps/glance/components/edit-glance-and-pois/EditGlanceAndPois';\nimport { GlanceRequests } from 'apps/glance/flight-requests/GlanceRequests';\nimport { useFetchPointsOfInterest } from 'apps/glance/hooks/useFetchPointsOfInterest';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\n\ninterface EditClipGlanceViewProps {\n clipId: string;\n}\n\nexport function EditClipGlanceView(props: EditClipGlanceViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const contentPipelineVideo = Flight.useBasicFetch<AssemblyLineVideoResponse>(\n AssemblyLineRequests.getAssemblyLineVideo(props.clipId)\n );\n const initialPois = useFetchPointsOfInterest(props.clipId);\n const tags = Flight.useBasicFetch<TagCollection>(ClipRequests.getTags(props.clipId));\n\n function saveGlance(data: UpdateGlanceRequest): Promise<void> {\n return fetchAsync(GlanceRequests.updateAtAGlance(props.clipId, data));\n }\n\n function deleteGlance(): Promise<void> {\n return fetchAsync(GlanceRequests.updateAtAGlance(props.clipId, null));\n }\n\n async function updatePointsOfInterest(pointsOfInterest: PointOfInterest[]): Promise<Clip> {\n if (!pointsOfInterest.length) {\n try {\n await Promise.all(initialPois.items.map(poi => fetchAsync<void>(GlanceRequests.deletePointOfInterest(poi.id))));\n return {\n ...clip.data,\n pointsOfInterest: {\n data: [],\n pagination: null\n }\n };\n } catch {\n return clip.data;\n }\n }\n\n return fetchAsync<Clip>(GlanceRequests.updatePointOfInterest(\n props.clipId,\n pointsOfInterest.map((poi: PointOfInterest) => {\n return {\n ...poi,\n id: poi.id.toString().includes('lookup') ? null : poi.id\n };\n })\n ));\n }\n\n async function onToggleHasPointsOfInterest(state: boolean, comment: CommentFormData): Promise<void> {\n await Promise.all([\n fetchAsync(VideoRequests.updateContentPipelineVideo(props.clipId, { hasPointsOfInterest: state })),\n fetchAsync(VideoRequests.addContentPipelineVideoComment(\n props.clipId,\n 'bypassPointsOfInterest',\n comment.bypassCategory,\n comment.bypassReason\n ))\n ]);\n\n alerts.success('Successfully removed points of interest requirement');\n }\n\n const dataLoaded = (\n !!initialPois?.hasCompleted &&\n !!clip.data &&\n !!tags.data &&\n !!contentPipelineVideo.hasCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <>\n {!!currentUser.data &&\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_GLANCE}\n currentUser={currentUser.data}\n />\n }\n <ObjectHeader object={clip.data} />\n\n <EditGlanceAndPois\n obj={clip.data}\n tags={tags.data}\n initialPois={initialPois.items}\n saveGlance={saveGlance}\n deleteGlance={deleteGlance}\n updatePointsOfInterest={updatePointsOfInterest}\n onToggleHasPointsOfInterest={onToggleHasPointsOfInterest}\n contentPipelineVideo={contentPipelineVideo.data}\n />\n </>\n );\n}\n"],"mappings":"uhBA0BA,SAAgB,EAAmB,EAA6C,CAC9E,IAAM,EAAa,EAAwB,EACrC,EAAS,EAAU,EAEnB,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAO,EAA2B,EAAa,KAAK,EAAM,MAAM,CAAC,EACjE,EAAuB,EAC3B,EAAqB,qBAAqB,EAAM,MAAM,CACxD,EACM,EAAc,EAAyB,EAAM,MAAM,EACnD,EAAO,EAAoC,EAAa,QAAQ,EAAM,MAAM,CAAC,EAEnF,SAAS,EAAW,EAA0C,CAC5D,OAAO,EAAW,EAAe,gBAAgB,EAAM,OAAQ,CAAI,CAAC,CACtE,CAEA,SAAS,GAA8B,CACrC,OAAO,EAAW,EAAe,gBAAgB,EAAM,OAAQ,IAAI,CAAC,CACtE,CAEA,eAAe,EAAuB,EAAoD,CACxF,GAAI,CAAC,EAAiB,OACpB,GAAI,CAEF,OADA,MAAM,QAAQ,IAAI,EAAY,MAAM,IAAI,GAAO,EAAiB,EAAe,sBAAsB,EAAI,EAAE,CAAC,CAAC,CAAC,EACvG,CACL,GAAG,EAAK,KACR,iBAAkB,CAChB,KAAM,CAAC,EACP,WAAY,IACd,CACF,CACF,MAAQ,CACN,OAAO,EAAK,IACd,CAGF,OAAO,EAAiB,EAAe,sBACrC,EAAM,OACN,EAAiB,IAAK,IACb,CACL,GAAG,EACH,GAAI,EAAI,GAAG,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAI,KAAO,EAAI,EACxD,EACD,CACH,CAAC,CACH,CAEA,eAAe,EAA4B,EAAgB,EAAyC,CAClG,MAAM,QAAQ,IAAI,CAChB,EAAW,EAAc,2BAA2B,EAAM,OAAQ,CAAE,oBAAqB,CAAM,CAAC,CAAC,EACjG,EAAW,EAAc,+BACvB,EAAM,OACN,yBACA,EAAQ,eACR,EAAQ,YACV,CAAC,CACH,CAAC,EAED,EAAO,QAAQ,qDAAqD,CACtE,CAYA,OATI,GAAa,cACb,EAAK,MACL,EAAK,MACL,EAAqB,cAOvB,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,OACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAQ,EAAM,OACd,aAAc,EAAQ,MAAM,iBAC5B,YAAa,EAAY,IAC1B,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,EAAK,IAAO,CAAA,GAElC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,IAAK,EAAK,KACV,KAAM,EAAK,KACX,YAAa,EAAY,MACb,aACE,eACU,yBACK,8BAC7B,qBAAsB,EAAqB,IAC5C,CAAA,CACD,CAAA,CAAA,GAvBK,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAyBf"}