@clickview/curator 1.100.0-rc.1 → 1.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/.vite/manifest.json +1779 -1779
  2. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js → -6zuD8lo.chunk.js} +2 -2
  3. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js.map → -6zuD8lo.chunk.js.map} +1 -1
  4. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js → 0A42jU2r.chunk.js} +2 -2
  5. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js.map → 0A42jU2r.chunk.js.map} +1 -1
  6. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js → 0ogjGD4J2.chunk.js} +2 -2
  7. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js.map → 0ogjGD4J2.chunk.js.map} +1 -1
  8. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js → 2aCj1HHJ2.chunk.js} +2 -2
  9. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js.map → 2aCj1HHJ2.chunk.js.map} +1 -1
  10. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js → 2zbtFQka.chunk.js} +2 -2
  11. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js.map → 2zbtFQka.chunk.js.map} +1 -1
  12. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js → 3IQ_8AZP2.chunk.js} +2 -2
  13. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js.map → 3IQ_8AZP2.chunk.js.map} +1 -1
  14. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js → 3eMwLZ5D.chunk.js} +2 -2
  15. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js.map → 3eMwLZ5D.chunk.js.map} +1 -1
  16. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js → 4Tx2JSvk2.chunk.js} +2 -2
  17. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js.map → 4Tx2JSvk2.chunk.js.map} +1 -1
  18. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js → 5uVJfyDx2.chunk.js} +2 -2
  19. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js.map → 5uVJfyDx2.chunk.js.map} +1 -1
  20. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js → 6l2s6d3Q.chunk.js} +2 -2
  21. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js.map → 6l2s6d3Q.chunk.js.map} +1 -1
  22. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js → 8RAh0VA72.chunk.js} +2 -2
  23. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js.map → 8RAh0VA72.chunk.js.map} +1 -1
  24. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js → 9nk_zFtT.chunk.js} +2 -2
  25. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js.map → 9nk_zFtT.chunk.js.map} +1 -1
  26. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js → Ae4rMqFm2.chunk.js} +2 -2
  27. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js.map → Ae4rMqFm2.chunk.js.map} +1 -1
  28. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js → B0mCquXn.chunk.js} +2 -2
  29. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js.map → B0mCquXn.chunk.js.map} +1 -1
  30. package/dist/Assets/js/dist/scripts/B1pBJzjh.chunk.js +1 -0
  31. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js → B6IinlWw2.chunk.js} +2 -2
  32. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js.map → B6IinlWw2.chunk.js.map} +1 -1
  33. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js → B6NMAAhW.chunk.js} +2 -2
  34. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js.map → B6NMAAhW.chunk.js.map} +1 -1
  35. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js → B8RZKQTs2.chunk.js} +2 -2
  36. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js.map → B8RZKQTs2.chunk.js.map} +1 -1
  37. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js → B9R92bqj.chunk.js} +2 -2
  38. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js.map → B9R92bqj.chunk.js.map} +1 -1
  39. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js → BAFYJZ4c.chunk.js} +2 -2
  40. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js.map → BAFYJZ4c.chunk.js.map} +1 -1
  41. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js → BFPSIGJg.chunk.js} +2 -2
  42. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js.map → BFPSIGJg.chunk.js.map} +1 -1
  43. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js → BGiLDtc92.chunk.js} +2 -2
  44. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js.map → BGiLDtc92.chunk.js.map} +1 -1
  45. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js → BH6LIpwu2.chunk.js} +2 -2
  46. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js.map → BH6LIpwu2.chunk.js.map} +1 -1
  47. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js → BMj3pXcm.chunk.js} +2 -2
  48. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js.map → BMj3pXcm.chunk.js.map} +1 -1
  49. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js → BQTfNBFU.chunk.js} +2 -2
  50. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js.map → BQTfNBFU.chunk.js.map} +1 -1
  51. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js → BT-jeT7C.chunk.js} +2 -2
  52. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js.map → BT-jeT7C.chunk.js.map} +1 -1
  53. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js → BUD4osIg2.chunk.js} +2 -2
  54. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js.map → BUD4osIg2.chunk.js.map} +1 -1
  55. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js → BVoG71Kc.chunk.js} +2 -2
  56. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js.map → BVoG71Kc.chunk.js.map} +1 -1
  57. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js → BW5iVK1B2.chunk.js} +2 -2
  58. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js.map → BW5iVK1B2.chunk.js.map} +1 -1
  59. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js → BW9r-3iO.chunk.js} +2 -2
  60. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js.map → BW9r-3iO.chunk.js.map} +1 -1
  61. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js → BX1tMzoa.chunk.js} +2 -2
  62. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js.map → BX1tMzoa.chunk.js.map} +1 -1
  63. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js → BXaC-l33.chunk.js} +2 -2
  64. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js.map → BXaC-l33.chunk.js.map} +1 -1
  65. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js → BY-c3M2b2.chunk.js} +2 -2
  66. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js.map → BY-c3M2b2.chunk.js.map} +1 -1
  67. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js → BYMuPFbe.chunk.js} +2 -2
  68. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js.map → BYMuPFbe.chunk.js.map} +1 -1
  69. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js → BaOAOuSc2.chunk.js} +2 -2
  70. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js.map → BaOAOuSc2.chunk.js.map} +1 -1
  71. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js → Bb_f3Lku.chunk.js} +2 -2
  72. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js.map → Bb_f3Lku.chunk.js.map} +1 -1
  73. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js → BdJYoUIO.chunk.js} +2 -2
  74. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js.map → BdJYoUIO.chunk.js.map} +1 -1
  75. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js → Bf-6iyfX2.chunk.js} +2 -2
  76. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js.map → Bf-6iyfX2.chunk.js.map} +1 -1
  77. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js → BiPUuGEE2.chunk.js} +2 -2
  78. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js.map → BiPUuGEE2.chunk.js.map} +1 -1
  79. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js → Bj4-NRWf.chunk.js} +2 -2
  80. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js.map → Bj4-NRWf.chunk.js.map} +1 -1
  81. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js → BkVcraos2.chunk.js} +2 -2
  82. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js.map → BkVcraos2.chunk.js.map} +1 -1
  83. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js → BkZ7WS_H.chunk.js} +2 -2
  84. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js.map → BkZ7WS_H.chunk.js.map} +1 -1
  85. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js → BoMt5mMW2.chunk.js} +2 -2
  86. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js.map → BoMt5mMW2.chunk.js.map} +1 -1
  87. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js → Bo_WsHZq2.chunk.js} +2 -2
  88. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js.map → Bo_WsHZq2.chunk.js.map} +1 -1
  89. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js → BpV5ErII.chunk.js} +2 -2
  90. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js.map → BpV5ErII.chunk.js.map} +1 -1
  91. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js → BrBPGjLi2.chunk.js} +2 -2
  92. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js.map → BrBPGjLi2.chunk.js.map} +1 -1
  93. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js → BrHyZG_m.chunk.js} +2 -2
  94. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js.map → BrHyZG_m.chunk.js.map} +1 -1
  95. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js → Bu4F3uuX.chunk.js} +2 -2
  96. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js.map → Bu4F3uuX.chunk.js.map} +1 -1
  97. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js → BvW9SXzy.chunk.js} +2 -2
  98. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js.map → BvW9SXzy.chunk.js.map} +1 -1
  99. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js → BwKHls91.chunk.js} +2 -2
  100. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js.map → BwKHls91.chunk.js.map} +1 -1
  101. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js → BxZNJjbX2.chunk.js} +2 -2
  102. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js.map → BxZNJjbX2.chunk.js.map} +1 -1
  103. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js → BygVW5WL.chunk.js} +2 -2
  104. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js.map → BygVW5WL.chunk.js.map} +1 -1
  105. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js → ByzsHBuo.chunk.js} +2 -2
  106. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js.map → ByzsHBuo.chunk.js.map} +1 -1
  107. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js +3 -0
  108. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js.map +1 -0
  109. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js → C0UYMHUe.chunk.js} +2 -2
  110. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js.map → C0UYMHUe.chunk.js.map} +1 -1
  111. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js → C0_pEFCD.chunk.js} +2 -2
  112. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js.map → C0_pEFCD.chunk.js.map} +1 -1
  113. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js → C2jRLu4_2.chunk.js} +2 -2
  114. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js.map → C2jRLu4_2.chunk.js.map} +1 -1
  115. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js → C2tBl3l9.chunk.js} +2 -2
  116. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js.map → C2tBl3l9.chunk.js.map} +1 -1
  117. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js → C4eazpDh.chunk.js} +2 -2
  118. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js.map → C4eazpDh.chunk.js.map} +1 -1
  119. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js → CBq4vrjT.chunk.js} +2 -2
  120. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js.map → CBq4vrjT.chunk.js.map} +1 -1
  121. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js → CBzqRw-k.chunk.js} +2 -2
  122. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js.map → CBzqRw-k.chunk.js.map} +1 -1
  123. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js → CDAdfAL02.chunk.js} +2 -2
  124. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js.map → CDAdfAL02.chunk.js.map} +1 -1
  125. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js → CE1Dxq8p.chunk.js} +2 -2
  126. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js.map → CE1Dxq8p.chunk.js.map} +1 -1
  127. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js → CG2julEA.chunk.js} +2 -2
  128. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js.map → CG2julEA.chunk.js.map} +1 -1
  129. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js → CGcN4g0d2.chunk.js} +2 -2
  130. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js.map → CGcN4g0d2.chunk.js.map} +1 -1
  131. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js → CJmV_FfR2.chunk.js} +2 -2
  132. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js.map → CJmV_FfR2.chunk.js.map} +1 -1
  133. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js → CKvVGIRL.chunk.js} +2 -2
  134. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js.map → CKvVGIRL.chunk.js.map} +1 -1
  135. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js → CL1DcbTZ.chunk.js} +2 -2
  136. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js.map → CL1DcbTZ.chunk.js.map} +1 -1
  137. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js → CNLx6_fS.chunk.js} +2 -2
  138. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js.map → CNLx6_fS.chunk.js.map} +1 -1
  139. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js → CNUVs80P.chunk.js} +2 -2
  140. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js.map → CNUVs80P.chunk.js.map} +1 -1
  141. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js → CPa__SNX.chunk.js} +2 -2
  142. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js.map → CPa__SNX.chunk.js.map} +1 -1
  143. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js → CSA2Tnv9.chunk.js} +2 -2
  144. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js.map → CSA2Tnv9.chunk.js.map} +1 -1
  145. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js → CT-xEpNT2.chunk.js} +2 -2
  146. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js.map → CT-xEpNT2.chunk.js.map} +1 -1
  147. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js → CT0vfLa0.chunk.js} +2 -2
  148. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js.map → CT0vfLa0.chunk.js.map} +1 -1
  149. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js → CUDnXypB.chunk.js} +2 -2
  150. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js.map → CUDnXypB.chunk.js.map} +1 -1
  151. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js → CeMQZB5J.chunk.js} +2 -2
  152. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js.map → CeMQZB5J.chunk.js.map} +1 -1
  153. package/dist/Assets/js/dist/scripts/Cf5cjLzK.chunk.js +2 -0
  154. package/dist/Assets/js/dist/scripts/{D2iK_uRt.chunk.js.map → Cf5cjLzK.chunk.js.map} +1 -1
  155. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js → CfGaxIgd.chunk.js} +2 -2
  156. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js.map → CfGaxIgd.chunk.js.map} +1 -1
  157. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js → Cqfub35W2.chunk.js} +2 -2
  158. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js.map → Cqfub35W2.chunk.js.map} +1 -1
  159. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js → Cv8UpP5_2.chunk.js} +2 -2
  160. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js.map → Cv8UpP5_2.chunk.js.map} +1 -1
  161. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js → CvV6jx2d.chunk.js} +2 -2
  162. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js.map → CvV6jx2d.chunk.js.map} +1 -1
  163. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js → CxENQntH.chunk.js} +2 -2
  164. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js.map → CxENQntH.chunk.js.map} +1 -1
  165. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js → CxIfJCSc.chunk.js} +2 -2
  166. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js.map → CxIfJCSc.chunk.js.map} +1 -1
  167. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js → CxggKQxV.chunk.js} +2 -2
  168. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js.map → CxggKQxV.chunk.js.map} +1 -1
  169. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js → CyNNZ1So.chunk.js} +2 -2
  170. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js.map → CyNNZ1So.chunk.js.map} +1 -1
  171. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js → Cz-WSyAE.chunk.js} +2 -2
  172. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js.map → Cz-WSyAE.chunk.js.map} +1 -1
  173. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js → D2aQFJWt2.chunk.js} +2 -2
  174. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js.map → D2aQFJWt2.chunk.js.map} +1 -1
  175. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js → D2h9W4GA2.chunk.js} +2 -2
  176. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js.map → D2h9W4GA2.chunk.js.map} +1 -1
  177. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js → D3NAhMJm.chunk.js} +2 -2
  178. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js.map → D3NAhMJm.chunk.js.map} +1 -1
  179. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js → D3aWaqBW.chunk.js} +2 -2
  180. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js.map → D3aWaqBW.chunk.js.map} +1 -1
  181. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js → D4xcR0492.chunk.js} +2 -2
  182. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js.map → D4xcR0492.chunk.js.map} +1 -1
  183. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js → D5ek2PiI.chunk.js} +2 -2
  184. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js.map → D5ek2PiI.chunk.js.map} +1 -1
  185. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js → D61ei_h6.chunk.js} +2 -2
  186. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js.map → D61ei_h6.chunk.js.map} +1 -1
  187. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js → D6wyTufc.chunk.js} +2 -2
  188. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js.map → D6wyTufc.chunk.js.map} +1 -1
  189. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js → D7I90XOo.chunk.js} +2 -2
  190. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js.map → D7I90XOo.chunk.js.map} +1 -1
  191. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js → DArfNv9S.chunk.js} +2 -2
  192. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js.map → DArfNv9S.chunk.js.map} +1 -1
  193. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js → DB-51xws2.chunk.js} +2 -2
  194. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js.map → DB-51xws2.chunk.js.map} +1 -1
  195. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js → DENdEA1F.chunk.js} +2 -2
  196. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js.map → DENdEA1F.chunk.js.map} +1 -1
  197. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js → DFYiLmms2.chunk.js} +2 -2
  198. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js.map → DFYiLmms2.chunk.js.map} +1 -1
  199. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js → DHa-x1js2.chunk.js} +2 -2
  200. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js.map → DHa-x1js2.chunk.js.map} +1 -1
  201. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js → DHeA2NJS.chunk.js} +2 -2
  202. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js.map → DHeA2NJS.chunk.js.map} +1 -1
  203. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js → DIDxfMO_.chunk.js} +2 -2
  204. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js.map → DIDxfMO_.chunk.js.map} +1 -1
  205. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js → DMq1wDNm2.chunk.js} +2 -2
  206. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js.map → DMq1wDNm2.chunk.js.map} +1 -1
  207. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js → DNWM9yfh2.chunk.js} +2 -2
  208. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js.map → DNWM9yfh2.chunk.js.map} +1 -1
  209. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js → DSj7VCEo2.chunk.js} +2 -2
  210. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js.map → DSj7VCEo2.chunk.js.map} +1 -1
  211. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js → DSvehN9D2.chunk.js} +2 -2
  212. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js.map → DSvehN9D2.chunk.js.map} +1 -1
  213. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js → DTvCgZ4c.chunk.js} +2 -2
  214. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js.map → DTvCgZ4c.chunk.js.map} +1 -1
  215. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js → DWHKdmdQ.chunk.js} +2 -2
  216. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js.map → DWHKdmdQ.chunk.js.map} +1 -1
  217. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js → DYFGF9Pe.chunk.js} +2 -2
  218. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js.map → DYFGF9Pe.chunk.js.map} +1 -1
  219. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js → DYOxTenc2.chunk.js} +2 -2
  220. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js.map → DYOxTenc2.chunk.js.map} +1 -1
  221. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js → DZthp5T62.chunk.js} +2 -2
  222. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js.map → DZthp5T62.chunk.js.map} +1 -1
  223. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js → Djgwr16q.chunk.js} +2 -2
  224. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js.map → Djgwr16q.chunk.js.map} +1 -1
  225. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js → DjnvbVQs.chunk.js} +2 -2
  226. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js.map → DjnvbVQs.chunk.js.map} +1 -1
  227. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js → DmrhyI9D2.chunk.js} +2 -2
  228. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js.map → DmrhyI9D2.chunk.js.map} +1 -1
  229. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js → DnZGILQc.chunk.js} +2 -2
  230. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js.map → DnZGILQc.chunk.js.map} +1 -1
  231. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js → DqnZw1cj.chunk.js} +2 -2
  232. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js.map → DqnZw1cj.chunk.js.map} +1 -1
  233. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js → DrAKpy8L2.chunk.js} +2 -2
  234. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js.map → DrAKpy8L2.chunk.js.map} +1 -1
  235. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js → DsM1bfoR.chunk.js} +2 -2
  236. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js.map → DsM1bfoR.chunk.js.map} +1 -1
  237. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js → Dt2TCPUI.chunk.js} +2 -2
  238. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js.map → Dt2TCPUI.chunk.js.map} +1 -1
  239. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js → DtylOK55.chunk.js} +2 -2
  240. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js.map → DtylOK55.chunk.js.map} +1 -1
  241. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js → DuTcsFNo2.chunk.js} +2 -2
  242. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js.map → DuTcsFNo2.chunk.js.map} +1 -1
  243. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js → Dw0mo6Cf.chunk.js} +2 -2
  244. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js.map → Dw0mo6Cf.chunk.js.map} +1 -1
  245. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js → DwISzabN.chunk.js} +2 -2
  246. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js.map → DwISzabN.chunk.js.map} +1 -1
  247. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js → DxW67uUT.chunk.js} +2 -2
  248. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js.map → DxW67uUT.chunk.js.map} +1 -1
  249. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js → Eg4zYYCO.chunk.js} +2 -2
  250. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js.map → Eg4zYYCO.chunk.js.map} +1 -1
  251. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js → GT6nO4Jv.chunk.js} +2 -2
  252. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js.map → GT6nO4Jv.chunk.js.map} +1 -1
  253. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js → GpDEun8c2.chunk.js} +2 -2
  254. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js.map → GpDEun8c2.chunk.js.map} +1 -1
  255. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js → OKjYL31I.chunk.js} +2 -2
  256. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js.map → OKjYL31I.chunk.js.map} +1 -1
  257. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js → OrCUhFjq2.chunk.js} +2 -2
  258. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js.map → OrCUhFjq2.chunk.js.map} +1 -1
  259. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js → SVXAAhk02.chunk.js} +2 -2
  260. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js.map → SVXAAhk02.chunk.js.map} +1 -1
  261. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js → SmmnJrec.chunk.js} +2 -2
  262. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js.map → SmmnJrec.chunk.js.map} +1 -1
  263. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js → T3BageSw2.chunk.js} +2 -2
  264. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js.map → T3BageSw2.chunk.js.map} +1 -1
  265. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js → T6xxjp_W.chunk.js} +2 -2
  266. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js.map → T6xxjp_W.chunk.js.map} +1 -1
  267. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js → Uc2eW092.chunk.js} +2 -2
  268. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js.map → Uc2eW092.chunk.js.map} +1 -1
  269. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js → XHoEdG1q.chunk.js} +2 -2
  270. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js.map → XHoEdG1q.chunk.js.map} +1 -1
  271. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js → Y14NYZ692.chunk.js} +2 -2
  272. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js.map → Y14NYZ692.chunk.js.map} +1 -1
  273. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js → Y_IcNhI9.chunk.js} +2 -2
  274. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js.map → Y_IcNhI9.chunk.js.map} +1 -1
  275. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js → Yr5eNz05.chunk.js} +2 -2
  276. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js.map → Yr5eNz05.chunk.js.map} +1 -1
  277. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js → Yrc9o6bG2.chunk.js} +2 -2
  278. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js.map → Yrc9o6bG2.chunk.js.map} +1 -1
  279. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js → app-RphP4Ht0.js} +4 -4
  280. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js.map → app-RphP4Ht0.js.map} +1 -1
  281. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js → cUgHqo-u.chunk.js} +2 -2
  282. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js.map → cUgHqo-u.chunk.js.map} +1 -1
  283. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js → dmUfJoJz2.chunk.js} +2 -2
  284. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js.map → dmUfJoJz2.chunk.js.map} +1 -1
  285. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js → fapHSEex.chunk.js} +2 -2
  286. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js.map → fapHSEex.chunk.js.map} +1 -1
  287. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js → jf0e_ii92.chunk.js} +2 -2
  288. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js.map → jf0e_ii92.chunk.js.map} +1 -1
  289. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js → kp4jXqVv.chunk.js} +2 -2
  290. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js.map → kp4jXqVv.chunk.js.map} +1 -1
  291. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js +2 -0
  292. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js.map +1 -0
  293. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js → n7lzp_Mc2.chunk.js} +2 -2
  294. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js.map → n7lzp_Mc2.chunk.js.map} +1 -1
  295. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js → nvtWO4PW2.chunk.js} +2 -2
  296. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js.map → nvtWO4PW2.chunk.js.map} +1 -1
  297. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js → oYKM19q12.chunk.js} +2 -2
  298. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js.map → oYKM19q12.chunk.js.map} +1 -1
  299. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js → ohTu1tHz.chunk.js} +2 -2
  300. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js.map → ohTu1tHz.chunk.js.map} +1 -1
  301. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js → uCRnfBEw2.chunk.js} +2 -2
  302. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js.map → uCRnfBEw2.chunk.js.map} +1 -1
  303. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js → udVWVmrH2.chunk.js} +2 -2
  304. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js.map → udVWVmrH2.chunk.js.map} +1 -1
  305. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js → v0VARBBE2.chunk.js} +2 -2
  306. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js.map → v0VARBBE2.chunk.js.map} +1 -1
  307. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js → vf9_5VGa2.chunk.js} +2 -2
  308. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js.map → vf9_5VGa2.chunk.js.map} +1 -1
  309. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js → wTEWtWoE2.chunk.js} +2 -2
  310. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js.map → wTEWtWoE2.chunk.js.map} +1 -1
  311. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js → xj8_Pfx7.chunk.js} +2 -2
  312. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js.map → xj8_Pfx7.chunk.js.map} +1 -1
  313. package/dist/bundles.json +1 -1
  314. package/dist/en.json +1 -1
  315. package/package.json +1 -1
  316. package/dist/Assets/js/dist/scripts/D2iK_uRt.chunk.js +0 -2
  317. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js +0 -3
  318. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js.map +0 -1
  319. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js +0 -2
  320. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js.map +0 -1
  321. package/dist/Assets/js/dist/scripts/DrBVabtm.chunk.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Dmf5vYc42.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/manage-featured-channels/components/featured-channel-row.module.scss","../../../../../src/apps/content-partners/views/manage-featured-channels/components/FeaturedChannelRow.tsx","../../../../../src/apps/content-partners/views/manage-featured-channels/manage-featured-channels-view.module.scss","../../../../../src/apps/content-partners/views/manage-featured-channels/ManageFeaturedChannelsView.tsx"],"sourcesContent":[":local {\n .row {\n &:hover .index {\n display: none;\n }\n\n &:hover .handle {\n display: flex;\n }\n }\n\n .index {\n display: flex;\n }\n\n .handle {\n display: none;\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n }\n\n .name {\n min-width: 0;\n }\n}","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport classnames from 'classnames';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { HandleSvg } from 'libs/shared/images/svg/objects/HandleSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\nimport styles from './featured-channel-row.module.scss';\n\ninterface FeaturedChannelRowProps {\n partner: PartnerProfile;\n onRemove: (id: string) => void;\n index: number;\n}\n\nexport function FeaturedChannelRow(props: FeaturedChannelRowProps): JSX.Element {\n const { partner, onRemove, index } = props;\n const { setNodeRef, transform, transition, listeners, attributes } = useSortable({ id: partner.id });\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n touchAction: 'none'\n };\n\n return (\n <div ref={setNodeRef} style={style} className={classnames(styles.row, 'd-flex align-items-center py-2 bg-white border-bottom')} {...attributes} {...listeners}>\n <span className={classnames(styles.handle, 'user-select-none mb-3 me-1')}>\n <SvgContainer svg={HandleSvg} size={SvgContainerSize.XXS} />\n </span>\n <span className={classnames(styles.index, 'me-2')}>{index + 1}</span>\n <span className={classnames(styles.name, 'flex-grow-1 text-truncate px-1')}>{partner.name}</span>\n <IconButton\n svg={DeleteSvg}\n className='text-danger'\n onClick={() => onRemove(partner.id)}\n />\n </div>\n );\n}\n",":local {\n .sidebar {\n width: 12rem;\n }\n\n .regionItem {\n &:hover {\n background-color: $white;\n }\n\n &.active {\n background-color: $gray-100;\n }\n }\n\n .main {\n flex: 1;\n min-width: 0;\n }\n\n .dragOverlay {\n padding: 0.5rem 0.75rem;\n box-shadow: 0 0.25rem 1.3rem rgba($black, 0.1);\n opacity: 0.9;\n }\n}","import React, { useState } from 'react';\nimport { DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport classnames from 'classnames';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PartialRectangularLogoSlidingListWidgetTemplate } from 'libs/shared/components/widgets/curated-widgets/templates/rectangular-logo-sliding-list/partial-loading/PartialRectangularLogoSlidingList';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport {\n ContentRegionCollection,\n ContentRegionObject,\n CurrentUser,\n PartnerProfile\n} from 'libs/shared/interfaces';\n\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\n\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { PinnedContentPartner } from 'apps/content-partners/interfaces/PinnedContentPartner';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\n\nimport { FeaturedChannelRow } from './components/FeaturedChannelRow';\n\nimport styles from './manage-featured-channels-view.module.scss';\n\nconst MAX_FEATURED_CHANNELS = 18;\nconst MIN_FEATURED_CHANNELS = 6;\n\nfunction buildSortedChannels(contentRegion: string, channels: PartnerProfile[]): PinnedContentPartner[] {\n return channels.map((channel, index) => ({\n contentRegion,\n index,\n partnerProfileId: channel.id\n }));\n}\n\nexport function ManageFeaturedChannelsView(): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const appLinks = getContentPartnerAppLinks();\n const alerts = useAlerts();\n\n const regionsResponse = Flight.useBasicFetch<ContentRegionCollection>(\n ContentRegionRequests.contentRegions()\n );\n const regions: ContentRegionObject[] = [...(regionsResponse.data?.data ?? [])]\n .sort((a, b) => a.name.localeCompare(b.name)) ?? [];\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ featuredChannels, setFeaturedChannels ] = useState<PartnerProfile[]>([]);\n const [ selectedRegionSystemName, setSelectedRegionSystemName ] = useState<string | null>(null);\n const pinnedPartners = Flight.useBasicFetch<PartnerProfile[]>(\n selectedRegionSystemName && ContentPartnerRequests.getFeaturedChannelsForRegion(selectedRegionSystemName)\n );\n\n React.useEffect(() => {\n if (!pinnedPartners.hasCompleted) return;\n setFeaturedChannels(pinnedPartners.data ?? []);\n }, [ pinnedPartners.hasCompleted, selectedRegionSystemName ]);\n\n React.useEffect(() => {\n if (!selectedRegionSystemName) {\n setSelectedRegionSystemName(regionsResponse.data?.data?.[0]?.systemName ?? null);\n }\n }, [regionsResponse.hasCompleted]);\n\n if (!regionsResponse.hasCompleted || !currentUser.hasCompleted) {\n return <PopupLoadingSpinner />;\n }\n\n const selectedRegion = regions.find(r => r.systemName === selectedRegionSystemName) ?? null;\n const featuredIds = new Set(featuredChannels.map(p => p.id));\n const isAtMaxCapacity = featuredChannels.length >= MAX_FEATURED_CHANNELS;\n const isBelowMinCapacity = featuredChannels.length < MIN_FEATURED_CHANNELS;\n\n function handleSelectRegion(systemName: string): void {\n setSelectedRegionSystemName(systemName);\n setFeaturedChannels([]);\n }\n\n async function handleAddPartner(partner: PartnerProfile): Promise<void> {\n if (featuredIds.has(partner.id)) return;\n // fetch the full content partner object to render the preview\n const fullProfile = await fetchAsync<PartnerProfile>(ContentPartnerRequests.getContentPartner(partner.id));\n setFeaturedChannels(prev => [ ...prev, fullProfile ]);\n }\n\n function handleRemove(partnerId: string): void {\n setFeaturedChannels(prev => prev.filter(p => p.id !== partnerId));\n }\n\n function handleSortEnd(event: DragEndEvent): void {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n setFeaturedChannels(prev => {\n const oldIndex = prev.findIndex(p => p.id?.toString() === active.id.toString());\n const newIndex = prev.findIndex(p => p.id?.toString() === over.id.toString());\n if (oldIndex === -1 || newIndex === -1) return prev;\n return arrayMove(prev, oldIndex, newIndex);\n });\n }\n\n async function handleSave(): Promise<void> {\n if (!selectedRegionSystemName || isBelowMinCapacity) return;\n try {\n await fetchAsync(ContentPartnerRequests.updateFeaturedChannelsForRegion(\n selectedRegionSystemName,\n buildSortedChannels(selectedRegionSystemName, featuredChannels)\n ));\n alerts.success('Featured channels updated successfully');\n } catch {\n alerts.error('Failed to update featured channels');\n }\n }\n\n return (\n <div className='d-flex gap-3'>\n <div className={classnames(styles.sidebar, 'flex-shrink-0')}>\n <div className='mb-2'>\n <AppLink appLink={appLinks.contentPartners()} className='text-secondary d-flex align-items-center'>\n <SvgContainer svg={ChevronLeftSvg} />\n Channels\n </AppLink>\n </div>\n <h6 className='mb-3'>Regions</h6>\n <ul className='list-unstyled m-0'>\n {regions.map(region => (\n <li\n key={region.id}\n className={classnames(styles.regionItem, { [styles.active]: region.systemName === selectedRegionSystemName }, 'cursor-pointer d-flex align-items-center rounded-1 user-select-none p-2')}\n onClick={() => handleSelectRegion(region.systemName)}\n >\n {region.name}\n </li>\n ))}\n </ul>\n </div>\n\n <div className={styles.main}>\n {selectedRegion ? (\n <>\n <h3 className='mb-3'>Featured Channels — {selectedRegion.name}</h3>\n\n <div className='my-3'>\n <SearchBar<PartnerProfile>\n disabled={isAtMaxCapacity}\n placeholder='Search for a channel to add'\n onSuggestionSelected={handleAddPartner}\n getRemoteUrl={() => `/api/search/v4/search?userId=${currentUser.data?.id}&customerId=${currentUser.data?.customerId}&searchAllChannels=true`}\n getRemotePostBody={(q: string) => ({\n query: q,\n indices: [{ index: 'partner_profile' }],\n searchType: 'content',\n filters: { contentRegion: [selectedRegionSystemName]}\n })}\n formatRemoteSuggestions={data => data.results}\n activationLength={0}\n clearQueryOnSelect\n shouldUpdateQueryOnSelection={false}\n renderAsForm={false}\n />\n {isAtMaxCapacity && (\n <p className='text-secondary mt-2 mb-0 small'>\n Maximum of {MAX_FEATURED_CHANNELS} featured channels reached. Remove a channel before adding a new\n one.\n </p>\n )}\n </div>\n\n {featuredChannels.length > 0 ? (\n <div>\n <p className='text-secondary mb-0'>Drag and drop to reorder</p>\n <SortableContainerWrapper\n ids={featuredChannels.map(p => p.id)}\n onSortEnd={handleSortEnd}\n getDragOverlay={id => {\n const partner = featuredChannels.find(p => p.id === id);\n return <div className={classnames(styles.dragOverlay, 'bg-white rounded-1 border')}>{partner?.name}</div>;\n }}\n >\n {featuredChannels.map((partner, i) => (\n <FeaturedChannelRow key={partner.id} partner={partner} index={i} onRemove={handleRemove} />\n ))}\n </SortableContainerWrapper>\n </div>\n ) : (\n <p className='text-secondary mt-2'>No featured channels. Add one using the search above.</p>\n )}\n\n <div className='mt-4'>\n <h4 className='mb-4'>Preview</h4>\n {featuredChannels.length > 0 ? (\n <WidgetContainerView\n content={featuredChannels}\n templateId={WidgetTemplate.RectangularLogoSlidingList}\n widgetTypeId={WidgetTypeId.SpotlightContentPartners}\n // mocking a widget here\n description=''\n name=''\n id='featured-channels'\n metadata={{}}\n location='curator'\n />\n ) : (\n <PartialRectangularLogoSlidingListWidgetTemplate isPreviewing />\n )}\n </div>\n\n <div className='mt-3 text-end'>\n {isBelowMinCapacity && (\n <p className='text-secondary mb-2 small'>\n A minimum of {MIN_FEATURED_CHANNELS} featured channels is required.\n </p>\n )}\n <button type='button' className='btn btn-dark' disabled={isBelowMinCapacity} onClick={handleSave}>\n Save\n </button>\n </div>\n </>\n ) : (\n <p className='text-secondary mt-2'>Select a region to manage its featured channels.</p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"n7lzp_Mc2.chunk.js","names":[],"sources":["../../../../../src/apps/content-partners/views/manage-featured-channels/components/featured-channel-row.module.scss","../../../../../src/apps/content-partners/views/manage-featured-channels/components/FeaturedChannelRow.tsx","../../../../../src/apps/content-partners/views/manage-featured-channels/manage-featured-channels-view.module.scss","../../../../../src/apps/content-partners/views/manage-featured-channels/ManageFeaturedChannelsView.tsx"],"sourcesContent":[":local {\n .row {\n &:hover .index {\n display: none;\n }\n\n &:hover .handle {\n display: flex;\n }\n }\n\n .index {\n display: flex;\n }\n\n .handle {\n display: none;\n cursor: grab;\n\n &:active {\n cursor: grabbing;\n }\n }\n\n .name {\n min-width: 0;\n }\n}","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport classnames from 'classnames';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { HandleSvg } from 'libs/shared/images/svg/objects/HandleSvg';\nimport { PartnerProfile } from 'libs/shared/interfaces';\n\nimport styles from './featured-channel-row.module.scss';\n\ninterface FeaturedChannelRowProps {\n partner: PartnerProfile;\n onRemove: (id: string) => void;\n index: number;\n}\n\nexport function FeaturedChannelRow(props: FeaturedChannelRowProps): JSX.Element {\n const { partner, onRemove, index } = props;\n const { setNodeRef, transform, transition, listeners, attributes } = useSortable({ id: partner.id });\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n touchAction: 'none'\n };\n\n return (\n <div ref={setNodeRef} style={style} className={classnames(styles.row, 'd-flex align-items-center py-2 bg-white border-bottom')} {...attributes} {...listeners}>\n <span className={classnames(styles.handle, 'user-select-none mb-3 me-1')}>\n <SvgContainer svg={HandleSvg} size={SvgContainerSize.XXS} />\n </span>\n <span className={classnames(styles.index, 'me-2')}>{index + 1}</span>\n <span className={classnames(styles.name, 'flex-grow-1 text-truncate px-1')}>{partner.name}</span>\n <IconButton\n svg={DeleteSvg}\n className='text-danger'\n onClick={() => onRemove(partner.id)}\n />\n </div>\n );\n}\n",":local {\n .sidebar {\n width: 12rem;\n }\n\n .regionItem {\n &:hover {\n background-color: $white;\n }\n\n &.active {\n background-color: $gray-100;\n }\n }\n\n .main {\n flex: 1;\n min-width: 0;\n }\n\n .dragOverlay {\n padding: 0.5rem 0.75rem;\n box-shadow: 0 0.25rem 1.3rem rgba($black, 0.1);\n opacity: 0.9;\n }\n}","import React, { useState } from 'react';\nimport { DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport classnames from 'classnames';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PartialRectangularLogoSlidingListWidgetTemplate } from 'libs/shared/components/widgets/curated-widgets/templates/rectangular-logo-sliding-list/partial-loading/PartialRectangularLogoSlidingList';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { ChevronLeftSvg } from 'libs/shared/images/svg/arrows/ChevronLeftSvg';\nimport {\n ContentRegionCollection,\n ContentRegionObject,\n CurrentUser,\n PartnerProfile\n} from 'libs/shared/interfaces';\n\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\n\nimport { ContentPartnerRequests } from 'apps/content-partners/flight-requests/ContentPartnerRequests';\nimport { PinnedContentPartner } from 'apps/content-partners/interfaces/PinnedContentPartner';\nimport { getContentPartnerAppLinks } from 'apps/content-partners/utils/getContentPartnerAppLinks';\n\nimport { FeaturedChannelRow } from './components/FeaturedChannelRow';\n\nimport styles from './manage-featured-channels-view.module.scss';\n\nconst MAX_FEATURED_CHANNELS = 18;\nconst MIN_FEATURED_CHANNELS = 6;\n\nfunction buildSortedChannels(contentRegion: string, channels: PartnerProfile[]): PinnedContentPartner[] {\n return channels.map((channel, index) => ({\n contentRegion,\n index,\n partnerProfileId: channel.id\n }));\n}\n\nexport function ManageFeaturedChannelsView(): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const appLinks = getContentPartnerAppLinks();\n const alerts = useAlerts();\n\n const regionsResponse = Flight.useBasicFetch<ContentRegionCollection>(\n ContentRegionRequests.contentRegions()\n );\n const regions: ContentRegionObject[] = [...(regionsResponse.data?.data ?? [])]\n .sort((a, b) => a.name.localeCompare(b.name)) ?? [];\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ featuredChannels, setFeaturedChannels ] = useState<PartnerProfile[]>([]);\n const [ selectedRegionSystemName, setSelectedRegionSystemName ] = useState<string | null>(null);\n const pinnedPartners = Flight.useBasicFetch<PartnerProfile[]>(\n selectedRegionSystemName && ContentPartnerRequests.getFeaturedChannelsForRegion(selectedRegionSystemName)\n );\n\n React.useEffect(() => {\n if (!pinnedPartners.hasCompleted) return;\n setFeaturedChannels(pinnedPartners.data ?? []);\n }, [ pinnedPartners.hasCompleted, selectedRegionSystemName ]);\n\n React.useEffect(() => {\n if (!selectedRegionSystemName) {\n setSelectedRegionSystemName(regionsResponse.data?.data?.[0]?.systemName ?? null);\n }\n }, [regionsResponse.hasCompleted]);\n\n if (!regionsResponse.hasCompleted || !currentUser.hasCompleted) {\n return <PopupLoadingSpinner />;\n }\n\n const selectedRegion = regions.find(r => r.systemName === selectedRegionSystemName) ?? null;\n const featuredIds = new Set(featuredChannels.map(p => p.id));\n const isAtMaxCapacity = featuredChannels.length >= MAX_FEATURED_CHANNELS;\n const isBelowMinCapacity = featuredChannels.length < MIN_FEATURED_CHANNELS;\n\n function handleSelectRegion(systemName: string): void {\n setSelectedRegionSystemName(systemName);\n setFeaturedChannels([]);\n }\n\n async function handleAddPartner(partner: PartnerProfile): Promise<void> {\n if (featuredIds.has(partner.id)) return;\n // fetch the full content partner object to render the preview\n const fullProfile = await fetchAsync<PartnerProfile>(ContentPartnerRequests.getContentPartner(partner.id));\n setFeaturedChannels(prev => [ ...prev, fullProfile ]);\n }\n\n function handleRemove(partnerId: string): void {\n setFeaturedChannels(prev => prev.filter(p => p.id !== partnerId));\n }\n\n function handleSortEnd(event: DragEndEvent): void {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n setFeaturedChannels(prev => {\n const oldIndex = prev.findIndex(p => p.id?.toString() === active.id.toString());\n const newIndex = prev.findIndex(p => p.id?.toString() === over.id.toString());\n if (oldIndex === -1 || newIndex === -1) return prev;\n return arrayMove(prev, oldIndex, newIndex);\n });\n }\n\n async function handleSave(): Promise<void> {\n if (!selectedRegionSystemName || isBelowMinCapacity) return;\n try {\n await fetchAsync(ContentPartnerRequests.updateFeaturedChannelsForRegion(\n selectedRegionSystemName,\n buildSortedChannels(selectedRegionSystemName, featuredChannels)\n ));\n alerts.success('Featured channels updated successfully');\n } catch {\n alerts.error('Failed to update featured channels');\n }\n }\n\n return (\n <div className='d-flex gap-3'>\n <div className={classnames(styles.sidebar, 'flex-shrink-0')}>\n <div className='mb-2'>\n <AppLink appLink={appLinks.contentPartners()} className='text-secondary d-flex align-items-center'>\n <SvgContainer svg={ChevronLeftSvg} />\n Channels\n </AppLink>\n </div>\n <h6 className='mb-3'>Regions</h6>\n <ul className='list-unstyled m-0'>\n {regions.map(region => (\n <li\n key={region.id}\n className={classnames(styles.regionItem, { [styles.active]: region.systemName === selectedRegionSystemName }, 'cursor-pointer d-flex align-items-center rounded-1 user-select-none p-2')}\n onClick={() => handleSelectRegion(region.systemName)}\n >\n {region.name}\n </li>\n ))}\n </ul>\n </div>\n\n <div className={styles.main}>\n {selectedRegion ? (\n <>\n <h3 className='mb-3'>Featured Channels — {selectedRegion.name}</h3>\n\n <div className='my-3'>\n <SearchBar<PartnerProfile>\n disabled={isAtMaxCapacity}\n placeholder='Search for a channel to add'\n onSuggestionSelected={handleAddPartner}\n getRemoteUrl={() => `/api/search/v4/search?userId=${currentUser.data?.id}&customerId=${currentUser.data?.customerId}&searchAllChannels=true`}\n getRemotePostBody={(q: string) => ({\n query: q,\n indices: [{ index: 'partner_profile' }],\n searchType: 'content',\n filters: { contentRegion: [selectedRegionSystemName]}\n })}\n formatRemoteSuggestions={data => data.results}\n activationLength={0}\n clearQueryOnSelect\n shouldUpdateQueryOnSelection={false}\n renderAsForm={false}\n />\n {isAtMaxCapacity && (\n <p className='text-secondary mt-2 mb-0 small'>\n Maximum of {MAX_FEATURED_CHANNELS} featured channels reached. Remove a channel before adding a new\n one.\n </p>\n )}\n </div>\n\n {featuredChannels.length > 0 ? (\n <div>\n <p className='text-secondary mb-0'>Drag and drop to reorder</p>\n <SortableContainerWrapper\n ids={featuredChannels.map(p => p.id)}\n onSortEnd={handleSortEnd}\n getDragOverlay={id => {\n const partner = featuredChannels.find(p => p.id === id);\n return <div className={classnames(styles.dragOverlay, 'bg-white rounded-1 border')}>{partner?.name}</div>;\n }}\n >\n {featuredChannels.map((partner, i) => (\n <FeaturedChannelRow key={partner.id} partner={partner} index={i} onRemove={handleRemove} />\n ))}\n </SortableContainerWrapper>\n </div>\n ) : (\n <p className='text-secondary mt-2'>No featured channels. Add one using the search above.</p>\n )}\n\n <div className='mt-4'>\n <h4 className='mb-4'>Preview</h4>\n {featuredChannels.length > 0 ? (\n <WidgetContainerView\n content={featuredChannels}\n templateId={WidgetTemplate.RectangularLogoSlidingList}\n widgetTypeId={WidgetTypeId.SpotlightContentPartners}\n // mocking a widget here\n description=''\n name=''\n id='featured-channels'\n metadata={{}}\n location='curator'\n />\n ) : (\n <PartialRectangularLogoSlidingListWidgetTemplate isPreviewing />\n )}\n </div>\n\n <div className='mt-3 text-end'>\n {isBelowMinCapacity && (\n <p className='text-secondary mb-2 small'>\n A minimum of {MIN_FEATURED_CHANNELS} featured channels is required.\n </p>\n )}\n <button type='button' className='btn btn-dark' disabled={isBelowMinCapacity} onClick={handleSave}>\n Save\n </button>\n </div>\n </>\n ) : (\n <p className='text-secondary mt-2'>Select a region to manage its featured channels.</p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{n as r}from"./CFoexGFe.chunk.js";import{t as i}from"./C99MPG7E.chunk.js";import{t as a}from"./UCDGupVs.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{s}from"./Dgk5cBBe.chunk.js";import{t as c}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as l}from"./DyKk_C_Y.chunk.js";import{t as u}from"./DFZ_IQ1H.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";import{t as f}from"./D1EPU1_6.chunk.js";import{t as p}from"./CUVnn-Rk.chunk.js";import{t as m}from"./QCFxJYkI.chunk.js";import{t as h}from"./XcBcKeKH2.chunk.js";import{t as g}from"./CXsvYuSI.chunk.js";import{t as _}from"./Bd9vl-46.chunk.js";import{t as v}from"./C_pByZun.chunk.js";import{t as y}from"./DoHko7UG2.chunk.js";var b=n(e()),x=t(),S=[l.CuratedMedia,l.LatestReleasedVideos,l.ClassificationLatestReleasedVideosV2,l.SeasonalClassificationMedia,l.TrendingClassificationsMedia,l.ContentPartnerAllVideos,l.PlaylistMedia,l.SeriesMedia,l.ClassificationMedia,l.CuratedClassifications,l.Classifications,l.ClassificationLatestReleasedVideos,l.LatestReleasedClassifications,l.TrendingClassifications,l.SpecialEventClassifications,l.CuratedSeries,l.CuratedMultimedia,l.Blurb,l.CuratedContentPartners,l.SpotlightContentPartners,l.AuthorReviewer,l.Faq,l.Feedback,l.CuratedCompanies,l.Ratings,l.ContinueWatching,l.PersonalisedTopics,l.BecauseYouWatched,l.DynamicBlurb,l.CompanyLatestReleasedVideo,l.CompanyVideos,l.UpcomingLivestreams,l.ClassificationLatestReleasedVideo,l.CompanyClassificationVideos,l.ContentPartnerLatestReleasedVideos,l.ContentPartnerVideos,l.ContentPartnerSeries,l.TrendingContentPartnersVideo];function C(e){switch(e){case l.ClassificationMedia:return`This widget type cannot be selected as this topic has no videos.`;case l.Classifications:return`This widget type cannot be selected as this topic has no child topics.`}}function w(e){let t=s(f.widgetTypes()),n=_(e.dashboardId),[w,T]=b.useState(),E=u.getDashboardTargetInfo(n.data),D=u.isClassificationDashboard(E),O=s(D&&D&&d.classification(E.classificationId)),k=s(D&&d.classificationMembers(E.classificationId,r.Videos)),A=s(D&&d.classificationMembers(E.classificationId,r.Playlists)),j=s(D&&d.classificationMembers(E.classificationId,r.Series)),M=s(D&&d.classificationChildren(E.classificationId)),N=s(p.cvLivePresentation()),P=s(a.currentUser());function F(e){if(!D)return!1;switch(e){case l.ClassificationMedia:return!k.data?.data?.length;case l.Classifications:return!M.data?.length;default:return!1}}function I(e){let t=i[e.id];if(!t||!E||!n.hasCompleted)return!1;let r=g.isProduct(n.data,m.StreamableLearning,N.data?.id),a=c.toObject(P.data?.groups??[],`name`);return t.groups.some(e=>a[e])?(!r&&u.isClassificationDashboard(E)&&(r=O.data?.presentationId===N.data?.id),r?!!t.targets[m.StreamableLearning]?.[E.targetType]:!!t.targets[m.Primary]?.[E.targetType]):!1}function L(){return t.data?t.data.filter(e=>S.includes(e.id)).filter(I).map(e=>{let t=i[e.id],n=F(e.id);return{id:e.id,name:t.displayName,icon:t.icon,groupName:t.groupName,fontSize:`sm`,order:S.indexOf(e.id),infoComponent:()=>(0,x.jsx)(y,{description:e.description}),disabled:n,tooltip:n&&C(e.id)}}):[]}let R=t.hasCompleted&&(!D||k.hasCompleted&&j.hasCompleted&&A.hasCompleted&&O.hasCompleted&&N.hasCompleted);return(0,x.jsxs)(v,{dashboard:n.data,widgetTypeId:w,currentStep:`select-widget`,children:[(0,x.jsx)(`h2`,{className:`h4 mb-4`,children:`Select a widget`}),R?(0,x.jsx)(h,{options:L(),selectedAction:w,setOption:e=>T(e)}):(0,x.jsx)(`div`,{className:`text-center pt-5`,children:(0,x.jsx)(o,{as:`div`,animation:`border`,role:`status`})})]})}export{w as DashboardWizardSelectWidgetView};
2
- //# sourceMappingURL=CG9yCT4r2.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{n as r}from"./CFoexGFe.chunk.js";import{t as i}from"./CG2julEA.chunk.js";import{t as a}from"./UCDGupVs.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{s}from"./Dgk5cBBe.chunk.js";import{t as c}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as l}from"./DyKk_C_Y.chunk.js";import{t as u}from"./DFZ_IQ1H.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";import{t as f}from"./D1EPU1_6.chunk.js";import{t as p}from"./CUVnn-Rk.chunk.js";import{t as m}from"./QCFxJYkI.chunk.js";import{t as h}from"./XcBcKeKH2.chunk.js";import{t as g}from"./CXsvYuSI.chunk.js";import{t as _}from"./Bd9vl-46.chunk.js";import{t as v}from"./C_pByZun.chunk.js";import{t as y}from"./DoHko7UG2.chunk.js";var b=n(e()),x=t(),S=[l.CuratedMedia,l.LatestReleasedVideos,l.ClassificationLatestReleasedVideosV2,l.SeasonalClassificationMedia,l.TrendingClassificationsMedia,l.ContentPartnerAllVideos,l.PlaylistMedia,l.SeriesMedia,l.ClassificationMedia,l.CuratedClassifications,l.Classifications,l.ClassificationLatestReleasedVideos,l.LatestReleasedClassifications,l.TrendingClassifications,l.SpecialEventClassifications,l.CuratedSeries,l.CuratedMultimedia,l.Blurb,l.CuratedContentPartners,l.SpotlightContentPartners,l.AuthorReviewer,l.Faq,l.Feedback,l.CuratedCompanies,l.Ratings,l.ContinueWatching,l.PersonalisedTopics,l.BecauseYouWatched,l.DynamicBlurb,l.CompanyLatestReleasedVideo,l.CompanyVideos,l.UpcomingLivestreams,l.ClassificationLatestReleasedVideo,l.CompanyClassificationVideos,l.ContentPartnerLatestReleasedVideos,l.ContentPartnerVideos,l.ContentPartnerSeries,l.TrendingContentPartnersVideo];function C(e){switch(e){case l.ClassificationMedia:return`This widget type cannot be selected as this topic has no videos.`;case l.Classifications:return`This widget type cannot be selected as this topic has no child topics.`}}function w(e){let t=s(f.widgetTypes()),n=_(e.dashboardId),[w,T]=b.useState(),E=u.getDashboardTargetInfo(n.data),D=u.isClassificationDashboard(E),O=s(D&&D&&d.classification(E.classificationId)),k=s(D&&d.classificationMembers(E.classificationId,r.Videos)),A=s(D&&d.classificationMembers(E.classificationId,r.Playlists)),j=s(D&&d.classificationMembers(E.classificationId,r.Series)),M=s(D&&d.classificationChildren(E.classificationId)),N=s(p.cvLivePresentation()),P=s(a.currentUser());function F(e){if(!D)return!1;switch(e){case l.ClassificationMedia:return!k.data?.data?.length;case l.Classifications:return!M.data?.length;default:return!1}}function I(e){let t=i[e.id];if(!t||!E||!n.hasCompleted)return!1;let r=g.isProduct(n.data,m.StreamableLearning,N.data?.id),a=c.toObject(P.data?.groups??[],`name`);return t.groups.some(e=>a[e])?(!r&&u.isClassificationDashboard(E)&&(r=O.data?.presentationId===N.data?.id),r?!!t.targets[m.StreamableLearning]?.[E.targetType]:!!t.targets[m.Primary]?.[E.targetType]):!1}function L(){return t.data?t.data.filter(e=>S.includes(e.id)).filter(I).map(e=>{let t=i[e.id],n=F(e.id);return{id:e.id,name:t.displayName,icon:t.icon,groupName:t.groupName,fontSize:`sm`,order:S.indexOf(e.id),infoComponent:()=>(0,x.jsx)(y,{description:e.description}),disabled:n,tooltip:n&&C(e.id)}}):[]}let R=t.hasCompleted&&(!D||k.hasCompleted&&j.hasCompleted&&A.hasCompleted&&O.hasCompleted&&N.hasCompleted);return(0,x.jsxs)(v,{dashboard:n.data,widgetTypeId:w,currentStep:`select-widget`,children:[(0,x.jsx)(`h2`,{className:`h4 mb-4`,children:`Select a widget`}),R?(0,x.jsx)(h,{options:L(),selectedAction:w,setOption:e=>T(e)}):(0,x.jsx)(`div`,{className:`text-center pt-5`,children:(0,x.jsx)(o,{as:`div`,animation:`border`,role:`status`})})]})}export{w as DashboardWizardSelectWidgetView};
2
+ //# sourceMappingURL=nvtWO4PW2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CG9yCT4r2.chunk.js","names":[],"sources":["../../../../../src/apps/dashboard-editor/views/wizard/dashboard-wizard-select-widget/DashboardWizardSelectWidgetView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { WizardOptionHash, WizardOptions } from 'libs/shared/components/wizard/options/WizardOptions';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classification, CuratorUser, PlaylistCollection, Presentation, SeriesCollection, VideoCollection } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { SubjectMemberType } from 'shared/enums';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { DashboardHelper } from 'shared/utils/DashboardHelper';\n\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\nimport { DashboardWizardLayout } from 'apps/dashboard-editor/components/wizard/layout/DashboardWizardLayout';\nimport { WizardItemDescription } from 'apps/dashboard-editor/components/wizard/wizard-item-description/WizardItemDescription';\nimport { CuratorWidgetTypeIdConfig } from 'apps/dashboard-editor/constants/CuratorWidgetTypeIdConfig';\nimport { useFetchDashboard } from 'apps/dashboard-editor/hooks/useFetchDashboard';\nimport { WidgetType, WidgetTypesResponse } from 'apps/dashboard-editor/interfaces/data-requests/WidgetsTypesResponse';\n\nconst ORDERED_SELECTABLE_WIDGET_TYPES: WidgetTypeId[] = [\n WidgetTypeId.CuratedMedia,\n WidgetTypeId.LatestReleasedVideos,\n WidgetTypeId.ClassificationLatestReleasedVideosV2,\n WidgetTypeId.SeasonalClassificationMedia,\n WidgetTypeId.TrendingClassificationsMedia,\n WidgetTypeId.ContentPartnerAllVideos,\n WidgetTypeId.PlaylistMedia,\n WidgetTypeId.SeriesMedia,\n WidgetTypeId.ClassificationMedia,\n WidgetTypeId.CuratedClassifications,\n WidgetTypeId.Classifications,\n WidgetTypeId.ClassificationLatestReleasedVideos,\n WidgetTypeId.LatestReleasedClassifications,\n WidgetTypeId.TrendingClassifications,\n WidgetTypeId.SpecialEventClassifications,\n WidgetTypeId.CuratedSeries,\n WidgetTypeId.CuratedMultimedia,\n WidgetTypeId.Blurb,\n WidgetTypeId.CuratedContentPartners,\n WidgetTypeId.SpotlightContentPartners,\n WidgetTypeId.AuthorReviewer,\n WidgetTypeId.Faq,\n WidgetTypeId.Feedback,\n WidgetTypeId.CuratedCompanies,\n WidgetTypeId.Ratings,\n WidgetTypeId.ContinueWatching,\n WidgetTypeId.PersonalisedTopics,\n WidgetTypeId.BecauseYouWatched,\n WidgetTypeId.DynamicBlurb,\n WidgetTypeId.CompanyLatestReleasedVideo,\n WidgetTypeId.CompanyVideos,\n WidgetTypeId.UpcomingLivestreams,\n WidgetTypeId.ClassificationLatestReleasedVideo,\n WidgetTypeId.CompanyClassificationVideos,\n WidgetTypeId.ContentPartnerLatestReleasedVideos,\n WidgetTypeId.ContentPartnerVideos,\n WidgetTypeId.ContentPartnerSeries,\n WidgetTypeId.TrendingContentPartnersVideo\n];\n\nfunction getDisabledTooltip(widgetType: WidgetTypeId): string {\n switch (widgetType) {\n case WidgetTypeId.ClassificationMedia:\n return 'This widget type cannot be selected as this topic has no videos.';\n\n case WidgetTypeId.Classifications:\n return 'This widget type cannot be selected as this topic has no child topics.';\n }\n}\n\ninterface DashboardWizardSelectWidgetViewProps {\n dashboardId: string;\n}\n\nexport function DashboardWizardSelectWidgetView(props: DashboardWizardSelectWidgetViewProps): JSX.Element {\n const widgetTypes = Flight.useBasicFetch<WidgetTypesResponse>(DashboardRequests.widgetTypes());\n const dashboard = useFetchDashboard(props.dashboardId);\n\n const [ widgetId, setWidgetTypeId ] = React.useState<WidgetTypeId>();\n\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(dashboard.data);\n const isTopicDashboard = CuratedDashboardHelper.isClassificationDashboard(targetInfo);\n\n const classification = Flight.useBasicFetch<Classification>(isTopicDashboard &&\n isTopicDashboard &&\n SubjectRequests.classification(targetInfo.classificationId));\n\n const videos = Flight.useBasicFetch<VideoCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Videos)\n );\n const playlists = Flight.useBasicFetch<PlaylistCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Playlists)\n );\n const series = Flight.useBasicFetch<SeriesCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Series)\n );\n const childTopics = Flight.useBasicFetch<Classification[]>(\n isTopicDashboard &&\n SubjectRequests.classificationChildren(targetInfo.classificationId)\n );\n const cvLivePresentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.cvLivePresentation()\n );\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n function isDisabled(widgetType: WidgetTypeId): boolean {\n if (!isTopicDashboard)\n return false;\n\n switch (widgetType) {\n case WidgetTypeId.ClassificationMedia:\n return !videos.data?.data?.length;\n\n case WidgetTypeId.Classifications:\n return !childTopics.data?.length;\n\n default:\n return false;\n }\n }\n\n function widgetsTypesFilter(type: WidgetType): boolean {\n const config = CuratorWidgetTypeIdConfig[type.id];\n\n if (!config || !targetInfo || !dashboard.hasCompleted)\n return false;\n\n let isStreamable = DashboardHelper.isProduct(\n dashboard.data,\n ProductId.StreamableLearning,\n cvLivePresentation.data?.id\n );\n\n const userCuratorGroups = ArrayHelper.toObject(currentUser.data?.groups ?? [], 'name');\n\n if (!config.groups.some(group => userCuratorGroups[group]))\n return false;\n\n if (!isStreamable && CuratedDashboardHelper.isClassificationDashboard(targetInfo))\n isStreamable = classification.data?.presentationId === cvLivePresentation.data?.id;\n\n if (isStreamable)\n return !!config.targets[ProductId.StreamableLearning]?.[targetInfo.targetType];\n\n return !!config.targets[ProductId.Primary]?.[targetInfo.targetType];\n }\n\n function getOptions(): WizardOptionHash<WidgetTypeId>[] {\n if (!widgetTypes.data)\n return [];\n\n const selectableWidgetTypes = widgetTypes.data.filter(type => ORDERED_SELECTABLE_WIDGET_TYPES.includes(type.id));\n\n return selectableWidgetTypes\n .filter(widgetsTypesFilter)\n .map(type => {\n const widgetTypeConfig = CuratorWidgetTypeIdConfig[type.id];\n const disabled = isDisabled(type.id);\n\n return {\n id: type.id,\n name: widgetTypeConfig.displayName,\n icon: widgetTypeConfig.icon,\n groupName: widgetTypeConfig.groupName,\n fontSize: 'sm',\n order: ORDERED_SELECTABLE_WIDGET_TYPES.indexOf(type.id),\n infoComponent: () => <WizardItemDescription description={type.description} />,\n disabled,\n tooltip: disabled && getDisabledTooltip(type.id)\n };\n });\n }\n\n const dataLoaded = (\n widgetTypes.hasCompleted &&\n (!isTopicDashboard ||\n (videos.hasCompleted &&\n series.hasCompleted &&\n playlists.hasCompleted &&\n classification.hasCompleted &&\n cvLivePresentation.hasCompleted\n )\n )\n );\n\n return (\n <DashboardWizardLayout\n dashboard={dashboard.data}\n widgetTypeId={widgetId}\n currentStep='select-widget'\n >\n <h2 className='h4 mb-4'>\n Select a widget\n </h2>\n \n {!dataLoaded ? (\n <div className='text-center pt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n ) : (\n <WizardOptions\n options={getOptions()}\n selectedAction={widgetId}\n setOption={option => setWidgetTypeId(option)}\n />\n )}\n </DashboardWizardLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"nvtWO4PW2.chunk.js","names":[],"sources":["../../../../../src/apps/dashboard-editor/views/wizard/dashboard-wizard-select-widget/DashboardWizardSelectWidgetView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { WizardOptionHash, WizardOptions } from 'libs/shared/components/wizard/options/WizardOptions';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classification, CuratorUser, PlaylistCollection, Presentation, SeriesCollection, VideoCollection } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { SubjectMemberType } from 'shared/enums';\nimport { DashboardRequests } from 'shared/flight-requests/DashboardRequests';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { DashboardHelper } from 'shared/utils/DashboardHelper';\n\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\nimport { DashboardWizardLayout } from 'apps/dashboard-editor/components/wizard/layout/DashboardWizardLayout';\nimport { WizardItemDescription } from 'apps/dashboard-editor/components/wizard/wizard-item-description/WizardItemDescription';\nimport { CuratorWidgetTypeIdConfig } from 'apps/dashboard-editor/constants/CuratorWidgetTypeIdConfig';\nimport { useFetchDashboard } from 'apps/dashboard-editor/hooks/useFetchDashboard';\nimport { WidgetType, WidgetTypesResponse } from 'apps/dashboard-editor/interfaces/data-requests/WidgetsTypesResponse';\n\nconst ORDERED_SELECTABLE_WIDGET_TYPES: WidgetTypeId[] = [\n WidgetTypeId.CuratedMedia,\n WidgetTypeId.LatestReleasedVideos,\n WidgetTypeId.ClassificationLatestReleasedVideosV2,\n WidgetTypeId.SeasonalClassificationMedia,\n WidgetTypeId.TrendingClassificationsMedia,\n WidgetTypeId.ContentPartnerAllVideos,\n WidgetTypeId.PlaylistMedia,\n WidgetTypeId.SeriesMedia,\n WidgetTypeId.ClassificationMedia,\n WidgetTypeId.CuratedClassifications,\n WidgetTypeId.Classifications,\n WidgetTypeId.ClassificationLatestReleasedVideos,\n WidgetTypeId.LatestReleasedClassifications,\n WidgetTypeId.TrendingClassifications,\n WidgetTypeId.SpecialEventClassifications,\n WidgetTypeId.CuratedSeries,\n WidgetTypeId.CuratedMultimedia,\n WidgetTypeId.Blurb,\n WidgetTypeId.CuratedContentPartners,\n WidgetTypeId.SpotlightContentPartners,\n WidgetTypeId.AuthorReviewer,\n WidgetTypeId.Faq,\n WidgetTypeId.Feedback,\n WidgetTypeId.CuratedCompanies,\n WidgetTypeId.Ratings,\n WidgetTypeId.ContinueWatching,\n WidgetTypeId.PersonalisedTopics,\n WidgetTypeId.BecauseYouWatched,\n WidgetTypeId.DynamicBlurb,\n WidgetTypeId.CompanyLatestReleasedVideo,\n WidgetTypeId.CompanyVideos,\n WidgetTypeId.UpcomingLivestreams,\n WidgetTypeId.ClassificationLatestReleasedVideo,\n WidgetTypeId.CompanyClassificationVideos,\n WidgetTypeId.ContentPartnerLatestReleasedVideos,\n WidgetTypeId.ContentPartnerVideos,\n WidgetTypeId.ContentPartnerSeries,\n WidgetTypeId.TrendingContentPartnersVideo\n];\n\nfunction getDisabledTooltip(widgetType: WidgetTypeId): string {\n switch (widgetType) {\n case WidgetTypeId.ClassificationMedia:\n return 'This widget type cannot be selected as this topic has no videos.';\n\n case WidgetTypeId.Classifications:\n return 'This widget type cannot be selected as this topic has no child topics.';\n }\n}\n\ninterface DashboardWizardSelectWidgetViewProps {\n dashboardId: string;\n}\n\nexport function DashboardWizardSelectWidgetView(props: DashboardWizardSelectWidgetViewProps): JSX.Element {\n const widgetTypes = Flight.useBasicFetch<WidgetTypesResponse>(DashboardRequests.widgetTypes());\n const dashboard = useFetchDashboard(props.dashboardId);\n\n const [ widgetId, setWidgetTypeId ] = React.useState<WidgetTypeId>();\n\n const targetInfo = CuratedDashboardHelper.getDashboardTargetInfo(dashboard.data);\n const isTopicDashboard = CuratedDashboardHelper.isClassificationDashboard(targetInfo);\n\n const classification = Flight.useBasicFetch<Classification>(isTopicDashboard &&\n isTopicDashboard &&\n SubjectRequests.classification(targetInfo.classificationId));\n\n const videos = Flight.useBasicFetch<VideoCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Videos)\n );\n const playlists = Flight.useBasicFetch<PlaylistCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Playlists)\n );\n const series = Flight.useBasicFetch<SeriesCollection>(\n isTopicDashboard &&\n SubjectRequests.classificationMembers(targetInfo.classificationId, SubjectMemberType.Series)\n );\n const childTopics = Flight.useBasicFetch<Classification[]>(\n isTopicDashboard &&\n SubjectRequests.classificationChildren(targetInfo.classificationId)\n );\n const cvLivePresentation = Flight.useBasicFetch<Presentation>(\n PresentationRequests.cvLivePresentation()\n );\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n\n function isDisabled(widgetType: WidgetTypeId): boolean {\n if (!isTopicDashboard)\n return false;\n\n switch (widgetType) {\n case WidgetTypeId.ClassificationMedia:\n return !videos.data?.data?.length;\n\n case WidgetTypeId.Classifications:\n return !childTopics.data?.length;\n\n default:\n return false;\n }\n }\n\n function widgetsTypesFilter(type: WidgetType): boolean {\n const config = CuratorWidgetTypeIdConfig[type.id];\n\n if (!config || !targetInfo || !dashboard.hasCompleted)\n return false;\n\n let isStreamable = DashboardHelper.isProduct(\n dashboard.data,\n ProductId.StreamableLearning,\n cvLivePresentation.data?.id\n );\n\n const userCuratorGroups = ArrayHelper.toObject(currentUser.data?.groups ?? [], 'name');\n\n if (!config.groups.some(group => userCuratorGroups[group]))\n return false;\n\n if (!isStreamable && CuratedDashboardHelper.isClassificationDashboard(targetInfo))\n isStreamable = classification.data?.presentationId === cvLivePresentation.data?.id;\n\n if (isStreamable)\n return !!config.targets[ProductId.StreamableLearning]?.[targetInfo.targetType];\n\n return !!config.targets[ProductId.Primary]?.[targetInfo.targetType];\n }\n\n function getOptions(): WizardOptionHash<WidgetTypeId>[] {\n if (!widgetTypes.data)\n return [];\n\n const selectableWidgetTypes = widgetTypes.data.filter(type => ORDERED_SELECTABLE_WIDGET_TYPES.includes(type.id));\n\n return selectableWidgetTypes\n .filter(widgetsTypesFilter)\n .map(type => {\n const widgetTypeConfig = CuratorWidgetTypeIdConfig[type.id];\n const disabled = isDisabled(type.id);\n\n return {\n id: type.id,\n name: widgetTypeConfig.displayName,\n icon: widgetTypeConfig.icon,\n groupName: widgetTypeConfig.groupName,\n fontSize: 'sm',\n order: ORDERED_SELECTABLE_WIDGET_TYPES.indexOf(type.id),\n infoComponent: () => <WizardItemDescription description={type.description} />,\n disabled,\n tooltip: disabled && getDisabledTooltip(type.id)\n };\n });\n }\n\n const dataLoaded = (\n widgetTypes.hasCompleted &&\n (!isTopicDashboard ||\n (videos.hasCompleted &&\n series.hasCompleted &&\n playlists.hasCompleted &&\n classification.hasCompleted &&\n cvLivePresentation.hasCompleted\n )\n )\n );\n\n return (\n <DashboardWizardLayout\n dashboard={dashboard.data}\n widgetTypeId={widgetId}\n currentStep='select-widget'\n >\n <h2 className='h4 mb-4'>\n Select a widget\n </h2>\n \n {!dataLoaded ? (\n <div className='text-center pt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n ) : (\n <WizardOptions\n options={getOptions()}\n selectedAction={widgetId}\n setOption={option => setWidgetTypeId(option)}\n />\n )}\n </DashboardWizardLayout>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{C as e,a as t,i as n,ln as r,t as i,w as a}from"./rp704-Pm.chunk.js";import{l as o,n as s,r as c,t as l}from"./Crs6pJ2h.chunk.js";import{t as u}from"./DZX1tZ-D.chunk.js";import{t as d}from"./Di_u2uix.chunk.js";import{t as f}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as p,r as m}from"./BKtR2N4K.chunk.js";import{$ as h,G as g,H as _,J as v,K as y,U as b,at as x,et as S,it as C,t as ee,tt as w,z as T}from"./C7Gmh7eY.chunk.js";import{r as E}from"./DkstLT1W.chunk.js";import{t as D}from"./CbiGs3Tn.chunk.js";import{t as O}from"./DmpWpl-3.chunk.js";import{t as k}from"./BMjA_FNA.chunk.js";import{s as A,u as j}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as M}from"./DFZ_IQ1H.chunk.js";import"./BCfBk23W.chunk.js";import{t as te}from"./DjzD1n9W.chunk.js";import{t as N}from"./CZyPFSXo.chunk.js";import{t as ne}from"./C04Jhuy9.chunk.js";import{t as P}from"./C3apTl7R.chunk.js";import{t as F}from"./DhqpGW1a.chunk.js";import{t as I}from"./BNgL3wBw.chunk.js";import{r as L}from"./CJJUORgr.chunk.js";import{t as R}from"./Dy4nscVE2.chunk.js";import{n as z}from"./DvP7S5Uq.chunk.js";import{i as B,n as V,t as H}from"./BCMXlwdC2.chunk.js";import{t as U}from"./MBxuLnEp2.chunk.js";var W=r(t()),G=n();function K(e){function t(){switch(e.type){case`missingThumbnail`:return`Missing Thumbnail`;case`missingResources`:return`Missing Resources`;case`missingAssets`:return`Missing Assets`}}return(0,G.jsx)(`div`,{className:`rounded-pill py-0 mb-0 px-2 d-inline-flex gap-2 flex-shrink-0 align-items-center alert alert-warning fw-semibold`,children:t()})}function q(e){let t=new Set;return e.validations.forEach(e=>{switch(e.column){case`resources`:case`interactives`:t.add(`missingResources`);case`hasCuratedThumbnail`:case`thumbnailQuality`:case`thumbnailReviewers`:t.add(`missingThumbnail`);case`banner`:case`cover`:case`thumbnail`:t.add(`missingAssets`)}}),(0,G.jsx)(`div`,{className:`d-flex gap-2 flex-shrink-0`,children:Array.from(t).map(e=>(0,G.jsx)(K,{type:e},e))})}var J={table:`w-100 px-4`,header:`fw-semibold`,headerCell:`px-3 py-1 mh-100 align-items-center text-nowrap bg-gray-100`,row:U.rowReview,cell:`d-flex align-items-center border-end border-light`},Y={headerItem:`_headerItem_18qrk_1`,colored:`_colored_18qrk_4`,priorityWrapper:`_priorityWrapper_18qrk_7`};function X(t){let[n,r]=W.useState(!1),[g,y]=W.useState([]),[w,O]=W.useState(!1),{readonly:A}=W.useContext(S),{hasPermissions:j}=te();W.useEffect(()=>{n&&t.dashboard.videoCount&&(O(!0),t.getDashboardVideos(t.dashboard.id).then(y).finally(()=>{O(!1)}))},[n]);let N={application:f.DASHBOARD_EDITOR,action:d.DashboardEditor.EDIT_DASHBOARD,args:[t.dashboard.id]},I=t.dashboard.stageValidation.canMoveToNextStage&&!A,R=_(g,t.dashboard),z=t.dashboard.stageValidation.columnValidationResults.some(e=>e.errorCode!==`resolve-video-issues`),V=t.stage===`published_dashboard`,H=M.getDashboardTargetType(t.dashboard);function U({byPass:n}={}){e.trigger({application:f.ASSEMBLY_LINE,action:d.AssemblyLine.PUBLISH_TOPIC,args:[t.dashboard.id],params:n?{byPassValidation:!0}:{}})}function K(){return j(E.ContentPipelineResolveIssue)}function X(){return[{label:x(),appLink:{application:f.DASHBOARD_EDITOR,action:d.DashboardEditor.EDIT_DASHBOARD,args:[t.dashboard.id]},openInNewTab:!0,button:!1},{label:`Preview in ClickView`,onClick:async()=>{let e=await t.getClassification(t.dashboard.topicId),n=u.safeUrlConcat(ClickView.Config.Urls.LiteUrl,`topics/${t.dashboard.topicId}/${i.slugify(e.name)}`),r=u.urlBuilder(n,{dashboardId:t.dashboard.id,preview:!0,skipPrompt:!0});a.PageLoad(r,!0)},button:!1}]}let Z=ee[t.stage].getDefaultColumns().map(e=>e({objectType:`video`,dashboardId:t.dashboard.id,stage:t.stage,presentations:t.presentations,pipelineId:t.pipelineId,isChannel:t.dashboard.isChannel})).filter(e=>!(e.id===`reviewAction`&&!K())),Q=t.presentations.find(e=>e.id===t.dashboard.presentationId),$=[...t.dashboard.highlightValidationSummary||[],...t.dashboard.stageValidation.columnValidationResults];function re(){return t.dashboard.isChannel?`Publish channel`:R&&!I?`Force publish`:`Publish topic`}function ie(){return t.dashboard.isChannel?!I:!I&&!R}function ae(){if(t.dashboard.isChannel)return`Channel`;switch(t.dashboard.topicType){case v.MoviesAndTv:return`Movies + TV`;default:return`Curriculum Topic`}}return(0,G.jsxs)(`div`,{className:`pt-2 ${Y.colored}`,children:[(0,G.jsxs)(`div`,{className:`px-4 pb-2 d-flex justify-content-between`,children:[(0,G.jsxs)(`div`,{className:`d-flex align-items-baseline ${Y.headerItem}`,children:[(0,G.jsx)(o,{onClick:()=>r(e=>!e),className:`d-flex align-items-center`,children:(0,G.jsx)(s,{className:`svg-container`,svg:n?P:L})}),(0,G.jsxs)(`div`,{className:`flex-shrink-0 d-flex flex-column`,children:[(0,G.jsxs)(`div`,{className:`d-flex align-items-end`,children:[(0,G.jsxs)(`span`,{className:`h3 mb-0 flex-shrink-0 me-2`,children:[H===m.ClassificationDirectory?`[Directory] `:``,t.dashboard.name]}),(0,G.jsx)(h,{actions:[`new-window`,`copy`],appLink:N,data:t.dashboard.id})]}),(0,G.jsxs)(`span`,{className:`text`,children:[t.dashboard.videoCount,` `,t.dashboard.videoCount===1?`video`:`videos`,Q?(0,G.jsxs)(`span`,{children:[` • `,Q.description]}):``,(0,G.jsxs)(`span`,{children:[` • `,ae()]})]})]})]}),(0,G.jsxs)(`div`,{className:`d-flex align-items-center ${Y.headerItem}`,children:[z&&!V&&K()&&(0,G.jsxs)(l,{className:`d-flex align-items-center text-decoration-none flex-shrink-0 mx-2 text-danger`,appLink:{application:f.ASSEMBLY_LINE,action:d.AssemblyLine.RESOLVE_TOPIC_ISSUE,args:[t.dashboard.id]},children:[(0,G.jsx)(s,{className:`d-inline-block svg-container me-1`,svg:ne,size:c.Small}),(0,G.jsx)(`div`,{children:`Resolve issue`})]}),!!$?.length&&(0,G.jsx)(q,{validations:$}),V?(0,G.jsx)(`div`,{className:`w-100 text-center`,children:(0,G.jsx)(C,{status:p.Published})}):(0,G.jsx)(b,{obj:t.dashboard,presentations:t.presentations}),(0,G.jsx)(`div`,{className:Y.priorityWrapper,children:(0,G.jsx)(T,{value:t.dashboard,updatePriority:t.updatePriority})}),!V&&(0,G.jsx)(`div`,{className:`flex-shrink-0 ms-2`,children:(0,G.jsx)(`button`,{className:D(`btn btn-dark`,ie()&&`disabled`),onClick:()=>U({byPass:!I&&R}),disabled:!I&&!R,children:re()})}),(0,G.jsx)(`div`,{className:`pe-1`,children:(0,G.jsx)(F,{actions:X(),actionsDropdownClassName:`btn`})})]})]}),n&&!!t.dashboard.videoCount&&(0,G.jsx)(`div`,{className:`p-2`,children:w?(0,G.jsx)(B,{}):(0,G.jsx)(S.Provider,{value:{readonly:!1},children:(0,G.jsx)(k,{columns:Z,data:g.map(e=>({...e,checked:!1})),theme:J,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:60,containerHeight:`75vh`}})})})]})}function Z(e){let t=R(e.queryParams,e.subStage),{presentations:n,isLoading:r}=z(e.queryParams,`topic`,e.subStage,e.pipelineId),i=j(),a=A(g.getDashboards({stage:e.subStage,presentationId:e.queryParams.presentationId,filters:y.serializeFilterRequestBody(t),searchQuery:e.queryParams.query,cursor:e.queryParams.cursor,sort:e.queryParams.sort,limit:25}));function o(e){return i(N.classification(e))}function s(e){return i(g.getDashboardVideos(e))}function c(t,n){return i(g.updateDashboardPriority(t,n,e.subStage,e.queryParams.presentationId,e.queryParams.sort))}return(0,G.jsx)(w,{subStage:e.subStage,pipelineId:e.pipelineId,children:(0,G.jsxs)(V,{stage:e.stage,subStage:e.subStage,objectType:`dashboard`,pipelineId:e.pipelineId,queryParams:e.queryParams,filters:t,counts:{showing:a.data?.data?.length??0,total:a.data?.count??0},children:[(!a.hasCompleted||e.queryParams.presentationId&&r)&&(0,G.jsx)(B,{}),!!a.data?.data&&!a.data?.data?.length&&(0,G.jsx)(H,{queryParams:e.queryParams,pipelineId:e.pipelineId}),(0,G.jsxs)(`div`,{children:[a.data?.data?.map((t,r)=>(0,G.jsx)(X,{dashboard:t,index:r,presentationId:e.queryParams.presentationId,stage:e.subStage,getClassification:o,getDashboardVideos:s,updatePriority:c,presentations:n,pipelineId:e.pipelineId},t.id)),a.data&&!!a.data.data?.length&&(0,G.jsx)(`div`,{className:`d-flex flex-row justify-content-end`,children:(0,G.jsx)(I,{cursors:a.data?.pagination,appLink:O.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`})})]})]})})}export{Z as AssemblyLineReviewStageView};
2
- //# sourceMappingURL=CACu0hGi2.chunk.js.map
1
+ import{C as e,a as t,i as n,ln as r,t as i,w as a}from"./rp704-Pm.chunk.js";import{l as o,n as s,r as c,t as l}from"./Crs6pJ2h.chunk.js";import{t as u}from"./DZX1tZ-D.chunk.js";import{t as d}from"./Di_u2uix.chunk.js";import{t as f}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as p,r as m}from"./BKtR2N4K.chunk.js";import{$ as h,G as g,H as _,J as v,K as y,U as b,at as x,et as S,it as C,t as ee,tt as w,z as T}from"./DWHKdmdQ.chunk.js";import{r as E}from"./DkstLT1W.chunk.js";import{t as D}from"./CbiGs3Tn.chunk.js";import{t as O}from"./DmpWpl-3.chunk.js";import{t as k}from"./BMjA_FNA.chunk.js";import{s as A,u as j}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as M}from"./DFZ_IQ1H.chunk.js";import"./BCfBk23W.chunk.js";import{t as te}from"./DjzD1n9W.chunk.js";import{t as N}from"./CZyPFSXo.chunk.js";import{t as ne}from"./C04Jhuy9.chunk.js";import{t as P}from"./C3apTl7R.chunk.js";import{t as F}from"./DhqpGW1a.chunk.js";import{t as I}from"./BNgL3wBw.chunk.js";import{r as L}from"./CJJUORgr.chunk.js";import{t as R}from"./T3BageSw2.chunk.js";import{n as z}from"./3eMwLZ5D.chunk.js";import{i as B,n as V,t as H}from"./B8RZKQTs2.chunk.js";import{t as U}from"./MBxuLnEp2.chunk.js";var W=r(t()),G=n();function K(e){function t(){switch(e.type){case`missingThumbnail`:return`Missing Thumbnail`;case`missingResources`:return`Missing Resources`;case`missingAssets`:return`Missing Assets`}}return(0,G.jsx)(`div`,{className:`rounded-pill py-0 mb-0 px-2 d-inline-flex gap-2 flex-shrink-0 align-items-center alert alert-warning fw-semibold`,children:t()})}function q(e){let t=new Set;return e.validations.forEach(e=>{switch(e.column){case`resources`:case`interactives`:t.add(`missingResources`);case`hasCuratedThumbnail`:case`thumbnailQuality`:case`thumbnailReviewers`:t.add(`missingThumbnail`);case`banner`:case`cover`:case`thumbnail`:t.add(`missingAssets`)}}),(0,G.jsx)(`div`,{className:`d-flex gap-2 flex-shrink-0`,children:Array.from(t).map(e=>(0,G.jsx)(K,{type:e},e))})}var J={table:`w-100 px-4`,header:`fw-semibold`,headerCell:`px-3 py-1 mh-100 align-items-center text-nowrap bg-gray-100`,row:U.rowReview,cell:`d-flex align-items-center border-end border-light`},Y={headerItem:`_headerItem_18qrk_1`,colored:`_colored_18qrk_4`,priorityWrapper:`_priorityWrapper_18qrk_7`};function X(t){let[n,r]=W.useState(!1),[g,y]=W.useState([]),[w,O]=W.useState(!1),{readonly:A}=W.useContext(S),{hasPermissions:j}=te();W.useEffect(()=>{n&&t.dashboard.videoCount&&(O(!0),t.getDashboardVideos(t.dashboard.id).then(y).finally(()=>{O(!1)}))},[n]);let N={application:f.DASHBOARD_EDITOR,action:d.DashboardEditor.EDIT_DASHBOARD,args:[t.dashboard.id]},I=t.dashboard.stageValidation.canMoveToNextStage&&!A,R=_(g,t.dashboard),z=t.dashboard.stageValidation.columnValidationResults.some(e=>e.errorCode!==`resolve-video-issues`),V=t.stage===`published_dashboard`,H=M.getDashboardTargetType(t.dashboard);function U({byPass:n}={}){e.trigger({application:f.ASSEMBLY_LINE,action:d.AssemblyLine.PUBLISH_TOPIC,args:[t.dashboard.id],params:n?{byPassValidation:!0}:{}})}function K(){return j(E.ContentPipelineResolveIssue)}function X(){return[{label:x(),appLink:{application:f.DASHBOARD_EDITOR,action:d.DashboardEditor.EDIT_DASHBOARD,args:[t.dashboard.id]},openInNewTab:!0,button:!1},{label:`Preview in ClickView`,onClick:async()=>{let e=await t.getClassification(t.dashboard.topicId),n=u.safeUrlConcat(ClickView.Config.Urls.LiteUrl,`topics/${t.dashboard.topicId}/${i.slugify(e.name)}`),r=u.urlBuilder(n,{dashboardId:t.dashboard.id,preview:!0,skipPrompt:!0});a.PageLoad(r,!0)},button:!1}]}let Z=ee[t.stage].getDefaultColumns().map(e=>e({objectType:`video`,dashboardId:t.dashboard.id,stage:t.stage,presentations:t.presentations,pipelineId:t.pipelineId,isChannel:t.dashboard.isChannel})).filter(e=>!(e.id===`reviewAction`&&!K())),Q=t.presentations.find(e=>e.id===t.dashboard.presentationId),$=[...t.dashboard.highlightValidationSummary||[],...t.dashboard.stageValidation.columnValidationResults];function re(){return t.dashboard.isChannel?`Publish channel`:R&&!I?`Force publish`:`Publish topic`}function ie(){return t.dashboard.isChannel?!I:!I&&!R}function ae(){if(t.dashboard.isChannel)return`Channel`;switch(t.dashboard.topicType){case v.MoviesAndTv:return`Movies + TV`;default:return`Curriculum Topic`}}return(0,G.jsxs)(`div`,{className:`pt-2 ${Y.colored}`,children:[(0,G.jsxs)(`div`,{className:`px-4 pb-2 d-flex justify-content-between`,children:[(0,G.jsxs)(`div`,{className:`d-flex align-items-baseline ${Y.headerItem}`,children:[(0,G.jsx)(o,{onClick:()=>r(e=>!e),className:`d-flex align-items-center`,children:(0,G.jsx)(s,{className:`svg-container`,svg:n?P:L})}),(0,G.jsxs)(`div`,{className:`flex-shrink-0 d-flex flex-column`,children:[(0,G.jsxs)(`div`,{className:`d-flex align-items-end`,children:[(0,G.jsxs)(`span`,{className:`h3 mb-0 flex-shrink-0 me-2`,children:[H===m.ClassificationDirectory?`[Directory] `:``,t.dashboard.name]}),(0,G.jsx)(h,{actions:[`new-window`,`copy`],appLink:N,data:t.dashboard.id})]}),(0,G.jsxs)(`span`,{className:`text`,children:[t.dashboard.videoCount,` `,t.dashboard.videoCount===1?`video`:`videos`,Q?(0,G.jsxs)(`span`,{children:[` • `,Q.description]}):``,(0,G.jsxs)(`span`,{children:[` • `,ae()]})]})]})]}),(0,G.jsxs)(`div`,{className:`d-flex align-items-center ${Y.headerItem}`,children:[z&&!V&&K()&&(0,G.jsxs)(l,{className:`d-flex align-items-center text-decoration-none flex-shrink-0 mx-2 text-danger`,appLink:{application:f.ASSEMBLY_LINE,action:d.AssemblyLine.RESOLVE_TOPIC_ISSUE,args:[t.dashboard.id]},children:[(0,G.jsx)(s,{className:`d-inline-block svg-container me-1`,svg:ne,size:c.Small}),(0,G.jsx)(`div`,{children:`Resolve issue`})]}),!!$?.length&&(0,G.jsx)(q,{validations:$}),V?(0,G.jsx)(`div`,{className:`w-100 text-center`,children:(0,G.jsx)(C,{status:p.Published})}):(0,G.jsx)(b,{obj:t.dashboard,presentations:t.presentations}),(0,G.jsx)(`div`,{className:Y.priorityWrapper,children:(0,G.jsx)(T,{value:t.dashboard,updatePriority:t.updatePriority})}),!V&&(0,G.jsx)(`div`,{className:`flex-shrink-0 ms-2`,children:(0,G.jsx)(`button`,{className:D(`btn btn-dark`,ie()&&`disabled`),onClick:()=>U({byPass:!I&&R}),disabled:!I&&!R,children:re()})}),(0,G.jsx)(`div`,{className:`pe-1`,children:(0,G.jsx)(F,{actions:X(),actionsDropdownClassName:`btn`})})]})]}),n&&!!t.dashboard.videoCount&&(0,G.jsx)(`div`,{className:`p-2`,children:w?(0,G.jsx)(B,{}):(0,G.jsx)(S.Provider,{value:{readonly:!1},children:(0,G.jsx)(k,{columns:Z,data:g.map(e=>({...e,checked:!1})),theme:J,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:60,containerHeight:`75vh`}})})})]})}function Z(e){let t=R(e.queryParams,e.subStage),{presentations:n,isLoading:r}=z(e.queryParams,`topic`,e.subStage,e.pipelineId),i=j(),a=A(g.getDashboards({stage:e.subStage,presentationId:e.queryParams.presentationId,filters:y.serializeFilterRequestBody(t),searchQuery:e.queryParams.query,cursor:e.queryParams.cursor,sort:e.queryParams.sort,limit:25}));function o(e){return i(N.classification(e))}function s(e){return i(g.getDashboardVideos(e))}function c(t,n){return i(g.updateDashboardPriority(t,n,e.subStage,e.queryParams.presentationId,e.queryParams.sort))}return(0,G.jsx)(w,{subStage:e.subStage,pipelineId:e.pipelineId,children:(0,G.jsxs)(V,{stage:e.stage,subStage:e.subStage,objectType:`dashboard`,pipelineId:e.pipelineId,queryParams:e.queryParams,filters:t,counts:{showing:a.data?.data?.length??0,total:a.data?.count??0},children:[(!a.hasCompleted||e.queryParams.presentationId&&r)&&(0,G.jsx)(B,{}),!!a.data?.data&&!a.data?.data?.length&&(0,G.jsx)(H,{queryParams:e.queryParams,pipelineId:e.pipelineId}),(0,G.jsxs)(`div`,{children:[a.data?.data?.map((t,r)=>(0,G.jsx)(X,{dashboard:t,index:r,presentationId:e.queryParams.presentationId,stage:e.subStage,getClassification:o,getDashboardVideos:s,updatePriority:c,presentations:n,pipelineId:e.pipelineId},t.id)),a.data&&!!a.data.data?.length&&(0,G.jsx)(`div`,{className:`d-flex flex-row justify-content-end`,children:(0,G.jsx)(I,{cursors:a.data?.pagination,appLink:O.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`})})]})]})})}export{Z as AssemblyLineReviewStageView};
2
+ //# sourceMappingURL=oYKM19q12.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CACu0hGi2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/validation-badges/ValidationBadges.tsx","../../../../../src/apps/assembly-line/constants/AssemblyLineReviewVideoTableTheme.ts","../../../../../src/apps/assembly-line/components/accordion/assembly-line-topic-accordion.module.scss","../../../../../src/apps/assembly-line/components/accordion/AssemblyLineTopicAccordion.tsx","../../../../../src/apps/assembly-line/views/tables/AssemblyLineReviewStageView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ColumnValidationResults } from 'apps/assembly-line/interfaces/primitives/StageValidation';\n\nenum ValidationType {\n MissingAssets = 'missingAssets',\n MissingThumbnail = 'missingThumbnail',\n MissingResources = 'missingResources'\n}\n\ninterface ValidationBadgeProps {\n type: ValidationType;\n}\n\nfunction ValidationBadge(props: ValidationBadgeProps): JSX.Element {\n function getText(): string {\n switch (props.type) {\n case ValidationType.MissingThumbnail:\n return 'Missing Thumbnail';\n case ValidationType.MissingResources:\n return 'Missing Resources';\n case ValidationType.MissingAssets:\n return 'Missing Assets';\n }\n }\n\n return (\n <div className='rounded-pill py-0 mb-0 px-2 d-inline-flex gap-2 flex-shrink-0 align-items-center alert alert-warning fw-semibold'>\n {getText()}\n </div>\n );\n}\n\ninterface ValidationBadgesProps {\n validations: ColumnValidationResults[];\n}\n\nexport function ValidationBadges(props: ValidationBadgesProps): JSX.Element {\n const badgeTypes = new Set<ValidationType>();\n\n props.validations.forEach(validation => {\n switch (validation.column) {\n case 'resources':\n case 'interactives':\n badgeTypes.add(ValidationType.MissingResources);\n case 'hasCuratedThumbnail':\n case 'thumbnailQuality':\n case 'thumbnailReviewers':\n badgeTypes.add(ValidationType.MissingThumbnail);\n case 'banner':\n case 'cover':\n case 'thumbnail':\n badgeTypes.add(ValidationType.MissingAssets);\n }\n });\n\n return (\n <div className='d-flex gap-2 flex-shrink-0'>\n {Array.from(badgeTypes).map(type => (\n <ValidationBadge key={type} type={type} />\n ))}\n </div>\n );\n}\n","import { TableThemeV2 } from 'libs/shared/components/table-v2/TableV2';\n\nimport styles from './theme.module.scss';\n\nexport const ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME: TableThemeV2 = {\n table: 'w-100 px-4',\n header: 'fw-semibold',\n headerCell: 'px-3 py-1 mh-100 align-items-center text-nowrap bg-gray-100',\n row: styles.rowReview,\n cell: `d-flex align-items-center border-end border-light`\n};\n",":local{\n .headerItem {\n gap: map-get($spacers, 2);\n }\n\n .colored:nth-child(odd) {\n background-color: $gray-100;\n }\n \n .priorityWrapper {\n min-width: 4.435rem; //maintains the same with for select and spinner\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { getOpenInCurationStudioLabel } from 'libs/shared/hooks/useCurationStudio';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\nimport { ChevronRightSvg } from 'libs/shared/images/svg/arrows/ChevronRightSvg';\nimport { WarningOutlineSvg } from 'libs/shared/images/svg/status/WarningOutlineSvg';\nimport { Classification, DashboardStatus, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { useCuratorPermissions } from 'shared/hooks';\n\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineActionsCell } from 'apps/assembly-line/components/table/cells/actions/AssemblyLineActionsCell';\nimport { AssemblyLinePriorityCell } from 'apps/assembly-line/components/table/cells/priority/AssemblyLinePriorityCell';\nimport { StatusAssemblyLineCell } from 'apps/assembly-line/components/table/cells/status/StatusAssemblyLineCell';\nimport { ValidationBadges } from 'apps/assembly-line/components/validation-badges/ValidationBadges';\nimport { ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineReviewVideoTableTheme';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLinePermissionContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { useCanForcePublish } from 'apps/assembly-line/hooks/useCanPublishByPass';\nimport { AssemblyLineDashboard } from 'apps/assembly-line/interfaces/AssemblyLineDashboard';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { TopicType } from 'apps/assembly-line/interfaces/TopicType';\n\nimport { StatusBadge } from '../status-badge/StatusBadge';\n\nimport styles from './assembly-line-topic-accordion.module.scss';\n\ninterface AssemblyLineAccordionProps {\n dashboard: AssemblyLineDashboard;\n getClassification: (id: string) => Promise<Classification>;\n index: number;\n presentationId: string;\n stage: AssemblyLineStage;\n getDashboardVideos: (id: string) => Promise<AssemblyLineVideo[]>;\n presentations: Presentation[];\n pipelineId: ContentPipelineId;\n updatePriority?: (id: string, priority: number) => Promise<void>;\n}\n\nexport function AssemblyLineTopicAccordion(props: AssemblyLineAccordionProps): JSX.Element {\n const [ isExpanded, setIsExpanded ] = React.useState(false);\n const [ videos, setVideos ] = React.useState<AssemblyLineVideo[]>([]);\n const [ isLoadingVideos, setIsLoadingVideos ] = React.useState<boolean>(false);\n\n const { readonly } = React.useContext(AssemblyLinePermissionContext);\n const { hasPermissions } = useCuratorPermissions();\n\n React.useEffect(() => {\n if (isExpanded && props.dashboard.videoCount) {\n setIsLoadingVideos(true);\n props.getDashboardVideos(props.dashboard.id).then(setVideos).finally(() => {\n setIsLoadingVideos(false);\n });\n }\n }, [isExpanded]);\n\n const dashboardAppLink = {\n application: AppChannels.DASHBOARD_EDITOR,\n action: Actions.DashboardEditor.EDIT_DASHBOARD,\n args: [props.dashboard.id]\n };\n\n const canPublish = props.dashboard.stageValidation.canMoveToNextStage && !readonly;\n const canPublishByPass = useCanForcePublish(videos, props.dashboard);\n\n const hasTopicIssues = props.dashboard.stageValidation.columnValidationResults.some(r => {\n return r.errorCode !== 'resolve-video-issues';\n });\n\n const isPublished = props.stage === 'published_dashboard';\n\n const targetType = CuratedDashboardHelper.getDashboardTargetType(props.dashboard);\n\n function onPublishTopic({ byPass }: { byPass?: boolean } = {}): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.PUBLISH_TOPIC,\n args: [props.dashboard.id],\n params: byPass ? { byPassValidation: true } : {}\n });\n }\n\n function canAddressIssues(): boolean {\n return hasPermissions(CuratorPermissionName.ContentPipelineResolveIssue);\n }\n\n function getActions(): ActionOptions[] {\n return [{\n label: getOpenInCurationStudioLabel(),\n appLink: {\n application: AppChannels.DASHBOARD_EDITOR,\n action: Actions.DashboardEditor.EDIT_DASHBOARD,\n args: [props.dashboard.id]\n },\n openInNewTab: true,\n button: false\n }, {\n label: 'Preview in ClickView',\n onClick: async () => {\n const classification = await props.getClassification(props.dashboard.topicId);\n\n const baseUrl = UrlHelper.safeUrlConcat(\n ClickView.Config.Urls.LiteUrl,\n `topics/${props.dashboard.topicId}/${TextHelper.slugify(classification.name)}`\n );\n \n const liteUrl = UrlHelper.urlBuilder(baseUrl, {\n dashboardId: props.dashboard.id,\n preview: true,\n skipPrompt: true\n });\n\n Core.LocationUtils.PageLoad(liteUrl, true);\n },\n button: false\n }];\n }\n\n const columns = AssemblyLineStageConfig[props.stage]\n .getDefaultColumns()\n .map(columnDef => {\n return columnDef({\n objectType: 'video',\n dashboardId: props.dashboard.id,\n stage: props.stage,\n presentations: props.presentations,\n pipelineId: props.pipelineId,\n isChannel: props.dashboard.isChannel\n });\n })\n .filter(column => {\n if (column.id === 'reviewAction' && !canAddressIssues())\n return false;\n\n return true;\n });\n const presentation = props.presentations.find(p => p.id === props.dashboard.presentationId);\n\n const validations = [\n ...(props.dashboard.highlightValidationSummary || []),\n ...props.dashboard.stageValidation.columnValidationResults\n ];\n\n function getPublishButtonText(): string {\n if (props.dashboard.isChannel) {\n return 'Publish channel';\n }\n if (canPublishByPass && !canPublish) {\n return 'Force publish';\n }\n return 'Publish topic';\n }\n\n function getPublishButtonDisabled(): boolean {\n if (props.dashboard.isChannel) {\n return !canPublish;\n }\n return !canPublish && !canPublishByPass;\n }\n\n function getTopicTypeLabel(): string {\n if (props.dashboard.isChannel) {\n return 'Channel';\n }\n switch (props.dashboard.topicType) {\n case TopicType.MoviesAndTv:\n return 'Movies + TV';\n default:\n return 'Curriculum Topic';\n }\n }\n\n return (\n <div className={`pt-2 ${styles.colored}`}>\n <div className='px-4 pb-2 d-flex justify-content-between'>\n <div className={`d-flex align-items-baseline ${styles.headerItem}`}>\n <DivButton\n onClick={() => setIsExpanded(s => !s)}\n className='d-flex align-items-center'\n >\n <SvgContainer\n className='svg-container'\n svg={isExpanded ? ChevronDownSvg : ChevronRightSvg}\n />\n </DivButton>\n\n <div className='flex-shrink-0 d-flex flex-column'>\n <div className='d-flex align-items-end'>\n <span className='h3 mb-0 flex-shrink-0 me-2'>\n {targetType === DashboardTargetType.ClassificationDirectory ? '[Directory] ' : ''}\n {props.dashboard.name}\n </span>\n <AssemblyLineActionsCell\n actions={[ 'new-window', 'copy' ]}\n appLink={dashboardAppLink}\n data={props.dashboard.id}\n />\n </div>\n \n <span className='text'>\n {props.dashboard.videoCount} {props.dashboard.videoCount === 1 ? 'video' : 'videos'}\n {presentation ? <span> &bull; {presentation.description}</span> : ''}\n <span> &bull; {getTopicTypeLabel()}</span>\n </span>\n </div>\n </div>\n\n <div className={`d-flex align-items-center ${styles.headerItem}`}>\n\n {(hasTopicIssues && !isPublished && canAddressIssues()) && (\n <AppLink\n className='d-flex align-items-center text-decoration-none flex-shrink-0 mx-2 text-danger'\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.RESOLVE_TOPIC_ISSUE,\n args: [props.dashboard.id]\n }}\n >\n <SvgContainer className='d-inline-block svg-container me-1' svg={WarningOutlineSvg} size={SvgContainerSize.Small}/>\n <div>Resolve issue</div>\n </AppLink>\n )}\n\n {!!validations?.length && (\n <ValidationBadges validations={validations}/>\n )}\n \n {isPublished ? (\n <div className='w-100 text-center'>\n <StatusBadge status={DashboardStatus.Published} />\n </div>\n ) : (\n <StatusAssemblyLineCell obj={props.dashboard} presentations={props.presentations}/>\n )}\n\n <div className={styles.priorityWrapper}>\n <AssemblyLinePriorityCell value={props.dashboard} updatePriority={props.updatePriority} />\n </div>\n \n {!isPublished && (\n <div className='flex-shrink-0 ms-2'>\n <button\n className={classNames(`btn btn-dark`, getPublishButtonDisabled() && 'disabled')}\n onClick={() => onPublishTopic({ byPass: canPublish ? false : canPublishByPass })}\n disabled={!canPublish && !canPublishByPass}\n >\n {getPublishButtonText()}\n </button>\n </div>\n )}\n\n <div className='pe-1'>\n <ActionsComponent actions={getActions()} actionsDropdownClassName='btn' />\n </div>\n </div>\n </div>\n \n {(isExpanded && !!props.dashboard.videoCount) && (\n <div className='p-2'>\n {isLoadingVideos ? (\n <AssemblyLineSpinner />\n ) : (\n <AssemblyLinePermissionContext.Provider value={{ readonly: false }}>\n <TableV2<any>\n columns={columns}\n data={videos.map(v => ({ ...v, checked: false }))}\n theme={ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 60,\n containerHeight: '75vh'\n }}\n />\n </AssemblyLinePermissionContext.Provider>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { Classification } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { AssemblyLineTopicAccordion } from 'apps/assembly-line/components/accordion/AssemblyLineTopicAccordion';\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { AssemblyLineDashboardCollection } from 'apps/assembly-line/interfaces/AssemblyLineDashboard';\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nexport function AssemblyLineReviewStageView(props: AssemblyLineViewProps): JSX.Element {\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const {\n presentations,\n isLoading: isLoadingPresentation\n } = usePresentationFilter(props.queryParams, 'topic', props.subStage, props.pipelineId);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const dashboards = Flight.useBasicFetch<AssemblyLineDashboardCollection>(\n AssemblyLineRequests.getDashboards({\n stage: props.subStage,\n presentationId: props.queryParams.presentationId,\n filters: AssemblyLineFilterHelper.serializeFilterRequestBody(filters),\n searchQuery: props.queryParams.query,\n cursor: props.queryParams.cursor,\n sort: props.queryParams.sort,\n limit: 25\n })\n );\n\n function getClassification(id: string): Promise<Classification> {\n return fetchAsync<Classification>(SubjectRequests.classification(id));\n }\n \n function getDashboardVideos(id: string) {\n return fetchAsync<AssemblyLineVideo[]>(AssemblyLineRequests.getDashboardVideos(id));\n }\n\n function updatePriority(dashboardId: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateDashboardPriority(\n dashboardId,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='dashboard'\n pipelineId={props.pipelineId}\n queryParams={props.queryParams}\n filters={filters}\n counts={{\n showing: dashboards.data?.data?.length ?? 0,\n total: dashboards.data?.count ?? 0\n }}\n >\n {(!dashboards.hasCompleted\n || (props.queryParams.presentationId && isLoadingPresentation)) && <AssemblyLineSpinner />}\n\n {(!!dashboards.data?.data && !dashboards.data?.data?.length) && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={props.pipelineId} />\n )}\n\n <div>\n {dashboards.data?.data?.map((c, idx) => (\n <AssemblyLineTopicAccordion\n key={c.id}\n dashboard={c}\n index={idx}\n presentationId={props.queryParams.presentationId}\n stage={props.subStage}\n getClassification={getClassification}\n getDashboardVideos={getDashboardVideos}\n updatePriority={updatePriority}\n presentations={presentations}\n pipelineId={props.pipelineId}\n />\n ))}\n\n {(dashboards.data && !!dashboards.data.data?.length) && (\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={dashboards.data?.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n </div>\n )}\n </div>\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"oYKM19q12.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/validation-badges/ValidationBadges.tsx","../../../../../src/apps/assembly-line/constants/AssemblyLineReviewVideoTableTheme.ts","../../../../../src/apps/assembly-line/components/accordion/assembly-line-topic-accordion.module.scss","../../../../../src/apps/assembly-line/components/accordion/AssemblyLineTopicAccordion.tsx","../../../../../src/apps/assembly-line/views/tables/AssemblyLineReviewStageView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ColumnValidationResults } from 'apps/assembly-line/interfaces/primitives/StageValidation';\n\nenum ValidationType {\n MissingAssets = 'missingAssets',\n MissingThumbnail = 'missingThumbnail',\n MissingResources = 'missingResources'\n}\n\ninterface ValidationBadgeProps {\n type: ValidationType;\n}\n\nfunction ValidationBadge(props: ValidationBadgeProps): JSX.Element {\n function getText(): string {\n switch (props.type) {\n case ValidationType.MissingThumbnail:\n return 'Missing Thumbnail';\n case ValidationType.MissingResources:\n return 'Missing Resources';\n case ValidationType.MissingAssets:\n return 'Missing Assets';\n }\n }\n\n return (\n <div className='rounded-pill py-0 mb-0 px-2 d-inline-flex gap-2 flex-shrink-0 align-items-center alert alert-warning fw-semibold'>\n {getText()}\n </div>\n );\n}\n\ninterface ValidationBadgesProps {\n validations: ColumnValidationResults[];\n}\n\nexport function ValidationBadges(props: ValidationBadgesProps): JSX.Element {\n const badgeTypes = new Set<ValidationType>();\n\n props.validations.forEach(validation => {\n switch (validation.column) {\n case 'resources':\n case 'interactives':\n badgeTypes.add(ValidationType.MissingResources);\n case 'hasCuratedThumbnail':\n case 'thumbnailQuality':\n case 'thumbnailReviewers':\n badgeTypes.add(ValidationType.MissingThumbnail);\n case 'banner':\n case 'cover':\n case 'thumbnail':\n badgeTypes.add(ValidationType.MissingAssets);\n }\n });\n\n return (\n <div className='d-flex gap-2 flex-shrink-0'>\n {Array.from(badgeTypes).map(type => (\n <ValidationBadge key={type} type={type} />\n ))}\n </div>\n );\n}\n","import { TableThemeV2 } from 'libs/shared/components/table-v2/TableV2';\n\nimport styles from './theme.module.scss';\n\nexport const ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME: TableThemeV2 = {\n table: 'w-100 px-4',\n header: 'fw-semibold',\n headerCell: 'px-3 py-1 mh-100 align-items-center text-nowrap bg-gray-100',\n row: styles.rowReview,\n cell: `d-flex align-items-center border-end border-light`\n};\n",":local{\n .headerItem {\n gap: map-get($spacers, 2);\n }\n\n .colored:nth-child(odd) {\n background-color: $gray-100;\n }\n \n .priorityWrapper {\n min-width: 4.435rem; //maintains the same with for select and spinner\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { getOpenInCurationStudioLabel } from 'libs/shared/hooks/useCurationStudio';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\nimport { ChevronRightSvg } from 'libs/shared/images/svg/arrows/ChevronRightSvg';\nimport { WarningOutlineSvg } from 'libs/shared/images/svg/status/WarningOutlineSvg';\nimport { Classification, DashboardStatus, DashboardTargetType, Presentation } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { useCuratorPermissions } from 'shared/hooks';\n\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineActionsCell } from 'apps/assembly-line/components/table/cells/actions/AssemblyLineActionsCell';\nimport { AssemblyLinePriorityCell } from 'apps/assembly-line/components/table/cells/priority/AssemblyLinePriorityCell';\nimport { StatusAssemblyLineCell } from 'apps/assembly-line/components/table/cells/status/StatusAssemblyLineCell';\nimport { ValidationBadges } from 'apps/assembly-line/components/validation-badges/ValidationBadges';\nimport { ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineReviewVideoTableTheme';\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { AssemblyLinePermissionContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { useCanForcePublish } from 'apps/assembly-line/hooks/useCanPublishByPass';\nimport { AssemblyLineDashboard } from 'apps/assembly-line/interfaces/AssemblyLineDashboard';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { TopicType } from 'apps/assembly-line/interfaces/TopicType';\n\nimport { StatusBadge } from '../status-badge/StatusBadge';\n\nimport styles from './assembly-line-topic-accordion.module.scss';\n\ninterface AssemblyLineAccordionProps {\n dashboard: AssemblyLineDashboard;\n getClassification: (id: string) => Promise<Classification>;\n index: number;\n presentationId: string;\n stage: AssemblyLineStage;\n getDashboardVideos: (id: string) => Promise<AssemblyLineVideo[]>;\n presentations: Presentation[];\n pipelineId: ContentPipelineId;\n updatePriority?: (id: string, priority: number) => Promise<void>;\n}\n\nexport function AssemblyLineTopicAccordion(props: AssemblyLineAccordionProps): JSX.Element {\n const [ isExpanded, setIsExpanded ] = React.useState(false);\n const [ videos, setVideos ] = React.useState<AssemblyLineVideo[]>([]);\n const [ isLoadingVideos, setIsLoadingVideos ] = React.useState<boolean>(false);\n\n const { readonly } = React.useContext(AssemblyLinePermissionContext);\n const { hasPermissions } = useCuratorPermissions();\n\n React.useEffect(() => {\n if (isExpanded && props.dashboard.videoCount) {\n setIsLoadingVideos(true);\n props.getDashboardVideos(props.dashboard.id).then(setVideos).finally(() => {\n setIsLoadingVideos(false);\n });\n }\n }, [isExpanded]);\n\n const dashboardAppLink = {\n application: AppChannels.DASHBOARD_EDITOR,\n action: Actions.DashboardEditor.EDIT_DASHBOARD,\n args: [props.dashboard.id]\n };\n\n const canPublish = props.dashboard.stageValidation.canMoveToNextStage && !readonly;\n const canPublishByPass = useCanForcePublish(videos, props.dashboard);\n\n const hasTopicIssues = props.dashboard.stageValidation.columnValidationResults.some(r => {\n return r.errorCode !== 'resolve-video-issues';\n });\n\n const isPublished = props.stage === 'published_dashboard';\n\n const targetType = CuratedDashboardHelper.getDashboardTargetType(props.dashboard);\n\n function onPublishTopic({ byPass }: { byPass?: boolean } = {}): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.PUBLISH_TOPIC,\n args: [props.dashboard.id],\n params: byPass ? { byPassValidation: true } : {}\n });\n }\n\n function canAddressIssues(): boolean {\n return hasPermissions(CuratorPermissionName.ContentPipelineResolveIssue);\n }\n\n function getActions(): ActionOptions[] {\n return [{\n label: getOpenInCurationStudioLabel(),\n appLink: {\n application: AppChannels.DASHBOARD_EDITOR,\n action: Actions.DashboardEditor.EDIT_DASHBOARD,\n args: [props.dashboard.id]\n },\n openInNewTab: true,\n button: false\n }, {\n label: 'Preview in ClickView',\n onClick: async () => {\n const classification = await props.getClassification(props.dashboard.topicId);\n\n const baseUrl = UrlHelper.safeUrlConcat(\n ClickView.Config.Urls.LiteUrl,\n `topics/${props.dashboard.topicId}/${TextHelper.slugify(classification.name)}`\n );\n \n const liteUrl = UrlHelper.urlBuilder(baseUrl, {\n dashboardId: props.dashboard.id,\n preview: true,\n skipPrompt: true\n });\n\n Core.LocationUtils.PageLoad(liteUrl, true);\n },\n button: false\n }];\n }\n\n const columns = AssemblyLineStageConfig[props.stage]\n .getDefaultColumns()\n .map(columnDef => {\n return columnDef({\n objectType: 'video',\n dashboardId: props.dashboard.id,\n stage: props.stage,\n presentations: props.presentations,\n pipelineId: props.pipelineId,\n isChannel: props.dashboard.isChannel\n });\n })\n .filter(column => {\n if (column.id === 'reviewAction' && !canAddressIssues())\n return false;\n\n return true;\n });\n const presentation = props.presentations.find(p => p.id === props.dashboard.presentationId);\n\n const validations = [\n ...(props.dashboard.highlightValidationSummary || []),\n ...props.dashboard.stageValidation.columnValidationResults\n ];\n\n function getPublishButtonText(): string {\n if (props.dashboard.isChannel) {\n return 'Publish channel';\n }\n if (canPublishByPass && !canPublish) {\n return 'Force publish';\n }\n return 'Publish topic';\n }\n\n function getPublishButtonDisabled(): boolean {\n if (props.dashboard.isChannel) {\n return !canPublish;\n }\n return !canPublish && !canPublishByPass;\n }\n\n function getTopicTypeLabel(): string {\n if (props.dashboard.isChannel) {\n return 'Channel';\n }\n switch (props.dashboard.topicType) {\n case TopicType.MoviesAndTv:\n return 'Movies + TV';\n default:\n return 'Curriculum Topic';\n }\n }\n\n return (\n <div className={`pt-2 ${styles.colored}`}>\n <div className='px-4 pb-2 d-flex justify-content-between'>\n <div className={`d-flex align-items-baseline ${styles.headerItem}`}>\n <DivButton\n onClick={() => setIsExpanded(s => !s)}\n className='d-flex align-items-center'\n >\n <SvgContainer\n className='svg-container'\n svg={isExpanded ? ChevronDownSvg : ChevronRightSvg}\n />\n </DivButton>\n\n <div className='flex-shrink-0 d-flex flex-column'>\n <div className='d-flex align-items-end'>\n <span className='h3 mb-0 flex-shrink-0 me-2'>\n {targetType === DashboardTargetType.ClassificationDirectory ? '[Directory] ' : ''}\n {props.dashboard.name}\n </span>\n <AssemblyLineActionsCell\n actions={[ 'new-window', 'copy' ]}\n appLink={dashboardAppLink}\n data={props.dashboard.id}\n />\n </div>\n \n <span className='text'>\n {props.dashboard.videoCount} {props.dashboard.videoCount === 1 ? 'video' : 'videos'}\n {presentation ? <span> &bull; {presentation.description}</span> : ''}\n <span> &bull; {getTopicTypeLabel()}</span>\n </span>\n </div>\n </div>\n\n <div className={`d-flex align-items-center ${styles.headerItem}`}>\n\n {(hasTopicIssues && !isPublished && canAddressIssues()) && (\n <AppLink\n className='d-flex align-items-center text-decoration-none flex-shrink-0 mx-2 text-danger'\n appLink={{\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.RESOLVE_TOPIC_ISSUE,\n args: [props.dashboard.id]\n }}\n >\n <SvgContainer className='d-inline-block svg-container me-1' svg={WarningOutlineSvg} size={SvgContainerSize.Small}/>\n <div>Resolve issue</div>\n </AppLink>\n )}\n\n {!!validations?.length && (\n <ValidationBadges validations={validations}/>\n )}\n \n {isPublished ? (\n <div className='w-100 text-center'>\n <StatusBadge status={DashboardStatus.Published} />\n </div>\n ) : (\n <StatusAssemblyLineCell obj={props.dashboard} presentations={props.presentations}/>\n )}\n\n <div className={styles.priorityWrapper}>\n <AssemblyLinePriorityCell value={props.dashboard} updatePriority={props.updatePriority} />\n </div>\n \n {!isPublished && (\n <div className='flex-shrink-0 ms-2'>\n <button\n className={classNames(`btn btn-dark`, getPublishButtonDisabled() && 'disabled')}\n onClick={() => onPublishTopic({ byPass: canPublish ? false : canPublishByPass })}\n disabled={!canPublish && !canPublishByPass}\n >\n {getPublishButtonText()}\n </button>\n </div>\n )}\n\n <div className='pe-1'>\n <ActionsComponent actions={getActions()} actionsDropdownClassName='btn' />\n </div>\n </div>\n </div>\n \n {(isExpanded && !!props.dashboard.videoCount) && (\n <div className='p-2'>\n {isLoadingVideos ? (\n <AssemblyLineSpinner />\n ) : (\n <AssemblyLinePermissionContext.Provider value={{ readonly: false }}>\n <TableV2<any>\n columns={columns}\n data={videos.map(v => ({ ...v, checked: false }))}\n theme={ASSEMBLY_LINE_REVIEW_VIDEO_TABLE_THEME}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 60,\n containerHeight: '75vh'\n }}\n />\n </AssemblyLinePermissionContext.Provider>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { Classification } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\n\nimport { AssemblyLineTopicAccordion } from 'apps/assembly-line/components/accordion/AssemblyLineTopicAccordion';\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { AssemblyLineDashboardCollection } from 'apps/assembly-line/interfaces/AssemblyLineDashboard';\nimport { AssemblyLineVideo } from 'apps/assembly-line/interfaces/AssemblyLineVideo';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nexport function AssemblyLineReviewStageView(props: AssemblyLineViewProps): JSX.Element {\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const {\n presentations,\n isLoading: isLoadingPresentation\n } = usePresentationFilter(props.queryParams, 'topic', props.subStage, props.pipelineId);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const dashboards = Flight.useBasicFetch<AssemblyLineDashboardCollection>(\n AssemblyLineRequests.getDashboards({\n stage: props.subStage,\n presentationId: props.queryParams.presentationId,\n filters: AssemblyLineFilterHelper.serializeFilterRequestBody(filters),\n searchQuery: props.queryParams.query,\n cursor: props.queryParams.cursor,\n sort: props.queryParams.sort,\n limit: 25\n })\n );\n\n function getClassification(id: string): Promise<Classification> {\n return fetchAsync<Classification>(SubjectRequests.classification(id));\n }\n \n function getDashboardVideos(id: string) {\n return fetchAsync<AssemblyLineVideo[]>(AssemblyLineRequests.getDashboardVideos(id));\n }\n\n function updatePriority(dashboardId: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateDashboardPriority(\n dashboardId,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='dashboard'\n pipelineId={props.pipelineId}\n queryParams={props.queryParams}\n filters={filters}\n counts={{\n showing: dashboards.data?.data?.length ?? 0,\n total: dashboards.data?.count ?? 0\n }}\n >\n {(!dashboards.hasCompleted\n || (props.queryParams.presentationId && isLoadingPresentation)) && <AssemblyLineSpinner />}\n\n {(!!dashboards.data?.data && !dashboards.data?.data?.length) && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={props.pipelineId} />\n )}\n\n <div>\n {dashboards.data?.data?.map((c, idx) => (\n <AssemblyLineTopicAccordion\n key={c.id}\n dashboard={c}\n index={idx}\n presentationId={props.queryParams.presentationId}\n stage={props.subStage}\n getClassification={getClassification}\n getDashboardVideos={getDashboardVideos}\n updatePriority={updatePriority}\n presentations={presentations}\n pipelineId={props.pipelineId}\n />\n ))}\n\n {(dashboards.data && !!dashboards.data.data?.length) && (\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={dashboards.data?.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n </div>\n )}\n </div>\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{t as a}from"./cwPDEI372.chunk.js";import{y as o}from"./BhKv6dKl2.chunk.js";import{n as s}from"./CbiGs3Tn.chunk.js";import{n as c}from"./BN_7c5Xk.chunk.js";import{s as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./B_qCVJZp2.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";import{t as f}from"./BivItbGo.chunk.js";import{t as p}from"./CJGGMhrK2.chunk.js";import{t as m}from"./B33M6TT5.chunk.js";import{t as h}from"./CrndJnZp.chunk.js";e();var g=t(),_=`companies.companiesDashboard`;function v(e){let t=l(i.currentUser()),v=l(d.presentations(a.Subject)),y=l(p.getCompany(e.companyId)),b=l(f.selectedCurationTags(e.companyId));function x(){return!!b.data?.data.filter(e=>e.name===u.CLICKVIEW_CURATED).length}function S(t){return{application:r.COMPANIES,action:n.Companies.EDIT_DASHBOARDS,args:[e.companyId,t.id]}}let C=t.hasCompleted&&y.hasCompleted&&v.hasCompleted&&b.hasCompleted;return(0,g.jsxs)(g.Fragment,{children:[t.data&&(0,g.jsx)(h,{companyId:e.companyId,activeAction:n.Companies.COMPANY_DASHBOARDS,currentUser:t.data,context:`clickview`}),C?(0,g.jsx)(g.Fragment,{children:x()?(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h5`,{className:`mt-2`,children:(0,g.jsx)(c,{namespace:_,phrase:`selectPresentation`})}),(0,g.jsx)(m,{presentations:v.data,getAppLink:S})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(o,{object:{name:y.data?.name}}),(0,g.jsx)(`p`,{children:(0,g.jsx)(c,{namespace:_,phrase:`notCurated`})})]})}):(0,g.jsx)(`div`,{className:`text-center py-5`,children:(0,g.jsx)(s,{as:`div`,animation:`border`,role:`status`})})]})}export{v as CompanyDashboardsView};
2
- //# sourceMappingURL=B5v11U7g.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{t as a}from"./cwPDEI372.chunk.js";import{y as o}from"./GpDEun8c2.chunk.js";import{n as s}from"./CbiGs3Tn.chunk.js";import{n as c}from"./BN_7c5Xk.chunk.js";import{s as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./B_qCVJZp2.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";import{t as f}from"./BivItbGo.chunk.js";import{t as p}from"./CJGGMhrK2.chunk.js";import{t as m}from"./B33M6TT5.chunk.js";import{t as h}from"./CL1DcbTZ.chunk.js";e();var g=t(),_=`companies.companiesDashboard`;function v(e){let t=l(i.currentUser()),v=l(d.presentations(a.Subject)),y=l(p.getCompany(e.companyId)),b=l(f.selectedCurationTags(e.companyId));function x(){return!!b.data?.data.filter(e=>e.name===u.CLICKVIEW_CURATED).length}function S(t){return{application:r.COMPANIES,action:n.Companies.EDIT_DASHBOARDS,args:[e.companyId,t.id]}}let C=t.hasCompleted&&y.hasCompleted&&v.hasCompleted&&b.hasCompleted;return(0,g.jsxs)(g.Fragment,{children:[t.data&&(0,g.jsx)(h,{companyId:e.companyId,activeAction:n.Companies.COMPANY_DASHBOARDS,currentUser:t.data,context:`clickview`}),C?(0,g.jsx)(g.Fragment,{children:x()?(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h5`,{className:`mt-2`,children:(0,g.jsx)(c,{namespace:_,phrase:`selectPresentation`})}),(0,g.jsx)(m,{presentations:v.data,getAppLink:S})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(o,{object:{name:y.data?.name}}),(0,g.jsx)(`p`,{children:(0,g.jsx)(c,{namespace:_,phrase:`notCurated`})})]})}):(0,g.jsx)(`div`,{className:`text-center py-5`,children:(0,g.jsx)(s,{as:`div`,animation:`border`,role:`status`})})]})}export{v as CompanyDashboardsView};
2
+ //# sourceMappingURL=ohTu1tHz.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"B5v11U7g.chunk.js","names":[],"sources":["../../../../../src/apps/companies/views/company-dashboards/CompanyDashboardsView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Company, CuratorUser, Presentation, TagCollection } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components';\nimport { PresentationListNav } from 'shared/components/presentations/presentation-list';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\n\nconst namespace = 'companies.companiesDashboard';\n\ninterface CompanyDashboardsViewProps {\n companyId: string;\n}\n\nexport function CompanyDashboardsView(props: CompanyDashboardsViewProps) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const presentations = Flight.useBasicFetch<Presentation[]>(SubjectRequests.presentations(PresentationType.Subject));\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n const selectedCurationTags = Flight.useBasicFetch<TagCollection>(\n TagRequests.selectedCurationTags(props.companyId)\n );\n\n function isClickViewCurated() {\n return !!selectedCurationTags.data?.data.filter(tag => tag.name === CurationTag.CLICKVIEW_CURATED).length;\n }\n\n function getAppLink(presentation: Presentation) {\n return {\n application: AppChannels.COMPANIES,\n action: Actions.Companies.EDIT_DASHBOARDS,\n args: [ props.companyId, presentation.id ]\n };\n }\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n company.hasCompleted &&\n presentations.hasCompleted &&\n selectedCurationTags.hasCompleted\n );\n\n return (\n <>\n {currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={Actions.Companies.COMPANY_DASHBOARDS}\n currentUser={currentUser.data}\n context='clickview'\n />\n }\n\n {hasLoaded ?\n <>\n {!isClickViewCurated() ? (\n <>\n <ObjectHeader object={{ name: company.data?.name }} />\n\n <p><Text namespace={namespace} phrase='notCurated' /></p>\n </>\n ) : (\n <div>\n <h5 className='mt-2'><Text namespace={namespace} phrase='selectPresentation' /></h5>\n <PresentationListNav presentations={presentations.data} getAppLink={getAppLink} />\n </div>\n )}\n </> :\n <div className='text-center py-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n }\n </>\n );\n}\n"],"mappings":"yqBAoBM,EAAY,+BAMlB,SAAgB,EAAsB,EAAmC,CACvE,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAgB,EAAqC,EAAgB,cAAc,EAAiB,OAAO,CAAC,EAC5G,EAAU,EAA8B,EAAgB,WAAW,EAAM,SAAS,CAAC,EACnF,EAAuB,EAC3B,EAAY,qBAAqB,EAAM,SAAS,CAClD,EAEA,SAAS,GAAqB,CAC5B,MAAO,CAAC,CAAC,EAAqB,MAAM,KAAK,OAAO,GAAO,EAAI,OAAS,EAAY,iBAAiB,CAAC,CAAC,MACrG,CAEA,SAAS,EAAW,EAA4B,CAC9C,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,EAAQ,UAAU,gBAC1B,KAAM,CAAE,EAAM,UAAW,EAAa,EAAG,CAC3C,CACF,CAEA,IAAM,EACJ,EAAY,cACZ,EAAQ,cACR,EAAc,cACd,EAAqB,aAGvB,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAY,OACX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAM,UACjB,aAAc,EAAQ,UAAU,mBAChC,YAAa,EAAY,KACzB,QAAQ,WACT,CAAA,EAGF,GACC,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SACI,EAAmB,GAOnB,EAAA,EAAA,KAAA,CAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,iBAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAO,oBAAsB,CAAA,CAAK,CAAA,GACnF,EAAA,EAAA,IAAA,CAAC,EAAD,CAAqB,cAAe,EAAc,KAAkB,YAAa,CAAA,CAC9E,CAAA,CAAA,GATL,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,CAAE,KAAM,EAAQ,MAAM,IAAK,CAAI,CAAA,GAErD,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,UAAG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAO,YAAc,CAAA,CAAI,CAAA,CACxD,CAAA,CAAA,CAOJ,CAAA,GACF,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,CAEP,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"ohTu1tHz.chunk.js","names":[],"sources":["../../../../../src/apps/companies/views/company-dashboards/CompanyDashboardsView.tsx"],"sourcesContent":["import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationTag } from 'libs/shared/enums/CurationTag';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Company, CuratorUser, Presentation, TagCollection } from 'libs/shared/interfaces';\n\nimport { ObjectHeader } from 'shared/components';\nimport { PresentationListNav } from 'shared/components/presentations/presentation-list';\nimport { Actions, AppChannels } from 'shared/constants';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { TagRequests } from 'shared/flight-requests/TagRequests';\n\nimport { EditCompanyNav } from 'apps/companies/components/edit-company-nav/EditCompanyNav';\nimport { CompanyRequests } from 'apps/companies/flight-requests';\n\nconst namespace = 'companies.companiesDashboard';\n\ninterface CompanyDashboardsViewProps {\n companyId: string;\n}\n\nexport function CompanyDashboardsView(props: CompanyDashboardsViewProps) {\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const presentations = Flight.useBasicFetch<Presentation[]>(SubjectRequests.presentations(PresentationType.Subject));\n const company = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.companyId));\n const selectedCurationTags = Flight.useBasicFetch<TagCollection>(\n TagRequests.selectedCurationTags(props.companyId)\n );\n\n function isClickViewCurated() {\n return !!selectedCurationTags.data?.data.filter(tag => tag.name === CurationTag.CLICKVIEW_CURATED).length;\n }\n\n function getAppLink(presentation: Presentation) {\n return {\n application: AppChannels.COMPANIES,\n action: Actions.Companies.EDIT_DASHBOARDS,\n args: [ props.companyId, presentation.id ]\n };\n }\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n company.hasCompleted &&\n presentations.hasCompleted &&\n selectedCurationTags.hasCompleted\n );\n\n return (\n <>\n {currentUser.data &&\n <EditCompanyNav\n companyId={props.companyId}\n activeAction={Actions.Companies.COMPANY_DASHBOARDS}\n currentUser={currentUser.data}\n context='clickview'\n />\n }\n\n {hasLoaded ?\n <>\n {!isClickViewCurated() ? (\n <>\n <ObjectHeader object={{ name: company.data?.name }} />\n\n <p><Text namespace={namespace} phrase='notCurated' /></p>\n </>\n ) : (\n <div>\n <h5 className='mt-2'><Text namespace={namespace} phrase='selectPresentation' /></h5>\n <PresentationListNav presentations={presentations.data} getAppLink={getAppLink} />\n </div>\n )}\n </> :\n <div className='text-center py-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n }\n </>\n );\n}\n"],"mappings":"yqBAoBM,EAAY,+BAMlB,SAAgB,EAAsB,EAAmC,CACvE,IAAM,EAAc,EAAkC,EAAa,YAAY,CAAC,EAC1E,EAAgB,EAAqC,EAAgB,cAAc,EAAiB,OAAO,CAAC,EAC5G,EAAU,EAA8B,EAAgB,WAAW,EAAM,SAAS,CAAC,EACnF,EAAuB,EAC3B,EAAY,qBAAqB,EAAM,SAAS,CAClD,EAEA,SAAS,GAAqB,CAC5B,MAAO,CAAC,CAAC,EAAqB,MAAM,KAAK,OAAO,GAAO,EAAI,OAAS,EAAY,iBAAiB,CAAC,CAAC,MACrG,CAEA,SAAS,EAAW,EAA4B,CAC9C,MAAO,CACL,YAAa,EAAY,UACzB,OAAQ,EAAQ,UAAU,gBAC1B,KAAM,CAAE,EAAM,UAAW,EAAa,EAAG,CAC3C,CACF,CAEA,IAAM,EACJ,EAAY,cACZ,EAAQ,cACR,EAAc,cACd,EAAqB,aAGvB,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAY,OACX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAW,EAAM,UACjB,aAAc,EAAQ,UAAU,mBAChC,YAAa,EAAY,KACzB,QAAQ,WACT,CAAA,EAGF,GACC,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SACI,EAAmB,GAOnB,EAAA,EAAA,KAAA,CAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,iBAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAO,oBAAsB,CAAA,CAAK,CAAA,GACnF,EAAA,EAAA,IAAA,CAAC,EAAD,CAAqB,cAAe,EAAc,KAAkB,YAAa,CAAA,CAC9E,CAAA,CAAA,GATL,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAQ,CAAE,KAAM,EAAQ,MAAM,IAAK,CAAI,CAAA,GAErD,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,UAAG,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,YAAW,OAAO,YAAc,CAAA,CAAI,CAAA,CACxD,CAAA,CAAA,CAOJ,CAAA,GACF,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CACjD,CAAA,CAEP,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{G as r}from"./C7Gmh7eY.chunk.js";import{t as i}from"./D-JsEiDq2.chunk.js";import{s as a,u as o}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as s}from"./BDwjs8qz.chunk.js";import{t as c}from"./Bwpvc7Th2.chunk.js";import{t as l}from"./D0JviwKV2.chunk.js";var u=n(e()),d=t();function f(e){let[t,n]=u.useState(!1),f=a(r.getMasterVideo(e.id)),p=c(),m=o();async function h(){n(!0),m(r.updateVideoStatus(e.id,s.Archived,e.stage)).then(()=>{p.success(`Successfully archived <strong>${f.data.name}</strong>.`),e.closePopup()}).catch(()=>{p.error(`Something went wrong while archiving <strong>${f.data.name}</strong>. Please try again.`),e.closePopup()})}return(0,d.jsx)(i,{title:`Archive video`,closePopup:e.closePopup,showLoadingSpinner:!f.data,children:!!f.data&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(`p`,{children:[`Are you sure you want to archive `,(0,d.jsx)(`strong`,{children:f.data.name}),`?`]}),(0,d.jsxs)(l,{children:[(0,d.jsx)(l.Cancel,{onClick:e.closePopup}),(0,d.jsx)(l.Submit,{showSpinner:t,onClick:h,variant:`danger`,text:`Archive video`})]})]})})}export{f as ArchiveVideoView};
2
- //# sourceMappingURL=BrT-onLe2.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{G as r}from"./DWHKdmdQ.chunk.js";import{t as i}from"./D-JsEiDq2.chunk.js";import{s as a,u as o}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as s}from"./BDwjs8qz.chunk.js";import{t as c}from"./Bwpvc7Th2.chunk.js";import{t as l}from"./D0JviwKV2.chunk.js";var u=n(e()),d=t();function f(e){let[t,n]=u.useState(!1),f=a(r.getMasterVideo(e.id)),p=c(),m=o();async function h(){n(!0),m(r.updateVideoStatus(e.id,s.Archived,e.stage)).then(()=>{p.success(`Successfully archived <strong>${f.data.name}</strong>.`),e.closePopup()}).catch(()=>{p.error(`Something went wrong while archiving <strong>${f.data.name}</strong>. Please try again.`),e.closePopup()})}return(0,d.jsx)(i,{title:`Archive video`,closePopup:e.closePopup,showLoadingSpinner:!f.data,children:!!f.data&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(`p`,{children:[`Are you sure you want to archive `,(0,d.jsx)(`strong`,{children:f.data.name}),`?`]}),(0,d.jsxs)(l,{children:[(0,d.jsx)(l.Cancel,{onClick:e.closePopup}),(0,d.jsx)(l.Submit,{showSpinner:t,onClick:h,variant:`danger`,text:`Archive video`})]})]})})}export{f as ArchiveVideoView};
2
+ //# sourceMappingURL=uCRnfBEw2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrT-onLe2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/archive-video/ArchiveVideoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\n\ninterface ArchiveVideoViewProps extends PopupViewProps {\n id: string;\n stage: AssemblyLineStage;\n}\n\nexport function ArchiveVideoView(props: ArchiveVideoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const video = Flight.useBasicFetch<Video>(AssemblyLineRequests.getMasterVideo(props.id));\n\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n async function onClickArchive(): Promise<void> {\n setShowSpinner(true);\n\n fetchAsync(AssemblyLineRequests.updateVideoStatus(props.id, CurationStatus.Archived, props.stage))\n .then(() => {\n alerts.success(`Successfully archived <strong>${video.data.name}</strong>.`);\n props.closePopup();\n }).catch(() => {\n alerts.error(`Something went wrong while archiving <strong>${video.data.name}</strong>. Please try again.`);\n props.closePopup();\n });\n }\n\n return (\n <Popup title='Archive video' closePopup={props.closePopup} showLoadingSpinner={!video.data}>\n {!!video.data && (\n <>\n <p>\n Are you sure you want to archive <strong>{video.data.name}</strong>?\n </p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n showSpinner={showSpinner}\n onClick={onClickArchive}\n variant='danger'\n text='Archive video'\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}\n"],"mappings":"gWAkBA,SAAgB,EAAiB,EAA2C,CAC1E,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,EAAK,EAEtD,EAAQ,EAA4B,EAAqB,eAAe,EAAM,EAAE,CAAC,EAEjF,EAAS,EAAU,EACnB,EAAa,EAAwB,EAE3C,eAAe,GAAgC,CAC7C,EAAe,EAAI,EAEnB,EAAW,EAAqB,kBAAkB,EAAM,GAAI,EAAe,SAAU,EAAM,KAAK,CAAC,CAAC,CAC/F,SAAW,CACV,EAAO,QAAQ,iCAAiC,EAAM,KAAK,KAAK,WAAW,EAC3E,EAAM,WAAW,CACnB,CAAC,CAAC,CAAC,UAAY,CACb,EAAO,MAAM,gDAAgD,EAAM,KAAK,KAAK,6BAA6B,EAC1G,EAAM,WAAW,CACnB,CAAC,CACL,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,MAAM,gBAAgB,WAAY,EAAM,WAAY,mBAAoB,CAAC,EAAM,cACnF,CAAC,CAAC,EAAM,OACP,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,qCACgC,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAM,KAAK,IAAa,CAAA,EAAC,GAClE,CAAA,CAAA,GAEH,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACe,cACb,QAAS,EACT,QAAQ,SACR,KAAK,eACN,CAAA,CACW,CAAA,CAAA,CACd,CAAA,CAAA,CAEC,CAAA,CAEX"}
1
+ {"version":3,"file":"uCRnfBEw2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/views/archive-video/ArchiveVideoView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\n\ninterface ArchiveVideoViewProps extends PopupViewProps {\n id: string;\n stage: AssemblyLineStage;\n}\n\nexport function ArchiveVideoView(props: ArchiveVideoViewProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const video = Flight.useBasicFetch<Video>(AssemblyLineRequests.getMasterVideo(props.id));\n\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n async function onClickArchive(): Promise<void> {\n setShowSpinner(true);\n\n fetchAsync(AssemblyLineRequests.updateVideoStatus(props.id, CurationStatus.Archived, props.stage))\n .then(() => {\n alerts.success(`Successfully archived <strong>${video.data.name}</strong>.`);\n props.closePopup();\n }).catch(() => {\n alerts.error(`Something went wrong while archiving <strong>${video.data.name}</strong>. Please try again.`);\n props.closePopup();\n });\n }\n\n return (\n <Popup title='Archive video' closePopup={props.closePopup} showLoadingSpinner={!video.data}>\n {!!video.data && (\n <>\n <p>\n Are you sure you want to archive <strong>{video.data.name}</strong>?\n </p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n showSpinner={showSpinner}\n onClick={onClickArchive}\n variant='danger'\n text='Archive video'\n />\n </PopupButtons>\n </>\n )}\n </Popup>\n );\n}\n"],"mappings":"gWAkBA,SAAgB,EAAiB,EAA2C,CAC1E,GAAM,CAAE,EAAa,GAAA,EAAyB,SAAS,EAAK,EAEtD,EAAQ,EAA4B,EAAqB,eAAe,EAAM,EAAE,CAAC,EAEjF,EAAS,EAAU,EACnB,EAAa,EAAwB,EAE3C,eAAe,GAAgC,CAC7C,EAAe,EAAI,EAEnB,EAAW,EAAqB,kBAAkB,EAAM,GAAI,EAAe,SAAU,EAAM,KAAK,CAAC,CAAC,CAC/F,SAAW,CACV,EAAO,QAAQ,iCAAiC,EAAM,KAAK,KAAK,WAAW,EAC3E,EAAM,WAAW,CACnB,CAAC,CAAC,CAAC,UAAY,CACb,EAAO,MAAM,gDAAgD,EAAM,KAAK,KAAK,6BAA6B,EAC1G,EAAM,WAAW,CACnB,CAAC,CACL,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAO,MAAM,gBAAgB,WAAY,EAAM,WAAY,mBAAoB,CAAC,EAAM,cACnF,CAAC,CAAC,EAAM,OACP,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CAAG,qCACgC,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAM,KAAK,IAAa,CAAA,EAAC,GAClE,CAAA,CAAA,GAEH,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CAAqB,QAAS,EAAM,UAAa,CAAA,GACjD,EAAA,EAAA,IAAA,CAAC,EAAa,OAAd,CACe,cACb,QAAS,EACT,QAAQ,SACR,KAAK,eACN,CAAA,CACW,CAAA,CAAA,CACd,CAAA,CAAA,CAEC,CAAA,CAEX"}
@@ -1,2 +1,2 @@
1
- import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as o,K as s,W as c,nt as l,tt as u}from"./C7Gmh7eY.chunk.js";import{i as d}from"./EkUBWhps2.chunk.js";import{t as f}from"./DmpWpl-3.chunk.js";import{t as p}from"./BMjA_FNA.chunk.js";import{s as m,u as h}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./DkLlaBp-.chunk.js";import{t as _}from"./CGACfSBR.chunk.js";import{t as v}from"./BNgL3wBw.chunk.js";import{t as y}from"./Duk0omCc2.chunk.js";import{t as b}from"./C2rZFvlx.chunk.js";import{t as x}from"./Dy4nscVE2.chunk.js";import{n as S}from"./DvP7S5Uq.chunk.js";import{i as C,n as w,t as T}from"./BCMXlwdC2.chunk.js";import{t as E}from"./DwJsrLcL2.chunk.js";import{t as D}from"./BQqvNp0J2.chunk.js";import{t as O}from"./CmNzPDxD2.chunk.js";import{t as k}from"./DxL0ZEcN2.chunk.js";var A=r(t()),j=n();function M(t){let[,n]=g(_.ASSEMBLY_LINE),r=A.useContext(l),o=y(t.classifications?.data,{persistNamespace:t.stage});function s(e){if(e===`bulk`){o.onToggleBulk();return}o.onToggleItem(e)}function u(){return t.classifications.data.map(e=>({...e,checked:o.isChecked(e.id)}))}function d(){n({ownerType:`topic`,ownerIdMap:o.getMap(),removedIds:[],resetSelection:o.deselectAll});let s={stage:t.stage,queryParams:t.queryParams,pipelineId:r};t.queryParams.presentationId&&(s.presentationId=t.queryParams.presentationId),e.trigger({application:a.ASSEMBLY_LINE,action:i.AssemblyLine.WIZARD,params:s})}let m={pipelineId:r,onToggleCheckbox:s,onClickMoveToNextStage:t.onClickMoveToNextStage,isBulkChecked:o.bulkChecked,isBulkIndeterminate:o.hasSomeSelections(),objectType:`topic`,presentationId:t.queryParams.presentationId,updatePriority:t.updatePriority,stage:t.stage,presentations:t.presentations,theme:t.theme},h=c.getColumns(m,t.stage,`topic`,null);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`px-5`,children:(0,j.jsx)(E,{selectedCount:o.getSelectedCount(),onClickDeselectAll:o.reset,onClickSelectBulk:d,getTypeText:e=>e===1?`topic`:`topics`})}),!t.classifications&&(0,j.jsx)(C,{}),t.classifications?.data&&!t.classifications.data.length&&(0,j.jsx)(T,{queryParams:t.queryParams,pipelineId:r}),t.classifications?.data&&!!t.classifications.data.length&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(p,{columns:h,data:u(),defaultPinnedColumns:t.columnVisibility,columnPinning:{left:c.getPinnedTopicColumnIds()},pinnedColumnsKey:`assembly_line_columns_settings`,columnResizerKey:`assembly_line_column_size_settings:topic`,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:90,containerHeight:`66vh`},theme:O}),(0,j.jsxs)(`div`,{className:`d-flex flex-row justify-content-end`,children:[(0,j.jsx)(v,{cursors:t.classifications.pagination,appLink:f.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`}),(0,j.jsx)(D,{queryParams:t.queryParams})]})]})]})}function N(e){let[t,n]=g(_.CONTENT_PIPELINE_PREFERRED_THEME,``,{storage:d.LocalStorage}),r=m(e?b.presentationThemes(e):null);return{effectiveTheme:r.data?.length?t:``,presentationThemes:r.data,onThemeChange:n}}function P(e){let t=h(),{effectiveTheme:n,presentationThemes:r,onThemeChange:i}=N(e.queryParams.presentationId),{presentations:l}=S(e.queryParams,`topic`,e.subStage,e.pipelineId),d=x(e.queryParams,e.subStage),f=k(e.queryParams,e.subStage,`topic`),p=m(o.getClassifications({stage:e.subStage,presentationId:e.queryParams.presentationId,filters:s.serializeFilterRequestBody(d),searchQuery:e.queryParams.query,cursor:e.queryParams.cursor,sort:e.queryParams.sort,limit:+e.queryParams.limit,pipelineId:e.pipelineId})),g=c.getNextStage(e.subStage);async function _(n){let r=c.mapStageToAction(g);if(await t(o.updateTopicStage(n,e.subStage,g)),r)return{application:e.pipelineId===`clickview`?a.ASSEMBLY_LINE:a.CV_LIVE_PIPELINE,action:r,params:e.queryParams}}function v(n,r){return t(o.updateTopicPriority(n,r,e.subStage,e.queryParams.presentationId,e.queryParams.sort))}return(0,j.jsx)(u,{subStage:e.subStage,pipelineId:e.pipelineId,children:(0,j.jsx)(w,{stage:e.stage,subStage:e.subStage,objectType:`topic`,pipelineId:e.pipelineId,queryParams:e.queryParams,columnVisibility:f,filters:d,counts:{showing:p.data?.data?.length??0,total:p.data?.count??0},theme:n,onThemeChange:i,presentationThemes:r,children:(0,j.jsx)(M,{presentations:l,stage:e.subStage,onClickMoveToNextStage:_,classifications:p.data,columnVisibility:f,queryParams:e.queryParams,updatePriority:v,theme:n})})})}export{P as AssemblyLineTopicStageView};
2
- //# sourceMappingURL=3XkTogZ22.chunk.js.map
1
+ import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{G as o,K as s,W as c,nt as l,tt as u}from"./DWHKdmdQ.chunk.js";import{i as d}from"./EkUBWhps2.chunk.js";import{t as f}from"./DmpWpl-3.chunk.js";import{t as p}from"./BMjA_FNA.chunk.js";import{s as m,u as h}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./DkLlaBp-.chunk.js";import{t as _}from"./CGACfSBR.chunk.js";import{t as v}from"./BNgL3wBw.chunk.js";import{t as y}from"./Duk0omCc2.chunk.js";import{t as b}from"./C2rZFvlx.chunk.js";import{t as x}from"./T3BageSw2.chunk.js";import{n as S}from"./3eMwLZ5D.chunk.js";import{i as C,n as w,t as T}from"./B8RZKQTs2.chunk.js";import{t as E}from"./DwJsrLcL2.chunk.js";import{t as D}from"./BQqvNp0J2.chunk.js";import{t as O}from"./CmNzPDxD2.chunk.js";import{t as k}from"./BiPUuGEE2.chunk.js";var A=r(t()),j=n();function M(t){let[,n]=g(_.ASSEMBLY_LINE),r=A.useContext(l),o=y(t.classifications?.data,{persistNamespace:t.stage});function s(e){if(e===`bulk`){o.onToggleBulk();return}o.onToggleItem(e)}function u(){return t.classifications.data.map(e=>({...e,checked:o.isChecked(e.id)}))}function d(){n({ownerType:`topic`,ownerIdMap:o.getMap(),removedIds:[],resetSelection:o.deselectAll});let s={stage:t.stage,queryParams:t.queryParams,pipelineId:r};t.queryParams.presentationId&&(s.presentationId=t.queryParams.presentationId),e.trigger({application:a.ASSEMBLY_LINE,action:i.AssemblyLine.WIZARD,params:s})}let m={pipelineId:r,onToggleCheckbox:s,onClickMoveToNextStage:t.onClickMoveToNextStage,isBulkChecked:o.bulkChecked,isBulkIndeterminate:o.hasSomeSelections(),objectType:`topic`,presentationId:t.queryParams.presentationId,updatePriority:t.updatePriority,stage:t.stage,presentations:t.presentations,theme:t.theme},h=c.getColumns(m,t.stage,`topic`,null);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`px-5`,children:(0,j.jsx)(E,{selectedCount:o.getSelectedCount(),onClickDeselectAll:o.reset,onClickSelectBulk:d,getTypeText:e=>e===1?`topic`:`topics`})}),!t.classifications&&(0,j.jsx)(C,{}),t.classifications?.data&&!t.classifications.data.length&&(0,j.jsx)(T,{queryParams:t.queryParams,pipelineId:r}),t.classifications?.data&&!!t.classifications.data.length&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(p,{columns:h,data:u(),defaultPinnedColumns:t.columnVisibility,columnPinning:{left:c.getPinnedTopicColumnIds()},pinnedColumnsKey:`assembly_line_columns_settings`,columnResizerKey:`assembly_line_column_size_settings:topic`,scrollable:!0,resizable:!0,virtualiser:{on:!0,rowHeight:90,containerHeight:`66vh`},theme:O}),(0,j.jsxs)(`div`,{className:`d-flex flex-row justify-content-end`,children:[(0,j.jsx)(v,{cursors:t.classifications.pagination,appLink:f.getCurrentRoute().appLink,buttonVariant:`outline-dark`,className:`text-end pe-1 mt-2`}),(0,j.jsx)(D,{queryParams:t.queryParams})]})]})]})}function N(e){let[t,n]=g(_.CONTENT_PIPELINE_PREFERRED_THEME,``,{storage:d.LocalStorage}),r=m(e?b.presentationThemes(e):null);return{effectiveTheme:r.data?.length?t:``,presentationThemes:r.data,onThemeChange:n}}function P(e){let t=h(),{effectiveTheme:n,presentationThemes:r,onThemeChange:i}=N(e.queryParams.presentationId),{presentations:l}=S(e.queryParams,`topic`,e.subStage,e.pipelineId),d=x(e.queryParams,e.subStage),f=k(e.queryParams,e.subStage,`topic`),p=m(o.getClassifications({stage:e.subStage,presentationId:e.queryParams.presentationId,filters:s.serializeFilterRequestBody(d),searchQuery:e.queryParams.query,cursor:e.queryParams.cursor,sort:e.queryParams.sort,limit:+e.queryParams.limit,pipelineId:e.pipelineId})),g=c.getNextStage(e.subStage);async function _(n){let r=c.mapStageToAction(g);if(await t(o.updateTopicStage(n,e.subStage,g)),r)return{application:e.pipelineId===`clickview`?a.ASSEMBLY_LINE:a.CV_LIVE_PIPELINE,action:r,params:e.queryParams}}function v(n,r){return t(o.updateTopicPriority(n,r,e.subStage,e.queryParams.presentationId,e.queryParams.sort))}return(0,j.jsx)(u,{subStage:e.subStage,pipelineId:e.pipelineId,children:(0,j.jsx)(w,{stage:e.stage,subStage:e.subStage,objectType:`topic`,pipelineId:e.pipelineId,queryParams:e.queryParams,columnVisibility:f,filters:d,counts:{showing:p.data?.data?.length??0,total:p.data?.count??0},theme:n,onThemeChange:i,presentationThemes:r,children:(0,j.jsx)(M,{presentations:l,stage:e.subStage,onClickMoveToNextStage:_,classifications:p.data,columnVisibility:f,queryParams:e.queryParams,updatePriority:v,theme:n})})})}export{P as AssemblyLineTopicStageView};
2
+ //# sourceMappingURL=udVWVmrH2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"3XkTogZ22.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/table/AssemblyLineTopicTable.tsx","../../../../../src/apps/assembly-line/hooks/usePresentationTheme.ts","../../../../../src/apps/assembly-line/views/tables/AssemblyLineTopicStageView.tsx"],"sourcesContent":["import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkSelectionSummary } from 'libs/shared/components/bulk-selection-summary/BulkSelectionSummary';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\n\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTableSizeSelector } from 'apps/assembly-line/components/table-size-selector/AssemblyLineTableSizeSelector';\nimport { ASSEMBLY_LINE_CLASSIFICATION_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineClassificationTableTheme';\nimport { ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS, ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS } from 'apps/assembly-line/constants/AssemblyLineTableColumnsSettingString';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineBulkActionsQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionsQueryParams';\nimport { AssemblyLineBulkActionViewModel } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionViewModel';\nimport { AssemblyLineTopicTableData } from 'apps/assembly-line/interfaces/AssemblyLineCellProps';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineTopicCollection } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { EntityColumnArgs } from '../columns/AssemblyLineAllTableColumns';\n\ninterface AssemblyLineTopicTableProps {\n classifications: AssemblyLineTopicCollection;\n columnVisibility: VisibilityState;\n queryParams: AssemblyLineQueryParams;\n onClickMoveToNextStage: (id: string) => Promise<Core.AppLink>;\n stage: AssemblyLineStage;\n updatePriority: (topicId: string, priority: number) => Promise<void>;\n presentations: Presentation[];\n theme?: string;\n}\n\nexport function AssemblyLineTopicTable(props: AssemblyLineTopicTableProps): JSX.Element {\n const [ , setBulkActionViewModel ] = useViewModel<AssemblyLineBulkActionViewModel>(\n ViewModelKeys.ASSEMBLY_LINE\n );\n\n const pipelineId = React.useContext(ContentPipelineIdContext);\n const CheckboxHelper = useBulkCheckboxManager(props.classifications?.data, {\n persistNamespace: props.stage\n });\n\n function onToggleCheckbox(id: string): void {\n if (id === 'bulk') {\n CheckboxHelper.onToggleBulk();\n return;\n }\n\n CheckboxHelper.onToggleItem(id);\n }\n\n function getData(): AssemblyLineTopicTableData[] {\n return props.classifications.data.map(classification => {\n return {\n ...classification,\n checked: CheckboxHelper.isChecked(classification.id)\n };\n });\n }\n\n function onClickSelectBulkAction(): void {\n setBulkActionViewModel({\n ownerType: 'topic',\n ownerIdMap: CheckboxHelper.getMap(),\n removedIds: [],\n resetSelection: CheckboxHelper.deselectAll\n });\n\n const params: AssemblyLineBulkActionsQueryParams = {\n stage: props.stage,\n queryParams: props.queryParams,\n pipelineId\n };\n\n if (props.queryParams.presentationId)\n params.presentationId = props.queryParams.presentationId;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.WIZARD,\n params\n });\n }\n\n const options: EntityColumnArgs = {\n pipelineId,\n onToggleCheckbox,\n onClickMoveToNextStage: props.onClickMoveToNextStage,\n isBulkChecked: CheckboxHelper.bulkChecked,\n isBulkIndeterminate: CheckboxHelper.hasSomeSelections(),\n objectType: 'topic' as AssemblyLineObjectType,\n presentationId: props.queryParams.presentationId,\n updatePriority: props.updatePriority,\n stage: props.stage,\n presentations: props.presentations,\n theme: props.theme\n };\n\n const columns = AssemblyLineHelper.getColumns(options, props.stage, 'topic', null);\n\n return (\n <>\n <div className='px-5'>\n <BulkSelectionSummary\n selectedCount={CheckboxHelper.getSelectedCount()}\n onClickDeselectAll={CheckboxHelper.reset}\n onClickSelectBulk={onClickSelectBulkAction}\n getTypeText={count => count === 1 ? 'topic' : 'topics'}\n />\n </div>\n\n {!props.classifications && <AssemblyLineSpinner />}\n\n {props.classifications?.data && !props.classifications.data.length && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={pipelineId} />\n )}\n\n {props.classifications?.data && !!props.classifications.data.length && (\n <>\n <TableV2<any>\n columns={columns}\n data={getData()}\n defaultPinnedColumns={props.columnVisibility}\n columnPinning={{\n left: AssemblyLineHelper.getPinnedTopicColumnIds()\n }}\n pinnedColumnsKey={ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS}\n columnResizerKey={`${ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS}:topic`}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 90,\n containerHeight: '66vh'\n }}\n theme={ASSEMBLY_LINE_CLASSIFICATION_TABLE_THEME}\n />\n\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={props.classifications.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n <AssemblyLineTableSizeSelector queryParams={props.queryParams} />\n </div>\n </>\n )}\n </>\n );\n}\n","import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { PresentationTheme } from 'libs/shared/interfaces';\n\nimport { DEFAULT_THEME_VALUE } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\nimport { ThemeRequests } from 'shared/flight-requests/ThemeRequests';\n\ninterface UsePresentationThemeResult {\n effectiveTheme: string;\n presentationThemes: PresentationTheme[] | undefined;\n onThemeChange: (newTheme: string) => void;\n}\n\nexport function usePresentationTheme(presentationId: string | undefined): UsePresentationThemeResult {\n const [ theme, setTheme ] = useViewModel(\n ViewModelKeys.CONTENT_PIPELINE_PREFERRED_THEME,\n DEFAULT_THEME_VALUE,\n { storage: StorageType.LocalStorage }\n );\n\n const presentationThemes = Flight.useBasicFetch<PresentationTheme[]>(\n presentationId ? ThemeRequests.presentationThemes(presentationId) : null\n );\n\n const effectiveTheme = presentationThemes.data?.length ? theme : DEFAULT_THEME_VALUE;\n\n return {\n effectiveTheme,\n presentationThemes: presentationThemes.data,\n onThemeChange: setTheme\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppChannels } from 'shared/constants';\n\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { AssemblyLineTopicTable } from 'apps/assembly-line/components/table/AssemblyLineTopicTable';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { usePresentationTheme } from 'apps/assembly-line/hooks/usePresentationTheme';\nimport { AssemblyLineTopicCollection } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { useAssemblyLineColumns } from '../../hooks/useAssemblyLineColumns';\n\nexport function AssemblyLineTopicStageView(props: AssemblyLineViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const { effectiveTheme, presentationThemes, onThemeChange } = usePresentationTheme(props.queryParams.presentationId);\n const { presentations } = usePresentationFilter(\n props.queryParams,\n 'topic',\n props.subStage,\n props.pipelineId\n );\n\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const columnVisibility = useAssemblyLineColumns(props.queryParams, props.subStage, 'topic');\n\n const classifications = Flight.useBasicFetch<AssemblyLineTopicCollection>(\n AssemblyLineRequests.getClassifications({\n stage: props.subStage,\n presentationId: props.queryParams.presentationId,\n filters: AssemblyLineFilterHelper.serializeFilterRequestBody(filters),\n searchQuery: props.queryParams.query,\n cursor: props.queryParams.cursor,\n sort: props.queryParams.sort,\n limit: +props.queryParams.limit,\n pipelineId: props.pipelineId\n })\n );\n\n const nextStage = AssemblyLineHelper.getNextStage(props.subStage);\n\n async function onClickMoveToNextStage(id: string): Promise<Core.AppLink> {\n const action = AssemblyLineHelper.mapStageToAction(nextStage);\n\n await fetchAsync(AssemblyLineRequests.updateTopicStage(id, props.subStage, nextStage));\n\n if (!action)\n return;\n\n return {\n application: props.pipelineId === 'clickview' ? AppChannels.ASSEMBLY_LINE : AppChannels.CV_LIVE_PIPELINE,\n action,\n params: props.queryParams\n };\n }\n\n function updatePriority(ids: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateTopicPriority(\n ids,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='topic'\n pipelineId={props.pipelineId}\n queryParams={props.queryParams}\n columnVisibility={columnVisibility}\n filters={filters}\n counts={{\n showing: classifications.data?.data?.length ?? 0,\n total: classifications.data?.count ?? 0\n }}\n theme={effectiveTheme}\n onThemeChange={onThemeChange}\n presentationThemes={presentationThemes}\n >\n <AssemblyLineTopicTable\n presentations={presentations}\n stage={props.subStage}\n onClickMoveToNextStage={onClickMoveToNextStage}\n classifications={classifications.data}\n columnVisibility={columnVisibility}\n queryParams={props.queryParams}\n updatePriority={updatePriority}\n theme={effectiveTheme}\n />\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"udVWVmrH2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/table/AssemblyLineTopicTable.tsx","../../../../../src/apps/assembly-line/hooks/usePresentationTheme.ts","../../../../../src/apps/assembly-line/views/tables/AssemblyLineTopicStageView.tsx"],"sourcesContent":["import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkSelectionSummary } from 'libs/shared/components/bulk-selection-summary/BulkSelectionSummary';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { TableV2 } from 'libs/shared/components/table-v2/TableV2';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\n\nimport { AssemblyLineEmptyState } from 'apps/assembly-line/components/empty-state/AssemblyLineEmptyState';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTableSizeSelector } from 'apps/assembly-line/components/table-size-selector/AssemblyLineTableSizeSelector';\nimport { ASSEMBLY_LINE_CLASSIFICATION_TABLE_THEME } from 'apps/assembly-line/constants/AssemblyLineClassificationTableTheme';\nimport { ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS, ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS } from 'apps/assembly-line/constants/AssemblyLineTableColumnsSettingString';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineBulkActionsQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionsQueryParams';\nimport { AssemblyLineBulkActionViewModel } from 'apps/assembly-line/interfaces/AssemblyLineBulkActionViewModel';\nimport { AssemblyLineTopicTableData } from 'apps/assembly-line/interfaces/AssemblyLineCellProps';\nimport { AssemblyLineObjectType } from 'apps/assembly-line/interfaces/AssemblyLineObjectType';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineTopicCollection } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { EntityColumnArgs } from '../columns/AssemblyLineAllTableColumns';\n\ninterface AssemblyLineTopicTableProps {\n classifications: AssemblyLineTopicCollection;\n columnVisibility: VisibilityState;\n queryParams: AssemblyLineQueryParams;\n onClickMoveToNextStage: (id: string) => Promise<Core.AppLink>;\n stage: AssemblyLineStage;\n updatePriority: (topicId: string, priority: number) => Promise<void>;\n presentations: Presentation[];\n theme?: string;\n}\n\nexport function AssemblyLineTopicTable(props: AssemblyLineTopicTableProps): JSX.Element {\n const [ , setBulkActionViewModel ] = useViewModel<AssemblyLineBulkActionViewModel>(\n ViewModelKeys.ASSEMBLY_LINE\n );\n\n const pipelineId = React.useContext(ContentPipelineIdContext);\n const CheckboxHelper = useBulkCheckboxManager(props.classifications?.data, {\n persistNamespace: props.stage\n });\n\n function onToggleCheckbox(id: string): void {\n if (id === 'bulk') {\n CheckboxHelper.onToggleBulk();\n return;\n }\n\n CheckboxHelper.onToggleItem(id);\n }\n\n function getData(): AssemblyLineTopicTableData[] {\n return props.classifications.data.map(classification => {\n return {\n ...classification,\n checked: CheckboxHelper.isChecked(classification.id)\n };\n });\n }\n\n function onClickSelectBulkAction(): void {\n setBulkActionViewModel({\n ownerType: 'topic',\n ownerIdMap: CheckboxHelper.getMap(),\n removedIds: [],\n resetSelection: CheckboxHelper.deselectAll\n });\n\n const params: AssemblyLineBulkActionsQueryParams = {\n stage: props.stage,\n queryParams: props.queryParams,\n pipelineId\n };\n\n if (props.queryParams.presentationId)\n params.presentationId = props.queryParams.presentationId;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.WIZARD,\n params\n });\n }\n\n const options: EntityColumnArgs = {\n pipelineId,\n onToggleCheckbox,\n onClickMoveToNextStage: props.onClickMoveToNextStage,\n isBulkChecked: CheckboxHelper.bulkChecked,\n isBulkIndeterminate: CheckboxHelper.hasSomeSelections(),\n objectType: 'topic' as AssemblyLineObjectType,\n presentationId: props.queryParams.presentationId,\n updatePriority: props.updatePriority,\n stage: props.stage,\n presentations: props.presentations,\n theme: props.theme\n };\n\n const columns = AssemblyLineHelper.getColumns(options, props.stage, 'topic', null);\n\n return (\n <>\n <div className='px-5'>\n <BulkSelectionSummary\n selectedCount={CheckboxHelper.getSelectedCount()}\n onClickDeselectAll={CheckboxHelper.reset}\n onClickSelectBulk={onClickSelectBulkAction}\n getTypeText={count => count === 1 ? 'topic' : 'topics'}\n />\n </div>\n\n {!props.classifications && <AssemblyLineSpinner />}\n\n {props.classifications?.data && !props.classifications.data.length && (\n <AssemblyLineEmptyState queryParams={props.queryParams} pipelineId={pipelineId} />\n )}\n\n {props.classifications?.data && !!props.classifications.data.length && (\n <>\n <TableV2<any>\n columns={columns}\n data={getData()}\n defaultPinnedColumns={props.columnVisibility}\n columnPinning={{\n left: AssemblyLineHelper.getPinnedTopicColumnIds()\n }}\n pinnedColumnsKey={ASSEMBLY_LINE_PINNED_COLUMN_SETTINGS}\n columnResizerKey={`${ASSEMBLY_LINE_COLUMN_SIZE_SETTINGS}:topic`}\n scrollable\n resizable\n virtualiser={{\n on: true,\n rowHeight: 90,\n containerHeight: '66vh'\n }}\n theme={ASSEMBLY_LINE_CLASSIFICATION_TABLE_THEME}\n />\n\n <div className='d-flex flex-row justify-content-end'>\n <Pagination\n cursors={props.classifications.pagination}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n className='text-end pe-1 mt-2'\n />\n <AssemblyLineTableSizeSelector queryParams={props.queryParams} />\n </div>\n </>\n )}\n </>\n );\n}\n","import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { PresentationTheme } from 'libs/shared/interfaces';\n\nimport { DEFAULT_THEME_VALUE } from 'shared/constants';\nimport { ViewModelKeys } from 'shared/constants/CuratorViewModels';\nimport { ThemeRequests } from 'shared/flight-requests/ThemeRequests';\n\ninterface UsePresentationThemeResult {\n effectiveTheme: string;\n presentationThemes: PresentationTheme[] | undefined;\n onThemeChange: (newTheme: string) => void;\n}\n\nexport function usePresentationTheme(presentationId: string | undefined): UsePresentationThemeResult {\n const [ theme, setTheme ] = useViewModel(\n ViewModelKeys.CONTENT_PIPELINE_PREFERRED_THEME,\n DEFAULT_THEME_VALUE,\n { storage: StorageType.LocalStorage }\n );\n\n const presentationThemes = Flight.useBasicFetch<PresentationTheme[]>(\n presentationId ? ThemeRequests.presentationThemes(presentationId) : null\n );\n\n const effectiveTheme = presentationThemes.data?.length ? theme : DEFAULT_THEME_VALUE;\n\n return {\n effectiveTheme,\n presentationThemes: presentationThemes.data,\n onThemeChange: setTheme\n };\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppChannels } from 'shared/constants';\n\nimport { AssemblyLineLayoutView } from 'apps/assembly-line/components/layout/AssemblyLineLayout';\nimport { AssemblyLineTopicTable } from 'apps/assembly-line/components/table/AssemblyLineTopicTable';\nimport { AssemblyLineStageContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useAssemblyLineFilters } from 'apps/assembly-line/hooks/useAssemblyLineFilters';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\nimport { usePresentationTheme } from 'apps/assembly-line/hooks/usePresentationTheme';\nimport { AssemblyLineTopicCollection } from 'apps/assembly-line/interfaces/AssemblyLineTopic';\nimport { AssemblyLineViewProps } from 'apps/assembly-line/interfaces/AssemblyLineViewProps';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport { useAssemblyLineColumns } from '../../hooks/useAssemblyLineColumns';\n\nexport function AssemblyLineTopicStageView(props: AssemblyLineViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const { effectiveTheme, presentationThemes, onThemeChange } = usePresentationTheme(props.queryParams.presentationId);\n const { presentations } = usePresentationFilter(\n props.queryParams,\n 'topic',\n props.subStage,\n props.pipelineId\n );\n\n const filters = useAssemblyLineFilters(props.queryParams, props.subStage);\n const columnVisibility = useAssemblyLineColumns(props.queryParams, props.subStage, 'topic');\n\n const classifications = Flight.useBasicFetch<AssemblyLineTopicCollection>(\n AssemblyLineRequests.getClassifications({\n stage: props.subStage,\n presentationId: props.queryParams.presentationId,\n filters: AssemblyLineFilterHelper.serializeFilterRequestBody(filters),\n searchQuery: props.queryParams.query,\n cursor: props.queryParams.cursor,\n sort: props.queryParams.sort,\n limit: +props.queryParams.limit,\n pipelineId: props.pipelineId\n })\n );\n\n const nextStage = AssemblyLineHelper.getNextStage(props.subStage);\n\n async function onClickMoveToNextStage(id: string): Promise<Core.AppLink> {\n const action = AssemblyLineHelper.mapStageToAction(nextStage);\n\n await fetchAsync(AssemblyLineRequests.updateTopicStage(id, props.subStage, nextStage));\n\n if (!action)\n return;\n\n return {\n application: props.pipelineId === 'clickview' ? AppChannels.ASSEMBLY_LINE : AppChannels.CV_LIVE_PIPELINE,\n action,\n params: props.queryParams\n };\n }\n\n function updatePriority(ids: string, priority: number | null): Promise<void> {\n return fetchAsync(AssemblyLineRequests.updateTopicPriority(\n ids,\n priority,\n props.subStage,\n props.queryParams.presentationId,\n props.queryParams.sort\n ));\n }\n\n return (\n <AssemblyLineStageContext subStage={props.subStage} pipelineId={props.pipelineId}>\n <AssemblyLineLayoutView\n stage={props.stage}\n subStage={props.subStage}\n objectType='topic'\n pipelineId={props.pipelineId}\n queryParams={props.queryParams}\n columnVisibility={columnVisibility}\n filters={filters}\n counts={{\n showing: classifications.data?.data?.length ?? 0,\n total: classifications.data?.count ?? 0\n }}\n theme={effectiveTheme}\n onThemeChange={onThemeChange}\n presentationThemes={presentationThemes}\n >\n <AssemblyLineTopicTable\n presentations={presentations}\n stage={props.subStage}\n onClickMoveToNextStage={onClickMoveToNextStage}\n classifications={classifications.data}\n columnVisibility={columnVisibility}\n queryParams={props.queryParams}\n updatePriority={updatePriority}\n theme={effectiveTheme}\n />\n </AssemblyLineLayoutView>\n </AssemblyLineStageContext>\n );\n}\n"],"mappings":"47BA4CA,SAAgB,EAAuB,EAAiD,CACtF,GAAM,EAAI,GAA2B,EACnC,EAAc,aAChB,EAEM,EAAA,EAAmB,WAAW,CAAwB,EACtD,EAAiB,EAAuB,EAAM,iBAAiB,KAAM,CACzE,iBAAkB,EAAM,KAC1B,CAAC,EAED,SAAS,EAAiB,EAAkB,CAC1C,GAAI,IAAO,OAAQ,CACjB,EAAe,aAAa,EAC5B,MACF,CAEA,EAAe,aAAa,CAAE,CAChC,CAEA,SAAS,GAAwC,CAC/C,OAAO,EAAM,gBAAgB,KAAK,IAAI,IAC7B,CACL,GAAG,EACH,QAAS,EAAe,UAAU,EAAe,EAAE,CACrD,EACD,CACH,CAEA,SAAS,GAAgC,CACvC,EAAuB,CACrB,UAAW,QACX,WAAY,EAAe,OAAO,EAClC,WAAY,CAAC,EACb,eAAgB,EAAe,WACjC,CAAC,EAED,IAAM,EAA6C,CACjD,MAAO,EAAM,MACb,YAAa,EAAM,YACnB,YACF,EAEI,EAAM,YAAY,iBACpB,EAAO,eAAiB,EAAM,YAAY,gBAE5C,EAAmB,QAAQ,CACzB,YAAa,EAAY,cACzB,OAAQ,EAAQ,aAAa,OAC7B,QACF,CAAC,CACH,CAEA,IAAM,EAA4B,CAChC,aACA,mBACA,uBAAwB,EAAM,uBAC9B,cAAe,EAAe,YAC9B,oBAAqB,EAAe,kBAAkB,EACtD,WAAY,QACZ,eAAgB,EAAM,YAAY,eAClC,eAAgB,EAAM,eACtB,MAAO,EAAM,MACb,cAAe,EAAM,cACrB,MAAO,EAAM,KACf,EAEM,EAAU,EAAmB,WAAW,EAAS,EAAM,MAAO,QAAS,IAAI,EAEjF,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAe,EAAe,iBAAiB,EAC/C,mBAAoB,EAAe,MACnC,kBAAmB,EACnB,YAAa,GAAS,IAAU,EAAI,QAAU,QAC/C,CAAA,CACE,CAAA,EAEJ,CAAC,EAAM,kBAAmB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAsB,CAAA,EAEhD,EAAM,iBAAiB,MAAQ,CAAC,EAAM,gBAAgB,KAAK,SAC1D,EAAA,EAAA,IAAA,CAAC,EAAD,CAAwB,YAAa,EAAM,YAAyB,YAAa,CAAA,EAGlF,EAAM,iBAAiB,MAAQ,CAAC,CAAC,EAAM,gBAAgB,KAAK,SAC3D,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACW,UACT,KAAM,EAAQ,EACd,qBAAsB,EAAM,iBAC5B,cAAe,CACb,KAAM,EAAmB,wBAAwB,CACnD,EACA,iBAAA,iCACA,iBAAkB,2CAClB,WAAA,GACA,UAAA,GACA,YAAa,CACX,GAAI,GACJ,UAAW,GACX,gBAAiB,MACnB,EACA,MAAO,CACR,CAAA,GAED,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,+CAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,EAAM,gBAAgB,WAC/B,QAAS,EAAe,gBAAgB,CAAC,CAAC,QAC1C,cAAc,eACd,UAAU,oBACX,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CAA+B,YAAa,EAAM,WAAc,CAAA,CAC7D,GACL,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEN,CCnJA,SAAgB,EAAqB,EAAgE,CACnG,GAAM,CAAE,EAAO,GAAa,EAC1B,EAAc,iCAAA,GAEd,CAAE,QAAS,EAAY,YAAa,CACtC,EAEM,EAAqB,EACzB,EAAiB,EAAc,mBAAmB,CAAc,EAAI,IACtE,EAIA,MAAO,CACL,eAHqB,EAAmB,MAAM,OAAS,EAAA,GAIvD,mBAAoB,EAAmB,KACvC,cAAe,CACjB,CACF,CCbA,SAAgB,EAA2B,EAA2C,CACpF,IAAM,EAAa,EAAwB,EAErC,CAAE,iBAAgB,qBAAoB,iBAAkB,EAAqB,EAAM,YAAY,cAAc,EAC7G,CAAE,iBAAkB,EACxB,EAAM,YACN,QACA,EAAM,SACN,EAAM,UACR,EAEM,EAAU,EAAuB,EAAM,YAAa,EAAM,QAAQ,EAClE,EAAmB,EAAuB,EAAM,YAAa,EAAM,SAAU,OAAO,EAEpF,EAAkB,EACtB,EAAqB,mBAAmB,CACtC,MAAO,EAAM,SACb,eAAgB,EAAM,YAAY,eAClC,QAAS,EAAyB,2BAA2B,CAAO,EACpE,YAAa,EAAM,YAAY,MAC/B,OAAQ,EAAM,YAAY,OAC1B,KAAM,EAAM,YAAY,KACxB,MAAO,CAAC,EAAM,YAAY,MAC1B,WAAY,EAAM,UACpB,CAAC,CACH,EAEM,EAAY,EAAmB,aAAa,EAAM,QAAQ,EAEhE,eAAe,EAAuB,EAAmC,CACvE,IAAM,EAAS,EAAmB,iBAAiB,CAAS,EAE5D,SAAM,EAAW,EAAqB,iBAAiB,EAAI,EAAM,SAAU,CAAS,CAAC,EAEhF,EAGL,MAAO,CACL,YAAa,EAAM,aAAe,YAAc,EAAY,cAAgB,EAAY,iBACxF,SACA,OAAQ,EAAM,WAChB,CACF,CAEA,SAAS,EAAe,EAAa,EAAwC,CAC3E,OAAO,EAAW,EAAqB,oBACrC,EACA,EACA,EAAM,SACN,EAAM,YAAY,eAClB,EAAM,YAAY,IACpB,CAAC,CACH,CAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAA0B,SAAU,EAAM,SAAU,WAAY,EAAM,qBACpE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,EAAM,MACb,SAAU,EAAM,SAChB,WAAW,QACX,WAAY,EAAM,WAClB,YAAa,EAAM,YACD,mBACT,UACT,OAAQ,CACN,QAAS,EAAgB,MAAM,MAAM,QAAU,EAC/C,MAAO,EAAgB,MAAM,OAAS,CACxC,EACA,MAAO,EACQ,gBACK,+BAEpB,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,MAAO,EAAM,SACW,yBACxB,gBAAiB,EAAgB,KACf,mBAClB,YAAa,EAAM,YACH,iBAChB,MAAO,CACR,CAAA,CACqB,CAAA,CACA,CAAA,CAE9B"}
@@ -1,2 +1,2 @@
1
- import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./C1kx8Ra5.chunk.js";import{G as a}from"./C7Gmh7eY.chunk.js";import{t as o}from"./D-JsEiDq2.chunk.js";import{t as s}from"./DmpWpl-3.chunk.js";import{s as c,u as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{t as d}from"./D0JviwKV2.chunk.js";var f=r(t()),p=n();function m(t){let n=l(),r=u(),[m,h]=f.useState(!1),g=c(a.getQuickFilters(t.stage)).data?.find(e=>e.id===t.id),{appLink:_}=s.getCurrentRoute();function v(){h(!0),n(a.deleteQuickFilter(t.id,t.stage)).then(()=>{r.success(`Successfully deleted quick filter: ${g.name}.`),e.trigger({..._,params:{...i.pick(_.params,[`query`,`sort`])}})}).catch(()=>r.error(`Failed to delete quick filter: ${g.name}. Please try again.`)).finally(t.closePopup)}return(0,p.jsx)(o,{title:`Delete view`,closePopup:t.closePopup,showLoadingSpinner:!g,backdrop:`static`,children:!!g&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`p`,{children:[`Are you sure you want to delete `,(0,p.jsx)(`strong`,{children:g.name}),` from your Quick Filters?`]}),(0,p.jsxs)(d,{children:[(0,p.jsx)(d.Cancel,{onClick:t.closePopup}),(0,p.jsx)(d.Submit,{onClick:v,variant:`danger`,text:`Delete view`,showSpinner:m})]})]})})}export{m as DeleteQuickFilterView};
2
- //# sourceMappingURL=DW-yUqjB2.chunk.js.map
1
+ import{C as e,a as t,i as n,ln as r}from"./rp704-Pm.chunk.js";import{t as i}from"./C1kx8Ra5.chunk.js";import{G as a}from"./DWHKdmdQ.chunk.js";import{t as o}from"./D-JsEiDq2.chunk.js";import{t as s}from"./DmpWpl-3.chunk.js";import{s as c,u as l}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{t as d}from"./D0JviwKV2.chunk.js";var f=r(t()),p=n();function m(t){let n=l(),r=u(),[m,h]=f.useState(!1),g=c(a.getQuickFilters(t.stage)).data?.find(e=>e.id===t.id),{appLink:_}=s.getCurrentRoute();function v(){h(!0),n(a.deleteQuickFilter(t.id,t.stage)).then(()=>{r.success(`Successfully deleted quick filter: ${g.name}.`),e.trigger({..._,params:{...i.pick(_.params,[`query`,`sort`])}})}).catch(()=>r.error(`Failed to delete quick filter: ${g.name}. Please try again.`)).finally(t.closePopup)}return(0,p.jsx)(o,{title:`Delete view`,closePopup:t.closePopup,showLoadingSpinner:!g,backdrop:`static`,children:!!g&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`p`,{children:[`Are you sure you want to delete `,(0,p.jsx)(`strong`,{children:g.name}),` from your Quick Filters?`]}),(0,p.jsxs)(d,{children:[(0,p.jsx)(d.Cancel,{onClick:t.closePopup}),(0,p.jsx)(d.Submit,{onClick:v,variant:`danger`,text:`Delete view`,showSpinner:m})]})]})})}export{m as DeleteQuickFilterView};
2
+ //# sourceMappingURL=v0VARBBE2.chunk.js.map