@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":"BCMXlwdC2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/alert/AssemblyLineAlert.tsx","../../../../../src/apps/assembly-line/components/filters/filter-actions.module.scss","../../../../../src/apps/assembly-line/components/filters/AssemblyLineFilterActions.tsx","../../../../../src/apps/assembly-line/components/layout/ThemeDropdown.tsx","../../../../../../../libs/shared/src/images/svg/objects/StarSvg.tsx","../../../../../src/apps/assembly-line/components/quick-filters/quick-filters.module.scss","../../../../../src/apps/assembly-line/components/quick-filters/QuickFilters.tsx","../../../../../src/apps/assembly-line/components/spinner/AssemblyLineSpinner.tsx","../../../../../src/apps/assembly-line/components/tabs/assembly-line-tabs.module.scss","../../../../../src/apps/assembly-line/components/tabs/AssemblyLineTabs.tsx","../../../../../src/apps/assembly-line/hooks/useFetchAssemblyLineStageCounts.ts","../../../../../src/apps/assembly-line/components/layout/assembly-line-layout.module.scss","../../../../../src/apps/assembly-line/components/layout/AssemblyLineLayout.tsx","../../../../../src/apps/assembly-line/components/empty-state/AssemblyLineEmptyState.tsx"],"sourcesContent":["import React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\n\ninterface AssemblyLineAlertProps {\n stage: AssemblyLineStage;\n readonly: boolean;\n}\n\nexport function AssemblyLineAlert(props: AssemblyLineAlertProps): JSX.Element {\n if (props.readonly) {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>You are viewing this stage in readonly mode</div>\n <p className='mb-0'>\n If you are waiting for something here to move forward, please reach out to the team responsible.\n </p>\n </Alert>\n );\n }\n\n if (props.stage === 'unused_video') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Add videos to a curated topic</div>\n <ul className='mb-0'>\n <li>\n Videos below must be added to a curated topic before they can progress to Resourcing.\n </li>\n <li>\n Videos need to be high quality, credible, and relevant.\n </li>\n <li>\n Videos that no longer meet our content standards should be deleted.\n </li>\n <li>\n Videos will automatically be moved to Resourcing after they have been added\n to a curated topic, and that curated topic has been moved to Resourcing.\n </li>\n </ul>\n </Alert>\n );\n }\n\n if (props.stage === 'upcoming_livestreams') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Upcoming Livestreams</div>\n <ul className='mb-0'>\n <li>\n This view displays all upcoming livestreams.\n </li>\n <li>\n Published Livestreams will display in the <span className='text-decoration-underline'>calendar.</span>\n </li>\n <li>\n If a Content Partner changes any dates or cancels an event, Livestreams can be edited or deleted.\n </li>\n <li>\n Once a Livestream’s Start Time has passed, it will move to <span className='text-decoration-underline'>Past Livestreams.</span>\n </li>\n </ul>\n </Alert>\n );\n }\n\n if (props.stage === 'past_livestreams') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Past Livestreams</div>\n <ul className='mb-0'>\n <li>\n This view displays all livestreams that have “aired”.\n </li>\n <li>\n Livestreams in this list require a Zoom recording to be uploaded to them.\n </li>\n <li>\n Once a recording has been uploaded, the Livestream will automatically\n be moved to the next stage where we will create a Thumbnail and Teaching Resources for it.\n </li>\n </ul>\n </Alert>\n );\n }\n\n return <></>;\n}\n",":local {\n .dropdown {\n height: 2.4rem;\n width: 2.4rem;\n }\n}","import React from 'react';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nimport styles from './filter-actions.module.scss';\n\ninterface AssemblyLineFilterActionsProps {\n stage: AssemblyLineStage;\n queryParams: AssemblyLineQueryParams;\n quickFilters: QuickFilter[];\n}\n\nexport function AssemblyLineFilterActions(props: AssemblyLineFilterActionsProps): JSX.Element {\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const currentQuickFilterId = props.queryParams.quickFilter;\n\n const quickFilter = props.quickFilters.find(filter => filter.id === currentQuickFilterId);\n\n const { objectType } = AssemblyLineStageConfig[props.stage];\n const filterParams = AssemblyLineFilterHelper.getFilterQueryParams(props.queryParams, objectType);\n\n const hasActiveFilters = !!Object.keys(filterParams).length;\n const hasColumnFilters = !!props.queryParams.columns?.length;\n\n const canSave = (hasActiveFilters || hasColumnFilters) && !currentQuickFilterId;\n const canManageQuickFilter = !!quickFilter;\n\n function getActions(): ActionOptions[] {\n if ([ 'draft_livestreams', 'past_livestreams', 'upcoming_livestreams', 'completed_livestreams' ].includes(props.stage))\n return [];\n\n const actions: ActionOptions[] = [{\n label: 'Global search',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.GLOBAL_SEARCH,\n params: { pipelineId }\n }\n }];\n\n if (canSave) {\n actions.push({\n label: 'Save filter',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.SAVE_QUICK_FILTER,\n params: {\n ...props.queryParams,\n stage: props.stage\n }\n },\n disabled: !canSave,\n className: !canSave ? 'disabled' : ''\n });\n }\n\n if (currentQuickFilterId) {\n const disabled = !currentQuickFilterId || !canManageQuickFilter;\n actions.push({\n label: 'Rename filter',\n button: false,\n className: `btn btn-link ${disabled ? 'disabled' : ''}`,\n disabled,\n tooltip: canManageQuickFilter ? '' : 'This quick filter cannot be renamed.',\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.EDIT_QUICK_FILTER,\n args: [ currentQuickFilterId, props.stage ]\n }\n });\n }\n\n actions.push({\n label: 'Generate a report',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.GENERATE_REPORT,\n params: {\n ...props.queryParams,\n stage: props.stage\n }\n }\n });\n\n actions.push({\n label: 'Delete filter',\n className: `btn btn-link text-danger ${(!currentQuickFilterId || !canManageQuickFilter) ? 'disabled' : ''}`,\n button: false,\n disabled: !currentQuickFilterId || !canManageQuickFilter,\n tooltip: canManageQuickFilter ? '' : 'This quick filter cannot be deleted.',\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.DELETE_QUICK_FILTER,\n args: [ currentQuickFilterId, props.stage ]\n }\n });\n \n return actions;\n }\n\n return (\n <ActionsComponent\n actions={getActions()}\n actionsDropdownClassName={`btn btn-outline-dark ${styles.dropdown}`}\n />\n );\n}\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { PresentationTheme } from 'libs/shared/interfaces';\n\nimport { DEFAULT_THEME_NAME, DEFAULT_THEME_VALUE } from 'shared/constants';\n\ntype ThemeDropdownProps = {\n presentationThemes: PresentationTheme[],\n theme?: string,\n onThemeChange?: (theme: string) => void\n};\n\nexport function ThemeDropdown({ presentationThemes, theme, onThemeChange }: ThemeDropdownProps): JSX.Element {\n return (\n <Dropdown className='me-2'>\n <Dropdown.Toggle variant='outline-dark' className='fw-semibold'>\n Topic theme:\n {presentationThemes.find(t => t.systemName === theme)?.name ?? DEFAULT_THEME_NAME}\n </Dropdown.Toggle>\n <Dropdown.Menu align='end'>\n <Dropdown.Item onClick={() => onThemeChange?.(DEFAULT_THEME_VALUE)}>\n {DEFAULT_THEME_NAME}\n </Dropdown.Item>\n {presentationThemes.map(t => (\n <Dropdown.Item key={t.systemName} onClick={() => onThemeChange?.(t.systemName)}>\n {t.name}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n","import React from 'react';\n\nexport function StarSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M12.337 4.078a.77.77 0 0 1 .353.353l2.043 4.18 4.607.651a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18a.768.768 0 0 1-1.116-.81l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.77.77 0 0 1 1.027-.352'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n",":local {\n .quickFilters {\n height: 0;\n transition: padding .2s;\n overflow: hidden;\n\n &.open {\n height: 100%;\n padding: map-get($spacers, 2) 0 map-get($spacers, 3);\n }\n }\n\n .quickFilter {\n line-height: 1rem;\n font-weight: 600;\n\n &:not(:last-child) {\n margin-right: map-get($spacers, 2);\n }\n\n &:hover {\n text-decoration: none !important;\n }\n }\n\n .icon {\n width: 1rem;\n height: 1rem;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { StarSvg } from 'libs/shared/images/svg/objects/StarSvg';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nimport styles from './quick-filters.module.scss';\n\ninterface QuickFilterItemProps {\n quickFilter: QuickFilter;\n currentFilterId: string;\n hardcoded?: boolean;\n}\n\nfunction QuickFilterItem(props: QuickFilterItemProps): JSX.Element {\n const { appLink } = ContextService.getCurrentRoute();\n\n function getAppLink(quickFilter: QuickFilter): Core.AppLink {\n const isApplied = quickFilter.id === props.currentFilterId;\n const params = ObjectHelper.pick(appLink.params, [ 'query', 'presentationId', 'sort' ]);\n\n if (isApplied) {\n return {\n ...appLink,\n params\n };\n }\n\n return {\n ...appLink,\n params: {\n ...params,\n quickFilter: quickFilter.id\n }\n };\n }\n\n let className = `d-inline-flex align-items-center mb-2 text-nowrap rounded-pill py-1 px-2 text-decoration-none ${styles.quickFilter}`;\n\n if (props.quickFilter.id === props.currentFilterId)\n className += ' bg-light-blue info-link';\n else\n className += ' bg-light';\n\n return (\n <AppLink\n key={props.quickFilter.id}\n appLink={getAppLink(props.quickFilter)}\n className={className}\n >\n {props.hardcoded && (\n <SvgContainer\n className={`me-1 d-flex text-yellow ${styles.icon}`}\n svg={StarSvg}\n />\n )}\n {props.quickFilter.name}\n </AppLink>\n );\n}\n\ninterface QuickFiltersProps {\n quickFilters: QuickFilter[];\n isOpen: boolean;\n stage: AssemblyLineStage;\n currentUser: CurrentUser;\n currentFilterId?: string;\n}\n\nexport function QuickFilters(props: QuickFiltersProps): JSX.Element {\n if (!props.quickFilters)\n return <></>;\n\n return (\n <ul className={`list-unstyled px-4 mb-0 d-flex align-items-center flex-wrap ${styles.quickFilters} ${props.isOpen ? styles.open : ''}`}>\n {AssemblyLineFilterHelper.getHardcodedQuickFilters(props.currentUser, props.stage).map(quickFilter => {\n return (\n <QuickFilterItem\n key={quickFilter.id}\n quickFilter={quickFilter}\n currentFilterId={props.currentFilterId}\n hardcoded\n />\n );\n })}\n\n {props.quickFilters.map(quickFilter => {\n return (\n <QuickFilterItem\n key={quickFilter.id}\n quickFilter={quickFilter}\n currentFilterId={props.currentFilterId}\n />\n );\n })}\n </ul>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nexport function AssemblyLineSpinner(): JSX.Element {\n return (\n <div className='text-center p-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n}\n",":local {\n $icon-size: 2.8125rem;\n\n .topNav {\n background-color: $gray-900;\n height: 3.75rem;\n }\n\n .subNav {\n height: 4.5rem;\n }\n\n .activeSubTab {\n background-color: rgba($indigo, 0.1);\n }\n\n .icon {\n width: $icon-size;\n height: $icon-size;\n }\n\n .tab:last-child {\n .chevron {\n display: none;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronRightSvg } from 'libs/shared/images/svg/arrows/ChevronRightSvg';\n\nimport { CurationStudioHeader } from 'shared/components/header/CurationStudioHeader';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\n\nimport styles from './assembly-line-tabs.module.scss';\n\nexport interface AssemblyLineTab {\n id: AssemblyLineStage;\n name: string;\n appLink: Core.AppLink;\n count: number;\n active?: boolean;\n subTabs?: Omit<AssemblyLineTab, 'subTabs'>[];\n}\n\ninterface AssemblyLineTabsProps {\n tabs: AssemblyLineTab[];\n view: AssemblyLineView;\n}\n\nexport function AssemblyLineTabs(props: AssemblyLineTabsProps): JSX.Element {\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const { subTabs } = props.tabs.find(tab => tab.active);\n\n return (\n <>\n <CurationStudioHeader closeAppLink={pipelineId === 'clickview' ? {\n application: AppChannels.DISCOVER,\n action: Actions.Discover.DISCOVER\n } : {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.DISCOVER\n }}>\n {!props.view && (\n <ol className='list-unstyled d-flex mb-0 me-auto align-items-center'>\n {props.tabs.map((tab, index) => {\n return (\n <li key={index} className={`pe-3 d-flex align-items-center ${styles.tab}`}>\n <AppLink appLink={tab.appLink} className='d-flex align-items-center pe-3 text-decoration-none'>\n <div className='h6 mb-0 text-white pe-2'>{tab.name}</div>\n <div className={`rounded-pill px-2 ${tab.active ? 'bg-white text-dark' : 'border border-white text-white'}`}>\n {tab.count.toLocaleString()}\n </div>\n </AppLink>\n\n <div className={`${styles.chevron} text-white`}>\n <SvgContainer\n svg={ChevronRightSvg}\n />\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </CurationStudioHeader>\n\n {!!subTabs?.length && !props.view && (\n <ol className={`list-unstyled mb-0 d-flex align-items-center bg-white px-4 border-bottom ${styles.subNav}`}>\n {subTabs.map((tab, index) => {\n return (\n <li key={index} className={`d-flex align-items-center pe-3 fw-semibold ${styles.tab}`}>\n <AppLink\n appLink={tab.appLink}\n className={`d-flex align-items-center rounded-pill ps-3 pe-2 py-1 me-3 text-dark text-decoration-none ${tab.active ? styles.activeSubTab : ''}`}\n >\n <div className='pe-2'>{tab.name}</div>\n <span className={`rounded-pill px-2 ${tab.active ? 'text-white bg-dark' : 'border border-dark'}`}> {tab.count.toLocaleString()}</span>\n </AppLink>\n\n <div className={`${styles.chevron} text-indigo`}>\n <SvgContainer\n svg={ChevronRightSvg}\n />\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { LivestreamCollection, Presentation } from 'libs/shared/interfaces';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStageCount } from 'apps/assembly-line/interfaces/responses/AssemblyLineStageCount';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\n\nimport { ContentPipelineIdContext } from '../contexts/AssemblyLineStageContext';\nimport { AssemblyLineFilterRequest } from '../interfaces/requests/AssemblyLineFilterRequest';\n\nexport interface FilteredStageCountsRequest {\n video: {\n filters: AssemblyLineFilterRequest[]\n };\n topic: {\n filters: AssemblyLineFilterRequest[]\n };\n dashboard: {\n filters: AssemblyLineFilterRequest[]\n };\n}\n\nconst today = new Date();\ntoday.setHours(23, 59, 59, 59);\nexport const TODAY_TIMESTAMP = TimezoneHelper.convertToUTCString(\n `${DateHelper.format(today, 'YYYY-MM-DD')}T${DateHelper.format(today, 'HH:mm:ss')}`\n);\n\nexport function useFetchAssemblyLineStageCounts(): Flight.Response<AssemblyLineStageCount> {\n const cvLivePresentation = Flight.useBasicFetch<Presentation>(PresentationRequests.cvLivePresentation());\n\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n function getRequest(): Flight.Request {\n if (!cvLivePresentation.hasCompleted)\n return null;\n\n if (pipelineId === 'cv-live') {\n return AssemblyLineRequests.getFilteredStageCounts({\n video: {\n filters: [{\n name: 'source',\n operator: 'in',\n values: ['streamable']\n }]\n },\n topic: {\n filters: [{\n name: 'presentation',\n operator: 'in',\n values: [cvLivePresentation.data.id]\n }]\n },\n dashboard: {\n filters: [{\n name: 'presentation',\n operator: 'in',\n values: [cvLivePresentation.data.id]\n }]\n }\n });\n }\n\n return AssemblyLineRequests.getFilteredStageCounts({\n video: {\n filters: [{\n name: 'source',\n operator: 'not_in',\n values: ['new_zealand']\n }]\n },\n topic: {\n filters: [{\n name: 'presentation',\n operator: 'not_in',\n values: [cvLivePresentation.data.id]\n }]\n },\n dashboard: {\n filters: []\n }\n });\n }\n \n const stageCounts = Flight.useBasicFetch<AssemblyLineStageCount>(getRequest());\n\n const query = 'audiences,classifications';\n\n const draftLivestreams = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({ status: CurationStatusString.Draft, query })\n );\n\n const livestreamRecordings = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({\n withRecordings: false,\n status: CurationStatusString.Published,\n query,\n to: TODAY_TIMESTAMP\n })\n );\n\n const upcomingRecordings = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({\n withRecordings: false, status: CurationStatusString.Published, query, from: TODAY_TIMESTAMP })\n );\n\n const pastLivestreams = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({ withRecordings: true, query })\n );\n\n if (pipelineId === 'clickview')\n return stageCounts;\n\n const finalCounts: AssemblyLineStageCount = {\n ...(stageCounts.data || {} as AssemblyLineStageCount),\n livestreams: (\n (draftLivestreams.data?.count ?? 0) +\n (livestreamRecordings.data?.count ?? 0) +\n (pastLivestreams.data?.count ?? 0)\n ),\n draft_livestreams: draftLivestreams.data?.count ?? 0,\n upcoming_livestreams: upcomingRecordings.data?.count ?? 0,\n past_livestreams: livestreamRecordings.data?.count ?? 0,\n completed_livestreams: pastLivestreams.data?.count ?? 0\n };\n\n return {\n ...stageCounts,\n isFetching: (\n stageCounts.isFetching ||\n draftLivestreams.isFetching ||\n livestreamRecordings.isFetching ||\n pastLivestreams.isFetching ||\n upcomingRecordings.isFetching\n ),\n hasCompleted: (\n stageCounts.hasCompleted &&\n draftLivestreams.hasCompleted &&\n livestreamRecordings.hasCompleted &&\n pastLivestreams.hasCompleted &&\n upcomingRecordings.hasCompleted\n ),\n data: finalCounts\n };\n}\n",":local {\n $button-height: 2.5rem;\n\n .count {\n font-size: 95%;\n }\n\n .searchBarContainer {\n width: 18rem;\n\n .searchBar {\n height: $button-height;\n }\n }\n\n .newTopic {\n height: $button-height;\n }\n\n .presentationFilterContainer {\n width: 12rem;\n }\n}","import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ScopedSearchBar } from 'libs/shared/apps/search/components/scoped-search-bar/ScopedSearchBar';\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CurrentUser, PresentationTheme } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { AssemblyLineAlert } from 'apps/assembly-line/components/alert/AssemblyLineAlert';\nimport { ColumnFilters } from 'apps/assembly-line/components/column-filters/ColumnFilters';\nimport { ConditionalFilterState } from 'apps/assembly-line/components/conditional-filters/ConditionalFilters';\nimport { ConditionalFiltersButton } from 'apps/assembly-line/components/conditional-filters/ConditionalFiltersButton';\nimport { AssemblyLineFilterActions } from 'apps/assembly-line/components/filters/AssemblyLineFilterActions';\nimport { ThemeDropdown } from 'apps/assembly-line/components/layout/ThemeDropdown';\nimport { PresentationFilter } from 'apps/assembly-line/components/presentation-filter/PresentationFilter';\nimport { QuickFilters } from 'apps/assembly-line/components/quick-filters/QuickFilters';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTabs } from 'apps/assembly-line/components/tabs/AssemblyLineTabs';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { AssemblyLinePermissionContext, ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useFetchAssemblyLineStageCounts } from 'apps/assembly-line/hooks/useFetchAssemblyLineStageCounts';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\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 { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport styles from './assembly-line-layout.module.scss';\n\ntype AssemblyLineLayoutViewProps = React.PropsWithChildren<{\n stage: AssemblyLineStage,\n subStage: AssemblyLineStage,\n objectType: AssemblyLineObjectType,\n\n queryParams: AssemblyLineQueryParams,\n filters: ConditionalFilterState[],\n columnVisibility?: VisibilityState,\n counts: {\n showing: number,\n total: number\n },\n pipelineId: ContentPipelineId,\n view?: AssemblyLineView,\n theme?: string,\n onThemeChange?: (theme: string) => void,\n presentationThemes?: PresentationTheme[]\n}>;\n\nAssemblyLineLayoutView.defaultProps = {\n presentationType: PresentationType.Subject\n};\n\nexport function AssemblyLineLayoutView(props: AssemblyLineLayoutViewProps): JSX.Element {\n const [ showQuickFilters, setShowQuickFilters ] = React.useState(!!props.queryParams.quickFilter);\n\n const { readonly } = React.useContext(AssemblyLinePermissionContext);\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const viewConfig = AssemblyLineViewConfig[props.view];\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const quickFilters = Flight.useBasicFetch<QuickFilter[]>(AssemblyLineRequests.getQuickFilters(props.subStage));\n const stageCounts = useFetchAssemblyLineStageCounts();\n\n const {\n selectedPresentation,\n setPresentation,\n presentations,\n isLoading: isLoadingPresentation\n } = usePresentationFilter(props.queryParams, props.objectType, props.subStage, pipelineId, props.view);\n\n React.useEffect(() => {\n if (showQuickFilters || !props.queryParams.quickFilter)\n return;\n\n setShowQuickFilters(true);\n }, [props.queryParams.quickFilter]);\n\n const filterOptions = AssemblyLineFilterHelper\n .getAllFilters(props.objectType, props.subStage, selectedPresentation?.id, props.pipelineId)\n .sort((a, b) => a.label.localeCompare(b.label));\n\n const currentFilters = props.filters.filter(f => AssemblyLineFilterHelper.isFilterValid(f, filterOptions));\n\n function getHideTopicsAppLink(): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const params = ObjectHelper.pick(currentAppLink.params, [ 'query', 'presentationId', 'sort', 'limit' ]);\n\n if (props.queryParams?.applyHideTopicsFilter) {\n return {\n ...currentAppLink,\n params\n };\n }\n\n return {\n ...currentAppLink,\n params: {\n ...params,\n applyHideTopicsFilter: true\n }\n };\n }\n\n function getHideAudiencesAppLink(): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const params = ObjectHelper.pick(currentAppLink.params, [ 'query', 'presentationId', 'sort', 'limit' ]);\n\n if (props.queryParams?.applyHideAudiencesFilter) {\n return {\n ...currentAppLink,\n params\n };\n }\n\n return {\n ...currentAppLink,\n params: {\n ...params,\n applyHideAudiencesFilter: true\n }\n };\n }\n\n if (!quickFilters.hasCompleted || isLoadingPresentation || !stageCounts.hasCompleted)\n return <AssemblyLineSpinner />;\n\n const mainFilters = [Filters.SortBy(AssemblyLineHelper.getSortOptions(props.subStage, props.pipelineId), 'Sort by:')];\n const isVideoStage = props.objectType === 'video';\n\n const tabs = AssemblyLineHelper.getTabs(\n props.stage,\n props.subStage,\n props.objectType,\n stageCounts.data,\n props.queryParams,\n pipelineId\n );\n\n if (!quickFilters.data || isLoadingPresentation)\n return <AssemblyLineSpinner />;\n\n const visibleColumnIds = Object.entries(props.columnVisibility || {})\n .filter(([ , visible ]) => {\n return visible;\n })\n .map(([colId]) => colId);\n\n return (\n <>\n <div className='position-relative'>\n <div className='pb-3'>\n <AssemblyLineTabs\n tabs={tabs}\n view={props.view}\n />\n </div>\n\n <AssemblyLineAlert stage={props.subStage} readonly={readonly} />\n\n <div className='d-flex justify-content-between align-items-center px-4 pb-2'>\n <div className='d-flex align-items-center'>\n {![ 'draft_livestreams', 'past_livestreams', 'upcoming_livestreams', 'completed_livestreams' ].includes(props.subStage) && (\n <button\n className={`fw-semibold btn me-1 ${props.queryParams.quickFilter ? 'btn-dark' : 'btn-outline-dark'} `}\n onClick={() => setShowQuickFilters(showing => !showing)}\n >\n Quick filters\n </button>\n )}\n\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={mainFilters}\n appLink={ContextService.getCurrentRoute().appLink}\n hideHeading\n hideDivider\n hideResetButton\n constantIndices={[]}\n noContainerPaddingBottom\n />\n\n {!!props.view && (\n <>\n <AppLink\n appLink={getHideTopicsAppLink()}\n className={`btn ${props.queryParams.applyHideTopicsFilter ? 'btn-dark' : 'btn-outline-dark'} fw-semibold mx-1`}\n >\n Hide videos with topics\n </AppLink>\n <AppLink\n appLink={getHideAudiencesAppLink()}\n className={`btn ${props.queryParams.applyHideAudiencesFilter ? 'btn-dark' : 'btn-outline-dark'} fw-semibold mx-1`}\n >\n Hide videos with audiences\n </AppLink>\n </>\n )}\n </div>\n\n <div className='d-flex align-items-center'>\n {!!props.presentationThemes?.length && (\n <ThemeDropdown\n presentationThemes={props.presentationThemes}\n theme={props.theme}\n onThemeChange={props.onThemeChange}\n />\n )}\n\n <div className={`me-1 ${styles.searchBarContainer}`}>\n <ScopedSearchBar\n id={`assembly-line-${props.subStage}`}\n searchAppLink={ContextService.getCurrentRoute().appLink}\n searchIndices={[ 'video', 'classification' ]}\n placeholder='Search'\n className={styles.searchBar}\n />\n </div>\n\n {!isVideoStage && presentations.length > 1 && !props.view && (\n <div className={`mx-1 ${styles.presentationFilterContainer}`}>\n <PresentationFilter\n stage={props.subStage}\n presentations={presentations}\n setPresentation={setPresentation}\n selectedPresentation={selectedPresentation}\n objectType={props.objectType}\n disabled={!!viewConfig?.presentationId}\n />\n </div>\n )}\n\n <div className='me-1 d-flex align-items-center'>\n {!!filterOptions.length && (\n <ConditionalFiltersButton\n initialState={currentFilters}\n options={filterOptions}\n columns={visibleColumnIds}\n queryParams={props.queryParams}\n showInDropdown\n />\n )}\n\n {!!props.columnVisibility && !props.view && (\n <ColumnFilters\n initialState={visibleColumnIds}\n defaultOptions={AssemblyLineHelper.getDefaultColumnFilterOptions(props.subStage)}\n options={pipelineId === 'clickview' ?\n AssemblyLineHelper.getAllColumnFilterOptions(props.objectType) :\n AssemblyLineHelper.getDefaultColumnFilterOptions(props.subStage)}\n queryParams={props.queryParams}\n stage={props.subStage}\n />\n )}\n </div>\n\n {props.subStage === 'topic' && (\n <AppLink\n className={`btn btn-outline-dark d-flex align-items-center fw-semibold me-2 ${styles.newTopic} ${(!selectedPresentation || readonly) ? 'disabled' : ''}`}\n appLink={pipelineId === 'clickview' ? {\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.NEW_CLASSIFICATION,\n args: [selectedPresentation?.id]\n } : {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.NEW_CLASSIFICATION,\n args: [selectedPresentation?.id]\n }}\n openInNewTab\n disabled={!selectedPresentation || readonly}\n >\n <SvgContainer className='svg-container ms-n1' svg={PlusSvg} />\n <span>\n Create new topic\n </span>\n </AppLink>\n )}\n\n {props.subStage === 'draft_livestreams' && (\n <AppLink\n className={`btn btn-outline-dark d-flex align-items-center fw-semibold me-2 ${styles.newTopic} ${(!selectedPresentation || readonly) ? 'disabled' : ''}`}\n appLink={{\n application: AppChannels.CV_LIVE_PIPELINE,\n action: Actions.CvLivePipeline.ADD_LIVESTREAM\n }}\n disabled={readonly}\n >\n <SvgContainer className='svg-container ms-n1' svg={PlusSvg} />\n <span>\n Create new livestream\n </span>\n </AppLink>\n )}\n\n {!props.view && (\n <AssemblyLineFilterActions\n stage={props.subStage}\n queryParams={props.queryParams}\n quickFilters={quickFilters.data}\n />\n )}\n </div>\n </div>\n\n <QuickFilters\n quickFilters={quickFilters.data}\n currentFilterId={props.queryParams.quickFilter}\n isOpen={showQuickFilters}\n stage={props.subStage}\n currentUser={currentUser.data}\n />\n\n <p className={`ps-4 fw-semibold ${styles.count}`}>\n {`Showing ${props.counts.showing.toLocaleString()} of ${props.counts.total.toLocaleString()} ${AssemblyLineHelper.getPluralObjectName(props.objectType)}`}\n </p>\n\n {props.children}\n </div>\n <div id={AssemblyLineHelper.getPortalId()} />\n </>\n );\n}\n","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\ninterface AssemblyLineEmptyStateProps {\n queryParams: AssemblyLineQueryParams;\n pipelineId: ContentPipelineId;\n}\n\nexport function AssemblyLineEmptyState(props: AssemblyLineEmptyStateProps): JSX.Element {\n const filterParams = AssemblyLineFilterHelper.getFilterQueryParams(props.queryParams, 'video');\n\n const isSearchingOrFiltering = Object.keys(filterParams).length || props.queryParams.query;\n\n function getImageUrl() {\n if (isSearchingOrFiltering)\n return ImageUrls.EmptyStates.AssemblyLine.SEARCH_RESULTS;\n\n return props.pipelineId === 'cv-live' ?\n ImageUrls.EmptyStates.AssemblyLine.STAGE_STREAMABLE :\n ImageUrls.EmptyStates.AssemblyLine.STAGE;\n }\n\n return (\n <EmptyState>\n <EmptyState.Image src={getImageUrl()} />\n\n <EmptyState.Heading>\n {isSearchingOrFiltering ?\n 'No search results found' :\n 'Wow! You\\'ve cleaned the queue up!'\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n {isSearchingOrFiltering ?\n 'Try using a different search term or configure the filter options again.' :\n 'All you have to do now is sit back and relax until more roll in.'\n }\n </EmptyState.Info>\n </EmptyState>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"B8RZKQTs2.chunk.js","names":[],"sources":["../../../../../src/apps/assembly-line/components/alert/AssemblyLineAlert.tsx","../../../../../src/apps/assembly-line/components/filters/filter-actions.module.scss","../../../../../src/apps/assembly-line/components/filters/AssemblyLineFilterActions.tsx","../../../../../src/apps/assembly-line/components/layout/ThemeDropdown.tsx","../../../../../../../libs/shared/src/images/svg/objects/StarSvg.tsx","../../../../../src/apps/assembly-line/components/quick-filters/quick-filters.module.scss","../../../../../src/apps/assembly-line/components/quick-filters/QuickFilters.tsx","../../../../../src/apps/assembly-line/components/spinner/AssemblyLineSpinner.tsx","../../../../../src/apps/assembly-line/components/tabs/assembly-line-tabs.module.scss","../../../../../src/apps/assembly-line/components/tabs/AssemblyLineTabs.tsx","../../../../../src/apps/assembly-line/hooks/useFetchAssemblyLineStageCounts.ts","../../../../../src/apps/assembly-line/components/layout/assembly-line-layout.module.scss","../../../../../src/apps/assembly-line/components/layout/AssemblyLineLayout.tsx","../../../../../src/apps/assembly-line/components/empty-state/AssemblyLineEmptyState.tsx"],"sourcesContent":["import React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\n\ninterface AssemblyLineAlertProps {\n stage: AssemblyLineStage;\n readonly: boolean;\n}\n\nexport function AssemblyLineAlert(props: AssemblyLineAlertProps): JSX.Element {\n if (props.readonly) {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>You are viewing this stage in readonly mode</div>\n <p className='mb-0'>\n If you are waiting for something here to move forward, please reach out to the team responsible.\n </p>\n </Alert>\n );\n }\n\n if (props.stage === 'unused_video') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Add videos to a curated topic</div>\n <ul className='mb-0'>\n <li>\n Videos below must be added to a curated topic before they can progress to Resourcing.\n </li>\n <li>\n Videos need to be high quality, credible, and relevant.\n </li>\n <li>\n Videos that no longer meet our content standards should be deleted.\n </li>\n <li>\n Videos will automatically be moved to Resourcing after they have been added\n to a curated topic, and that curated topic has been moved to Resourcing.\n </li>\n </ul>\n </Alert>\n );\n }\n\n if (props.stage === 'upcoming_livestreams') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Upcoming Livestreams</div>\n <ul className='mb-0'>\n <li>\n This view displays all upcoming livestreams.\n </li>\n <li>\n Published Livestreams will display in the <span className='text-decoration-underline'>calendar.</span>\n </li>\n <li>\n If a Content Partner changes any dates or cancels an event, Livestreams can be edited or deleted.\n </li>\n <li>\n Once a Livestream’s Start Time has passed, it will move to <span className='text-decoration-underline'>Past Livestreams.</span>\n </li>\n </ul>\n </Alert>\n );\n }\n\n if (props.stage === 'past_livestreams') {\n return (\n <Alert variant='warning' className='text-dark mx-4'>\n <div className='h6'>Past Livestreams</div>\n <ul className='mb-0'>\n <li>\n This view displays all livestreams that have “aired”.\n </li>\n <li>\n Livestreams in this list require a Zoom recording to be uploaded to them.\n </li>\n <li>\n Once a recording has been uploaded, the Livestream will automatically\n be moved to the next stage where we will create a Thumbnail and Teaching Resources for it.\n </li>\n </ul>\n </Alert>\n );\n }\n\n return <></>;\n}\n",":local {\n .dropdown {\n height: 2.4rem;\n width: 2.4rem;\n }\n}","import React from 'react';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { AssemblyLineStageConfig } from 'apps/assembly-line/constants/AssemblyLineStageConfig';\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nimport styles from './filter-actions.module.scss';\n\ninterface AssemblyLineFilterActionsProps {\n stage: AssemblyLineStage;\n queryParams: AssemblyLineQueryParams;\n quickFilters: QuickFilter[];\n}\n\nexport function AssemblyLineFilterActions(props: AssemblyLineFilterActionsProps): JSX.Element {\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const currentQuickFilterId = props.queryParams.quickFilter;\n\n const quickFilter = props.quickFilters.find(filter => filter.id === currentQuickFilterId);\n\n const { objectType } = AssemblyLineStageConfig[props.stage];\n const filterParams = AssemblyLineFilterHelper.getFilterQueryParams(props.queryParams, objectType);\n\n const hasActiveFilters = !!Object.keys(filterParams).length;\n const hasColumnFilters = !!props.queryParams.columns?.length;\n\n const canSave = (hasActiveFilters || hasColumnFilters) && !currentQuickFilterId;\n const canManageQuickFilter = !!quickFilter;\n\n function getActions(): ActionOptions[] {\n if ([ 'draft_livestreams', 'past_livestreams', 'upcoming_livestreams', 'completed_livestreams' ].includes(props.stage))\n return [];\n\n const actions: ActionOptions[] = [{\n label: 'Global search',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.GLOBAL_SEARCH,\n params: { pipelineId }\n }\n }];\n\n if (canSave) {\n actions.push({\n label: 'Save filter',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.SAVE_QUICK_FILTER,\n params: {\n ...props.queryParams,\n stage: props.stage\n }\n },\n disabled: !canSave,\n className: !canSave ? 'disabled' : ''\n });\n }\n\n if (currentQuickFilterId) {\n const disabled = !currentQuickFilterId || !canManageQuickFilter;\n actions.push({\n label: 'Rename filter',\n button: false,\n className: `btn btn-link ${disabled ? 'disabled' : ''}`,\n disabled,\n tooltip: canManageQuickFilter ? '' : 'This quick filter cannot be renamed.',\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.EDIT_QUICK_FILTER,\n args: [ currentQuickFilterId, props.stage ]\n }\n });\n }\n\n actions.push({\n label: 'Generate a report',\n button: false,\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.GENERATE_REPORT,\n params: {\n ...props.queryParams,\n stage: props.stage\n }\n }\n });\n\n actions.push({\n label: 'Delete filter',\n className: `btn btn-link text-danger ${(!currentQuickFilterId || !canManageQuickFilter) ? 'disabled' : ''}`,\n button: false,\n disabled: !currentQuickFilterId || !canManageQuickFilter,\n tooltip: canManageQuickFilter ? '' : 'This quick filter cannot be deleted.',\n appLink: {\n application: AppChannels.ASSEMBLY_LINE,\n action: Actions.AssemblyLine.DELETE_QUICK_FILTER,\n args: [ currentQuickFilterId, props.stage ]\n }\n });\n \n return actions;\n }\n\n return (\n <ActionsComponent\n actions={getActions()}\n actionsDropdownClassName={`btn btn-outline-dark ${styles.dropdown}`}\n />\n );\n}\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { PresentationTheme } from 'libs/shared/interfaces';\n\nimport { DEFAULT_THEME_NAME, DEFAULT_THEME_VALUE } from 'shared/constants';\n\ntype ThemeDropdownProps = {\n presentationThemes: PresentationTheme[],\n theme?: string,\n onThemeChange?: (theme: string) => void\n};\n\nexport function ThemeDropdown({ presentationThemes, theme, onThemeChange }: ThemeDropdownProps): JSX.Element {\n return (\n <Dropdown className='me-2'>\n <Dropdown.Toggle variant='outline-dark' className='fw-semibold'>\n Topic theme:\n {presentationThemes.find(t => t.systemName === theme)?.name ?? DEFAULT_THEME_NAME}\n </Dropdown.Toggle>\n <Dropdown.Menu align='end'>\n <Dropdown.Item onClick={() => onThemeChange?.(DEFAULT_THEME_VALUE)}>\n {DEFAULT_THEME_NAME}\n </Dropdown.Item>\n {presentationThemes.map(t => (\n <Dropdown.Item key={t.systemName} onClick={() => onThemeChange?.(t.systemName)}>\n {t.name}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n","import React from 'react';\n\nexport function StarSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M12.337 4.078a.77.77 0 0 1 .353.353l2.043 4.18 4.607.651a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18a.768.768 0 0 1-1.116-.81l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.77.77 0 0 1 1.027-.352'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n",":local {\n .quickFilters {\n height: 0;\n transition: padding .2s;\n overflow: hidden;\n\n &.open {\n height: 100%;\n padding: map-get($spacers, 2) 0 map-get($spacers, 3);\n }\n }\n\n .quickFilter {\n line-height: 1rem;\n font-weight: 600;\n\n &:not(:last-child) {\n margin-right: map-get($spacers, 2);\n }\n\n &:hover {\n text-decoration: none !important;\n }\n }\n\n .icon {\n width: 1rem;\n height: 1rem;\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { StarSvg } from 'libs/shared/images/svg/objects/StarSvg';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\nimport styles from './quick-filters.module.scss';\n\ninterface QuickFilterItemProps {\n quickFilter: QuickFilter;\n currentFilterId: string;\n hardcoded?: boolean;\n}\n\nfunction QuickFilterItem(props: QuickFilterItemProps): JSX.Element {\n const { appLink } = ContextService.getCurrentRoute();\n\n function getAppLink(quickFilter: QuickFilter): Core.AppLink {\n const isApplied = quickFilter.id === props.currentFilterId;\n const params = ObjectHelper.pick(appLink.params, [ 'query', 'presentationId', 'sort' ]);\n\n if (isApplied) {\n return {\n ...appLink,\n params\n };\n }\n\n return {\n ...appLink,\n params: {\n ...params,\n quickFilter: quickFilter.id\n }\n };\n }\n\n let className = `d-inline-flex align-items-center mb-2 text-nowrap rounded-pill py-1 px-2 text-decoration-none ${styles.quickFilter}`;\n\n if (props.quickFilter.id === props.currentFilterId)\n className += ' bg-light-blue info-link';\n else\n className += ' bg-light';\n\n return (\n <AppLink\n key={props.quickFilter.id}\n appLink={getAppLink(props.quickFilter)}\n className={className}\n >\n {props.hardcoded && (\n <SvgContainer\n className={`me-1 d-flex text-yellow ${styles.icon}`}\n svg={StarSvg}\n />\n )}\n {props.quickFilter.name}\n </AppLink>\n );\n}\n\ninterface QuickFiltersProps {\n quickFilters: QuickFilter[];\n isOpen: boolean;\n stage: AssemblyLineStage;\n currentUser: CurrentUser;\n currentFilterId?: string;\n}\n\nexport function QuickFilters(props: QuickFiltersProps): JSX.Element {\n if (!props.quickFilters)\n return <></>;\n\n return (\n <ul className={`list-unstyled px-4 mb-0 d-flex align-items-center flex-wrap ${styles.quickFilters} ${props.isOpen ? styles.open : ''}`}>\n {AssemblyLineFilterHelper.getHardcodedQuickFilters(props.currentUser, props.stage).map(quickFilter => {\n return (\n <QuickFilterItem\n key={quickFilter.id}\n quickFilter={quickFilter}\n currentFilterId={props.currentFilterId}\n hardcoded\n />\n );\n })}\n\n {props.quickFilters.map(quickFilter => {\n return (\n <QuickFilterItem\n key={quickFilter.id}\n quickFilter={quickFilter}\n currentFilterId={props.currentFilterId}\n />\n );\n })}\n </ul>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nexport function AssemblyLineSpinner(): JSX.Element {\n return (\n <div className='text-center p-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n}\n",":local {\n $icon-size: 2.8125rem;\n\n .topNav {\n background-color: $gray-900;\n height: 3.75rem;\n }\n\n .subNav {\n height: 4.5rem;\n }\n\n .activeSubTab {\n background-color: rgba($indigo, 0.1);\n }\n\n .icon {\n width: $icon-size;\n height: $icon-size;\n }\n\n .tab:last-child {\n .chevron {\n display: none;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronRightSvg } from 'libs/shared/images/svg/arrows/ChevronRightSvg';\n\nimport { CurationStudioHeader } from 'shared/components/header/CurationStudioHeader';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineStage } from 'apps/assembly-line/interfaces/AssemblyLineStage';\nimport { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\n\nimport styles from './assembly-line-tabs.module.scss';\n\nexport interface AssemblyLineTab {\n id: AssemblyLineStage;\n name: string;\n appLink: Core.AppLink;\n count: number;\n active?: boolean;\n subTabs?: Omit<AssemblyLineTab, 'subTabs'>[];\n}\n\ninterface AssemblyLineTabsProps {\n tabs: AssemblyLineTab[];\n view: AssemblyLineView;\n}\n\nexport function AssemblyLineTabs(props: AssemblyLineTabsProps): JSX.Element {\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const { subTabs } = props.tabs.find(tab => tab.active);\n\n return (\n <>\n <CurationStudioHeader closeAppLink={pipelineId === 'clickview' ? {\n application: AppChannels.DISCOVER,\n action: Actions.Discover.DISCOVER\n } : {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.DISCOVER\n }}>\n {!props.view && (\n <ol className='list-unstyled d-flex mb-0 me-auto align-items-center'>\n {props.tabs.map((tab, index) => {\n return (\n <li key={index} className={`pe-3 d-flex align-items-center ${styles.tab}`}>\n <AppLink appLink={tab.appLink} className='d-flex align-items-center pe-3 text-decoration-none'>\n <div className='h6 mb-0 text-white pe-2'>{tab.name}</div>\n <div className={`rounded-pill px-2 ${tab.active ? 'bg-white text-dark' : 'border border-white text-white'}`}>\n {tab.count.toLocaleString()}\n </div>\n </AppLink>\n\n <div className={`${styles.chevron} text-white`}>\n <SvgContainer\n svg={ChevronRightSvg}\n />\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </CurationStudioHeader>\n\n {!!subTabs?.length && !props.view && (\n <ol className={`list-unstyled mb-0 d-flex align-items-center bg-white px-4 border-bottom ${styles.subNav}`}>\n {subTabs.map((tab, index) => {\n return (\n <li key={index} className={`d-flex align-items-center pe-3 fw-semibold ${styles.tab}`}>\n <AppLink\n appLink={tab.appLink}\n className={`d-flex align-items-center rounded-pill ps-3 pe-2 py-1 me-3 text-dark text-decoration-none ${tab.active ? styles.activeSubTab : ''}`}\n >\n <div className='pe-2'>{tab.name}</div>\n <span className={`rounded-pill px-2 ${tab.active ? 'text-white bg-dark' : 'border border-dark'}`}> {tab.count.toLocaleString()}</span>\n </AppLink>\n\n <div className={`${styles.chevron} text-indigo`}>\n <SvgContainer\n svg={ChevronRightSvg}\n />\n </div>\n </li>\n );\n })}\n </ol>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { CurationStatusString } from 'libs/shared/enums/CurationStatus';\nimport { LivestreamCollection, Presentation } from 'libs/shared/interfaces';\n\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { AssemblyLineStageCount } from 'apps/assembly-line/interfaces/responses/AssemblyLineStageCount';\nimport { LivestreamRequests } from 'apps/cv-live/flight-requests/CvLiveLivestreamRequests';\nimport { PresentationRequests } from 'apps/cv-live/flight-requests/CvLivePresentationRequests';\n\nimport { ContentPipelineIdContext } from '../contexts/AssemblyLineStageContext';\nimport { AssemblyLineFilterRequest } from '../interfaces/requests/AssemblyLineFilterRequest';\n\nexport interface FilteredStageCountsRequest {\n video: {\n filters: AssemblyLineFilterRequest[]\n };\n topic: {\n filters: AssemblyLineFilterRequest[]\n };\n dashboard: {\n filters: AssemblyLineFilterRequest[]\n };\n}\n\nconst today = new Date();\ntoday.setHours(23, 59, 59, 59);\nexport const TODAY_TIMESTAMP = TimezoneHelper.convertToUTCString(\n `${DateHelper.format(today, 'YYYY-MM-DD')}T${DateHelper.format(today, 'HH:mm:ss')}`\n);\n\nexport function useFetchAssemblyLineStageCounts(): Flight.Response<AssemblyLineStageCount> {\n const cvLivePresentation = Flight.useBasicFetch<Presentation>(PresentationRequests.cvLivePresentation());\n\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n function getRequest(): Flight.Request {\n if (!cvLivePresentation.hasCompleted)\n return null;\n\n if (pipelineId === 'cv-live') {\n return AssemblyLineRequests.getFilteredStageCounts({\n video: {\n filters: [{\n name: 'source',\n operator: 'in',\n values: ['streamable']\n }]\n },\n topic: {\n filters: [{\n name: 'presentation',\n operator: 'in',\n values: [cvLivePresentation.data.id]\n }]\n },\n dashboard: {\n filters: [{\n name: 'presentation',\n operator: 'in',\n values: [cvLivePresentation.data.id]\n }]\n }\n });\n }\n\n return AssemblyLineRequests.getFilteredStageCounts({\n video: {\n filters: [{\n name: 'source',\n operator: 'not_in',\n values: ['new_zealand']\n }]\n },\n topic: {\n filters: [{\n name: 'presentation',\n operator: 'not_in',\n values: [cvLivePresentation.data.id]\n }]\n },\n dashboard: {\n filters: []\n }\n });\n }\n \n const stageCounts = Flight.useBasicFetch<AssemblyLineStageCount>(getRequest());\n\n const query = 'audiences,classifications';\n\n const draftLivestreams = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({ status: CurationStatusString.Draft, query })\n );\n\n const livestreamRecordings = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({\n withRecordings: false,\n status: CurationStatusString.Published,\n query,\n to: TODAY_TIMESTAMP\n })\n );\n\n const upcomingRecordings = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({\n withRecordings: false, status: CurationStatusString.Published, query, from: TODAY_TIMESTAMP })\n );\n\n const pastLivestreams = Flight.useBasicFetch<LivestreamCollection>(\n pipelineId === 'cv-live' &&\n LivestreamRequests.livestreams({ withRecordings: true, query })\n );\n\n if (pipelineId === 'clickview')\n return stageCounts;\n\n const finalCounts: AssemblyLineStageCount = {\n ...(stageCounts.data || {} as AssemblyLineStageCount),\n livestreams: (\n (draftLivestreams.data?.count ?? 0) +\n (livestreamRecordings.data?.count ?? 0) +\n (pastLivestreams.data?.count ?? 0)\n ),\n draft_livestreams: draftLivestreams.data?.count ?? 0,\n upcoming_livestreams: upcomingRecordings.data?.count ?? 0,\n past_livestreams: livestreamRecordings.data?.count ?? 0,\n completed_livestreams: pastLivestreams.data?.count ?? 0\n };\n\n return {\n ...stageCounts,\n isFetching: (\n stageCounts.isFetching ||\n draftLivestreams.isFetching ||\n livestreamRecordings.isFetching ||\n pastLivestreams.isFetching ||\n upcomingRecordings.isFetching\n ),\n hasCompleted: (\n stageCounts.hasCompleted &&\n draftLivestreams.hasCompleted &&\n livestreamRecordings.hasCompleted &&\n pastLivestreams.hasCompleted &&\n upcomingRecordings.hasCompleted\n ),\n data: finalCounts\n };\n}\n",":local {\n $button-height: 2.5rem;\n\n .count {\n font-size: 95%;\n }\n\n .searchBarContainer {\n width: 18rem;\n\n .searchBar {\n height: $button-height;\n }\n }\n\n .newTopic {\n height: $button-height;\n }\n\n .presentationFilterContainer {\n width: 12rem;\n }\n}","import React from 'react';\nimport { VisibilityState } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ScopedSearchBar } from 'libs/shared/apps/search/components/scoped-search-bar/ScopedSearchBar';\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { CurrentUser, PresentationTheme } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { AssemblyLineAlert } from 'apps/assembly-line/components/alert/AssemblyLineAlert';\nimport { ColumnFilters } from 'apps/assembly-line/components/column-filters/ColumnFilters';\nimport { ConditionalFilterState } from 'apps/assembly-line/components/conditional-filters/ConditionalFilters';\nimport { ConditionalFiltersButton } from 'apps/assembly-line/components/conditional-filters/ConditionalFiltersButton';\nimport { AssemblyLineFilterActions } from 'apps/assembly-line/components/filters/AssemblyLineFilterActions';\nimport { ThemeDropdown } from 'apps/assembly-line/components/layout/ThemeDropdown';\nimport { PresentationFilter } from 'apps/assembly-line/components/presentation-filter/PresentationFilter';\nimport { QuickFilters } from 'apps/assembly-line/components/quick-filters/QuickFilters';\nimport { AssemblyLineSpinner } from 'apps/assembly-line/components/spinner/AssemblyLineSpinner';\nimport { AssemblyLineTabs } from 'apps/assembly-line/components/tabs/AssemblyLineTabs';\nimport { AssemblyLineViewConfig } from 'apps/assembly-line/constants/AssemblyLineViewConfig';\nimport { AssemblyLinePermissionContext, ContentPipelineIdContext } from 'apps/assembly-line/contexts/AssemblyLineStageContext';\nimport { AssemblyLineRequests } from 'apps/assembly-line/flight-requests/AssemblyLineRequests';\nimport { useFetchAssemblyLineStageCounts } from 'apps/assembly-line/hooks/useFetchAssemblyLineStageCounts';\nimport { usePresentationFilter } from 'apps/assembly-line/hooks/usePresentationFilter';\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 { AssemblyLineView } from 'apps/assembly-line/interfaces/AssemblyLineView';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { QuickFilter } from 'apps/assembly-line/interfaces/responses/QuickFilter';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\n\nimport styles from './assembly-line-layout.module.scss';\n\ntype AssemblyLineLayoutViewProps = React.PropsWithChildren<{\n stage: AssemblyLineStage,\n subStage: AssemblyLineStage,\n objectType: AssemblyLineObjectType,\n\n queryParams: AssemblyLineQueryParams,\n filters: ConditionalFilterState[],\n columnVisibility?: VisibilityState,\n counts: {\n showing: number,\n total: number\n },\n pipelineId: ContentPipelineId,\n view?: AssemblyLineView,\n theme?: string,\n onThemeChange?: (theme: string) => void,\n presentationThemes?: PresentationTheme[]\n}>;\n\nAssemblyLineLayoutView.defaultProps = {\n presentationType: PresentationType.Subject\n};\n\nexport function AssemblyLineLayoutView(props: AssemblyLineLayoutViewProps): JSX.Element {\n const [ showQuickFilters, setShowQuickFilters ] = React.useState(!!props.queryParams.quickFilter);\n\n const { readonly } = React.useContext(AssemblyLinePermissionContext);\n const pipelineId = React.useContext(ContentPipelineIdContext);\n\n const viewConfig = AssemblyLineViewConfig[props.view];\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n \n const quickFilters = Flight.useBasicFetch<QuickFilter[]>(AssemblyLineRequests.getQuickFilters(props.subStage));\n const stageCounts = useFetchAssemblyLineStageCounts();\n\n const {\n selectedPresentation,\n setPresentation,\n presentations,\n isLoading: isLoadingPresentation\n } = usePresentationFilter(props.queryParams, props.objectType, props.subStage, pipelineId, props.view);\n\n React.useEffect(() => {\n if (showQuickFilters || !props.queryParams.quickFilter)\n return;\n\n setShowQuickFilters(true);\n }, [props.queryParams.quickFilter]);\n\n const filterOptions = AssemblyLineFilterHelper\n .getAllFilters(props.objectType, props.subStage, selectedPresentation?.id, props.pipelineId)\n .sort((a, b) => a.label.localeCompare(b.label));\n\n const currentFilters = props.filters.filter(f => AssemblyLineFilterHelper.isFilterValid(f, filterOptions));\n\n function getHideTopicsAppLink(): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const params = ObjectHelper.pick(currentAppLink.params, [ 'query', 'presentationId', 'sort', 'limit' ]);\n\n if (props.queryParams?.applyHideTopicsFilter) {\n return {\n ...currentAppLink,\n params\n };\n }\n\n return {\n ...currentAppLink,\n params: {\n ...params,\n applyHideTopicsFilter: true\n }\n };\n }\n\n function getHideAudiencesAppLink(): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n const params = ObjectHelper.pick(currentAppLink.params, [ 'query', 'presentationId', 'sort', 'limit' ]);\n\n if (props.queryParams?.applyHideAudiencesFilter) {\n return {\n ...currentAppLink,\n params\n };\n }\n\n return {\n ...currentAppLink,\n params: {\n ...params,\n applyHideAudiencesFilter: true\n }\n };\n }\n\n if (!quickFilters.hasCompleted || isLoadingPresentation || !stageCounts.hasCompleted)\n return <AssemblyLineSpinner />;\n\n const mainFilters = [Filters.SortBy(AssemblyLineHelper.getSortOptions(props.subStage, props.pipelineId), 'Sort by:')];\n const isVideoStage = props.objectType === 'video';\n\n const tabs = AssemblyLineHelper.getTabs(\n props.stage,\n props.subStage,\n props.objectType,\n stageCounts.data,\n props.queryParams,\n pipelineId\n );\n\n if (!quickFilters.data || isLoadingPresentation)\n return <AssemblyLineSpinner />;\n\n const visibleColumnIds = Object.entries(props.columnVisibility || {})\n .filter(([ , visible ]) => {\n return visible;\n })\n .map(([colId]) => colId);\n\n return (\n <>\n <div className='position-relative'>\n <div className='pb-3'>\n <AssemblyLineTabs\n tabs={tabs}\n view={props.view}\n />\n </div>\n\n <AssemblyLineAlert stage={props.subStage} readonly={readonly} />\n\n <div className='d-flex justify-content-between align-items-center px-4 pb-2'>\n <div className='d-flex align-items-center'>\n {![ 'draft_livestreams', 'past_livestreams', 'upcoming_livestreams', 'completed_livestreams' ].includes(props.subStage) && (\n <button\n className={`fw-semibold btn me-1 ${props.queryParams.quickFilter ? 'btn-dark' : 'btn-outline-dark'} `}\n onClick={() => setShowQuickFilters(showing => !showing)}\n >\n Quick filters\n </button>\n )}\n\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={mainFilters}\n appLink={ContextService.getCurrentRoute().appLink}\n hideHeading\n hideDivider\n hideResetButton\n constantIndices={[]}\n noContainerPaddingBottom\n />\n\n {!!props.view && (\n <>\n <AppLink\n appLink={getHideTopicsAppLink()}\n className={`btn ${props.queryParams.applyHideTopicsFilter ? 'btn-dark' : 'btn-outline-dark'} fw-semibold mx-1`}\n >\n Hide videos with topics\n </AppLink>\n <AppLink\n appLink={getHideAudiencesAppLink()}\n className={`btn ${props.queryParams.applyHideAudiencesFilter ? 'btn-dark' : 'btn-outline-dark'} fw-semibold mx-1`}\n >\n Hide videos with audiences\n </AppLink>\n </>\n )}\n </div>\n\n <div className='d-flex align-items-center'>\n {!!props.presentationThemes?.length && (\n <ThemeDropdown\n presentationThemes={props.presentationThemes}\n theme={props.theme}\n onThemeChange={props.onThemeChange}\n />\n )}\n\n <div className={`me-1 ${styles.searchBarContainer}`}>\n <ScopedSearchBar\n id={`assembly-line-${props.subStage}`}\n searchAppLink={ContextService.getCurrentRoute().appLink}\n searchIndices={[ 'video', 'classification' ]}\n placeholder='Search'\n className={styles.searchBar}\n />\n </div>\n\n {!isVideoStage && presentations.length > 1 && !props.view && (\n <div className={`mx-1 ${styles.presentationFilterContainer}`}>\n <PresentationFilter\n stage={props.subStage}\n presentations={presentations}\n setPresentation={setPresentation}\n selectedPresentation={selectedPresentation}\n objectType={props.objectType}\n disabled={!!viewConfig?.presentationId}\n />\n </div>\n )}\n\n <div className='me-1 d-flex align-items-center'>\n {!!filterOptions.length && (\n <ConditionalFiltersButton\n initialState={currentFilters}\n options={filterOptions}\n columns={visibleColumnIds}\n queryParams={props.queryParams}\n showInDropdown\n />\n )}\n\n {!!props.columnVisibility && !props.view && (\n <ColumnFilters\n initialState={visibleColumnIds}\n defaultOptions={AssemblyLineHelper.getDefaultColumnFilterOptions(props.subStage)}\n options={pipelineId === 'clickview' ?\n AssemblyLineHelper.getAllColumnFilterOptions(props.objectType) :\n AssemblyLineHelper.getDefaultColumnFilterOptions(props.subStage)}\n queryParams={props.queryParams}\n stage={props.subStage}\n />\n )}\n </div>\n\n {props.subStage === 'topic' && (\n <AppLink\n className={`btn btn-outline-dark d-flex align-items-center fw-semibold me-2 ${styles.newTopic} ${(!selectedPresentation || readonly) ? 'disabled' : ''}`}\n appLink={pipelineId === 'clickview' ? {\n application: AppChannels.SUBJECTS,\n action: Actions.Subjects.NEW_CLASSIFICATION,\n args: [selectedPresentation?.id]\n } : {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive.NEW_CLASSIFICATION,\n args: [selectedPresentation?.id]\n }}\n openInNewTab\n disabled={!selectedPresentation || readonly}\n >\n <SvgContainer className='svg-container ms-n1' svg={PlusSvg} />\n <span>\n Create new topic\n </span>\n </AppLink>\n )}\n\n {props.subStage === 'draft_livestreams' && (\n <AppLink\n className={`btn btn-outline-dark d-flex align-items-center fw-semibold me-2 ${styles.newTopic} ${(!selectedPresentation || readonly) ? 'disabled' : ''}`}\n appLink={{\n application: AppChannels.CV_LIVE_PIPELINE,\n action: Actions.CvLivePipeline.ADD_LIVESTREAM\n }}\n disabled={readonly}\n >\n <SvgContainer className='svg-container ms-n1' svg={PlusSvg} />\n <span>\n Create new livestream\n </span>\n </AppLink>\n )}\n\n {!props.view && (\n <AssemblyLineFilterActions\n stage={props.subStage}\n queryParams={props.queryParams}\n quickFilters={quickFilters.data}\n />\n )}\n </div>\n </div>\n\n <QuickFilters\n quickFilters={quickFilters.data}\n currentFilterId={props.queryParams.quickFilter}\n isOpen={showQuickFilters}\n stage={props.subStage}\n currentUser={currentUser.data}\n />\n\n <p className={`ps-4 fw-semibold ${styles.count}`}>\n {`Showing ${props.counts.showing.toLocaleString()} of ${props.counts.total.toLocaleString()} ${AssemblyLineHelper.getPluralObjectName(props.objectType)}`}\n </p>\n\n {props.children}\n </div>\n <div id={AssemblyLineHelper.getPortalId()} />\n </>\n );\n}\n","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AssemblyLineQueryParams } from 'apps/assembly-line/interfaces/AssemblyLineQueryParams';\nimport { ContentPipelineId } from 'apps/assembly-line/interfaces/ContentPipelineId';\nimport { AssemblyLineFilterHelper } from 'apps/assembly-line/utils/AssemblyLineFilterHelper';\n\ninterface AssemblyLineEmptyStateProps {\n queryParams: AssemblyLineQueryParams;\n pipelineId: ContentPipelineId;\n}\n\nexport function AssemblyLineEmptyState(props: AssemblyLineEmptyStateProps): JSX.Element {\n const filterParams = AssemblyLineFilterHelper.getFilterQueryParams(props.queryParams, 'video');\n\n const isSearchingOrFiltering = Object.keys(filterParams).length || props.queryParams.query;\n\n function getImageUrl() {\n if (isSearchingOrFiltering)\n return ImageUrls.EmptyStates.AssemblyLine.SEARCH_RESULTS;\n\n return props.pipelineId === 'cv-live' ?\n ImageUrls.EmptyStates.AssemblyLine.STAGE_STREAMABLE :\n ImageUrls.EmptyStates.AssemblyLine.STAGE;\n }\n\n return (\n <EmptyState>\n <EmptyState.Image src={getImageUrl()} />\n\n <EmptyState.Heading>\n {isSearchingOrFiltering ?\n 'No search results found' :\n 'Wow! You\\'ve cleaned the queue up!'\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n {isSearchingOrFiltering ?\n 'Try using a different search term or configure the filter options again.' :\n 'All you have to do now is sit back and relax until more roll in.'\n }\n </EmptyState.Info>\n </EmptyState>\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{a as r,i,t as a}from"./BAOFaFPQ.chunk.js";import{t as o}from"./Di_u2uix.chunk.js";import{t as s}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as c}from"./CFoexGFe.chunk.js";import{i as l,n as u,t as d}from"./BVbA6fE6.chunk.js";import{a as f}from"./DBUreHJA.chunk.js";import{t as p}from"./cwPDEI372.chunk.js";import{l as m}from"./Dgk5cBBe.chunk.js";import{t as h}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./Lh2c_aQx2.chunk.js";import{t as _}from"./Bwpvc7Th2.chunk.js";import{t as v}from"./CZyPFSXo.chunk.js";import{t as y}from"./DHD4nY6U.chunk.js";import{t as b}from"./BMEoow9M.chunk.js";import{t as x}from"./CE7PE1jj.chunk.js";import{n as S,t as C}from"./2XS-c0Xo.chunk.js";var w=n(e()),T=t(),E=b(p.StreamableLearning),D={[f.Video]:e=>E.video(e.id),[f.Series]:e=>({application:s.SERIES,action:o.Series.EDIT_SERIES,args:[e.id]}),[`${f.Video}:${f.Audience}`]:e=>E.videoAudiences(e.id),[`${f.Series}:${f.Audience}`]:e=>({application:s.SERIES,action:o.Series.EDIT_SERIES_AUDIENCES,args:[e?.id]}),library:(e,t)=>({application:s.CV_LIVE,action:t===`exchange`?o.Libraries.EXCHANGE:o.Libraries.HOSTED_LIBRARIES,args:[e]})};function O(e,t,n){let r=m();function i(r){return v.classificationMembers(e,t,n,r)}function a(e){r(i(e))}return y(i,a).items}function k(e){let{presentationId:t,classificationId:n}=e,f=_(),p=g(r.SUBJECT),[y,b]=w.useState(),[E,k]=w.useState(),[A,j]=w.useState();a(i.getPresentationFetchOptions(t,b),[]),a(i.getClassificationFetchOptions(n,k),[n]),a(i.getAudiencesFetchOptions(t,j),[n]);let M=O(n,c.PinnedVideos,t),N=M?h.toObject(M,`id`):{};function P(e){return v.classificationMembers(n,c.Videos,t,e)}let F=m();function I(e){F(P(e))}let{items:L,isFetching:R,hasMore:z,nextCursor:B}=x(P,I);function V(e){let t={...E,pinnedVideoMasterId:e};p.updateClassification(n,t)}function H(e){let t=u.singularizeMemberType(c.Videos),n=e===`add`?`Successfully added ${t} to topic`:`Successfully removed ${t} from topic`;f.success(n)}function U(e){let t=u.singularizeMemberType(c.Videos),n=e===`add`?`Failed to add ${t} to topic`:`Failed to remove ${t} from topic`;f.error(n)}function W(e,t){F(v.addObjectsToClassification(E.id,[e],t,()=>H(`add`),()=>U(`add`)))}function G(e,t){F(v.removeObjectsFromClassification(E.id,[e],t,()=>H(`remove`),()=>U(`remove`)))}function K(e){let t={application:s.CV_LIVE,action:o.CvLive,subjectId:n,ownerType:l.Classification,memberType:c.Videos,memberId:e.id},r=N[e.id];return[u.buildMemberAction({actionName:`pinVideo`,callback:()=>V(e.id),...t}),u.buildMemberAction({actionName:r?`hideInClassification`:`showInClassification`,callback:()=>r?G(e.id,c.PinnedVideos):W(e.id,c.PinnedVideos),...t}),u.buildMemberAction({actionName:`remove`,...t})]}function q(e){S.exportMembers(e,c.Videos,E?.name)}return(0,T.jsx)(C,{classificationId:n,memberType:c.Videos,presentation:y,classification:E,audiences:A,visibleVideos:N,items:L,isFetching:R,hasMore:z,nextCursor:B,fetchNext:I,columnActions:K,appLinks:D,getTabs:(e,t,n)=>d.getEditClassificationTabs(s.CV_LIVE,e,t,n),onExport:q})}export{k as EditCvLiveClassificationVideosView};
2
- //# sourceMappingURL=CymdouaN.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{a as r,i,t as a}from"./BAOFaFPQ.chunk.js";import{t as o}from"./Di_u2uix.chunk.js";import{t as s}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{n as c}from"./CFoexGFe.chunk.js";import{i as l,n as u,t as d}from"./BVbA6fE6.chunk.js";import{a as f}from"./C-M2om56.chunk.js";import{t as p}from"./cwPDEI372.chunk.js";import{l as m}from"./Dgk5cBBe.chunk.js";import{t as h}from"./DpqbC5uX.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./Lh2c_aQx2.chunk.js";import{t as _}from"./Bwpvc7Th2.chunk.js";import{t as v}from"./CZyPFSXo.chunk.js";import{t as y}from"./DHD4nY6U.chunk.js";import{t as b}from"./BMEoow9M.chunk.js";import{t as x}from"./CE7PE1jj.chunk.js";import{n as S,t as C}from"./Bj4-NRWf.chunk.js";var w=n(e()),T=t(),E=b(p.StreamableLearning),D={[f.Video]:e=>E.video(e.id),[f.Series]:e=>({application:s.SERIES,action:o.Series.EDIT_SERIES,args:[e.id]}),[`${f.Video}:${f.Audience}`]:e=>E.videoAudiences(e.id),[`${f.Series}:${f.Audience}`]:e=>({application:s.SERIES,action:o.Series.EDIT_SERIES_AUDIENCES,args:[e?.id]}),library:(e,t)=>({application:s.CV_LIVE,action:t===`exchange`?o.Libraries.EXCHANGE:o.Libraries.HOSTED_LIBRARIES,args:[e]})};function O(e,t,n){let r=m();function i(r){return v.classificationMembers(e,t,n,r)}function a(e){r(i(e))}return y(i,a).items}function k(e){let{presentationId:t,classificationId:n}=e,f=_(),p=g(r.SUBJECT),[y,b]=w.useState(),[E,k]=w.useState(),[A,j]=w.useState();a(i.getPresentationFetchOptions(t,b),[]),a(i.getClassificationFetchOptions(n,k),[n]),a(i.getAudiencesFetchOptions(t,j),[n]);let M=O(n,c.PinnedVideos,t),N=M?h.toObject(M,`id`):{};function P(e){return v.classificationMembers(n,c.Videos,t,e)}let F=m();function I(e){F(P(e))}let{items:L,isFetching:R,hasMore:z,nextCursor:B}=x(P,I);function V(e){let t={...E,pinnedVideoMasterId:e};p.updateClassification(n,t)}function H(e){let t=u.singularizeMemberType(c.Videos),n=e===`add`?`Successfully added ${t} to topic`:`Successfully removed ${t} from topic`;f.success(n)}function U(e){let t=u.singularizeMemberType(c.Videos),n=e===`add`?`Failed to add ${t} to topic`:`Failed to remove ${t} from topic`;f.error(n)}function W(e,t){F(v.addObjectsToClassification(E.id,[e],t,()=>H(`add`),()=>U(`add`)))}function G(e,t){F(v.removeObjectsFromClassification(E.id,[e],t,()=>H(`remove`),()=>U(`remove`)))}function K(e){let t={application:s.CV_LIVE,action:o.CvLive,subjectId:n,ownerType:l.Classification,memberType:c.Videos,memberId:e.id},r=N[e.id];return[u.buildMemberAction({actionName:`pinVideo`,callback:()=>V(e.id),...t}),u.buildMemberAction({actionName:r?`hideInClassification`:`showInClassification`,callback:()=>r?G(e.id,c.PinnedVideos):W(e.id,c.PinnedVideos),...t}),u.buildMemberAction({actionName:`remove`,...t})]}function q(e){S.exportMembers(e,c.Videos,E?.name)}return(0,T.jsx)(C,{classificationId:n,memberType:c.Videos,presentation:y,classification:E,audiences:A,visibleVideos:N,items:L,isFetching:R,hasMore:z,nextCursor:B,fetchNext:I,columnActions:K,appLinks:D,getTabs:(e,t,n)=>d.getEditClassificationTabs(s.CV_LIVE,e,t,n),onExport:q})}export{k as EditCvLiveClassificationVideosView};
2
+ //# sourceMappingURL=B9R92bqj.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CymdouaN.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/edit-classification-videos/EditCvLiveClassificationVideosView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetch } from 'libs/common/react/flight/FlightHelpers';\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, Classification, Presentation, PresentationAudience, Series, Video } from 'libs/shared/interfaces';\n\nimport { MatrixMember } from 'shared/components';\nimport { Actions, AppChannels, DataServices } from 'shared/constants';\nimport { MatrixObjectType, OwnerType, SubjectMemberType } from 'shared/enums';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { UpdateClassificationRequest } from 'shared/interfaces/data-requests';\nimport { SubjectDataService, SubjectDataServiceHelper } from 'shared/services';\nimport { ClassificationMemberHelper, TopicsNavHelper } from 'shared/utils';\nimport { ClassificationMemberExporter } from 'shared/utils/ClassificationMemberExporter';\n\nimport { getSubjectAppLinks } from 'apps/subjects/utils/getSubjectAppLinks';\nimport { EditClassificationMembers } from 'apps/subjects/views/classifications/edit-classification-members/EditClassificationMembers';\n\n// --- App Links ---\nconst slAppLinks = getSubjectAppLinks(PresentationType.StreamableLearning);\n\nconst appLinks = {\n [MatrixObjectType.Video]: (v: Video) => slAppLinks.video(v.id),\n [MatrixObjectType.Series]: (series: Series) => ({\n application: AppChannels.SERIES,\n action: Actions.Series.EDIT_SERIES,\n args: [series.id]\n }),\n [`${MatrixObjectType.Video}:${MatrixObjectType.Audience}`]: (video: Video) => slAppLinks.videoAudiences(video.id),\n [`${MatrixObjectType.Series}:${MatrixObjectType.Audience}`]: (series: Series) => ({\n application: AppChannels.SERIES,\n action: Actions.Series.EDIT_SERIES_AUDIENCES,\n args: [series?.id]\n }),\n library: (id: string, type: string) => ({\n application: AppChannels.CV_LIVE,\n action: type === 'exchange' ?\n Actions.Libraries.EXCHANGE :\n Actions.Libraries.HOSTED_LIBRARIES,\n args: [id]\n })\n};\n\nfunction useFetchAllMembers(\n classificationId: string,\n memberType: SubjectMemberType,\n presentationId: string\n): BaseObject[] {\n const fetch = useGetFetch();\n\n function getMembersRequest(cursor?: string): Flight.Request {\n return SubjectRequests.classificationMembers(classificationId, memberType, presentationId, cursor);\n }\n\n function fetchNextMembers(cursor?: string): void {\n fetch(getMembersRequest(cursor));\n }\n\n return (useFetchAll(getMembersRequest, fetchNextMembers)).items;\n}\n\ninterface EditCvLiveClassificationVideosViewProps {\n presentationId: string;\n classificationId: string;\n}\n\nexport function EditCvLiveClassificationVideosView(props: EditCvLiveClassificationVideosViewProps): React.ReactElement {\n const { presentationId, classificationId } = props;\n\n const alerts = useAlerts();\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\n\n // --- Data Fetching ---\n const [ presentation, setPresentation ] = React.useState<Presentation>();\n const [ classification, setClassification ] = React.useState<Classification>();\n const [ audiences, setAudiences ] = React.useState<PresentationAudience[]>();\n\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), []);\n useFetch(\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification),\n [classificationId]\n );\n useFetch(SubjectDataServiceHelper.getAudiencesFetchOptions(presentationId, setAudiences), [classificationId]);\n\n const visibleVideos = useFetchAllMembers(classificationId, SubjectMemberType.PinnedVideos, presentationId);\n const mappedVisibleVideos = visibleVideos ? ArrayHelper.toObject(visibleVideos, 'id') : {};\n\n function getMembersPage(cursor?: string) {\n return SubjectRequests.classificationMembers(classificationId, SubjectMemberType.Videos, presentationId, cursor);\n }\n const fetch = Flight.useGetFetch();\n function fetchNext(cursor?: string) {\n fetch(getMembersPage(cursor));\n }\n\n const { items, isFetching, hasMore, nextCursor } = useInfiniteList<MatrixMember>(getMembersPage, fetchNext);\n\n // --- Mutations ---\n function updatePinnedVideo(id: string): void {\n const requestObject: UpdateClassificationRequest = {\n ...classification,\n pinnedVideoMasterId: id\n };\n\n subjectDataService.updateClassification(classificationId, requestObject);\n }\n\n function onClassificationUpdateSuccess(actionType: 'add' | 'remove') {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(SubjectMemberType.Videos);\n\n const message = actionType === 'add' ?\n `Successfully added ${singularMemberType} to topic` :\n `Successfully removed ${singularMemberType} from topic`;\n\n alerts.success(message);\n }\n\n function onClassificationUpdateError(actionType: 'add' | 'remove') {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(SubjectMemberType.Videos);\n\n const message = actionType === 'add' ?\n `Failed to add ${singularMemberType} to topic` :\n `Failed to remove ${singularMemberType} from topic`;\n\n alerts.error(message);\n }\n\n function addObjectToClassification(id: string, memberType: SubjectMemberType): void {\n fetch(SubjectRequests.addObjectsToClassification(\n classification.id,\n [id],\n memberType,\n () => onClassificationUpdateSuccess('add'),\n () => onClassificationUpdateError('add')\n ));\n }\n\n function removeObjectFromClassification(id: string, memberType: SubjectMemberType): void {\n fetch(SubjectRequests.removeObjectsFromClassification(\n classification.id,\n [id],\n memberType,\n () => onClassificationUpdateSuccess('remove'),\n () => onClassificationUpdateError('remove')\n ));\n }\n\n // --- Column Actions ---\n function columnActions(data: Classification | MatrixMember): ActionOptions[] {\n const options = {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive,\n subjectId: classificationId,\n ownerType: OwnerType.Classification,\n memberType: SubjectMemberType.Videos,\n memberId: data.id\n };\n\n const isCurrentlyVisible = mappedVisibleVideos[data.id];\n\n return [\n ClassificationMemberHelper.buildMemberAction({\n actionName: 'pinVideo',\n callback: () => updatePinnedVideo(data.id),\n ...options\n }),\n\n ClassificationMemberHelper.buildMemberAction({\n actionName: isCurrentlyVisible ? 'hideInClassification' : 'showInClassification',\n callback: () => isCurrentlyVisible ?\n removeObjectFromClassification(data.id, SubjectMemberType.PinnedVideos) :\n addObjectToClassification(data.id, SubjectMemberType.PinnedVideos),\n ...options\n }),\n\n ClassificationMemberHelper.buildMemberAction({\n actionName: 'remove',\n ...options\n })\n ];\n }\n\n // --- Export ---\n function onExport(items: MatrixMember[]): void {\n ClassificationMemberExporter.exportMembers(items, SubjectMemberType.Videos, classification?.name);\n }\n\n return (\n <EditClassificationMembers\n classificationId={classificationId}\n memberType={SubjectMemberType.Videos}\n presentation={presentation}\n classification={classification}\n audiences={audiences}\n visibleVideos={mappedVisibleVideos}\n items={items}\n isFetching={isFetching}\n hasMore={hasMore}\n nextCursor={nextCursor}\n fetchNext={fetchNext}\n columnActions={columnActions}\n appLinks={appLinks}\n getTabs={(pid, cid, hasPermissions) =>\n TopicsNavHelper.getEditClassificationTabs(AppChannels.CV_LIVE, pid, cid, hasPermissions)\n }\n onExport={onExport}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"B9R92bqj.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/views/edit-classification-videos/EditCvLiveClassificationVideosView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetch } from 'libs/common/react/flight/FlightHelpers';\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { BaseObject, Classification, Presentation, PresentationAudience, Series, Video } from 'libs/shared/interfaces';\n\nimport { MatrixMember } from 'shared/components';\nimport { Actions, AppChannels, DataServices } from 'shared/constants';\nimport { MatrixObjectType, OwnerType, SubjectMemberType } from 'shared/enums';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { UpdateClassificationRequest } from 'shared/interfaces/data-requests';\nimport { SubjectDataService, SubjectDataServiceHelper } from 'shared/services';\nimport { ClassificationMemberHelper, TopicsNavHelper } from 'shared/utils';\nimport { ClassificationMemberExporter } from 'shared/utils/ClassificationMemberExporter';\n\nimport { getSubjectAppLinks } from 'apps/subjects/utils/getSubjectAppLinks';\nimport { EditClassificationMembers } from 'apps/subjects/views/classifications/edit-classification-members/EditClassificationMembers';\n\n// --- App Links ---\nconst slAppLinks = getSubjectAppLinks(PresentationType.StreamableLearning);\n\nconst appLinks = {\n [MatrixObjectType.Video]: (v: Video) => slAppLinks.video(v.id),\n [MatrixObjectType.Series]: (series: Series) => ({\n application: AppChannels.SERIES,\n action: Actions.Series.EDIT_SERIES,\n args: [series.id]\n }),\n [`${MatrixObjectType.Video}:${MatrixObjectType.Audience}`]: (video: Video) => slAppLinks.videoAudiences(video.id),\n [`${MatrixObjectType.Series}:${MatrixObjectType.Audience}`]: (series: Series) => ({\n application: AppChannels.SERIES,\n action: Actions.Series.EDIT_SERIES_AUDIENCES,\n args: [series?.id]\n }),\n library: (id: string, type: string) => ({\n application: AppChannels.CV_LIVE,\n action: type === 'exchange' ?\n Actions.Libraries.EXCHANGE :\n Actions.Libraries.HOSTED_LIBRARIES,\n args: [id]\n })\n};\n\nfunction useFetchAllMembers(\n classificationId: string,\n memberType: SubjectMemberType,\n presentationId: string\n): BaseObject[] {\n const fetch = useGetFetch();\n\n function getMembersRequest(cursor?: string): Flight.Request {\n return SubjectRequests.classificationMembers(classificationId, memberType, presentationId, cursor);\n }\n\n function fetchNextMembers(cursor?: string): void {\n fetch(getMembersRequest(cursor));\n }\n\n return (useFetchAll(getMembersRequest, fetchNextMembers)).items;\n}\n\ninterface EditCvLiveClassificationVideosViewProps {\n presentationId: string;\n classificationId: string;\n}\n\nexport function EditCvLiveClassificationVideosView(props: EditCvLiveClassificationVideosViewProps): React.ReactElement {\n const { presentationId, classificationId } = props;\n\n const alerts = useAlerts();\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\n\n // --- Data Fetching ---\n const [ presentation, setPresentation ] = React.useState<Presentation>();\n const [ classification, setClassification ] = React.useState<Classification>();\n const [ audiences, setAudiences ] = React.useState<PresentationAudience[]>();\n\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), []);\n useFetch(\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification),\n [classificationId]\n );\n useFetch(SubjectDataServiceHelper.getAudiencesFetchOptions(presentationId, setAudiences), [classificationId]);\n\n const visibleVideos = useFetchAllMembers(classificationId, SubjectMemberType.PinnedVideos, presentationId);\n const mappedVisibleVideos = visibleVideos ? ArrayHelper.toObject(visibleVideos, 'id') : {};\n\n function getMembersPage(cursor?: string) {\n return SubjectRequests.classificationMembers(classificationId, SubjectMemberType.Videos, presentationId, cursor);\n }\n const fetch = Flight.useGetFetch();\n function fetchNext(cursor?: string) {\n fetch(getMembersPage(cursor));\n }\n\n const { items, isFetching, hasMore, nextCursor } = useInfiniteList<MatrixMember>(getMembersPage, fetchNext);\n\n // --- Mutations ---\n function updatePinnedVideo(id: string): void {\n const requestObject: UpdateClassificationRequest = {\n ...classification,\n pinnedVideoMasterId: id\n };\n\n subjectDataService.updateClassification(classificationId, requestObject);\n }\n\n function onClassificationUpdateSuccess(actionType: 'add' | 'remove') {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(SubjectMemberType.Videos);\n\n const message = actionType === 'add' ?\n `Successfully added ${singularMemberType} to topic` :\n `Successfully removed ${singularMemberType} from topic`;\n\n alerts.success(message);\n }\n\n function onClassificationUpdateError(actionType: 'add' | 'remove') {\n const singularMemberType = ClassificationMemberHelper.singularizeMemberType(SubjectMemberType.Videos);\n\n const message = actionType === 'add' ?\n `Failed to add ${singularMemberType} to topic` :\n `Failed to remove ${singularMemberType} from topic`;\n\n alerts.error(message);\n }\n\n function addObjectToClassification(id: string, memberType: SubjectMemberType): void {\n fetch(SubjectRequests.addObjectsToClassification(\n classification.id,\n [id],\n memberType,\n () => onClassificationUpdateSuccess('add'),\n () => onClassificationUpdateError('add')\n ));\n }\n\n function removeObjectFromClassification(id: string, memberType: SubjectMemberType): void {\n fetch(SubjectRequests.removeObjectsFromClassification(\n classification.id,\n [id],\n memberType,\n () => onClassificationUpdateSuccess('remove'),\n () => onClassificationUpdateError('remove')\n ));\n }\n\n // --- Column Actions ---\n function columnActions(data: Classification | MatrixMember): ActionOptions[] {\n const options = {\n application: AppChannels.CV_LIVE,\n action: Actions.CvLive,\n subjectId: classificationId,\n ownerType: OwnerType.Classification,\n memberType: SubjectMemberType.Videos,\n memberId: data.id\n };\n\n const isCurrentlyVisible = mappedVisibleVideos[data.id];\n\n return [\n ClassificationMemberHelper.buildMemberAction({\n actionName: 'pinVideo',\n callback: () => updatePinnedVideo(data.id),\n ...options\n }),\n\n ClassificationMemberHelper.buildMemberAction({\n actionName: isCurrentlyVisible ? 'hideInClassification' : 'showInClassification',\n callback: () => isCurrentlyVisible ?\n removeObjectFromClassification(data.id, SubjectMemberType.PinnedVideos) :\n addObjectToClassification(data.id, SubjectMemberType.PinnedVideos),\n ...options\n }),\n\n ClassificationMemberHelper.buildMemberAction({\n actionName: 'remove',\n ...options\n })\n ];\n }\n\n // --- Export ---\n function onExport(items: MatrixMember[]): void {\n ClassificationMemberExporter.exportMembers(items, SubjectMemberType.Videos, classification?.name);\n }\n\n return (\n <EditClassificationMembers\n classificationId={classificationId}\n memberType={SubjectMemberType.Videos}\n presentation={presentation}\n classification={classification}\n audiences={audiences}\n visibleVideos={mappedVisibleVideos}\n items={items}\n isFetching={isFetching}\n hasMore={hasMore}\n nextCursor={nextCursor}\n fetchNext={fetchNext}\n columnActions={columnActions}\n appLinks={appLinks}\n getTabs={(pid, cid, hasPermissions) =>\n TopicsNavHelper.getEditClassificationTabs(AppChannels.CV_LIVE, pid, cid, hasPermissions)\n }\n onExport={onExport}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{D 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{t as a}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as o}from"./UCDGupVs.chunk.js";import{L as s,i as c,m as l,o as u,s as d}from"./C7Gmh7eY.chunk.js";import{n as f}from"./CsF4wDV1.chunk.js";import{d as p,s as m,u as h}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./CVHQXNzi.chunk.js";import{t as _}from"./Lh2c_aQx2.chunk.js";import{t as v}from"./Bwpvc7Th2.chunk.js";import{i as y}from"./DA0I3jYA.chunk.js";import{t as b}from"./dKyhMawf.chunk.js";import{a as x,i as S}from"./BJdNIGDD2.chunk.js";import{t as C}from"./CoqIP93V2.chunk.js";import{t as w}from"./C5i_8zoU.chunk.js";import{t as T}from"./BUtlulMl.chunk.js";import{t as E}from"./0KUhq7W7.chunk.js";var D=r(t()),O=r(e()),k=n();function A(e){let[t,n]=D.useState(!1),r=m(o.currentUser()),A=m(w.clip(e.clipId)),j=m(C.contentRegions()),M=h(),N=p(),P=v(),F=_(f.ResourceUpload);async function I(t,r){n(!0);let i=t.resources.filter(e=>e.typeId===g.Resource),a=t.resources.filter(e=>e.typeId===g.Link);try{await Promise.all([L(i),R(i),z(i),B(a),V(a),H(a)]),N([`clip:${e.clipId}`]),P.success(`Successfully updated resources.`)}catch{P.error(`Something went wrong while updating resources. Please try again.`)}finally{n(!1),r({reset:!1})}}async function L(t){let n=t.filter(e=>!e.id).map(t=>M(w.addResource(e.clipId,t))),r=(await Promise.all(n)).map(e=>{let n={...e,contentRegions:t.find(t=>t.url===e.url).contentRegions};return M(w.updateResourceContentRegions(n))});return Promise.all(r)}function R(t){let n=A.data.resources.data.filter(e=>e.typeId===g.Resource),r=t.filter(e=>{if(!e.id)return!1;let t=n.find(t=>t.id.toString()===e.id.toString());return!i.isEqual(i.omit(e,[`contentRegions`]),i.omit(t,[`contentRegions`]))}).map(t=>M(w.updateResource(e.clipId,t))),a=t.filter(e=>{let t=n.find(t=>e.url===t.url);return t?!i.isEqual(e.contentRegions,t.contentRegions?.data):!1}).map(e=>M(w.updateResourceContentRegions(e)));return Promise.all([...r,...a])}function z(t){let n=A.data.resources.data.filter(e=>e.typeId===g.Resource).filter(e=>!t.find(t=>t.id?.toString()===e.id.toString())).map(t=>M(w.removeResource(e.clipId,t.id)));return Promise.all(n)}function B(t){let n=t.filter(e=>!e.id).map(t=>M(w.addLink(e.clipId,t)));return Promise.all(n)}function V(t){let n=A.data.links.data.filter(e=>e.typeId===g.Link),r=t.filter(e=>{if(!e.id)return!1;let t=n.find(t=>t.id.toString()===e.id.toString());return e.name!==t.name||e.url!==t.url}).map(t=>M(w.updateLink(e.clipId,t)));return Promise.all(r)}function H(t){let n=A.data.links.data.filter(e=>e.typeId===g.Link).filter(e=>!t.find(t=>t.id?.toString()===e.id.toString())).map(t=>M(w.removeLink(e.clipId,t.id)));return Promise.all(n)}function U(e){return new Promise(t=>{F.addFiles(e);let n=[];function r(i){n.push(i.toJSON()),n.length===e.length&&(t(n),O.default.channel(S.RESOURCE_UPLOAD).off(x.UPLOAD_COMPLETE,r))}O.default.channel(S.RESOURCE_UPLOAD).on(x.UPLOAD_COMPLETE,r)})}function W(){return!A.hasCompleted||!j.hasCompleted}if(W())return(0,k.jsx)(s,{});let G=[...A.data.resources.data.map(e=>({...e,contentRegions:e.contentRegions.data})),...A.data.links.data];return(0,k.jsxs)(k.Fragment,{children:[!!r.data&&(0,k.jsx)(E,{clipId:e.clipId,activeAction:a.Clips.EDIT_CLIP_RESOURCES,currentUser:r.data}),!!A.data&&(0,k.jsx)(c.Provider,{value:j.data.data,children:(0,k.jsx)(b,{initialValues:{resources:G,newLink:{url:``,name:``}},validationSchema:u,onSubmit:I,enableReinitialize:!1,children:(0,k.jsxs)(y,{children:[(0,k.jsx)(d,{onResourceFilesAdded:U,allowNoResources:!1,isSaving:t,hideCheckbox:!0,lockNav:!0}),(0,k.jsx)(l,{}),(0,k.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,k.jsx)(T,{variant:`dark`})})]})})})]})}export{A as EditClipResourcesView};
2
- //# sourceMappingURL=CtVYDK7g.chunk.js.map
1
+ import{D 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{t as a}from"./Di_u2uix.chunk.js";import"./CfCYHRuo.chunk.js";import{t as o}from"./UCDGupVs.chunk.js";import{L as s,i as c,m as l,o as u,s as d}from"./DWHKdmdQ.chunk.js";import{n as f}from"./CsF4wDV1.chunk.js";import{d as p,s as m,u as h}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as g}from"./CVHQXNzi.chunk.js";import{t as _}from"./Lh2c_aQx2.chunk.js";import{t as v}from"./Bwpvc7Th2.chunk.js";import{i as y}from"./DA0I3jYA.chunk.js";import{t as b}from"./dKyhMawf.chunk.js";import{a as x,i as S}from"./BJdNIGDD2.chunk.js";import{t as C}from"./CoqIP93V2.chunk.js";import{t as w}from"./C5i_8zoU.chunk.js";import{t as T}from"./BUtlulMl.chunk.js";import{t as E}from"./DnZGILQc.chunk.js";var D=r(t()),O=r(e()),k=n();function A(e){let[t,n]=D.useState(!1),r=m(o.currentUser()),A=m(w.clip(e.clipId)),j=m(C.contentRegions()),M=h(),N=p(),P=v(),F=_(f.ResourceUpload);async function I(t,r){n(!0);let i=t.resources.filter(e=>e.typeId===g.Resource),a=t.resources.filter(e=>e.typeId===g.Link);try{await Promise.all([L(i),R(i),z(i),B(a),V(a),H(a)]),N([`clip:${e.clipId}`]),P.success(`Successfully updated resources.`)}catch{P.error(`Something went wrong while updating resources. Please try again.`)}finally{n(!1),r({reset:!1})}}async function L(t){let n=t.filter(e=>!e.id).map(t=>M(w.addResource(e.clipId,t))),r=(await Promise.all(n)).map(e=>{let n={...e,contentRegions:t.find(t=>t.url===e.url).contentRegions};return M(w.updateResourceContentRegions(n))});return Promise.all(r)}function R(t){let n=A.data.resources.data.filter(e=>e.typeId===g.Resource),r=t.filter(e=>{if(!e.id)return!1;let t=n.find(t=>t.id.toString()===e.id.toString());return!i.isEqual(i.omit(e,[`contentRegions`]),i.omit(t,[`contentRegions`]))}).map(t=>M(w.updateResource(e.clipId,t))),a=t.filter(e=>{let t=n.find(t=>e.url===t.url);return t?!i.isEqual(e.contentRegions,t.contentRegions?.data):!1}).map(e=>M(w.updateResourceContentRegions(e)));return Promise.all([...r,...a])}function z(t){let n=A.data.resources.data.filter(e=>e.typeId===g.Resource).filter(e=>!t.find(t=>t.id?.toString()===e.id.toString())).map(t=>M(w.removeResource(e.clipId,t.id)));return Promise.all(n)}function B(t){let n=t.filter(e=>!e.id).map(t=>M(w.addLink(e.clipId,t)));return Promise.all(n)}function V(t){let n=A.data.links.data.filter(e=>e.typeId===g.Link),r=t.filter(e=>{if(!e.id)return!1;let t=n.find(t=>t.id.toString()===e.id.toString());return e.name!==t.name||e.url!==t.url}).map(t=>M(w.updateLink(e.clipId,t)));return Promise.all(r)}function H(t){let n=A.data.links.data.filter(e=>e.typeId===g.Link).filter(e=>!t.find(t=>t.id?.toString()===e.id.toString())).map(t=>M(w.removeLink(e.clipId,t.id)));return Promise.all(n)}function U(e){return new Promise(t=>{F.addFiles(e);let n=[];function r(i){n.push(i.toJSON()),n.length===e.length&&(t(n),O.default.channel(S.RESOURCE_UPLOAD).off(x.UPLOAD_COMPLETE,r))}O.default.channel(S.RESOURCE_UPLOAD).on(x.UPLOAD_COMPLETE,r)})}function W(){return!A.hasCompleted||!j.hasCompleted}if(W())return(0,k.jsx)(s,{});let G=[...A.data.resources.data.map(e=>({...e,contentRegions:e.contentRegions.data})),...A.data.links.data];return(0,k.jsxs)(k.Fragment,{children:[!!r.data&&(0,k.jsx)(E,{clipId:e.clipId,activeAction:a.Clips.EDIT_CLIP_RESOURCES,currentUser:r.data}),!!A.data&&(0,k.jsx)(c.Provider,{value:j.data.data,children:(0,k.jsx)(b,{initialValues:{resources:G,newLink:{url:``,name:``}},validationSchema:u,onSubmit:I,enableReinitialize:!1,children:(0,k.jsxs)(y,{children:[(0,k.jsx)(d,{onResourceFilesAdded:U,allowNoResources:!1,isSaving:t,hideCheckbox:!0,lockNav:!0}),(0,k.jsx)(l,{}),(0,k.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,k.jsx)(T,{variant:`dark`})})]})})})]})}export{A as EditClipResourcesView};
2
+ //# sourceMappingURL=BAFYJZ4c.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CtVYDK7g.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-resources/EditClipResourcesView.tsx"],"sourcesContent":["import React from 'react';\nimport Radio from 'backbone.radio';\nimport { Form } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { LearningResourceUploadService } from 'libs/shared/apps/upload/services/UploadService';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Clip, ContentRegionCollection, CuratorUser, FileUpload, Link, Resource } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants';\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\n\nimport { LinksForm } from 'apps/assembly-line/components/fields/edit-resources/LinksForm';\nimport { ResourcesForm } from 'apps/assembly-line/components/fields/edit-resources/ResourcesForm';\nimport { AssemblyLinePopupSpinner } from 'apps/assembly-line/components/form-spinner/AssemblyLinePopupSpinner';\nimport { VideoResourcesValidationSchema } from 'apps/assembly-line/validation/VideoResourcesValidationSchema';\nimport { ContentRegionContext, FormResource, VideoResourcesFormData } from 'apps/assembly-line/views/edit-video/edit-resources/EditVideoResourcesView';\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\n\ninterface EditClipResourcesViewProps {\n clipId: string;\n}\n\nexport function EditClipResourcesView(props: EditClipResourcesViewProps): JSX.Element {\n const [ isSaving, setIsSaving ] = React.useState(false);\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const contentRegions = Flight.useBasicFetch<ContentRegionCollection>(ContentRegionRequests.contentRegions());\n\n const fetchAsync = Flight.useGetFetchAsync();\n const invalidate = Flight.useGetInvalidate();\n const alerts = useAlerts();\n\n const resourceUploadService = useService<LearningResourceUploadService>(SharedServices.ResourceUpload);\n\n async function save(\n formData: VideoResourcesFormData,\n onDone: (options?: FormSubmissionOptions<VideoResourcesFormData>) => void\n ): Promise<void> {\n setIsSaving(true);\n\n const formResources = formData.resources.filter(r => r.typeId === MasterType.Resource) as FormResource[];\n const formLinks = formData.resources.filter(r => r.typeId === MasterType.Link) as Link[];\n\n try {\n await Promise.all([\n addNewResources(formResources),\n updateExistingResources(formResources),\n removeResources(formResources),\n addNewLinks(formLinks),\n updateExistingLinks(formLinks),\n removeLinks(formLinks)\n ]);\n \n invalidate([`clip:${props.clipId}`]);\n\n alerts.success('Successfully updated resources.');\n } catch {\n alerts.error('Something went wrong while updating resources. Please try again.');\n } finally {\n setIsSaving(false);\n onDone({ reset: false });\n }\n }\n\n async function addNewResources(formResources: FormResource[]): Promise<void[]> {\n const newResourcesRequests = formResources\n .filter(r => !r.id)\n .map(resource => {\n return fetchAsync<Resource>(ClipRequests.addResource(props.clipId, resource));\n });\n\n const newResources = await Promise.all(newResourcesRequests);\n\n const setContentRegionsRequests = newResources.map(resource => {\n const resourceWithContentRegions = {\n ...resource,\n contentRegions: formResources.find(r => r.url === resource.url).contentRegions\n };\n\n return fetchAsync<void>(ClipRequests.updateResourceContentRegions(resourceWithContentRegions));\n });\n\n return Promise.all(setContentRegionsRequests);\n }\n\n function updateExistingResources(formResources: FormResource[]): Promise<void[]> {\n const existingResources = clip.data.resources.data.filter(r => r.typeId === MasterType.Resource);\n\n const updatedResources = formResources.filter(r => {\n if (!r.id)\n return false;\n\n const oldVersion = existingResources.find(existing => {\n return existing.id.toString() === r.id.toString();\n });\n\n return !ObjectHelper.isEqual(ObjectHelper.omit(r, ['contentRegions']), ObjectHelper.omit(oldVersion, ['contentRegions']));\n });\n\n const updateRequests = updatedResources.map(resource => {\n return fetchAsync<void>(ClipRequests.updateResource(props.clipId, resource));\n });\n\n const resourcesWithUpdatedContentRegions = formResources.filter(formResource => {\n const currentResource = existingResources.find(r => formResource.url === r.url);\n\n if (!currentResource)\n return false;\n\n return !ObjectHelper.isEqual(formResource.contentRegions, currentResource.contentRegions?.data);\n });\n\n const updateContentRegionRequests = resourcesWithUpdatedContentRegions.map(resource => {\n return fetchAsync<void>(ClipRequests.updateResourceContentRegions(resource));\n });\n\n return Promise.all([ ...updateRequests, ...updateContentRegionRequests ]);\n }\n\n function removeResources(formResources: FormResource[]): Promise<void[]> {\n const existingResources = clip.data.resources.data.filter(r => r.typeId === MasterType.Resource);\n\n const removedResources = existingResources.filter(existing => {\n return !formResources.find(r => r.id?.toString() === existing.id.toString());\n });\n\n const requests = removedResources.map(resource => {\n return fetchAsync<void>(ClipRequests.removeResource(props.clipId, resource.id));\n });\n\n return Promise.all(requests);\n }\n\n function addNewLinks(formLinks: Link[]): Promise<void[]> {\n const newLinks = formLinks.filter(l => !l.id);\n\n const requests = newLinks.map(link => {\n return fetchAsync<void>(ClipRequests.addLink(props.clipId, link));\n });\n\n return Promise.all(requests);\n }\n\n function updateExistingLinks(formLinks: Link[]): Promise<void[]> {\n const existingLinks = clip.data.links.data.filter(r => r.typeId === MasterType.Link);\n\n const updatedLinks = formLinks.filter(l => {\n if (!l.id)\n return false;\n\n const oldVersion = existingLinks.find(existing => {\n return existing.id.toString() === l.id.toString();\n });\n\n return l.name !== oldVersion.name || l.url !== oldVersion.url;\n });\n\n const requests = updatedLinks.map(link => {\n return fetchAsync<void>(ClipRequests.updateLink(props.clipId, link));\n });\n\n return Promise.all(requests);\n }\n\n function removeLinks(formLinks: Link[]): Promise<void[]> {\n const existingLinks = clip.data.links.data.filter(r => r.typeId === MasterType.Link);\n\n const removedLinks = existingLinks.filter(existing => {\n return !formLinks.find(l => l.id?.toString() === existing.id.toString());\n });\n\n const requests = removedLinks.map(link => {\n return fetchAsync<void>(ClipRequests.removeLink(props.clipId, link.id));\n });\n\n return Promise.all(requests);\n }\n\n function onResourceFilesAdded(files: File[]): Promise<FileUpload[]> {\n return new Promise(resolve => {\n resourceUploadService.addFiles(files);\n\n const uploads: FileUpload[] = [];\n\n function onUploadComplete(upload: Core.Model) {\n uploads.push(upload.toJSON());\n\n if (uploads.length === files.length) {\n resolve(uploads);\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD).off(UploadEventNames.UPLOAD_COMPLETE, onUploadComplete);\n }\n }\n\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD).on(UploadEventNames.UPLOAD_COMPLETE, onUploadComplete);\n });\n }\n\n function isLoading(): boolean {\n return !clip.hasCompleted || !contentRegions.hasCompleted;\n }\n\n if (isLoading())\n return <AssemblyLinePopupSpinner />;\n\n const combinedResources = [\n ...clip.data.resources.data.map(r => ({ ...r, contentRegions: r.contentRegions.data })),\n ...clip.data.links.data\n ];\n\n return (\n <>\n {!!currentUser.data && (\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_RESOURCES}\n currentUser={currentUser.data}\n />\n )}\n {!!clip.data && (\n <ContentRegionContext.Provider value={contentRegions.data.data}>\n <FormWrapper<VideoResourcesFormData>\n initialValues={{\n resources: combinedResources,\n newLink: { url: '', name: '' }\n }}\n validationSchema={VideoResourcesValidationSchema}\n onSubmit={save}\n enableReinitialize={false}\n >\n <Form>\n <ResourcesForm\n onResourceFilesAdded={onResourceFilesAdded}\n allowNoResources={false}\n isSaving={isSaving}\n hideCheckbox\n lockNav\n />\n <LinksForm />\n\n <div className='d-flex justify-content-end'>\n <FormButtons variant='dark' />\n </div>\n </Form>\n </FormWrapper>\n </ContentRegionContext.Provider>\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BAFYJZ4c.chunk.js","names":[],"sources":["../../../../../src/apps/clips/views/edit-clip-resources/EditClipResourcesView.tsx"],"sourcesContent":["import React from 'react';\nimport Radio from 'backbone.radio';\nimport { Form } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { LearningResourceUploadService } from 'libs/shared/apps/upload/services/UploadService';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Clip, ContentRegionCollection, CuratorUser, FileUpload, Link, Resource } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants';\nimport { ContentRegionRequests } from 'shared/flight-requests/ContentRegionRequests';\n\nimport { LinksForm } from 'apps/assembly-line/components/fields/edit-resources/LinksForm';\nimport { ResourcesForm } from 'apps/assembly-line/components/fields/edit-resources/ResourcesForm';\nimport { AssemblyLinePopupSpinner } from 'apps/assembly-line/components/form-spinner/AssemblyLinePopupSpinner';\nimport { VideoResourcesValidationSchema } from 'apps/assembly-line/validation/VideoResourcesValidationSchema';\nimport { ContentRegionContext, FormResource, VideoResourcesFormData } from 'apps/assembly-line/views/edit-video/edit-resources/EditVideoResourcesView';\nimport { EditClipNav } from 'apps/clips/components/edit-clip-nav/EditClipNav';\nimport { ClipRequests } from 'apps/clips/flight-requests/CuratorClipRequests';\n\ninterface EditClipResourcesViewProps {\n clipId: string;\n}\n\nexport function EditClipResourcesView(props: EditClipResourcesViewProps): JSX.Element {\n const [ isSaving, setIsSaving ] = React.useState(false);\n\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const clip = Flight.useBasicFetch<Clip>(ClipRequests.clip(props.clipId));\n const contentRegions = Flight.useBasicFetch<ContentRegionCollection>(ContentRegionRequests.contentRegions());\n\n const fetchAsync = Flight.useGetFetchAsync();\n const invalidate = Flight.useGetInvalidate();\n const alerts = useAlerts();\n\n const resourceUploadService = useService<LearningResourceUploadService>(SharedServices.ResourceUpload);\n\n async function save(\n formData: VideoResourcesFormData,\n onDone: (options?: FormSubmissionOptions<VideoResourcesFormData>) => void\n ): Promise<void> {\n setIsSaving(true);\n\n const formResources = formData.resources.filter(r => r.typeId === MasterType.Resource) as FormResource[];\n const formLinks = formData.resources.filter(r => r.typeId === MasterType.Link) as Link[];\n\n try {\n await Promise.all([\n addNewResources(formResources),\n updateExistingResources(formResources),\n removeResources(formResources),\n addNewLinks(formLinks),\n updateExistingLinks(formLinks),\n removeLinks(formLinks)\n ]);\n \n invalidate([`clip:${props.clipId}`]);\n\n alerts.success('Successfully updated resources.');\n } catch {\n alerts.error('Something went wrong while updating resources. Please try again.');\n } finally {\n setIsSaving(false);\n onDone({ reset: false });\n }\n }\n\n async function addNewResources(formResources: FormResource[]): Promise<void[]> {\n const newResourcesRequests = formResources\n .filter(r => !r.id)\n .map(resource => {\n return fetchAsync<Resource>(ClipRequests.addResource(props.clipId, resource));\n });\n\n const newResources = await Promise.all(newResourcesRequests);\n\n const setContentRegionsRequests = newResources.map(resource => {\n const resourceWithContentRegions = {\n ...resource,\n contentRegions: formResources.find(r => r.url === resource.url).contentRegions\n };\n\n return fetchAsync<void>(ClipRequests.updateResourceContentRegions(resourceWithContentRegions));\n });\n\n return Promise.all(setContentRegionsRequests);\n }\n\n function updateExistingResources(formResources: FormResource[]): Promise<void[]> {\n const existingResources = clip.data.resources.data.filter(r => r.typeId === MasterType.Resource);\n\n const updatedResources = formResources.filter(r => {\n if (!r.id)\n return false;\n\n const oldVersion = existingResources.find(existing => {\n return existing.id.toString() === r.id.toString();\n });\n\n return !ObjectHelper.isEqual(ObjectHelper.omit(r, ['contentRegions']), ObjectHelper.omit(oldVersion, ['contentRegions']));\n });\n\n const updateRequests = updatedResources.map(resource => {\n return fetchAsync<void>(ClipRequests.updateResource(props.clipId, resource));\n });\n\n const resourcesWithUpdatedContentRegions = formResources.filter(formResource => {\n const currentResource = existingResources.find(r => formResource.url === r.url);\n\n if (!currentResource)\n return false;\n\n return !ObjectHelper.isEqual(formResource.contentRegions, currentResource.contentRegions?.data);\n });\n\n const updateContentRegionRequests = resourcesWithUpdatedContentRegions.map(resource => {\n return fetchAsync<void>(ClipRequests.updateResourceContentRegions(resource));\n });\n\n return Promise.all([ ...updateRequests, ...updateContentRegionRequests ]);\n }\n\n function removeResources(formResources: FormResource[]): Promise<void[]> {\n const existingResources = clip.data.resources.data.filter(r => r.typeId === MasterType.Resource);\n\n const removedResources = existingResources.filter(existing => {\n return !formResources.find(r => r.id?.toString() === existing.id.toString());\n });\n\n const requests = removedResources.map(resource => {\n return fetchAsync<void>(ClipRequests.removeResource(props.clipId, resource.id));\n });\n\n return Promise.all(requests);\n }\n\n function addNewLinks(formLinks: Link[]): Promise<void[]> {\n const newLinks = formLinks.filter(l => !l.id);\n\n const requests = newLinks.map(link => {\n return fetchAsync<void>(ClipRequests.addLink(props.clipId, link));\n });\n\n return Promise.all(requests);\n }\n\n function updateExistingLinks(formLinks: Link[]): Promise<void[]> {\n const existingLinks = clip.data.links.data.filter(r => r.typeId === MasterType.Link);\n\n const updatedLinks = formLinks.filter(l => {\n if (!l.id)\n return false;\n\n const oldVersion = existingLinks.find(existing => {\n return existing.id.toString() === l.id.toString();\n });\n\n return l.name !== oldVersion.name || l.url !== oldVersion.url;\n });\n\n const requests = updatedLinks.map(link => {\n return fetchAsync<void>(ClipRequests.updateLink(props.clipId, link));\n });\n\n return Promise.all(requests);\n }\n\n function removeLinks(formLinks: Link[]): Promise<void[]> {\n const existingLinks = clip.data.links.data.filter(r => r.typeId === MasterType.Link);\n\n const removedLinks = existingLinks.filter(existing => {\n return !formLinks.find(l => l.id?.toString() === existing.id.toString());\n });\n\n const requests = removedLinks.map(link => {\n return fetchAsync<void>(ClipRequests.removeLink(props.clipId, link.id));\n });\n\n return Promise.all(requests);\n }\n\n function onResourceFilesAdded(files: File[]): Promise<FileUpload[]> {\n return new Promise(resolve => {\n resourceUploadService.addFiles(files);\n\n const uploads: FileUpload[] = [];\n\n function onUploadComplete(upload: Core.Model) {\n uploads.push(upload.toJSON());\n\n if (uploads.length === files.length) {\n resolve(uploads);\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD).off(UploadEventNames.UPLOAD_COMPLETE, onUploadComplete);\n }\n }\n\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD).on(UploadEventNames.UPLOAD_COMPLETE, onUploadComplete);\n });\n }\n\n function isLoading(): boolean {\n return !clip.hasCompleted || !contentRegions.hasCompleted;\n }\n\n if (isLoading())\n return <AssemblyLinePopupSpinner />;\n\n const combinedResources = [\n ...clip.data.resources.data.map(r => ({ ...r, contentRegions: r.contentRegions.data })),\n ...clip.data.links.data\n ];\n\n return (\n <>\n {!!currentUser.data && (\n <EditClipNav\n clipId={props.clipId}\n activeAction={Actions.Clips.EDIT_CLIP_RESOURCES}\n currentUser={currentUser.data}\n />\n )}\n {!!clip.data && (\n <ContentRegionContext.Provider value={contentRegions.data.data}>\n <FormWrapper<VideoResourcesFormData>\n initialValues={{\n resources: combinedResources,\n newLink: { url: '', name: '' }\n }}\n validationSchema={VideoResourcesValidationSchema}\n onSubmit={save}\n enableReinitialize={false}\n >\n <Form>\n <ResourcesForm\n onResourceFilesAdded={onResourceFilesAdded}\n allowNoResources={false}\n isSaving={isSaving}\n hideCheckbox\n lockNav\n />\n <LinksForm />\n\n <div className='d-flex justify-content-end'>\n <FormButtons variant='dark' />\n </div>\n </Form>\n </FormWrapper>\n </ContentRegionContext.Provider>\n )}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,p as n,t as r,v as i}from"./rp704-Pm.chunk.js";import{c as a,t as o}from"./Crs6pJ2h.chunk.js";import{t as s}from"./C1kx8Ra5.chunk.js";import{t as c}from"./Di_u2uix.chunk.js";import{t as l}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as u}from"./CFoexGFe.chunk.js";import{n as d}from"./BVbA6fE6.chunk.js";import{a as f,c as p,n as m,t as h}from"./B_rQzhwB.chunk.js";import{t as g}from"./CDO6_xgK2.chunk.js";import{t as _}from"./cwPDEI372.chunk.js";import{t as ee}from"./eoeMwpAO2.chunk.js";import{g as v,x as y}from"./BhKv6dKl2.chunk.js";import{n as b}from"./CbiGs3Tn.chunk.js";import{n as x}from"./Bwe05p6O.chunk.js";import{t as te}from"./DpqbC5uX.chunk.js";import{r as S}from"./BRcHS92O.chunk.js";import{t as C}from"./CBX4hy8W.chunk.js";import{t as w}from"./DhW1fXNd.chunk.js";import{c as T,i as E}from"./DA0I3jYA.chunk.js";import{t as D}from"./dKyhMawf.chunk.js";import{t as O}from"./R3C4JT9X2.chunk.js";import{n as k}from"./C4Ey4nzb2.chunk.js";import{t as A}from"./DhqpGW1a.chunk.js";import{t as j}from"./CNfsk-2G.chunk.js";import{t as M}from"./BRtUKLfI.chunk.js";import{t as N}from"./X6xnBNx7.chunk.js";import{t as P}from"./Dsh2iIyb2.chunk.js";import{t as F}from"./BUtlulMl.chunk.js";import{n as I}from"./DdpEZzKh.chunk.js";import"./Dh3G-ann.chunk.js";e();var L=t(),R=e=>({application:l.SUBJECTS,action:c.Subjects.EDIT_AUDIENCE,args:[e.presentationId,e.masterId]}),z=e=>({application:l.SUBJECTS,action:c.Subjects.EDIT_LEVEL,args:[e.id]}),B=(e,t)=>{let n=e.backboneAudienceIds;return t.filter(e=>n.includes(e.id))};function V({showLevels:e}){return(0,L.jsx)(`thead`,{children:(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{children:`Audiences`}),!!e&&(0,L.jsx)(`th`,{children:`Mapped Backbone Audience(s)`})]})})}function H({audience:e,levels:t}){return(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:(0,L.jsx)(o,{appLink:R(e),children:e.name})}),(0,L.jsx)(`td`,{children:t.map(e=>(0,L.jsx)(o,{appLink:z(e),className:`me-2`,children:e.name},e.id))})]})}function U({audiences:e,levels:t}){return(0,L.jsxs)(x,{responsive:!0,bordered:!0,children:[(0,L.jsx)(V,{showLevels:!!e.length}),(0,L.jsx)(`tbody`,{children:e.length?e.map(e=>(0,L.jsx)(H,{audience:e,levels:B(e,t)},e.masterId)):(0,L.jsx)(`tr`,{children:(0,L.jsx)(`td`,{children:`This presentation has no audiences.`})})})]})}function W(e){let t=e.masterId===null||e.masterId===void 0,n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,name:`name`,id:`name`,value:n.values.name,placeholder:`Enter a name for this audience`,autoFocus:!0}),(0,L.jsx)(k,{label:`Mapped Level(s)`,as:`select`,name:`backboneAudienceIds`,id:`level-ids`,multiple:!0,size:e.levels.length,value:n.values.backboneAudienceIds,children:e.levels.map(e=>(0,L.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,L.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:t?`Create`:`Save`}),!t&&(0,L.jsx)(o,{className:`btn btn-danger`,appLink:e.deleteAppLink,children:`Delete`})]})]})}function G(e){return(0,L.jsx)(D,{initialValues:e.audience,validationSchema:p,onSubmit:e.saveAudience,children:(0,L.jsx)(W,{masterId:e.audience&&e.audience.masterId,presentationId:e.presentationId,levels:e.levels,deleteAppLink:e.deleteAppLink})})}function ne({objectAudiences:e,presentationAudiences:t}){return e.filter(e=>t.some(t=>t.masterId===e.masterId))}function K({presentationAudiences:e,objectLevels:t,objectAudiences:n}){if(!e||!t||!n)return[];let r=t.map(e=>e.id);return e.filter(e=>te.intersection(e.backboneAudienceIds,r).length||n.some(t=>t.masterId===e.masterId))}function q(e){let t=e.objectLevels&&e.presentations&&e.levels&&e.currentPresentation,n=t&&e.presentationAudiences,r=d.singularizeMemberType(e.memberType),i=K(e);return t?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`border-bottom pb-3 mb-3`,children:[(0,L.jsx)(`h6`,{children:`Backbone Audiences`}),(0,L.jsx)(`p`,{children:`Select which backbone audiences this ${r} is mapped to.`}),(0,L.jsx)(`p`,{children:`To see how backbone audiences correspond to audiences, scroll down to the audience-backbone audience mappings table.`}),(0,L.jsx)(ce,{initialValues:{backboneAudienceIds:e.objectLevels.map(e=>e.id)},saveLevels:e.saveLevels,levels:e.levels,memberType:e.memberType})]}),(0,L.jsx)(`h6`,{children:`Audiences`}),(0,L.jsx)(`p`,{children:`Select a presentation to view its audiences and map them to this ${r}.`}),(0,L.jsx)(`div`,{className:`w-50 pb-3`,children:(0,L.jsx)(N,{presentations:e.presentations,currentPresentationId:e.currentPresentation.id,setCurrentPresentation:e.setCurrentPresentation})}),n?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{children:`Audience to backbone audience mappings for this presentation are displayed below.`}),(0,L.jsx)(U,{levels:e.levels,audiences:e.presentationAudiences}),(0,L.jsx)(`p`,{children:`Only the audiences which are mapped to a backbone audience that this ${r} is mapped to are displayed below.`}),!!i.length&&(0,L.jsx)(Y,{initialValues:{audienceIds:ne(e).map(e=>e.masterId)},saveAudiences:e.saveAudiences,audiences:i})]}):(0,L.jsx)(`div`,{className:`text-center p-5`,children:(0,L.jsx)(b,{as:`div`,animation:`border`,role:`status`})})]}):(0,L.jsx)(`div`,{className:`text-center pt-5`,children:(0,L.jsx)(b,{as:`div`,animation:`border`,role:`status`})})}function J(e){let t=T(),n=O(t);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Audience(s)`,as:`select`,name:`audienceIds`,id:`audience-ids`,multiple:!0,size:e.audiences.length,value:t.values.audienceIds,children:e.audiences.map(e=>(0,L.jsx)(`option`,{value:e.masterId,children:e.name},e.masterId))}),(0,L.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(w,{showSpinner:t.isSubmitting,type:`submit`,disabled:!n,children:`Save Audiences`})})]})}function Y(e){return(0,L.jsx)(D,{initialValues:e.initialValues,onSubmit:({audienceIds:t},n)=>e.saveAudiences(t,n),enableReinitialize:!0,children:(0,L.jsx)(J,{audiences:e.audiences})})}var X=e=>t=>{if(!e)return t.appLink.action===c.Subjects.EDIT_AUDIENCE;switch(e){case u.Playlists:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_PLAYLISTS;case u.Series:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_SERIES;case u.Videos:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_VIDEOS;case u.Clips:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_CLIPS;case u.Interactives:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_INTERACTIVES}};function Z(e){let{presentation:t,audienceId:n,memberType:r,presentationType:i}=e;return t?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`h6`,{children:`Presentation: ${M.formatPresentationName(t)}`}),(0,L.jsx)(`div`,{className:`py-2`,children:(0,L.jsx)(v,{tabs:m.getEditAudienceTabs(t.id,n,i),isItemActive:X(r)})})]}):(0,L.jsx)(L.Fragment,{})}function re(e){let{item:t,getItemAppLink:n,actions:r}=e;return(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:(0,L.jsx)(o,{appLink:n(t),children:t.name})}),r&&(0,L.jsx)(`td`,{children:(0,L.jsx)(`span`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(A,{actions:r})})})]})}function ie(e){let{items:t,memberType:n,getItemAppLink:i,getActions:o}=e;return t.length?(0,L.jsxs)(x,{responsive:!0,children:[(0,L.jsx)(`thead`,{children:(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{children:`${r.toTitleCase(h.singularizeMemberType(n))} Name`}),a.isFunction(o)&&(0,L.jsx)(`th`,{})]})}),(0,L.jsx)(`tbody`,{children:t.map(e=>(0,L.jsx)(re,{item:e,getItemAppLink:i,actions:a.isFunction(o)&&o(e)},e.id))})]}):(0,L.jsx)(`div`,{className:`py-5`,children:`No ${n} in this audience.`})}function ae(e){let t=e.id===null||e.id===void 0,n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,type:`text`,name:`name`,id:`name`,value:n.values.name,placeholder:`Enter a name for this level`,autoFocus:!0}),(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:t?`Create`:`Save`})]})}function oe(e){return(0,L.jsx)(D,{initialValues:e.level,validationSchema:f,onSubmit:e.saveLevel,children:(0,L.jsx)(ae,{id:e.level&&e.level.id})})}function se(e){let t=d.singularizeMemberType(e.memberType),n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Backbone Audience(s)`,as:`select`,name:`backboneAudienceIds`,id:`level-ids`,multiple:!0,size:e.levels.length,value:n.values.backboneAudienceIds,children:e.levels.map(e=>(0,L.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,L.jsxs)(`p`,{children:[(0,L.jsx)(`strong`,{children:`Note:`}),` When removing a ${t} from a backbone audience, that backbone audience's mapped audiences `,(0,L.jsx)(`strong`,{children:`will not`}),` be automatically removed from.`]}),(0,L.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:`Save Backbone Audience`})})]})}function ce(e){return(0,L.jsx)(D,{initialValues:e.initialValues,onSubmit:({backboneAudienceIds:t},n)=>e.saveLevels(t,!1,n),children:(0,L.jsx)(se,{levels:e.levels,memberType:e.memberType})})}var le=e=>t=>t.appLink.action===e;function ue({levelId:e,activeAction:t,presentationId:n}){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ee,{variant:`danger`,children:`Warning: You are editing the backbone audiences.`}),(0,L.jsx)(`div`,{className:`py-2`,children:(0,L.jsx)(v,{tabs:m.getEditLevelTabs(e,n),isItemActive:le(t)})})]})}function Q(e){let{member:{id:t,name:r,audiences:s=[]},getMemberAppLink:c,onToggleAudience:l,actions:u}=e,d=a.isFunction(c)&&c(t);return s.length&&!a.isFunction(l)&&i.throw(new n(`onToggleAudience must be passed to LevelMemberItem`)),(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:d?(0,L.jsx)(o,{appLink:c(t),children:r}):r}),!!s.length&&s.map(e=>(0,L.jsx)(`td`,{children:(0,L.jsx)(y,{selected:e.selected,onToggle:n=>l(e.id,n,t)})},e.id)),u&&(0,L.jsx)(`td`,{children:(0,L.jsx)(`span`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(A,{actions:u})})})]})}var de=(e,t)=>t?e.name:`Audience: ${e.name}`;function $(e){return(0,L.jsx)(L.Fragment,{children:e.audiences.map(t=>(0,L.jsxs)(`th`,{children:[(0,L.jsx)(`span`,{className:`d-inline-block`,children:(0,L.jsx)(y,{selected:e.getIsAudienceSelected(t),onToggle:n=>e.onToggleAudience(t.masterId,n)})}),(0,L.jsx)(o,{appLink:e.getAudienceAppLink(t.masterId),children:de(t,e.showAudienceSubHeader)})]},t.masterId))})}function fe(e){let{memberType:t,hasActions:n,audiences:i,...a}=e,o=`${r.toTitleCase(h.singularizeMemberType(t))} Name`,s=!!i&&!!i.length,c=s&&i.length>1,l=s?2:1,u={audiences:i,showAudienceSubHeader:c,...a};return(0,L.jsxs)(`thead`,{children:[(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{rowSpan:l,children:o}),s&&(c?(0,L.jsx)(`th`,{colSpan:i.length,className:`text-center`,children:`Audiences`}):(0,L.jsx)($,{...u})),n&&(0,L.jsx)(`th`,{rowSpan:l})]}),s&&c&&(0,L.jsx)(`tr`,{children:(0,L.jsx)($,{...u})})]})}function pe(e,t){return n=>{let r=n[e],i=C.length(r);return!!i&&i===t.length}}function me(e){let{members:t,memberType:n,getActions:r,audiences:i,getAudienceAppLink:o,onToggleAudience:s,...c}=e;if(!t.length)return(0,L.jsx)(`div`,{className:`py-5`,children:`No ${n} in this level.`});let l=a.isFunction(r);return(0,L.jsxs)(x,{responsive:!0,bordered:!0,children:[(0,L.jsx)(fe,{memberType:n,audiences:i,getAudienceAppLink:o,getIsAudienceSelected:pe(n,t),onToggleAudience:s,hasActions:l}),(0,L.jsx)(`tbody`,{children:t.map((e,t)=>(0,L.jsx)(Q,{member:e,actions:l&&r(e.id),onToggleAudience:s,...c},t))})]})}function he(e){let t=T(),n=!e.isNew&&!e.isStreamableLearning&&!!e.allPresentationThemes?.length;function r(e,n){let r=t.values.themes;e?t.setFieldValue(`themes`,[...r,n]):(t.setFieldValue(`themes`,r.filter(e=>e!==n)),t.values.defaultThemeSystemName===n&&t.setFieldValue(`defaultThemeSystemName`,null))}return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,type:`text`,name:`name`,id:`name`,value:t.values.name,placeholder:`Enter a name for this presentation`,autoFocus:!0}),(0,L.jsx)(k,{label:`Description`,as:`textarea`,name:`description`,id:`description`,value:t.values.description,placeholder:`Describe this presentation here`}),(0,L.jsx)(k,{label:`Slug`,type:`text`,name:`slug`,id:`slug`,value:t.values.slug,disabled:!e.isNew,infoTooltip:`Presentation slugs are used in customer-facing URLs and cannot be modified after being created.`,placeholder:`Enter a slug for this presentation. This must be unique and cannot be updated.`}),(0,L.jsx)(k,{as:`select`,label:`Status`,name:`status`,id:`status`,value:t.values.status,disabled:e.isNew,children:s.getEnumKeys(g).map(e=>(0,L.jsx)(`option`,{value:g[e],children:e},e))}),(0,L.jsx)(k,{as:`select`,label:`Type`,name:`type`,id:`type`,value:t.values.type,children:s.getEnumKeys(_).map(e=>(0,L.jsx)(`option`,{value:_[e],children:e},e))}),(0,L.jsx)(k,{as:`select`,label:`Learning Level`,name:`learningLevel`,id:`learningLevel`,value:t.values.learningLevel,children:s.getEnumKeys(I).map(e=>(0,L.jsx)(`option`,{value:I[e],children:e},e))}),e.contentRegions&&(0,L.jsx)(k,{label:`Content Regions`,name:`contentRegions`,id:`contentRegions`,children:()=>(0,L.jsx)(`div`,{className:`w-50`,children:(0,L.jsx)(P,{type:`radio`,id:`content-regions`,options:e.contentRegions,selected:e.contentRegions.find(e=>e.systemName===t.values.contentRegions?.[0])||null,onUpdate:e=>t.setFieldValue(`contentRegions`,[e.systemName])})})}),n&&(0,L.jsx)(k,{label:`Themes`,name:`themes`,id:`themes`,infoText:`Select themes that available for the current presentation and its classifications`,children:()=>(0,L.jsx)(`div`,{children:e.allPresentationThemes.map(e=>(0,L.jsxs)(`div`,{className:`form-check`,children:[(0,L.jsx)(`input`,{className:`form-check-input`,type:`checkbox`,id:`theme-${e.systemName}`,checked:t.values.themes.includes(e.systemName),onChange:t=>r(t.target.checked,e.systemName)}),(0,L.jsx)(`label`,{className:`form-check-label`,htmlFor:`theme-${e.systemName}`,children:e.name})]},e.systemName))})}),n&&(0,L.jsxs)(k,{as:`select`,label:`Default Theme`,name:`defaultThemeSystemName`,id:`defaultThemeSystemName`,value:t.values.defaultThemeSystemName??``,infoText:`Sets the default theme for the current presentation.`,children:[(0,L.jsx)(`option`,{value:``,children:`None`}),t.values.themes.map(t=>{let n=e.allPresentationThemes.find(e=>e.systemName===t);return n?(0,L.jsx)(`option`,{value:n.systemName,children:n.name},n.systemName):null})]}),(0,L.jsx)(j,{imageType:S.Covers,fieldName:`cover`,uploadAppLink:e.imageAppLink}),(0,L.jsx)(`div`,{className:`btn-container d-flex justify-content-end`,children:(0,L.jsx)(F,{isNew:e.isNew})})]})}export{ie as a,q as c,oe as i,G as l,me as n,Z as o,ue as r,Y as s,he as t};
2
- //# sourceMappingURL=_wZpe632.chunk.js.map
1
+ import{a as e,i as t,p as n,t as r,v as i}from"./rp704-Pm.chunk.js";import{c as a,t as o}from"./Crs6pJ2h.chunk.js";import{t as s}from"./C1kx8Ra5.chunk.js";import{t as c}from"./Di_u2uix.chunk.js";import{t as l}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as u}from"./CFoexGFe.chunk.js";import{n as d}from"./BVbA6fE6.chunk.js";import{a as f,c as p,n as m,t as h}from"./B_rQzhwB.chunk.js";import{t as g}from"./CDO6_xgK2.chunk.js";import{t as _}from"./cwPDEI372.chunk.js";import{t as ee}from"./eoeMwpAO2.chunk.js";import{g as v,x as y}from"./GpDEun8c2.chunk.js";import{n as b}from"./CbiGs3Tn.chunk.js";import{n as x}from"./Bwe05p6O.chunk.js";import{t as te}from"./DpqbC5uX.chunk.js";import{r as S}from"./BRcHS92O.chunk.js";import{t as C}from"./CBX4hy8W.chunk.js";import{t as w}from"./DhW1fXNd.chunk.js";import{c as T,i as E}from"./DA0I3jYA.chunk.js";import{t as D}from"./dKyhMawf.chunk.js";import{t as O}from"./R3C4JT9X2.chunk.js";import{n as k}from"./C4Ey4nzb2.chunk.js";import{t as A}from"./DhqpGW1a.chunk.js";import{t as j}from"./CNfsk-2G.chunk.js";import{t as M}from"./BRtUKLfI.chunk.js";import{t as N}from"./X6xnBNx7.chunk.js";import{t as P}from"./Dsh2iIyb2.chunk.js";import{t as F}from"./BUtlulMl.chunk.js";import{n as I}from"./DdpEZzKh.chunk.js";import"./Dt2TCPUI.chunk.js";e();var L=t(),R=e=>({application:l.SUBJECTS,action:c.Subjects.EDIT_AUDIENCE,args:[e.presentationId,e.masterId]}),z=e=>({application:l.SUBJECTS,action:c.Subjects.EDIT_LEVEL,args:[e.id]}),B=(e,t)=>{let n=e.backboneAudienceIds;return t.filter(e=>n.includes(e.id))};function V({showLevels:e}){return(0,L.jsx)(`thead`,{children:(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{children:`Audiences`}),!!e&&(0,L.jsx)(`th`,{children:`Mapped Backbone Audience(s)`})]})})}function H({audience:e,levels:t}){return(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:(0,L.jsx)(o,{appLink:R(e),children:e.name})}),(0,L.jsx)(`td`,{children:t.map(e=>(0,L.jsx)(o,{appLink:z(e),className:`me-2`,children:e.name},e.id))})]})}function U({audiences:e,levels:t}){return(0,L.jsxs)(x,{responsive:!0,bordered:!0,children:[(0,L.jsx)(V,{showLevels:!!e.length}),(0,L.jsx)(`tbody`,{children:e.length?e.map(e=>(0,L.jsx)(H,{audience:e,levels:B(e,t)},e.masterId)):(0,L.jsx)(`tr`,{children:(0,L.jsx)(`td`,{children:`This presentation has no audiences.`})})})]})}function W(e){let t=e.masterId===null||e.masterId===void 0,n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,name:`name`,id:`name`,value:n.values.name,placeholder:`Enter a name for this audience`,autoFocus:!0}),(0,L.jsx)(k,{label:`Mapped Level(s)`,as:`select`,name:`backboneAudienceIds`,id:`level-ids`,multiple:!0,size:e.levels.length,value:n.values.backboneAudienceIds,children:e.levels.map(e=>(0,L.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,L.jsxs)(`div`,{className:`d-flex justify-content-between`,children:[(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:t?`Create`:`Save`}),!t&&(0,L.jsx)(o,{className:`btn btn-danger`,appLink:e.deleteAppLink,children:`Delete`})]})]})}function G(e){return(0,L.jsx)(D,{initialValues:e.audience,validationSchema:p,onSubmit:e.saveAudience,children:(0,L.jsx)(W,{masterId:e.audience&&e.audience.masterId,presentationId:e.presentationId,levels:e.levels,deleteAppLink:e.deleteAppLink})})}function ne({objectAudiences:e,presentationAudiences:t}){return e.filter(e=>t.some(t=>t.masterId===e.masterId))}function K({presentationAudiences:e,objectLevels:t,objectAudiences:n}){if(!e||!t||!n)return[];let r=t.map(e=>e.id);return e.filter(e=>te.intersection(e.backboneAudienceIds,r).length||n.some(t=>t.masterId===e.masterId))}function q(e){let t=e.objectLevels&&e.presentations&&e.levels&&e.currentPresentation,n=t&&e.presentationAudiences,r=d.singularizeMemberType(e.memberType),i=K(e);return t?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`border-bottom pb-3 mb-3`,children:[(0,L.jsx)(`h6`,{children:`Backbone Audiences`}),(0,L.jsx)(`p`,{children:`Select which backbone audiences this ${r} is mapped to.`}),(0,L.jsx)(`p`,{children:`To see how backbone audiences correspond to audiences, scroll down to the audience-backbone audience mappings table.`}),(0,L.jsx)(ce,{initialValues:{backboneAudienceIds:e.objectLevels.map(e=>e.id)},saveLevels:e.saveLevels,levels:e.levels,memberType:e.memberType})]}),(0,L.jsx)(`h6`,{children:`Audiences`}),(0,L.jsx)(`p`,{children:`Select a presentation to view its audiences and map them to this ${r}.`}),(0,L.jsx)(`div`,{className:`w-50 pb-3`,children:(0,L.jsx)(N,{presentations:e.presentations,currentPresentationId:e.currentPresentation.id,setCurrentPresentation:e.setCurrentPresentation})}),n?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{children:`Audience to backbone audience mappings for this presentation are displayed below.`}),(0,L.jsx)(U,{levels:e.levels,audiences:e.presentationAudiences}),(0,L.jsx)(`p`,{children:`Only the audiences which are mapped to a backbone audience that this ${r} is mapped to are displayed below.`}),!!i.length&&(0,L.jsx)(Y,{initialValues:{audienceIds:ne(e).map(e=>e.masterId)},saveAudiences:e.saveAudiences,audiences:i})]}):(0,L.jsx)(`div`,{className:`text-center p-5`,children:(0,L.jsx)(b,{as:`div`,animation:`border`,role:`status`})})]}):(0,L.jsx)(`div`,{className:`text-center pt-5`,children:(0,L.jsx)(b,{as:`div`,animation:`border`,role:`status`})})}function J(e){let t=T(),n=O(t);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Audience(s)`,as:`select`,name:`audienceIds`,id:`audience-ids`,multiple:!0,size:e.audiences.length,value:t.values.audienceIds,children:e.audiences.map(e=>(0,L.jsx)(`option`,{value:e.masterId,children:e.name},e.masterId))}),(0,L.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(w,{showSpinner:t.isSubmitting,type:`submit`,disabled:!n,children:`Save Audiences`})})]})}function Y(e){return(0,L.jsx)(D,{initialValues:e.initialValues,onSubmit:({audienceIds:t},n)=>e.saveAudiences(t,n),enableReinitialize:!0,children:(0,L.jsx)(J,{audiences:e.audiences})})}var X=e=>t=>{if(!e)return t.appLink.action===c.Subjects.EDIT_AUDIENCE;switch(e){case u.Playlists:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_PLAYLISTS;case u.Series:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_SERIES;case u.Videos:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_VIDEOS;case u.Clips:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_CLIPS;case u.Interactives:return t.appLink.action===c.Subjects.EDIT_AUDIENCE_INTERACTIVES}};function Z(e){let{presentation:t,audienceId:n,memberType:r,presentationType:i}=e;return t?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`h6`,{children:`Presentation: ${M.formatPresentationName(t)}`}),(0,L.jsx)(`div`,{className:`py-2`,children:(0,L.jsx)(v,{tabs:m.getEditAudienceTabs(t.id,n,i),isItemActive:X(r)})})]}):(0,L.jsx)(L.Fragment,{})}function re(e){let{item:t,getItemAppLink:n,actions:r}=e;return(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:(0,L.jsx)(o,{appLink:n(t),children:t.name})}),r&&(0,L.jsx)(`td`,{children:(0,L.jsx)(`span`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(A,{actions:r})})})]})}function ie(e){let{items:t,memberType:n,getItemAppLink:i,getActions:o}=e;return t.length?(0,L.jsxs)(x,{responsive:!0,children:[(0,L.jsx)(`thead`,{children:(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{children:`${r.toTitleCase(h.singularizeMemberType(n))} Name`}),a.isFunction(o)&&(0,L.jsx)(`th`,{})]})}),(0,L.jsx)(`tbody`,{children:t.map(e=>(0,L.jsx)(re,{item:e,getItemAppLink:i,actions:a.isFunction(o)&&o(e)},e.id))})]}):(0,L.jsx)(`div`,{className:`py-5`,children:`No ${n} in this audience.`})}function ae(e){let t=e.id===null||e.id===void 0,n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,type:`text`,name:`name`,id:`name`,value:n.values.name,placeholder:`Enter a name for this level`,autoFocus:!0}),(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:t?`Create`:`Save`})]})}function oe(e){return(0,L.jsx)(D,{initialValues:e.level,validationSchema:f,onSubmit:e.saveLevel,children:(0,L.jsx)(ae,{id:e.level&&e.level.id})})}function se(e){let t=d.singularizeMemberType(e.memberType),n=T(),r=O(n);return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Backbone Audience(s)`,as:`select`,name:`backboneAudienceIds`,id:`level-ids`,multiple:!0,size:e.levels.length,value:n.values.backboneAudienceIds,children:e.levels.map(e=>(0,L.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,L.jsxs)(`p`,{children:[(0,L.jsx)(`strong`,{children:`Note:`}),` When removing a ${t} from a backbone audience, that backbone audience's mapped audiences `,(0,L.jsx)(`strong`,{children:`will not`}),` be automatically removed from.`]}),(0,L.jsx)(`div`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(w,{showSpinner:n.isSubmitting,type:`submit`,disabled:!r,children:`Save Backbone Audience`})})]})}function ce(e){return(0,L.jsx)(D,{initialValues:e.initialValues,onSubmit:({backboneAudienceIds:t},n)=>e.saveLevels(t,!1,n),children:(0,L.jsx)(se,{levels:e.levels,memberType:e.memberType})})}var le=e=>t=>t.appLink.action===e;function ue({levelId:e,activeAction:t,presentationId:n}){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ee,{variant:`danger`,children:`Warning: You are editing the backbone audiences.`}),(0,L.jsx)(`div`,{className:`py-2`,children:(0,L.jsx)(v,{tabs:m.getEditLevelTabs(e,n),isItemActive:le(t)})})]})}function Q(e){let{member:{id:t,name:r,audiences:s=[]},getMemberAppLink:c,onToggleAudience:l,actions:u}=e,d=a.isFunction(c)&&c(t);return s.length&&!a.isFunction(l)&&i.throw(new n(`onToggleAudience must be passed to LevelMemberItem`)),(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`td`,{children:d?(0,L.jsx)(o,{appLink:c(t),children:r}):r}),!!s.length&&s.map(e=>(0,L.jsx)(`td`,{children:(0,L.jsx)(y,{selected:e.selected,onToggle:n=>l(e.id,n,t)})},e.id)),u&&(0,L.jsx)(`td`,{children:(0,L.jsx)(`span`,{className:`d-flex justify-content-end`,children:(0,L.jsx)(A,{actions:u})})})]})}var de=(e,t)=>t?e.name:`Audience: ${e.name}`;function $(e){return(0,L.jsx)(L.Fragment,{children:e.audiences.map(t=>(0,L.jsxs)(`th`,{children:[(0,L.jsx)(`span`,{className:`d-inline-block`,children:(0,L.jsx)(y,{selected:e.getIsAudienceSelected(t),onToggle:n=>e.onToggleAudience(t.masterId,n)})}),(0,L.jsx)(o,{appLink:e.getAudienceAppLink(t.masterId),children:de(t,e.showAudienceSubHeader)})]},t.masterId))})}function fe(e){let{memberType:t,hasActions:n,audiences:i,...a}=e,o=`${r.toTitleCase(h.singularizeMemberType(t))} Name`,s=!!i&&!!i.length,c=s&&i.length>1,l=s?2:1,u={audiences:i,showAudienceSubHeader:c,...a};return(0,L.jsxs)(`thead`,{children:[(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{rowSpan:l,children:o}),s&&(c?(0,L.jsx)(`th`,{colSpan:i.length,className:`text-center`,children:`Audiences`}):(0,L.jsx)($,{...u})),n&&(0,L.jsx)(`th`,{rowSpan:l})]}),s&&c&&(0,L.jsx)(`tr`,{children:(0,L.jsx)($,{...u})})]})}function pe(e,t){return n=>{let r=n[e],i=C.length(r);return!!i&&i===t.length}}function me(e){let{members:t,memberType:n,getActions:r,audiences:i,getAudienceAppLink:o,onToggleAudience:s,...c}=e;if(!t.length)return(0,L.jsx)(`div`,{className:`py-5`,children:`No ${n} in this level.`});let l=a.isFunction(r);return(0,L.jsxs)(x,{responsive:!0,bordered:!0,children:[(0,L.jsx)(fe,{memberType:n,audiences:i,getAudienceAppLink:o,getIsAudienceSelected:pe(n,t),onToggleAudience:s,hasActions:l}),(0,L.jsx)(`tbody`,{children:t.map((e,t)=>(0,L.jsx)(Q,{member:e,actions:l&&r(e.id),onToggleAudience:s,...c},t))})]})}function he(e){let t=T(),n=!e.isNew&&!e.isStreamableLearning&&!!e.allPresentationThemes?.length;function r(e,n){let r=t.values.themes;e?t.setFieldValue(`themes`,[...r,n]):(t.setFieldValue(`themes`,r.filter(e=>e!==n)),t.values.defaultThemeSystemName===n&&t.setFieldValue(`defaultThemeSystemName`,null))}return(0,L.jsxs)(E,{children:[(0,L.jsx)(k,{label:`Name`,type:`text`,name:`name`,id:`name`,value:t.values.name,placeholder:`Enter a name for this presentation`,autoFocus:!0}),(0,L.jsx)(k,{label:`Description`,as:`textarea`,name:`description`,id:`description`,value:t.values.description,placeholder:`Describe this presentation here`}),(0,L.jsx)(k,{label:`Slug`,type:`text`,name:`slug`,id:`slug`,value:t.values.slug,disabled:!e.isNew,infoTooltip:`Presentation slugs are used in customer-facing URLs and cannot be modified after being created.`,placeholder:`Enter a slug for this presentation. This must be unique and cannot be updated.`}),(0,L.jsx)(k,{as:`select`,label:`Status`,name:`status`,id:`status`,value:t.values.status,disabled:e.isNew,children:s.getEnumKeys(g).map(e=>(0,L.jsx)(`option`,{value:g[e],children:e},e))}),(0,L.jsx)(k,{as:`select`,label:`Type`,name:`type`,id:`type`,value:t.values.type,children:s.getEnumKeys(_).map(e=>(0,L.jsx)(`option`,{value:_[e],children:e},e))}),(0,L.jsx)(k,{as:`select`,label:`Learning Level`,name:`learningLevel`,id:`learningLevel`,value:t.values.learningLevel,children:s.getEnumKeys(I).map(e=>(0,L.jsx)(`option`,{value:I[e],children:e},e))}),e.contentRegions&&(0,L.jsx)(k,{label:`Content Regions`,name:`contentRegions`,id:`contentRegions`,children:()=>(0,L.jsx)(`div`,{className:`w-50`,children:(0,L.jsx)(P,{type:`radio`,id:`content-regions`,options:e.contentRegions,selected:e.contentRegions.find(e=>e.systemName===t.values.contentRegions?.[0])||null,onUpdate:e=>t.setFieldValue(`contentRegions`,[e.systemName])})})}),n&&(0,L.jsx)(k,{label:`Themes`,name:`themes`,id:`themes`,infoText:`Select themes that available for the current presentation and its classifications`,children:()=>(0,L.jsx)(`div`,{children:e.allPresentationThemes.map(e=>(0,L.jsxs)(`div`,{className:`form-check`,children:[(0,L.jsx)(`input`,{className:`form-check-input`,type:`checkbox`,id:`theme-${e.systemName}`,checked:t.values.themes.includes(e.systemName),onChange:t=>r(t.target.checked,e.systemName)}),(0,L.jsx)(`label`,{className:`form-check-label`,htmlFor:`theme-${e.systemName}`,children:e.name})]},e.systemName))})}),n&&(0,L.jsxs)(k,{as:`select`,label:`Default Theme`,name:`defaultThemeSystemName`,id:`defaultThemeSystemName`,value:t.values.defaultThemeSystemName??``,infoText:`Sets the default theme for the current presentation.`,children:[(0,L.jsx)(`option`,{value:``,children:`None`}),t.values.themes.map(t=>{let n=e.allPresentationThemes.find(e=>e.systemName===t);return n?(0,L.jsx)(`option`,{value:n.systemName,children:n.name},n.systemName):null})]}),(0,L.jsx)(j,{imageType:S.Covers,fieldName:`cover`,uploadAppLink:e.imageAppLink}),(0,L.jsx)(`div`,{className:`btn-container d-flex justify-content-end`,children:(0,L.jsx)(F,{isNew:e.isNew})})]})}export{ie as a,q as c,oe as i,G as l,me as n,Z as o,ue as r,Y as s,he as t};
2
+ //# sourceMappingURL=BFPSIGJg.chunk.js.map