@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,2 +1,2 @@
1
- import{C as e,a as t,i as n,ln as r,w as i}from"./rp704-Pm.chunk.js";import{a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./Di_u2uix.chunk.js";import{t as s}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as c,r as l}from"./BKtR2N4K.chunk.js";import{G as u,K as d,W as f,h as p,nt as m,t as h,tt as g}from"./C7Gmh7eY.chunk.js";import{t as _}from"./DBHDBu1Y2.chunk.js";import{t as v}from"./CHTOLKFB.chunk.js";import{t as y}from"./DmpWpl-3.chunk.js";import{t as b}from"./BMjA_FNA.chunk.js";import{s as x,u as S}from"./Dgk5cBBe.chunk.js";import{t as C}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as w}from"./DFZ_IQ1H.chunk.js";import"./BCfBk23W.chunk.js";import{t as T}from"./DjzD1n9W.chunk.js";import{i as E}from"./DmEz0Sg_2.chunk.js";import{t as D}from"./Bwpvc7Th2.chunk.js";import{t as O}from"./CZyPFSXo.chunk.js";import{t as k}from"./DkLlaBp-.chunk.js";import{t as A}from"./CGACfSBR.chunk.js";import{t as j}from"./JmL1DHFu.chunk.js";import{t as M}from"./BNgL3wBw.chunk.js";import{t as N}from"./Duk0omCc2.chunk.js";import{t as P}from"./BLN1DcS_2.chunk.js";import{t as F}from"./C5i_8zoU.chunk.js";import{t as I}from"./D1EPU1_6.chunk.js";import{t as L}from"./Dy4nscVE2.chunk.js";import{n as R}from"./DvP7S5Uq.chunk.js";import{i as z,n as B,t as V}from"./BCMXlwdC2.chunk.js";import{t as H}from"./DwJsrLcL2.chunk.js";import{t as U}from"./BQqvNp0J2.chunk.js";import{t as W}from"./MBxuLnEp2.chunk.js";import{t as G}from"./DxL0ZEcN2.chunk.js";var K=r(t()),q=n();function J(e,t){return t.find(t=>{let n=w.getDashboardTargetInfo(t);return w.isClassificationDashboard(n)?n.classificationId===e.id:!1})?!e.cover?.url&&!e.banner?.url?{disabled:!0,tooltip:`This topic doesn't have a cover or banner image, so it cannot be published`}:e.cover?.url?e.banner?.url?{disabled:!1}:{disabled:!0,tooltip:`This topic doesn't have a banner image, so it cannot be published`}:{disabled:!0,tooltip:`This topic doesn't have a cover image, so it cannot be published`}:{disabled:!0,tooltip:`This topic doesn't have a dashboard yet, so it cannot be published`}}function Y(e){let[t,n]=K.useState([]);function r(r){let i=t.includes(r)?t.filter(e=>e!==r):[...t,r];e.selectedClassificationsRef.current=i,n(i)}let i=e.draftClassificationDashboards.length;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:`mb-2`,children:[`You are about to publish `,(0,q.jsx)(`strong`,{children:e.video.name}),` 🎉`]}),(0,q.jsx)(`p`,{className:`mb-2`,children:`Please double check that all of the metadata and resources are accurate before proceeding.`}),i>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{children:[`This video currently sits in `,i,` draft topic`,i===1?``:`s`,`. Please opt in to the topics that you would like to publish along with the video:`]}),(0,q.jsx)(`ul`,{className:`list-unstyled`,children:e.draftClassifications.map(n=>{let{disabled:i,tooltip:o}=J(n,e.draftClassificationDashboards);return(0,q.jsx)(`li`,{className:`mb-1`,children:(0,q.jsx)(a,{title:o,spanHack:!0,spanHackClassName:`d-inline-block`,children:(0,q.jsx)(v,{id:n.id,checked:t.includes(n.id),onChange:()=>r(n.id),label:n.name,disabled:i})})},n.id)})})]})]})}var X={table:`w-100`,header:`fw-semibold`,headerCell:`px-3 py-1 mh-100 align-items-center bg-white ${W.headerCell} text-nowrap`,row:W.row,cell:`d-flex align-items-center border-end border-light ${W.cell}`};function Z(t){let[,n]=k(A.ASSEMBLY_LINE),{hasPermissions:r}=T(),i=K.useContext(m),a=N(t.videos?.data,{persistNamespace:t.stage});function c(e){if(e===`bulk`){a.onToggleBulk();return}a.onToggleItem(e)}function l(){return t.videos.data.map(e=>({...e,checked:a.isChecked(e.id)}))}function u(){n({ownerType:`video`,ownerIdMap:a.getMap(),removedIds:[],resetSelection:a.deselectAll});let r={stage:t.stage,queryParams:t.queryParams,pipelineId:i,view:t.view};t.queryParams.presentationId&&(r.presentationId=t.queryParams.presentationId),e.trigger({application:s.ASSEMBLY_LINE,action:o.AssemblyLine.WIZARD,params:r})}let d={pipelineId:i,onToggleCheckbox:c,onClickMoveToNextStage:t.onClickMoveToNextStage,isBulkChecked:a.bulkChecked,isBulkIndeterminate:a.hasSomeSelections(),objectType:`video`,presentationId:p[t.view]?.presentationId??t.queryParams.presentationId,openInClickView:t.stage===`curated_thumbnail`,updatePriority:t.updatePriority,updateThumbnailQuality:t.updateThumbnailQuality,stage:t.stage,hasPermissions:r,resyncRightsLineId:t.resyncRightsLineId,onClickOpenParentVideo:t.onClickOpenParentVideo,presentations:t.presentations,view:t.view},h=f.getColumns(d,t.stage,`video`,t.view);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`px-5`,children:(0,q.jsx)(H,{selectedCount:a.getSelectedCount(),onClickDeselectAll:a.reset,onClickSelectBulk:u,getTypeText:e=>e===1?`video`:`videos`})}),!t.videos&&(0,q.jsx)(z,{}),t.videos?.data&&!t.videos.data.length&&(0,q.jsx)(V,{queryParams:t.queryParams,pipelineId:i}),t.videos?.data&&!!t.videos.data.length&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(b,{columns:h,data:l(),defaultPinnedColumns:t.columnVisibility,columnPinning:{left:f.getPinnedVideoColumnIds(t.view)},pinnedColumnsKey:`assembly_line_columns_settings_${t.view}`,columnResizerKey:`assembly_line_column_size_settings:video`,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:64,containerHeight:t.stage===`metadata`?`75vh`:`66vh`},theme:X}),(0,q.jsxs)(`div`,{className:`d-flex flex-row justify-content-end`,children:[(0,q.jsx)(M,{cursors:t.videos.pagination,appLink:y.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`}),(0,q.jsx)(U,{queryParams:t.queryParams})]})]})]})}function Q(t){let n=L(t.queryParams,t.subStage),r=G(t.queryParams,t.subStage,`video`,t.view),a=S(),m=D(),v=d.serializeFilterRequestBody(n);t.pipelineId===`cv-live`&&v.push({name:`source`,operator:`in`,values:[E.Streamable]});let y=p[t.view],b=x(y?.presentationId&&t.queryParams.applyHideTopicsFilter&&O.getClassificationTree(y.presentationId)),T=x(y?.presentationId&&t.queryParams.applyHideAudiencesFilter&&O.presentationAudiences(y.presentationId));t.view?v.push(...y.getAdditionalFilters(b.data,T.data)):v.push({name:`source`,operator:`not_in`,values:[`new_zealand`]});let k=x(u.getVideos({stage:t.view?void 0:t.subStage,filters:v,presentationId:y?.presentationId??t.queryParams.presentationId,searchQuery:t.queryParams.query,sort:t.queryParams.sort,cursor:t.queryParams.cursor,limit:+t.queryParams.limit})),{presentations:A}=R(t.queryParams,`video`,t.subStage,t.pipelineId,t.view),M=f.getNextStage(t.subStage),N=K.useRef([]);async function z(e){let t=k.data?.data?.find(t=>t.id?.toString()===e.toString()),n=t.classifications.data.map(e=>e.id)??[],r=await a(!!n.length&&O.classificationsById(n,`banner,cover`)),i=r.filter(e=>e.status!==_.Published),o=await Promise.all(i.map(e=>a(I.dashboards({targetType:l.Classification,classificationId:e.id},!0)))),s=C.flatten(o.map(e=>e.data));return new Promise((n,o)=>{P.render((0,q.jsx)(Y,{selectedClassificationsRef:N,draftClassifications:i||[],draftClassificationDashboards:s||[],video:t}),{title:`Publish video`,submitButtonProps:{variant:`dark`,text:`Publish video`,onClick:async()=>{try{for(let e of N.current){let t=s.find(t=>{let n=w.getDashboardTargetInfo(t);return w.isClassificationDashboard(n)?n.classificationId===e:!1}),n=[];t.status===c.Draft&&n.push(a(I.updateDashboard(t.id,{...t,status:c.Published})));let i=r.find(t=>t.id===e);n.push(a(O.updateClassification({...i,status:_.Published}))),await Promise.all(n)}await a(u.publishVideo(e)),n(!0)}catch{o({cancelled:!1})}}},cancelButtonProps:{onClick:()=>o({cancelled:!0})}})})}async function V(e){if(h[t.subStage].moveToLatestStage){await a(u.moveVideoToFurthestStage(e));return}if(t.subStage===`review_video`){await z(e);return}await a(u.updateVideoStage(e,t.subStage,M));let n=await a(u.getAssemblyLineVideo(e)),r=f.mapStageToAction(n.stage);return r?{application:t.pipelineId===`clickview`?s.ASSEMBLY_LINE:s.CV_LIVE_PIPELINE,action:r,params:t.queryParams}:null}async function H(e){m.info(`Syncing video with Rightsline`,`This may take a few moments...`);let t=null;try{t=await a(j.rightslineVideo(e))}catch(e){if(e.status===404){m.error(`Video not found in Rightsline.`);return}m.error(`Something went wrong while fetching video from Rightsline.`);return}try{await a(j.updateVideo(e,{name:t.name,description:t.description,productionYear:t.productionYear,rating:{id:t.rating.id}})),await a(u.syncVideo(e,!0))}catch{m.error(`Something went wrong while syncing Rightsline with ClickView.`);return}m.success(`Video synced with Rightsline successfully.`)}function U(e,n){return a(u.updateVideoPriority(e,n,t.subStage,t.queryParams.presentationId,t.queryParams.sort))}function W(e,t){return a(u.updateThumbnailQuality(e,t))}function J(t){a(F.clip(t)).then(t=>{let n=e.getHref({application:s.VIDEOS,action:o.Videos.EDIT_VIDEO,args:[t._parentVideo.id]});i.PageLoad(n,!0)})}return(0,q.jsx)(g,{subStage:t.subStage,pipelineId:t.pipelineId,children:(0,q.jsx)(B,{stage:t.stage,subStage:t.subStage,objectType:`video`,pipelineId:t.pipelineId,columnVisibility:r,filters:n,queryParams:t.queryParams,counts:{showing:k.data?.data?.length??0,total:k.data?.count??0},view:t.view,children:(0,q.jsx)(Z,{videos:k.data,stage:t.subStage,queryParams:t.queryParams,onClickMoveToNextStage:V,columnVisibility:r,resyncRightsLineId:H,onClickOpenParentVideo:J,updatePriority:U,updateThumbnailQuality:W,presentations:A,view:t.view})})})}export{Q as AssemblyLineVideoStageView};
2
- //# sourceMappingURL=CxtxOtyF2.chunk.js.map
1
+ import{C as e,a as t,i as n,ln as r,w as i}from"./rp704-Pm.chunk.js";import{a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./Di_u2uix.chunk.js";import{t as s}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as c,r as l}from"./BKtR2N4K.chunk.js";import{G as u,K as d,W as f,h as p,nt as m,t as h,tt as g}from"./DWHKdmdQ.chunk.js";import{t as _}from"./DBHDBu1Y2.chunk.js";import{t as v}from"./CHTOLKFB.chunk.js";import{t as y}from"./DmpWpl-3.chunk.js";import{t as b}from"./BMjA_FNA.chunk.js";import{s as x,u as S}from"./Dgk5cBBe.chunk.js";import{t as C}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as w}from"./DFZ_IQ1H.chunk.js";import"./BCfBk23W.chunk.js";import{t as T}from"./DjzD1n9W.chunk.js";import{i as E}from"./DmEz0Sg_2.chunk.js";import{t as D}from"./Bwpvc7Th2.chunk.js";import{t as O}from"./CZyPFSXo.chunk.js";import{t as k}from"./DkLlaBp-.chunk.js";import{t as A}from"./CGACfSBR.chunk.js";import{t as j}from"./JmL1DHFu.chunk.js";import{t as M}from"./BNgL3wBw.chunk.js";import{t as N}from"./Duk0omCc2.chunk.js";import{t as P}from"./BLN1DcS_2.chunk.js";import{t as F}from"./C5i_8zoU.chunk.js";import{t as I}from"./D1EPU1_6.chunk.js";import{t as L}from"./T3BageSw2.chunk.js";import{n as R}from"./3eMwLZ5D.chunk.js";import{i as z,n as B,t as V}from"./B8RZKQTs2.chunk.js";import{t as H}from"./DwJsrLcL2.chunk.js";import{t as U}from"./BQqvNp0J2.chunk.js";import{t as W}from"./MBxuLnEp2.chunk.js";import{t as G}from"./BiPUuGEE2.chunk.js";var K=r(t()),q=n();function J(e,t){return t.find(t=>{let n=w.getDashboardTargetInfo(t);return w.isClassificationDashboard(n)?n.classificationId===e.id:!1})?!e.cover?.url&&!e.banner?.url?{disabled:!0,tooltip:`This topic doesn't have a cover or banner image, so it cannot be published`}:e.cover?.url?e.banner?.url?{disabled:!1}:{disabled:!0,tooltip:`This topic doesn't have a banner image, so it cannot be published`}:{disabled:!0,tooltip:`This topic doesn't have a cover image, so it cannot be published`}:{disabled:!0,tooltip:`This topic doesn't have a dashboard yet, so it cannot be published`}}function Y(e){let[t,n]=K.useState([]);function r(r){let i=t.includes(r)?t.filter(e=>e!==r):[...t,r];e.selectedClassificationsRef.current=i,n(i)}let i=e.draftClassificationDashboards.length;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:`mb-2`,children:[`You are about to publish `,(0,q.jsx)(`strong`,{children:e.video.name}),` 🎉`]}),(0,q.jsx)(`p`,{className:`mb-2`,children:`Please double check that all of the metadata and resources are accurate before proceeding.`}),i>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{children:[`This video currently sits in `,i,` draft topic`,i===1?``:`s`,`. Please opt in to the topics that you would like to publish along with the video:`]}),(0,q.jsx)(`ul`,{className:`list-unstyled`,children:e.draftClassifications.map(n=>{let{disabled:i,tooltip:o}=J(n,e.draftClassificationDashboards);return(0,q.jsx)(`li`,{className:`mb-1`,children:(0,q.jsx)(a,{title:o,spanHack:!0,spanHackClassName:`d-inline-block`,children:(0,q.jsx)(v,{id:n.id,checked:t.includes(n.id),onChange:()=>r(n.id),label:n.name,disabled:i})})},n.id)})})]})]})}var X={table:`w-100`,header:`fw-semibold`,headerCell:`px-3 py-1 mh-100 align-items-center bg-white ${W.headerCell} text-nowrap`,row:W.row,cell:`d-flex align-items-center border-end border-light ${W.cell}`};function Z(t){let[,n]=k(A.ASSEMBLY_LINE),{hasPermissions:r}=T(),i=K.useContext(m),a=N(t.videos?.data,{persistNamespace:t.stage});function c(e){if(e===`bulk`){a.onToggleBulk();return}a.onToggleItem(e)}function l(){return t.videos.data.map(e=>({...e,checked:a.isChecked(e.id)}))}function u(){n({ownerType:`video`,ownerIdMap:a.getMap(),removedIds:[],resetSelection:a.deselectAll});let r={stage:t.stage,queryParams:t.queryParams,pipelineId:i,view:t.view};t.queryParams.presentationId&&(r.presentationId=t.queryParams.presentationId),e.trigger({application:s.ASSEMBLY_LINE,action:o.AssemblyLine.WIZARD,params:r})}let d={pipelineId:i,onToggleCheckbox:c,onClickMoveToNextStage:t.onClickMoveToNextStage,isBulkChecked:a.bulkChecked,isBulkIndeterminate:a.hasSomeSelections(),objectType:`video`,presentationId:p[t.view]?.presentationId??t.queryParams.presentationId,openInClickView:t.stage===`curated_thumbnail`,updatePriority:t.updatePriority,updateThumbnailQuality:t.updateThumbnailQuality,stage:t.stage,hasPermissions:r,resyncRightsLineId:t.resyncRightsLineId,onClickOpenParentVideo:t.onClickOpenParentVideo,presentations:t.presentations,view:t.view},h=f.getColumns(d,t.stage,`video`,t.view);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`px-5`,children:(0,q.jsx)(H,{selectedCount:a.getSelectedCount(),onClickDeselectAll:a.reset,onClickSelectBulk:u,getTypeText:e=>e===1?`video`:`videos`})}),!t.videos&&(0,q.jsx)(z,{}),t.videos?.data&&!t.videos.data.length&&(0,q.jsx)(V,{queryParams:t.queryParams,pipelineId:i}),t.videos?.data&&!!t.videos.data.length&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(b,{columns:h,data:l(),defaultPinnedColumns:t.columnVisibility,columnPinning:{left:f.getPinnedVideoColumnIds(t.view)},pinnedColumnsKey:`assembly_line_columns_settings_${t.view}`,columnResizerKey:`assembly_line_column_size_settings:video`,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:64,containerHeight:t.stage===`metadata`?`75vh`:`66vh`},theme:X}),(0,q.jsxs)(`div`,{className:`d-flex flex-row justify-content-end`,children:[(0,q.jsx)(M,{cursors:t.videos.pagination,appLink:y.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`}),(0,q.jsx)(U,{queryParams:t.queryParams})]})]})]})}function Q(t){let n=L(t.queryParams,t.subStage),r=G(t.queryParams,t.subStage,`video`,t.view),a=S(),m=D(),v=d.serializeFilterRequestBody(n);t.pipelineId===`cv-live`&&v.push({name:`source`,operator:`in`,values:[E.Streamable]});let y=p[t.view],b=x(y?.presentationId&&t.queryParams.applyHideTopicsFilter&&O.getClassificationTree(y.presentationId)),T=x(y?.presentationId&&t.queryParams.applyHideAudiencesFilter&&O.presentationAudiences(y.presentationId));t.view?v.push(...y.getAdditionalFilters(b.data,T.data)):v.push({name:`source`,operator:`not_in`,values:[`new_zealand`]});let k=x(u.getVideos({stage:t.view?void 0:t.subStage,filters:v,presentationId:y?.presentationId??t.queryParams.presentationId,searchQuery:t.queryParams.query,sort:t.queryParams.sort,cursor:t.queryParams.cursor,limit:+t.queryParams.limit})),{presentations:A}=R(t.queryParams,`video`,t.subStage,t.pipelineId,t.view),M=f.getNextStage(t.subStage),N=K.useRef([]);async function z(e){let t=k.data?.data?.find(t=>t.id?.toString()===e.toString()),n=t.classifications.data.map(e=>e.id)??[],r=await a(!!n.length&&O.classificationsById(n,`banner,cover`)),i=r.filter(e=>e.status!==_.Published),o=await Promise.all(i.map(e=>a(I.dashboards({targetType:l.Classification,classificationId:e.id},!0)))),s=C.flatten(o.map(e=>e.data));return new Promise((n,o)=>{P.render((0,q.jsx)(Y,{selectedClassificationsRef:N,draftClassifications:i||[],draftClassificationDashboards:s||[],video:t}),{title:`Publish video`,submitButtonProps:{variant:`dark`,text:`Publish video`,onClick:async()=>{try{for(let e of N.current){let t=s.find(t=>{let n=w.getDashboardTargetInfo(t);return w.isClassificationDashboard(n)?n.classificationId===e:!1}),n=[];t.status===c.Draft&&n.push(a(I.updateDashboard(t.id,{...t,status:c.Published})));let i=r.find(t=>t.id===e);n.push(a(O.updateClassification({...i,status:_.Published}))),await Promise.all(n)}await a(u.publishVideo(e)),n(!0)}catch{o({cancelled:!1})}}},cancelButtonProps:{onClick:()=>o({cancelled:!0})}})})}async function V(e){if(h[t.subStage].moveToLatestStage){await a(u.moveVideoToFurthestStage(e));return}if(t.subStage===`review_video`){await z(e);return}await a(u.updateVideoStage(e,t.subStage,M));let n=await a(u.getAssemblyLineVideo(e)),r=f.mapStageToAction(n.stage);return r?{application:t.pipelineId===`clickview`?s.ASSEMBLY_LINE:s.CV_LIVE_PIPELINE,action:r,params:t.queryParams}:null}async function H(e){m.info(`Syncing video with Rightsline`,`This may take a few moments...`);let t=null;try{t=await a(j.rightslineVideo(e))}catch(e){if(e.status===404){m.error(`Video not found in Rightsline.`);return}m.error(`Something went wrong while fetching video from Rightsline.`);return}try{await a(j.updateVideo(e,{name:t.name,description:t.description,productionYear:t.productionYear,rating:{id:t.rating.id}})),await a(u.syncVideo(e,!0))}catch{m.error(`Something went wrong while syncing Rightsline with ClickView.`);return}m.success(`Video synced with Rightsline successfully.`)}function U(e,n){return a(u.updateVideoPriority(e,n,t.subStage,t.queryParams.presentationId,t.queryParams.sort))}function W(e,t){return a(u.updateThumbnailQuality(e,t))}function J(t){a(F.clip(t)).then(t=>{let n=e.getHref({application:s.VIDEOS,action:o.Videos.EDIT_VIDEO,args:[t._parentVideo.id]});i.PageLoad(n,!0)})}return(0,q.jsx)(g,{subStage:t.subStage,pipelineId:t.pipelineId,children:(0,q.jsx)(B,{stage:t.stage,subStage:t.subStage,objectType:`video`,pipelineId:t.pipelineId,columnVisibility:r,filters:n,queryParams:t.queryParams,counts:{showing:k.data?.data?.length??0,total:k.data?.count??0},view:t.view,children:(0,q.jsx)(Z,{videos:k.data,stage:t.subStage,queryParams:t.queryParams,onClickMoveToNextStage:V,columnVisibility:r,resyncRightsLineId:H,onClickOpenParentVideo:J,updatePriority:U,updateThumbnailQuality:W,presentations:A,view:t.view})})})}export{Q as AssemblyLineVideoStageView};
2
+ //# sourceMappingURL=D4xcR0492.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CxtxOtyF2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/publish-video/PublishVideoView.tsx","../../../../../src/apps/assembly-line/constants/AssemblyLineVideoTableTheme.ts","../../../../../src/apps/assembly-line/components/table/AssemblyLineVideoTable.tsx","../../../../../src/apps/assembly-line/views/tables/AssemblyLineVideoStageView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Classification, CuratedDashboard } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\n\ninterface Status {\n disabled: boolean;\n tooltip?: string;\n}\n\nfunction getStatus(classification: Classification, dashboards: CuratedDashboard[]): Status {\n const dashboard = dashboards.find(d => {\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(d);\n\n if (CuratedDashboardHelper.isClassificationDashboard(targetInfo)) {\n return targetInfo.classificationId === classification.id;\n }\n\n return false;\n });\n\n if (!dashboard)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a dashboard yet, so it cannot be published' };\n\n if (!classification.cover?.url && !classification.banner?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a cover or banner image, so it cannot be published' };\n\n if (!classification.cover?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a cover image, so it cannot be published' };\n\n if (!classification.banner?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a banner image, so it cannot be published' };\n\n return { disabled: false };\n}\n\ninterface PublishVideoViewProps {\n video: AssemblyLineVideo;\n draftClassifications: Classification[];\n draftClassificationDashboards: CuratedDashboard[];\n selectedClassificationsRef: React.MutableRefObject<string[]>;\n}\n\nexport function PublishVideoView(props: PublishVideoViewProps): JSX.Element {\n const [ selectedClassifications, setSelectedClassifications ] = React.useState<string[]>([]);\n\n function onToggleCheckbox(id: string): void {\n const newSelectedClassifications = selectedClassifications.includes(id) ?\n selectedClassifications.filter(c => c !== id) :\n [ ...selectedClassifications, id ];\n\n props.selectedClassificationsRef.current = newSelectedClassifications;\n setSelectedClassifications(newSelectedClassifications);\n }\n\n const total = props.draftClassificationDashboards.length;\n\n return (\n <>\n <p className='mb-2'>You are about to publish <strong>{props.video.name}</strong> 🎉</p>\n <p className='mb-2'>Please double check that all of the metadata and resources are accurate before proceeding.</p>\n\n {total > 0 && (\n <>\n <p>\n This video currently sits in {total} draft topic{total === 1 ? '' : 's'}.\n Please opt in to the topics that you would like to publish along with the video:\n </p>\n <ul className='list-unstyled'>\n {props.draftClassifications.map(c => {\n const { disabled, tooltip } = getStatus(c, props.draftClassificationDashboards);\n\n return (\n <li key={c.id} className='mb-1'>\n <Tooltip title={tooltip} spanHack spanHackClassName='d-inline-block'>\n <Checkbox\n id={c.id}\n checked={selectedClassifications.includes(c.id)}\n onChange={() => onToggleCheckbox(c.id)}\n label={c.name}\n disabled={disabled}\n />\n </Tooltip>\n </li>\n );\n })}\n </ul>\n </>\n )}\n </>\n );\n}\n","import { TableThemeV2 } from 'libs/shared/components/table-v2/TableV2';\n\nimport styles from './theme.module.scss';\n\nexport const ASSEMBLY_LINE_VIDEO_TABLE_THEME: TableThemeV2 = {\n table: 'w-100',\n header: 'fw-semibold',\n headerCell: `px-3 py-1 mh-100 align-items-center bg-white ${styles.headerCell} text-nowrap`,\n row: styles.row,\n cell: `d-flex align-items-center border-end border-light ${styles.cell}`\n};\n","import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkSelectionSummary } from 'libs/shared/components/bulk-selection-summary/BulkSelectionSummary';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\nimport { useCuratorPermissions } from 'shared/hooks';\n\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTableSizeSelector } from 'apps/assembly-line/components/table-size-selector/AssemblyLineTableSizeSelector';\nimport { ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS, ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS } from 'apps/assembly-line/constants/AssemblyLineTableColumnsSettingString';\nimport { ASSEMBLY_LINE_VIDEO_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineVideoTableTheme';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineBulkActionsQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionsQueryParams';\nimport { AssemblyLineBulkActionViewModel } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionViewModel';\nimport { AssemblyLineVideoTableData } from 'apps/assembly-line/interfaces/AssemblyLineCellProps';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { ThumbnailQuality } from 'apps/assembly-line/interfaces/AssemblyLineThumbnailQuality';\nimport { AssemblyLineVideo, AssemblyLineVideoCollection } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { EntityColumnArgs } from '../columns/AssemblyLineAllTableColumns';\n\ninterface AssemblyLineVideoTableProps {\n videos: AssemblyLineVideoCollection;\n queryParams: AssemblyLineQueryParams;\n stage: AssemblyLineStage;\n onClickMoveToNextStage: (id: string) => Promise<Core.AppLink>;\n columnVisibility: VisibilityState;\n onClickOpenParentVideo: (clipId: string) => void;\n updatePriority: (videoId: string, priority: number) => Promise<void>;\n updateThumbnailQuality: (video: AssemblyLineVideo, quality: ThumbnailQuality) => Promise<void>;\n resyncRightsLineId?: (videoId: string) => Promise<AssemblyLineVideo>;\n presentations: Presentation[];\n view: AssemblyLineView;\n}\n\nexport function AssemblyLineVideoTable(props: AssemblyLineVideoTableProps): JSX.Element {\n const [ , setBulkActionViewModel ] = useViewModel<AssemblyLineBulkActionViewModel>(\n ViewModelKeys.ASSEMBLY_LINE\n );\n\n const { hasPermissions } = useCuratorPermissions();\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const CheckboxHelper = useBulkCheckboxManager(props.videos?.data, {\n persistNamespace: props.stage\n });\n\n function onToggleCheckbox(id: string): void {\n if (id === 'bulk') {\n CheckboxHelper.onToggleBulk();\n return;\n }\n\n CheckboxHelper.onToggleItem(id);\n }\n\n function getData(): AssemblyLineVideoTableData[] {\n return props.videos.data.map(video => {\n return {\n ...video,\n checked: CheckboxHelper.isChecked(video.id)\n };\n });\n }\n\n function onClickSelectBulkAction(): void {\n setBulkActionViewModel({\n ownerType: 'video',\n ownerIdMap: CheckboxHelper.getMap(),\n removedIds: [],\n resetSelection: CheckboxHelper.deselectAll\n });\n\n const params: AssemblyLineBulkActionsQueryParams = {\n stage: props.stage,\n queryParams: props.queryParams,\n pipelineId,\n view: props.view\n };\n\n if (props.queryParams.presentationId)\n params.presentationId = props.queryParams.presentationId;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.WIZARD,\n params\n });\n }\n\n const options: EntityColumnArgs = {\n pipelineId,\n onToggleCheckbox,\n onClickMoveToNextStage: props.onClickMoveToNextStage,\n isBulkChecked: CheckboxHelper.bulkChecked,\n isBulkIndeterminate: CheckboxHelper.hasSomeSelections(),\n objectType: 'video' as AssemblyLineObjectType,\n presentationId: AssemblyLineViewConfig[props.view]?.presentationId ?? props.queryParams.presentationId,\n openInClickView: props.stage === 'curated_thumbnail',\n updatePriority: props.updatePriority,\n updateThumbnailQuality: props.updateThumbnailQuality,\n stage: props.stage,\n hasPermissions,\n resyncRightsLineId: props.resyncRightsLineId,\n onClickOpenParentVideo: props.onClickOpenParentVideo,\n presentations: props.presentations,\n view: props.view\n };\n const columns = AssemblyLineHelper.getColumns(options, props.stage, 'video', props.view);\n\n return (\n <>\n <div className='px-5'>\n <BulkSelectionSummary\n selectedCount={CheckboxHelper.getSelectedCount()}\n onClickDeselectAll={CheckboxHelper.reset}\n onClickSelectBulk={onClickSelectBulkAction}\n getTypeText={count => count === 1 ? 'video' : 'videos'}\n />\n </div>\n\n {!props.videos && <AssemblyLineSpinner />}\n\n {props.videos?.data && !props.videos.data.length && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={pipelineId} />\n )}\n\n {props.videos?.data && !!props.videos.data.length && (\n <>\n <TableV2<any>\n columns={columns}\n data={getData()}\n defaultPinnedColumns={props.columnVisibility}\n columnPinning={{\n left: AssemblyLineHelper.getPinnedVideoColumnIds(props.view)\n }}\n pinnedColumnsKey={`${ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS}_${props.view}`}\n columnResizerKey={`${ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS}:video`}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 64,\n containerHeight: props.stage === 'metadata' ? '75vh' : '66vh'\n }}\n theme={ASSEMBLY_LINE_VIDEO_TABLE_THEME}\n />\n\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={props.videos.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n <AssemblyLineTableSizeSelector queryParams={props.queryParams} />\n </div>\n </>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseTree, Classification, Clip, CuratedDashboardCollection, DashboardStatus, DashboardTargetType, PresentationAudience } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { PublishVideoView } from 'apps/assembly-line/components/publish-video/PublishVideoView';\nimport { AssemblyLineVideoTable } from 'apps/assembly-line/components/table/AssemblyLineVideoTable';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineColumns } from 'apps/assembly-line/hooks/useAssemblyLineColumns';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { ThumbnailQuality } from 'apps/assembly-line/interfaces/AssemblyLineThumbnailQuality';\nimport { AssemblyLineVideo, AssemblyLineVideoCollection } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { RightslineVideo } from 'apps/videos/interfaces/RightslineVideo';\n\nexport function AssemblyLineVideoStageView(props: AssemblyLineViewProps): JSX.Element {\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const columnVisibility = useAssemblyLineColumns(props.queryParams, props.subStage, 'video', props.view);\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const filtersRequest = AssemblyLineFilterHelper.serializeFilterRequestBody(filters);\n\n if (props.pipelineId === 'cv-live') {\n filtersRequest.push({\n name: 'source',\n operator: 'in',\n values: [VideoSource.Streamable]\n });\n }\n\n const viewConfig = AssemblyLineViewConfig[props.view];\n\n const topicTree = Flight.useBasicFetch<BaseTree<Classification>>(\n viewConfig?.presentationId &&\n props.queryParams.applyHideTopicsFilter &&\n SubjectRequests.getClassificationTree(viewConfig.presentationId)\n );\n\n const viewPresentationAudiences = Flight.useBasicFetch<PresentationAudience[]>(\n viewConfig?.presentationId &&\n props.queryParams.applyHideAudiencesFilter &&\n SubjectRequests.presentationAudiences(viewConfig.presentationId)\n );\n\n if (props.view) {\n filtersRequest.push(...viewConfig.getAdditionalFilters(topicTree.data, viewPresentationAudiences.data));\n } else {\n filtersRequest.push({\n name: 'source',\n operator: 'not_in',\n values: ['new_zealand']\n });\n }\n\n const videos = Flight.useBasicFetch<AssemblyLineVideoCollection>(\n AssemblyLineRequests.getVideos({\n stage: !props.view ? props.subStage : undefined,\n filters: filtersRequest,\n presentationId: viewConfig?.presentationId ?? props.queryParams.presentationId,\n searchQuery: props.queryParams.query,\n sort: props.queryParams.sort,\n cursor: props.queryParams.cursor,\n limit: +props.queryParams.limit\n })\n );\n\n const { presentations } = usePresentationFilter(props.queryParams, 'video', props.subStage, props.pipelineId, props.view);\n\n const nextStage = AssemblyLineHelper.getNextStage(props.subStage);\n\n const selectedClassificationsRef = React.useRef<string[]>([]);\n\n /**\n * When publishing a CV Live video, we also provide\n * the option to publish any draft topics that the video is on,\n * as long as those topics are valid according to the content pipeline.\n */\n async function onClickPublish(id: string): Promise<boolean> {\n const video = videos.data?.data?.find(v => v.id?.toString() === id.toString());\n\n const classificationIds = video.classifications.data.map(c => c.id) ?? [];\n const classifications = await fetchAsync<Classification[]>(\n !!classificationIds.length &&\n SubjectRequests.classificationsById(classificationIds, 'banner,cover')\n );\n\n const draftClassifications = classifications.filter(c => c.status !== ClassificationStatus.Published);\n\n const draftClassificationDashboardsResponses = await Promise.all(draftClassifications.map(c => {\n return fetchAsync<CuratedDashboardCollection>(DashboardRequests.dashboards({\n targetType: DashboardTargetType.Classification,\n classificationId: c.id\n }, true));\n }));\n\n const draftClassificationDashboards = ArrayHelper.flatten(draftClassificationDashboardsResponses.map(r => r.data));\n\n return new Promise((resolve, reject) => {\n DialogHelper.render(\n <PublishVideoView\n selectedClassificationsRef={selectedClassificationsRef}\n draftClassifications={draftClassifications || []}\n draftClassificationDashboards={draftClassificationDashboards || []}\n video={video}\n />,\n {\n title: 'Publish video',\n submitButtonProps: {\n variant: 'dark',\n text: 'Publish video',\n onClick: async () => {\n try {\n for (const classificationId of selectedClassificationsRef.current) {\n const dashboard = draftClassificationDashboards.find(d => {\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(d);\n \n if (CuratedDashboardHelper.isClassificationDashboard(targetInfo)) {\n return targetInfo.classificationId === classificationId;\n }\n \n return false;\n });\n\n const requests: Promise<any>[] = [];\n\n if (dashboard.status === DashboardStatus.Draft) {\n requests.push(fetchAsync(DashboardRequests.updateDashboard(\n dashboard.id,\n {\n ...dashboard,\n status: DashboardStatus.Published\n }\n )));\n }\n\n const classification = classifications.find(c => c.id === classificationId);\n requests.push(fetchAsync(SubjectRequests.updateClassification({\n ...classification,\n status: ClassificationStatus.Published\n })));\n\n await Promise.all(requests);\n }\n\n await fetchAsync(AssemblyLineRequests.publishVideo(id));\n\n resolve(true);\n } catch {\n reject({ cancelled: false });\n }\n }\n },\n cancelButtonProps: {\n onClick: () => reject({ cancelled: true })\n }\n }\n );\n });\n }\n\n async function onClickMoveToNextStage(id: string): Promise<Core.AppLink> {\n const stageConfig = AssemblyLineStageConfig[props.subStage];\n\n if (stageConfig.moveToLatestStage) {\n await fetchAsync(AssemblyLineRequests.moveVideoToFurthestStage(id));\n return;\n }\n \n if (props.subStage === 'review_video') {\n await onClickPublish(id);\n return;\n }\n\n // Videos in other stages must explicitly go through each stage\n await fetchAsync(AssemblyLineRequests.updateVideoStage(id, props.subStage, nextStage));\n\n const newVideo = await fetchAsync<AssemblyLineVideo>(AssemblyLineRequests.getAssemblyLineVideo(id));\n\n const action = AssemblyLineHelper.mapStageToAction(newVideo.stage);\n\n if (!action)\n return null;\n\n return {\n application: props.pipelineId === 'clickview' ? AppChannels.ASSEMBLY_LINE : AppChannels.CV_LIVE_PIPELINE,\n action,\n params: props.queryParams\n };\n }\n\n async function resyncRightsLineId(videoId: string): Promise<AssemblyLineVideo> {\n alerts.info('Syncing video with Rightsline', 'This may take a few moments...');\n\n let rightslineVideo: RightslineVideo | null = null;\n\n try {\n rightslineVideo = await fetchAsync<RightslineVideo>(VideoRequests.rightslineVideo(videoId));\n } catch (err) {\n if (err.status === 404) {\n alerts.error('Video not found in Rightsline.');\n return;\n }\n\n alerts.error('Something went wrong while fetching video from Rightsline.');\n return;\n }\n\n try {\n await fetchAsync(VideoRequests.updateVideo(videoId, {\n name: rightslineVideo.name,\n description: rightslineVideo.description,\n productionYear: rightslineVideo.productionYear,\n rating: {\n id: rightslineVideo.rating.id\n }\n }));\n\n await fetchAsync<AssemblyLineVideo>(AssemblyLineRequests.syncVideo(videoId, true));\n } catch {\n alerts.error('Something went wrong while syncing Rightsline with ClickView.');\n return;\n }\n\n alerts.success('Video synced with Rightsline successfully.');\n }\n\n function updatePriority(videoId: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateVideoPriority(\n videoId,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n function updateThumbnailQuality(\n video: AssemblyLineVideo,\n quality: ThumbnailQuality\n ): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateThumbnailQuality(\n video,\n quality\n ));\n }\n\n function onClickOpenParentVideo(clipId: string): void {\n fetchAsync<Clip>(ClipRequests.clip(clipId))\n .then(clip => {\n const href = Core.AppLinkHelper.getHref({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_VIDEO,\n args: [clip._parentVideo.id]\n });\n\n Core.LocationUtils.PageLoad(href, true);\n });\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='video'\n pipelineId={props.pipelineId}\n columnVisibility={columnVisibility}\n filters={filters}\n queryParams={props.queryParams}\n counts={{\n showing: videos.data?.data?.length ?? 0,\n total: videos.data?.count ?? 0\n }}\n view={props.view}\n >\n <AssemblyLineVideoTable\n videos={videos.data}\n stage={props.subStage}\n queryParams={props.queryParams}\n onClickMoveToNextStage={onClickMoveToNextStage}\n columnVisibility={columnVisibility}\n resyncRightsLineId={resyncRightsLineId}\n onClickOpenParentVideo={onClickOpenParentVideo}\n updatePriority={updatePriority}\n updateThumbnailQuality={updateThumbnailQuality}\n presentations={presentations}\n view={props.view}\n />\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"D4xcR0492.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/publish-video/PublishVideoView.tsx","../../../../../src/apps/assembly-line/constants/AssemblyLineVideoTableTheme.ts","../../../../../src/apps/assembly-line/components/table/AssemblyLineVideoTable.tsx","../../../../../src/apps/assembly-line/views/tables/AssemblyLineVideoStageView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Classification, CuratedDashboard } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\n\ninterface Status {\n disabled: boolean;\n tooltip?: string;\n}\n\nfunction getStatus(classification: Classification, dashboards: CuratedDashboard[]): Status {\n const dashboard = dashboards.find(d => {\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(d);\n\n if (CuratedDashboardHelper.isClassificationDashboard(targetInfo)) {\n return targetInfo.classificationId === classification.id;\n }\n\n return false;\n });\n\n if (!dashboard)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a dashboard yet, so it cannot be published' };\n\n if (!classification.cover?.url && !classification.banner?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a cover or banner image, so it cannot be published' };\n\n if (!classification.cover?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a cover image, so it cannot be published' };\n\n if (!classification.banner?.url)\n return { disabled: true, tooltip: 'This topic doesn\\'t have a banner image, so it cannot be published' };\n\n return { disabled: false };\n}\n\ninterface PublishVideoViewProps {\n video: AssemblyLineVideo;\n draftClassifications: Classification[];\n draftClassificationDashboards: CuratedDashboard[];\n selectedClassificationsRef: React.MutableRefObject<string[]>;\n}\n\nexport function PublishVideoView(props: PublishVideoViewProps): JSX.Element {\n const [ selectedClassifications, setSelectedClassifications ] = React.useState<string[]>([]);\n\n function onToggleCheckbox(id: string): void {\n const newSelectedClassifications = selectedClassifications.includes(id) ?\n selectedClassifications.filter(c => c !== id) :\n [ ...selectedClassifications, id ];\n\n props.selectedClassificationsRef.current = newSelectedClassifications;\n setSelectedClassifications(newSelectedClassifications);\n }\n\n const total = props.draftClassificationDashboards.length;\n\n return (\n <>\n <p className='mb-2'>You are about to publish <strong>{props.video.name}</strong> 🎉</p>\n <p className='mb-2'>Please double check that all of the metadata and resources are accurate before proceeding.</p>\n\n {total > 0 && (\n <>\n <p>\n This video currently sits in {total} draft topic{total === 1 ? '' : 's'}.\n Please opt in to the topics that you would like to publish along with the video:\n </p>\n <ul className='list-unstyled'>\n {props.draftClassifications.map(c => {\n const { disabled, tooltip } = getStatus(c, props.draftClassificationDashboards);\n\n return (\n <li key={c.id} className='mb-1'>\n <Tooltip title={tooltip} spanHack spanHackClassName='d-inline-block'>\n <Checkbox\n id={c.id}\n checked={selectedClassifications.includes(c.id)}\n onChange={() => onToggleCheckbox(c.id)}\n label={c.name}\n disabled={disabled}\n />\n </Tooltip>\n </li>\n );\n })}\n </ul>\n </>\n )}\n </>\n );\n}\n","import { TableThemeV2 } from 'libs/shared/components/table-v2/TableV2';\n\nimport styles from './theme.module.scss';\n\nexport const ASSEMBLY_LINE_VIDEO_TABLE_THEME: TableThemeV2 = {\n table: 'w-100',\n header: 'fw-semibold',\n headerCell: `px-3 py-1 mh-100 align-items-center bg-white ${styles.headerCell} text-nowrap`,\n row: styles.row,\n cell: `d-flex align-items-center border-end border-light ${styles.cell}`\n};\n","import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkSelectionSummary } from 'libs/shared/components/bulk-selection-summary/BulkSelectionSummary';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\nimport { useCuratorPermissions } from 'shared/hooks';\n\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTableSizeSelector } from 'apps/assembly-line/components/table-size-selector/AssemblyLineTableSizeSelector';\nimport { ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS, ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS } from 'apps/assembly-line/constants/AssemblyLineTableColumnsSettingString';\nimport { ASSEMBLY_LINE_VIDEO_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineVideoTableTheme';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineBulkActionsQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionsQueryParams';\nimport { AssemblyLineBulkActionViewModel } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionViewModel';\nimport { AssemblyLineVideoTableData } from 'apps/assembly-line/interfaces/AssemblyLineCellProps';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { ThumbnailQuality } from 'apps/assembly-line/interfaces/AssemblyLineThumbnailQuality';\nimport { AssemblyLineVideo, AssemblyLineVideoCollection } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { EntityColumnArgs } from '../columns/AssemblyLineAllTableColumns';\n\ninterface AssemblyLineVideoTableProps {\n videos: AssemblyLineVideoCollection;\n queryParams: AssemblyLineQueryParams;\n stage: AssemblyLineStage;\n onClickMoveToNextStage: (id: string) => Promise<Core.AppLink>;\n columnVisibility: VisibilityState;\n onClickOpenParentVideo: (clipId: string) => void;\n updatePriority: (videoId: string, priority: number) => Promise<void>;\n updateThumbnailQuality: (video: AssemblyLineVideo, quality: ThumbnailQuality) => Promise<void>;\n resyncRightsLineId?: (videoId: string) => Promise<AssemblyLineVideo>;\n presentations: Presentation[];\n view: AssemblyLineView;\n}\n\nexport function AssemblyLineVideoTable(props: AssemblyLineVideoTableProps): JSX.Element {\n const [ , setBulkActionViewModel ] = useViewModel<AssemblyLineBulkActionViewModel>(\n ViewModelKeys.ASSEMBLY_LINE\n );\n\n const { hasPermissions } = useCuratorPermissions();\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const CheckboxHelper = useBulkCheckboxManager(props.videos?.data, {\n persistNamespace: props.stage\n });\n\n function onToggleCheckbox(id: string): void {\n if (id === 'bulk') {\n CheckboxHelper.onToggleBulk();\n return;\n }\n\n CheckboxHelper.onToggleItem(id);\n }\n\n function getData(): AssemblyLineVideoTableData[] {\n return props.videos.data.map(video => {\n return {\n ...video,\n checked: CheckboxHelper.isChecked(video.id)\n };\n });\n }\n\n function onClickSelectBulkAction(): void {\n setBulkActionViewModel({\n ownerType: 'video',\n ownerIdMap: CheckboxHelper.getMap(),\n removedIds: [],\n resetSelection: CheckboxHelper.deselectAll\n });\n\n const params: AssemblyLineBulkActionsQueryParams = {\n stage: props.stage,\n queryParams: props.queryParams,\n pipelineId,\n view: props.view\n };\n\n if (props.queryParams.presentationId)\n params.presentationId = props.queryParams.presentationId;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.WIZARD,\n params\n });\n }\n\n const options: EntityColumnArgs = {\n pipelineId,\n onToggleCheckbox,\n onClickMoveToNextStage: props.onClickMoveToNextStage,\n isBulkChecked: CheckboxHelper.bulkChecked,\n isBulkIndeterminate: CheckboxHelper.hasSomeSelections(),\n objectType: 'video' as AssemblyLineObjectType,\n presentationId: AssemblyLineViewConfig[props.view]?.presentationId ?? props.queryParams.presentationId,\n openInClickView: props.stage === 'curated_thumbnail',\n updatePriority: props.updatePriority,\n updateThumbnailQuality: props.updateThumbnailQuality,\n stage: props.stage,\n hasPermissions,\n resyncRightsLineId: props.resyncRightsLineId,\n onClickOpenParentVideo: props.onClickOpenParentVideo,\n presentations: props.presentations,\n view: props.view\n };\n const columns = AssemblyLineHelper.getColumns(options, props.stage, 'video', props.view);\n\n return (\n <>\n <div className='px-5'>\n <BulkSelectionSummary\n selectedCount={CheckboxHelper.getSelectedCount()}\n onClickDeselectAll={CheckboxHelper.reset}\n onClickSelectBulk={onClickSelectBulkAction}\n getTypeText={count => count === 1 ? 'video' : 'videos'}\n />\n </div>\n\n {!props.videos && <AssemblyLineSpinner />}\n\n {props.videos?.data && !props.videos.data.length && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={pipelineId} />\n )}\n\n {props.videos?.data && !!props.videos.data.length && (\n <>\n <TableV2<any>\n columns={columns}\n data={getData()}\n defaultPinnedColumns={props.columnVisibility}\n columnPinning={{\n left: AssemblyLineHelper.getPinnedVideoColumnIds(props.view)\n }}\n pinnedColumnsKey={`${ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS}_${props.view}`}\n columnResizerKey={`${ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS}:video`}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 64,\n containerHeight: props.stage === 'metadata' ? '75vh' : '66vh'\n }}\n theme={ASSEMBLY_LINE_VIDEO_TABLE_THEME}\n />\n\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={props.videos.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n <AssemblyLineTableSizeSelector queryParams={props.queryParams} />\n </div>\n </>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseTree, Classification, Clip, CuratedDashboardCollection, DashboardStatus, DashboardTargetType, PresentationAudience } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { PublishVideoView } from 'apps/assembly-line/components/publish-video/PublishVideoView';\nimport { AssemblyLineVideoTable } from 'apps/assembly-line/components/table/AssemblyLineVideoTable';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineColumns } from 'apps/assembly-line/hooks/useAssemblyLineColumns';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { ThumbnailQuality } from 'apps/assembly-line/interfaces/AssemblyLineThumbnailQuality';\nimport { AssemblyLineVideo, AssemblyLineVideoCollection } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { RightslineVideo } from 'apps/videos/interfaces/RightslineVideo';\n\nexport function AssemblyLineVideoStageView(props: AssemblyLineViewProps): JSX.Element {\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const columnVisibility = useAssemblyLineColumns(props.queryParams, props.subStage, 'video', props.view);\n\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const filtersRequest = AssemblyLineFilterHelper.serializeFilterRequestBody(filters);\n\n if (props.pipelineId === 'cv-live') {\n filtersRequest.push({\n name: 'source',\n operator: 'in',\n values: [VideoSource.Streamable]\n });\n }\n\n const viewConfig = AssemblyLineViewConfig[props.view];\n\n const topicTree = Flight.useBasicFetch<BaseTree<Classification>>(\n viewConfig?.presentationId &&\n props.queryParams.applyHideTopicsFilter &&\n SubjectRequests.getClassificationTree(viewConfig.presentationId)\n );\n\n const viewPresentationAudiences = Flight.useBasicFetch<PresentationAudience[]>(\n viewConfig?.presentationId &&\n props.queryParams.applyHideAudiencesFilter &&\n SubjectRequests.presentationAudiences(viewConfig.presentationId)\n );\n\n if (props.view) {\n filtersRequest.push(...viewConfig.getAdditionalFilters(topicTree.data, viewPresentationAudiences.data));\n } else {\n filtersRequest.push({\n name: 'source',\n operator: 'not_in',\n values: ['new_zealand']\n });\n }\n\n const videos = Flight.useBasicFetch<AssemblyLineVideoCollection>(\n AssemblyLineRequests.getVideos({\n stage: !props.view ? props.subStage : undefined,\n filters: filtersRequest,\n presentationId: viewConfig?.presentationId ?? props.queryParams.presentationId,\n searchQuery: props.queryParams.query,\n sort: props.queryParams.sort,\n cursor: props.queryParams.cursor,\n limit: +props.queryParams.limit\n })\n );\n\n const { presentations } = usePresentationFilter(props.queryParams, 'video', props.subStage, props.pipelineId, props.view);\n\n const nextStage = AssemblyLineHelper.getNextStage(props.subStage);\n\n const selectedClassificationsRef = React.useRef<string[]>([]);\n\n /**\n * When publishing a CV Live video, we also provide\n * the option to publish any draft topics that the video is on,\n * as long as those topics are valid according to the content pipeline.\n */\n async function onClickPublish(id: string): Promise<boolean> {\n const video = videos.data?.data?.find(v => v.id?.toString() === id.toString());\n\n const classificationIds = video.classifications.data.map(c => c.id) ?? [];\n const classifications = await fetchAsync<Classification[]>(\n !!classificationIds.length &&\n SubjectRequests.classificationsById(classificationIds, 'banner,cover')\n );\n\n const draftClassifications = classifications.filter(c => c.status !== ClassificationStatus.Published);\n\n const draftClassificationDashboardsResponses = await Promise.all(draftClassifications.map(c => {\n return fetchAsync<CuratedDashboardCollection>(DashboardRequests.dashboards({\n targetType: DashboardTargetType.Classification,\n classificationId: c.id\n }, true));\n }));\n\n const draftClassificationDashboards = ArrayHelper.flatten(draftClassificationDashboardsResponses.map(r => r.data));\n\n return new Promise((resolve, reject) => {\n DialogHelper.render(\n <PublishVideoView\n selectedClassificationsRef={selectedClassificationsRef}\n draftClassifications={draftClassifications || []}\n draftClassificationDashboards={draftClassificationDashboards || []}\n video={video}\n />,\n {\n title: 'Publish video',\n submitButtonProps: {\n variant: 'dark',\n text: 'Publish video',\n onClick: async () => {\n try {\n for (const classificationId of selectedClassificationsRef.current) {\n const dashboard = draftClassificationDashboards.find(d => {\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(d);\n \n if (CuratedDashboardHelper.isClassificationDashboard(targetInfo)) {\n return targetInfo.classificationId === classificationId;\n }\n \n return false;\n });\n\n const requests: Promise<any>[] = [];\n\n if (dashboard.status === DashboardStatus.Draft) {\n requests.push(fetchAsync(DashboardRequests.updateDashboard(\n dashboard.id,\n {\n ...dashboard,\n status: DashboardStatus.Published\n }\n )));\n }\n\n const classification = classifications.find(c => c.id === classificationId);\n requests.push(fetchAsync(SubjectRequests.updateClassification({\n ...classification,\n status: ClassificationStatus.Published\n })));\n\n await Promise.all(requests);\n }\n\n await fetchAsync(AssemblyLineRequests.publishVideo(id));\n\n resolve(true);\n } catch {\n reject({ cancelled: false });\n }\n }\n },\n cancelButtonProps: {\n onClick: () => reject({ cancelled: true })\n }\n }\n );\n });\n }\n\n async function onClickMoveToNextStage(id: string): Promise<Core.AppLink> {\n const stageConfig = AssemblyLineStageConfig[props.subStage];\n\n if (stageConfig.moveToLatestStage) {\n await fetchAsync(AssemblyLineRequests.moveVideoToFurthestStage(id));\n return;\n }\n \n if (props.subStage === 'review_video') {\n await onClickPublish(id);\n return;\n }\n\n // Videos in other stages must explicitly go through each stage\n await fetchAsync(AssemblyLineRequests.updateVideoStage(id, props.subStage, nextStage));\n\n const newVideo = await fetchAsync<AssemblyLineVideo>(AssemblyLineRequests.getAssemblyLineVideo(id));\n\n const action = AssemblyLineHelper.mapStageToAction(newVideo.stage);\n\n if (!action)\n return null;\n\n return {\n application: props.pipelineId === 'clickview' ? AppChannels.ASSEMBLY_LINE : AppChannels.CV_LIVE_PIPELINE,\n action,\n params: props.queryParams\n };\n }\n\n async function resyncRightsLineId(videoId: string): Promise<AssemblyLineVideo> {\n alerts.info('Syncing video with Rightsline', 'This may take a few moments...');\n\n let rightslineVideo: RightslineVideo | null = null;\n\n try {\n rightslineVideo = await fetchAsync<RightslineVideo>(VideoRequests.rightslineVideo(videoId));\n } catch (err) {\n if (err.status === 404) {\n alerts.error('Video not found in Rightsline.');\n return;\n }\n\n alerts.error('Something went wrong while fetching video from Rightsline.');\n return;\n }\n\n try {\n await fetchAsync(VideoRequests.updateVideo(videoId, {\n name: rightslineVideo.name,\n description: rightslineVideo.description,\n productionYear: rightslineVideo.productionYear,\n rating: {\n id: rightslineVideo.rating.id\n }\n }));\n\n await fetchAsync<AssemblyLineVideo>(AssemblyLineRequests.syncVideo(videoId, true));\n } catch {\n alerts.error('Something went wrong while syncing Rightsline with ClickView.');\n return;\n }\n\n alerts.success('Video synced with Rightsline successfully.');\n }\n\n function updatePriority(videoId: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateVideoPriority(\n videoId,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n function updateThumbnailQuality(\n video: AssemblyLineVideo,\n quality: ThumbnailQuality\n ): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateThumbnailQuality(\n video,\n quality\n ));\n }\n\n function onClickOpenParentVideo(clipId: string): void {\n fetchAsync<Clip>(ClipRequests.clip(clipId))\n .then(clip => {\n const href = Core.AppLinkHelper.getHref({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_VIDEO,\n args: [clip._parentVideo.id]\n });\n\n Core.LocationUtils.PageLoad(href, true);\n });\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='video'\n pipelineId={props.pipelineId}\n columnVisibility={columnVisibility}\n filters={filters}\n queryParams={props.queryParams}\n counts={{\n showing: videos.data?.data?.length ?? 0,\n total: videos.data?.count ?? 0\n }}\n view={props.view}\n >\n <AssemblyLineVideoTable\n videos={videos.data}\n stage={props.subStage}\n queryParams={props.queryParams}\n onClickMoveToNextStage={onClickMoveToNextStage}\n columnVisibility={columnVisibility}\n resyncRightsLineId={resyncRightsLineId}\n onClickOpenParentVideo={onClickOpenParentVideo}\n updatePriority={updatePriority}\n updateThumbnailQuality={updateThumbnailQuality}\n presentations={presentations}\n view={props.view}\n />\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\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{n,t as r}from"./BDwjs8qz.chunk.js";import{n as i,t as a}from"./DmEz0Sg_2.chunk.js";import{n as o,t as s}from"./puobgAYi.chunk.js";import{t as c}from"./Dh5DbdtP.chunk.js";import{t as l}from"./D_Pni7eo.chunk.js";e();var u=t();function d(e){switch(e){case n.Draft:return r.Draft;case n.Published:return r.Published;case n.Archived:return r.Archived}}function f(e){return e.livestream?(0,u.jsxs)(`ul`,{children:[(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Content partner:`}),` `,e.livestream.company?.name]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Event name:`}),` `,e.livestream.name]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Event description:`}),` `,e.livestream.description]}),!e.hideStatus&&(0,u.jsxs)(`li`,{className:`d-flex`,children:[(0,u.jsx)(`strong`,{className:`me-1`,children:`Status:`}),(0,u.jsx)(a,{type:i.Status,data:d(e.livestream.status)})]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Audience:`}),` ${l.getMergedPresentationAudienceString(e.livestream.audiences)?.name}`]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Duration:`}),` `,c.getDuration(e.livestream),` minutes`]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Start time:`}),` `,c.getStartTime(e.livestream)]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Start date:`}),` `,c.getStartDate(e.livestream)]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Timezone:`}),s.getTimezoneInfo(o[e.livestream.timezone].timezone).longGeneric]})]}):(0,u.jsx)(u.Fragment,{})}export{f as t};
2
- //# sourceMappingURL=BEeh_Vbr.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{n,t as r}from"./BDwjs8qz.chunk.js";import{n as i,t as a}from"./DmEz0Sg_2.chunk.js";import{n as o,t as s}from"./CBq4vrjT.chunk.js";import{t as c}from"./lAvSm0ti.chunk.js";import{t as l}from"./D_Pni7eo.chunk.js";e();var u=t();function d(e){switch(e){case n.Draft:return r.Draft;case n.Published:return r.Published;case n.Archived:return r.Archived}}function f(e){return e.livestream?(0,u.jsxs)(`ul`,{children:[(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Content partner:`}),` `,e.livestream.company?.name]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Event name:`}),` `,e.livestream.name]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Event description:`}),` `,e.livestream.description]}),!e.hideStatus&&(0,u.jsxs)(`li`,{className:`d-flex`,children:[(0,u.jsx)(`strong`,{className:`me-1`,children:`Status:`}),(0,u.jsx)(a,{type:i.Status,data:d(e.livestream.status)})]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Audience:`}),` ${l.getMergedPresentationAudienceString(e.livestream.audiences)?.name}`]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Duration:`}),` `,c.getDuration(e.livestream),` minutes`]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Start time:`}),` `,c.getStartTime(e.livestream)]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Start date:`}),` `,c.getStartDate(e.livestream)]}),(0,u.jsxs)(`li`,{children:[(0,u.jsx)(`strong`,{children:`Timezone:`}),s.getTimezoneInfo(o[e.livestream.timezone].timezone).longGeneric]})]}):(0,u.jsx)(u.Fragment,{})}export{f as t};
2
+ //# sourceMappingURL=D5ek2PiI.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BEeh_Vbr.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/components/livestream-details-list/LivestreamDetailsList.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { CurationStatus, CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { Livestream, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\n\nimport { LivestreamHelper } from 'apps/cv-live/utils/LivestreamHelper';\n\nfunction mapStatusToCode(status: CurationStatusString): CurationStatus {\n switch (status) {\n case CurationStatusString.Draft:\n return CurationStatus.Draft;\n case CurationStatusString.Published:\n return CurationStatus.Published;\n case CurationStatusString.Archived:\n return CurationStatus.Archived;\n }\n}\n\ninterface LivestreamDetailsListProps {\n livestream: Livestream;\n hideStatus?: boolean;\n}\n\nexport function LivestreamDetailsList(props: LivestreamDetailsListProps): JSX.Element {\n if (!props.livestream)\n return <></>;\n\n return (\n <ul>\n <li>\n <strong>Content partner:</strong> {props.livestream.company?.name}\n </li>\n <li>\n <strong>Event name:</strong> {props.livestream.name}\n </li>\n <li>\n <strong>Event description:</strong> {props.livestream.description}\n </li>\n {!props.hideStatus && (\n <li className='d-flex'>\n <strong className='me-1'>Status:</strong>\n <Badge type={BadgeType.Status} data={mapStatusToCode(props.livestream.status)} />\n </li>\n )}\n <li>\n <strong>Audience:</strong>\n {` ${AudienceHelper.getMergedPresentationAudienceString(props.livestream.audiences as PresentationAudience[])?.name}`}\n </li>\n <li>\n <strong>Duration:</strong> {LivestreamHelper.getDuration(props.livestream)} minutes\n </li>\n <li>\n <strong>Start time:</strong> {LivestreamHelper.getStartTime(props.livestream)}\n </li>\n <li>\n <strong>Start date:</strong> {LivestreamHelper.getStartDate(props.livestream)}\n </li>\n <li>\n <strong>Timezone:</strong>\n {TimezoneHelper.getTimezoneInfo(TIMEZONES_US[props.livestream.timezone].timezone).longGeneric}\n </li>\n </ul>\n );\n}\n"],"mappings":"sRAWA,SAAS,EAAgB,EAA8C,CACrE,OAAQ,EAAR,CACE,KAAK,EAAqB,MACxB,OAAO,EAAe,MACxB,KAAK,EAAqB,UACxB,OAAO,EAAe,UACxB,KAAK,EAAqB,SACxB,OAAO,EAAe,QAC1B,CACF,CAOA,SAAgB,EAAsB,EAAgD,CAIpF,OAHK,EAAM,YAIT,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,kBAAwB,CAAA,EAAC,IAAE,EAAM,WAAW,SAAS,IAC3D,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAM,WAAW,IAC7C,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,oBAA0B,CAAA,EAAC,IAAE,EAAM,WAAW,WACpD,CAAA,CAAA,EACH,CAAC,EAAM,aACN,EAAA,EAAA,KAAA,CAAC,KAAD,CAAI,UAAU,kBAAd,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAU,gBAAO,SAAe,CAAA,GACxC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,KAAM,EAAU,OAAQ,KAAM,EAAgB,EAAM,WAAW,MAAM,CAAI,CAAA,CAC9E,KAEN,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EACxB,IAAI,EAAe,oCAAoC,EAAM,WAAW,SAAmC,CAAC,EAAE,MAC7G,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EAAC,IAAE,EAAiB,YAAY,EAAM,UAAU,EAAE,UACzE,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAiB,aAAa,EAAM,UAAU,CAC1E,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAiB,aAAa,EAAM,UAAU,CAC1E,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EACxB,EAAe,gBAAgB,EAAa,EAAM,WAAW,SAAS,CAAC,QAAQ,CAAC,CAAC,WAChF,CAAA,CAAA,CACF,CAAA,CAAA,GApCG,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAsCf"}
1
+ {"version":3,"file":"D5ek2PiI.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/components/livestream-details-list/LivestreamDetailsList.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TIMEZONES_US } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { CurationStatus, CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { Livestream, PresentationAudience } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\n\nimport { LivestreamHelper } from 'apps/cv-live/utils/LivestreamHelper';\n\nfunction mapStatusToCode(status: CurationStatusString): CurationStatus {\n switch (status) {\n case CurationStatusString.Draft:\n return CurationStatus.Draft;\n case CurationStatusString.Published:\n return CurationStatus.Published;\n case CurationStatusString.Archived:\n return CurationStatus.Archived;\n }\n}\n\ninterface LivestreamDetailsListProps {\n livestream: Livestream;\n hideStatus?: boolean;\n}\n\nexport function LivestreamDetailsList(props: LivestreamDetailsListProps): JSX.Element {\n if (!props.livestream)\n return <></>;\n\n return (\n <ul>\n <li>\n <strong>Content partner:</strong> {props.livestream.company?.name}\n </li>\n <li>\n <strong>Event name:</strong> {props.livestream.name}\n </li>\n <li>\n <strong>Event description:</strong> {props.livestream.description}\n </li>\n {!props.hideStatus && (\n <li className='d-flex'>\n <strong className='me-1'>Status:</strong>\n <Badge type={BadgeType.Status} data={mapStatusToCode(props.livestream.status)} />\n </li>\n )}\n <li>\n <strong>Audience:</strong>\n {` ${AudienceHelper.getMergedPresentationAudienceString(props.livestream.audiences as PresentationAudience[])?.name}`}\n </li>\n <li>\n <strong>Duration:</strong> {LivestreamHelper.getDuration(props.livestream)} minutes\n </li>\n <li>\n <strong>Start time:</strong> {LivestreamHelper.getStartTime(props.livestream)}\n </li>\n <li>\n <strong>Start date:</strong> {LivestreamHelper.getStartDate(props.livestream)}\n </li>\n <li>\n <strong>Timezone:</strong>\n {TimezoneHelper.getTimezoneInfo(TIMEZONES_US[props.livestream.timezone].timezone).longGeneric}\n </li>\n </ul>\n );\n}\n"],"mappings":"sRAWA,SAAS,EAAgB,EAA8C,CACrE,OAAQ,EAAR,CACE,KAAK,EAAqB,MACxB,OAAO,EAAe,MACxB,KAAK,EAAqB,UACxB,OAAO,EAAe,UACxB,KAAK,EAAqB,SACxB,OAAO,EAAe,QAC1B,CACF,CAOA,SAAgB,EAAsB,EAAgD,CAIpF,OAHK,EAAM,YAIT,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,kBAAwB,CAAA,EAAC,IAAE,EAAM,WAAW,SAAS,IAC3D,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAM,WAAW,IAC7C,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,oBAA0B,CAAA,EAAC,IAAE,EAAM,WAAW,WACpD,CAAA,CAAA,EACH,CAAC,EAAM,aACN,EAAA,EAAA,KAAA,CAAC,KAAD,CAAI,UAAU,kBAAd,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAU,gBAAO,SAAe,CAAA,GACxC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,KAAM,EAAU,OAAQ,KAAM,EAAgB,EAAM,WAAW,MAAM,CAAI,CAAA,CAC9E,KAEN,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EACxB,IAAI,EAAe,oCAAoC,EAAM,WAAW,SAAmC,CAAC,EAAE,MAC7G,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EAAC,IAAE,EAAiB,YAAY,EAAM,UAAU,EAAE,UACzE,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAiB,aAAa,EAAM,UAAU,CAC1E,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,aAAmB,CAAA,EAAC,IAAE,EAAiB,aAAa,EAAM,UAAU,CAC1E,CAAA,CAAA,GACJ,EAAA,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAQ,WAAiB,CAAA,EACxB,EAAe,gBAAgB,EAAa,EAAM,WAAW,SAAS,CAAC,QAAQ,CAAC,CAAC,WAChF,CAAA,CAAA,CACF,CAAA,CAAA,GApCG,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAsCf"}
@@ -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"./CLCeObem2.chunk.js";import{t as i}from"./D-JsEiDq2.chunk.js";import{u as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./Bwpvc7Th2.chunk.js";import{i as s}from"./DA0I3jYA.chunk.js";import{t as c}from"./dKyhMawf.chunk.js";import{t as l}from"./D0JviwKV2.chunk.js";import{n as u}from"./C4Ey4nzb2.chunk.js";import{t as d}from"./Bg2zGOFJ2.chunk.js";import{t as f}from"./oGkpmMft2.chunk.js";import{t as p}from"./DkoXyXll.chunk.js";var m=n(e()),h=n(r()),g=t();function _({closePopup:e,onSubmit:t,showSpinner:n}){let r=h.object().shape({region:h.string().required(`Region is required`),catalogName:h.string().matches(/^[a-z0-9]+(_[a-z0-9]+)*$/,`Catalog name must be in lower snake case format.`).required(`Catalog name is required`),catalogDescription:h.string().required(`Catalog name must be in lower_snake_case format`)}),i=f.getAllRegions();return(0,g.jsx)(c,{initialValues:{catalogName:``,catalogDescription:``,region:``},validationSchema:r,onSubmit:e=>{t({name:e.catalogName,description:e.catalogDescription,fields:[{name:`id`,type:p.Text}]},e.region)},children:({values:t,handleChange:r,handleBlur:a,handleSubmit:o})=>(0,g.jsxs)(s,{onSubmit:o,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsxs)(u,{name:`region`,label:`Region`,as:`select`,value:t.region,onChange:r,onBlur:a,showRequiredStar:!t.region,children:[(0,g.jsx)(`option`,{disabled:!0,value:``,children:`Select Region`}),i.map(e=>(0,g.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}),(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsx)(u,{name:`catalogName`,label:`Catalog Name`,type:`text`,placeholder:`Enter the catalog name`,value:t.catalogName,onChange:r,onBlur:a,showRequiredStar:!t.catalogName})}),(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsx)(u,{name:`catalogDescription`,label:`Catalog Description`,as:`textarea`,placeholder:`Enter catalog description`,value:t.catalogDescription,onChange:r,onBlur:a,showRequiredStar:!t.catalogDescription})})]}),(0,g.jsxs)(l,{className:`mt-2`,children:[(0,g.jsx)(l.Cancel,{onClick:e}),(0,g.jsx)(l.Submit,{showSpinner:n,variant:`dark`,text:`Create catalog`,disabled:n})]})]})})}function v({closePopup:e}){let[t,n]=(0,m.useState)(!1),r=a(),s=o();async function c(t,i){n(!0),r(d.createCatalog(t,i)).then(()=>s.success(`Successfully created catalog: ${t.name}`)).catch(()=>s.error(`Failed to create catalog: ${t.name}. Please try again.`)).finally(e)}return(0,g.jsx)(i,{title:`Create Catalog`,closePopup:e,backdrop:`static`,children:(0,g.jsx)(_,{closePopup:e,onSubmit:c,showSpinner:t})})}export{v as CreateCatalogView};
2
- //# sourceMappingURL=DjqQYm43.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./CLCeObem2.chunk.js";import{t as i}from"./D-JsEiDq2.chunk.js";import{u as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./Bwpvc7Th2.chunk.js";import{i as s}from"./DA0I3jYA.chunk.js";import{t as c}from"./dKyhMawf.chunk.js";import{t as l}from"./D0JviwKV2.chunk.js";import{n as u}from"./C4Ey4nzb2.chunk.js";import{t as d}from"./Bg2zGOFJ2.chunk.js";import{t as f}from"./dmUfJoJz2.chunk.js";import{t as p}from"./DkoXyXll.chunk.js";var m=n(e()),h=n(r()),g=t();function _({closePopup:e,onSubmit:t,showSpinner:n}){let r=h.object().shape({region:h.string().required(`Region is required`),catalogName:h.string().matches(/^[a-z0-9]+(_[a-z0-9]+)*$/,`Catalog name must be in lower snake case format.`).required(`Catalog name is required`),catalogDescription:h.string().required(`Catalog name must be in lower_snake_case format`)}),i=f.getAllRegions();return(0,g.jsx)(c,{initialValues:{catalogName:``,catalogDescription:``,region:``},validationSchema:r,onSubmit:e=>{t({name:e.catalogName,description:e.catalogDescription,fields:[{name:`id`,type:p.Text}]},e.region)},children:({values:t,handleChange:r,handleBlur:a,handleSubmit:o})=>(0,g.jsxs)(s,{onSubmit:o,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsxs)(u,{name:`region`,label:`Region`,as:`select`,value:t.region,onChange:r,onBlur:a,showRequiredStar:!t.region,children:[(0,g.jsx)(`option`,{disabled:!0,value:``,children:`Select Region`}),i.map(e=>(0,g.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}),(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsx)(u,{name:`catalogName`,label:`Catalog Name`,type:`text`,placeholder:`Enter the catalog name`,value:t.catalogName,onChange:r,onBlur:a,showRequiredStar:!t.catalogName})}),(0,g.jsx)(`div`,{className:`mb-3`,children:(0,g.jsx)(u,{name:`catalogDescription`,label:`Catalog Description`,as:`textarea`,placeholder:`Enter catalog description`,value:t.catalogDescription,onChange:r,onBlur:a,showRequiredStar:!t.catalogDescription})})]}),(0,g.jsxs)(l,{className:`mt-2`,children:[(0,g.jsx)(l.Cancel,{onClick:e}),(0,g.jsx)(l.Submit,{showSpinner:n,variant:`dark`,text:`Create catalog`,disabled:n})]})]})})}function v({closePopup:e}){let[t,n]=(0,m.useState)(!1),r=a(),s=o();async function c(t,i){n(!0),r(d.createCatalog(t,i)).then(()=>s.success(`Successfully created catalog: ${t.name}`)).catch(()=>s.error(`Failed to create catalog: ${t.name}. Please try again.`)).finally(e)}return(0,g.jsx)(i,{title:`Create Catalog`,closePopup:e,backdrop:`static`,children:(0,g.jsx)(_,{closePopup:e,onSubmit:c,showSpinner:t})})}export{v as CreateCatalogView};
2
+ //# sourceMappingURL=D61ei_h6.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DjqQYm43.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/CreateCatalogForm.tsx","../../../../../src/apps/marketing/views/catalogs/create-catalog/CreateCatalogView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { FieldType } from 'apps/marketing/interfaces/BrazeField';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nexport interface CreateCatalogFormProps {\n closePopup: () => void;\n onSubmit: (catalog: BrazeCatalog, region: string) => void;\n showSpinner: boolean;\n}\n\nexport function CreateCatalogForm({ closePopup, onSubmit, showSpinner }: CreateCatalogFormProps): JSX.Element {\n const validationSchema = Yup.object().shape({\n region: Yup.string().required('Region is required'),\n catalogName: Yup.string()\n .matches(/^[a-z0-9]+(_[a-z0-9]+)*$/, 'Catalog name must be in lower snake case format.')\n .required('Catalog name is required'),\n catalogDescription: Yup.string().required('Catalog name must be in lower_snake_case format')\n });\n\n const regions = MarketingHelper.getAllRegions();\n\n return (\n <FormWrapper\n initialValues={{ catalogName: '', catalogDescription: '', region: '' }}\n validationSchema={validationSchema}\n onSubmit={values => {\n const newCatalog: BrazeCatalog = {\n name: values.catalogName,\n description: values.catalogDescription,\n fields: [{ name: 'id', type: FieldType.Text }]\n };\n onSubmit(newCatalog, values.region);\n }}\n >\n {({ values, handleChange, handleBlur, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div>\n <div className='mb-3'>\n <FormField\n name='region'\n label='Region'\n as='select'\n value={values.region}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.region}\n >\n <option disabled value=''>Select Region</option>\n {regions.map(region => (\n <option key={region.value} value={region.value}>{region.label}</option>\n ))}\n </FormField>\n </div>\n\n <div className='mb-3'>\n <FormField\n name='catalogName'\n label='Catalog Name'\n type='text'\n placeholder='Enter the catalog name'\n value={values.catalogName}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.catalogName}\n />\n </div>\n\n <div className='mb-3'>\n <FormField\n name='catalogDescription'\n label='Catalog Description'\n as='textarea'\n placeholder='Enter catalog description'\n value={values.catalogDescription}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.catalogDescription}\n />\n </div>\n </div>\n\n <PopupButtons className='mt-2'>\n <PopupButtons.Cancel onClick={closePopup} />\n <PopupButtons.Submit\n showSpinner={showSpinner}\n variant='dark'\n text='Create catalog'\n disabled={showSpinner}\n />\n </PopupButtons>\n </Form>\n )}\n </FormWrapper>\n );\n}\n","import React, { useState } from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces/props/ViewProps';\n\nimport { MarketingRequests } from 'apps/marketing/flight-requests/MarketingRequests';\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { CreateCatalogForm } from 'apps/marketing/views/catalogs/components/CreateCatalogForm';\n\nexport interface CreateCatalogViewProps extends PopupViewProps {}\n\nexport function CreateCatalogView({ closePopup }: CreateCatalogViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = useState(false);\n \n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n async function onSubmit(catalog: BrazeCatalog, region: string): Promise<void> {\n setShowSpinner(true);\n fetchAsync(MarketingRequests.createCatalog(catalog, region))\n .then(() => alerts.success(`Successfully created catalog: ${catalog.name}`))\n .catch(() => alerts.error(`Failed to create catalog: ${catalog.name}. Please try again.`))\n .finally(closePopup);\n }\n\n return (\n <Popup title='Create Catalog' closePopup={closePopup} backdrop='static'>\n <CreateCatalogForm\n closePopup={closePopup}\n onSubmit={onSubmit}\n showSpinner={showSpinner}\n />\n </Popup>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"D61ei_h6.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/CreateCatalogForm.tsx","../../../../../src/apps/marketing/views/catalogs/create-catalog/CreateCatalogView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'formik';\nimport * as Yup from 'yup';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\n\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { FieldType } from 'apps/marketing/interfaces/BrazeField';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nexport interface CreateCatalogFormProps {\n closePopup: () => void;\n onSubmit: (catalog: BrazeCatalog, region: string) => void;\n showSpinner: boolean;\n}\n\nexport function CreateCatalogForm({ closePopup, onSubmit, showSpinner }: CreateCatalogFormProps): JSX.Element {\n const validationSchema = Yup.object().shape({\n region: Yup.string().required('Region is required'),\n catalogName: Yup.string()\n .matches(/^[a-z0-9]+(_[a-z0-9]+)*$/, 'Catalog name must be in lower snake case format.')\n .required('Catalog name is required'),\n catalogDescription: Yup.string().required('Catalog name must be in lower_snake_case format')\n });\n\n const regions = MarketingHelper.getAllRegions();\n\n return (\n <FormWrapper\n initialValues={{ catalogName: '', catalogDescription: '', region: '' }}\n validationSchema={validationSchema}\n onSubmit={values => {\n const newCatalog: BrazeCatalog = {\n name: values.catalogName,\n description: values.catalogDescription,\n fields: [{ name: 'id', type: FieldType.Text }]\n };\n onSubmit(newCatalog, values.region);\n }}\n >\n {({ values, handleChange, handleBlur, handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <div>\n <div className='mb-3'>\n <FormField\n name='region'\n label='Region'\n as='select'\n value={values.region}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.region}\n >\n <option disabled value=''>Select Region</option>\n {regions.map(region => (\n <option key={region.value} value={region.value}>{region.label}</option>\n ))}\n </FormField>\n </div>\n\n <div className='mb-3'>\n <FormField\n name='catalogName'\n label='Catalog Name'\n type='text'\n placeholder='Enter the catalog name'\n value={values.catalogName}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.catalogName}\n />\n </div>\n\n <div className='mb-3'>\n <FormField\n name='catalogDescription'\n label='Catalog Description'\n as='textarea'\n placeholder='Enter catalog description'\n value={values.catalogDescription}\n onChange={handleChange}\n onBlur={handleBlur}\n showRequiredStar={!values.catalogDescription}\n />\n </div>\n </div>\n\n <PopupButtons className='mt-2'>\n <PopupButtons.Cancel onClick={closePopup} />\n <PopupButtons.Submit\n showSpinner={showSpinner}\n variant='dark'\n text='Create catalog'\n disabled={showSpinner}\n />\n </PopupButtons>\n </Form>\n )}\n </FormWrapper>\n );\n}\n","import React, { useState } from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps } from 'libs/shared/interfaces/props/ViewProps';\n\nimport { MarketingRequests } from 'apps/marketing/flight-requests/MarketingRequests';\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { CreateCatalogForm } from 'apps/marketing/views/catalogs/components/CreateCatalogForm';\n\nexport interface CreateCatalogViewProps extends PopupViewProps {}\n\nexport function CreateCatalogView({ closePopup }: CreateCatalogViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = useState(false);\n \n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n async function onSubmit(catalog: BrazeCatalog, region: string): Promise<void> {\n setShowSpinner(true);\n fetchAsync(MarketingRequests.createCatalog(catalog, region))\n .then(() => alerts.success(`Successfully created catalog: ${catalog.name}`))\n .catch(() => alerts.error(`Failed to create catalog: ${catalog.name}. Please try again.`))\n .finally(closePopup);\n }\n\n return (\n <Popup title='Create Catalog' closePopup={closePopup} backdrop='static'>\n <CreateCatalogForm\n closePopup={closePopup}\n onSubmit={onSubmit}\n showSpinner={showSpinner}\n />\n </Popup>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{r as a}from"./DkstLT1W.chunk.js";import{t as o}from"./CLCeObem2.chunk.js";import{t as s}from"./Da4lNxpT2.chunk.js";import{i as c,r as l,s as ee}from"./Dgk5cBBe.chunk.js";import{t as u}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./DjzD1n9W.chunk.js";import{n as f,r as p,t as m}from"./DV9yRNvx2.chunk.js";import{t as h}from"./Bwpvc7Th2.chunk.js";import{t as g}from"./DhW1fXNd.chunk.js";import{i as _}from"./DA0I3jYA.chunk.js";import{t as v}from"./dKyhMawf.chunk.js";import{t as y}from"./CWF6vWmf.chunk.js";import{n as b}from"./C4Ey4nzb2.chunk.js";import{t as x}from"./Bv5hYKhN2.chunk.js";import{t as S}from"./Dzr8viTI2.chunk.js";import{t as C}from"./DIFBEfuJ2.chunk.js";import{t as w}from"./DOqkOvWG2.chunk.js";import{t as T}from"./Bvk_whKS.chunk.js";import{t as E}from"./oGkpmMft2.chunk.js";import{t as D}from"./Dfhl7nI62.chunk.js";import{n as O,t as k}from"./Dc4L3lY0.chunk.js";import{t as A}from"./Dk25wZSY.chunk.js";var j=r(t()),M=function(e){return e.All=`all`,e.ClickView=`cv`,e.Streamable=`sl`,e.None=`none`,e}({}),N=function(e){return e.AU=`ClickView Australia`,e.NZ=`ClickView New Zealand`,e.UK=`ClickView United Kingdom`,e.US=`ClickView United States`,e}({}),P=function(e){return e.GovSpend=`bulk_import_govspend`,e.AzGovBiz=`bulk_import_azgovbiz`,e.Agile=`bulk_import_agile`,e}({}),F=[{name:`first_name`,required:!0,pattern:/^.{1,}$/},{name:`last_name`,required:!0,pattern:/^.{1,}$/},{name:`job_title`,required:!0,pattern:/^.{1,}$/},{name:`email`,required:!0,unique:!0,caseInsensitive:!0,pattern:/^[A-Za-z0-9.'_%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$/},{name:`account_name`,required:!0,pattern:/^.{1,}$/},{name:`country_code`,required:!0,pattern:/^[A-Z]{2,3}$/},{name:`clickview_office`,required:!0,pattern:/^ClickView (Australia|United States|New Zealand|United Kingdom)$/},{name:`organisation_sub_type`,required:!1,pattern:/^.{1,}$/},{name:`province`,required:!0,pattern:/^[A-Z]{2,3}$/},{name:`phone`,required:!1,pattern:/^.{1,}$/}],I=[...F,{name:`topic`,required:!1,unique:!1,pattern:/^.{1,}$/},{name:`sync_to_crm`,required:!1,unique:!1,pattern:/^(TRUE|FALSE)$/},{name:`lead_source`,required:!1,unique:!1,pattern:/^.{1,}$/}],L={getWorkspaces(){return[{name:`Wild West`,value:k.WildWest},{name:`Core`,value:k.Core}]},getBrazeTemplates(e){return e?[{name:`Wild West`,link:A.WildWest},{name:`Core`,link:A.Core}]:[{name:`Wild West`,link:A.WildWest}]},getSourcesByWorkspace(e){if(e===k.WildWest)return[{name:P.GovSpend,validation:F},{name:P.AzGovBiz,validation:F},{name:P.Agile,validation:F}]},getCsvValidation(e){return e.length?e.length===1?{isValid:!1,error:`CSV only contains headers and no data rows.`}:e[1]?.every(e=>!e)?{isValid:!1,error:`First data row is empty.`}:e.length>1e4?{isValid:!1,error:`Cannot upload a spreadsheet larger than 10,000 rows.`}:{isValid:!0,error:``}:{isValid:!1,error:`No data found in the CSV.`}},getJobSummaryClass(e){switch(e){case`error`:return`danger`;case`warning`:return`warning`;case`success`:return`success`;default:return`info`}},getJobSummary(e){return e.totalErrored>0&&e.totalErrored<e.totalProcessed?{status:`error`,message:`${e.totalErrored} out of ${e.totalProcessed} users failed to be uploaded`}:e.totalErrored>0&&e.totalErrored===e.totalProcessed?{status:`error`,message:`All users failed to be uploaded`}:e.totalErrored===0&&e.totalProcessed===0?{status:`warning`,message:`No users were uploaded, they may already exist in Braze`}:{status:`success`,message:`${e.totalSucceeded} users have been uploaded to Braze`}},getSourcesValidation(e,t){return L.getSourcesByWorkspace(t).find(t=>t.name===e).validation},isEmptyRow(e){return e.every(e=>e.trim()===``)},getValidOfficeRegionValue(e){switch(e){case`us`:return[N.US,N.AU,N.NZ];case`eu`:return[N.UK]}},buildSubscriptionEvent(e){if(e===M.None)return;let t={name:O.AddToSubscriptionGroups,time:new Date().toISOString(),properties:{source:`curator_contact_upload`}};return e===M.ClickView&&(t.properties={...t.properties,products:[`clickview`]}),e===M.Streamable&&(t.properties={...t.properties,products:[`streamable`]}),e===M.All&&(t.properties={...t.properties,products:[`streamable`,`clickview`]}),t},buildMarketingProfileEvent(e,t){if(!e)return;let n={name:e,time:new Date().toISOString(),properties:{}};if(t)try{n.properties=JSON.parse(t)}catch{}return n},generateProfiles(e,t){let n=e[0];return e.slice(1).map(e=>{let r={firstName:e[n.indexOf(`first_name`)]||``,lastName:e[n.indexOf(`last_name`)]||``,jobTitle:e[n.indexOf(`job_title`)]||``,email:e[n.indexOf(`email`)]||``,accountName:e[n.indexOf(`account_name`)]||``,countryCode:e[n.indexOf(`country_code`)]||``,organisationSubType:e[n.indexOf(`organisation_sub_type`)]||``,province:e[n.indexOf(`province`)]||``,phone:e[n.indexOf(`phone`)]||``,clickViewOffice:e[n.indexOf(`clickview_office`)]||``};return t.workspace===`core`?{...r,topic:e[n.indexOf(`topic`)]||``,syncToCrm:e[n.indexOf(`sync_to_crm`)]||``,leadSource:e[n.indexOf(`lead_source`)]||``}:r})},getContainerWidth(e){return e.xl||e.xxl?`w-50`:e.lg?`w-75`:`w-100`},validateCSV(e,t,n){let r=n?t.workspace===k.WildWest?F:I:L.getSourcesValidation(t.source,t.workspace);e.length>1&&L.isEmptyRow(e[e.length-1])&&e.pop();let i=e[0],a=e.slice(1),o=[],s={};return r.forEach(e=>{e.unique&&(s[e.name]=new Set)}),a.forEach((e,n)=>{r.forEach(r=>{let a=i.indexOf(r.name),c=e[a]||``;if(!r.required&&!c)return;let l=L.getValidOfficeRegionValue(t.region);if(i[a]===`clickview_office`&&!l.includes(c)&&o.push(`Row ${n+1}: Invalid clickviewOffice value '${c}, must be the same region you have selected i.e ${l}`),a===-1){if(o.includes(`Missing required column: ${r.name}`))return;o.push(`Missing required column: ${r.name}`);return}if(r.required&&c.trim()===``&&o.push(`Row ${n+1}: ${r.name} is required.`),r.pattern&&!r.pattern.test(c)&&o.push(`Row ${n+1}: ${r.name} does not match the required format.`),r.unique){let e=r.caseInsensitive?c.toLowerCase():c;s[r.name].has(e)&&o.push(`Row ${n+1}: Duplicate value found for ${r.name}.`),s[r.name].add(e)}})}),o}},R=n();function z({formData:e,handleChange:t,handleBlur:n,enabled:r,toggle:i,canManageAll:a}){if(!a)return(0,R.jsx)(R.Fragment,{});let o=e.eventName&&e.eventValue;return(0,R.jsxs)(`div`,{className:`border border-2 border-gray-300 rounded`,children:[(0,R.jsx)(`div`,{className:`bg-gray-200 p-3 rounded-top-1 border-bottom border-2 border-gray-300`,children:(0,R.jsxs)(`div`,{className:`d-flex w-100 flex-row justify-content-between`,children:[(0,R.jsx)(`p`,{className:`mb-0`,children:`Custom Event`}),(0,R.jsx)(y,{on:r,onClick:i,tooltipText:`Trigger a custom event for each user uploaded to Braze`})]})}),(0,R.jsxs)(`div`,{className:`p-3`,children:[(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`eventName`,label:`Event Name`,as:`input`,infoText:`Name of the event that will be triggered for each user`,disabled:!r,value:e.eventName,onChange:t,onBlur:n})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`eventValue`,label:`Event Payload`,as:`textarea`,infoText:`The JSON payload accompanying the event`,infoTooltip:`This should be formatted as valid JSON`,disabled:!r,value:e.eventValue,onChange:t,onBlur:n})}),o&&(0,R.jsxs)(`div`,{className:`mb-3`,children:[(0,R.jsx)(`span`,{className:`d-flex text-sm mb-2`,children:`Event preview`}),(0,R.jsx)(`pre`,{className:`bg-gray-200 p-2 rounded text-sm font-mono whitespace-pre-wrap`,children:JSON.stringify(L.buildMarketingProfileEvent(e.eventName,e.eventValue),null,2)})]})]})]})}function B({formData:e,handleChange:t,handleBlur:n,canManageAll:r}){let i=r&&e.workspace!==k.WildWest;return(0,R.jsxs)(`div`,{className:`border border-2 border-gray-300 rounded`,children:[(0,R.jsx)(`div`,{className:`bg-gray-200 p-3 rounded-top-1 border-bottom border-2 border-gray-300`,children:(0,R.jsx)(`p`,{className:`mb-0`,children:`Upload Details`})}),(0,R.jsxs)(`div`,{className:`p-3`,children:[(0,R.jsx)(`div`,{children:r?(0,R.jsx)(b,{name:`source`,label:`Source`,as:`input`,placeholder:`bulk_import_...`,value:e.source,onChange:t,onBlur:n}):(0,R.jsxs)(b,{name:`source`,label:`Source`,as:`select`,value:e.source,onChange:t,onBlur:n,children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Source`}),L.getSourcesByWorkspace(e.workspace).map(e=>(0,R.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`region`,label:`Region`,infoText:!r&&`If you need to add users to EU, please contact the Product team`,as:`select`,value:e.region,onChange:t,onBlur:n,disabled:!r,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Region`}),E.getAllRegions().map(e=>(0,R.jsx)(`option`,{value:e.value,children:e.label},e.value))]}):(0,R.jsx)(`option`,{value:`us`,children:`US`})})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`workspace`,label:`Workspace`,infoText:!r&&`If you need to add users to Core, please contact the Product team`,as:`select`,value:e.workspace,onChange:t,onBlur:n,disabled:!r,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Workspace`}),L.getWorkspaces().map(e=>(0,R.jsx)(`option`,{value:e.value,children:e.name},e.value))]}):(0,R.jsx)(`option`,{value:`wildwest`,children:`Wild West`})})}),i?(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsxs)(b,{name:`subscriptionGroup`,label:`Subscription Groups`,as:`select`,value:e.subscriptionGroup,onChange:t,onBlur:n,disabled:null,children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Subscription Groups`}),Object.entries(M).map(([e,t])=>(0,R.jsx)(`option`,{value:t,children:e},t))]})}):(0,R.jsx)(R.Fragment,{})]})]})}var V=r(o()),H=/^bulk_import_[a-z0-9]+(_[a-z0-9]+)*$/,U=/^[a-z0-9]+(_[a-z0-9]+)*$/;function W(e){return V.object().shape({source:V.string().matches(H,`Must start with bulk_import_, followed by lowercase letters or numbers, with optional segments separated by a single underscore (_), and no uppercase letters or special characters.`).required(`Source is required`),region:V.string().required(`Region is required`),workspace:V.string().required(`Workspace is required`),eventName:V.string().when([],{is:()=>e,then:V.string().matches(U,`Event name must be lower snake case`).required(`Event name is required`),otherwise:V.string().notRequired()}),eventValue:V.string().when([],{is:()=>e,then:V.string().required(`Event value is required`),otherwise:V.string().notRequired()})})}function G({canManageAll:e,handleCsvParsing:t,numRows:n}){let r=L.getBrazeTemplates(e);return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`p`,{children:[`Upload contacts to Braze`,e?`. Please use one of the following templates`:` Wild West. Please use the following template`]}),(0,R.jsx)(`ul`,{children:r.map((e,t)=>(0,R.jsx)(`li`,{children:(0,R.jsx)(`a`,{className:`btn btn-link p-0 text-info px-3`,download:!0,href:e.link,children:e.name})},t))}),(0,R.jsx)(`div`,{className:`w-50`,children:(0,R.jsx)(T,{onSelectSpreadsheet:t})}),n>0&&(0,R.jsxs)(`p`,{className:`mt-2`,children:[`Total contacts to upload: `,(0,R.jsx)(`b`,{children:n-1})]})]})}function K(){let[t,n]=(0,j.useState)(!0),[r,o]=(0,j.useState)(!1),[y,b]=(0,j.useState)([]),[T,O]=(0,j.useState)([]),[A,N]=(0,j.useState)(``),[P,F]=(0,j.useState)(!1),[I,V]=(0,j.useState)({status:``,message:``}),[H,U]=(0,j.useState)(`initial`),K=u(),{hasPermissions:q}=d(),J=q(a.MarketingContactUploadAll),Y=q(a.MarketingCatalogManagement),X=J&&Y,Z=L.getContainerWidth(S()),Q=h();function te(e,t){l(K,w.getJobProgress(A,e,t))}async function ne(){let e=await c(K,w.getJobSummary(A));V(L.getJobSummary(e)),U(`completed`)}let $=ee(i.currentUser());if(x({title:`Contact Upload`}),!$.hasCompleted)return(0,R.jsx)(R.Fragment,{});let re=async e=>{O([]),N(``),U(`initial`),X||n(!1);let{isValid:t,error:r}=L.getCsvValidation(e);if(!t){Q.error(r);return}let i=e.filter(e=>e.some(Boolean));b(i),o(!0)},ie=e=>{U(`validating`);let t=L.validateCSV(y,e,X);O(t),U(t.length>0?`initial`:`validated`)};async function ae(e){F(!0),U(`uploading`);let t=[],n=L.buildSubscriptionEvent(e.subscriptionGroup);n&&t.push(n);let r=L.buildMarketingProfileEvent(e.eventName,e.eventValue);r&&t.push(r);let i={name:f.MarketingProfile,type:m.MarketingProfile,metadata:{source:e.source,instanceRegion:E.getInstanceRegionByCode(e.region),workspace:e.workspace,profiles:L.generateProfiles(y,e),events:t},customerId:$.data.id,dataType:p.MarketingProfile};c(K,w.createJob(i)).then(e=>{N(e.id),U(`uploading`)}).catch(()=>{Q.error(`Failed to upload the contacts. Please try again.`),U(`initial`)})}let oe=()=>{switch(H){case`validating`:return null;case`validated`:return(0,R.jsx)(`div`,{className:`alert alert-success`,children:`Validation succeeded. Click Upload to continue.`});case`uploading`:return A?(0,R.jsxs)(`div`,{className:`border-top pt-4`,children:[(0,R.jsx)(`div`,{className:`alert alert-info`,children:`Contacts will continue to be uploaded in the background, so you can safely close this page. Once processing is complete, you will be notified via email.`}),(0,R.jsx)(C,{jobId:A,pollJob:te,actionName:`Importing Users`,actionVerb:`Create`,onStatusCompleted:()=>{F(!1),ne()}})]}):null;case`completed`:return(0,R.jsx)(`div`,{className:`alert alert-${L.getJobSummaryClass(I.status)}`,children:I.message});default:return T.length>0?(0,R.jsx)(`div`,{className:`border-top pt-4`,children:(0,R.jsxs)(`div`,{className:`alert alert-danger`,children:[(0,R.jsx)(`p`,{children:(0,R.jsxs)(`b`,{children:[T.length,` Validation Error`,T.length!==1&&`s`]})}),(0,R.jsx)(`ul`,{children:T.map(e=>(0,R.jsx)(`li`,{className:`text-danger`,children:e},e))})]})}):null}},se=e.getCurrentAppLink();return(0,R.jsx)(D,{leftNavItems:E.getLeftNavItems(X,se.action),children:(0,R.jsx)(`div`,{className:Z,children:(0,R.jsx)(v,{validationSchema:W(t),initialValues:{source:``,region:`us`,workspace:k.WildWest,subscriptionGroup:M.None,eventName:``,eventValue:``},onSubmit:ie,children:({values:e,handleChange:i,handleBlur:a,handleSubmit:o})=>(0,R.jsxs)(`div`,{className:`p-4 d-flex flex-column gap-4`,children:[(0,R.jsx)(`h2`,{className:`mb-0`,children:`Contact Upload`}),(0,R.jsx)(G,{canManageAll:X,handleCsvParsing:re,numRows:y.length}),r&&(0,R.jsxs)(_,{className:`d-flex flex-column gap-4`,children:[(0,R.jsx)(B,{formData:e,handleChange:i,handleBlur:a,canManageAll:X}),(0,R.jsx)(z,{formData:e,handleChange:i,handleBlur:a,enabled:t,toggle:()=>n(!t),canManageAll:X})]}),r&&(0,R.jsxs)(`div`,{className:`d-flex align-self-end gap-2`,children:[(0,R.jsx)(s,{variant:`outline-dark`,onClick:()=>o(),disabled:H===`validated`||H===`completed`||H===`uploading`,children:`Validate`}),(0,R.jsx)(`div`,{className:`d-flex gap-2 align-items-center`,children:(0,R.jsx)(g,{variant:`dark`,onClick:()=>ae(e),showSpinner:P,disabled:H===`initial`||T.length>0||H===`completed`,children:`Upload`})})]}),(0,R.jsx)(oe,{})]})})})})}export{K as ContactUploadView};
2
- //# sourceMappingURL=lgpeNdac.chunk.js.map
1
+ import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{r as a}from"./DkstLT1W.chunk.js";import{t as o}from"./CLCeObem2.chunk.js";import{t as s}from"./Da4lNxpT2.chunk.js";import{i as c,r as l,s as ee}from"./Dgk5cBBe.chunk.js";import{t as u}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./DjzD1n9W.chunk.js";import{n as f,r as p,t as m}from"./DV9yRNvx2.chunk.js";import{t as h}from"./Bwpvc7Th2.chunk.js";import{t as g}from"./DhW1fXNd.chunk.js";import{i as _}from"./DA0I3jYA.chunk.js";import{t as v}from"./dKyhMawf.chunk.js";import{t as y}from"./CWF6vWmf.chunk.js";import{n as b}from"./C4Ey4nzb2.chunk.js";import{t as x}from"./Bv5hYKhN2.chunk.js";import{t as S}from"./Dzr8viTI2.chunk.js";import{t as C}from"./DIFBEfuJ2.chunk.js";import{t as w}from"./DOqkOvWG2.chunk.js";import{t as T}from"./Bvk_whKS.chunk.js";import{t as E}from"./dmUfJoJz2.chunk.js";import{t as D}from"./BrBPGjLi2.chunk.js";import{n as O,t as k}from"./Dc4L3lY0.chunk.js";import{t as A}from"./Dk25wZSY.chunk.js";var j=r(t()),M=function(e){return e.All=`all`,e.ClickView=`cv`,e.Streamable=`sl`,e.None=`none`,e}({}),N=function(e){return e.AU=`ClickView Australia`,e.NZ=`ClickView New Zealand`,e.UK=`ClickView United Kingdom`,e.US=`ClickView United States`,e}({}),P=function(e){return e.GovSpend=`bulk_import_govspend`,e.AzGovBiz=`bulk_import_azgovbiz`,e.Agile=`bulk_import_agile`,e}({}),F=[{name:`first_name`,required:!0,pattern:/^.{1,}$/},{name:`last_name`,required:!0,pattern:/^.{1,}$/},{name:`job_title`,required:!0,pattern:/^.{1,}$/},{name:`email`,required:!0,unique:!0,caseInsensitive:!0,pattern:/^[A-Za-z0-9.'_%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$/},{name:`account_name`,required:!0,pattern:/^.{1,}$/},{name:`country_code`,required:!0,pattern:/^[A-Z]{2,3}$/},{name:`clickview_office`,required:!0,pattern:/^ClickView (Australia|United States|New Zealand|United Kingdom)$/},{name:`organisation_sub_type`,required:!1,pattern:/^.{1,}$/},{name:`province`,required:!0,pattern:/^[A-Z]{2,3}$/},{name:`phone`,required:!1,pattern:/^.{1,}$/}],I=[...F,{name:`topic`,required:!1,unique:!1,pattern:/^.{1,}$/},{name:`sync_to_crm`,required:!1,unique:!1,pattern:/^(TRUE|FALSE)$/},{name:`lead_source`,required:!1,unique:!1,pattern:/^.{1,}$/}],L={getWorkspaces(){return[{name:`Wild West`,value:k.WildWest},{name:`Core`,value:k.Core}]},getBrazeTemplates(e){return e?[{name:`Wild West`,link:A.WildWest},{name:`Core`,link:A.Core}]:[{name:`Wild West`,link:A.WildWest}]},getSourcesByWorkspace(e){if(e===k.WildWest)return[{name:P.GovSpend,validation:F},{name:P.AzGovBiz,validation:F},{name:P.Agile,validation:F}]},getCsvValidation(e){return e.length?e.length===1?{isValid:!1,error:`CSV only contains headers and no data rows.`}:e[1]?.every(e=>!e)?{isValid:!1,error:`First data row is empty.`}:e.length>1e4?{isValid:!1,error:`Cannot upload a spreadsheet larger than 10,000 rows.`}:{isValid:!0,error:``}:{isValid:!1,error:`No data found in the CSV.`}},getJobSummaryClass(e){switch(e){case`error`:return`danger`;case`warning`:return`warning`;case`success`:return`success`;default:return`info`}},getJobSummary(e){return e.totalErrored>0&&e.totalErrored<e.totalProcessed?{status:`error`,message:`${e.totalErrored} out of ${e.totalProcessed} users failed to be uploaded`}:e.totalErrored>0&&e.totalErrored===e.totalProcessed?{status:`error`,message:`All users failed to be uploaded`}:e.totalErrored===0&&e.totalProcessed===0?{status:`warning`,message:`No users were uploaded, they may already exist in Braze`}:{status:`success`,message:`${e.totalSucceeded} users have been uploaded to Braze`}},getSourcesValidation(e,t){return L.getSourcesByWorkspace(t).find(t=>t.name===e).validation},isEmptyRow(e){return e.every(e=>e.trim()===``)},getValidOfficeRegionValue(e){switch(e){case`us`:return[N.US,N.AU,N.NZ];case`eu`:return[N.UK]}},buildSubscriptionEvent(e){if(e===M.None)return;let t={name:O.AddToSubscriptionGroups,time:new Date().toISOString(),properties:{source:`curator_contact_upload`}};return e===M.ClickView&&(t.properties={...t.properties,products:[`clickview`]}),e===M.Streamable&&(t.properties={...t.properties,products:[`streamable`]}),e===M.All&&(t.properties={...t.properties,products:[`streamable`,`clickview`]}),t},buildMarketingProfileEvent(e,t){if(!e)return;let n={name:e,time:new Date().toISOString(),properties:{}};if(t)try{n.properties=JSON.parse(t)}catch{}return n},generateProfiles(e,t){let n=e[0];return e.slice(1).map(e=>{let r={firstName:e[n.indexOf(`first_name`)]||``,lastName:e[n.indexOf(`last_name`)]||``,jobTitle:e[n.indexOf(`job_title`)]||``,email:e[n.indexOf(`email`)]||``,accountName:e[n.indexOf(`account_name`)]||``,countryCode:e[n.indexOf(`country_code`)]||``,organisationSubType:e[n.indexOf(`organisation_sub_type`)]||``,province:e[n.indexOf(`province`)]||``,phone:e[n.indexOf(`phone`)]||``,clickViewOffice:e[n.indexOf(`clickview_office`)]||``};return t.workspace===`core`?{...r,topic:e[n.indexOf(`topic`)]||``,syncToCrm:e[n.indexOf(`sync_to_crm`)]||``,leadSource:e[n.indexOf(`lead_source`)]||``}:r})},getContainerWidth(e){return e.xl||e.xxl?`w-50`:e.lg?`w-75`:`w-100`},validateCSV(e,t,n){let r=n?t.workspace===k.WildWest?F:I:L.getSourcesValidation(t.source,t.workspace);e.length>1&&L.isEmptyRow(e[e.length-1])&&e.pop();let i=e[0],a=e.slice(1),o=[],s={};return r.forEach(e=>{e.unique&&(s[e.name]=new Set)}),a.forEach((e,n)=>{r.forEach(r=>{let a=i.indexOf(r.name),c=e[a]||``;if(!r.required&&!c)return;let l=L.getValidOfficeRegionValue(t.region);if(i[a]===`clickview_office`&&!l.includes(c)&&o.push(`Row ${n+1}: Invalid clickviewOffice value '${c}, must be the same region you have selected i.e ${l}`),a===-1){if(o.includes(`Missing required column: ${r.name}`))return;o.push(`Missing required column: ${r.name}`);return}if(r.required&&c.trim()===``&&o.push(`Row ${n+1}: ${r.name} is required.`),r.pattern&&!r.pattern.test(c)&&o.push(`Row ${n+1}: ${r.name} does not match the required format.`),r.unique){let e=r.caseInsensitive?c.toLowerCase():c;s[r.name].has(e)&&o.push(`Row ${n+1}: Duplicate value found for ${r.name}.`),s[r.name].add(e)}})}),o}},R=n();function z({formData:e,handleChange:t,handleBlur:n,enabled:r,toggle:i,canManageAll:a}){if(!a)return(0,R.jsx)(R.Fragment,{});let o=e.eventName&&e.eventValue;return(0,R.jsxs)(`div`,{className:`border border-2 border-gray-300 rounded`,children:[(0,R.jsx)(`div`,{className:`bg-gray-200 p-3 rounded-top-1 border-bottom border-2 border-gray-300`,children:(0,R.jsxs)(`div`,{className:`d-flex w-100 flex-row justify-content-between`,children:[(0,R.jsx)(`p`,{className:`mb-0`,children:`Custom Event`}),(0,R.jsx)(y,{on:r,onClick:i,tooltipText:`Trigger a custom event for each user uploaded to Braze`})]})}),(0,R.jsxs)(`div`,{className:`p-3`,children:[(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`eventName`,label:`Event Name`,as:`input`,infoText:`Name of the event that will be triggered for each user`,disabled:!r,value:e.eventName,onChange:t,onBlur:n})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`eventValue`,label:`Event Payload`,as:`textarea`,infoText:`The JSON payload accompanying the event`,infoTooltip:`This should be formatted as valid JSON`,disabled:!r,value:e.eventValue,onChange:t,onBlur:n})}),o&&(0,R.jsxs)(`div`,{className:`mb-3`,children:[(0,R.jsx)(`span`,{className:`d-flex text-sm mb-2`,children:`Event preview`}),(0,R.jsx)(`pre`,{className:`bg-gray-200 p-2 rounded text-sm font-mono whitespace-pre-wrap`,children:JSON.stringify(L.buildMarketingProfileEvent(e.eventName,e.eventValue),null,2)})]})]})]})}function B({formData:e,handleChange:t,handleBlur:n,canManageAll:r}){let i=r&&e.workspace!==k.WildWest;return(0,R.jsxs)(`div`,{className:`border border-2 border-gray-300 rounded`,children:[(0,R.jsx)(`div`,{className:`bg-gray-200 p-3 rounded-top-1 border-bottom border-2 border-gray-300`,children:(0,R.jsx)(`p`,{className:`mb-0`,children:`Upload Details`})}),(0,R.jsxs)(`div`,{className:`p-3`,children:[(0,R.jsx)(`div`,{children:r?(0,R.jsx)(b,{name:`source`,label:`Source`,as:`input`,placeholder:`bulk_import_...`,value:e.source,onChange:t,onBlur:n}):(0,R.jsxs)(b,{name:`source`,label:`Source`,as:`select`,value:e.source,onChange:t,onBlur:n,children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Source`}),L.getSourcesByWorkspace(e.workspace).map(e=>(0,R.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`region`,label:`Region`,infoText:!r&&`If you need to add users to EU, please contact the Product team`,as:`select`,value:e.region,onChange:t,onBlur:n,disabled:!r,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Region`}),E.getAllRegions().map(e=>(0,R.jsx)(`option`,{value:e.value,children:e.label},e.value))]}):(0,R.jsx)(`option`,{value:`us`,children:`US`})})}),(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(b,{name:`workspace`,label:`Workspace`,infoText:!r&&`If you need to add users to Core, please contact the Product team`,as:`select`,value:e.workspace,onChange:t,onBlur:n,disabled:!r,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Workspace`}),L.getWorkspaces().map(e=>(0,R.jsx)(`option`,{value:e.value,children:e.name},e.value))]}):(0,R.jsx)(`option`,{value:`wildwest`,children:`Wild West`})})}),i?(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsxs)(b,{name:`subscriptionGroup`,label:`Subscription Groups`,as:`select`,value:e.subscriptionGroup,onChange:t,onBlur:n,disabled:null,children:[(0,R.jsx)(`option`,{value:``,disabled:!0,children:`Select Subscription Groups`}),Object.entries(M).map(([e,t])=>(0,R.jsx)(`option`,{value:t,children:e},t))]})}):(0,R.jsx)(R.Fragment,{})]})]})}var V=r(o()),H=/^bulk_import_[a-z0-9]+(_[a-z0-9]+)*$/,U=/^[a-z0-9]+(_[a-z0-9]+)*$/;function W(e){return V.object().shape({source:V.string().matches(H,`Must start with bulk_import_, followed by lowercase letters or numbers, with optional segments separated by a single underscore (_), and no uppercase letters or special characters.`).required(`Source is required`),region:V.string().required(`Region is required`),workspace:V.string().required(`Workspace is required`),eventName:V.string().when([],{is:()=>e,then:V.string().matches(U,`Event name must be lower snake case`).required(`Event name is required`),otherwise:V.string().notRequired()}),eventValue:V.string().when([],{is:()=>e,then:V.string().required(`Event value is required`),otherwise:V.string().notRequired()})})}function G({canManageAll:e,handleCsvParsing:t,numRows:n}){let r=L.getBrazeTemplates(e);return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`p`,{children:[`Upload contacts to Braze`,e?`. Please use one of the following templates`:` Wild West. Please use the following template`]}),(0,R.jsx)(`ul`,{children:r.map((e,t)=>(0,R.jsx)(`li`,{children:(0,R.jsx)(`a`,{className:`btn btn-link p-0 text-info px-3`,download:!0,href:e.link,children:e.name})},t))}),(0,R.jsx)(`div`,{className:`w-50`,children:(0,R.jsx)(T,{onSelectSpreadsheet:t})}),n>0&&(0,R.jsxs)(`p`,{className:`mt-2`,children:[`Total contacts to upload: `,(0,R.jsx)(`b`,{children:n-1})]})]})}function K(){let[t,n]=(0,j.useState)(!0),[r,o]=(0,j.useState)(!1),[y,b]=(0,j.useState)([]),[T,O]=(0,j.useState)([]),[A,N]=(0,j.useState)(``),[P,F]=(0,j.useState)(!1),[I,V]=(0,j.useState)({status:``,message:``}),[H,U]=(0,j.useState)(`initial`),K=u(),{hasPermissions:q}=d(),J=q(a.MarketingContactUploadAll),Y=q(a.MarketingCatalogManagement),X=J&&Y,Z=L.getContainerWidth(S()),Q=h();function te(e,t){l(K,w.getJobProgress(A,e,t))}async function ne(){let e=await c(K,w.getJobSummary(A));V(L.getJobSummary(e)),U(`completed`)}let $=ee(i.currentUser());if(x({title:`Contact Upload`}),!$.hasCompleted)return(0,R.jsx)(R.Fragment,{});let re=async e=>{O([]),N(``),U(`initial`),X||n(!1);let{isValid:t,error:r}=L.getCsvValidation(e);if(!t){Q.error(r);return}let i=e.filter(e=>e.some(Boolean));b(i),o(!0)},ie=e=>{U(`validating`);let t=L.validateCSV(y,e,X);O(t),U(t.length>0?`initial`:`validated`)};async function ae(e){F(!0),U(`uploading`);let t=[],n=L.buildSubscriptionEvent(e.subscriptionGroup);n&&t.push(n);let r=L.buildMarketingProfileEvent(e.eventName,e.eventValue);r&&t.push(r);let i={name:f.MarketingProfile,type:m.MarketingProfile,metadata:{source:e.source,instanceRegion:E.getInstanceRegionByCode(e.region),workspace:e.workspace,profiles:L.generateProfiles(y,e),events:t},customerId:$.data.id,dataType:p.MarketingProfile};c(K,w.createJob(i)).then(e=>{N(e.id),U(`uploading`)}).catch(()=>{Q.error(`Failed to upload the contacts. Please try again.`),U(`initial`)})}let oe=()=>{switch(H){case`validating`:return null;case`validated`:return(0,R.jsx)(`div`,{className:`alert alert-success`,children:`Validation succeeded. Click Upload to continue.`});case`uploading`:return A?(0,R.jsxs)(`div`,{className:`border-top pt-4`,children:[(0,R.jsx)(`div`,{className:`alert alert-info`,children:`Contacts will continue to be uploaded in the background, so you can safely close this page. Once processing is complete, you will be notified via email.`}),(0,R.jsx)(C,{jobId:A,pollJob:te,actionName:`Importing Users`,actionVerb:`Create`,onStatusCompleted:()=>{F(!1),ne()}})]}):null;case`completed`:return(0,R.jsx)(`div`,{className:`alert alert-${L.getJobSummaryClass(I.status)}`,children:I.message});default:return T.length>0?(0,R.jsx)(`div`,{className:`border-top pt-4`,children:(0,R.jsxs)(`div`,{className:`alert alert-danger`,children:[(0,R.jsx)(`p`,{children:(0,R.jsxs)(`b`,{children:[T.length,` Validation Error`,T.length!==1&&`s`]})}),(0,R.jsx)(`ul`,{children:T.map(e=>(0,R.jsx)(`li`,{className:`text-danger`,children:e},e))})]})}):null}},se=e.getCurrentAppLink();return(0,R.jsx)(D,{leftNavItems:E.getLeftNavItems(X,se.action),children:(0,R.jsx)(`div`,{className:Z,children:(0,R.jsx)(v,{validationSchema:W(t),initialValues:{source:``,region:`us`,workspace:k.WildWest,subscriptionGroup:M.None,eventName:``,eventValue:``},onSubmit:ie,children:({values:e,handleChange:i,handleBlur:a,handleSubmit:o})=>(0,R.jsxs)(`div`,{className:`p-4 d-flex flex-column gap-4`,children:[(0,R.jsx)(`h2`,{className:`mb-0`,children:`Contact Upload`}),(0,R.jsx)(G,{canManageAll:X,handleCsvParsing:re,numRows:y.length}),r&&(0,R.jsxs)(_,{className:`d-flex flex-column gap-4`,children:[(0,R.jsx)(B,{formData:e,handleChange:i,handleBlur:a,canManageAll:X}),(0,R.jsx)(z,{formData:e,handleChange:i,handleBlur:a,enabled:t,toggle:()=>n(!t),canManageAll:X})]}),r&&(0,R.jsxs)(`div`,{className:`d-flex align-self-end gap-2`,children:[(0,R.jsx)(s,{variant:`outline-dark`,onClick:()=>o(),disabled:H===`validated`||H===`completed`||H===`uploading`,children:`Validate`}),(0,R.jsx)(`div`,{className:`d-flex gap-2 align-items-center`,children:(0,R.jsx)(g,{variant:`dark`,onClick:()=>ae(e),showSpinner:P,disabled:H===`initial`||T.length>0||H===`completed`,children:`Upload`})})]}),(0,R.jsx)(oe,{})]})})})})}export{K as ContactUploadView};
2
+ //# sourceMappingURL=D6wyTufc.chunk.js.map