@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C-M2om56.chunk.js","names":[],"sources":["../../../../../src/shared/enums/MatrixObjectType.ts","../../../../../src/shared/components/member-matrix/cells/content-cell.module.scss","../../../../../src/shared/components/member-matrix/cells/ContentCell.tsx","../../../../../src/shared/components/member-matrix/cells/HeaderCell.tsx","../../../../../src/shared/components/member-matrix/member-matrix.module.scss","../../../../../src/apps/subjects/components/learning-level-label/LearningLevelLabel.tsx","../../../../../src/shared/components/member-matrix/columns/Columns.tsx","../../../../../src/shared/utils/MemberMatrixSortHelper.tsx","../../../../../src/shared/utils/MemberMatrixHelper.ts"],"sourcesContent":["export enum MatrixObjectType {\n Video = 'Video',\n Series = 'Series',\n Playlist = 'Playlist',\n Audience = 'Audience',\n Classification = 'Classification',\n Dashboard = 'Dashboard',\n Interactive = 'Interactive',\n Clip = 'Clip',\n Company = 'Company',\n Livestream = 'Livestream',\n ContentPartner = 'ContentPartner'\n}\n",":local {\n .contentCellLink {\n display: flex;\n\n &:hover {\n .externalIcon {\n visibility: visible;\n }\n } \n }\n\n .externalIcon {\n visibility: hidden;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport styles from './content-cell.module.scss';\n\ninterface ContentCellProps {\n appLink?: Core.AppLink;\n openInNewTab?: boolean;\n appLinkClasses?: string;\n extraClasses?: string;\n alignment?: 'start' | 'center' | 'end';\n}\n\ninterface ContentCellExternalLinkIconProps {\n openInNewTab?: boolean;\n}\n\nconst ContentCellExternalLinkIcon = (props: ContentCellExternalLinkIconProps): JSX.Element => {\n if (!props.openInNewTab) {\n return <></>;\n }\n\n return (\n <span className={`ps-1 ${styles.externalIcon}`}>\n <SvgContainer svg={NewWindowSvg} size={SvgContainerSize.Small} />\n </span>\n );\n};\n\nexport const ContentCell = (props: React.PropsWithChildren<ContentCellProps>): JSX.Element => {\n const alignmentClass = `align-items-${props.alignment ?? 'center'}`;\n\n if (props.appLink)\n return (\n <div className={`d-flex h-100 ${alignmentClass} ${props.extraClasses ?? ''}`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={null}\n openInNewTab={props.openInNewTab}\n className={`${styles.contentCellLink} ${props.appLinkClasses} mw-100`}\n >\n {props.children}\n <ContentCellExternalLinkIcon openInNewTab={props.openInNewTab} />\n </AppLink>\n </div>\n );\n\n return (\n <div className={`d-flex h-100 ${styles.contentCell ?? ''} ${alignmentClass} ${props.extraClasses ?? ''}`}>\n {props.children}\n <ContentCellExternalLinkIcon openInNewTab={props.openInNewTab} />\n </div>\n );\n};\n","import React from 'react';\n\n// ensures at least one of 'title' or 'children' must be provided\ntype HeaderCellProps =\n | { title: string, children?: React.ReactNode } |\n { title?: string, children: React.ReactNode };\n\nexport const HeaderCell = (props: React.PropsWithChildren<HeaderCellProps>): JSX.Element => {\n if (props.title)\n return (\n <span><strong>{props.title}</strong></span>\n );\n\n return <>{props.children}</>;\n};\n",":local {\n $order-container-size: 1rem;\n $xxs-svg-icon-workaround-margin: -0.5rem;\n\n .seeOverview {\n display: none;\n }\n\n .thumbnail {\n max-width: 12.5rem;\n }\n\n .orderNumber {\n display: block;\n }\n \n .orderSortableIcon {\n margin-top: $xxs-svg-icon-workaround-margin;\n display: none;\n }\n\n .orderContainer {\n width: $order-container-size;\n height: $order-container-size;\n margin-left: -($order-container-size * 0.5);\n }\n\n .row:hover {\n .orderNumber {\n display: none;\n }\n \n .orderSortableIcon {\n display: block;\n }\n }\n}","import React from 'react';\n\nimport { DashboardLearningLevel } from 'libs/shared/interfaces';\n\nimport { ClassificationMemberHelper } from 'shared/utils';\n\ninterface LearningLevelLabelProps {\n learningLevel: DashboardLearningLevel;\n}\n\nexport function LearningLevelLabel(props: LearningLevelLabelProps): JSX.Element {\n if (!props.learningLevel)\n return <></>;\n\n return (\n <div className='border rounded-pill d-inline-block px-2 text-nowrap border-dark'>\n {ClassificationMemberHelper.mapLearningLevelToFriendlyName(props.learningLevel)}\n </div>\n );\n}\n","import React from 'react';\nimport { CellProps } from 'react-table';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Timezone } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Column } from 'libs/shared/components/table/Table';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { MinusSvg } from 'libs/shared/images/svg/actions/MinusSvg';\nimport { VisibleOffSvg } from 'libs/shared/images/svg/actions/VisibleOffSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { CrossCircleSvg } from 'libs/shared/images/svg/objects/CrossCircleSvg';\nimport { HandleSvg } from 'libs/shared/images/svg/objects/HandleSvg';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { Classification, Company, DashboardUserType, Interactive, Library, Person, Resource, Subtitle } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ColumnData, MatrixMember } from 'shared/components/member-matrix';\nimport { ContentCell, HeaderCell } from 'shared/components/member-matrix/cells';\nimport { StatusSelector } from 'shared/components/member-matrix/columns/StatusSelector';\nimport styles from 'shared/components/member-matrix/member-matrix.module.scss';\nimport { ColumnProperty, MatrixObjectType } from 'shared/enums';\nimport { MatrixColumn } from 'shared/interfaces/models/MatrixColumn';\nimport { ClassificationMemberHelper } from 'shared/utils';\n\nimport { LearningLevelLabel } from 'apps/subjects/components/learning-level-label/LearningLevelLabel';\n\nfunction getDashboardUserTypeName(type: DashboardUserType): string {\n switch (type) {\n case DashboardUserType.Any:\n return 'Any';\n case DashboardUserType.Learner:\n return 'Student';\n case DashboardUserType.Staff:\n return 'Staff';\n }\n}\n\ninterface TableColumnProps {\n columns: MatrixColumn[];\n columnData: ColumnData;\n}\n\ninterface MappedColumnProps extends Omit<TableColumnProps, 'columns'> {\n column: MatrixColumn;\n}\n\n/**\n * All columns are designed and written to be largely agnostic of the underlying\n * object type. When adding a new column, please consider whether it may need to be re-used \n * for another object.\n * \n * Column accessors define *how* a value is going to be exposed to the column, \n * \n * See MemberMatrixHelper.ts for table & column compositions.\n */\n\nconst Columns = {\n [ColumnProperty.Checkbox]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Checkbox}`,\n Header: () => {\n const checkboxManager = columnData.extraData?.checkboxManager;\n if (!checkboxManager) {\n return <></>;\n }\n\n return (\n <HeaderCell>\n <div className='d-flex justify-content-center ms-n3'>\n <Checkbox\n id='bulk-select-checkbox'\n checked={checkboxManager.bulkChecked}\n onChange={checkboxManager.onToggleBulk}\n />\n </div>\n </HeaderCell>\n );\n },\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n const checkboxManager = columnData.extraData?.checkboxManager;\n if (!checkboxManager) {\n return <ContentCell>N/A</ContentCell>;\n }\n\n return (\n <ContentCell extraClasses='justify-content-center'>\n <Checkbox\n id='video-checkbox'\n checked={checkboxManager.isChecked(cell.value) || false}\n onChange={() => checkboxManager.onToggleItem(cell.value)}\n />\n </ContentCell>\n );\n }, [columnData.extraData?.checkboxManager]),\n width: 5,\n hideSortIndicator: true,\n disableGlobalFilter: true,\n disableSortBy: true\n }),\n\n [ColumnProperty.Order]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Order}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell extraClasses={`${styles.orderContainer} justify-content-center`}>\n <span className={styles.orderNumber}>\n {cell.row.index + 1}\n </span>\n <span className={styles.orderSortableIcon}>\n <SvgContainer\n svg={HandleSvg}\n size={SvgContainerSize.XXS}\n />\n </span>\n </ContentCell>\n ), []),\n width: 5,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Id]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Id}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n\n return (\n <ContentCell appLink={columnData.appLinks[column.type](cell.value)} openInNewTab={column.openInNewTab}>\n {cell.value?.id}\n </ContentCell>\n );\n }, []),\n width: 12,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.StatusSelector]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Status}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <StatusSelector\n actions={columnData.extraData?.getExtraAppLinkActions(cell.value)}\n dashboardId={cell.value.id}\n dashboardStatus={cell.value.status}\n disabled={columnData.extraData?.disableActions}\n />\n ), [columnData.extraData?.disableActions]),\n width: 20,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Status]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Status}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n return (\n <ContentCell>\n <Badge type={BadgeType.Status} data={cell.value}/>\n </ContentCell>\n );\n }, []),\n width: 20,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Thumbnail]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Thumbnail}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <div className={`${styles.thumbnail} cursor-pointer`}>\n <AppLink appLink={columnData.appLinks[column.type](cell.value)} openInNewTab>\n <VideoThumbnail\n video={cell.value}\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n extraClasses={styles.thumbnail}\n />\n </AppLink>\n </div>\n ), []),\n width: 15,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Title]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Title}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value) {\n return <ContentCell>N/A</ContentCell>;\n }\n\n return (\n <ContentCell appLink={columnData.appLinks?.[column.type]?.(cell.value)} openInNewTab={column.openInNewTab} appLinkClasses='text-truncate'>\n <div title={cell.value?.name}>\n {cell.value?.name}\n </div>\n </ContentCell>\n );\n }, []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.ContentRegion]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.ContentRegion}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{ClassificationMemberHelper.mapRegionToFriendlyName(cell.value.contentRegion)}</ContentCell>\n ), []),\n width: 15,\n hideSortIndicator: !column.sortable\n }),\n \n [ColumnProperty.LearningLevel]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.LearningLevel}`,\n Header: () => <HeaderCell title={ column.header ?? column.name}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n <LearningLevelLabel learningLevel={cell.value.learningLevel} />\n </ContentCell>\n ), []),\n width: 20,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.UserType]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.UserType}`,\n Header: () => <HeaderCell title={column.name}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{getDashboardUserTypeName(cell.value.userType)}</ContentCell>\n ), []),\n width: 15,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Rating]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Rating}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n <Badge type={BadgeType.Rating} data={cell.value} />\n </ContentCell>\n ), []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Description]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Description}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n <Tooltip title={cell.value ? cell.value?.description : 'N/A'} spanHack spanHackClassName='d-inline-block text-truncate w-100' tooltipClassName='tooltip-lg'>\n {cell.value ? cell.value?.description : 'N/A'}\n </Tooltip>\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.ProductionYear]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.ProductionYear}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{cell.value ? cell.value : 'N/A'}</ContentCell>\n ), []),\n sortType: 'basic',\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.DateBroadcast]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.DateBroadcast}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n sortType: 'basic',\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{cell.value ? new Date(Date.parse(cell.value)).toLocaleDateString() : 'N/A'}</ContentCell>\n ), []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.DateCreated]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.DateCreated}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n sortType: 'basic',\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{cell.value ? new Date(Date.parse(cell.value)).toLocaleDateString('en-AU') : 'N/A'}</ContentCell>\n ), []),\n width: column.width ?? 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.DateAssociated]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.DateAssociated}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n sortType: 'basic',\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{cell.value ? new Date(Date.parse(cell.value)).toLocaleDateString() : 'N/A'}</ContentCell>\n ), []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.DateModified]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.DateModified}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n sortType: 'basic',\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>{cell.value ? new Date(Date.parse(cell.value)).toLocaleDateString() : 'N/A'}</ContentCell>\n ), []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Type]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Type}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => <ContentCell>{cell.value}</ContentCell>, []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.ProductionCompanies]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.ProductionCompanies}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.productionCompanies?.data?.length)\n return <div>N/A</div>;\n\n return cell.value.productionCompanies.data.map((p: Company) => (\n <div key={p.id}>{p.name}</div>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Producers]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Producers}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.producers?.data?.length)\n return <div>N/A</div>;\n\n return cell.value.producers.data.map((p: Person) => (\n <div key={p.id}>{p.name}</div>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Distributors]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Distributors}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor.bind(this),\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.distributors?.data?.length)\n return <div>N/A</div>;\n\n return cell.value.distributors.data.map((p: Company) => (\n <div key={p.id}>{p.name}</div>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Directors]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Directors}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.directors?.data?.length)\n return <div>N/A</div>;\n\n return cell.value.directors.data.map((p: Person) => (\n <div key={p.id}>{p.name}</div>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable\n }),\n\n [ColumnProperty.Banner]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Banner}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n // Series has not been associated\n if (!cell.value)\n return <div className='d-flex align-items-center h-100'>N/A</div>;\n\n const bannerUrl = cell.value?.url;\n\n // Series is associated, but needs a banner\n if (!bannerUrl)\n return (\n <div className='d-flex align-items-center h-100'>\n <span className='text-danger'>Banner Missing</span>\n </div>\n );\n\n const bannerProps = {\n className: 'banner',\n src: `${bannerUrl}?height=100`\n };\n\n return <img {...bannerProps} />;\n }, []),\n width: 30,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Cover]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Cover}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n // Series has not been associated\n if (!cell.value)\n return <div className='d-flex align-items-center h-100'>N/A</div>;\n\n const coverUrl = cell.value?.url;\n\n // Series is associated, but needs a banner\n if (!coverUrl)\n return (\n <div className='d-flex align-items-center h-100'>\n <span className='text-danger'>Cover Missing</span>\n </div>\n );\n\n const coverProps = {\n className: 'cover',\n src: `${coverUrl}?height=100`\n };\n\n return <img {...coverProps} />;\n }, []),\n width: 30,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.TallPoster]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.TallPoster}`,\n Header: () => <HeaderCell title={`${column.type} ${column.name}`}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n // Series has not been associated\n if (!cell.value)\n return <div className='d-flex align-items-center h-100'>N/A</div>;\n\n const tallPosterUrl = cell.value?.url;\n\n // Series is associated, but needs a banner\n if (!tallPosterUrl)\n return (\n <div className='d-flex align-items-center h-100'>\n <span className='text-danger'>Tall Poster Missing</span>\n </div>\n );\n\n const bannerProps = {\n src: `${tallPosterUrl}?height=100`\n };\n\n return <img {...bannerProps} />;\n }, []),\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Audiences]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Audiences}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => {\n let mergedAudience = useMergeAudiences(\n cell.value?.subjectPresentationAudiences?.data,\n columnData.extraData?.allAudiences\n );\n\n /**\n * `mergedAudience` will be null if the video has audiences, but the presentation only has one audience.\n * This is due to the `AudienceHelper.showPresentationAudiences` function, which won't show audiences\n * for presentations with only one audience (like US Middle or High).\n * \n * But, in Curator, we want to show the audience anyway.\n */\n if (!mergedAudience && cell.value?.subjectPresentationAudiences?.data?.length)\n mergedAudience = ArrayHelper.first(cell.value?.subjectPresentationAudiences?.data);\n\n return React.useMemo(() => {\n if (!cell.value || MasterTypeHelper.isResource(cell.value))\n return <ContentCell>N/A</ContentCell>;\n\n return (\n <ContentCell appLink={columnData.appLinks[`${column.type}:${MatrixObjectType.Audience}`](cell.value)} openInNewTab>\n {mergedAudience ?\n <AudienceLabel audience={mergedAudience} border='dark' /> :\n <span className='text-danger'>Audience Missing</span>}\n </ContentCell>\n );\n }, []);\n },\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Pinned]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Pinned}`,\n Header: () => <HeaderCell title={column.name}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => {\n const pinnedVideo = columnData.extraData.pinnedVideoId;\n return React.useMemo(() => {\n if (cell.value !== pinnedVideo)\n return <></>;\n\n return (\n <div className='d-flex align-items-center h-100'>\n <div className='cursor-pointer text-success'>\n <SvgContainer\n title={`This ${column.type.toLowerCase()} is pinned`}\n svg={CheckCircleSvg}\n size={SvgContainerSize.Small}\n tooltipSpanHack\n />\n </div>\n </div>\n );\n }, [pinnedVideo]);\n },\n width: 10,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Visibility]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Visibility}`,\n Header: () => <HeaderCell title={column.name}/>,\n accessor: column.accessor,\n sortType: column?.sortType?.(),\n Cell: (cell: CellProps<any>) => {\n let isVisible: boolean;\n let hasVisibility: boolean = true;\n\n switch (column.type) {\n case MatrixObjectType.Video:\n isVisible = columnData.extraData.visibleVideos[cell.value];\n break;\n\n case MatrixObjectType.Series:\n isVisible = !!cell.value?.tallPoster?.url;\n break;\n \n case MatrixObjectType.Playlist:\n isVisible = !!cell.value?.cover?.url;\n break;\n\n case MatrixObjectType.Classification:\n hasVisibility = cell.value.shouldShowVisibility;\n isVisible = !!cell.value.visibility;\n break;\n }\n\n return (\n React.useMemo(() => (\n <div className='d-flex align-items-center h-100'>\n {hasVisibility ?\n <div className={`cursor-pointer ${isVisible ? 'text-success' : 'text-danger'}`}>\n <SvgContainer\n title={`This ${column.type.toLowerCase()} is ${isVisible ? 'visible' : 'invisible'} to users`}\n svg={isVisible ? VisibleOnSvg : VisibleOffSvg}\n size={SvgContainerSize.Small}\n tooltipSpanHack\n />\n </div> : <div><SvgContainer\n className='text-secondary svg-container'\n svg={MinusSvg}\n size={SvgContainerSize.Small}\n /></div>}\n </div>\n ), [ isVisible, hasVisibility ])\n );\n },\n width: 10,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.VideoSeriesCommonClassification]: (\n { column }: MappedColumnProps\n ): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.VideoSeriesCommonClassification}`,\n Header: () => <HeaderCell title={column.name}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => {\n const videoClassifications = cell.value?.subjectPresentationClassifications?.data?.reduce(\n (prev: HashObject, curr: Classification) => ({ ...prev, [curr.id]: curr.name }),\n {}\n ) ?? {};\n\n const commonClassifications = cell.value?.series?.subjectPresentationClassifications?.data?.filter(\n (c: Classification) => videoClassifications[c.id]\n ) ?? [];\n\n return (\n React.useMemo(() => {\n if (!cell.value?.series)\n return <ContentCell>N/A</ContentCell>;\n\n return (\n <div className='d-flex align-items-center h-100'>\n <div className={`cursor-pointer ${commonClassifications.length ? 'text-success' : 'text-danger'}`}>\n <SvgContainer\n title={`${commonClassifications.map((c: HashObject) => c.name).join('\\n')}`}\n svg={ commonClassifications.length ? CheckCircleSvg : CrossCircleSvg }\n size={SvgContainerSize.Small}\n tooltipSpanHack\n />\n </div>\n </div>\n );\n }, [commonClassifications.length])\n );\n },\n width: 15,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Libraries]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Libraries}`,\n Header: () => <HeaderCell title={ColumnProperty.Libraries}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell extraClasses='flex-column' alignment='start'>\n {(() => {\n if (!cell.value?.data?.length)\n return <div>N/A</div>;\n\n return cell.value?.data?.map((l: Library) => (\n <AppLink\n key={l.id}\n appLink={columnData.appLinks.library(l.id, l.type)}\n className='py-1'\n openInNewTab\n >\n {l.description || l.name}\n </AppLink>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 30,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Interactives]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Interactives}`,\n Header: () => <HeaderCell title={ColumnProperty.Interactives}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.data?.length)\n return <div>N/A</div>;\n\n return cell.value?.data?.map((i: Interactive) => (\n <div key={i.id}>{i.name}</div>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Subtitles]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Subtitles}`,\n Header: () => <HeaderCell title={ColumnProperty.Subtitles}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell>\n {(() => {\n if (!cell.value?.data?.length)\n return <div>N/A</div>;\n\n return cell.value?.data?.map((i: Subtitle) => (\n <a href={(i as any).url}key={i.id}>{i.language}</a>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Resources]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Resources}`,\n Header: () => <HeaderCell title={ColumnProperty.Resources}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <ContentCell extraClasses='flex-column' alignment='start'>\n {(() => {\n if (!cell.value?.data?.length)\n return <div>N/A</div>;\n\n return cell.value?.data?.map((i: Resource) => (\n <a className='py-1' href={i.url}key={i.id}>{i.name}</a>\n ));\n })()}\n </ContentCell>\n ), []),\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Actions]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: ColumnProperty.Actions,\n Header: () => <HeaderCell title={ColumnProperty.Actions}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => (\n <Actions\n actions={columnData.actions(cell.value)}\n actionsDropdownClassName='btn border border-dark p-1 rounded bg-transparent'\n />\n ), []),\n width: 10,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.Presentation]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Presentation}`,\n Header: () => <HeaderCell title={ColumnProperty.Presentation} />,\n accessor: column.accessor,\n sortType: column?.sortType?.(),\n Cell: (cell: CellProps<any>) => (\n React.useMemo(() => <ContentCell>{cell.value.presentation}</ContentCell>, [])\n ),\n width: 15,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n [ColumnProperty.PresentationDescription]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.PresentationDescription}`,\n Header: () => <HeaderCell title={column.header ?? ColumnProperty.PresentationDescription}/>,\n accessor: column.accessor,\n sortType: column?.sortType?.(),\n Cell: (cell: CellProps<any>) => (\n React.useMemo(() => <ContentCell>{cell.value.presentationDescription}</ContentCell>, [])\n ),\n width: 25,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n [ColumnProperty.Path]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Path}`,\n Header: () => <HeaderCell title={ColumnProperty.Path}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => (\n React.useMemo(() => <div className='h-100'>{cell.value.path?.map((p: string, i: number) => <div key={i}>{p}</div>)}</div>, [])\n ),\n width: 40,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n\n // Calendar\n [ColumnProperty.StartDate]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.StartDate}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n \n const convertToTimezone = TimezoneHelper.convertUTCToTimezoneDate(`${cell.value?.startDateTime}`, Timezone.ET);\n\n return (\n <ContentCell>\n {cell.value?.startDateTime && DateHelper.format(convertToTimezone, 'D/M/YYYY')}\n </ContentCell>\n );\n }, []),\n width: 15,\n hideSortIndicator: !column.sortable\n }),\n [ColumnProperty.Time]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.Time}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n\n const convertToTimezone = TimezoneHelper.convertUTCToTimezoneDate(`${cell.value?.startDateTime}`, Timezone.ET);\n\n return (\n <ContentCell>\n {cell.value?.startDateTime && DateHelper.format(convertToTimezone, 'h:mm a')}\n </ContentCell>\n );\n }, []),\n width: 10,\n hideSortIndicator: !column.sortable\n }),\n [ColumnProperty.EventName]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.EventName}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n\n return (\n <ContentCell>\n <div className='text-truncate'>\n {cell.value?.name}\n </div>\n </ContentCell>\n );\n }, []),\n width: 25,\n hideSortIndicator: !column.sortable\n }),\n [ColumnProperty.ProductionCompany]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.ProductionCompany}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n\n return (\n <ContentCell>\n <div className='text-truncate'>\n {cell.value?.name}\n </div>\n </ContentCell>\n );\n }, []),\n width: 20,\n hideSortIndicator: !column.sortable\n }),\n [ColumnProperty.CuratedTopics]: ({ column }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.CuratedTopics}`,\n Header: () => <HeaderCell title={column.header ?? ColumnProperty.CuratedTopics}/>,\n accessor: column.accessor,\n Cell: (cell: CellProps<MatrixMember>) => React.useMemo(() => (\n <ContentCell extraClasses='flex-column' alignment='start'>\n {(() => {\n if (!cell.value)\n return <div>N/A</div>;\n const videoId = cell.row.original.id;\n return (\n <a className='info-link' key={videoId} href={`${window.location.origin}/manage/videos/${videoId}/curated-topics`} target='_blank' rel='noreferrer'>\n View {cell.value} curated topics\n </a>\n );\n })()}\n </ContentCell>\n ), []),\n width: 20,\n hideSortIndicator: !column.sortable,\n disableGlobalFilter: true\n }),\n [ColumnProperty.LivestreamLinks]: ({ column, columnData }: MappedColumnProps): Column<MatrixMember> => ({\n id: `${column.type}:${ColumnProperty.LivestreamLinks}`,\n Header: () => <HeaderCell title={column.header ?? `${column.type} ${column.name}`} />,\n accessor: column.accessor,\n Cell: (cell: CellProps<any>) => React.useMemo(() => {\n if (!cell.value)\n return <ContentCell>N/A</ContentCell>;\n \n const hasLinks =\n cell.value?.pastRecordingMasterId ||\n cell.value?.recordingMasterId ||\n cell.value?.livestreamUrl ||\n cell.value?.registrationUrl;\n\n return (\n <ContentCell\n appLink={hasLinks && columnData.appLinks[column.type](cell.value)}\n appLinkClasses='text-info'\n openInNewTab={column.openInNewTab}\n >\n {hasLinks && 'View'}\n </ContentCell>\n );\n }, []),\n width: 10,\n hideSortIndicator: !column.sortable\n })\n};\n\nexport function BuildColumns(props: TableColumnProps): Column<MatrixMember>[] {\n const mappedColumns: Column<MatrixMember>[] = [];\n\n for (const col of props.columns) {\n const column = Columns[col.name];\n if (typeof column !== 'function')\n continue;\n\n mappedColumns.push(column({ ...props, column: col }));\n }\n\n return mappedColumns;\n}\n","import { Row } from 'react-table';\n\nimport { MatrixMember } from 'shared/components';\n\nexport const MemberMatrixSortHelper = {\n sortByName(id: string, memberKey: string) {\n return (rowA: Row<MatrixMember>, rowB: Row<MatrixMember>) => {\n const nameA = rowA.values[id][memberKey];\n const nameB = rowB.values[id][memberKey];\n return nameA > nameB ? 1 : -1;\n };\n },\n\n sortByVisibility(id: string) {\n return (rowA: Row<MatrixMember>, rowB: Row<MatrixMember>) => {\n if ('shouldShowVisibility' in rowA.values[id]) {\n const hasVisibilityA = rowA.values[id].shouldShowVisibility;\n const hasVisibilityB = rowB.values[id].shouldShowVisibility;\n if (!(hasVisibilityA && hasVisibilityB)) {\n return hasVisibilityA ? -1 : 1;\n }\n }\n\n const visibleA = rowA.values[id].visibility;\n return visibleA ? -1 : 1;\n };\n }\n};\n","import { Classification, Clip, Company, CuratedDashboard, InteractiveMetadata, Livestream, Playlist, Series, Video } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { SYSTEM_GENERATED_DESCRIPTION } from 'shared/constants/Dashboard';\nimport { ColumnProperty, MatrixObjectType } from 'shared/enums';\nimport { MatrixColumn, MutableMatrixColumns } from 'shared/interfaces';\nimport { ContentPartnerProfile } from 'shared/interfaces/models/ContentPartnerProfile';\nimport { MemberMatrixSortHelper } from 'shared/utils/MemberMatrixSortHelper';\n\nexport enum DefinedColumnSet {\n ClassificationVideos = 'classificationVideoColumnSet',\n ClassificationSeries = 'classificationSeriesColumnSet',\n ClassificationPlaylists = 'classificationPlaylistsColumnSet',\n ClassificationClips = 'classificationClipsColumnSet',\n ClassificationInteractives = 'classificationInteractivesColumnSet',\n VideoClassificationMapping = 'videoClassificationMappingColumnSet',\n WorkbenchVideos = 'workbenchVideoColumnSet',\n ClassificationDashboard = 'classificationDashboardColumnSet',\n DiscoverDashboard = 'discoverDashboardColumnSet',\n MoviesAndTvDashboard = 'moviesAndTvDashboardColumnSet',\n WidgetVideos = 'widgetVideosColumnSet',\n WidgetClassifications = 'widgetClassificationsColumnSet',\n WidgetSeries = 'widgetSeriesColumnSet',\n WidgetPlaylists = 'WidgetPlaylistsColumnSet',\n WidgetCompanies = 'widgetCompaniesColumnSet',\n ObjectClassificationMapping = 'objectClassificationMappingColumnSet',\n VideoPlaylists = 'videoPlaylistsColumnSet',\n CompanyDashboard = 'companyDashboardSet',\n CvLiveDashboard = 'streamableLearningDashboardSet',\n Livestreams = 'livestreamsSet',\n VideoCuratedTopics = 'VideoCuratedTopicsSet',\n WidgetContentPartners = 'widgetContentPartnersSet',\n ContentPartnerVideos = 'contentPartnerVideosSet',\n ContentPartnerSeries = 'contentPartnerSeriesSet'\n}\n\nenum ColNames {\n Checkbox = 'checkbox',\n Id = 'id',\n Title = 'title',\n Visibility = 'visibility',\n Actions = 'actions',\n Order = 'order',\n Audiences = 'audiences',\n Status = 'status',\n Rating = 'rating',\n Thumbnail = 'thumbnail',\n Description = 'description',\n Libraries = 'libraries',\n Interactives = 'interactives',\n Subtitles = 'subtitles',\n Resources = 'resources',\n ProductionYear = 'productionYear',\n DateCreated = 'dateCreated',\n DateAssociated = 'dateAssociated',\n Pinned = 'pinned',\n SeriesId = 'seriesId',\n VideoSeriesIsAssociated = 'videoSeriesIsAssociated',\n SeriesTitle = 'seriesTitle',\n SeriesDescription = 'seriesDescription',\n SeriesAudiences = 'seriesAudiences',\n SeriesTallPoster = 'seriesTallPoster',\n SeriesBanner = 'seriesBanner',\n CuratedTopic = 'CuratedTopic',\n Presentation = 'presentation',\n PresentationDescription = 'presentationDescription',\n Path = 'path',\n TallPoster = 'tallPoster',\n Banner = 'banner',\n Cover = 'cover',\n LearningLevel = 'learningLevel',\n ContentRegion = 'contentRegion',\n UserType = 'userType',\n StatusSelector = 'statusSelector',\n VideoType = 'videoType',\n\n // Calendar\n StartDate = 'startDate',\n Time = 'time',\n EventName = 'eventName',\n ProductionCompany = 'company',\n LivestreamLinks = 'livestreamLinks'\n}\n\ninterface PredefinedColumns {\n [prop: string]: MatrixColumn;\n}\n\ninterface MatrixColsConfig {\n type: MatrixObjectType;\n mutableMatrixColumns: MutableMatrixColumns;\n defaultAccessor: (data: any) => any;\n}\n\nconst buildPredefinedMatrixCols = (\n matrixColsConfigs: MatrixColsConfig | MatrixColsConfig[]\n): PredefinedColumns => {\n if (!Array.isArray(matrixColsConfigs)) {\n matrixColsConfigs = [matrixColsConfigs];\n }\n\n return matrixColsConfigs.reduce((results, matrixColsConfig) => {\n const { type, mutableMatrixColumns } = matrixColsConfig;\n const matrixColumn: PredefinedColumns = {};\n \n for (const [ columnName, mutableColumn ] of Object.entries(mutableMatrixColumns)) {\n const id = `${type}:${mutableColumn.name}`;\n\n matrixColumn[columnName] = {\n id,\n type,\n // to be override\n name: null\n };\n\n if (mutableColumn.sortTypeFn && typeof mutableColumn.sortTypeFn === 'function') {\n matrixColumn[columnName].sortType = () => mutableColumn.sortTypeFn(id);\n }\n \n Object.assign(matrixColumn[columnName], {\n visible: true,\n sortable: false,\n accessor: matrixColsConfig.defaultAccessor,\n ...mutableColumn\n });\n }\n \n return { ...results, ...matrixColumn };\n }, {});\n};\n\n// TODO: use const for mutableMatrixColumns keys\nconst PREDEFINED_OBJECT_CLASSIFICATION_MAPPING_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Classification,\n mutableMatrixColumns: {\n [ColNames.Presentation]: {\n name: ColumnProperty.Presentation,\n sortable: true,\n sortType: function() {\n return MemberMatrixSortHelper.sortByName(this.id, 'presentation');\n }\n },\n presentationDescription: {\n name: ColumnProperty.PresentationDescription,\n sortable: true,\n sortType: function() {\n return MemberMatrixSortHelper.sortByName(this.id, 'presentationDescription');\n }\n },\n path: {\n name: ColumnProperty.Path\n },\n visibility: {\n name: ColumnProperty.Visibility,\n sortable: true,\n sortType: function () {\n return MemberMatrixSortHelper.sortByVisibility(this.id);\n }\n },\n actions: {\n name: ColumnProperty.Actions\n }\n },\n defaultAccessor: (c: Classification) => c\n});\n\nconst PREDEFINED_VIDEO_CLASSIFICATION_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Classification,\n defaultAccessor: (c: Classification) => c,\n mutableMatrixColumns: {\n [ColNames.Presentation]: {\n name: ColumnProperty.Presentation,\n sortable: true,\n sortTypeFn: (id: string) => MemberMatrixSortHelper.sortByName(id, 'presentation')\n },\n [ColNames.PresentationDescription]: {\n name: ColumnProperty.PresentationDescription,\n sortable: true,\n sortTypeFn: (id: string) => MemberMatrixSortHelper.sortByName(id, 'presentationDescription')\n },\n [ColNames.Path]: {\n name: ColumnProperty.Path\n },\n [ColNames.Visibility]: {\n name: ColumnProperty.Visibility,\n sortable: true,\n sortTypeFn: (id: string) => MemberMatrixSortHelper.sortByVisibility(id)\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions,\n accessor: (v: Video) => v\n }\n }\n});\n\nconst PREDEFINED_VIDEO_COLS: PredefinedColumns = buildPredefinedMatrixCols([{\n type: MatrixObjectType.Video,\n defaultAccessor: (v: Video) => v,\n mutableMatrixColumns: {\n [ColNames.Checkbox]: {\n name: ColumnProperty.Checkbox,\n accessor: (v: Video) => v.id\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id\n },\n [ColNames.Status]: {\n name: ColumnProperty.Status,\n visible: false,\n accessor: (v: Video) => v.status\n },\n [ColNames.Thumbnail]: {\n name: ColumnProperty.Thumbnail,\n visible: false\n },\n [ColNames.Rating]: {\n name: ColumnProperty.Rating,\n visible: false,\n accessor: (v: Video) => VideoHelper.getRating(v)\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n visible: false\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences\n },\n [ColNames.ProductionYear]: {\n name: ColumnProperty.ProductionYear,\n visible: false,\n sortable: true,\n accessor: (v: Video) => v.productionYear\n },\n [ColNames.DateCreated]: {\n name: ColumnProperty.DateCreated,\n visible: false,\n sortable: true,\n accessor: (v: Video) => v.dateCreated\n },\n [ColNames.DateAssociated]: {\n name: ColumnProperty.DateAssociated,\n visible: false,\n sortable: true,\n accessor: (v: Video) => v.dateAssociated\n },\n [ColNames.Pinned]: {\n name: ColumnProperty.Pinned,\n accessor: (v: Video) => v.id\n },\n [ColNames.Visibility]: {\n name: ColumnProperty.Visibility,\n accessor: (v: Video) => v.id\n },\n [ColNames.Libraries]: {\n name: ColumnProperty.Libraries,\n visible: false,\n accessor: (v: Video) => v.libraries\n },\n [ColNames.Interactives]: {\n name: ColumnProperty.Interactives,\n visible: false,\n accessor: (v: Video) => v.interactives\n },\n [ColNames.Subtitles]: {\n name: ColumnProperty.Subtitles,\n visible: false,\n accessor: (v: Video) => v.subtitles\n },\n [ColNames.Resources]: {\n name: ColumnProperty.Resources,\n visible: false,\n accessor: (v: Video) => v.resources\n },\n [ColNames.VideoSeriesIsAssociated]: {\n name: ColumnProperty.VideoSeriesCommonClassification,\n visible: false\n },\n [ColNames.CuratedTopic]: {\n name: ColumnProperty.CuratedTopics,\n visible: true,\n accessor: (v: Video) => {\n return v.dashboardCount;\n }\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n}, {\n type: MatrixObjectType.Series,\n defaultAccessor: (v: Video) => v?.series,\n mutableMatrixColumns: {\n [ColNames.SeriesId]: {\n name: ColumnProperty.Id,\n visible: false\n },\n [ColNames.SeriesTitle]: {\n name: ColumnProperty.Title\n },\n [ColNames.SeriesDescription]: {\n name: ColumnProperty.Description,\n visible: false\n },\n [ColNames.SeriesAudiences]: {\n name: ColumnProperty.Audiences\n },\n [ColNames.SeriesTallPoster]: {\n name: ColumnProperty.TallPoster,\n visible: false,\n accessor: (v: Video) => v?.series?.tallPoster\n },\n [ColNames.SeriesBanner]: {\n name: ColumnProperty.Banner,\n visible: false,\n accessor: (v: Video) => v?.series?.banner\n }\n }\n}]);\n\nconst PREDEFINED_SERIES_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Series,\n defaultAccessor: (s: Series) => s,\n mutableMatrixColumns: {\n [ColNames.Checkbox]: {\n name: ColumnProperty.Checkbox,\n accessor: (s: Series) => s.id\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title\n },\n [ColNames.Rating]: {\n name: ColumnProperty.Rating,\n visible: false\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n visible: false\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences\n },\n [ColNames.DateCreated]: {\n name: ColumnProperty.DateCreated,\n visible: false,\n accessor: (s: Series) => s.dateCreated\n },\n [ColNames.Visibility]: {\n name: ColumnProperty.Visibility\n },\n [ColNames.TallPoster]: {\n name: ColumnProperty.TallPoster,\n visible: false,\n accessor: (s: Series) => s?.tallPoster\n },\n [ColNames.Banner]: {\n name: ColumnProperty.Banner,\n visible: false,\n accessor: (s: Series) => s?.banner\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_PLAYLIST_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Playlist,\n defaultAccessor: (p: Playlist) => p,\n mutableMatrixColumns: {\n [ColNames.Id]: {\n name: ColumnProperty.Id\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n visible: false\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences\n },\n [ColNames.Visibility]: {\n name: ColumnProperty.Visibility\n },\n [ColNames.Cover]: {\n name: ColumnProperty.Cover,\n visible: false,\n accessor: (p: Playlist) => p?.cover\n },\n [ColNames.Banner]: {\n name: ColumnProperty.Banner,\n visible: false,\n accessor: (p: Playlist) => p?.banner\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_CLIP_COLS: PredefinedColumns = {\n id: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Id,\n visible: true,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n title: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Title,\n visible: true,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n description: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Description,\n visible: false,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n audiences: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Audiences,\n visible: true,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n thumbnail: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Thumbnail,\n visible: false,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n actions: {\n type: MatrixObjectType.Clip,\n name: ColumnProperty.Actions,\n visible: true,\n sortable: false,\n accessor: (c: Clip) => c,\n get id() {\n return `${this.type}:${this.name}`;\n }\n }\n};\n\nconst PREDEFINED_INTERACTIVE_COLS: PredefinedColumns = {\n id: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Id,\n visible: true,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n title: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Title,\n visible: true,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n description: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Description,\n visible: false,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n audiences: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Audiences,\n visible: true,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n thumbnail: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Thumbnail,\n visible: false,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n },\n actions: {\n type: MatrixObjectType.Interactive,\n name: ColumnProperty.Actions,\n visible: true,\n sortable: false,\n accessor: (int: InteractiveMetadata) => int,\n get id() {\n return `${this.type}:${this.name}`;\n }\n }\n};\n\nconst PREDEFINED_CURATED_TOPICS_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Dashboard,\n defaultAccessor: (d: CuratedDashboard) => d,\n mutableMatrixColumns: {\n [ColNames.PresentationDescription]: {\n name: ColumnProperty.PresentationDescription,\n header: 'Presentation'\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title\n },\n [ColNames.UserType]: {\n name: ColumnProperty.UserType\n },\n [ColNames.LearningLevel]: {\n name: ColumnProperty.LearningLevel\n },\n [ColNames.DateCreated]: {\n name: ColumnProperty.DateCreated,\n accessor: (d: CuratedDashboard) => d.dateCreated,\n header: 'Date Created',\n width: 15\n },\n [ColNames.Status]: {\n name: ColumnProperty.Status,\n accessor: (d: CuratedDashboard) => d.status\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_DASHBOARD_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Dashboard,\n defaultAccessor: (d: CuratedDashboard) => d,\n mutableMatrixColumns: {\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Internal name'\n },\n [ColNames.LearningLevel]: {\n name: ColumnProperty.LearningLevel\n },\n [ColNames.ContentRegion]: {\n name: ColumnProperty.ContentRegion,\n header: 'Region'\n },\n [ColNames.UserType]: {\n name: ColumnProperty.UserType\n },\n [ColNames.StatusSelector]: {\n name: ColumnProperty.StatusSelector,\n header: 'Status'\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n header: 'Internal description',\n accessor: (d: CuratedDashboard) => (CuratedDashboardHelper.isSystemGeneratedDashboard(d.widgets) ?\n { ...d, description: SYSTEM_GENERATED_DESCRIPTION } :\n d\n )\n },\n [ColNames.DateCreated]: {\n name: ColumnProperty.DateCreated,\n header: 'Date Created',\n accessor: (d: CuratedDashboard) => d.dateCreated,\n width: 15\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_WIDGET_VIDEO_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Video,\n defaultAccessor: (v: Video) => v,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Name',\n openInNewTab: true\n },\n [ColNames.VideoType]: {\n name: ColumnProperty.Type,\n accessor: (v: Video) => `${v.type.charAt(0).toUpperCase()}${(v.type.slice(1))}`,\n header: 'Type'\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences,\n header: 'Audience',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_WIDGET_CLASSIFICATION_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Classification,\n defaultAccessor: (c: Classification) => c,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n accessor: (v: Video) => v,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Topics',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_WIDGET_SERIES_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Series,\n defaultAccessor: (s: Series) => s,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n accessor: (v: Video) => v,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences,\n header: 'Audience',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Series',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_WIDGET_PLAYLIST_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Playlist,\n defaultAccessor: (p: Playlist) => p,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n accessor: (v: Video) => v,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Audiences]: {\n name: ColumnProperty.Audiences,\n header: 'Audience',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Playlist',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_WIDGET_COMPANY_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Company,\n defaultAccessor: (c: Company) => c,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n accessor: (v: Video) => v,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Network',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_EVENT_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.Livestream,\n defaultAccessor: (w: Livestream) => w,\n mutableMatrixColumns: {\n [ColNames.StartDate]: {\n name: ColumnProperty.StartDate,\n header: 'Start date'\n },\n [ColNames.Time]: {\n name: ColumnProperty.Time,\n header: 'Time'\n },\n [ColNames.EventName]: {\n name: ColumnProperty.EventName,\n header: 'Event name'\n },\n [ColNames.ProductionCompany]: {\n name: ColumnProperty.ProductionCompany,\n header: 'Content partner',\n accessor: (w: Livestream) => w.company\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n header: 'Description'\n },\n [ColNames.LivestreamLinks]: {\n name: ColumnProperty.LivestreamLinks,\n header: 'Links'\n },\n [ColNames.StatusSelector]: {\n name: ColumnProperty.StatusSelector,\n header: 'Status'\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\nconst PREDEFINED_CONTENT_PARTNER_COLS: PredefinedColumns = buildPredefinedMatrixCols({\n type: MatrixObjectType.ContentPartner,\n defaultAccessor: (w: ContentPartnerProfile) => w,\n mutableMatrixColumns: {\n [ColNames.Order]: {\n name: ColumnProperty.Order,\n accessor: (v: Video) => v,\n header: '#'\n },\n [ColNames.Id]: {\n name: ColumnProperty.Id,\n header: 'ID',\n openInNewTab: true\n },\n [ColNames.Title]: {\n name: ColumnProperty.Title,\n header: 'Content partner',\n openInNewTab: true\n },\n [ColNames.Description]: {\n name: ColumnProperty.Description,\n header: 'Description',\n openInNewTab: true\n },\n [ColNames.Actions]: {\n name: ColumnProperty.Actions\n }\n }\n});\n\ninterface ColumnSetsConfig {\n predefinedCols: PredefinedColumns;\n useColNames: string[];\n}\n\nconst createColumnSets = (columnSetsConfigs: ColumnSetsConfig | ColumnSetsConfig[]) => {\n if (!Array.isArray(columnSetsConfigs)) {\n columnSetsConfigs = [columnSetsConfigs];\n }\n\n return columnSetsConfigs.reduce((result, columnSetInput) => {\n const { predefinedCols, useColNames } = columnSetInput;\n\n return [\n ...result,\n ...useColNames.map(field => (predefinedCols[field]))\n ];\n }, []);\n};\n\nconst COLUMN_SETS: Record<DefinedColumnSet, MatrixColumn[]> = {\n [DefinedColumnSet.ClassificationVideos]: createColumnSets({\n predefinedCols: PREDEFINED_VIDEO_COLS,\n useColNames: [\n ColNames.Checkbox,\n ColNames.Id,\n ColNames.Status,\n ColNames.Rating,\n ColNames.Thumbnail,\n ColNames.Title,\n ColNames.Description,\n ColNames.Audiences,\n ColNames.Libraries,\n ColNames.Interactives,\n ColNames.Subtitles,\n ColNames.Resources,\n ColNames.ProductionYear,\n ColNames.DateCreated,\n ColNames.DateAssociated,\n ColNames.Pinned,\n ColNames.Visibility,\n ColNames.SeriesId,\n ColNames.VideoSeriesIsAssociated,\n ColNames.SeriesTitle,\n ColNames.SeriesDescription,\n ColNames.SeriesAudiences,\n ColNames.SeriesTallPoster,\n ColNames.SeriesBanner,\n ColNames.CuratedTopic,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.ClassificationSeries]: createColumnSets({\n predefinedCols: PREDEFINED_SERIES_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Rating,\n ColNames.Title,\n ColNames.Description,\n ColNames.Audiences,\n ColNames.DateCreated,\n ColNames.Visibility,\n ColNames.TallPoster,\n ColNames.Banner,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.ClassificationPlaylists]: createColumnSets({\n predefinedCols: PREDEFINED_PLAYLIST_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.Audiences,\n ColNames.Visibility,\n ColNames.Cover,\n ColNames.Banner,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.VideoClassificationMapping]: createColumnSets({\n predefinedCols: PREDEFINED_VIDEO_CLASSIFICATION_COLS,\n useColNames: [\n ColNames.Presentation,\n ColNames.PresentationDescription,\n ColNames.Path,\n ColNames.Visibility,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.WorkbenchVideos]: createColumnSets({\n predefinedCols: PREDEFINED_VIDEO_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Status,\n ColNames.Rating,\n ColNames.Thumbnail,\n ColNames.Title,\n ColNames.Description,\n ColNames.Libraries,\n ColNames.Interactives,\n ColNames.Subtitles,\n ColNames.Resources,\n ColNames.ProductionYear,\n ColNames.DateCreated,\n ColNames.SeriesId,\n ColNames.SeriesTitle,\n ColNames.SeriesDescription,\n ColNames.SeriesTallPoster,\n ColNames.SeriesBanner,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.ClassificationDashboard]: createColumnSets({\n predefinedCols: PREDEFINED_DASHBOARD_COLS,\n useColNames: [\n ColNames.Title,\n ColNames.Description,\n ColNames.ContentRegion,\n ColNames.UserType,\n ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.StatusSelector,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.WidgetVideos]: createColumnSets({\n predefinedCols: PREDEFINED_WIDGET_VIDEO_COLS,\n useColNames: [\n ColNames.Order,\n ColNames.Id,\n ColNames.Title,\n ColNames.VideoType,\n ColNames.Audiences,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.WidgetClassifications]: createColumnSets({\n predefinedCols: PREDEFINED_WIDGET_CLASSIFICATION_COLS,\n useColNames: [\n ColNames.Order,\n ColNames.Id,\n ColNames.Title,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.WidgetSeries]: createColumnSets({\n predefinedCols: PREDEFINED_WIDGET_SERIES_COLS,\n useColNames: [\n ColNames.Order,\n ColNames.Id,\n ColNames.Title,\n ColNames.Audiences,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.WidgetPlaylists]: createColumnSets({\n predefinedCols: PREDEFINED_WIDGET_PLAYLIST_COLS,\n useColNames: [\n ColNames.Order,\n ColNames.Id,\n ColNames.Title,\n ColNames.Audiences,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.WidgetCompanies]: createColumnSets({\n predefinedCols: PREDEFINED_WIDGET_COMPANY_COLS,\n useColNames: [\n ColNames.Order,\n ColNames.Title,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.ClassificationClips]: createColumnSets({\n predefinedCols: PREDEFINED_CLIP_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.Audiences,\n ColNames.Thumbnail,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.ClassificationInteractives]: createColumnSets({\n predefinedCols: PREDEFINED_INTERACTIVE_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.Audiences,\n ColNames.Thumbnail,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.DiscoverDashboard]: createColumnSets({\n predefinedCols: PREDEFINED_DASHBOARD_COLS,\n useColNames: [\n ColNames.Title,\n ColNames.Description,\n ColNames.ContentRegion,\n ColNames.UserType,\n ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.StatusSelector,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.MoviesAndTvDashboard]: createColumnSets({\n predefinedCols: PREDEFINED_DASHBOARD_COLS,\n useColNames: [\n ColNames.Title,\n ColNames.Description,\n ColNames.ContentRegion,\n ColNames.UserType,\n ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.StatusSelector,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.ObjectClassificationMapping]: createColumnSets({\n predefinedCols: PREDEFINED_OBJECT_CLASSIFICATION_MAPPING_COLS,\n useColNames: [\n ColNames.Presentation,\n ColNames.PresentationDescription,\n ColNames.Path,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.VideoPlaylists]: createColumnSets({\n predefinedCols: PREDEFINED_PLAYLIST_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.Cover,\n ColNames.Banner,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.CompanyDashboard]: createColumnSets({\n predefinedCols: PREDEFINED_DASHBOARD_COLS,\n useColNames: [\n ColNames.Title,\n ColNames.Description,\n ColNames.ContentRegion,\n ColNames.UserType,\n ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.StatusSelector,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.WidgetContentPartners]: createColumnSets({\n predefinedCols: PREDEFINED_CONTENT_PARTNER_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.CvLiveDashboard]: createColumnSets({\n predefinedCols: PREDEFINED_DASHBOARD_COLS,\n useColNames: [\n ColNames.Title,\n ColNames.Description,\n // ColNames.ContentRegion,\n // ColNames.UserType,\n // ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.StatusSelector,\n ColNames.Actions\n ]}),\n [DefinedColumnSet.Livestreams]: createColumnSets({\n predefinedCols: PREDEFINED_EVENT_COLS,\n useColNames: [\n ColNames.StartDate,\n ColNames.Time,\n ColNames.ProductionCompany,\n ColNames.EventName,\n ColNames.Description,\n ColNames.LivestreamLinks,\n ColNames.StatusSelector,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.VideoCuratedTopics]: createColumnSets({\n predefinedCols: PREDEFINED_CURATED_TOPICS_COLS,\n useColNames: [\n ColNames.PresentationDescription,\n ColNames.Title,\n ColNames.UserType,\n ColNames.LearningLevel,\n ColNames.DateCreated,\n ColNames.Status,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.ContentPartnerVideos]: createColumnSets({\n predefinedCols: PREDEFINED_VIDEO_COLS,\n useColNames: [\n ColNames.Checkbox,\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.SeriesId,\n ColNames.SeriesTitle,\n ColNames.Rating,\n ColNames.Status,\n ColNames.Thumbnail,\n ColNames.Actions\n ]\n }),\n [DefinedColumnSet.ContentPartnerSeries]: createColumnSets({\n predefinedCols: PREDEFINED_SERIES_COLS,\n useColNames: [\n ColNames.Id,\n ColNames.Title,\n ColNames.Description,\n ColNames.DateCreated,\n ColNames.TallPoster,\n ColNames.Banner,\n ColNames.Actions\n ]\n })\n};\n\n/**\n * To add a new table, you would need to define a new item in `COLUMN_SETS` constant by using `createColumnSets` function\n * You can use `useColNames` to choose the columns that are already defined in predefined constants. e.g. PREDEFINED_WIDGET_SERIES_COLS\n * To add a new column, add in one of the predefined constants with the required `name` property.\n * \n * Note: All column are default to be visible and unsortable.\n*/\nexport const MemberMatrixHelper = {\n getColumnSet(columnSet: DefinedColumnSet): MatrixColumn[] {\n return COLUMN_SETS[columnSet];\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,r,t as i}from"./DBAwgllB.chunk.js";import{t as a}from"./D-JsEiDq2.chunk.js";import{t as o}from"./BT15PHGF.chunk.js";import{t as s}from"./BkdBq-7h.chunk.js";import{d as c,s as l,u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./Bwpvc7Th2.chunk.js";import{t as f}from"./CZyPFSXo.chunk.js";import{t as p}from"./puobgAYi.chunk.js";import{t as m}from"./Dh5DbdtP.chunk.js";import{t as h}from"./dKyhMawf.chunk.js";import{t as g}from"./CUVnn-Rk.chunk.js";import{t as _}from"./BYiE7xZS2.chunk.js";e();var v=t(),y=o.encloseNamespace(`cvLive.addLivestream`);function b(e){let t=u(),o=d(),b=c(),{updateAudiences:x,updateClassifications:S}=i(),C=l(g.cvLivePresentation()),w=l(C.data&&f.presentationAudiences(C.data.id)),T=l(C.data&&f.getClassificationTree(C.data.id));async function E(n){let r=p.convertToUTCString(`${n.startDate}T${n.startTime}`),i=s.add(r,+n.duration,`minutes`).toISOString();try{let e=await t(_.addLivestream({companyMasterId:n.contentPartner,description:n.description,startDateTime:r,endDateTime:i,name:n.name,pastRecordingMasterId:n.pastRecordingMasterId,presentationId:C.data.id,recordingMasterId:n.recordingMasterId,registrationUrl:n.registrationUrl,timezone:n.timezone,livestreamUrl:m.buildLivestreamUrl(n.livestreamUrlId)}));await x(e,n.audiences,w.data),await S(e,n.classifications,T.data),b([`cv-live:livestreams`,`cv-live:livestream`]),o.success(y(`success`))}catch{o.error(y(`error`))}e.closePopup()}let D=w.data&&C.data&&T.data;return(0,v.jsx)(a,{title:`Add livestream`,closePopup:e.closePopup,backdrop:`static`,showLoadingSpinner:!D,children:(0,v.jsx)(h,{initialValues:{name:``,contentPartner:``,startDate:``,startTime:``,duration:``,timezone:`Eastern Standard Time`,description:``,recordingMasterId:``,pastRecordingMasterId:``,livestreamUrlId:``,registrationUrl:``,audiences:[],classifications:[]},validationSchema:r(),onSubmit:E,children:D&&(0,v.jsx)(n,{closePopup:e.closePopup,audiences:w.data,presentation:C.data,classificationTree:T.data})})})}export{b as CvLiveAddLivestreamView};
2
- //# sourceMappingURL=B6dlmRQL.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{n,r,t as i}from"./DArfNv9S.chunk.js";import{t as a}from"./D-JsEiDq2.chunk.js";import{t as o}from"./BT15PHGF.chunk.js";import{t as s}from"./BkdBq-7h.chunk.js";import{d as c,s as l,u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./Bwpvc7Th2.chunk.js";import{t as f}from"./CZyPFSXo.chunk.js";import{t as p}from"./CBq4vrjT.chunk.js";import{t as m}from"./lAvSm0ti.chunk.js";import{t as h}from"./dKyhMawf.chunk.js";import{t as g}from"./CUVnn-Rk.chunk.js";import{t as _}from"./BYiE7xZS2.chunk.js";e();var v=t(),y=o.encloseNamespace(`cvLive.addLivestream`);function b(e){let t=u(),o=d(),b=c(),{updateAudiences:x,updateClassifications:S}=i(),C=l(g.cvLivePresentation()),w=l(C.data&&f.presentationAudiences(C.data.id)),T=l(C.data&&f.getClassificationTree(C.data.id));async function E(n){let r=p.convertToUTCString(`${n.startDate}T${n.startTime}`),i=s.add(r,+n.duration,`minutes`).toISOString();try{let e=await t(_.addLivestream({companyMasterId:n.contentPartner,description:n.description,startDateTime:r,endDateTime:i,name:n.name,pastRecordingMasterId:n.pastRecordingMasterId,presentationId:C.data.id,recordingMasterId:n.recordingMasterId,registrationUrl:n.registrationUrl,timezone:n.timezone,livestreamUrl:m.buildLivestreamUrl(n.livestreamUrlId)}));await x(e,n.audiences,w.data),await S(e,n.classifications,T.data),b([`cv-live:livestreams`,`cv-live:livestream`]),o.success(y(`success`))}catch{o.error(y(`error`))}e.closePopup()}let D=w.data&&C.data&&T.data;return(0,v.jsx)(a,{title:`Add livestream`,closePopup:e.closePopup,backdrop:`static`,showLoadingSpinner:!D,children:(0,v.jsx)(h,{initialValues:{name:``,contentPartner:``,startDate:``,startTime:``,duration:``,timezone:`Eastern Standard Time`,description:``,recordingMasterId:``,pastRecordingMasterId:``,livestreamUrlId:``,registrationUrl:``,audiences:[],classifications:[]},validationSchema:r(),onSubmit:E,children:D&&(0,v.jsx)(n,{closePopup:e.closePopup,audiences:w.data,presentation:C.data,classificationTree:T.data})})})}export{b as CvLiveAddLivestreamView};
2
+ //# sourceMappingURL=C0UYMHUe.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"B6dlmRQL.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/add-livestream/CvLiveAddLivestreamView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Livestream, Presentation, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { ClassificationTree } from 'shared/interfaces';\n\nimport { getLivestreamValidationSchema, LivestreamForm, LivestreamFormValues } from 'apps/cv-live/components/livestream-form/LivestreamForm';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\nimport { useUpdateLivestream } from 'apps/cv-live/hooks/useUpdateLivestream';\nimport { LivestreamHelper } from 'apps/cv-live/utils/LivestreamHelper';\n\nconst namespace = 'cvLive.addLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CvLiveAddLivestreamViewProps extends PopupProps {}\n\nexport function CvLiveAddLivestreamView(props: CvLiveAddLivestreamViewProps) {\n const fetchAsync = useGetFetchAsync();\n const alerts = useAlerts();\n const invalidate = Flight.useGetInvalidate();\n\n const { updateAudiences, updateClassifications } = useUpdateLivestream();\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.cvLivePresentation()\n );\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n presentation.data && SubjectRequests.presentationAudiences(presentation.data.id)\n );\n\n const classificationTree = Flight.useBasicFetch<ClassificationTree>(\n presentation.data && SubjectRequests.getClassificationTree(presentation.data.id)\n );\n\n async function onSubmit(values: LivestreamFormValues) {\n const startDateTime = TimezoneHelper.convertToUTCString(`${values.startDate}T${values.startTime}`);\n const endDateTime = DateHelper.add(startDateTime, +values.duration, 'minutes').toISOString();\n\n try {\n const livestream: Livestream = await fetchAsync(LivestreamRequests.addLivestream({\n companyMasterId: values.contentPartner,\n description: values.description,\n startDateTime,\n endDateTime,\n name: values.name,\n pastRecordingMasterId: values.pastRecordingMasterId,\n presentationId: presentation.data.id,\n recordingMasterId: values.recordingMasterId,\n registrationUrl: values.registrationUrl,\n timezone: values.timezone,\n livestreamUrl: LivestreamHelper.buildLivestreamUrl(values.livestreamUrlId)\n }));\n\n await updateAudiences(livestream, values.audiences, audiences.data);\n \n await updateClassifications(livestream, values.classifications, classificationTree.data);\n\n // Unfortunately, 5 PUT requests are needed to update a livestream at the moment\n // Rather than putting `invalidationKeys` on every request, which would result\n // in heaps of GET requests, we just invalidate once here.\n invalidate([ 'cv-live:livestreams', 'cv-live:livestream' ]);\n\n alerts.success(getPhrase('success'));\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n props.closePopup();\n }\n\n const dataLoaded = audiences.data && presentation.data && classificationTree.data;\n\n return (\n <Popup\n title='Add livestream'\n closePopup={props.closePopup}\n backdrop='static'\n showLoadingSpinner={!dataLoaded}\n >\n <FormWrapper<LivestreamFormValues>\n initialValues={{\n name: '',\n contentPartner: '',\n startDate: '',\n startTime: '',\n duration: '',\n timezone: 'Eastern Standard Time',\n description: '',\n recordingMasterId: '',\n pastRecordingMasterId: '',\n livestreamUrlId: '',\n registrationUrl: '',\n audiences: [],\n classifications: []\n }}\n validationSchema={getLivestreamValidationSchema()}\n onSubmit={onSubmit}\n >\n {dataLoaded && (\n <LivestreamForm\n closePopup={props.closePopup}\n audiences={audiences.data}\n presentation={presentation.data}\n classificationTree={classificationTree.data}\n />\n )}\n </FormWrapper>\n </Popup>\n );\n}\n"],"mappings":"ykBAuBM,EAAY,EAAgB,iBAAiB,sBAAS,EAI5D,SAAgB,EAAwB,EAAqC,CAC3E,IAAM,EAAa,EAAiB,EAC9B,EAAS,EAAU,EACnB,EAAa,EAAwB,EAErC,CAAE,kBAAiB,yBAA0B,EAAoB,EAEjE,EAAe,EACnB,EAAqB,mBAAmB,CAC1C,EACM,EAAY,EAChB,EAAa,MAAQ,EAAgB,sBAAsB,EAAa,KAAK,EAAE,CACjF,EAEM,EAAqB,EACzB,EAAa,MAAQ,EAAgB,sBAAsB,EAAa,KAAK,EAAE,CACjF,EAEA,eAAe,EAAS,EAA8B,CACpD,IAAM,EAAgB,EAAe,mBAAmB,GAAG,EAAO,UAAU,GAAG,EAAO,WAAW,EAC3F,EAAc,EAAW,IAAI,EAAe,CAAC,EAAO,SAAU,SAAS,CAAC,CAAC,YAAY,EAE3F,GAAI,CACF,IAAM,EAAyB,MAAM,EAAW,EAAmB,cAAc,CAC/E,gBAAiB,EAAO,eACxB,YAAa,EAAO,YACpB,gBACA,cACA,KAAM,EAAO,KACb,sBAAuB,EAAO,sBAC9B,eAAgB,EAAa,KAAK,GAClC,kBAAmB,EAAO,kBAC1B,gBAAiB,EAAO,gBACxB,SAAU,EAAO,SACjB,cAAe,EAAiB,mBAAmB,EAAO,eAAe,CAC3E,CAAC,CAAC,EAEF,MAAM,EAAgB,EAAY,EAAO,UAAW,EAAU,IAAI,EAElE,MAAM,EAAsB,EAAY,EAAO,gBAAiB,EAAmB,IAAI,EAKvF,EAAW,CAAE,sBAAuB,oBAAqB,CAAC,EAE1D,EAAO,QAAQ,EAAU,SAAS,CAAC,CACrC,MAAQ,CACN,EAAO,MAAM,EAAU,OAAO,CAAC,CACjC,CAEA,EAAM,WAAW,CACnB,CAEA,IAAM,EAAa,EAAU,MAAQ,EAAa,MAAQ,EAAmB,KAE7E,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,iBACN,WAAY,EAAM,WAClB,SAAS,SACT,mBAAoB,CAAC,YAErB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAe,CACb,KAAM,GACN,eAAgB,GAChB,UAAW,GACX,UAAW,GACX,SAAU,GACV,SAAU,wBACV,YAAa,GACb,kBAAmB,GACnB,sBAAuB,GACvB,gBAAiB,GACjB,gBAAiB,GACjB,UAAW,CAAC,EACZ,gBAAiB,CAAC,CACpB,EACA,iBAAkB,EAA8B,EACtC,oBAET,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,UAAW,EAAU,KACrB,aAAc,EAAa,KAC3B,mBAAoB,EAAmB,IACxC,CAAA,CAEQ,CAAA,CACR,CAAA,CAEX"}
1
+ {"version":3,"file":"C0UYMHUe.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/add-livestream/CvLiveAddLivestreamView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Livestream, Presentation, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { ClassificationTree } from 'shared/interfaces';\n\nimport { getLivestreamValidationSchema, LivestreamForm, LivestreamFormValues } from 'apps/cv-live/components/livestream-form/LivestreamForm';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\nimport { useUpdateLivestream } from 'apps/cv-live/hooks/useUpdateLivestream';\nimport { LivestreamHelper } from 'apps/cv-live/utils/LivestreamHelper';\n\nconst namespace = 'cvLive.addLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CvLiveAddLivestreamViewProps extends PopupProps {}\n\nexport function CvLiveAddLivestreamView(props: CvLiveAddLivestreamViewProps) {\n const fetchAsync = useGetFetchAsync();\n const alerts = useAlerts();\n const invalidate = Flight.useGetInvalidate();\n\n const { updateAudiences, updateClassifications } = useUpdateLivestream();\n\n const presentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.cvLivePresentation()\n );\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n presentation.data && SubjectRequests.presentationAudiences(presentation.data.id)\n );\n\n const classificationTree = Flight.useBasicFetch<ClassificationTree>(\n presentation.data && SubjectRequests.getClassificationTree(presentation.data.id)\n );\n\n async function onSubmit(values: LivestreamFormValues) {\n const startDateTime = TimezoneHelper.convertToUTCString(`${values.startDate}T${values.startTime}`);\n const endDateTime = DateHelper.add(startDateTime, +values.duration, 'minutes').toISOString();\n\n try {\n const livestream: Livestream = await fetchAsync(LivestreamRequests.addLivestream({\n companyMasterId: values.contentPartner,\n description: values.description,\n startDateTime,\n endDateTime,\n name: values.name,\n pastRecordingMasterId: values.pastRecordingMasterId,\n presentationId: presentation.data.id,\n recordingMasterId: values.recordingMasterId,\n registrationUrl: values.registrationUrl,\n timezone: values.timezone,\n livestreamUrl: LivestreamHelper.buildLivestreamUrl(values.livestreamUrlId)\n }));\n\n await updateAudiences(livestream, values.audiences, audiences.data);\n \n await updateClassifications(livestream, values.classifications, classificationTree.data);\n\n // Unfortunately, 5 PUT requests are needed to update a livestream at the moment\n // Rather than putting `invalidationKeys` on every request, which would result\n // in heaps of GET requests, we just invalidate once here.\n invalidate([ 'cv-live:livestreams', 'cv-live:livestream' ]);\n\n alerts.success(getPhrase('success'));\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n props.closePopup();\n }\n\n const dataLoaded = audiences.data && presentation.data && classificationTree.data;\n\n return (\n <Popup\n title='Add livestream'\n closePopup={props.closePopup}\n backdrop='static'\n showLoadingSpinner={!dataLoaded}\n >\n <FormWrapper<LivestreamFormValues>\n initialValues={{\n name: '',\n contentPartner: '',\n startDate: '',\n startTime: '',\n duration: '',\n timezone: 'Eastern Standard Time',\n description: '',\n recordingMasterId: '',\n pastRecordingMasterId: '',\n livestreamUrlId: '',\n registrationUrl: '',\n audiences: [],\n classifications: []\n }}\n validationSchema={getLivestreamValidationSchema()}\n onSubmit={onSubmit}\n >\n {dataLoaded && (\n <LivestreamForm\n closePopup={props.closePopup}\n audiences={audiences.data}\n presentation={presentation.data}\n classificationTree={classificationTree.data}\n />\n )}\n </FormWrapper>\n </Popup>\n );\n}\n"],"mappings":"ykBAuBM,EAAY,EAAgB,iBAAiB,sBAAS,EAI5D,SAAgB,EAAwB,EAAqC,CAC3E,IAAM,EAAa,EAAiB,EAC9B,EAAS,EAAU,EACnB,EAAa,EAAwB,EAErC,CAAE,kBAAiB,yBAA0B,EAAoB,EAEjE,EAAe,EACnB,EAAqB,mBAAmB,CAC1C,EACM,EAAY,EAChB,EAAa,MAAQ,EAAgB,sBAAsB,EAAa,KAAK,EAAE,CACjF,EAEM,EAAqB,EACzB,EAAa,MAAQ,EAAgB,sBAAsB,EAAa,KAAK,EAAE,CACjF,EAEA,eAAe,EAAS,EAA8B,CACpD,IAAM,EAAgB,EAAe,mBAAmB,GAAG,EAAO,UAAU,GAAG,EAAO,WAAW,EAC3F,EAAc,EAAW,IAAI,EAAe,CAAC,EAAO,SAAU,SAAS,CAAC,CAAC,YAAY,EAE3F,GAAI,CACF,IAAM,EAAyB,MAAM,EAAW,EAAmB,cAAc,CAC/E,gBAAiB,EAAO,eACxB,YAAa,EAAO,YACpB,gBACA,cACA,KAAM,EAAO,KACb,sBAAuB,EAAO,sBAC9B,eAAgB,EAAa,KAAK,GAClC,kBAAmB,EAAO,kBAC1B,gBAAiB,EAAO,gBACxB,SAAU,EAAO,SACjB,cAAe,EAAiB,mBAAmB,EAAO,eAAe,CAC3E,CAAC,CAAC,EAEF,MAAM,EAAgB,EAAY,EAAO,UAAW,EAAU,IAAI,EAElE,MAAM,EAAsB,EAAY,EAAO,gBAAiB,EAAmB,IAAI,EAKvF,EAAW,CAAE,sBAAuB,oBAAqB,CAAC,EAE1D,EAAO,QAAQ,EAAU,SAAS,CAAC,CACrC,MAAQ,CACN,EAAO,MAAM,EAAU,OAAO,CAAC,CACjC,CAEA,EAAM,WAAW,CACnB,CAEA,IAAM,EAAa,EAAU,MAAQ,EAAa,MAAQ,EAAmB,KAE7E,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,iBACN,WAAY,EAAM,WAClB,SAAS,SACT,mBAAoB,CAAC,YAErB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAe,CACb,KAAM,GACN,eAAgB,GAChB,UAAW,GACX,UAAW,GACX,SAAU,GACV,SAAU,wBACV,YAAa,GACb,kBAAmB,GACnB,sBAAuB,GACvB,gBAAiB,GACjB,gBAAiB,GACjB,UAAW,CAAC,EACZ,gBAAiB,CAAC,CACpB,EACA,iBAAkB,EAA8B,EACtC,oBAET,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,WAAY,EAAM,WAClB,UAAW,EAAU,KACrB,aAAc,EAAa,KAC3B,mBAAoB,EAAmB,IACxC,CAAA,CAEQ,CAAA,CACR,CAAA,CAEX"}
@@ -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"./D-JsEiDq2.chunk.js";import{s as i,u as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./Bwpvc7Th2.chunk.js";import{t as s}from"./D0JviwKV2.chunk.js";import{t as c}from"./0JxT4yCF.chunk.js";import{t as l}from"./BYiE7xZS2.chunk.js";import{t as u}from"./BEeh_Vbr.chunk.js";var d=n(e()),f=t();function p(e){let t=o(),n=a(),[p,m]=d.useState(!1),h=i(l.livestream(e.id));async function g(){try{await n(l.removeLivestream(h.data.id)),t.success(`Livestream has been deleted successfully`)}catch{t.error(`Something went wrong`)}finally{e.closePopup()}}return(0,f.jsx)(r,{title:`Delete livestream`,closePopup:e.closePopup,showLoadingSpinner:!h.data,children:h.data&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`p`,{children:[`Are you sure you want to delete the livestream: `,(0,f.jsx)(`strong`,{children:h.data.name}),`?`]}),(0,f.jsx)(`p`,{children:`Please make sure to notify any users who have signed up for this event that it has now been cancelled.`}),(0,f.jsx)(`p`,{className:`mb-1`,children:`Details:`}),(0,f.jsx)(u,{livestream:h.data}),(0,f.jsx)(c,{challengePhrase:h.data.name,onChallengePass:e=>m(e)}),(0,f.jsxs)(s,{className:`mt-3`,children:[(0,f.jsx)(s.Cancel,{onClick:e.closePopup}),(0,f.jsx)(s.Submit,{variant:`danger`,onClick:g,text:`Delete livestream`,disabled:!p})]})]})})}export{p as CvLiveDeleteLivestream};
2
- //# sourceMappingURL=V0N7tCBl.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./D-JsEiDq2.chunk.js";import{s as i,u as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./Bwpvc7Th2.chunk.js";import{t as s}from"./D0JviwKV2.chunk.js";import{t as c}from"./0JxT4yCF.chunk.js";import{t as l}from"./BYiE7xZS2.chunk.js";import{t as u}from"./D5ek2PiI.chunk.js";var d=n(e()),f=t();function p(e){let t=o(),n=a(),[p,m]=d.useState(!1),h=i(l.livestream(e.id));async function g(){try{await n(l.removeLivestream(h.data.id)),t.success(`Livestream has been deleted successfully`)}catch{t.error(`Something went wrong`)}finally{e.closePopup()}}return(0,f.jsx)(r,{title:`Delete livestream`,closePopup:e.closePopup,showLoadingSpinner:!h.data,children:h.data&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`p`,{children:[`Are you sure you want to delete the livestream: `,(0,f.jsx)(`strong`,{children:h.data.name}),`?`]}),(0,f.jsx)(`p`,{children:`Please make sure to notify any users who have signed up for this event that it has now been cancelled.`}),(0,f.jsx)(`p`,{className:`mb-1`,children:`Details:`}),(0,f.jsx)(u,{livestream:h.data}),(0,f.jsx)(c,{challengePhrase:h.data.name,onChallengePass:e=>m(e)}),(0,f.jsxs)(s,{className:`mt-3`,children:[(0,f.jsx)(s.Cancel,{onClick:e.closePopup}),(0,f.jsx)(s.Submit,{variant:`danger`,onClick:g,text:`Delete livestream`,disabled:!p})]})]})})}export{p as CvLiveDeleteLivestream};
2
+ //# sourceMappingURL=C0_pEFCD.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"V0N7tCBl.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/delete-livestream/CvLiveDeleteLivestream.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Livestream } from 'libs/shared/interfaces';\n\nimport { ConfirmInputChallenge } from 'shared/components/confirm-input-challenge/ConfirmInputChallenge';\n\nimport { LivestreamDetailsList } from 'apps/cv-live/components/livestream-details-list/LivestreamDetailsList';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\n\ninterface CvLiveDeleteLivestreamProps extends PopupProps {\n id: string;\n}\n\nexport function CvLiveDeleteLivestream(props: CvLiveDeleteLivestreamProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const [ isChallengePassed, setIsChallengePassed ] = React.useState(false);\n\n const livestream = Flight.useBasicFetch<Livestream>(\n LivestreamRequests.livestream(props.id)\n );\n\n async function handleSubmit() {\n try {\n await fetchAsync(LivestreamRequests.removeLivestream(livestream.data.id));\n\n alerts.success('Livestream has been deleted successfully');\n } catch {\n alerts.error('Something went wrong');\n } finally {\n props.closePopup();\n }\n }\n\n return (\n <Popup\n title='Delete livestream'\n closePopup={props.closePopup}\n showLoadingSpinner={!livestream.data}\n >\n {livestream.data &&\n <>\n <p>\n Are you sure you want to delete the livestream: <strong>{livestream.data.name}</strong>?\n </p>\n <p>\n Please make sure to notify any users who have signed up for this event that\n it has now been cancelled.\n </p>\n <p className='mb-1'>\n Details:\n </p>\n\n <LivestreamDetailsList livestream={livestream.data} />\n\n <ConfirmInputChallenge\n challengePhrase={livestream.data.name}\n onChallengePass={(isPass: boolean) => setIsChallengePassed(isPass)}\n />\n <PopupButtons className='mt-3'>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='danger'\n onClick={handleSubmit}\n text='Delete livestream'\n disabled={!isChallengePassed}\n />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}\n"],"mappings":"yYAmBA,SAAgB,EAAuB,EAAoC,CACzE,IAAM,EAAS,EAAU,EACnB,EAAa,EAAiB,EAE9B,CAAE,EAAmB,GAAA,EAA+B,SAAS,EAAK,EAElE,EAAa,EACjB,EAAmB,WAAW,EAAM,EAAE,CACxC,EAEA,eAAe,GAAe,CAC5B,GAAI,CACF,MAAM,EAAW,EAAmB,iBAAiB,EAAW,KAAK,EAAE,CAAC,EAExE,EAAO,QAAQ,0CAA0C,CAC3D,MAAQ,CACN,EAAO,MAAM,sBAAsB,CACrC,QAAU,CACR,EAAM,WAAW,CACnB,CACF,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,oBACN,WAAY,EAAM,WAClB,mBAAoB,CAAC,EAAW,cAE/B,EAAW,OACV,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,oDAC+C,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAW,KAAK,IAAa,CAAA,EAAC,GACtF,CAAA,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAG,wGAGA,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,gBAAO,UAEjB,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,WAAY,EAAW,IAAO,CAAA,GAErD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,gBAAiB,EAAW,KAAK,KACjC,gBAAkB,GAAoB,EAAqB,CAAM,CAClE,CAAA,GACD,EAAA,EAAA,KAAA,CAAC,EAAD,CAAc,UAAU,gBAAxB,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,QAAQ,SACR,QAAS,EACT,KAAK,oBACL,SAAU,CAAC,CACZ,CAAA,CACW,GACd,CAAA,CAAA,CAEC,CAAA,CAEX"}
1
+ {"version":3,"file":"C0_pEFCD.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/delete-livestream/CvLiveDeleteLivestream.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Livestream } from 'libs/shared/interfaces';\n\nimport { ConfirmInputChallenge } from 'shared/components/confirm-input-challenge/ConfirmInputChallenge';\n\nimport { LivestreamDetailsList } from 'apps/cv-live/components/livestream-details-list/LivestreamDetailsList';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\n\ninterface CvLiveDeleteLivestreamProps extends PopupProps {\n id: string;\n}\n\nexport function CvLiveDeleteLivestream(props: CvLiveDeleteLivestreamProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const [ isChallengePassed, setIsChallengePassed ] = React.useState(false);\n\n const livestream = Flight.useBasicFetch<Livestream>(\n LivestreamRequests.livestream(props.id)\n );\n\n async function handleSubmit() {\n try {\n await fetchAsync(LivestreamRequests.removeLivestream(livestream.data.id));\n\n alerts.success('Livestream has been deleted successfully');\n } catch {\n alerts.error('Something went wrong');\n } finally {\n props.closePopup();\n }\n }\n\n return (\n <Popup\n title='Delete livestream'\n closePopup={props.closePopup}\n showLoadingSpinner={!livestream.data}\n >\n {livestream.data &&\n <>\n <p>\n Are you sure you want to delete the livestream: <strong>{livestream.data.name}</strong>?\n </p>\n <p>\n Please make sure to notify any users who have signed up for this event that\n it has now been cancelled.\n </p>\n <p className='mb-1'>\n Details:\n </p>\n\n <LivestreamDetailsList livestream={livestream.data} />\n\n <ConfirmInputChallenge\n challengePhrase={livestream.data.name}\n onChallengePass={(isPass: boolean) => setIsChallengePassed(isPass)}\n />\n <PopupButtons className='mt-3'>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='danger'\n onClick={handleSubmit}\n text='Delete livestream'\n disabled={!isChallengePassed}\n />\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}\n"],"mappings":"yYAmBA,SAAgB,EAAuB,EAAoC,CACzE,IAAM,EAAS,EAAU,EACnB,EAAa,EAAiB,EAE9B,CAAE,EAAmB,GAAA,EAA+B,SAAS,EAAK,EAElE,EAAa,EACjB,EAAmB,WAAW,EAAM,EAAE,CACxC,EAEA,eAAe,GAAe,CAC5B,GAAI,CACF,MAAM,EAAW,EAAmB,iBAAiB,EAAW,KAAK,EAAE,CAAC,EAExE,EAAO,QAAQ,0CAA0C,CAC3D,MAAQ,CACN,EAAO,MAAM,sBAAsB,CACrC,QAAU,CACR,EAAM,WAAW,CACnB,CACF,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,oBACN,WAAY,EAAM,WAClB,mBAAoB,CAAC,EAAW,cAE/B,EAAW,OACV,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,oDAC+C,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAW,KAAK,IAAa,CAAA,EAAC,GACtF,CAAA,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAG,wGAGA,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,gBAAO,UAEjB,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,WAAY,EAAW,IAAO,CAAA,GAErD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,gBAAiB,EAAW,KAAK,KACjC,gBAAkB,GAAoB,EAAqB,CAAM,CAClE,CAAA,GACD,EAAA,EAAA,KAAA,CAAC,EAAD,CAAc,UAAU,gBAAxB,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACE,QAAQ,SACR,QAAS,EACT,KAAK,oBACL,SAAU,CAAC,CACZ,CAAA,CACW,GACd,CAAA,CAAA,CAEC,CAAA,CAEX"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{l as i,s as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./CZyPFSXo.chunk.js";import{t as s}from"./BivItbGo.chunk.js";import{t as c}from"./DLLL2lwS.chunk.js";import{t as l}from"./BbR7yW4A2.chunk.js";e();var u=t();function d(e){let t=a(r.currentUser()),d=a(o.member(e.interactiveId)),f=a(s.curationTags()),p=a(s.selectedCurationTags(e.interactiveId)),m=i();function h(t,n,r){m(s.addTag(e.interactiveId,t,n,r))}function g(t,n,r){m(s.removeTag(e.interactiveId,t,n,r))}return(0,u.jsxs)(u.Fragment,{children:[!!t.data&&!!d.data&&(0,u.jsx)(l,{interactive:d.data,activeAction:n.Interactives.EDIT_INTERACTIVE_CURATION,currentUser:t.data}),!!d.data&&!!f.data&&!!p.data&&(0,u.jsx)(c,{id:e.interactiveId,heading:d.data.name,curationTags:f.data,selectedCurationTags:p.data,addCurationTag:h,removeCurationTag:g,disableClickViewCurated:!0})]})}export{d as EditInteractiveCurationView};
2
- //# sourceMappingURL=Cpr1J8Rk2.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./UCDGupVs.chunk.js";import{l as i,s as a}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as o}from"./CZyPFSXo.chunk.js";import{t as s}from"./BivItbGo.chunk.js";import{t as c}from"./CNLx6_fS.chunk.js";import{t as l}from"./5uVJfyDx2.chunk.js";e();var u=t();function d(e){let t=a(r.currentUser()),d=a(o.member(e.interactiveId)),f=a(s.curationTags()),p=a(s.selectedCurationTags(e.interactiveId)),m=i();function h(t,n,r){m(s.addTag(e.interactiveId,t,n,r))}function g(t,n,r){m(s.removeTag(e.interactiveId,t,n,r))}return(0,u.jsxs)(u.Fragment,{children:[!!t.data&&!!d.data&&(0,u.jsx)(l,{interactive:d.data,activeAction:n.Interactives.EDIT_INTERACTIVE_CURATION,currentUser:t.data}),!!d.data&&!!f.data&&!!p.data&&(0,u.jsx)(c,{id:e.interactiveId,heading:d.data.name,curationTags:f.data,selectedCurationTags:p.data,addCurationTag:h,removeCurationTag:g,disableClickViewCurated:!0})]})}export{d as EditInteractiveCurationView};
2
+ //# sourceMappingURL=C2jRLu4_2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cpr1J8Rk2.chunk.js","names":[],"sources":["../../../../../src/apps/interactives/views/edit-interactive-curation/EditInteractiveCurationView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CuratorUser, InteractiveMetadata, Tag } from 'libs/shared/interfaces';\n\nimport { CurationTags } from 'shared/components/curation-tags/CurationTags';\nimport { Actions } from 'shared/constants';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditInteractivesNav } from 'apps/interactives/components/edit-interactives-nav/EditInteractivesNav';\n\ninterface EditInteractiveCurationView {\n interactiveId: string;\n}\n\nexport function EditInteractiveCurationView(props: EditInteractiveCurationView) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactive = Flight.useBasicFetch<InteractiveMetadata>(SubjectRequests.member(props.interactiveId));\n\n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags());\n const selectedCurationTags = Flight.useBasicFetch<Tag[]>(\n TagRequests.selectedCurationTags(props.interactiveId)\n );\n const fetch = useGetFetch();\n\n function addCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.addTag(props.interactiveId, tag, success, error));\n }\n\n function removeCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.removeTag(props.interactiveId, tag, success, error));\n }\n\n return (\n <>\n {!!currentUser.data && !!interactive.data && (\n <EditInteractivesNav\n interactive={interactive.data}\n activeAction={Actions.Interactives.EDIT_INTERACTIVE_CURATION}\n currentUser={currentUser.data}\n />\n )}\n {!!interactive.data && !!allCurationTags.data && !!selectedCurationTags.data &&\n <CurationTags\n id={props.interactiveId}\n heading={interactive.data.name}\n curationTags={allCurationTags.data}\n selectedCurationTags={selectedCurationTags.data}\n addCurationTag={addCurationTag}\n removeCurationTag={removeCurationTag}\n disableClickViewCurated\n />\n }\n </>\n );\n}\n"],"mappings":"qZAmBA,SAAgB,EAA4B,EAAoC,CAC9E,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAc,EAA0C,EAAgB,OAAO,EAAM,aAAa,CAAC,EAEnG,EAAkB,EAA4B,EAAY,aAAa,CAAC,EACxE,EAAuB,EAC3B,EAAY,qBAAqB,EAAM,aAAa,CACtD,EACM,EAAQ,EAAY,EAE1B,SAAS,EAAe,EAAU,EAAqB,EAAmB,CACxE,EAAM,EAAY,OAAO,EAAM,cAAe,EAAK,EAAS,CAAK,CAAC,CACpE,CAEA,SAAS,EAAkB,EAAU,EAAqB,EAAmB,CAC3E,EAAM,EAAY,UAAU,EAAM,cAAe,EAAK,EAAS,CAAK,CAAC,CACvE,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAY,OACnC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,aAAc,EAAQ,aAAa,0BACnC,YAAa,EAAY,IAC1B,CAAA,EAEF,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAgB,MAAQ,CAAC,CAAC,EAAqB,OACtE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,EAAM,cACV,QAAS,EAAY,KAAK,KAC1B,aAAc,EAAgB,KAC9B,qBAAsB,EAAqB,KAC3B,iBACG,oBACnB,wBAAA,EACD,CAAA,CAEH,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"C2jRLu4_2.chunk.js","names":[],"sources":["../../../../../src/apps/interactives/views/edit-interactive-curation/EditInteractiveCurationView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { Flight } from 'libs/common/react/index';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CuratorUser, InteractiveMetadata, Tag } from 'libs/shared/interfaces';\n\nimport { CurationTags } from 'shared/components/curation-tags/CurationTags';\nimport { Actions } from 'shared/constants';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditInteractivesNav } from 'apps/interactives/components/edit-interactives-nav/EditInteractivesNav';\n\ninterface EditInteractiveCurationView {\n interactiveId: string;\n}\n\nexport function EditInteractiveCurationView(props: EditInteractiveCurationView) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactive = Flight.useBasicFetch<InteractiveMetadata>(SubjectRequests.member(props.interactiveId));\n\n const allCurationTags = Flight.useBasicFetch<Tag[]>(TagRequests.curationTags());\n const selectedCurationTags = Flight.useBasicFetch<Tag[]>(\n TagRequests.selectedCurationTags(props.interactiveId)\n );\n const fetch = useGetFetch();\n\n function addCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.addTag(props.interactiveId, tag, success, error));\n }\n\n function removeCurationTag(tag: Tag, success: () => void, error: () => void) {\n fetch(TagRequests.removeTag(props.interactiveId, tag, success, error));\n }\n\n return (\n <>\n {!!currentUser.data && !!interactive.data && (\n <EditInteractivesNav\n interactive={interactive.data}\n activeAction={Actions.Interactives.EDIT_INTERACTIVE_CURATION}\n currentUser={currentUser.data}\n />\n )}\n {!!interactive.data && !!allCurationTags.data && !!selectedCurationTags.data &&\n <CurationTags\n id={props.interactiveId}\n heading={interactive.data.name}\n curationTags={allCurationTags.data}\n selectedCurationTags={selectedCurationTags.data}\n addCurationTag={addCurationTag}\n removeCurationTag={removeCurationTag}\n disableClickViewCurated\n />\n }\n </>\n );\n}\n"],"mappings":"qZAmBA,SAAgB,EAA4B,EAAoC,CAC9E,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAc,EAA0C,EAAgB,OAAO,EAAM,aAAa,CAAC,EAEnG,EAAkB,EAA4B,EAAY,aAAa,CAAC,EACxE,EAAuB,EAC3B,EAAY,qBAAqB,EAAM,aAAa,CACtD,EACM,EAAQ,EAAY,EAE1B,SAAS,EAAe,EAAU,EAAqB,EAAmB,CACxE,EAAM,EAAY,OAAO,EAAM,cAAe,EAAK,EAAS,CAAK,CAAC,CACpE,CAEA,SAAS,EAAkB,EAAU,EAAqB,EAAmB,CAC3E,EAAM,EAAY,UAAU,EAAM,cAAe,EAAK,EAAS,CAAK,CAAC,CACvE,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAY,OACnC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAY,KACzB,aAAc,EAAQ,aAAa,0BACnC,YAAa,EAAY,IAC1B,CAAA,EAEF,CAAC,CAAC,EAAY,MAAQ,CAAC,CAAC,EAAgB,MAAQ,CAAC,CAAC,EAAqB,OACtE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAI,EAAM,cACV,QAAS,EAAY,KAAK,KAC1B,aAAc,EAAgB,KAC9B,qBAAsB,EAAqB,KAC3B,iBACG,oBACnB,wBAAA,EACD,CAAA,CAEH,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./Di_u2uix.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as a,t as o}from"./DBUreHJA.chunk.js";import{r as s}from"./BKtR2N4K.chunk.js";import{r as c}from"./DkstLT1W.chunk.js";import{n as l}from"./CbiGs3Tn.chunk.js";import{s as u,u as d}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import"./BCfBk23W.chunk.js";import{t as f}from"./DjzD1n9W.chunk.js";import{t as p}from"./CZyPFSXo.chunk.js";import{t as m}from"./DHD4nY6U.chunk.js";import{t as h}from"./D1EPU1_6.chunk.js";import{t as g}from"./CAU0Lbgd.chunk.js";var _=n(e()),v=t();function y(e){let[t,n]=_.useState(!0),y=d();function b(n){return h.dashboards({targetType:s.Discover,presentationId:e.presentationId},t,n)}function x(e){y(b(e))}let S=m(b,x),C=u(p.presentation(e.presentationId)),{hasPermissions:w}=f();function T(e){return y(h.updateDashboard(e.id,e))}let E=w(c.CvLiveDashboardStatusUpdate);return C.data?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`mt-3`,children:[(0,v.jsx)(`h6`,{children:`Presentation: ${C.data.name}`}),(0,v.jsx)(`p`,{children:C.data.description})]}),(0,v.jsx)(g,{presentation:C.data,dashboards:S.items,onStatusChange:T,canPublish:E,columns:a.getColumnSet(o.CvLiveDashboard),filterArchivedDashboards:t,setFilterArchivedDashboards:n,getEditDetailsAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.EDIT_DASHBOARD_DETAILS,args:[e]}),getDeleteAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.DELETE_DASHBOARD,args:[e]}),getNewDashboardAppLink:()=>({application:i.CV_LIVE,action:r.CvLive.NEW_DASHBOARD,args:[e.presentationId]}),getCopyDashboardAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.COPY_DASHBOARD,args:[e]})})]}):(0,v.jsx)(`div`,{className:`text-center py-3`,children:(0,v.jsx)(l,{as:`div`,animation:`border`,role:`status`})})}export{y as EditCvLiveDashboardListView};
2
- //# sourceMappingURL=CY56FWb9.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./Di_u2uix.chunk.js";import{t as i}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as a,t as o}from"./C-M2om56.chunk.js";import{r as s}from"./BKtR2N4K.chunk.js";import{r as c}from"./DkstLT1W.chunk.js";import{n as l}from"./CbiGs3Tn.chunk.js";import{s as u,u as d}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import"./BCfBk23W.chunk.js";import{t as f}from"./DjzD1n9W.chunk.js";import{t as p}from"./CZyPFSXo.chunk.js";import{t as m}from"./DHD4nY6U.chunk.js";import{t as h}from"./D1EPU1_6.chunk.js";import{t as g}from"./BwKHls91.chunk.js";var _=n(e()),v=t();function y(e){let[t,n]=_.useState(!0),y=d();function b(n){return h.dashboards({targetType:s.Discover,presentationId:e.presentationId},t,n)}function x(e){y(b(e))}let S=m(b,x),C=u(p.presentation(e.presentationId)),{hasPermissions:w}=f();function T(e){return y(h.updateDashboard(e.id,e))}let E=w(c.CvLiveDashboardStatusUpdate);return C.data?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`mt-3`,children:[(0,v.jsx)(`h6`,{children:`Presentation: ${C.data.name}`}),(0,v.jsx)(`p`,{children:C.data.description})]}),(0,v.jsx)(g,{presentation:C.data,dashboards:S.items,onStatusChange:T,canPublish:E,columns:a.getColumnSet(o.CvLiveDashboard),filterArchivedDashboards:t,setFilterArchivedDashboards:n,getEditDetailsAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.EDIT_DASHBOARD_DETAILS,args:[e]}),getDeleteAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.DELETE_DASHBOARD,args:[e]}),getNewDashboardAppLink:()=>({application:i.CV_LIVE,action:r.CvLive.NEW_DASHBOARD,args:[e.presentationId]}),getCopyDashboardAppLink:e=>({application:i.CV_LIVE,action:r.CvLive.COPY_DASHBOARD,args:[e]})})]}):(0,v.jsx)(`div`,{className:`text-center py-3`,children:(0,v.jsx)(l,{as:`div`,animation:`border`,role:`status`})})}export{y as EditCvLiveDashboardListView};
2
+ //# sourceMappingURL=C2tBl3l9.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CY56FWb9.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/edit-dashboard/EditCvLiveDashboardListView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { CuratedDashboard, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { useCuratorPermissions } from 'shared/hooks';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { DashboardTable } from 'apps/dashboard-editor/components/dashboard-table/DashboardTable';\n\ninterface EditCvLiveDashboardListViewProps {\n presentationId: string;\n}\n\nexport function EditCvLiveDashboardListView(props: EditCvLiveDashboardListViewProps): JSX.Element {\n const [ filterArchivedDashboards, setFilterArchivedDashboards ] = React.useState(true);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(cursor: string): Flight.Request {\n return DashboardRequests.dashboards({\n targetType: DashboardTargetType.Discover,\n presentationId: props.presentationId\n }, filterArchivedDashboards, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetchAsync(getRequest(cursor));\n }\n\n const dashboards = useFetchAll<CuratedDashboard>(getRequest, fetchNext);\n \n const presentation = Flight.useBasicFetch<Presentation>(SubjectRequests.presentation(props.presentationId));\n\n const { hasPermissions } = useCuratorPermissions();\n\n function onStatusChange(updatedDashboard: CuratedDashboard): Promise<void> {\n return fetchAsync(DashboardRequests.updateDashboard(\n updatedDashboard.id,\n updatedDashboard\n ));\n }\n\n const canPublishDashboards = hasPermissions(CuratorPermissionName.CvLiveDashboardStatusUpdate);\n\n if (!presentation.data) {\n return (\n <div className='text-center py-3'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return (\n <>\n <div className='mt-3'>\n <h6>{`Presentation: ${presentation.data.name}`}</h6>\n <p>{presentation.data.description}</p>\n </div>\n\n <DashboardTable\n presentation={presentation.data}\n dashboards={dashboards.items}\n onStatusChange={onStatusChange}\n canPublish={canPublishDashboards}\n columns={MemberMatrixHelper.getColumnSet(DefinedColumnSet.CvLiveDashboard)}\n filterArchivedDashboards={filterArchivedDashboards}\n setFilterArchivedDashboards={setFilterArchivedDashboards}\n getEditDetailsAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.EDIT_DASHBOARD_DETAILS,\n args: [dashboardId]\n })}\n getDeleteAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.DELETE_DASHBOARD,\n args: [dashboardId]\n })}\n getNewDashboardAppLink={() => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.NEW_DASHBOARD,\n args: [props.presentationId]\n })}\n getCopyDashboardAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.COPY_DASHBOARD,\n args: [dashboardId]\n })}\n />\n </>\n );\n}\n"],"mappings":"4oBAqBA,SAAgB,EAA4B,EAAsD,CAChG,GAAM,CAAE,EAA0B,GAAA,EAAsC,SAAS,EAAI,EAE/E,EAAa,EAAwB,EAE3C,SAAS,EAAW,EAAgC,CAClD,OAAO,EAAkB,WAAW,CAClC,WAAY,EAAoB,SAChC,eAAgB,EAAM,cACxB,EAAG,EAA0B,CAAM,CACrC,CAEA,SAAS,EAAU,EAAuB,CACxC,EAAW,EAAW,CAAM,CAAC,CAC/B,CAEA,IAAM,EAAa,EAA8B,EAAY,CAAS,EAEhE,EAAe,EAAmC,EAAgB,aAAa,EAAM,cAAc,CAAC,EAEpG,CAAE,kBAAmB,EAAsB,EAEjD,SAAS,EAAe,EAAmD,CACzE,OAAO,EAAW,EAAkB,gBAClC,EAAiB,GACjB,CACF,CAAC,CACH,CAEA,IAAM,EAAuB,EAAe,EAAsB,2BAA2B,EAU7F,OARK,EAAa,MAShB,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,iBAAiB,EAAa,KAAK,MAAW,CAAA,GACnD,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAa,KAAK,WAAe,CAAA,CAClC,KAEL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,EAAa,KAC3B,WAAY,EAAW,MACP,iBAChB,WAAY,EACZ,QAAS,EAAmB,aAAa,EAAiB,eAAe,EAC/C,2BACG,8BAC7B,sBAAuB,IAAgB,CACrC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,uBACvB,KAAM,CAAC,CAAW,CACpB,GACA,iBAAkB,IAAgB,CAChC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,iBACvB,KAAM,CAAC,CAAW,CACpB,GACA,4BAA+B,CAC7B,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,cACvB,KAAM,CAAC,EAAM,cAAc,CAC7B,GACA,wBAAyB,IAAgB,CACvC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,eACvB,KAAM,CAAC,CAAW,CACpB,EACD,CAAA,CACD,CAAA,CAAA,GA1CA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,CA0CX"}
1
+ {"version":3,"file":"C2tBl3l9.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/edit-dashboard/EditCvLiveDashboardListView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { CuratedDashboard, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { useCuratorPermissions } from 'shared/hooks';\nimport { DefinedColumnSet, MemberMatrixHelper } from 'shared/utils/MemberMatrixHelper';\n\nimport { DashboardTable } from 'apps/dashboard-editor/components/dashboard-table/DashboardTable';\n\ninterface EditCvLiveDashboardListViewProps {\n presentationId: string;\n}\n\nexport function EditCvLiveDashboardListView(props: EditCvLiveDashboardListViewProps): JSX.Element {\n const [ filterArchivedDashboards, setFilterArchivedDashboards ] = React.useState(true);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(cursor: string): Flight.Request {\n return DashboardRequests.dashboards({\n targetType: DashboardTargetType.Discover,\n presentationId: props.presentationId\n }, filterArchivedDashboards, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetchAsync(getRequest(cursor));\n }\n\n const dashboards = useFetchAll<CuratedDashboard>(getRequest, fetchNext);\n \n const presentation = Flight.useBasicFetch<Presentation>(SubjectRequests.presentation(props.presentationId));\n\n const { hasPermissions } = useCuratorPermissions();\n\n function onStatusChange(updatedDashboard: CuratedDashboard): Promise<void> {\n return fetchAsync(DashboardRequests.updateDashboard(\n updatedDashboard.id,\n updatedDashboard\n ));\n }\n\n const canPublishDashboards = hasPermissions(CuratorPermissionName.CvLiveDashboardStatusUpdate);\n\n if (!presentation.data) {\n return (\n <div className='text-center py-3'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return (\n <>\n <div className='mt-3'>\n <h6>{`Presentation: ${presentation.data.name}`}</h6>\n <p>{presentation.data.description}</p>\n </div>\n\n <DashboardTable\n presentation={presentation.data}\n dashboards={dashboards.items}\n onStatusChange={onStatusChange}\n canPublish={canPublishDashboards}\n columns={MemberMatrixHelper.getColumnSet(DefinedColumnSet.CvLiveDashboard)}\n filterArchivedDashboards={filterArchivedDashboards}\n setFilterArchivedDashboards={setFilterArchivedDashboards}\n getEditDetailsAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.EDIT_DASHBOARD_DETAILS,\n args: [dashboardId]\n })}\n getDeleteAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.DELETE_DASHBOARD,\n args: [dashboardId]\n })}\n getNewDashboardAppLink={() => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.NEW_DASHBOARD,\n args: [props.presentationId]\n })}\n getCopyDashboardAppLink={dashboardId => ({\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.COPY_DASHBOARD,\n args: [dashboardId]\n })}\n />\n </>\n );\n}\n"],"mappings":"4oBAqBA,SAAgB,EAA4B,EAAsD,CAChG,GAAM,CAAE,EAA0B,GAAA,EAAsC,SAAS,EAAI,EAE/E,EAAa,EAAwB,EAE3C,SAAS,EAAW,EAAgC,CAClD,OAAO,EAAkB,WAAW,CAClC,WAAY,EAAoB,SAChC,eAAgB,EAAM,cACxB,EAAG,EAA0B,CAAM,CACrC,CAEA,SAAS,EAAU,EAAuB,CACxC,EAAW,EAAW,CAAM,CAAC,CAC/B,CAEA,IAAM,EAAa,EAA8B,EAAY,CAAS,EAEhE,EAAe,EAAmC,EAAgB,aAAa,EAAM,cAAc,CAAC,EAEpG,CAAE,kBAAmB,EAAsB,EAEjD,SAAS,EAAe,EAAmD,CACzE,OAAO,EAAW,EAAkB,gBAClC,EAAiB,GACjB,CACF,CAAC,CACH,CAEA,IAAM,EAAuB,EAAe,EAAsB,2BAA2B,EAU7F,OARK,EAAa,MAShB,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,iBAAiB,EAAa,KAAK,MAAW,CAAA,GACnD,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAa,KAAK,WAAe,CAAA,CAClC,KAEL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,EAAa,KAC3B,WAAY,EAAW,MACP,iBAChB,WAAY,EACZ,QAAS,EAAmB,aAAa,EAAiB,eAAe,EAC/C,2BACG,8BAC7B,sBAAuB,IAAgB,CACrC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,uBACvB,KAAM,CAAC,CAAW,CACpB,GACA,iBAAkB,IAAgB,CAChC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,iBACvB,KAAM,CAAC,CAAW,CACpB,GACA,4BAA+B,CAC7B,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,cACvB,KAAM,CAAC,EAAM,cAAc,CAC7B,GACA,wBAAyB,IAAgB,CACvC,YAAa,EAAY,QACzB,OAAQ,EAAQ,OAAO,eACvB,KAAM,CAAC,CAAW,CACpB,EACD,CAAA,CACD,CAAA,CAAA,GA1CA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,CA0CX"}
@@ -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"./Crs6pJ2h.chunk.js";import{t as i}from"./C1kx8Ra5.chunk.js";import{t as a}from"./Di_u2uix.chunk.js";import{t as o}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as s}from"./C6KIBIQi.chunk.js";import{t as c}from"./BMjA_FNA.chunk.js";import{t as l}from"./BkdBq-7h.chunk.js";import{l as u,s as d}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as f}from"./DV9yRNvx2.chunk.js";import{t as p}from"./BNgL3wBw.chunk.js";import{t as m}from"./Cng7JTd62.chunk.js";import{t as h}from"./Bv5hYKhN2.chunk.js";import{t as g}from"./DICjfxIb.chunk.js";import{t as _}from"./X4v0NYZ2.chunk.js";import{t as v}from"./DOqkOvWG2.chunk.js";import{t as y}from"./Zt6nKPom2.chunk.js";import{t as b}from"./gzUId2LV2.chunk.js";import{t as x}from"./oGkpmMft2.chunk.js";import{t as S}from"./Dfhl7nI62.chunk.js";import{c as C,t as w}from"./DP4yQXZy.chunk.js";import{t as T}from"./CCocqcwy.chunk.js";var E=n(e()),D=5e3;function O(e){let{status:t,cursor:n,pollEnabled:r=!1}=e,i=(0,E.useMemo)(()=>{if(!t)return;let e=Array.isArray(t)?t:[t],n=w.getStatusEnumValues(e);return n.length?n:void 0},[t]),a=(0,E.useMemo)(()=>v.getJobsByType(f.MarketingProfile,null,i,n),[n,i]),o=u();return T(()=>o(a),D,r),a}var k=t(),A=[`Submitted`,`Queued`,`Pending`,`In progress`,`Complete`,`Complete with errors`,`Failed`].map(e=>({id:e,name:e}));function j(){return[{id:`status`,name:`Status`,type:`checkbox`,compatibleIndices:[`customer`],options:A}]}function M(e){return(0,k.jsx)(_,{queryParams:e.queryParams,mainFilters:j(),appLink:{application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT},constantIndices:[`customer`],analyticsOptions:null,hideHeading:!0,hideDivider:!0,noContainerPaddingBottom:!0})}function N(e){let{cursors:t,params:n}=e;return!t.previous&&!t.next?(0,k.jsx)(k.Fragment,{}):(0,k.jsx)(p,{appLink:{application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT,params:n},buttonVariant:`outline-dark`,className:`d-flex justify-content-end`,cursors:t,prevHack:!0})}var P={originName:`_originName_5x1h0_1`,badge:`_badge_5x1h0_4`,statusScheduled:`_statusScheduled_5x1h0_8`,statusInProgress:`_statusInProgress_5x1h0_12`,statusComplete:`_statusComplete_5x1h0_16`,statusWarning:`_statusWarning_5x1h0_20`,statusFailed:`_statusFailed_5x1h0_24`,avatar:`_avatar_5x1h0_28`,fileButton:`_fileButton_5x1h0_34`,destinationLogos:`_destinationLogos_5x1h0_40`,destinationLogo:`_destinationLogo_5x1h0_40`},F=s(),I={Submitted:P.statusScheduled,Queued:P.statusScheduled,Pending:P.statusScheduled,"In progress":P.statusInProgress,Complete:P.statusComplete,"Complete with errors":P.statusWarning,Failed:P.statusFailed},L=[F.accessor(`dateCreated`,{id:`date`,header:`Date`,cell:e=>l.formatUtcString(e.getValue(),`DD/MM/YYYY hh:mm A`),size:170}),F.display({id:`destination`,header:`Destination`,cell:e=>{let t=w.getContactImportJobDestinations(e.row.original);return t.length?(0,k.jsx)(`div`,{className:`d-flex align-items-center ${P.destinationLogos}`,children:t.map((e,n)=>(0,k.jsx)(`img`,{className:P.destinationLogo,style:{zIndex:t.length-n},src:e.logo,alt:e.label,width:24,height:24},e.field))}):(0,k.jsx)(`span`,{className:`text-secondary`,children:`Unknown`})},size:110}),F.display({id:`originType`,header:`Origin type`,cell:e=>e.row.original.metadata.options?.origin?.type??`—`,size:170}),F.display({id:`originName`,header:`Origin name`,cell:e=>(0,k.jsx)(`span`,{className:`d-block text-truncate ${P.originName}`,children:e.row.original.metadata.options?.origin?.origin??`—`}),size:220}),F.accessor(`status`,{id:`status`,header:`Status`,cell:e=>{let t=w.getStatusLabel(e.getValue());return(0,k.jsx)(`span`,{className:`d-inline-flex align-items-center justify-content-center rounded-pill fw-semibold text-nowrap ${P.badge} ${I[t]}`,children:t})},size:180}),F.accessor(`submitterName`,{id:`performedBy`,header:`Performed by`,cell:e=>(0,k.jsxs)(`div`,{className:`d-flex align-items-center gap-2 text-nowrap`,children:[(0,k.jsx)(`span`,{className:`d-inline-flex align-items-center justify-content-center rounded-circle text-white fw-bold ${P.avatar}`,children:w.getInitials(e.getValue())}),(0,k.jsx)(`span`,{children:e.getValue()})]}),size:190}),F.display({id:`contacts`,header:`Contacts`,cell:e=>(e.row.original.metadata.contacts?.length??0)||e.row.original.batchSize,size:100}),F.display({id:`file`,header:`File`,cell:e=>{let t=e.row.original,n=(t.metadata.contacts??[]).length>0,r=t.metadata.options?.origin?.origin??`contact`;return(0,k.jsx)(`button`,{type:`button`,className:`d-inline-flex ${P.fileButton}`,title:n?`Download ${r}-contacts.csv`:`No file available`,disabled:!n,onClick:()=>w.downloadContactsCsv(t),children:(0,k.jsx)(m,{width:18,height:18})})},size:80})],R={...b,row:`${b.row} bg-white`,headerCell:`${b.headerCell} fw-medium text-secondary`};function z(e){return(0,k.jsx)(`div`,{className:`overflow-x-auto min-w-0`,children:(0,k.jsx)(c,{data:e.data,columns:L,theme:R})})}var B={application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT_UPLOAD};function V(e){let{canManageAll:t}=C();h({title:`Contact Imports`});let n=d(O({status:e.status,cursor:e.cursor,pollEnabled:e.pollAfterSubmit===`1`})),o=i.removeEmptyKeys({...e}),s=i.removeEmptyKeys({status:e.status}),c=x.getLeftNavItems(t,a.Marketing.CONTACT_IMPORT),l=n.data?.data||[],u=n.data?.pagination,f=!!e.status?.length,p=n.hasCompleted&&(l.length>0||f),m=n.hasCompleted&&!p;return(0,k.jsx)(S,{leftNavItems:c,children:(0,k.jsxs)(`div`,{className:`d-flex flex-column gap-4 p-4 h-100 min-w-0`,children:[(0,k.jsx)(`div`,{className:`d-flex align-items-start justify-content-between gap-3`,children:(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h1`,{className:`mb-2`,children:`Contact Imports`}),(0,k.jsx)(y,{breadcrumbs:[{name:`Marketing Studio`},{name:`Contact Imports`,active:!0}]})]})}),p&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`d-flex align-items-center justify-content-between flex-wrap gap-3`,children:[(0,k.jsx)(M,{queryParams:s}),(0,k.jsx)(r,{appLink:B,className:`btn btn-dark`,children:`Import contacts`})]}),(0,k.jsx)(z,{data:l}),u?.cursors&&(0,k.jsx)(N,{cursors:{next:u.cursors.next,previous:e.cursor},params:o})]}),m&&(0,k.jsxs)(g,{className:`flex-grow-1 pt-5 mt-5`,children:[(0,k.jsx)(g.Heading,{children:`No contact imports yet`}),(0,k.jsx)(g.Info,{children:`Import contacts to get started.`}),(0,k.jsx)(r,{appLink:B,className:`btn btn-dark`,children:`Import contacts`})]})]})})}export{V as ContactImportHomeView};
2
- //# sourceMappingURL=C3Lx9PwR.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{t as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./C1kx8Ra5.chunk.js";import{t as a}from"./Di_u2uix.chunk.js";import{t as o}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as s}from"./C6KIBIQi.chunk.js";import{t as c}from"./BMjA_FNA.chunk.js";import{t as l}from"./BkdBq-7h.chunk.js";import{l as u,s as d}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as f}from"./DV9yRNvx2.chunk.js";import{t as p}from"./BNgL3wBw.chunk.js";import{t as m}from"./Cng7JTd62.chunk.js";import{t as h}from"./Bv5hYKhN2.chunk.js";import{t as g}from"./DICjfxIb.chunk.js";import{t as _}from"./X4v0NYZ2.chunk.js";import{t as v}from"./DOqkOvWG2.chunk.js";import{t as y}from"./Zt6nKPom2.chunk.js";import{t as b}from"./gzUId2LV2.chunk.js";import{t as x}from"./dmUfJoJz2.chunk.js";import{t as S}from"./BrBPGjLi2.chunk.js";import{c as C,t as w}from"./DP4yQXZy.chunk.js";import{t as T}from"./CCocqcwy.chunk.js";var E=n(e()),D=5e3;function O(e){let{status:t,cursor:n,pollEnabled:r=!1}=e,i=(0,E.useMemo)(()=>{if(!t)return;let e=Array.isArray(t)?t:[t],n=w.getStatusEnumValues(e);return n.length?n:void 0},[t]),a=(0,E.useMemo)(()=>v.getJobsByType(f.MarketingProfile,null,i,n),[n,i]),o=u();return T(()=>o(a),D,r),a}var k=t(),A=[`Submitted`,`Queued`,`Pending`,`In progress`,`Complete`,`Complete with errors`,`Failed`].map(e=>({id:e,name:e}));function j(){return[{id:`status`,name:`Status`,type:`checkbox`,compatibleIndices:[`customer`],options:A}]}function M(e){return(0,k.jsx)(_,{queryParams:e.queryParams,mainFilters:j(),appLink:{application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT},constantIndices:[`customer`],analyticsOptions:null,hideHeading:!0,hideDivider:!0,noContainerPaddingBottom:!0})}function N(e){let{cursors:t,params:n}=e;return!t.previous&&!t.next?(0,k.jsx)(k.Fragment,{}):(0,k.jsx)(p,{appLink:{application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT,params:n},buttonVariant:`outline-dark`,className:`d-flex justify-content-end`,cursors:t,prevHack:!0})}var P={originName:`_originName_5x1h0_1`,badge:`_badge_5x1h0_4`,statusScheduled:`_statusScheduled_5x1h0_8`,statusInProgress:`_statusInProgress_5x1h0_12`,statusComplete:`_statusComplete_5x1h0_16`,statusWarning:`_statusWarning_5x1h0_20`,statusFailed:`_statusFailed_5x1h0_24`,avatar:`_avatar_5x1h0_28`,fileButton:`_fileButton_5x1h0_34`,destinationLogos:`_destinationLogos_5x1h0_40`,destinationLogo:`_destinationLogo_5x1h0_40`},F=s(),I={Submitted:P.statusScheduled,Queued:P.statusScheduled,Pending:P.statusScheduled,"In progress":P.statusInProgress,Complete:P.statusComplete,"Complete with errors":P.statusWarning,Failed:P.statusFailed},L=[F.accessor(`dateCreated`,{id:`date`,header:`Date`,cell:e=>l.formatUtcString(e.getValue(),`DD/MM/YYYY hh:mm A`),size:170}),F.display({id:`destination`,header:`Destination`,cell:e=>{let t=w.getContactImportJobDestinations(e.row.original);return t.length?(0,k.jsx)(`div`,{className:`d-flex align-items-center ${P.destinationLogos}`,children:t.map((e,n)=>(0,k.jsx)(`img`,{className:P.destinationLogo,style:{zIndex:t.length-n},src:e.logo,alt:e.label,width:24,height:24},e.field))}):(0,k.jsx)(`span`,{className:`text-secondary`,children:`Unknown`})},size:110}),F.display({id:`originType`,header:`Origin type`,cell:e=>e.row.original.metadata.options?.origin?.type??`—`,size:170}),F.display({id:`originName`,header:`Origin name`,cell:e=>(0,k.jsx)(`span`,{className:`d-block text-truncate ${P.originName}`,children:e.row.original.metadata.options?.origin?.origin??`—`}),size:220}),F.accessor(`status`,{id:`status`,header:`Status`,cell:e=>{let t=w.getStatusLabel(e.getValue());return(0,k.jsx)(`span`,{className:`d-inline-flex align-items-center justify-content-center rounded-pill fw-semibold text-nowrap ${P.badge} ${I[t]}`,children:t})},size:180}),F.accessor(`submitterName`,{id:`performedBy`,header:`Performed by`,cell:e=>(0,k.jsxs)(`div`,{className:`d-flex align-items-center gap-2 text-nowrap`,children:[(0,k.jsx)(`span`,{className:`d-inline-flex align-items-center justify-content-center rounded-circle text-white fw-bold ${P.avatar}`,children:w.getInitials(e.getValue())}),(0,k.jsx)(`span`,{children:e.getValue()})]}),size:190}),F.display({id:`contacts`,header:`Contacts`,cell:e=>(e.row.original.metadata.contacts?.length??0)||e.row.original.batchSize,size:100}),F.display({id:`file`,header:`File`,cell:e=>{let t=e.row.original,n=(t.metadata.contacts??[]).length>0,r=t.metadata.options?.origin?.origin??`contact`;return(0,k.jsx)(`button`,{type:`button`,className:`d-inline-flex ${P.fileButton}`,title:n?`Download ${r}-contacts.csv`:`No file available`,disabled:!n,onClick:()=>w.downloadContactsCsv(t),children:(0,k.jsx)(m,{width:18,height:18})})},size:80})],R={...b,row:`${b.row} bg-white`,headerCell:`${b.headerCell} fw-medium text-secondary`};function z(e){return(0,k.jsx)(`div`,{className:`overflow-x-auto min-w-0`,children:(0,k.jsx)(c,{data:e.data,columns:L,theme:R})})}var B={application:o.MARKETING_APP,action:a.Marketing.CONTACT_IMPORT_UPLOAD};function V(e){let{canManageAll:t}=C();h({title:`Contact Imports`});let n=d(O({status:e.status,cursor:e.cursor,pollEnabled:e.pollAfterSubmit===`1`})),o=i.removeEmptyKeys({...e}),s=i.removeEmptyKeys({status:e.status}),c=x.getLeftNavItems(t,a.Marketing.CONTACT_IMPORT),l=n.data?.data||[],u=n.data?.pagination,f=!!e.status?.length,p=n.hasCompleted&&(l.length>0||f),m=n.hasCompleted&&!p;return(0,k.jsx)(S,{leftNavItems:c,children:(0,k.jsxs)(`div`,{className:`d-flex flex-column gap-4 p-4 h-100 min-w-0`,children:[(0,k.jsx)(`div`,{className:`d-flex align-items-start justify-content-between gap-3`,children:(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h1`,{className:`mb-2`,children:`Contact Imports`}),(0,k.jsx)(y,{breadcrumbs:[{name:`Marketing Studio`},{name:`Contact Imports`,active:!0}]})]})}),p&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`d-flex align-items-center justify-content-between flex-wrap gap-3`,children:[(0,k.jsx)(M,{queryParams:s}),(0,k.jsx)(r,{appLink:B,className:`btn btn-dark`,children:`Import contacts`})]}),(0,k.jsx)(z,{data:l}),u?.cursors&&(0,k.jsx)(N,{cursors:{next:u.cursors.next,previous:e.cursor},params:o})]}),m&&(0,k.jsxs)(g,{className:`flex-grow-1 pt-5 mt-5`,children:[(0,k.jsx)(g.Heading,{children:`No contact imports yet`}),(0,k.jsx)(g.Info,{children:`Import contacts to get started.`}),(0,k.jsx)(r,{appLink:B,className:`btn btn-dark`,children:`Import contacts`})]})]})})}export{V as ContactImportHomeView};
2
+ //# sourceMappingURL=C4eazpDh.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C3Lx9PwR.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/hooks/useContactImportJobs.ts","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportFilters.tsx","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportPagination.tsx","../../../../../src/apps/marketing/views/contact-import/home/components/contact-import-table.module.scss","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportTable.tsx","../../../../../src/apps/marketing/views/contact-import/home/ContactImportHomeView.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\n\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { ContactImportHelper } from 'apps/marketing/utils/ContactImportHelper';\n\nconst POLL_INTERVAL_MS = 5000;\n\ninterface UseContactImportJobsOptions {\n status?: string | string[];\n cursor?: string;\n pollEnabled?: boolean;\n}\n\nexport function useContactImportJobsRequest(options: UseContactImportJobsOptions) {\n const { status, cursor, pollEnabled = false } = options;\n\n const serverStatuses = useMemo(() => {\n if (!status) return undefined;\n const labels = Array.isArray(status) ? status : [status];\n const values = ContactImportHelper.getStatusEnumValues(labels);\n return values.length ? values : undefined;\n }, [status]);\n\n const request = useMemo(\n () => JobRequests.getJobsByType(BatchJobType.MarketingProfile, null, serverStatuses, cursor),\n [ cursor, serverStatuses ]\n );\n\n const fetchJobs = useGetFetch();\n usePolling(() => fetchJobs(request), POLL_INTERVAL_MS, pollEnabled);\n\n return request;\n}\n","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ContactImportStatusLabel } from 'apps/marketing/utils/ContactImportHelper';\n\nconst ALL_STATUS_OPTIONS: FilterOption[] = ([\n 'Submitted', 'Queued', 'Pending', 'In progress', 'Complete', 'Complete with errors', 'Failed'\n] as ContactImportStatusLabel[]).map(label => ({ id: label, name: label }));\n\nfunction buildFilters(): SearchFilter[] {\n return [\n {\n id: 'status',\n name: 'Status',\n type: 'checkbox',\n compatibleIndices: ['customer'],\n options: ALL_STATUS_OPTIONS\n }\n ];\n}\n\nexport interface ContactImportFilterValues {\n status?: string | string[];\n}\n\ninterface ContactImportFiltersProps {\n queryParams: HashObject;\n}\n\nexport function ContactImportFilters(props: ContactImportFiltersProps): JSX.Element {\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={buildFilters()}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT\n }}\n constantIndices={['customer']}\n analyticsOptions={null}\n hideHeading\n hideDivider\n noContainerPaddingBottom\n />\n );\n}\n","import React from 'react';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\ninterface ContactImportPaginationProps {\n cursors: Cursors;\n params: HashObject;\n}\n\nexport function ContactImportPagination(props: ContactImportPaginationProps): JSX.Element {\n const { cursors, params } = props;\n\n if (!cursors.previous && !cursors.next)\n return <></>;\n\n const appLink: Core.AppLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT,\n params\n };\n\n return (\n <Pagination\n appLink={appLink}\n buttonVariant='outline-dark'\n className='d-flex justify-content-end'\n cursors={cursors}\n prevHack\n />\n );\n}\n",":local {\n .originName {\n max-width: 220px;\n }\n\n .badge {\n padding: 0.3rem 0.7rem;\n font-size: 0.8rem;\n }\n\n .statusScheduled {\n background: $light-blue;\n color: $gray-800;\n }\n\n .statusInProgress {\n background: $light-blue;\n color: $blue;\n }\n\n .statusComplete {\n background: $light-green;\n color: $green;\n }\n\n .statusWarning {\n background: $light-yellow;\n color: $yellow;\n }\n\n .statusFailed {\n background: $light-red;\n color: $red;\n }\n\n .avatar {\n width: 1.75rem;\n height: 1.75rem;\n background: $navy;\n font-size: 0.7rem;\n }\n\n .fileButton {\n width: 2rem;\n height: 2rem;\n border-color: $gray-300;\n color: $gray-800;\n }\n\n .destinationLogos {\n .destinationLogo {\n position: relative;\n flex-shrink: 0;\n object-fit: contain;\n\n &:not(:first-child) {\n margin-left: -0.25rem;\n }\n }\n }\n}\n","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { DownloadSvg } from 'libs/shared/images/svg/actions/DownloadSvg';\n\nimport { CrmStudioTableTheme } from 'apps/crm-studio/components/tables/CrmStudioTableTheme';\nimport { ContactImportJob } from 'apps/marketing/interfaces/ContactImportJob';\nimport { ContactImportHelper, ContactImportStatusLabel } from 'apps/marketing/utils/ContactImportHelper';\n\nimport styles from './contact-import-table.module.scss';\n\nconst columnHelper = createColumnHelper<ContactImportJob>();\n\nconst STATUS_CLASS_MAP: Record<ContactImportStatusLabel, string> = {\n 'Submitted': styles.statusScheduled,\n 'Queued': styles.statusScheduled,\n 'Pending': styles.statusScheduled,\n 'In progress': styles.statusInProgress,\n 'Complete': styles.statusComplete,\n 'Complete with errors': styles.statusWarning,\n 'Failed': styles.statusFailed\n};\n\nconst columns = [\n columnHelper.accessor('dateCreated', {\n id: 'date',\n header: 'Date',\n cell: props => DateHelper.formatUtcString(props.getValue(), 'DD/MM/YYYY hh:mm A'),\n size: 170\n }),\n columnHelper.display({\n id: 'destination',\n header: 'Destination',\n cell: props => {\n const destinations = ContactImportHelper.getContactImportJobDestinations(props.row.original);\n\n if (!destinations.length)\n return <span className='text-secondary'>Unknown</span>;\n\n return (\n <div className={`d-flex align-items-center ${styles.destinationLogos}`}>\n {destinations.map((destination, index) => (\n <img\n key={destination.field}\n className={styles.destinationLogo}\n style={{ zIndex: destinations.length - index }}\n src={destination.logo}\n alt={destination.label}\n width={24}\n height={24}\n />\n ))}\n </div>\n );\n },\n size: 110\n }),\n columnHelper.display({\n id: 'originType',\n header: 'Origin type',\n cell: props => props.row.original.metadata.options?.origin?.type ?? '—',\n size: 170\n }),\n columnHelper.display({\n id: 'originName',\n header: 'Origin name',\n cell: props => (\n <span className={`d-block text-truncate ${styles.originName}`}>\n {props.row.original.metadata.options?.origin?.origin ?? '—'}\n </span>\n ),\n size: 220\n }),\n columnHelper.accessor('status', {\n id: 'status',\n header: 'Status',\n cell: props => {\n const label = ContactImportHelper.getStatusLabel(props.getValue());\n\n return (\n <span className={`d-inline-flex align-items-center justify-content-center rounded-pill fw-semibold text-nowrap ${styles.badge} ${STATUS_CLASS_MAP[label]}`}>\n {label}\n </span>\n );\n },\n size: 180\n }),\n columnHelper.accessor('submitterName', {\n id: 'performedBy',\n header: 'Performed by',\n cell: props => (\n <div className='d-flex align-items-center gap-2 text-nowrap'>\n <span className={`d-inline-flex align-items-center justify-content-center rounded-circle text-white fw-bold ${styles.avatar}`}>\n {ContactImportHelper.getInitials(props.getValue())}\n </span>\n <span>{props.getValue()}</span>\n </div>\n ),\n size: 190\n }),\n columnHelper.display({\n id: 'contacts',\n header: 'Contacts',\n cell: props => (props.row.original.metadata.contacts?.length ?? 0) || props.row.original.batchSize,\n size: 100\n }),\n columnHelper.display({\n id: 'file',\n header: 'File',\n cell: props => {\n const job = props.row.original;\n const contacts = job.metadata.contacts ?? [];\n const hasContacts = contacts.length > 0;\n const originLabel = job.metadata.options?.origin?.origin ?? 'contact';\n\n return (\n <button\n type='button'\n className={`d-inline-flex ${styles.fileButton}`}\n title={hasContacts ? `Download ${originLabel}-contacts.csv` : 'No file available'}\n disabled={!hasContacts}\n onClick={() => ContactImportHelper.downloadContactsCsv(job)}\n >\n <DownloadSvg width={18} height={18} />\n </button>\n );\n },\n size: 80\n })\n];\n\nconst theme = {\n ...CrmStudioTableTheme,\n row: `${CrmStudioTableTheme.row} bg-white`,\n headerCell: `${CrmStudioTableTheme.headerCell} fw-medium text-secondary`\n};\n\ninterface ContactImportTableProps {\n data: ContactImportJob[];\n}\n\nexport function ContactImportTable(props: ContactImportTableProps) {\n return (\n <div className='overflow-x-auto min-w-0'>\n <TableV2\n data={props.data}\n columns={columns}\n theme={theme}\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces/collections/primitives/BasePaginatedCollection';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { useContactImportJobsRequest } from 'apps/marketing/hooks/useContactImportJobs';\nimport { useMarketingPermissions } from 'apps/marketing/hooks/useMarketingPermissions';\nimport { ContactImportJob } from 'apps/marketing/interfaces/ContactImportJob';\nimport { MarketingLayoutView } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nimport { ContactImportFilters, ContactImportFilterValues } from './components/ContactImportFilters';\nimport { ContactImportPagination } from './components/ContactImportPagination';\nimport { ContactImportTable } from './components/ContactImportTable';\n\nconst IMPORT_APP_LINK = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT_UPLOAD\n};\n\ninterface ContactImportHomeViewProps extends ContactImportFilterValues {\n cursor?: string;\n previous?: string;\n pollAfterSubmit?: string;\n}\n\nexport function ContactImportHomeView(props: ContactImportHomeViewProps): JSX.Element {\n const { canManageAll } = useMarketingPermissions();\n useSetPageMetadata({ title: 'Contact Imports' });\n\n const jobsRequest = useContactImportJobsRequest({\n status: props.status,\n cursor: props.cursor,\n pollEnabled: props.pollAfterSubmit === '1'\n });\n\n const jobsResponse = Flight.useBasicFetch<BasePaginatedCollection<ContactImportJob>>(jobsRequest);\n\n const queryParams = ObjectHelper.removeEmptyKeys({ ...props });\n const filterParams = ObjectHelper.removeEmptyKeys({ status: props.status });\n const leftNavItems = MarketingHelper.getLeftNavItems(canManageAll, Actions.Marketing.CONTACT_IMPORT);\n\n const jobs = jobsResponse.data?.data || [];\n const pagination = jobsResponse.data?.pagination;\n const hasFilters = !!props.status?.length;\n const showTable = jobsResponse.hasCompleted && (jobs.length > 0 || hasFilters);\n const showEmptyState = jobsResponse.hasCompleted && !showTable;\n\n return (\n <MarketingLayoutView leftNavItems={leftNavItems}>\n <div className='d-flex flex-column gap-4 p-4 h-100 min-w-0'>\n <div className='d-flex align-items-start justify-content-between gap-3'>\n <div>\n <h1 className='mb-2'>Contact Imports</h1>\n <Breadcrumbs breadcrumbs={[{ name: 'Marketing Studio' }, { name: 'Contact Imports', active: true }]} />\n </div>\n </div>\n\n {showTable && (\n <>\n <div className='d-flex align-items-center justify-content-between flex-wrap gap-3'>\n <ContactImportFilters queryParams={filterParams} />\n\n <AppLink appLink={IMPORT_APP_LINK} className='btn btn-dark'>\n Import contacts\n </AppLink>\n </div>\n\n <ContactImportTable data={jobs} />\n\n {pagination?.cursors && (\n <ContactImportPagination\n cursors={{ next: pagination.cursors.next, previous: props.cursor }}\n params={queryParams}\n />\n )}\n </>\n )}\n\n {showEmptyState && (\n <EmptyState className='flex-grow-1 pt-5 mt-5'>\n <EmptyState.Heading>No contact imports yet</EmptyState.Heading>\n <EmptyState.Info>Import contacts to get started.</EmptyState.Info>\n <AppLink appLink={IMPORT_APP_LINK} className='btn btn-dark'>\n Import contacts\n </AppLink>\n </EmptyState>\n )}\n </div>\n </MarketingLayoutView>\n );\n}\n"],"mappings":"09BAWM,EAAmB,IAQzB,SAAgB,EAA4B,EAAsC,CAChF,GAAM,CAAE,SAAQ,SAAQ,cAAc,IAAU,EAE1C,GAAA,EAAA,EAAA,QAAA,KAA+B,CACnC,GAAI,CAAC,EAAQ,OACb,IAAM,EAAS,MAAM,QAAQ,CAAM,EAAI,EAAS,CAAC,CAAM,EACjD,EAAS,EAAoB,oBAAoB,CAAM,EAC7D,OAAO,EAAO,OAAS,EAAS,IAAA,EAClC,EAAG,CAAC,CAAM,CAAC,EAEL,GAAA,EAAA,EAAA,QAAA,KACE,EAAY,cAAc,EAAa,iBAAkB,KAAM,EAAgB,CAAM,EAC3F,CAAE,EAAQ,CAAe,CAC3B,EAEM,EAAY,EAAY,EAG9B,OAFA,MAAiB,EAAU,CAAO,EAAG,EAAkB,CAAW,EAE3D,CACT,WC3BM,EAAsC,CAC1C,YAAa,SAAU,UAAW,cAAe,WAAY,uBAAwB,QACvF,CAAC,CAAgC,IAAI,IAAU,CAAE,GAAI,EAAO,KAAM,CAAM,EAAE,EAE1E,SAAS,GAA+B,CACtC,MAAO,CACL,CACE,GAAI,SACJ,KAAM,SACN,KAAM,WACN,kBAAmB,CAAC,UAAU,EAC9B,QAAS,CACX,CACF,CACF,CAUA,SAAgB,EAAqB,EAA+C,CAClF,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAa,EAAM,YACnB,YAAa,EAAa,EAC1B,QAAS,CACP,YAAa,EAAY,cACzB,OAAQ,EAAQ,UAAU,cAC5B,EACA,gBAAiB,CAAC,UAAU,EAC5B,iBAAkB,KAClB,YAAA,GACA,YAAA,GACA,yBAAA,EACD,CAAA,CAEL,CCpCA,SAAgB,EAAwB,EAAkD,CACxF,GAAM,CAAE,UAAS,UAAW,EAW5B,MATI,CAAC,EAAQ,UAAY,CAAC,EAAQ,MACzB,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GASX,EAAA,EAAA,IAAA,CAAC,EAAD,CACW,QAAA,CAPX,YAAa,EAAY,cACzB,OAAQ,EAAQ,UAAU,eAC1B,QAKW,EACT,cAAc,eACd,UAAU,6BACD,UACT,SAAA,EACD,CAAA,CAEL,waEtBM,EAAe,EAAqC,EAEpD,EAA6D,CACjE,UAAa,EAAO,gBACpB,OAAU,EAAO,gBACjB,QAAW,EAAO,gBAClB,cAAe,EAAO,iBACtB,SAAY,EAAO,eACnB,uBAAwB,EAAO,cAC/B,OAAU,EAAO,YACnB,EAEM,EAAU,CACd,EAAa,SAAS,cAAe,CACnC,GAAI,OACJ,OAAQ,OACR,KAAM,GAAS,EAAW,gBAAgB,EAAM,SAAS,EAAG,oBAAoB,EAChF,KAAM,GACR,CAAC,EACD,EAAa,QAAQ,CACnB,GAAI,cACJ,OAAQ,cACR,KAAM,GAAS,CACb,IAAM,EAAe,EAAoB,gCAAgC,EAAM,IAAI,QAAQ,EAK3F,OAHK,EAAa,QAIhB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,6BAA6B,EAAO,4BACjD,EAAa,KAAK,EAAa,KAC9B,EAAA,EAAA,IAAA,CAAC,MAAD,CAEE,UAAW,EAAO,gBAClB,MAAO,CAAE,OAAQ,EAAa,OAAS,CAAM,EAC7C,IAAK,EAAY,KACjB,IAAK,EAAY,MACjB,MAAO,GACP,OAAQ,EACT,EAPM,EAAY,KAOlB,CACF,CACE,CAAA,GAfE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,0BAAiB,SAAa,CAAA,CAiBzD,EACA,KAAM,GACR,CAAC,EACD,EAAa,QAAQ,CACnB,GAAI,aACJ,OAAQ,cACR,KAAM,GAAS,EAAM,IAAI,SAAS,SAAS,SAAS,QAAQ,MAAQ,IACpE,KAAM,GACR,CAAC,EACD,EAAa,QAAQ,CACnB,GAAI,aACJ,OAAQ,cACR,KAAM,IACJ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,yBAAyB,EAAO,sBAC9C,EAAM,IAAI,SAAS,SAAS,SAAS,QAAQ,QAAU,GACpD,CAAA,EAER,KAAM,GACR,CAAC,EACD,EAAa,SAAS,SAAU,CAC9B,GAAI,SACJ,OAAQ,SACR,KAAM,GAAS,CACb,IAAM,EAAQ,EAAoB,eAAe,EAAM,SAAS,CAAC,EAEjE,OACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,gGAAgG,EAAO,MAAM,GAAG,EAAiB,cAC/I,CACG,CAAA,CAEV,EACA,KAAM,GACR,CAAC,EACD,EAAa,SAAS,gBAAiB,CACrC,GAAI,cACJ,OAAQ,eACR,KAAM,IACJ,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uDAAf,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,6FAA6F,EAAO,kBAClH,EAAoB,YAAY,EAAM,SAAS,CAAC,CAC7C,CAAA,GACN,EAAA,EAAA,IAAA,CAAC,OAAD,CAAA,SAAO,EAAM,SAAS,CAAQ,CAAA,CAC3B,IAEP,KAAM,GACR,CAAC,EACD,EAAa,QAAQ,CACnB,GAAI,WACJ,OAAQ,WACR,KAAM,IAAU,EAAM,IAAI,SAAS,SAAS,UAAU,QAAU,IAAM,EAAM,IAAI,SAAS,UACzF,KAAM,GACR,CAAC,EACD,EAAa,QAAQ,CACnB,GAAI,OACJ,OAAQ,OACR,KAAM,GAAS,CACb,IAAM,EAAM,EAAM,IAAI,SAEhB,GADW,EAAI,SAAS,UAAY,CAAC,EAAA,CACd,OAAS,EAChC,EAAc,EAAI,SAAS,SAAS,QAAQ,QAAU,UAE5D,OACE,EAAA,EAAA,IAAA,CAAC,SAAD,CACE,KAAK,SACL,UAAW,iBAAiB,EAAO,aACnC,MAAO,EAAc,YAAY,EAAY,eAAiB,oBAC9D,SAAU,CAAC,EACX,YAAe,EAAoB,oBAAoB,CAAG,YAE1D,EAAA,EAAA,IAAA,CAAC,EAAD,CAAa,MAAO,GAAI,OAAQ,EAAK,CAAA,CAC/B,CAAA,CAEZ,EACA,KAAM,EACR,CAAC,CACH,EAEM,EAAQ,CACZ,GAAG,EACH,IAAK,GAAG,EAAoB,IAAI,WAChC,WAAY,GAAG,EAAoB,WAAW,0BAChD,EAMA,SAAgB,EAAmB,EAAgC,CACjE,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,oCACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EAAM,KACH,UACF,OACR,CAAA,CACE,CAAA,CAET,CCnIA,IAAM,EAAkB,CACtB,YAAa,EAAY,cACzB,OAAQ,EAAQ,UAAU,qBAC5B,EAQA,SAAgB,EAAsB,EAAgD,CACpF,GAAM,CAAE,gBAAiB,EAAwB,EACjD,EAAmB,CAAE,MAAO,iBAAkB,CAAC,EAQ/C,IAAM,EAAe,EAND,EAA4B,CAC9C,OAAQ,EAAM,OACd,OAAQ,EAAM,OACd,YAAa,EAAM,kBAAoB,GACzC,CAEqF,CAAW,EAE1F,EAAc,EAAa,gBAAgB,CAAE,GAAG,CAAM,CAAC,EACvD,EAAe,EAAa,gBAAgB,CAAE,OAAQ,EAAM,MAAO,CAAC,EACpE,EAAe,EAAgB,gBAAgB,EAAc,EAAQ,UAAU,cAAc,EAE7F,EAAO,EAAa,MAAM,MAAQ,CAAC,EACnC,EAAa,EAAa,MAAM,WAChC,EAAa,CAAC,CAAC,EAAM,QAAQ,OAC7B,EAAY,EAAa,eAAiB,EAAK,OAAS,GAAK,GAC7D,EAAiB,EAAa,cAAgB,CAAC,EAErD,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAmC,yBACjC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,sDAAf,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,mEACb,EAAA,EAAA,KAAA,CAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,gBAAO,iBAAmB,CAAA,GACxC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAa,YAAa,CAAC,CAAE,KAAM,kBAAmB,EAAG,CAAE,KAAM,kBAAmB,OAAQ,EAAK,CAAC,CAAI,CAAA,CACnG,CAAA,CAAA,CACF,CAAA,EAEJ,IACC,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6EAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,YAAa,CAAe,CAAA,GAElD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,QAAS,EAAiB,UAAU,wBAAe,iBAEnD,CAAA,CACN,KAEL,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,KAAM,CAAO,CAAA,EAEhC,GAAY,UACX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,CAAE,KAAM,EAAW,QAAQ,KAAM,SAAU,EAAM,MAAO,EACjE,OAAQ,CACT,CAAA,CAEH,CAAA,CAAA,EAGH,IACC,EAAA,EAAA,KAAA,CAAC,EAAD,CAAY,UAAU,iCAAtB,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAoB,wBAA0C,CAAA,GAC9D,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAA,SAAiB,iCAAgD,CAAA,GACjE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,QAAS,EAAiB,UAAU,wBAAe,iBAEnD,CAAA,CACC,GAEX,GACc,CAAA,CAEzB"}
1
+ {"version":3,"file":"C4eazpDh.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/hooks/useContactImportJobs.ts","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportFilters.tsx","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportPagination.tsx","../../../../../src/apps/marketing/views/contact-import/home/components/contact-import-table.module.scss","../../../../../src/apps/marketing/views/contact-import/home/components/ContactImportTable.tsx","../../../../../src/apps/marketing/views/contact-import/home/ContactImportHomeView.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useGetFetch } from 'libs/common/react/flight';\nimport { usePolling } from 'libs/common/react/hooks/UsePolling';\n\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { ContactImportHelper } from 'apps/marketing/utils/ContactImportHelper';\n\nconst POLL_INTERVAL_MS = 5000;\n\ninterface UseContactImportJobsOptions {\n status?: string | string[];\n cursor?: string;\n pollEnabled?: boolean;\n}\n\nexport function useContactImportJobsRequest(options: UseContactImportJobsOptions) {\n const { status, cursor, pollEnabled = false } = options;\n\n const serverStatuses = useMemo(() => {\n if (!status) return undefined;\n const labels = Array.isArray(status) ? status : [status];\n const values = ContactImportHelper.getStatusEnumValues(labels);\n return values.length ? values : undefined;\n }, [status]);\n\n const request = useMemo(\n () => JobRequests.getJobsByType(BatchJobType.MarketingProfile, null, serverStatuses, cursor),\n [ cursor, serverStatuses ]\n );\n\n const fetchJobs = useGetFetch();\n usePolling(() => fetchJobs(request), POLL_INTERVAL_MS, pollEnabled);\n\n return request;\n}\n","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ContactImportStatusLabel } from 'apps/marketing/utils/ContactImportHelper';\n\nconst ALL_STATUS_OPTIONS: FilterOption[] = ([\n 'Submitted', 'Queued', 'Pending', 'In progress', 'Complete', 'Complete with errors', 'Failed'\n] as ContactImportStatusLabel[]).map(label => ({ id: label, name: label }));\n\nfunction buildFilters(): SearchFilter[] {\n return [\n {\n id: 'status',\n name: 'Status',\n type: 'checkbox',\n compatibleIndices: ['customer'],\n options: ALL_STATUS_OPTIONS\n }\n ];\n}\n\nexport interface ContactImportFilterValues {\n status?: string | string[];\n}\n\ninterface ContactImportFiltersProps {\n queryParams: HashObject;\n}\n\nexport function ContactImportFilters(props: ContactImportFiltersProps): JSX.Element {\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={buildFilters()}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT\n }}\n constantIndices={['customer']}\n analyticsOptions={null}\n hideHeading\n hideDivider\n noContainerPaddingBottom\n />\n );\n}\n","import React from 'react';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\ninterface ContactImportPaginationProps {\n cursors: Cursors;\n params: HashObject;\n}\n\nexport function ContactImportPagination(props: ContactImportPaginationProps): JSX.Element {\n const { cursors, params } = props;\n\n if (!cursors.previous && !cursors.next)\n return <></>;\n\n const appLink: Core.AppLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT,\n params\n };\n\n return (\n <Pagination\n appLink={appLink}\n buttonVariant='outline-dark'\n className='d-flex justify-content-end'\n cursors={cursors}\n prevHack\n />\n );\n}\n",":local {\n .originName {\n max-width: 220px;\n }\n\n .badge {\n padding: 0.3rem 0.7rem;\n font-size: 0.8rem;\n }\n\n .statusScheduled {\n background: $light-blue;\n color: $gray-800;\n }\n\n .statusInProgress {\n background: $light-blue;\n color: $blue;\n }\n\n .statusComplete {\n background: $light-green;\n color: $green;\n }\n\n .statusWarning {\n background: $light-yellow;\n color: $yellow;\n }\n\n .statusFailed {\n background: $light-red;\n color: $red;\n }\n\n .avatar {\n width: 1.75rem;\n height: 1.75rem;\n background: $navy;\n font-size: 0.7rem;\n }\n\n .fileButton {\n width: 2rem;\n height: 2rem;\n border-color: $gray-300;\n color: $gray-800;\n }\n\n .destinationLogos {\n .destinationLogo {\n position: relative;\n flex-shrink: 0;\n object-fit: contain;\n\n &:not(:first-child) {\n margin-left: -0.25rem;\n }\n }\n }\n}\n","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { DownloadSvg } from 'libs/shared/images/svg/actions/DownloadSvg';\n\nimport { CrmStudioTableTheme } from 'apps/crm-studio/components/tables/CrmStudioTableTheme';\nimport { ContactImportJob } from 'apps/marketing/interfaces/ContactImportJob';\nimport { ContactImportHelper, ContactImportStatusLabel } from 'apps/marketing/utils/ContactImportHelper';\n\nimport styles from './contact-import-table.module.scss';\n\nconst columnHelper = createColumnHelper<ContactImportJob>();\n\nconst STATUS_CLASS_MAP: Record<ContactImportStatusLabel, string> = {\n 'Submitted': styles.statusScheduled,\n 'Queued': styles.statusScheduled,\n 'Pending': styles.statusScheduled,\n 'In progress': styles.statusInProgress,\n 'Complete': styles.statusComplete,\n 'Complete with errors': styles.statusWarning,\n 'Failed': styles.statusFailed\n};\n\nconst columns = [\n columnHelper.accessor('dateCreated', {\n id: 'date',\n header: 'Date',\n cell: props => DateHelper.formatUtcString(props.getValue(), 'DD/MM/YYYY hh:mm A'),\n size: 170\n }),\n columnHelper.display({\n id: 'destination',\n header: 'Destination',\n cell: props => {\n const destinations = ContactImportHelper.getContactImportJobDestinations(props.row.original);\n\n if (!destinations.length)\n return <span className='text-secondary'>Unknown</span>;\n\n return (\n <div className={`d-flex align-items-center ${styles.destinationLogos}`}>\n {destinations.map((destination, index) => (\n <img\n key={destination.field}\n className={styles.destinationLogo}\n style={{ zIndex: destinations.length - index }}\n src={destination.logo}\n alt={destination.label}\n width={24}\n height={24}\n />\n ))}\n </div>\n );\n },\n size: 110\n }),\n columnHelper.display({\n id: 'originType',\n header: 'Origin type',\n cell: props => props.row.original.metadata.options?.origin?.type ?? '—',\n size: 170\n }),\n columnHelper.display({\n id: 'originName',\n header: 'Origin name',\n cell: props => (\n <span className={`d-block text-truncate ${styles.originName}`}>\n {props.row.original.metadata.options?.origin?.origin ?? '—'}\n </span>\n ),\n size: 220\n }),\n columnHelper.accessor('status', {\n id: 'status',\n header: 'Status',\n cell: props => {\n const label = ContactImportHelper.getStatusLabel(props.getValue());\n\n return (\n <span className={`d-inline-flex align-items-center justify-content-center rounded-pill fw-semibold text-nowrap ${styles.badge} ${STATUS_CLASS_MAP[label]}`}>\n {label}\n </span>\n );\n },\n size: 180\n }),\n columnHelper.accessor('submitterName', {\n id: 'performedBy',\n header: 'Performed by',\n cell: props => (\n <div className='d-flex align-items-center gap-2 text-nowrap'>\n <span className={`d-inline-flex align-items-center justify-content-center rounded-circle text-white fw-bold ${styles.avatar}`}>\n {ContactImportHelper.getInitials(props.getValue())}\n </span>\n <span>{props.getValue()}</span>\n </div>\n ),\n size: 190\n }),\n columnHelper.display({\n id: 'contacts',\n header: 'Contacts',\n cell: props => (props.row.original.metadata.contacts?.length ?? 0) || props.row.original.batchSize,\n size: 100\n }),\n columnHelper.display({\n id: 'file',\n header: 'File',\n cell: props => {\n const job = props.row.original;\n const contacts = job.metadata.contacts ?? [];\n const hasContacts = contacts.length > 0;\n const originLabel = job.metadata.options?.origin?.origin ?? 'contact';\n\n return (\n <button\n type='button'\n className={`d-inline-flex ${styles.fileButton}`}\n title={hasContacts ? `Download ${originLabel}-contacts.csv` : 'No file available'}\n disabled={!hasContacts}\n onClick={() => ContactImportHelper.downloadContactsCsv(job)}\n >\n <DownloadSvg width={18} height={18} />\n </button>\n );\n },\n size: 80\n })\n];\n\nconst theme = {\n ...CrmStudioTableTheme,\n row: `${CrmStudioTableTheme.row} bg-white`,\n headerCell: `${CrmStudioTableTheme.headerCell} fw-medium text-secondary`\n};\n\ninterface ContactImportTableProps {\n data: ContactImportJob[];\n}\n\nexport function ContactImportTable(props: ContactImportTableProps) {\n return (\n <div className='overflow-x-auto min-w-0'>\n <TableV2\n data={props.data}\n columns={columns}\n theme={theme}\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces/collections/primitives/BasePaginatedCollection';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { useContactImportJobsRequest } from 'apps/marketing/hooks/useContactImportJobs';\nimport { useMarketingPermissions } from 'apps/marketing/hooks/useMarketingPermissions';\nimport { ContactImportJob } from 'apps/marketing/interfaces/ContactImportJob';\nimport { MarketingLayoutView } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nimport { ContactImportFilters, ContactImportFilterValues } from './components/ContactImportFilters';\nimport { ContactImportPagination } from './components/ContactImportPagination';\nimport { ContactImportTable } from './components/ContactImportTable';\n\nconst IMPORT_APP_LINK = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CONTACT_IMPORT_UPLOAD\n};\n\ninterface ContactImportHomeViewProps extends ContactImportFilterValues {\n cursor?: string;\n previous?: string;\n pollAfterSubmit?: string;\n}\n\nexport function ContactImportHomeView(props: ContactImportHomeViewProps): JSX.Element {\n const { canManageAll } = useMarketingPermissions();\n useSetPageMetadata({ title: 'Contact Imports' });\n\n const jobsRequest = useContactImportJobsRequest({\n status: props.status,\n cursor: props.cursor,\n pollEnabled: props.pollAfterSubmit === '1'\n });\n\n const jobsResponse = Flight.useBasicFetch<BasePaginatedCollection<ContactImportJob>>(jobsRequest);\n\n const queryParams = ObjectHelper.removeEmptyKeys({ ...props });\n const filterParams = ObjectHelper.removeEmptyKeys({ status: props.status });\n const leftNavItems = MarketingHelper.getLeftNavItems(canManageAll, Actions.Marketing.CONTACT_IMPORT);\n\n const jobs = jobsResponse.data?.data || [];\n const pagination = jobsResponse.data?.pagination;\n const hasFilters = !!props.status?.length;\n const showTable = jobsResponse.hasCompleted && (jobs.length > 0 || hasFilters);\n const showEmptyState = jobsResponse.hasCompleted && !showTable;\n\n return (\n <MarketingLayoutView leftNavItems={leftNavItems}>\n <div className='d-flex flex-column gap-4 p-4 h-100 min-w-0'>\n <div className='d-flex align-items-start justify-content-between gap-3'>\n <div>\n <h1 className='mb-2'>Contact Imports</h1>\n <Breadcrumbs breadcrumbs={[{ name: 'Marketing Studio' }, { name: 'Contact Imports', active: true }]} />\n </div>\n </div>\n\n {showTable && (\n <>\n <div className='d-flex align-items-center justify-content-between flex-wrap gap-3'>\n <ContactImportFilters queryParams={filterParams} />\n\n <AppLink appLink={IMPORT_APP_LINK} className='btn btn-dark'>\n Import contacts\n </AppLink>\n </div>\n\n <ContactImportTable data={jobs} />\n\n {pagination?.cursors && (\n <ContactImportPagination\n cursors={{ next: pagination.cursors.next, previous: props.cursor }}\n params={queryParams}\n />\n )}\n </>\n )}\n\n {showEmptyState && (\n <EmptyState className='flex-grow-1 pt-5 mt-5'>\n <EmptyState.Heading>No contact imports yet</EmptyState.Heading>\n <EmptyState.Info>Import contacts to get started.</EmptyState.Info>\n <AppLink appLink={IMPORT_APP_LINK} className='btn btn-dark'>\n Import contacts\n </AppLink>\n </EmptyState>\n )}\n </div>\n </MarketingLayoutView>\n );\n}\n"],"mappings":"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"}