@clickview/curator 1.100.0-rc.1 → 1.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/.vite/manifest.json +1779 -1779
  2. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js → -6zuD8lo.chunk.js} +2 -2
  3. package/dist/Assets/js/dist/scripts/{CYhNyVj0.chunk.js.map → -6zuD8lo.chunk.js.map} +1 -1
  4. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js → 0A42jU2r.chunk.js} +2 -2
  5. package/dist/Assets/js/dist/scripts/{D28bEsam.chunk.js.map → 0A42jU2r.chunk.js.map} +1 -1
  6. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js → 0ogjGD4J2.chunk.js} +2 -2
  7. package/dist/Assets/js/dist/scripts/{oYHUjbwb2.chunk.js.map → 0ogjGD4J2.chunk.js.map} +1 -1
  8. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js → 2aCj1HHJ2.chunk.js} +2 -2
  9. package/dist/Assets/js/dist/scripts/{PeuFojmJ2.chunk.js.map → 2aCj1HHJ2.chunk.js.map} +1 -1
  10. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js → 2zbtFQka.chunk.js} +2 -2
  11. package/dist/Assets/js/dist/scripts/{q7pjZoNd.chunk.js.map → 2zbtFQka.chunk.js.map} +1 -1
  12. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js → 3IQ_8AZP2.chunk.js} +2 -2
  13. package/dist/Assets/js/dist/scripts/{0S5J0xX22.chunk.js.map → 3IQ_8AZP2.chunk.js.map} +1 -1
  14. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js → 3eMwLZ5D.chunk.js} +2 -2
  15. package/dist/Assets/js/dist/scripts/{DvP7S5Uq.chunk.js.map → 3eMwLZ5D.chunk.js.map} +1 -1
  16. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js → 4Tx2JSvk2.chunk.js} +2 -2
  17. package/dist/Assets/js/dist/scripts/{y1L3G7XA2.chunk.js.map → 4Tx2JSvk2.chunk.js.map} +1 -1
  18. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js → 5uVJfyDx2.chunk.js} +2 -2
  19. package/dist/Assets/js/dist/scripts/{BbR7yW4A2.chunk.js.map → 5uVJfyDx2.chunk.js.map} +1 -1
  20. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js → 6l2s6d3Q.chunk.js} +2 -2
  21. package/dist/Assets/js/dist/scripts/{B52yjTo5.chunk.js.map → 6l2s6d3Q.chunk.js.map} +1 -1
  22. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js → 8RAh0VA72.chunk.js} +2 -2
  23. package/dist/Assets/js/dist/scripts/{DezIbRcB2.chunk.js.map → 8RAh0VA72.chunk.js.map} +1 -1
  24. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js → 9nk_zFtT.chunk.js} +2 -2
  25. package/dist/Assets/js/dist/scripts/{CixcMUHF.chunk.js.map → 9nk_zFtT.chunk.js.map} +1 -1
  26. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js → Ae4rMqFm2.chunk.js} +2 -2
  27. package/dist/Assets/js/dist/scripts/{Bk9vy70e2.chunk.js.map → Ae4rMqFm2.chunk.js.map} +1 -1
  28. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js → B0mCquXn.chunk.js} +2 -2
  29. package/dist/Assets/js/dist/scripts/{Bzh_AwaG.chunk.js.map → B0mCquXn.chunk.js.map} +1 -1
  30. package/dist/Assets/js/dist/scripts/B1pBJzjh.chunk.js +1 -0
  31. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js → B6IinlWw2.chunk.js} +2 -2
  32. package/dist/Assets/js/dist/scripts/{BswFY0mR2.chunk.js.map → B6IinlWw2.chunk.js.map} +1 -1
  33. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js → B6NMAAhW.chunk.js} +2 -2
  34. package/dist/Assets/js/dist/scripts/{ClpIRgLR.chunk.js.map → B6NMAAhW.chunk.js.map} +1 -1
  35. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js → B8RZKQTs2.chunk.js} +2 -2
  36. package/dist/Assets/js/dist/scripts/{BCMXlwdC2.chunk.js.map → B8RZKQTs2.chunk.js.map} +1 -1
  37. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js → B9R92bqj.chunk.js} +2 -2
  38. package/dist/Assets/js/dist/scripts/{CymdouaN.chunk.js.map → B9R92bqj.chunk.js.map} +1 -1
  39. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js → BAFYJZ4c.chunk.js} +2 -2
  40. package/dist/Assets/js/dist/scripts/{CtVYDK7g.chunk.js.map → BAFYJZ4c.chunk.js.map} +1 -1
  41. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js → BFPSIGJg.chunk.js} +2 -2
  42. package/dist/Assets/js/dist/scripts/{_wZpe632.chunk.js.map → BFPSIGJg.chunk.js.map} +1 -1
  43. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js → BGiLDtc92.chunk.js} +2 -2
  44. package/dist/Assets/js/dist/scripts/{BNHULwJy2.chunk.js.map → BGiLDtc92.chunk.js.map} +1 -1
  45. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js → BH6LIpwu2.chunk.js} +2 -2
  46. package/dist/Assets/js/dist/scripts/{DA9R8atp2.chunk.js.map → BH6LIpwu2.chunk.js.map} +1 -1
  47. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js → BMj3pXcm.chunk.js} +2 -2
  48. package/dist/Assets/js/dist/scripts/{DbrVjVdn.chunk.js.map → BMj3pXcm.chunk.js.map} +1 -1
  49. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js → BQTfNBFU.chunk.js} +2 -2
  50. package/dist/Assets/js/dist/scripts/{CDvLjxwS.chunk.js.map → BQTfNBFU.chunk.js.map} +1 -1
  51. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js → BT-jeT7C.chunk.js} +2 -2
  52. package/dist/Assets/js/dist/scripts/{mStmtFRo.chunk.js.map → BT-jeT7C.chunk.js.map} +1 -1
  53. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js → BUD4osIg2.chunk.js} +2 -2
  54. package/dist/Assets/js/dist/scripts/{FlF2O19P2.chunk.js.map → BUD4osIg2.chunk.js.map} +1 -1
  55. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js → BVoG71Kc.chunk.js} +2 -2
  56. package/dist/Assets/js/dist/scripts/{DWS9yr24.chunk.js.map → BVoG71Kc.chunk.js.map} +1 -1
  57. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js → BW5iVK1B2.chunk.js} +2 -2
  58. package/dist/Assets/js/dist/scripts/{B9tf3oT62.chunk.js.map → BW5iVK1B2.chunk.js.map} +1 -1
  59. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js → BW9r-3iO.chunk.js} +2 -2
  60. package/dist/Assets/js/dist/scripts/{C2mEE4FT.chunk.js.map → BW9r-3iO.chunk.js.map} +1 -1
  61. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js → BX1tMzoa.chunk.js} +2 -2
  62. package/dist/Assets/js/dist/scripts/{Dpgqkqbp.chunk.js.map → BX1tMzoa.chunk.js.map} +1 -1
  63. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js → BXaC-l33.chunk.js} +2 -2
  64. package/dist/Assets/js/dist/scripts/{DVRzbAn6.chunk.js.map → BXaC-l33.chunk.js.map} +1 -1
  65. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js → BY-c3M2b2.chunk.js} +2 -2
  66. package/dist/Assets/js/dist/scripts/{BaR7D4NT2.chunk.js.map → BY-c3M2b2.chunk.js.map} +1 -1
  67. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js → BYMuPFbe.chunk.js} +2 -2
  68. package/dist/Assets/js/dist/scripts/{CJpVJtZk.chunk.js.map → BYMuPFbe.chunk.js.map} +1 -1
  69. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js → BaOAOuSc2.chunk.js} +2 -2
  70. package/dist/Assets/js/dist/scripts/{C5INFWaM2.chunk.js.map → BaOAOuSc2.chunk.js.map} +1 -1
  71. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js → Bb_f3Lku.chunk.js} +2 -2
  72. package/dist/Assets/js/dist/scripts/{wAWlO6hc.chunk.js.map → Bb_f3Lku.chunk.js.map} +1 -1
  73. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js → BdJYoUIO.chunk.js} +2 -2
  74. package/dist/Assets/js/dist/scripts/{BLJO44vl.chunk.js.map → BdJYoUIO.chunk.js.map} +1 -1
  75. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js → Bf-6iyfX2.chunk.js} +2 -2
  76. package/dist/Assets/js/dist/scripts/{CW2k5Ut-2.chunk.js.map → Bf-6iyfX2.chunk.js.map} +1 -1
  77. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js → BiPUuGEE2.chunk.js} +2 -2
  78. package/dist/Assets/js/dist/scripts/{DxL0ZEcN2.chunk.js.map → BiPUuGEE2.chunk.js.map} +1 -1
  79. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js → Bj4-NRWf.chunk.js} +2 -2
  80. package/dist/Assets/js/dist/scripts/{2XS-c0Xo.chunk.js.map → Bj4-NRWf.chunk.js.map} +1 -1
  81. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js → BkVcraos2.chunk.js} +2 -2
  82. package/dist/Assets/js/dist/scripts/{D13ViJt82.chunk.js.map → BkVcraos2.chunk.js.map} +1 -1
  83. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js → BkZ7WS_H.chunk.js} +2 -2
  84. package/dist/Assets/js/dist/scripts/{U1L4Dfoc.chunk.js.map → BkZ7WS_H.chunk.js.map} +1 -1
  85. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js → BoMt5mMW2.chunk.js} +2 -2
  86. package/dist/Assets/js/dist/scripts/{DoQiTqRX2.chunk.js.map → BoMt5mMW2.chunk.js.map} +1 -1
  87. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js → Bo_WsHZq2.chunk.js} +2 -2
  88. package/dist/Assets/js/dist/scripts/{Da_9BBKD2.chunk.js.map → Bo_WsHZq2.chunk.js.map} +1 -1
  89. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js → BpV5ErII.chunk.js} +2 -2
  90. package/dist/Assets/js/dist/scripts/{CnyrKBG0.chunk.js.map → BpV5ErII.chunk.js.map} +1 -1
  91. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js → BrBPGjLi2.chunk.js} +2 -2
  92. package/dist/Assets/js/dist/scripts/{Dfhl7nI62.chunk.js.map → BrBPGjLi2.chunk.js.map} +1 -1
  93. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js → BrHyZG_m.chunk.js} +2 -2
  94. package/dist/Assets/js/dist/scripts/{DcxGcCkR.chunk.js.map → BrHyZG_m.chunk.js.map} +1 -1
  95. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js → Bu4F3uuX.chunk.js} +2 -2
  96. package/dist/Assets/js/dist/scripts/{FXPxauLF.chunk.js.map → Bu4F3uuX.chunk.js.map} +1 -1
  97. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js → BvW9SXzy.chunk.js} +2 -2
  98. package/dist/Assets/js/dist/scripts/{DZdJx-7j.chunk.js.map → BvW9SXzy.chunk.js.map} +1 -1
  99. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js → BwKHls91.chunk.js} +2 -2
  100. package/dist/Assets/js/dist/scripts/{CAU0Lbgd.chunk.js.map → BwKHls91.chunk.js.map} +1 -1
  101. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js → BxZNJjbX2.chunk.js} +2 -2
  102. package/dist/Assets/js/dist/scripts/{BiTzUyxj2.chunk.js.map → BxZNJjbX2.chunk.js.map} +1 -1
  103. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js → BygVW5WL.chunk.js} +2 -2
  104. package/dist/Assets/js/dist/scripts/{cymXuIcM.chunk.js.map → BygVW5WL.chunk.js.map} +1 -1
  105. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js → ByzsHBuo.chunk.js} +2 -2
  106. package/dist/Assets/js/dist/scripts/{Dx07A6Ct.chunk.js.map → ByzsHBuo.chunk.js.map} +1 -1
  107. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js +3 -0
  108. package/dist/Assets/js/dist/scripts/C-M2om56.chunk.js.map +1 -0
  109. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js → C0UYMHUe.chunk.js} +2 -2
  110. package/dist/Assets/js/dist/scripts/{B6dlmRQL.chunk.js.map → C0UYMHUe.chunk.js.map} +1 -1
  111. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js → C0_pEFCD.chunk.js} +2 -2
  112. package/dist/Assets/js/dist/scripts/{V0N7tCBl.chunk.js.map → C0_pEFCD.chunk.js.map} +1 -1
  113. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js → C2jRLu4_2.chunk.js} +2 -2
  114. package/dist/Assets/js/dist/scripts/{Cpr1J8Rk2.chunk.js.map → C2jRLu4_2.chunk.js.map} +1 -1
  115. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js → C2tBl3l9.chunk.js} +2 -2
  116. package/dist/Assets/js/dist/scripts/{CY56FWb9.chunk.js.map → C2tBl3l9.chunk.js.map} +1 -1
  117. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js → C4eazpDh.chunk.js} +2 -2
  118. package/dist/Assets/js/dist/scripts/{C3Lx9PwR.chunk.js.map → C4eazpDh.chunk.js.map} +1 -1
  119. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js → CBq4vrjT.chunk.js} +2 -2
  120. package/dist/Assets/js/dist/scripts/{puobgAYi.chunk.js.map → CBq4vrjT.chunk.js.map} +1 -1
  121. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js → CBzqRw-k.chunk.js} +2 -2
  122. package/dist/Assets/js/dist/scripts/{Bcx1C8ae.chunk.js.map → CBzqRw-k.chunk.js.map} +1 -1
  123. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js → CDAdfAL02.chunk.js} +2 -2
  124. package/dist/Assets/js/dist/scripts/{BD6DIPGL2.chunk.js.map → CDAdfAL02.chunk.js.map} +1 -1
  125. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js → CE1Dxq8p.chunk.js} +2 -2
  126. package/dist/Assets/js/dist/scripts/{Ddp1uNfH.chunk.js.map → CE1Dxq8p.chunk.js.map} +1 -1
  127. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js → CG2julEA.chunk.js} +2 -2
  128. package/dist/Assets/js/dist/scripts/{C99MPG7E.chunk.js.map → CG2julEA.chunk.js.map} +1 -1
  129. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js → CGcN4g0d2.chunk.js} +2 -2
  130. package/dist/Assets/js/dist/scripts/{tyY3GHEC2.chunk.js.map → CGcN4g0d2.chunk.js.map} +1 -1
  131. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js → CJmV_FfR2.chunk.js} +2 -2
  132. package/dist/Assets/js/dist/scripts/{wODD7tmB2.chunk.js.map → CJmV_FfR2.chunk.js.map} +1 -1
  133. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js → CKvVGIRL.chunk.js} +2 -2
  134. package/dist/Assets/js/dist/scripts/{DavA1dZZ.chunk.js.map → CKvVGIRL.chunk.js.map} +1 -1
  135. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js → CL1DcbTZ.chunk.js} +2 -2
  136. package/dist/Assets/js/dist/scripts/{CrndJnZp.chunk.js.map → CL1DcbTZ.chunk.js.map} +1 -1
  137. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js → CNLx6_fS.chunk.js} +2 -2
  138. package/dist/Assets/js/dist/scripts/{DLLL2lwS.chunk.js.map → CNLx6_fS.chunk.js.map} +1 -1
  139. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js → CNUVs80P.chunk.js} +2 -2
  140. package/dist/Assets/js/dist/scripts/{w2lackHw.chunk.js.map → CNUVs80P.chunk.js.map} +1 -1
  141. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js → CPa__SNX.chunk.js} +2 -2
  142. package/dist/Assets/js/dist/scripts/{CCzvD0H4.chunk.js.map → CPa__SNX.chunk.js.map} +1 -1
  143. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js → CSA2Tnv9.chunk.js} +2 -2
  144. package/dist/Assets/js/dist/scripts/{DeDh-wVP.chunk.js.map → CSA2Tnv9.chunk.js.map} +1 -1
  145. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js → CT-xEpNT2.chunk.js} +2 -2
  146. package/dist/Assets/js/dist/scripts/{CjZJx6-O2.chunk.js.map → CT-xEpNT2.chunk.js.map} +1 -1
  147. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js → CT0vfLa0.chunk.js} +2 -2
  148. package/dist/Assets/js/dist/scripts/{BRPP3VZ1.chunk.js.map → CT0vfLa0.chunk.js.map} +1 -1
  149. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js → CUDnXypB.chunk.js} +2 -2
  150. package/dist/Assets/js/dist/scripts/{DGjNB2Bz.chunk.js.map → CUDnXypB.chunk.js.map} +1 -1
  151. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js → CeMQZB5J.chunk.js} +2 -2
  152. package/dist/Assets/js/dist/scripts/{cXanUGwK.chunk.js.map → CeMQZB5J.chunk.js.map} +1 -1
  153. package/dist/Assets/js/dist/scripts/Cf5cjLzK.chunk.js +2 -0
  154. package/dist/Assets/js/dist/scripts/{D2iK_uRt.chunk.js.map → Cf5cjLzK.chunk.js.map} +1 -1
  155. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js → CfGaxIgd.chunk.js} +2 -2
  156. package/dist/Assets/js/dist/scripts/{CRNBuqmR.chunk.js.map → CfGaxIgd.chunk.js.map} +1 -1
  157. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js → Cqfub35W2.chunk.js} +2 -2
  158. package/dist/Assets/js/dist/scripts/{BNr7ZL3F2.chunk.js.map → Cqfub35W2.chunk.js.map} +1 -1
  159. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js → Cv8UpP5_2.chunk.js} +2 -2
  160. package/dist/Assets/js/dist/scripts/{DRmwJ1it2.chunk.js.map → Cv8UpP5_2.chunk.js.map} +1 -1
  161. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js → CvV6jx2d.chunk.js} +2 -2
  162. package/dist/Assets/js/dist/scripts/{DOfeXfSj.chunk.js.map → CvV6jx2d.chunk.js.map} +1 -1
  163. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js → CxENQntH.chunk.js} +2 -2
  164. package/dist/Assets/js/dist/scripts/{DnGnhqys.chunk.js.map → CxENQntH.chunk.js.map} +1 -1
  165. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js → CxIfJCSc.chunk.js} +2 -2
  166. package/dist/Assets/js/dist/scripts/{NMDkdR-8.chunk.js.map → CxIfJCSc.chunk.js.map} +1 -1
  167. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js → CxggKQxV.chunk.js} +2 -2
  168. package/dist/Assets/js/dist/scripts/{B9H-d-YC.chunk.js.map → CxggKQxV.chunk.js.map} +1 -1
  169. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js → CyNNZ1So.chunk.js} +2 -2
  170. package/dist/Assets/js/dist/scripts/{B3I44IzQ.chunk.js.map → CyNNZ1So.chunk.js.map} +1 -1
  171. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js → Cz-WSyAE.chunk.js} +2 -2
  172. package/dist/Assets/js/dist/scripts/{B2V1N14S.chunk.js.map → Cz-WSyAE.chunk.js.map} +1 -1
  173. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js → D2aQFJWt2.chunk.js} +2 -2
  174. package/dist/Assets/js/dist/scripts/{S9cTzcQc2.chunk.js.map → D2aQFJWt2.chunk.js.map} +1 -1
  175. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js → D2h9W4GA2.chunk.js} +2 -2
  176. package/dist/Assets/js/dist/scripts/{CEsXUxxo2.chunk.js.map → D2h9W4GA2.chunk.js.map} +1 -1
  177. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js → D3NAhMJm.chunk.js} +2 -2
  178. package/dist/Assets/js/dist/scripts/{DqCsVhOS.chunk.js.map → D3NAhMJm.chunk.js.map} +1 -1
  179. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js → D3aWaqBW.chunk.js} +2 -2
  180. package/dist/Assets/js/dist/scripts/{DpM1KgHy.chunk.js.map → D3aWaqBW.chunk.js.map} +1 -1
  181. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js → D4xcR0492.chunk.js} +2 -2
  182. package/dist/Assets/js/dist/scripts/{CxtxOtyF2.chunk.js.map → D4xcR0492.chunk.js.map} +1 -1
  183. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js → D5ek2PiI.chunk.js} +2 -2
  184. package/dist/Assets/js/dist/scripts/{BEeh_Vbr.chunk.js.map → D5ek2PiI.chunk.js.map} +1 -1
  185. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js → D61ei_h6.chunk.js} +2 -2
  186. package/dist/Assets/js/dist/scripts/{DjqQYm43.chunk.js.map → D61ei_h6.chunk.js.map} +1 -1
  187. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js → D6wyTufc.chunk.js} +2 -2
  188. package/dist/Assets/js/dist/scripts/{lgpeNdac.chunk.js.map → D6wyTufc.chunk.js.map} +1 -1
  189. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js → D7I90XOo.chunk.js} +2 -2
  190. package/dist/Assets/js/dist/scripts/{B8li8ced.chunk.js.map → D7I90XOo.chunk.js.map} +1 -1
  191. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js → DArfNv9S.chunk.js} +2 -2
  192. package/dist/Assets/js/dist/scripts/{DBAwgllB.chunk.js.map → DArfNv9S.chunk.js.map} +1 -1
  193. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js → DB-51xws2.chunk.js} +2 -2
  194. package/dist/Assets/js/dist/scripts/{B6uYrrzJ2.chunk.js.map → DB-51xws2.chunk.js.map} +1 -1
  195. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js → DENdEA1F.chunk.js} +2 -2
  196. package/dist/Assets/js/dist/scripts/{C-flCrUr.chunk.js.map → DENdEA1F.chunk.js.map} +1 -1
  197. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js → DFYiLmms2.chunk.js} +2 -2
  198. package/dist/Assets/js/dist/scripts/{BuF_pg9-2.chunk.js.map → DFYiLmms2.chunk.js.map} +1 -1
  199. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js → DHa-x1js2.chunk.js} +2 -2
  200. package/dist/Assets/js/dist/scripts/{BE6LUVEo2.chunk.js.map → DHa-x1js2.chunk.js.map} +1 -1
  201. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js → DHeA2NJS.chunk.js} +2 -2
  202. package/dist/Assets/js/dist/scripts/{DDHep0UM.chunk.js.map → DHeA2NJS.chunk.js.map} +1 -1
  203. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js → DIDxfMO_.chunk.js} +2 -2
  204. package/dist/Assets/js/dist/scripts/{D5OaPA-v.chunk.js.map → DIDxfMO_.chunk.js.map} +1 -1
  205. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js → DMq1wDNm2.chunk.js} +2 -2
  206. package/dist/Assets/js/dist/scripts/{CV7UIOmh2.chunk.js.map → DMq1wDNm2.chunk.js.map} +1 -1
  207. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js → DNWM9yfh2.chunk.js} +2 -2
  208. package/dist/Assets/js/dist/scripts/{ByMU9ltp2.chunk.js.map → DNWM9yfh2.chunk.js.map} +1 -1
  209. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js → DSj7VCEo2.chunk.js} +2 -2
  210. package/dist/Assets/js/dist/scripts/{DFwtjofq2.chunk.js.map → DSj7VCEo2.chunk.js.map} +1 -1
  211. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js → DSvehN9D2.chunk.js} +2 -2
  212. package/dist/Assets/js/dist/scripts/{BSYuzR8N2.chunk.js.map → DSvehN9D2.chunk.js.map} +1 -1
  213. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js → DTvCgZ4c.chunk.js} +2 -2
  214. package/dist/Assets/js/dist/scripts/{FS74_jrx.chunk.js.map → DTvCgZ4c.chunk.js.map} +1 -1
  215. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js → DWHKdmdQ.chunk.js} +2 -2
  216. package/dist/Assets/js/dist/scripts/{C7Gmh7eY.chunk.js.map → DWHKdmdQ.chunk.js.map} +1 -1
  217. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js → DYFGF9Pe.chunk.js} +2 -2
  218. package/dist/Assets/js/dist/scripts/{DXcaOjI_.chunk.js.map → DYFGF9Pe.chunk.js.map} +1 -1
  219. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js → DYOxTenc2.chunk.js} +2 -2
  220. package/dist/Assets/js/dist/scripts/{CIw53qNO2.chunk.js.map → DYOxTenc2.chunk.js.map} +1 -1
  221. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js → DZthp5T62.chunk.js} +2 -2
  222. package/dist/Assets/js/dist/scripts/{CignflP_2.chunk.js.map → DZthp5T62.chunk.js.map} +1 -1
  223. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js → Djgwr16q.chunk.js} +2 -2
  224. package/dist/Assets/js/dist/scripts/{BlqDwJRY.chunk.js.map → Djgwr16q.chunk.js.map} +1 -1
  225. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js → DjnvbVQs.chunk.js} +2 -2
  226. package/dist/Assets/js/dist/scripts/{BwToh2X9.chunk.js.map → DjnvbVQs.chunk.js.map} +1 -1
  227. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js → DmrhyI9D2.chunk.js} +2 -2
  228. package/dist/Assets/js/dist/scripts/{UelJUmgx2.chunk.js.map → DmrhyI9D2.chunk.js.map} +1 -1
  229. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js → DnZGILQc.chunk.js} +2 -2
  230. package/dist/Assets/js/dist/scripts/{0KUhq7W7.chunk.js.map → DnZGILQc.chunk.js.map} +1 -1
  231. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js → DqnZw1cj.chunk.js} +2 -2
  232. package/dist/Assets/js/dist/scripts/{BSPrErub.chunk.js.map → DqnZw1cj.chunk.js.map} +1 -1
  233. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js → DrAKpy8L2.chunk.js} +2 -2
  234. package/dist/Assets/js/dist/scripts/{Bkx2vKcX2.chunk.js.map → DrAKpy8L2.chunk.js.map} +1 -1
  235. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js → DsM1bfoR.chunk.js} +2 -2
  236. package/dist/Assets/js/dist/scripts/{DX9DFxX2.chunk.js.map → DsM1bfoR.chunk.js.map} +1 -1
  237. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js → Dt2TCPUI.chunk.js} +2 -2
  238. package/dist/Assets/js/dist/scripts/{Dh3G-ann.chunk.js.map → Dt2TCPUI.chunk.js.map} +1 -1
  239. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js → DtylOK55.chunk.js} +2 -2
  240. package/dist/Assets/js/dist/scripts/{DA6Ynhan.chunk.js.map → DtylOK55.chunk.js.map} +1 -1
  241. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js → DuTcsFNo2.chunk.js} +2 -2
  242. package/dist/Assets/js/dist/scripts/{CJBiVila2.chunk.js.map → DuTcsFNo2.chunk.js.map} +1 -1
  243. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js → Dw0mo6Cf.chunk.js} +2 -2
  244. package/dist/Assets/js/dist/scripts/{BBFS0f7w.chunk.js.map → Dw0mo6Cf.chunk.js.map} +1 -1
  245. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js → DwISzabN.chunk.js} +2 -2
  246. package/dist/Assets/js/dist/scripts/{Cg5KHpRA.chunk.js.map → DwISzabN.chunk.js.map} +1 -1
  247. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js → DxW67uUT.chunk.js} +2 -2
  248. package/dist/Assets/js/dist/scripts/{DMxtE2iS.chunk.js.map → DxW67uUT.chunk.js.map} +1 -1
  249. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js → Eg4zYYCO.chunk.js} +2 -2
  250. package/dist/Assets/js/dist/scripts/{BOGS-BOS.chunk.js.map → Eg4zYYCO.chunk.js.map} +1 -1
  251. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js → GT6nO4Jv.chunk.js} +2 -2
  252. package/dist/Assets/js/dist/scripts/{CSuC7le7.chunk.js.map → GT6nO4Jv.chunk.js.map} +1 -1
  253. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js → GpDEun8c2.chunk.js} +2 -2
  254. package/dist/Assets/js/dist/scripts/{BhKv6dKl2.chunk.js.map → GpDEun8c2.chunk.js.map} +1 -1
  255. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js → OKjYL31I.chunk.js} +2 -2
  256. package/dist/Assets/js/dist/scripts/{DKJC5qg0.chunk.js.map → OKjYL31I.chunk.js.map} +1 -1
  257. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js → OrCUhFjq2.chunk.js} +2 -2
  258. package/dist/Assets/js/dist/scripts/{D8rrJ-jY2.chunk.js.map → OrCUhFjq2.chunk.js.map} +1 -1
  259. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js → SVXAAhk02.chunk.js} +2 -2
  260. package/dist/Assets/js/dist/scripts/{D3exV_Ay2.chunk.js.map → SVXAAhk02.chunk.js.map} +1 -1
  261. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js → SmmnJrec.chunk.js} +2 -2
  262. package/dist/Assets/js/dist/scripts/{CcZKy7SH.chunk.js.map → SmmnJrec.chunk.js.map} +1 -1
  263. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js → T3BageSw2.chunk.js} +2 -2
  264. package/dist/Assets/js/dist/scripts/{Dy4nscVE2.chunk.js.map → T3BageSw2.chunk.js.map} +1 -1
  265. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js → T6xxjp_W.chunk.js} +2 -2
  266. package/dist/Assets/js/dist/scripts/{B8PM5Ji3.chunk.js.map → T6xxjp_W.chunk.js.map} +1 -1
  267. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js → Uc2eW092.chunk.js} +2 -2
  268. package/dist/Assets/js/dist/scripts/{Cp6Af16p.chunk.js.map → Uc2eW092.chunk.js.map} +1 -1
  269. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js → XHoEdG1q.chunk.js} +2 -2
  270. package/dist/Assets/js/dist/scripts/{DmKyGgLu.chunk.js.map → XHoEdG1q.chunk.js.map} +1 -1
  271. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js → Y14NYZ692.chunk.js} +2 -2
  272. package/dist/Assets/js/dist/scripts/{BdVoyBI02.chunk.js.map → Y14NYZ692.chunk.js.map} +1 -1
  273. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js → Y_IcNhI9.chunk.js} +2 -2
  274. package/dist/Assets/js/dist/scripts/{DrszevCi.chunk.js.map → Y_IcNhI9.chunk.js.map} +1 -1
  275. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js → Yr5eNz05.chunk.js} +2 -2
  276. package/dist/Assets/js/dist/scripts/{CMGpVYHd.chunk.js.map → Yr5eNz05.chunk.js.map} +1 -1
  277. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js → Yrc9o6bG2.chunk.js} +2 -2
  278. package/dist/Assets/js/dist/scripts/{QnwProbJ2.chunk.js.map → Yrc9o6bG2.chunk.js.map} +1 -1
  279. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js → app-RphP4Ht0.js} +4 -4
  280. package/dist/Assets/js/dist/scripts/{app-Dl-tzfIp.js.map → app-RphP4Ht0.js.map} +1 -1
  281. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js → cUgHqo-u.chunk.js} +2 -2
  282. package/dist/Assets/js/dist/scripts/{B96Bwi2D.chunk.js.map → cUgHqo-u.chunk.js.map} +1 -1
  283. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js → dmUfJoJz2.chunk.js} +2 -2
  284. package/dist/Assets/js/dist/scripts/{oGkpmMft2.chunk.js.map → dmUfJoJz2.chunk.js.map} +1 -1
  285. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js → fapHSEex.chunk.js} +2 -2
  286. package/dist/Assets/js/dist/scripts/{DjlPflaG.chunk.js.map → fapHSEex.chunk.js.map} +1 -1
  287. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js → jf0e_ii92.chunk.js} +2 -2
  288. package/dist/Assets/js/dist/scripts/{CaEXONXp2.chunk.js.map → jf0e_ii92.chunk.js.map} +1 -1
  289. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js → kp4jXqVv.chunk.js} +2 -2
  290. package/dist/Assets/js/dist/scripts/{Co7TevGA.chunk.js.map → kp4jXqVv.chunk.js.map} +1 -1
  291. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js +2 -0
  292. package/dist/Assets/js/dist/scripts/lAvSm0ti.chunk.js.map +1 -0
  293. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js → n7lzp_Mc2.chunk.js} +2 -2
  294. package/dist/Assets/js/dist/scripts/{Dmf5vYc42.chunk.js.map → n7lzp_Mc2.chunk.js.map} +1 -1
  295. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js → nvtWO4PW2.chunk.js} +2 -2
  296. package/dist/Assets/js/dist/scripts/{CG9yCT4r2.chunk.js.map → nvtWO4PW2.chunk.js.map} +1 -1
  297. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js → oYKM19q12.chunk.js} +2 -2
  298. package/dist/Assets/js/dist/scripts/{CACu0hGi2.chunk.js.map → oYKM19q12.chunk.js.map} +1 -1
  299. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js → ohTu1tHz.chunk.js} +2 -2
  300. package/dist/Assets/js/dist/scripts/{B5v11U7g.chunk.js.map → ohTu1tHz.chunk.js.map} +1 -1
  301. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js → uCRnfBEw2.chunk.js} +2 -2
  302. package/dist/Assets/js/dist/scripts/{BrT-onLe2.chunk.js.map → uCRnfBEw2.chunk.js.map} +1 -1
  303. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js → udVWVmrH2.chunk.js} +2 -2
  304. package/dist/Assets/js/dist/scripts/{3XkTogZ22.chunk.js.map → udVWVmrH2.chunk.js.map} +1 -1
  305. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js → v0VARBBE2.chunk.js} +2 -2
  306. package/dist/Assets/js/dist/scripts/{DW-yUqjB2.chunk.js.map → v0VARBBE2.chunk.js.map} +1 -1
  307. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js → vf9_5VGa2.chunk.js} +2 -2
  308. package/dist/Assets/js/dist/scripts/{B4lIRWK22.chunk.js.map → vf9_5VGa2.chunk.js.map} +1 -1
  309. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js → wTEWtWoE2.chunk.js} +2 -2
  310. package/dist/Assets/js/dist/scripts/{pOwOak4Z2.chunk.js.map → wTEWtWoE2.chunk.js.map} +1 -1
  311. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js → xj8_Pfx7.chunk.js} +2 -2
  312. package/dist/Assets/js/dist/scripts/{DPYIBfGB.chunk.js.map → xj8_Pfx7.chunk.js.map} +1 -1
  313. package/dist/bundles.json +1 -1
  314. package/dist/en.json +1 -1
  315. package/package.json +1 -1
  316. package/dist/Assets/js/dist/scripts/D2iK_uRt.chunk.js +0 -2
  317. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js +0 -3
  318. package/dist/Assets/js/dist/scripts/DBUreHJA.chunk.js.map +0 -1
  319. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js +0 -2
  320. package/dist/Assets/js/dist/scripts/Dh5DbdtP.chunk.js.map +0 -1
  321. package/dist/Assets/js/dist/scripts/DrBVabtm.chunk.js +0 -1
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{b as a}from"./BhKv6dKl2.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{s}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as c,t as l}from"./DmEz0Sg_2.chunk.js";import{t as u}from"./DSpSOEc72.chunk.js";import{t as d}from"./JmL1DHFu.chunk.js";import{t as f}from"./C8hLOeBc2.chunk.js";import{t as p}from"./DICjfxIb.chunk.js";import{t as m}from"./VY2KbIoM.chunk.js";import{t as h}from"./mStmtFRo.chunk.js";e();var g=t();function _(e){return(0,g.jsxs)(p,{children:[(0,g.jsx)(p.Image,{src:f.EmptyStates.INTERACTIVES}),(0,g.jsx)(p.Heading,{children:`No interactives`}),(0,g.jsx)(p.Info,{children:`No interactives have been created on this video yet.`}),(0,g.jsx)(p.Cta,{text:`Create an interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.NEW_INTERACTIVE,args:[e.videoId]}})]})}var v=r.INTERACTIVES,y=e=>({application:v,action:n.Interactives.PREVIEW_INTERACTIVE,args:[e.id]});function b(e){let t=s(d.video(e.videoId)),f=s(i.currentUser()),p=s(d.videoInteractives(e.videoId)),b=!p.data||!f.data||!t.data;return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(h,{videoId:e.videoId,activeAction:n.Videos.EDIT_VIDEO_INTERACTIVES,currentUser:f.data}),b?(0,g.jsx)(`div`,{className:`text-center mt-5`,children:(0,g.jsx)(o,{as:`div`,animation:`border`,role:`status`})}):p.data.data.length?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(m,{memberName:`Interactives`,video:t.data}),(0,g.jsx)(a,{disableResponsive:!0,collection:p.data,columns:[{header:`ID`,accessor:`id`,appLink:y},{header:`Name`,accessor:`name`,appLink:y},{header:`Description`,accessor:`description`,appLink:y},{header:`Status`,accessor:e=>(0,g.jsx)(l,{data:e.status,type:c.Status}),appLink:y},{header:`Creator`,accessor:e=>e.owner?.email??`Unknown`,appLink:y},{header:`Actions`,accessor:e=>(0,g.jsx)(u,{actions:[{label:`Copy interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.COPY_INTERACTIVE,args:[e.id]}}],dropdownToggleClassName:`btn btn-outline-dark`})}],collectionAppLink:{application:v,action:n.Videos.EDIT_VIDEO_INTERACTIVES},newObjectAppLink:{application:v,action:n.Interactives.NEW_INTERACTIVE,args:[e.videoId]},objectName:`Interactive`})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(m,{memberName:`Interactives`,video:t.data}),(0,g.jsx)(_,{videoId:e.videoId})]})]})}export{b as EditVideoInteractivesView};
2
- //# sourceMappingURL=B96Bwi2D.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./Di_u2uix.chunk.js";import{t as r}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as i}from"./UCDGupVs.chunk.js";import{b as a}from"./GpDEun8c2.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{s}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as c,t as l}from"./DmEz0Sg_2.chunk.js";import{t as u}from"./DSpSOEc72.chunk.js";import{t as d}from"./JmL1DHFu.chunk.js";import{t as f}from"./C8hLOeBc2.chunk.js";import{t as p}from"./DICjfxIb.chunk.js";import{t as m}from"./VY2KbIoM.chunk.js";import{t as h}from"./BT-jeT7C.chunk.js";e();var g=t();function _(e){return(0,g.jsxs)(p,{children:[(0,g.jsx)(p.Image,{src:f.EmptyStates.INTERACTIVES}),(0,g.jsx)(p.Heading,{children:`No interactives`}),(0,g.jsx)(p.Info,{children:`No interactives have been created on this video yet.`}),(0,g.jsx)(p.Cta,{text:`Create an interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.NEW_INTERACTIVE,args:[e.videoId]}})]})}var v=r.INTERACTIVES,y=e=>({application:v,action:n.Interactives.PREVIEW_INTERACTIVE,args:[e.id]});function b(e){let t=s(d.video(e.videoId)),f=s(i.currentUser()),p=s(d.videoInteractives(e.videoId)),b=!p.data||!f.data||!t.data;return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(h,{videoId:e.videoId,activeAction:n.Videos.EDIT_VIDEO_INTERACTIVES,currentUser:f.data}),b?(0,g.jsx)(`div`,{className:`text-center mt-5`,children:(0,g.jsx)(o,{as:`div`,animation:`border`,role:`status`})}):p.data.data.length?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(m,{memberName:`Interactives`,video:t.data}),(0,g.jsx)(a,{disableResponsive:!0,collection:p.data,columns:[{header:`ID`,accessor:`id`,appLink:y},{header:`Name`,accessor:`name`,appLink:y},{header:`Description`,accessor:`description`,appLink:y},{header:`Status`,accessor:e=>(0,g.jsx)(l,{data:e.status,type:c.Status}),appLink:y},{header:`Creator`,accessor:e=>e.owner?.email??`Unknown`,appLink:y},{header:`Actions`,accessor:e=>(0,g.jsx)(u,{actions:[{label:`Copy interactive`,appLink:{application:r.INTERACTIVES,action:n.Interactives.COPY_INTERACTIVE,args:[e.id]}}],dropdownToggleClassName:`btn btn-outline-dark`})}],collectionAppLink:{application:v,action:n.Videos.EDIT_VIDEO_INTERACTIVES},newObjectAppLink:{application:v,action:n.Interactives.NEW_INTERACTIVE,args:[e.videoId]},objectName:`Interactive`})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(m,{memberName:`Interactives`,video:t.data}),(0,g.jsx)(_,{videoId:e.videoId})]})]})}export{b as EditVideoInteractivesView};
2
+ //# sourceMappingURL=cUgHqo-u.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"B96Bwi2D.chunk.js","names":[],"sources":["../../../../../src/apps/videos/views/edit-video-interactives/empty-state/VideoInteractiveEmptyState.tsx","../../../../../src/apps/videos/views/edit-video-interactives/EditVideoInteractivesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\ninterface VideoInteractiveEmptyStateProps {\n videoId: string;\n}\n\nexport function VideoInteractiveEmptyState(props: VideoInteractiveEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.INTERACTIVES} />\n\n <EmptyState.Heading>No interactives</EmptyState.Heading>\n <EmptyState.Info>No interactives have been created on this video yet.</EmptyState.Info>\n\n <EmptyState.Cta\n text='Create an interactive'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.NEW_INTERACTIVE,\n args: [props.videoId]\n }}\n />\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { InteractiveCollection, InteractiveMetadata, Video } from 'libs/shared/interfaces';\nimport { CuratorUser } from 'libs/shared/interfaces/models/User';\n\nimport { ObjectCollection } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { EditVideoMemberHeader } from 'apps/videos/components/edit-video-member-header/EditVideoMemberHeader';\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav/EditVideoNav';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { VideoInteractiveEmptyState } from 'apps/videos/views/edit-video-interactives/empty-state/VideoInteractiveEmptyState';\n\nconst application = AppChannels.INTERACTIVES;\n\nconst getAppLink = (interactive: InteractiveMetadata) => ({\n application,\n action: Actions.Interactives.PREVIEW_INTERACTIVE,\n args: [interactive.id]\n});\n\ninterface EditVideoInteractivesViewProps {\n videoId: string;\n}\n\nexport function EditVideoInteractivesView(\n props: EditVideoInteractivesViewProps\n): React.ReactElement {\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactives = Flight.useBasicFetch<InteractiveCollection>(VideoRequests.videoInteractives(props.videoId));\n\n const isLoading = !interactives.data || !currentUser.data || !video.data;\n\n return (\n <>\n <EditVideoNav\n videoId={props.videoId}\n activeAction={Actions.Videos.EDIT_VIDEO_INTERACTIVES}\n currentUser={currentUser.data}\n />\n\n {(() => {\n if (isLoading) {\n return (\n <div className='text-center mt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return interactives.data.data.length ? (\n <>\n <EditVideoMemberHeader memberName='Interactives' video={video.data}/>\n <ObjectCollection\n disableResponsive\n collection={interactives.data}\n columns={[\n {\n header: 'ID',\n accessor: 'id',\n appLink: getAppLink\n },\n {\n header: 'Name',\n accessor: 'name',\n appLink: getAppLink\n },\n {\n header: 'Description',\n accessor: 'description',\n appLink: getAppLink\n },\n {\n header: 'Status',\n accessor: interactive => <Badge data={interactive.status} type={BadgeType.Status} />,\n appLink: getAppLink\n },\n {\n header: 'Creator',\n accessor: interactive => interactive.owner?.email ?? 'Unknown',\n appLink: getAppLink\n },\n {\n header: 'Actions',\n accessor: interactive => (\n <ActionsDropdown\n actions={[{\n label: 'Copy interactive',\n appLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.COPY_INTERACTIVE,\n args: [interactive.id]\n }\n }]}\n dropdownToggleClassName='btn btn-outline-dark'\n />\n )\n }\n ]}\n collectionAppLink={{ application, action: Actions.Videos.EDIT_VIDEO_INTERACTIVES }}\n newObjectAppLink={{ application, action: Actions.Interactives.NEW_INTERACTIVE, args: [props.videoId]}}\n objectName='Interactive'\n />\n </>\n ) : (\n <>\n <EditVideoMemberHeader memberName='Interactives' video={video.data} />\n <VideoInteractiveEmptyState videoId={props.videoId} />\n </>\n );\n })()}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cUgHqo-u.chunk.js","names":[],"sources":["../../../../../src/apps/videos/views/edit-video-interactives/empty-state/VideoInteractiveEmptyState.tsx","../../../../../src/apps/videos/views/edit-video-interactives/EditVideoInteractivesView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { Actions, AppChannels } from 'shared/constants';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\ninterface VideoInteractiveEmptyStateProps {\n videoId: string;\n}\n\nexport function VideoInteractiveEmptyState(props: VideoInteractiveEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.INTERACTIVES} />\n\n <EmptyState.Heading>No interactives</EmptyState.Heading>\n <EmptyState.Info>No interactives have been created on this video yet.</EmptyState.Info>\n\n <EmptyState.Cta\n text='Create an interactive'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.NEW_INTERACTIVE,\n args: [props.videoId]\n }}\n />\n </EmptyState>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { InteractiveCollection, InteractiveMetadata, Video } from 'libs/shared/interfaces';\nimport { CuratorUser } from 'libs/shared/interfaces/models/User';\n\nimport { ObjectCollection } from 'shared/components';\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { EditVideoMemberHeader } from 'apps/videos/components/edit-video-member-header/EditVideoMemberHeader';\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav/EditVideoNav';\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\nimport { VideoInteractiveEmptyState } from 'apps/videos/views/edit-video-interactives/empty-state/VideoInteractiveEmptyState';\n\nconst application = AppChannels.INTERACTIVES;\n\nconst getAppLink = (interactive: InteractiveMetadata) => ({\n application,\n action: Actions.Interactives.PREVIEW_INTERACTIVE,\n args: [interactive.id]\n});\n\ninterface EditVideoInteractivesViewProps {\n videoId: string;\n}\n\nexport function EditVideoInteractivesView(\n props: EditVideoInteractivesViewProps\n): React.ReactElement {\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser());\n const interactives = Flight.useBasicFetch<InteractiveCollection>(VideoRequests.videoInteractives(props.videoId));\n\n const isLoading = !interactives.data || !currentUser.data || !video.data;\n\n return (\n <>\n <EditVideoNav\n videoId={props.videoId}\n activeAction={Actions.Videos.EDIT_VIDEO_INTERACTIVES}\n currentUser={currentUser.data}\n />\n\n {(() => {\n if (isLoading) {\n return (\n <div className='text-center mt-5'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n }\n\n return interactives.data.data.length ? (\n <>\n <EditVideoMemberHeader memberName='Interactives' video={video.data}/>\n <ObjectCollection\n disableResponsive\n collection={interactives.data}\n columns={[\n {\n header: 'ID',\n accessor: 'id',\n appLink: getAppLink\n },\n {\n header: 'Name',\n accessor: 'name',\n appLink: getAppLink\n },\n {\n header: 'Description',\n accessor: 'description',\n appLink: getAppLink\n },\n {\n header: 'Status',\n accessor: interactive => <Badge data={interactive.status} type={BadgeType.Status} />,\n appLink: getAppLink\n },\n {\n header: 'Creator',\n accessor: interactive => interactive.owner?.email ?? 'Unknown',\n appLink: getAppLink\n },\n {\n header: 'Actions',\n accessor: interactive => (\n <ActionsDropdown\n actions={[{\n label: 'Copy interactive',\n appLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.COPY_INTERACTIVE,\n args: [interactive.id]\n }\n }]}\n dropdownToggleClassName='btn btn-outline-dark'\n />\n )\n }\n ]}\n collectionAppLink={{ application, action: Actions.Videos.EDIT_VIDEO_INTERACTIVES }}\n newObjectAppLink={{ application, action: Actions.Interactives.NEW_INTERACTIVE, args: [props.videoId]}}\n objectName='Interactive'\n />\n </>\n ) : (\n <>\n <EditVideoMemberHeader memberName='Interactives' video={video.data} />\n <VideoInteractiveEmptyState videoId={props.videoId} />\n </>\n );\n })()}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{n,t as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{Q as o,W as s}from"./C7Gmh7eY.chunk.js";import{n as c}from"./C6KIBIQi.chunk.js";import{t as l}from"./B1uI4W1W.chunk.js";e();var u=t();function d(e){return typeof e==`number`?!1:e==null||e===``?!0:Array.isArray(e)?e.length===0:!1}function f(e){return typeof e==`string`?e:typeof e==`boolean`||typeof e==`number`?e.toString():e.name}function p(e){if(d(e.data))return(0,u.jsx)(r,{className:`text-decoration-none w-100 px-3 py-2 d-flex align-items-center clamp-${e.clampLevel} ${e.readonly?`text-dark`:`text-success`}`,appLink:e.appLink,disabled:e.readonly,children:e.appLink?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(n,{svg:l,className:`svg-container me-1`}),`Add`]}):(0,u.jsx)(u.Fragment,{children:`-`})});let t=f(Array.isArray(e.data)?e.data[0]:e.data);return e.readonly?(0,u.jsx)(`div`,{className:`w-100 d-flex align-items-center`,children:(0,u.jsx)(`div`,{className:`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${e.clampLevel} text-dark`,children:(0,u.jsx)(`span`,{className:`clamp-${e.clampLevel}`,title:t,children:t})})}):(0,u.jsx)(`div`,{className:`w-100 d-flex align-items-center`,children:(0,u.jsx)(r,{className:`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${e.clampLevel} text-info`,appLink:e.appLink,children:(0,u.jsx)(`span`,{className:`clamp-${e.clampLevel}`,title:t,children:t})})})}var m=c(),h={name:()=>m.accessor(e=>e,{id:`name`,header:()=>(0,u.jsx)(p,{data:`Name`,readonly:!0,appLink:null}),cell:e=>{let t=e.getValue();return(0,u.jsx)(p,{data:t.name,clampLevel:2,appLink:{application:a.MARKETING_APP,action:i.Marketing.VIEW_CATALOG,args:[g.getRegion(t.region),t.name]}})}}),description:()=>m.accessor(e=>e,{id:`description`,header:()=>(0,u.jsx)(p,{data:`Description`,readonly:!0,appLink:null}),cell:e=>(0,u.jsx)(p,{data:e.getValue().description,clampLevel:2,readonly:!0})}),region:()=>m.accessor(e=>e,{id:`region`,header:()=>(0,u.jsx)(p,{data:`Region`,readonly:!0,appLink:null}),cell:e=>{let t=e.getValue();return(0,u.jsx)(p,{data:g.getRegion(t.region).toUpperCase(),clampLevel:2,readonly:!0})}})},g={getColumnDefByObjectType(e){switch(e){case`index`:return Object.values(h);default:return[]}},renderInPortal(e){return o.renderInPortalIfExists(e,document.getElementById(this.getPortalId()))},getPortalId(){return s.getPortalId()},getRegion(e){switch(e){case`cv-ap-southeast-1`:return`us`;case`cv-eu-west-1`:return`eu`}},getInstanceRegionByCode(e){switch(e){case`us`:return`cv-ap-southeast-1`;case`eu`:return`cv-eu-west-1`}},getAllRegions(){return[{value:`us`,label:`AU / NZ / US / CA`},{value:`eu`,label:`UK`}]},getRegionLabel(e){return g.getAllRegions().find(t=>t.value===e)?.label??e.toUpperCase()},getColumns(e){return[...Object.values(g.getColumnDefByObjectType(e)).map(e=>e()).filter(e=>!0)].sort((e,t)=>e.id===`actions`?1:t.id===`actions`?-1:0)},getLeftNavItems(e,t){let n=new Set([i.Marketing.CONTACT_IMPORT,i.Marketing.CONTACT_IMPORT_UPLOAD,i.Marketing.CONTACT_IMPORT_ORIGIN_TYPE,i.Marketing.CONTACT_IMPORT_DESTINATION,i.Marketing.CONTACT_IMPORT_IMPORT_OPTIONS,i.Marketing.CONTACT_IMPORT_ADVANCED_OPTIONS,i.Marketing.CONTACT_IMPORT_REVIEW]),r=[{action:i.Marketing.CONTACT_IMPORT,text:`Contact Import`,isActive:n.has(t)}];return e&&(r.push({action:i.Marketing.INDEX,text:`Catalogs`,isActive:t===i.Marketing.INDEX}),r.reverse()),r}};export{p as n,g as t};
2
- //# sourceMappingURL=oGkpmMft2.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{n,t as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{Q as o,W as s}from"./DWHKdmdQ.chunk.js";import{n as c}from"./C6KIBIQi.chunk.js";import{t as l}from"./B1uI4W1W.chunk.js";e();var u=t();function d(e){return typeof e==`number`?!1:e==null||e===``?!0:Array.isArray(e)?e.length===0:!1}function f(e){return typeof e==`string`?e:typeof e==`boolean`||typeof e==`number`?e.toString():e.name}function p(e){if(d(e.data))return(0,u.jsx)(r,{className:`text-decoration-none w-100 px-3 py-2 d-flex align-items-center clamp-${e.clampLevel} ${e.readonly?`text-dark`:`text-success`}`,appLink:e.appLink,disabled:e.readonly,children:e.appLink?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(n,{svg:l,className:`svg-container me-1`}),`Add`]}):(0,u.jsx)(u.Fragment,{children:`-`})});let t=f(Array.isArray(e.data)?e.data[0]:e.data);return e.readonly?(0,u.jsx)(`div`,{className:`w-100 d-flex align-items-center`,children:(0,u.jsx)(`div`,{className:`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${e.clampLevel} text-dark`,children:(0,u.jsx)(`span`,{className:`clamp-${e.clampLevel}`,title:t,children:t})})}):(0,u.jsx)(`div`,{className:`w-100 d-flex align-items-center`,children:(0,u.jsx)(r,{className:`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${e.clampLevel} text-info`,appLink:e.appLink,children:(0,u.jsx)(`span`,{className:`clamp-${e.clampLevel}`,title:t,children:t})})})}var m=c(),h={name:()=>m.accessor(e=>e,{id:`name`,header:()=>(0,u.jsx)(p,{data:`Name`,readonly:!0,appLink:null}),cell:e=>{let t=e.getValue();return(0,u.jsx)(p,{data:t.name,clampLevel:2,appLink:{application:a.MARKETING_APP,action:i.Marketing.VIEW_CATALOG,args:[g.getRegion(t.region),t.name]}})}}),description:()=>m.accessor(e=>e,{id:`description`,header:()=>(0,u.jsx)(p,{data:`Description`,readonly:!0,appLink:null}),cell:e=>(0,u.jsx)(p,{data:e.getValue().description,clampLevel:2,readonly:!0})}),region:()=>m.accessor(e=>e,{id:`region`,header:()=>(0,u.jsx)(p,{data:`Region`,readonly:!0,appLink:null}),cell:e=>{let t=e.getValue();return(0,u.jsx)(p,{data:g.getRegion(t.region).toUpperCase(),clampLevel:2,readonly:!0})}})},g={getColumnDefByObjectType(e){switch(e){case`index`:return Object.values(h);default:return[]}},renderInPortal(e){return o.renderInPortalIfExists(e,document.getElementById(this.getPortalId()))},getPortalId(){return s.getPortalId()},getRegion(e){switch(e){case`cv-ap-southeast-1`:return`us`;case`cv-eu-west-1`:return`eu`}},getInstanceRegionByCode(e){switch(e){case`us`:return`cv-ap-southeast-1`;case`eu`:return`cv-eu-west-1`}},getAllRegions(){return[{value:`us`,label:`AU / NZ / US / CA`},{value:`eu`,label:`UK`}]},getRegionLabel(e){return g.getAllRegions().find(t=>t.value===e)?.label??e.toUpperCase()},getColumns(e){return[...Object.values(g.getColumnDefByObjectType(e)).map(e=>e()).filter(e=>!0)].sort((e,t)=>e.id===`actions`?1:t.id===`actions`?-1:0)},getLeftNavItems(e,t){let n=new Set([i.Marketing.CONTACT_IMPORT,i.Marketing.CONTACT_IMPORT_UPLOAD,i.Marketing.CONTACT_IMPORT_ORIGIN_TYPE,i.Marketing.CONTACT_IMPORT_DESTINATION,i.Marketing.CONTACT_IMPORT_IMPORT_OPTIONS,i.Marketing.CONTACT_IMPORT_ADVANCED_OPTIONS,i.Marketing.CONTACT_IMPORT_REVIEW]),r=[{action:i.Marketing.CONTACT_IMPORT,text:`Contact Import`,isActive:n.has(t)}];return e&&(r.push({action:i.Marketing.INDEX,text:`Catalogs`,isActive:t===i.Marketing.INDEX}),r.reverse()),r}};export{p as n,g as t};
2
+ //# sourceMappingURL=dmUfJoJz2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oGkpmMft2.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/cells/MarketingBasicCell.tsx","../../../../../src/apps/marketing/views/catalogs/components/columns/MarketingCatalogsTablesColumns.tsx","../../../../../src/apps/marketing/utils/MarketingHelper.ts"],"sourcesContent":["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 { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport type DataTypes = string | string[] | BaseObject | BaseObject[] | number;\n\nfunction isEmpty(data: DataTypes): boolean {\n if (typeof data === 'number')\n return false;\n\n if (data === null || data === undefined || data === '')\n return true;\n\n if (Array.isArray(data))\n return data.length === 0;\n\n return false;\n}\n\nfunction getName(data: BaseObject | string | number | boolean): string {\n if (typeof data === 'string')\n return data;\n\n if (typeof data === 'boolean')\n return data.toString();\n\n if (typeof data === 'number')\n return data.toString();\n\n return data.name;\n}\n\ninterface MarketingBasicCellProps {\n data: DataTypes;\n appLink?: Core.AppLink;\n clampLevel?: number;\n readonly?: boolean;\n}\n\nexport function MarketingBasicCell(props: MarketingBasicCellProps): JSX.Element {\n if (isEmpty(props.data)) {\n return (\n <AppLink\n className={`text-decoration-none w-100 px-3 py-2 d-flex align-items-center clamp-${props.clampLevel} ${props.readonly ? 'text-dark' : 'text-success'}`}\n appLink={props.appLink}\n disabled={props.readonly}\n >\n {props.appLink ? (\n <>\n <SvgContainer svg={PlusSvg} className='svg-container me-1' />\n Add\n </>\n ) : (\n <>-</>\n )}\n </AppLink>\n );\n }\n\n const name = getName(Array.isArray(props.data) ? props.data[0] : props.data);\n\n if (props.readonly) {\n return (\n <div className='w-100 d-flex align-items-center'>\n <div className={`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${props.clampLevel} text-dark`}>\n <span className={`clamp-${props.clampLevel}`} title={name}>\n {name}\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div className='w-100 d-flex align-items-center'>\n <AppLink\n className={`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${props.clampLevel} text-info`}\n appLink={props.appLink}\n >\n <span className={`clamp-${props.clampLevel}`} title={name}>\n {name}\n </span>\n </AppLink>\n </div>\n );\n}\n","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\nimport { MarketingBasicCell } from 'apps/marketing/views/catalogs/components/cells/MarketingBasicCell';\n\nconst columnHelper = createColumnHelper<BrazeCatalog>();\n\nexport const MarketingAllCatalogsColumns = {\n name: () => {\n return columnHelper.accessor(w => w, {\n id: 'name',\n header: () => (\n <MarketingBasicCell\n data='Name'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={catalog.name}\n clampLevel={2}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.VIEW_CATALOG,\n args: [ MarketingHelper.getRegion(catalog.region), catalog.name ]\n }}\n />\n );\n }\n });\n },\n\n description: () => {\n return columnHelper.accessor(w => w, {\n id: 'description',\n header: () => (\n <MarketingBasicCell\n data='Description'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={catalog.description}\n clampLevel={2}\n readonly={true}\n />\n );\n }\n });\n },\n\n region: () => {\n return columnHelper.accessor(w => w, {\n id: 'region',\n header: () => (\n <MarketingBasicCell\n data='Region'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={MarketingHelper.getRegion(catalog.region).toUpperCase()}\n clampLevel={2}\n readonly={true}\n />\n );\n }\n });\n }\n\n // action: () => {\n // return columnHelper.accessor(w => w, {\n // id: 'actions',\n // header: 'Actions',\n // cell: props => {\n // const catalog = props.getValue();\n // const actions: MarketingDropdownItem[] = [\n // {\n // label: 'Delete',\n // onClick: () => {\n // const applink = {\n // application: AppChannels.MARKETING_APP,\n // action: Actions.Marketing.DELETE_CATALOG,\n // args: [ catalog.name, catalog.region ]\n // };\n // Core.AppLinkHelper.trigger(applink);\n // }\n // }];\n \n // return (\n // <div className={'p-1'}>\n // <MarketingDropdownCell actions={actions}/>\n // </div>\n // );\n // }\n // });\n // }\n};\n","import { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { Actions } from 'shared/constants/CuratorActions';\n\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\nimport { LeftNavItem } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingAllCatalogsColumns } from 'apps/marketing/views/catalogs/components/columns/MarketingCatalogsTablesColumns';\n\nexport type MarketingTableObjectType = 'index';\n\nexport const MarketingHelper = {\n getColumnDefByObjectType(objectType: MarketingTableObjectType) {\n switch (objectType) {\n case 'index':\n return Object.values(MarketingAllCatalogsColumns);\n default:\n return [];\n }\n },\n \n renderInPortal(component: JSX.Element): JSX.Element {\n return PortalHelper.renderInPortalIfExists(component, document.getElementById(this.getPortalId()));\n },\n\n getPortalId(): string {\n return AssemblyLineHelper.getPortalId();\n },\n\n getRegion(instanceRegion: string) {\n switch (instanceRegion) {\n case 'cv-ap-southeast-1':\n return 'us';\n case 'cv-eu-west-1':\n return 'eu';\n }\n },\n\n getInstanceRegionByCode(region: string) {\n switch (region) {\n case 'us':\n return 'cv-ap-southeast-1';\n case 'eu':\n return 'cv-eu-west-1';\n }\n },\n\n getAllRegions() {\n return [\n { value: 'us', label: 'AU / NZ / US / CA' },\n { value: 'eu', label: 'UK' }\n ];\n },\n\n getRegionLabel(value: string): string {\n return MarketingHelper.getAllRegions().find(r => r.value === value)?.label ?? value.toUpperCase();\n },\n\n getColumns(objectType: MarketingTableObjectType) {\n const allColumns = Object.values(MarketingHelper.getColumnDefByObjectType(objectType));\n\n const extraColumns = allColumns\n .map(columnDef => columnDef())\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(_column => {\n return true;\n });\n\n return [...extraColumns].sort((a, b) => {\n // Always put the actions column at the end\n if (a.id === 'actions')\n return 1;\n\n if (b.id === 'actions')\n return -1;\n\n return 0;\n });\n },\n\n getLeftNavItems(canManageAll: boolean, currentAction: string): LeftNavItem[] {\n const contactImportActions = new Set([\n Actions.Marketing.CONTACT_IMPORT,\n Actions.Marketing.CONTACT_IMPORT_UPLOAD,\n Actions.Marketing.CONTACT_IMPORT_ORIGIN_TYPE,\n Actions.Marketing.CONTACT_IMPORT_DESTINATION,\n Actions.Marketing.CONTACT_IMPORT_IMPORT_OPTIONS,\n Actions.Marketing.CONTACT_IMPORT_ADVANCED_OPTIONS,\n Actions.Marketing.CONTACT_IMPORT_REVIEW\n ]);\n\n const items = [\n {\n action: Actions.Marketing.CONTACT_IMPORT,\n text: 'Contact Import',\n isActive: contactImportActions.has(currentAction)\n }\n ];\n\n if (canManageAll) {\n items.push({\n action: Actions.Marketing.INDEX,\n text: 'Catalogs',\n isActive: currentAction === Actions.Marketing.INDEX\n });\n // Make catalogs the first nav item\n items.reverse();\n }\n\n return items;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"dmUfJoJz2.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/cells/MarketingBasicCell.tsx","../../../../../src/apps/marketing/views/catalogs/components/columns/MarketingCatalogsTablesColumns.tsx","../../../../../src/apps/marketing/utils/MarketingHelper.ts"],"sourcesContent":["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 { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nexport type DataTypes = string | string[] | BaseObject | BaseObject[] | number;\n\nfunction isEmpty(data: DataTypes): boolean {\n if (typeof data === 'number')\n return false;\n\n if (data === null || data === undefined || data === '')\n return true;\n\n if (Array.isArray(data))\n return data.length === 0;\n\n return false;\n}\n\nfunction getName(data: BaseObject | string | number | boolean): string {\n if (typeof data === 'string')\n return data;\n\n if (typeof data === 'boolean')\n return data.toString();\n\n if (typeof data === 'number')\n return data.toString();\n\n return data.name;\n}\n\ninterface MarketingBasicCellProps {\n data: DataTypes;\n appLink?: Core.AppLink;\n clampLevel?: number;\n readonly?: boolean;\n}\n\nexport function MarketingBasicCell(props: MarketingBasicCellProps): JSX.Element {\n if (isEmpty(props.data)) {\n return (\n <AppLink\n className={`text-decoration-none w-100 px-3 py-2 d-flex align-items-center clamp-${props.clampLevel} ${props.readonly ? 'text-dark' : 'text-success'}`}\n appLink={props.appLink}\n disabled={props.readonly}\n >\n {props.appLink ? (\n <>\n <SvgContainer svg={PlusSvg} className='svg-container me-1' />\n Add\n </>\n ) : (\n <>-</>\n )}\n </AppLink>\n );\n }\n\n const name = getName(Array.isArray(props.data) ? props.data[0] : props.data);\n\n if (props.readonly) {\n return (\n <div className='w-100 d-flex align-items-center'>\n <div className={`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${props.clampLevel} text-dark`}>\n <span className={`clamp-${props.clampLevel}`} title={name}>\n {name}\n </span>\n </div>\n </div>\n );\n }\n\n return (\n <div className='w-100 d-flex align-items-center'>\n <AppLink\n className={`text-decoration-none px-3 py-2 d-inline-flex w-100 clamp-${props.clampLevel} text-info`}\n appLink={props.appLink}\n >\n <span className={`clamp-${props.clampLevel}`} title={name}>\n {name}\n </span>\n </AppLink>\n </div>\n );\n}\n","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\nimport { MarketingBasicCell } from 'apps/marketing/views/catalogs/components/cells/MarketingBasicCell';\n\nconst columnHelper = createColumnHelper<BrazeCatalog>();\n\nexport const MarketingAllCatalogsColumns = {\n name: () => {\n return columnHelper.accessor(w => w, {\n id: 'name',\n header: () => (\n <MarketingBasicCell\n data='Name'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={catalog.name}\n clampLevel={2}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.VIEW_CATALOG,\n args: [ MarketingHelper.getRegion(catalog.region), catalog.name ]\n }}\n />\n );\n }\n });\n },\n\n description: () => {\n return columnHelper.accessor(w => w, {\n id: 'description',\n header: () => (\n <MarketingBasicCell\n data='Description'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={catalog.description}\n clampLevel={2}\n readonly={true}\n />\n );\n }\n });\n },\n\n region: () => {\n return columnHelper.accessor(w => w, {\n id: 'region',\n header: () => (\n <MarketingBasicCell\n data='Region'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const catalog = props.getValue();\n return (\n <MarketingBasicCell\n data={MarketingHelper.getRegion(catalog.region).toUpperCase()}\n clampLevel={2}\n readonly={true}\n />\n );\n }\n });\n }\n\n // action: () => {\n // return columnHelper.accessor(w => w, {\n // id: 'actions',\n // header: 'Actions',\n // cell: props => {\n // const catalog = props.getValue();\n // const actions: MarketingDropdownItem[] = [\n // {\n // label: 'Delete',\n // onClick: () => {\n // const applink = {\n // application: AppChannels.MARKETING_APP,\n // action: Actions.Marketing.DELETE_CATALOG,\n // args: [ catalog.name, catalog.region ]\n // };\n // Core.AppLinkHelper.trigger(applink);\n // }\n // }];\n \n // return (\n // <div className={'p-1'}>\n // <MarketingDropdownCell actions={actions}/>\n // </div>\n // );\n // }\n // });\n // }\n};\n","import { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { Actions } from 'shared/constants/CuratorActions';\n\nimport { AssemblyLineHelper } from 'apps/assembly-line/utils/AssemblyLineHelper';\nimport { LeftNavItem } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingAllCatalogsColumns } from 'apps/marketing/views/catalogs/components/columns/MarketingCatalogsTablesColumns';\n\nexport type MarketingTableObjectType = 'index';\n\nexport const MarketingHelper = {\n getColumnDefByObjectType(objectType: MarketingTableObjectType) {\n switch (objectType) {\n case 'index':\n return Object.values(MarketingAllCatalogsColumns);\n default:\n return [];\n }\n },\n \n renderInPortal(component: JSX.Element): JSX.Element {\n return PortalHelper.renderInPortalIfExists(component, document.getElementById(this.getPortalId()));\n },\n\n getPortalId(): string {\n return AssemblyLineHelper.getPortalId();\n },\n\n getRegion(instanceRegion: string) {\n switch (instanceRegion) {\n case 'cv-ap-southeast-1':\n return 'us';\n case 'cv-eu-west-1':\n return 'eu';\n }\n },\n\n getInstanceRegionByCode(region: string) {\n switch (region) {\n case 'us':\n return 'cv-ap-southeast-1';\n case 'eu':\n return 'cv-eu-west-1';\n }\n },\n\n getAllRegions() {\n return [\n { value: 'us', label: 'AU / NZ / US / CA' },\n { value: 'eu', label: 'UK' }\n ];\n },\n\n getRegionLabel(value: string): string {\n return MarketingHelper.getAllRegions().find(r => r.value === value)?.label ?? value.toUpperCase();\n },\n\n getColumns(objectType: MarketingTableObjectType) {\n const allColumns = Object.values(MarketingHelper.getColumnDefByObjectType(objectType));\n\n const extraColumns = allColumns\n .map(columnDef => columnDef())\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(_column => {\n return true;\n });\n\n return [...extraColumns].sort((a, b) => {\n // Always put the actions column at the end\n if (a.id === 'actions')\n return 1;\n\n if (b.id === 'actions')\n return -1;\n\n return 0;\n });\n },\n\n getLeftNavItems(canManageAll: boolean, currentAction: string): LeftNavItem[] {\n const contactImportActions = new Set([\n Actions.Marketing.CONTACT_IMPORT,\n Actions.Marketing.CONTACT_IMPORT_UPLOAD,\n Actions.Marketing.CONTACT_IMPORT_ORIGIN_TYPE,\n Actions.Marketing.CONTACT_IMPORT_DESTINATION,\n Actions.Marketing.CONTACT_IMPORT_IMPORT_OPTIONS,\n Actions.Marketing.CONTACT_IMPORT_ADVANCED_OPTIONS,\n Actions.Marketing.CONTACT_IMPORT_REVIEW\n ]);\n\n const items = [\n {\n action: Actions.Marketing.CONTACT_IMPORT,\n text: 'Contact Import',\n isActive: contactImportActions.has(currentAction)\n }\n ];\n\n if (canManageAll) {\n items.push({\n action: Actions.Marketing.INDEX,\n text: 'Catalogs',\n isActive: currentAction === Actions.Marketing.INDEX\n });\n // Make catalogs the first nav item\n items.reverse();\n }\n\n return items;\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,r as i}from"./Crs6pJ2h.chunk.js";import{C as a,D as o,E as s,F as c,M as l,N as u,O as d,j as f,k as p,x as m}from"./C7Gmh7eY.chunk.js";import{t as h}from"./Da4lNxpT2.chunk.js";import{t as g}from"./D-JsEiDq2.chunk.js";import{a as _}from"./Dgk5cBBe.chunk.js";import{t as v}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as y}from"./B1uI4W1W.chunk.js";import{t as b}from"./Bwpvc7Th2.chunk.js";import{t as x}from"./DXxANMv5.chunk.js";import{c as S,i as C}from"./DA0I3jYA.chunk.js";import{t as w}from"./dKyhMawf.chunk.js";import{t as T}from"./BDcEBenk.chunk.js";import{t as E}from"./R3C4JT9X2.chunk.js";import{n as D}from"./C4Ey4nzb2.chunk.js";import{t as O}from"./DLH_r3Sm.chunk.js";import{t as k}from"./Da5VTiBZ.chunk.js";import{t as A}from"./DZt0Izys.chunk.js";import{t as j}from"./2NdfwDHB.chunk.js";import{t as M}from"./Dmnz9ZcP.chunk.js";import{n as N}from"./BJdNIGDD2.chunk.js";import{t as P}from"./FGAXjpUs.chunk.js";import{t as F}from"./DHD4nY6U.chunk.js";import{t as I}from"./BUtlulMl.chunk.js";var L=n(e()),R=t(),z=`edit-video-at-glance-details`;function B(e){let t=N(),n=S(),r=n.values?.format===l.Markdown&&n.values?.content;return L.useEffect(()=>n.dirty?t.lock({id:z,title:`Are you use you want to leave?`,text:`By leaving the current page all changes will be discarded`}):t.unlock(z),[n.dirty]),(0,R.jsxs)(`div`,{className:`form-group p-2 border`,children:[(0,R.jsx)(`div`,{className:`border-bottom mb-2`,children:(0,R.jsx)(`label`,{children:`Video at a Glance`})}),(0,R.jsx)(D,{label:`Content`,as:`textarea`,name:`content`,id:`content`,value:n.values?.content??``}),r&&(0,R.jsxs)(`div`,{className:`form-group`,children:[(0,R.jsx)(`label`,{children:`Preview`}),(0,R.jsx)(u,{video:{glance:n.values,tags:e.tags},pointsOfInterest:e.pointsOfInterest,canViewGlance:!0})]}),e.children]})}function V(e){let t=S(),n=E(t);return(0,R.jsxs)(C,{children:[(0,R.jsx)(D,{label:`Description`,type:`text`,name:`description`,id:`description`,autoFocus:!0,placeholder:`Enter description...`,value:t.values.description||``}),(0,R.jsxs)(`fieldset`,{className:`d-flex align-items-center`,"aria-describedby":`timeError`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`label`,{children:`Time Point`}),(0,R.jsx)(k,{value:t.values.startTime,setTime:e=>t.setFieldValue(`startTime`,e),formSize:`md`,hasError:!!t.errors.startTime,maxValue:e.duration-1,duration:e.duration})]}),(0,R.jsxs)(`div`,{className:`ms-2`,children:[(0,R.jsx)(`label`,{children:`Max Time`}),(0,R.jsx)(k,{value:e.duration-1,setTime:()=>{},formSize:`md`,hideButtons:!0,disabled:!0,duration:e.duration})]})]}),!!t.errors.startTime&&(0,R.jsx)(O,{name:`time`,children:t.errors.startTime}),(0,R.jsxs)(`div`,{className:`d-flex justify-content-end border-top pt-3 px-3 mx-n3 mt-3`,children:[(0,R.jsx)(h,{variant:`link`,className:`ms-2`,onClick:e.closePopup,children:`Cancel`}),(0,R.jsx)(h,{type:`submit`,className:`ms-2`,variant:`dark`,disabled:!n,children:`Confirm`})]})]})}var H={add:`add`,edit:`edit`};function U(e){let t={description:e.pointOfInterest?.description??``,startTime:e.pointOfInterest?.startTime??0};function n(t){e.actionType===H.add&&e.addPOI(t.startTime,t.description),e.actionType===H.edit&&e.editPOI(e.pointOfInterest,t.startTime,t.description)}function r(){return e.actionType===H.add?e.listOfPOIStartTime:e.listOfPOIStartTime.filter(t=>t!==e.pointOfInterest.startTime)}return(0,R.jsx)(g,{title:e.popupTitle,size:`lg`,closePopup:e.closePopup,children:(0,R.jsx)(w,{initialValues:t,validationSchema:d(r(),e.duration),onSubmit:n,children:(0,R.jsx)(V,{duration:e.duration,listOfPOIStartTime:e.listOfPOIStartTime,closePopup:e.closePopup,actionType:e.actionType})})})}function W(e){return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{className:`d-flex justify-content-end align-items-center py-3`,children:(0,R.jsx)(A,{className:`btn btn-outline-dark ms-2`,onClick:e.showAddPointOfInterestPopup,tooltip:`Add new Point of Interest`,svg:y,svgSize:i.Standard,disabled:e.disabled,children:`New`})}),(0,R.jsx)(a,{pointsOfInterest:e.pointsOfInterest,onClickAdd:e.showAddPointOfInterestPopup,onClickEdit:e.showEditPointOfInterestPopup,onClickDelete:e.showDeletePointOfInterestPopup,disabled:e.disabled})]})}var G=0;function K(){return G++,`lookup-${G.toString()}`}function q(e,t){switch(t.type){case`init`:{let{list:e,duration:n}=t.payload;return{list:e,duration:n,hasBeenModified:!1}}case`add`:{let{timePoint:n,description:r}=t.payload,i={startTime:n,endTime:0,description:r,id:K()},a=(e.list||[]).concat(i),o=p.sanitizePointsOfInterest(a,e.duration);return{...e,hasBeenModified:!0,list:o}}case`edit`:{let{pointOfInterest:n,timePoint:r,description:i}=t.payload,a=e.list.map(e=>e.id===n.id?{...e,startTime:r,endTime:0,description:i}:e),o=p.sanitizePointsOfInterest(a,e.duration);return{...e,hasBeenModified:!0,list:o}}case`delete`:{let{pointOfInterest:n}=t.payload,r=e.list.filter(e=>e.id!==n.id),i=p.sanitizePointsOfInterest(r,e.duration);return{...e,hasBeenModified:!0,list:i.length?i:null}}default:return e}}var J=`glance-navlock`;function Y(e){let t=[];return e&&e.map(e=>t.push(e.startTime)),t}function X(e){let t=N(),n=b(),a=Math.floor(T.getDuration(e.obj))/1e3,[l,u]=L.useState(),[d,p]=L.useState(),[m,g]=L.useState(),[_,v]=L.useState(!1),[y,S]=L.useReducer(q,{list:e.initialPois,hasBeenModified:!1,duration:a});L.useEffect(()=>{y.hasBeenModified||O()},[]),L.useEffect(()=>y.hasBeenModified?t.lock({id:J,title:`Are you sure you want to leave?`,text:`By leaving the current page all changes will be discarded`}):t.unlock(J),[y.hasBeenModified]);function E(e,t){S({type:`add`,payload:{timePoint:e,description:t}}),u(!1)}function D(e,t,n){S({type:`edit`,payload:{pointOfInterest:e,timePoint:t,description:n}}),p(null)}function O(){S({type:`init`,payload:{list:e.initialPois,hasBeenModified:!1,duration:a}})}function k(e,t){let{message:r}=t?.responseJSON,i=`Failed to ${e} Video at a Glance.`;r&&(i+=` ${r}`),n.error(i)}function P(t,r){e.saveGlance(t).then(()=>n.success(`Successfully updated Video at a Glance`)).catch(e=>k(`update`,e)).finally(()=>r({reset:!0}))}function F(){e.deleteGlance().then(()=>n.success(`Successfully deleted Video at a Glance`)).catch(e=>k(`delete`,e))}function z(t,r){if(!t.hasPointsOfInterest){e.onToggleHasPointsOfInterest(!1,t).finally(r);return}e.updatePointsOfInterest(y.list).then(e=>{S({type:`init`,payload:{...y,list:e.pointsOfInterest.data,hasBeenModified:!1}}),n.success(`Successfully updated Points of Interest`)}).catch(()=>{n.error(`Failed to update Points of Interest`)}).finally(r)}function V(e){let t=e.values;return t.hasPointsOfInterest?y.hasBeenModified?!y.list?.length&&t.hasPointsOfInterest?{disableSavePoi:!0,savePoiTooltip:`Please check the checkbox above to remove all POIs.`}:{disableSavePoi:!1,savePoiTooltip:``}:{disableSavePoi:!0,savePoiTooltip:`No changes have been made`}:e.dirty?t.bypassCategory===`Other`&&!t.bypassReason?{disableSavePoi:!0,savePoiTooltip:`Please provide a reason`}:t.bypassCategory?y.list?.length?{disableSavePoi:!0,savePoiTooltip:`Points of Interest are disabled. Please uncheck the checkbox above to manage POIs.`}:{disableSavePoi:!1,savePoiTooltip:``}:{disableSavePoi:!0,savePoiTooltip:`Which reason category applies?`}:{disableSavePoi:!0,savePoiTooltip:`No changes have been made`}}return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(w,{initialValues:e.contentPipelineVideo?{bypassCategory:e.contentPipelineVideo.comments?.bypassPointsOfInterest?.category??``,bypassReason:e.contentPipelineVideo.comments?.bypassPointsOfInterest?.reason??``,hasPointsOfInterest:e.contentPipelineVideo.hasPointsOfInterest}:{bypassCategory:``,bypassReason:``,hasPointsOfInterest:!0},onSubmit:z,enableReinitialize:!0,children:t=>(0,R.jsx)(C,{children:(0,R.jsxs)(`div`,{className:`form-group p-2 border`,children:[(0,R.jsxs)(`div`,{className:`border-bottom mb-2`,children:[(0,R.jsx)(`label`,{children:`Points of Interest`}),!!e.contentPipelineVideo&&(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(s,{onToggle:()=>{t.setValues({bypassCategory:``,bypassReason:``,hasPointsOfInterest:!t.values.hasPointsOfInterest})},checked:!t.values.hasPointsOfInterest,hasPointsOfInterest:!!(t.values.hasPointsOfInterest&&y.list?.length)})})]}),t.values.hasPointsOfInterest?(0,R.jsx)(W,{pointsOfInterest:y.list,showAddPointOfInterestPopup:()=>u(!0),showEditPointOfInterestPopup:e=>p(e),showDeletePointOfInterestPopup:e=>g(e),hasUnsavedChanges:y.hasBeenModified}):(0,R.jsx)(o,{categories:c.bypassPointsOfInterest,dropdownPlaceholder:`Why doesn't this video require points of interest?`}),(0,R.jsxs)(`div`,{className:`d-flex justify-content-end mt-2`,children:[(0,R.jsx)(h,{variant:`link`,className:`ms-2`,hidden:!y.hasBeenModified,onClick:()=>O(),disabled:!t.values.hasPointsOfInterest,children:`Undo changes`}),(0,R.jsx)(r,{title:V(t).savePoiTooltip,spanHack:!0,children:(0,R.jsx)(h,{type:`submit`,className:`ms-2`,variant:`dark`,disabled:V(t).disableSavePoi,children:`Save POI`})})]})]})})}),(0,R.jsx)(w,{initialValues:e.obj.glance,validationSchema:f,onSubmit:P,children:(0,R.jsx)(C,{children:(0,R.jsx)(B,{tags:e.tags,pointsOfInterest:e.initialPois,children:(0,R.jsxs)(`div`,{className:`d-flex justify-content-end`,children:[e.obj.glance&&(0,R.jsx)(A,{className:`btn btn-outline-danger me-2`,onClick:e=>{e.preventDefault(),v(!0)},svg:j,svgSize:i.Standard,children:`Delete`}),(0,R.jsx)(I,{isNew:!e.obj.id,submitText:`Save Glance`,variant:`dark`})]})})})}),l&&(0,R.jsx)(U,{popupTitle:`Add Point of Interest`,closePopup:()=>u(!1),duration:a,addPOI:E,actionType:`add`,listOfPOIStartTime:Y(y.list)}),d&&(0,R.jsx)(U,{popupTitle:`Edit Point of interest`,closePopup:()=>p(null),pointOfInterest:d,duration:a,editPOI:D,actionType:`edit`,listOfPOIStartTime:Y(y.list)}),m&&(0,R.jsx)(M,{title:`Delete point of interest?`,confirmButtonVariant:`danger`,onClickConfirm:()=>{S({type:`delete`,payload:{pointOfInterest:m}}),g(null)},closePopup:()=>g(null),children:(0,R.jsxs)(`p`,{children:[`Are you sure you want to delete `,(0,R.jsx)(`strong`,{children:m.description}),` at `,(0,R.jsx)(`strong`,{children:x.ToDisplayDuration(m.startTime*1e3)}),`?`]})}),_&&(0,R.jsx)(M,{title:`Delete Video at a Glance?`,confirmButtonVariant:`danger`,onClickConfirm:()=>{F(),v(!1)},closePopup:()=>v(!1),children:(0,R.jsx)(`p`,{children:`Deleting a glance will remove all of it's current content. Are you sure you want to delete this glance?`})})]})}function Z(e){let t=v();function n(t){return m.pointsOfInterest(e,t)}function r(e){_(t)(n(e))}return F(!!e&&n,!!e&&r),P(!!e&&(e=>n(e).key))}export{X as n,Z as t};
2
- //# sourceMappingURL=DjlPflaG.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{a as r,r as i}from"./Crs6pJ2h.chunk.js";import{C as a,D as o,E as s,F as c,M as l,N as u,O as d,j as f,k as p,x as m}from"./DWHKdmdQ.chunk.js";import{t as h}from"./Da4lNxpT2.chunk.js";import{t as g}from"./D-JsEiDq2.chunk.js";import{a as _}from"./Dgk5cBBe.chunk.js";import{t as v}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as y}from"./B1uI4W1W.chunk.js";import{t as b}from"./Bwpvc7Th2.chunk.js";import{t as x}from"./DXxANMv5.chunk.js";import{c as S,i as C}from"./DA0I3jYA.chunk.js";import{t as w}from"./dKyhMawf.chunk.js";import{t as T}from"./BDcEBenk.chunk.js";import{t as E}from"./R3C4JT9X2.chunk.js";import{n as D}from"./C4Ey4nzb2.chunk.js";import{t as O}from"./DLH_r3Sm.chunk.js";import{t as k}from"./Da5VTiBZ.chunk.js";import{t as A}from"./DZt0Izys.chunk.js";import{t as j}from"./2NdfwDHB.chunk.js";import{t as M}from"./Dmnz9ZcP.chunk.js";import{n as N}from"./BJdNIGDD2.chunk.js";import{t as P}from"./FGAXjpUs.chunk.js";import{t as F}from"./DHD4nY6U.chunk.js";import{t as I}from"./BUtlulMl.chunk.js";var L=n(e()),R=t(),z=`edit-video-at-glance-details`;function B(e){let t=N(),n=S(),r=n.values?.format===l.Markdown&&n.values?.content;return L.useEffect(()=>n.dirty?t.lock({id:z,title:`Are you use you want to leave?`,text:`By leaving the current page all changes will be discarded`}):t.unlock(z),[n.dirty]),(0,R.jsxs)(`div`,{className:`form-group p-2 border`,children:[(0,R.jsx)(`div`,{className:`border-bottom mb-2`,children:(0,R.jsx)(`label`,{children:`Video at a Glance`})}),(0,R.jsx)(D,{label:`Content`,as:`textarea`,name:`content`,id:`content`,value:n.values?.content??``}),r&&(0,R.jsxs)(`div`,{className:`form-group`,children:[(0,R.jsx)(`label`,{children:`Preview`}),(0,R.jsx)(u,{video:{glance:n.values,tags:e.tags},pointsOfInterest:e.pointsOfInterest,canViewGlance:!0})]}),e.children]})}function V(e){let t=S(),n=E(t);return(0,R.jsxs)(C,{children:[(0,R.jsx)(D,{label:`Description`,type:`text`,name:`description`,id:`description`,autoFocus:!0,placeholder:`Enter description...`,value:t.values.description||``}),(0,R.jsxs)(`fieldset`,{className:`d-flex align-items-center`,"aria-describedby":`timeError`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`label`,{children:`Time Point`}),(0,R.jsx)(k,{value:t.values.startTime,setTime:e=>t.setFieldValue(`startTime`,e),formSize:`md`,hasError:!!t.errors.startTime,maxValue:e.duration-1,duration:e.duration})]}),(0,R.jsxs)(`div`,{className:`ms-2`,children:[(0,R.jsx)(`label`,{children:`Max Time`}),(0,R.jsx)(k,{value:e.duration-1,setTime:()=>{},formSize:`md`,hideButtons:!0,disabled:!0,duration:e.duration})]})]}),!!t.errors.startTime&&(0,R.jsx)(O,{name:`time`,children:t.errors.startTime}),(0,R.jsxs)(`div`,{className:`d-flex justify-content-end border-top pt-3 px-3 mx-n3 mt-3`,children:[(0,R.jsx)(h,{variant:`link`,className:`ms-2`,onClick:e.closePopup,children:`Cancel`}),(0,R.jsx)(h,{type:`submit`,className:`ms-2`,variant:`dark`,disabled:!n,children:`Confirm`})]})]})}var H={add:`add`,edit:`edit`};function U(e){let t={description:e.pointOfInterest?.description??``,startTime:e.pointOfInterest?.startTime??0};function n(t){e.actionType===H.add&&e.addPOI(t.startTime,t.description),e.actionType===H.edit&&e.editPOI(e.pointOfInterest,t.startTime,t.description)}function r(){return e.actionType===H.add?e.listOfPOIStartTime:e.listOfPOIStartTime.filter(t=>t!==e.pointOfInterest.startTime)}return(0,R.jsx)(g,{title:e.popupTitle,size:`lg`,closePopup:e.closePopup,children:(0,R.jsx)(w,{initialValues:t,validationSchema:d(r(),e.duration),onSubmit:n,children:(0,R.jsx)(V,{duration:e.duration,listOfPOIStartTime:e.listOfPOIStartTime,closePopup:e.closePopup,actionType:e.actionType})})})}function W(e){return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{className:`d-flex justify-content-end align-items-center py-3`,children:(0,R.jsx)(A,{className:`btn btn-outline-dark ms-2`,onClick:e.showAddPointOfInterestPopup,tooltip:`Add new Point of Interest`,svg:y,svgSize:i.Standard,disabled:e.disabled,children:`New`})}),(0,R.jsx)(a,{pointsOfInterest:e.pointsOfInterest,onClickAdd:e.showAddPointOfInterestPopup,onClickEdit:e.showEditPointOfInterestPopup,onClickDelete:e.showDeletePointOfInterestPopup,disabled:e.disabled})]})}var G=0;function K(){return G++,`lookup-${G.toString()}`}function q(e,t){switch(t.type){case`init`:{let{list:e,duration:n}=t.payload;return{list:e,duration:n,hasBeenModified:!1}}case`add`:{let{timePoint:n,description:r}=t.payload,i={startTime:n,endTime:0,description:r,id:K()},a=(e.list||[]).concat(i),o=p.sanitizePointsOfInterest(a,e.duration);return{...e,hasBeenModified:!0,list:o}}case`edit`:{let{pointOfInterest:n,timePoint:r,description:i}=t.payload,a=e.list.map(e=>e.id===n.id?{...e,startTime:r,endTime:0,description:i}:e),o=p.sanitizePointsOfInterest(a,e.duration);return{...e,hasBeenModified:!0,list:o}}case`delete`:{let{pointOfInterest:n}=t.payload,r=e.list.filter(e=>e.id!==n.id),i=p.sanitizePointsOfInterest(r,e.duration);return{...e,hasBeenModified:!0,list:i.length?i:null}}default:return e}}var J=`glance-navlock`;function Y(e){let t=[];return e&&e.map(e=>t.push(e.startTime)),t}function X(e){let t=N(),n=b(),a=Math.floor(T.getDuration(e.obj))/1e3,[l,u]=L.useState(),[d,p]=L.useState(),[m,g]=L.useState(),[_,v]=L.useState(!1),[y,S]=L.useReducer(q,{list:e.initialPois,hasBeenModified:!1,duration:a});L.useEffect(()=>{y.hasBeenModified||O()},[]),L.useEffect(()=>y.hasBeenModified?t.lock({id:J,title:`Are you sure you want to leave?`,text:`By leaving the current page all changes will be discarded`}):t.unlock(J),[y.hasBeenModified]);function E(e,t){S({type:`add`,payload:{timePoint:e,description:t}}),u(!1)}function D(e,t,n){S({type:`edit`,payload:{pointOfInterest:e,timePoint:t,description:n}}),p(null)}function O(){S({type:`init`,payload:{list:e.initialPois,hasBeenModified:!1,duration:a}})}function k(e,t){let{message:r}=t?.responseJSON,i=`Failed to ${e} Video at a Glance.`;r&&(i+=` ${r}`),n.error(i)}function P(t,r){e.saveGlance(t).then(()=>n.success(`Successfully updated Video at a Glance`)).catch(e=>k(`update`,e)).finally(()=>r({reset:!0}))}function F(){e.deleteGlance().then(()=>n.success(`Successfully deleted Video at a Glance`)).catch(e=>k(`delete`,e))}function z(t,r){if(!t.hasPointsOfInterest){e.onToggleHasPointsOfInterest(!1,t).finally(r);return}e.updatePointsOfInterest(y.list).then(e=>{S({type:`init`,payload:{...y,list:e.pointsOfInterest.data,hasBeenModified:!1}}),n.success(`Successfully updated Points of Interest`)}).catch(()=>{n.error(`Failed to update Points of Interest`)}).finally(r)}function V(e){let t=e.values;return t.hasPointsOfInterest?y.hasBeenModified?!y.list?.length&&t.hasPointsOfInterest?{disableSavePoi:!0,savePoiTooltip:`Please check the checkbox above to remove all POIs.`}:{disableSavePoi:!1,savePoiTooltip:``}:{disableSavePoi:!0,savePoiTooltip:`No changes have been made`}:e.dirty?t.bypassCategory===`Other`&&!t.bypassReason?{disableSavePoi:!0,savePoiTooltip:`Please provide a reason`}:t.bypassCategory?y.list?.length?{disableSavePoi:!0,savePoiTooltip:`Points of Interest are disabled. Please uncheck the checkbox above to manage POIs.`}:{disableSavePoi:!1,savePoiTooltip:``}:{disableSavePoi:!0,savePoiTooltip:`Which reason category applies?`}:{disableSavePoi:!0,savePoiTooltip:`No changes have been made`}}return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(w,{initialValues:e.contentPipelineVideo?{bypassCategory:e.contentPipelineVideo.comments?.bypassPointsOfInterest?.category??``,bypassReason:e.contentPipelineVideo.comments?.bypassPointsOfInterest?.reason??``,hasPointsOfInterest:e.contentPipelineVideo.hasPointsOfInterest}:{bypassCategory:``,bypassReason:``,hasPointsOfInterest:!0},onSubmit:z,enableReinitialize:!0,children:t=>(0,R.jsx)(C,{children:(0,R.jsxs)(`div`,{className:`form-group p-2 border`,children:[(0,R.jsxs)(`div`,{className:`border-bottom mb-2`,children:[(0,R.jsx)(`label`,{children:`Points of Interest`}),!!e.contentPipelineVideo&&(0,R.jsx)(`div`,{className:`mb-3`,children:(0,R.jsx)(s,{onToggle:()=>{t.setValues({bypassCategory:``,bypassReason:``,hasPointsOfInterest:!t.values.hasPointsOfInterest})},checked:!t.values.hasPointsOfInterest,hasPointsOfInterest:!!(t.values.hasPointsOfInterest&&y.list?.length)})})]}),t.values.hasPointsOfInterest?(0,R.jsx)(W,{pointsOfInterest:y.list,showAddPointOfInterestPopup:()=>u(!0),showEditPointOfInterestPopup:e=>p(e),showDeletePointOfInterestPopup:e=>g(e),hasUnsavedChanges:y.hasBeenModified}):(0,R.jsx)(o,{categories:c.bypassPointsOfInterest,dropdownPlaceholder:`Why doesn't this video require points of interest?`}),(0,R.jsxs)(`div`,{className:`d-flex justify-content-end mt-2`,children:[(0,R.jsx)(h,{variant:`link`,className:`ms-2`,hidden:!y.hasBeenModified,onClick:()=>O(),disabled:!t.values.hasPointsOfInterest,children:`Undo changes`}),(0,R.jsx)(r,{title:V(t).savePoiTooltip,spanHack:!0,children:(0,R.jsx)(h,{type:`submit`,className:`ms-2`,variant:`dark`,disabled:V(t).disableSavePoi,children:`Save POI`})})]})]})})}),(0,R.jsx)(w,{initialValues:e.obj.glance,validationSchema:f,onSubmit:P,children:(0,R.jsx)(C,{children:(0,R.jsx)(B,{tags:e.tags,pointsOfInterest:e.initialPois,children:(0,R.jsxs)(`div`,{className:`d-flex justify-content-end`,children:[e.obj.glance&&(0,R.jsx)(A,{className:`btn btn-outline-danger me-2`,onClick:e=>{e.preventDefault(),v(!0)},svg:j,svgSize:i.Standard,children:`Delete`}),(0,R.jsx)(I,{isNew:!e.obj.id,submitText:`Save Glance`,variant:`dark`})]})})})}),l&&(0,R.jsx)(U,{popupTitle:`Add Point of Interest`,closePopup:()=>u(!1),duration:a,addPOI:E,actionType:`add`,listOfPOIStartTime:Y(y.list)}),d&&(0,R.jsx)(U,{popupTitle:`Edit Point of interest`,closePopup:()=>p(null),pointOfInterest:d,duration:a,editPOI:D,actionType:`edit`,listOfPOIStartTime:Y(y.list)}),m&&(0,R.jsx)(M,{title:`Delete point of interest?`,confirmButtonVariant:`danger`,onClickConfirm:()=>{S({type:`delete`,payload:{pointOfInterest:m}}),g(null)},closePopup:()=>g(null),children:(0,R.jsxs)(`p`,{children:[`Are you sure you want to delete `,(0,R.jsx)(`strong`,{children:m.description}),` at `,(0,R.jsx)(`strong`,{children:x.ToDisplayDuration(m.startTime*1e3)}),`?`]})}),_&&(0,R.jsx)(M,{title:`Delete Video at a Glance?`,confirmButtonVariant:`danger`,onClickConfirm:()=>{F(),v(!1)},closePopup:()=>v(!1),children:(0,R.jsx)(`p`,{children:`Deleting a glance will remove all of it's current content. Are you sure you want to delete this glance?`})})]})}function Z(e){let t=v();function n(t){return m.pointsOfInterest(e,t)}function r(e){_(t)(n(e))}return F(!!e&&n,!!e&&r),P(!!e&&(e=>n(e).key))}export{X as n,Z as t};
2
+ //# sourceMappingURL=fapHSEex.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DjlPflaG.chunk.js","names":[],"sources":["../../../../../src/apps/videos/components/edit-video-details/EditGlance.tsx","../../../../../src/apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestForm.tsx","../../../../../src/apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestPopup.tsx","../../../../../src/apps/videos/components/points-of-interest/points-of-interest-list/PointsOfInterestList.tsx","../../../../../src/apps/videos/reducers/PointOfInterestReducer.ts","../../../../../src/apps/glance/components/edit-glance-and-pois/EditGlanceAndPois.tsx","../../../../../src/apps/glance/hooks/useFetchPointsOfInterest.ts"],"sourcesContent":["import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { PointOfInterest, TagCollection } from 'libs/shared/interfaces';\n\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\n\ninterface EditGlanceProps {\n tags: TagCollection;\n pointsOfInterest: PointOfInterest[];\n}\n\nconst NAV_LOCK_ID = 'edit-video-at-glance-details';\n\nexport function EditGlance(props: React.PropsWithChildren<EditGlanceProps>): JSX.Element {\n const navLock = useNavLock();\n const formikProps = useFormikContext<UpdateGlanceRequest>();\n\n const showPreview = formikProps.values?.format === GlanceFormat.Markdown\n && formikProps.values?.content;\n\n React.useEffect(() => {\n if (formikProps.dirty)\n return navLock.lock({\n id: NAV_LOCK_ID,\n title: 'Are you use you want to leave?',\n text: 'By leaving the current page all changes will be discarded'\n });\n\n return navLock.unlock(NAV_LOCK_ID);\n }, [formikProps.dirty]);\n\n return (\n <div className='form-group p-2 border'>\n <div className='border-bottom mb-2'>\n <label>Video at a Glance</label>\n </div>\n <FormField<UpdateGlanceRequest>\n label='Content'\n as='textarea'\n name='content'\n id='content'\n value={formikProps.values?.content ?? ''}\n />\n {showPreview &&\n <div className='form-group'>\n <label>Preview</label>\n <VideoAtAGlanceV2\n video={{ glance: formikProps.values, tags: props.tags }}\n pointsOfInterest={props.pointsOfInterest}\n canViewGlance\n />\n </div>\n }\n {props.children}\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { TimeInput } from 'libs/shared/components/time-input/TimeInput';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nimport { ManagePointsOfInterestFormData } from 'apps/videos/interfaces/model/ManagePointsOfInterestFormData';\n\nimport { actionType } from './ManagePointOfInterestPopup';\n\ninterface ManagePointOfInterestFormProps {\n duration: number;\n listOfPOIStartTime: number[];\n closePopup: () => void;\n actionType: actionType;\n}\n\nexport function ManagePointOfInterestForm(props: ManagePointOfInterestFormProps): JSX.Element {\n const formikProps = useFormikContext<ManagePointsOfInterestFormData>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <FormField<ManagePointsOfInterestFormData>\n label='Description'\n type='text'\n name='description'\n id='description'\n autoFocus\n placeholder='Enter description...'\n value={formikProps.values.description || ''}\n />\n <fieldset className='d-flex align-items-center' aria-describedby='timeError'>\n <div>\n <label>\n Time Point\n </label>\n <TimeInput\n value={formikProps.values.startTime}\n setTime={startTime => formikProps.setFieldValue('startTime', startTime)}\n formSize='md'\n hasError={!!formikProps.errors.startTime}\n maxValue={props.duration - 1}\n duration={props.duration}\n />\n </div>\n <div className='ms-2'>\n <label>\n Max Time\n </label>\n <TimeInput\n value={props.duration - 1}\n setTime={() => {}}\n formSize='md'\n hideButtons\n disabled\n duration={props.duration}\n />\n </div>\n </fieldset>\n {!!formikProps.errors.startTime && <FormFeedback name='time'>{formikProps.errors.startTime}</FormFeedback>}\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3 mt-3'>\n <Button\n variant='link'\n className='ms-2'\n onClick={props.closePopup}\n >\n Cancel\n </Button>\n <Button\n type='submit'\n className='ms-2'\n variant='dark'\n disabled={!canSubmit}\n >\n Confirm\n </Button>\n </div>\n </Form>\n );\n}\n","import React from 'react';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { ManagePointsOfInterestFormData } from 'apps/videos/interfaces/model/ManagePointsOfInterestFormData';\nimport { getPointOfInterestValidation } from 'apps/videos/utils/validation/ManagePointsOfInterestValidation';\n\nimport { ManagePointOfInterestForm } from './ManagePointOfInterestForm';\n\nexport type actionType = 'add' | 'edit';\n\ninterface ManagePointOfInterestPopupProps {\n popupTitle: string;\n closePopup: () => void;\n pointOfInterest?: PointOfInterest;\n duration: number;\n actionType: actionType;\n listOfPOIStartTime: number[];\n addPOI?: (timePoint: number, description?: string) => void;\n editPOI?: (pointOfInterest: PointOfInterest, timePoint: number, description: string) => void;\n}\n\nexport const ACTION = {\n add: 'add',\n edit: 'edit'\n};\n\nexport function ManagePointOfInterestPopup(props: ManagePointOfInterestPopupProps): JSX.Element {\n const initialValues = {\n description: props.pointOfInterest?.description ?? '',\n startTime: props.pointOfInterest?.startTime ?? 0\n };\n\n function managePointsOfInterest(data: ManagePointsOfInterestFormData): void {\n if (props.actionType === ACTION.add) {\n props.addPOI(data.startTime, data.description);\n }\n if (props.actionType === ACTION.edit) {\n props.editPOI(props.pointOfInterest, data.startTime, data.description);\n }\n }\n\n function getOtherPoiStartTimes(): number[] {\n if (props.actionType === ACTION.add) {\n return props.listOfPOIStartTime;\n }\n \n return props.listOfPOIStartTime.filter(poi => poi !== props.pointOfInterest.startTime);\n }\n\n return (\n <Popup title={props.popupTitle} size='lg' closePopup={props.closePopup}>\n <FormWrapper<ManagePointsOfInterestFormData>\n initialValues={initialValues}\n validationSchema={getPointOfInterestValidation(getOtherPoiStartTimes(), props.duration)}\n onSubmit={managePointsOfInterest}\n >\n <ManagePointOfInterestForm\n duration={props.duration}\n listOfPOIStartTime={props.listOfPOIStartTime}\n closePopup={props.closePopup}\n actionType={props.actionType}\n />\n </FormWrapper>\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { PointOfInterestTable } from 'apps/videos/components/points-of-interest/points-of-interest-list/PointOfInterestTable';\n\ninterface PointsOfInterestListProps {\n pointsOfInterest: PointOfInterest[];\n showAddPointOfInterestPopup: () => void;\n showEditPointOfInterestPopup: (pointOfInterest: PointOfInterest) => void;\n showDeletePointOfInterestPopup: (pointOfInterest: PointOfInterest) => void;\n hasUnsavedChanges: boolean;\n disabled?: boolean;\n}\n\nexport function PointsOfInterestList(props: PointsOfInterestListProps): JSX.Element {\n return (\n <>\n <div className='d-flex justify-content-end align-items-center py-3'>\n <ActionButton\n className='btn btn-outline-dark ms-2'\n onClick={props.showAddPointOfInterestPopup}\n tooltip='Add new Point of Interest'\n svg={PlusSvg}\n svgSize={SvgContainerSize.Standard}\n disabled={props.disabled}\n >\n New\n </ActionButton>\n </div>\n <PointOfInterestTable\n pointsOfInterest={props.pointsOfInterest}\n onClickAdd={props.showAddPointOfInterestPopup}\n onClickEdit={props.showEditPointOfInterestPopup}\n onClickDelete={props.showDeletePointOfInterestPopup}\n disabled={props.disabled}\n />\n </>\n );\n}\n","import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { GlanceHelper } from 'shared/utils/GlanceHelper';\n\nlet lookupId = 0;\n\nfunction getLookupId(): string {\n lookupId++;\n\n return `lookup-${lookupId.toString()}`;\n}\n\ntype ActionTypes = 'init' | 'add' | 'edit' | 'delete';\n\nexport interface PointOfInterestReducerState {\n list: PointOfInterest[];\n hasBeenModified: boolean;\n duration: number;\n}\n\n/**\n * Reducer\n */\nexport function PointOfInterestReducer(\n state: PointOfInterestReducerState,\n action: ReducerActions<ActionTypes, any>\n): PointOfInterestReducerState {\n switch (action.type) {\n case 'init': {\n const { list, duration } = action.payload;\n return { list, duration, hasBeenModified: false };\n }\n\n case 'add': {\n const { timePoint, description } = action.payload;\n\n const newPointOfInterest: PointOfInterest = {\n startTime: timePoint,\n endTime: 0,\n description,\n id: getLookupId()\n };\n\n const updatedList = (state.list || []).concat(newPointOfInterest);\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return { ...state, hasBeenModified: true, list: sanitized };\n }\n\n case 'edit': {\n const { pointOfInterest, timePoint, description } = action.payload;\n\n const updatedList = state.list.map(poi => {\n if (poi.id !== pointOfInterest.id)\n return poi;\n\n return {\n ...poi,\n startTime: timePoint,\n endTime: 0,\n description\n };\n });\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return { ...state, hasBeenModified: true, list: sanitized };\n }\n\n case 'delete': {\n const { pointOfInterest } = action.payload;\n \n const updatedList = state.list.filter(poi => poi.id !== pointOfInterest.id);\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return {\n ...state,\n hasBeenModified: true,\n list: sanitized.length ? sanitized : null\n };\n }\n\n default:\n return state;\n }\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Form, FormikProps } from 'formik';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\n\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { Clip, Glance, PointOfInterest, TagCollection, Video } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { BypassComment } from 'apps/assembly-line/components/bypass-comment/BypassComment';\nimport { PointOfInterestBypassCheckbox } from 'apps/assembly-line/components/fields/edit-points-of-interest/components/PointOfInterestBypassCheckbox';\nimport { AssemblyLineBypassCategories } from 'apps/assembly-line/constants/AssemblyLineBypassCategories';\nimport { CommentFormData } from 'apps/assembly-line/interfaces/primitives/CommentFormData';\nimport { AssemblyLineVideoResponse } from 'apps/assembly-line/interfaces/responses/AssemblyLineVideoResponse';\nimport { EditGlance } from 'apps/videos/components/edit-video-details/EditGlance';\nimport { ManagePointOfInterestPopup } from 'apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestPopup';\nimport { PointsOfInterestList } from 'apps/videos/components/points-of-interest/points-of-interest-list/PointsOfInterestList';\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\nimport { PointOfInterestReducer } from 'apps/videos/reducers/PointOfInterestReducer';\nimport { GlanceValidationSchema } from 'apps/videos/utils/validation/GlanceValidation';\n\nconst NAV_LOCK_ID = 'glance-navlock';\n\ninterface ContentPipelineVideoFormData extends CommentFormData {\n hasPointsOfInterest: boolean;\n}\n\nfunction getListOfPOIStartTime(listOfPointsOfInterest: PointOfInterest[]): number[] {\n const listOfPOIStartTime: number[] = [];\n if (listOfPointsOfInterest)\n listOfPointsOfInterest.map(poi => listOfPOIStartTime.push(poi.startTime));\n\n return listOfPOIStartTime;\n}\n\ninterface EditGlanceAndPoisProps {\n obj: Clip | Video;\n contentPipelineVideo: AssemblyLineVideoResponse;\n initialPois: PointOfInterest[];\n tags: TagCollection;\n saveGlance: (data: UpdateGlanceRequest) => Promise<void>;\n deleteGlance: () => Promise<void>;\n updatePointsOfInterest: (pointsOfInterest: PointOfInterest[]) => Promise<Clip | Video>;\n onToggleHasPointsOfInterest: (state: boolean, comment: CommentFormData) => Promise<void>;\n}\n\nexport function EditGlanceAndPois(props: EditGlanceAndPoisProps): JSX.Element {\n const navLock = useNavLock();\n const alerts = useAlerts();\n\n const duration = Math.floor(VideoHelper.getDuration(props.obj)) / 1000;\n\n const [ pointOfInterestToAdd, setPointOfInterestToAdd ] = React.useState<boolean>();\n const [ pointOfInterestToEdit, setPointOfInterestToEdit ] = React.useState<PointOfInterest>();\n const [ pointOfInterestToDelete, setPointOfInterestToDelete ] = React.useState<PointOfInterest>();\n const [ showDeleteGlancePopup, setShowDeleteGlancePopup ] = React.useState<boolean>(false);\n const [ state, dispatch ] = React.useReducer(PointOfInterestReducer, {\n list: props.initialPois,\n hasBeenModified: false,\n duration\n });\n\n /* \n * This hook is called to initialise POI list in reducer. \n * It is called when the first time page load and whenever we update the POI in the backend \n */\n React.useEffect(() => {\n if (state.hasBeenModified)\n return;\n\n resetListOfPOI();\n }, []);\n\n React.useEffect(() => {\n if (state.hasBeenModified)\n return navLock.lock({\n id: NAV_LOCK_ID,\n title: 'Are you sure you want to leave?',\n text: 'By leaving the current page all changes will be discarded'\n });\n \n return navLock.unlock(NAV_LOCK_ID);\n }, [state.hasBeenModified]);\n\n function addPOI(timePoint: number, description: string) {\n dispatch({\n type: 'add',\n payload: {\n timePoint,\n description\n }\n });\n setPointOfInterestToAdd(false);\n }\n\n function editPOI(pointOfInterest: PointOfInterest, timePoint: number, description: string) {\n dispatch({\n type: 'edit',\n payload: {\n pointOfInterest,\n timePoint,\n description\n }\n });\n setPointOfInterestToEdit(null);\n }\n\n function resetListOfPOI() {\n dispatch({\n type: 'init',\n payload: {\n list: props.initialPois,\n hasBeenModified: false,\n duration\n }\n });\n }\n\n function handleError(type: 'update' | 'delete', xhr: Xhr) {\n const { message } = xhr?.responseJSON;\n let alertMessage = `Failed to ${type} Video at a Glance.`;\n if (message) {\n alertMessage += ` ${message}`;\n }\n alerts.error(alertMessage);\n }\n\n function saveGlance(data: UpdateGlanceRequest, onDone: (options?: FormSubmissionOptions) => void): void {\n props.saveGlance(data)\n .then(() => alerts.success('Successfully updated Video at a Glance'))\n .catch((xhr: Xhr) => handleError('update', xhr))\n .finally(() => onDone({ reset: true }));\n }\n\n function deleteGlance(): void {\n props.deleteGlance()\n .then(() => alerts.success('Successfully deleted Video at a Glance'))\n .catch((xhr: Xhr) => handleError('delete', xhr));\n }\n\n function updatePointsOfInterest(formData: ContentPipelineVideoFormData, onDone: () => void): void {\n if (!formData.hasPointsOfInterest) {\n props.onToggleHasPointsOfInterest(false, formData).finally(onDone);\n return;\n }\n\n props.updatePointsOfInterest(state.list)\n .then((obj: Clip | Video) => {\n dispatch({\n type: 'init',\n payload: {\n ...state,\n list: obj.pointsOfInterest.data,\n hasBeenModified: false\n }\n });\n\n alerts.success('Successfully updated Points of Interest');\n })\n .catch(() => {\n alerts.error('Failed to update Points of Interest');\n })\n .finally(onDone);\n }\n\n function getSavePoiInfo(contentPipelineVideoForm: FormikProps<ContentPipelineVideoFormData>) {\n const formData = contentPipelineVideoForm.values;\n\n if (!formData.hasPointsOfInterest) {\n if (!contentPipelineVideoForm.dirty) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'No changes have been made'\n };\n }\n\n if (formData.bypassCategory === 'Other' && !formData.bypassReason) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Please provide a reason'\n };\n }\n\n if (!formData.bypassCategory) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Which reason category applies?'\n };\n }\n\n if (state.list?.length) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Points of Interest are disabled. Please uncheck the checkbox above to manage POIs.'\n };\n }\n\n return {\n disableSavePoi: false,\n savePoiTooltip: ''\n };\n }\n\n if (!state.hasBeenModified) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'No changes have been made'\n };\n }\n\n if (!state.list?.length && formData.hasPointsOfInterest) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Please check the checkbox above to remove all POIs.'\n };\n }\n\n return {\n disableSavePoi: false,\n savePoiTooltip: ''\n };\n }\n\n return (\n <>\n {/* POI Form */}\n <FormWrapper<ContentPipelineVideoFormData>\n initialValues={props.contentPipelineVideo ? {\n bypassCategory: props.contentPipelineVideo.comments?.bypassPointsOfInterest?.category ?? '',\n bypassReason: props.contentPipelineVideo.comments?.bypassPointsOfInterest?.reason ?? '',\n hasPointsOfInterest: props.contentPipelineVideo.hasPointsOfInterest\n } : {\n bypassCategory: '',\n bypassReason: '',\n hasPointsOfInterest: true\n }}\n onSubmit={updatePointsOfInterest}\n enableReinitialize\n >\n {formikProps => (\n <Form>\n <div className='form-group p-2 border'>\n <div className='border-bottom mb-2'>\n <label>Points of Interest</label>\n {!!props.contentPipelineVideo && (\n <div className='mb-3'>\n <PointOfInterestBypassCheckbox\n onToggle={() => {\n formikProps.setValues({\n bypassCategory: '',\n bypassReason: '',\n hasPointsOfInterest: !formikProps.values.hasPointsOfInterest\n });\n }}\n checked={!formikProps.values.hasPointsOfInterest}\n hasPointsOfInterest={!!(formikProps.values.hasPointsOfInterest && state.list?.length)}\n />\n </div>\n )}\n </div>\n {formikProps.values.hasPointsOfInterest ? (\n <PointsOfInterestList\n pointsOfInterest={state.list}\n showAddPointOfInterestPopup={() => setPointOfInterestToAdd(true)}\n showEditPointOfInterestPopup={(p: PointOfInterest) => setPointOfInterestToEdit(p)}\n showDeletePointOfInterestPopup={(p: PointOfInterest) => setPointOfInterestToDelete(p)}\n hasUnsavedChanges={state.hasBeenModified}\n />\n ) : (\n <BypassComment\n categories={AssemblyLineBypassCategories.bypassPointsOfInterest}\n dropdownPlaceholder={`Why doesn't this video require points of interest?`}\n />\n )}\n <div className='d-flex justify-content-end mt-2'>\n <Button\n variant='link'\n className='ms-2'\n hidden={!state.hasBeenModified}\n onClick={() => resetListOfPOI()}\n disabled={!formikProps.values.hasPointsOfInterest}\n >\n Undo changes\n </Button>\n <Tooltip title={getSavePoiInfo(formikProps).savePoiTooltip} spanHack>\n <Button\n type='submit'\n className='ms-2'\n variant='dark'\n disabled={getSavePoiInfo(formikProps).disableSavePoi}\n >\n Save POI\n </Button>\n </Tooltip>\n </div>\n </div>\n </Form>\n )}\n </FormWrapper>\n\n {/* Glance form */}\n <FormWrapper<UpdateGlanceRequest, Glance>\n initialValues={props.obj.glance}\n validationSchema={GlanceValidationSchema}\n onSubmit={saveGlance}\n >\n <Form>\n <EditGlance\n tags={props.tags}\n pointsOfInterest={props.initialPois}\n >\n <div className='d-flex justify-content-end'>\n {\n props.obj.glance &&\n <ActionButton\n className='btn btn-outline-danger me-2'\n onClick={e => { e.preventDefault(); setShowDeleteGlancePopup(true); }}\n svg={DeleteSvg}\n svgSize={SvgContainerSize.Standard}\n >\n Delete\n </ActionButton>\n }\n <FormButtons isNew={!props.obj.id} submitText='Save Glance' variant='dark' />\n </div>\n </EditGlance>\n </Form>\n </FormWrapper>\n\n {pointOfInterestToAdd &&\n <ManagePointOfInterestPopup\n popupTitle='Add Point of Interest'\n closePopup={() => setPointOfInterestToAdd(false)}\n duration={duration}\n addPOI={addPOI}\n actionType='add'\n listOfPOIStartTime={getListOfPOIStartTime(state.list)}\n />\n }\n {pointOfInterestToEdit &&\n <ManagePointOfInterestPopup\n popupTitle='Edit Point of interest'\n closePopup={() => setPointOfInterestToEdit(null)}\n pointOfInterest={pointOfInterestToEdit}\n duration={duration}\n editPOI={editPOI}\n actionType='edit'\n listOfPOIStartTime={getListOfPOIStartTime(state.list)}\n />\n }\n {pointOfInterestToDelete &&\n <ConfirmationPopup\n title='Delete point of interest?'\n confirmButtonVariant='danger'\n onClickConfirm={() => {\n dispatch({\n type: 'delete',\n payload: {\n pointOfInterest: pointOfInterestToDelete\n }\n });\n setPointOfInterestToDelete(null);\n }}\n closePopup={() => setPointOfInterestToDelete(null)}\n >\n <p>\n Are you sure you want to delete <strong>{pointOfInterestToDelete.description}\n </strong> at <strong>{DurationHelper.ToDisplayDuration(pointOfInterestToDelete.startTime * 1000)}\n </strong>?\n </p>\n </ConfirmationPopup>\n }\n {showDeleteGlancePopup &&\n <ConfirmationPopup\n title='Delete Video at a Glance?'\n confirmButtonVariant='danger'\n onClickConfirm={() => {\n deleteGlance();\n setShowDeleteGlancePopup(false);\n }}\n closePopup={() => setShowDeleteGlancePopup(false)}\n >\n <p>\n Deleting a glance will remove all of it's current content. Are you sure you want to delete this glance?\n </p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n","import { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { GlanceRequests } from 'apps/glance/flight-requests/GlanceRequests';\n\nexport function useFetchPointsOfInterest(videoId?: string): SelectAllPagesResult<PointOfInterest> {\n const dispatch = useDispatch();\n\n function getRequest(cursor?: string): Flight.Request {\n return GlanceRequests.pointsOfInterest(videoId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n Flight.getFetch(dispatch)(getRequest(cursor));\n }\n\n useFetchAll(!!videoId && getRequest, !!videoId && fetchNext);\n\n return useSelectAllPages<PointOfInterest>(!!videoId && ((cursor?: string) => getRequest(cursor).key));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fapHSEex.chunk.js","names":[],"sources":["../../../../../src/apps/videos/components/edit-video-details/EditGlance.tsx","../../../../../src/apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestForm.tsx","../../../../../src/apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestPopup.tsx","../../../../../src/apps/videos/components/points-of-interest/points-of-interest-list/PointsOfInterestList.tsx","../../../../../src/apps/videos/reducers/PointOfInterestReducer.ts","../../../../../src/apps/glance/components/edit-glance-and-pois/EditGlanceAndPois.tsx","../../../../../src/apps/glance/hooks/useFetchPointsOfInterest.ts"],"sourcesContent":["import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { PointOfInterest, TagCollection } from 'libs/shared/interfaces';\n\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\n\ninterface EditGlanceProps {\n tags: TagCollection;\n pointsOfInterest: PointOfInterest[];\n}\n\nconst NAV_LOCK_ID = 'edit-video-at-glance-details';\n\nexport function EditGlance(props: React.PropsWithChildren<EditGlanceProps>): JSX.Element {\n const navLock = useNavLock();\n const formikProps = useFormikContext<UpdateGlanceRequest>();\n\n const showPreview = formikProps.values?.format === GlanceFormat.Markdown\n && formikProps.values?.content;\n\n React.useEffect(() => {\n if (formikProps.dirty)\n return navLock.lock({\n id: NAV_LOCK_ID,\n title: 'Are you use you want to leave?',\n text: 'By leaving the current page all changes will be discarded'\n });\n\n return navLock.unlock(NAV_LOCK_ID);\n }, [formikProps.dirty]);\n\n return (\n <div className='form-group p-2 border'>\n <div className='border-bottom mb-2'>\n <label>Video at a Glance</label>\n </div>\n <FormField<UpdateGlanceRequest>\n label='Content'\n as='textarea'\n name='content'\n id='content'\n value={formikProps.values?.content ?? ''}\n />\n {showPreview &&\n <div className='form-group'>\n <label>Preview</label>\n <VideoAtAGlanceV2\n video={{ glance: formikProps.values, tags: props.tags }}\n pointsOfInterest={props.pointsOfInterest}\n canViewGlance\n />\n </div>\n }\n {props.children}\n </div>\n );\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { TimeInput } from 'libs/shared/components/time-input/TimeInput';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nimport { ManagePointsOfInterestFormData } from 'apps/videos/interfaces/model/ManagePointsOfInterestFormData';\n\nimport { actionType } from './ManagePointOfInterestPopup';\n\ninterface ManagePointOfInterestFormProps {\n duration: number;\n listOfPOIStartTime: number[];\n closePopup: () => void;\n actionType: actionType;\n}\n\nexport function ManagePointOfInterestForm(props: ManagePointOfInterestFormProps): JSX.Element {\n const formikProps = useFormikContext<ManagePointsOfInterestFormData>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <FormField<ManagePointsOfInterestFormData>\n label='Description'\n type='text'\n name='description'\n id='description'\n autoFocus\n placeholder='Enter description...'\n value={formikProps.values.description || ''}\n />\n <fieldset className='d-flex align-items-center' aria-describedby='timeError'>\n <div>\n <label>\n Time Point\n </label>\n <TimeInput\n value={formikProps.values.startTime}\n setTime={startTime => formikProps.setFieldValue('startTime', startTime)}\n formSize='md'\n hasError={!!formikProps.errors.startTime}\n maxValue={props.duration - 1}\n duration={props.duration}\n />\n </div>\n <div className='ms-2'>\n <label>\n Max Time\n </label>\n <TimeInput\n value={props.duration - 1}\n setTime={() => {}}\n formSize='md'\n hideButtons\n disabled\n duration={props.duration}\n />\n </div>\n </fieldset>\n {!!formikProps.errors.startTime && <FormFeedback name='time'>{formikProps.errors.startTime}</FormFeedback>}\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3 mt-3'>\n <Button\n variant='link'\n className='ms-2'\n onClick={props.closePopup}\n >\n Cancel\n </Button>\n <Button\n type='submit'\n className='ms-2'\n variant='dark'\n disabled={!canSubmit}\n >\n Confirm\n </Button>\n </div>\n </Form>\n );\n}\n","import React from 'react';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { ManagePointsOfInterestFormData } from 'apps/videos/interfaces/model/ManagePointsOfInterestFormData';\nimport { getPointOfInterestValidation } from 'apps/videos/utils/validation/ManagePointsOfInterestValidation';\n\nimport { ManagePointOfInterestForm } from './ManagePointOfInterestForm';\n\nexport type actionType = 'add' | 'edit';\n\ninterface ManagePointOfInterestPopupProps {\n popupTitle: string;\n closePopup: () => void;\n pointOfInterest?: PointOfInterest;\n duration: number;\n actionType: actionType;\n listOfPOIStartTime: number[];\n addPOI?: (timePoint: number, description?: string) => void;\n editPOI?: (pointOfInterest: PointOfInterest, timePoint: number, description: string) => void;\n}\n\nexport const ACTION = {\n add: 'add',\n edit: 'edit'\n};\n\nexport function ManagePointOfInterestPopup(props: ManagePointOfInterestPopupProps): JSX.Element {\n const initialValues = {\n description: props.pointOfInterest?.description ?? '',\n startTime: props.pointOfInterest?.startTime ?? 0\n };\n\n function managePointsOfInterest(data: ManagePointsOfInterestFormData): void {\n if (props.actionType === ACTION.add) {\n props.addPOI(data.startTime, data.description);\n }\n if (props.actionType === ACTION.edit) {\n props.editPOI(props.pointOfInterest, data.startTime, data.description);\n }\n }\n\n function getOtherPoiStartTimes(): number[] {\n if (props.actionType === ACTION.add) {\n return props.listOfPOIStartTime;\n }\n \n return props.listOfPOIStartTime.filter(poi => poi !== props.pointOfInterest.startTime);\n }\n\n return (\n <Popup title={props.popupTitle} size='lg' closePopup={props.closePopup}>\n <FormWrapper<ManagePointsOfInterestFormData>\n initialValues={initialValues}\n validationSchema={getPointOfInterestValidation(getOtherPoiStartTimes(), props.duration)}\n onSubmit={managePointsOfInterest}\n >\n <ManagePointOfInterestForm\n duration={props.duration}\n listOfPOIStartTime={props.listOfPOIStartTime}\n closePopup={props.closePopup}\n actionType={props.actionType}\n />\n </FormWrapper>\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { PointOfInterestTable } from 'apps/videos/components/points-of-interest/points-of-interest-list/PointOfInterestTable';\n\ninterface PointsOfInterestListProps {\n pointsOfInterest: PointOfInterest[];\n showAddPointOfInterestPopup: () => void;\n showEditPointOfInterestPopup: (pointOfInterest: PointOfInterest) => void;\n showDeletePointOfInterestPopup: (pointOfInterest: PointOfInterest) => void;\n hasUnsavedChanges: boolean;\n disabled?: boolean;\n}\n\nexport function PointsOfInterestList(props: PointsOfInterestListProps): JSX.Element {\n return (\n <>\n <div className='d-flex justify-content-end align-items-center py-3'>\n <ActionButton\n className='btn btn-outline-dark ms-2'\n onClick={props.showAddPointOfInterestPopup}\n tooltip='Add new Point of Interest'\n svg={PlusSvg}\n svgSize={SvgContainerSize.Standard}\n disabled={props.disabled}\n >\n New\n </ActionButton>\n </div>\n <PointOfInterestTable\n pointsOfInterest={props.pointsOfInterest}\n onClickAdd={props.showAddPointOfInterestPopup}\n onClickEdit={props.showEditPointOfInterestPopup}\n onClickDelete={props.showDeletePointOfInterestPopup}\n disabled={props.disabled}\n />\n </>\n );\n}\n","import { ReducerActions } from 'libs/common/react/interfaces';\n\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { GlanceHelper } from 'shared/utils/GlanceHelper';\n\nlet lookupId = 0;\n\nfunction getLookupId(): string {\n lookupId++;\n\n return `lookup-${lookupId.toString()}`;\n}\n\ntype ActionTypes = 'init' | 'add' | 'edit' | 'delete';\n\nexport interface PointOfInterestReducerState {\n list: PointOfInterest[];\n hasBeenModified: boolean;\n duration: number;\n}\n\n/**\n * Reducer\n */\nexport function PointOfInterestReducer(\n state: PointOfInterestReducerState,\n action: ReducerActions<ActionTypes, any>\n): PointOfInterestReducerState {\n switch (action.type) {\n case 'init': {\n const { list, duration } = action.payload;\n return { list, duration, hasBeenModified: false };\n }\n\n case 'add': {\n const { timePoint, description } = action.payload;\n\n const newPointOfInterest: PointOfInterest = {\n startTime: timePoint,\n endTime: 0,\n description,\n id: getLookupId()\n };\n\n const updatedList = (state.list || []).concat(newPointOfInterest);\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return { ...state, hasBeenModified: true, list: sanitized };\n }\n\n case 'edit': {\n const { pointOfInterest, timePoint, description } = action.payload;\n\n const updatedList = state.list.map(poi => {\n if (poi.id !== pointOfInterest.id)\n return poi;\n\n return {\n ...poi,\n startTime: timePoint,\n endTime: 0,\n description\n };\n });\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return { ...state, hasBeenModified: true, list: sanitized };\n }\n\n case 'delete': {\n const { pointOfInterest } = action.payload;\n \n const updatedList = state.list.filter(poi => poi.id !== pointOfInterest.id);\n\n const sanitized = GlanceHelper.sanitizePointsOfInterest(updatedList, state.duration);\n\n return {\n ...state,\n hasBeenModified: true,\n list: sanitized.length ? sanitized : null\n };\n }\n\n default:\n return state;\n }\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Form, FormikProps } from 'formik';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\n\nimport { ActionButton } from 'libs/shared/components/actions/ActionButton';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { Clip, Glance, PointOfInterest, TagCollection, Video } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { BypassComment } from 'apps/assembly-line/components/bypass-comment/BypassComment';\nimport { PointOfInterestBypassCheckbox } from 'apps/assembly-line/components/fields/edit-points-of-interest/components/PointOfInterestBypassCheckbox';\nimport { AssemblyLineBypassCategories } from 'apps/assembly-line/constants/AssemblyLineBypassCategories';\nimport { CommentFormData } from 'apps/assembly-line/interfaces/primitives/CommentFormData';\nimport { AssemblyLineVideoResponse } from 'apps/assembly-line/interfaces/responses/AssemblyLineVideoResponse';\nimport { EditGlance } from 'apps/videos/components/edit-video-details/EditGlance';\nimport { ManagePointOfInterestPopup } from 'apps/videos/components/points-of-interest/manage-points-of-interest-popup/ManagePointOfInterestPopup';\nimport { PointsOfInterestList } from 'apps/videos/components/points-of-interest/points-of-interest-list/PointsOfInterestList';\nimport { UpdateGlanceRequest } from 'apps/videos/interfaces/data-requests/UpdateGlanceRequest';\nimport { PointOfInterestReducer } from 'apps/videos/reducers/PointOfInterestReducer';\nimport { GlanceValidationSchema } from 'apps/videos/utils/validation/GlanceValidation';\n\nconst NAV_LOCK_ID = 'glance-navlock';\n\ninterface ContentPipelineVideoFormData extends CommentFormData {\n hasPointsOfInterest: boolean;\n}\n\nfunction getListOfPOIStartTime(listOfPointsOfInterest: PointOfInterest[]): number[] {\n const listOfPOIStartTime: number[] = [];\n if (listOfPointsOfInterest)\n listOfPointsOfInterest.map(poi => listOfPOIStartTime.push(poi.startTime));\n\n return listOfPOIStartTime;\n}\n\ninterface EditGlanceAndPoisProps {\n obj: Clip | Video;\n contentPipelineVideo: AssemblyLineVideoResponse;\n initialPois: PointOfInterest[];\n tags: TagCollection;\n saveGlance: (data: UpdateGlanceRequest) => Promise<void>;\n deleteGlance: () => Promise<void>;\n updatePointsOfInterest: (pointsOfInterest: PointOfInterest[]) => Promise<Clip | Video>;\n onToggleHasPointsOfInterest: (state: boolean, comment: CommentFormData) => Promise<void>;\n}\n\nexport function EditGlanceAndPois(props: EditGlanceAndPoisProps): JSX.Element {\n const navLock = useNavLock();\n const alerts = useAlerts();\n\n const duration = Math.floor(VideoHelper.getDuration(props.obj)) / 1000;\n\n const [ pointOfInterestToAdd, setPointOfInterestToAdd ] = React.useState<boolean>();\n const [ pointOfInterestToEdit, setPointOfInterestToEdit ] = React.useState<PointOfInterest>();\n const [ pointOfInterestToDelete, setPointOfInterestToDelete ] = React.useState<PointOfInterest>();\n const [ showDeleteGlancePopup, setShowDeleteGlancePopup ] = React.useState<boolean>(false);\n const [ state, dispatch ] = React.useReducer(PointOfInterestReducer, {\n list: props.initialPois,\n hasBeenModified: false,\n duration\n });\n\n /* \n * This hook is called to initialise POI list in reducer. \n * It is called when the first time page load and whenever we update the POI in the backend \n */\n React.useEffect(() => {\n if (state.hasBeenModified)\n return;\n\n resetListOfPOI();\n }, []);\n\n React.useEffect(() => {\n if (state.hasBeenModified)\n return navLock.lock({\n id: NAV_LOCK_ID,\n title: 'Are you sure you want to leave?',\n text: 'By leaving the current page all changes will be discarded'\n });\n \n return navLock.unlock(NAV_LOCK_ID);\n }, [state.hasBeenModified]);\n\n function addPOI(timePoint: number, description: string) {\n dispatch({\n type: 'add',\n payload: {\n timePoint,\n description\n }\n });\n setPointOfInterestToAdd(false);\n }\n\n function editPOI(pointOfInterest: PointOfInterest, timePoint: number, description: string) {\n dispatch({\n type: 'edit',\n payload: {\n pointOfInterest,\n timePoint,\n description\n }\n });\n setPointOfInterestToEdit(null);\n }\n\n function resetListOfPOI() {\n dispatch({\n type: 'init',\n payload: {\n list: props.initialPois,\n hasBeenModified: false,\n duration\n }\n });\n }\n\n function handleError(type: 'update' | 'delete', xhr: Xhr) {\n const { message } = xhr?.responseJSON;\n let alertMessage = `Failed to ${type} Video at a Glance.`;\n if (message) {\n alertMessage += ` ${message}`;\n }\n alerts.error(alertMessage);\n }\n\n function saveGlance(data: UpdateGlanceRequest, onDone: (options?: FormSubmissionOptions) => void): void {\n props.saveGlance(data)\n .then(() => alerts.success('Successfully updated Video at a Glance'))\n .catch((xhr: Xhr) => handleError('update', xhr))\n .finally(() => onDone({ reset: true }));\n }\n\n function deleteGlance(): void {\n props.deleteGlance()\n .then(() => alerts.success('Successfully deleted Video at a Glance'))\n .catch((xhr: Xhr) => handleError('delete', xhr));\n }\n\n function updatePointsOfInterest(formData: ContentPipelineVideoFormData, onDone: () => void): void {\n if (!formData.hasPointsOfInterest) {\n props.onToggleHasPointsOfInterest(false, formData).finally(onDone);\n return;\n }\n\n props.updatePointsOfInterest(state.list)\n .then((obj: Clip | Video) => {\n dispatch({\n type: 'init',\n payload: {\n ...state,\n list: obj.pointsOfInterest.data,\n hasBeenModified: false\n }\n });\n\n alerts.success('Successfully updated Points of Interest');\n })\n .catch(() => {\n alerts.error('Failed to update Points of Interest');\n })\n .finally(onDone);\n }\n\n function getSavePoiInfo(contentPipelineVideoForm: FormikProps<ContentPipelineVideoFormData>) {\n const formData = contentPipelineVideoForm.values;\n\n if (!formData.hasPointsOfInterest) {\n if (!contentPipelineVideoForm.dirty) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'No changes have been made'\n };\n }\n\n if (formData.bypassCategory === 'Other' && !formData.bypassReason) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Please provide a reason'\n };\n }\n\n if (!formData.bypassCategory) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Which reason category applies?'\n };\n }\n\n if (state.list?.length) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Points of Interest are disabled. Please uncheck the checkbox above to manage POIs.'\n };\n }\n\n return {\n disableSavePoi: false,\n savePoiTooltip: ''\n };\n }\n\n if (!state.hasBeenModified) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'No changes have been made'\n };\n }\n\n if (!state.list?.length && formData.hasPointsOfInterest) {\n return {\n disableSavePoi: true,\n savePoiTooltip: 'Please check the checkbox above to remove all POIs.'\n };\n }\n\n return {\n disableSavePoi: false,\n savePoiTooltip: ''\n };\n }\n\n return (\n <>\n {/* POI Form */}\n <FormWrapper<ContentPipelineVideoFormData>\n initialValues={props.contentPipelineVideo ? {\n bypassCategory: props.contentPipelineVideo.comments?.bypassPointsOfInterest?.category ?? '',\n bypassReason: props.contentPipelineVideo.comments?.bypassPointsOfInterest?.reason ?? '',\n hasPointsOfInterest: props.contentPipelineVideo.hasPointsOfInterest\n } : {\n bypassCategory: '',\n bypassReason: '',\n hasPointsOfInterest: true\n }}\n onSubmit={updatePointsOfInterest}\n enableReinitialize\n >\n {formikProps => (\n <Form>\n <div className='form-group p-2 border'>\n <div className='border-bottom mb-2'>\n <label>Points of Interest</label>\n {!!props.contentPipelineVideo && (\n <div className='mb-3'>\n <PointOfInterestBypassCheckbox\n onToggle={() => {\n formikProps.setValues({\n bypassCategory: '',\n bypassReason: '',\n hasPointsOfInterest: !formikProps.values.hasPointsOfInterest\n });\n }}\n checked={!formikProps.values.hasPointsOfInterest}\n hasPointsOfInterest={!!(formikProps.values.hasPointsOfInterest && state.list?.length)}\n />\n </div>\n )}\n </div>\n {formikProps.values.hasPointsOfInterest ? (\n <PointsOfInterestList\n pointsOfInterest={state.list}\n showAddPointOfInterestPopup={() => setPointOfInterestToAdd(true)}\n showEditPointOfInterestPopup={(p: PointOfInterest) => setPointOfInterestToEdit(p)}\n showDeletePointOfInterestPopup={(p: PointOfInterest) => setPointOfInterestToDelete(p)}\n hasUnsavedChanges={state.hasBeenModified}\n />\n ) : (\n <BypassComment\n categories={AssemblyLineBypassCategories.bypassPointsOfInterest}\n dropdownPlaceholder={`Why doesn't this video require points of interest?`}\n />\n )}\n <div className='d-flex justify-content-end mt-2'>\n <Button\n variant='link'\n className='ms-2'\n hidden={!state.hasBeenModified}\n onClick={() => resetListOfPOI()}\n disabled={!formikProps.values.hasPointsOfInterest}\n >\n Undo changes\n </Button>\n <Tooltip title={getSavePoiInfo(formikProps).savePoiTooltip} spanHack>\n <Button\n type='submit'\n className='ms-2'\n variant='dark'\n disabled={getSavePoiInfo(formikProps).disableSavePoi}\n >\n Save POI\n </Button>\n </Tooltip>\n </div>\n </div>\n </Form>\n )}\n </FormWrapper>\n\n {/* Glance form */}\n <FormWrapper<UpdateGlanceRequest, Glance>\n initialValues={props.obj.glance}\n validationSchema={GlanceValidationSchema}\n onSubmit={saveGlance}\n >\n <Form>\n <EditGlance\n tags={props.tags}\n pointsOfInterest={props.initialPois}\n >\n <div className='d-flex justify-content-end'>\n {\n props.obj.glance &&\n <ActionButton\n className='btn btn-outline-danger me-2'\n onClick={e => { e.preventDefault(); setShowDeleteGlancePopup(true); }}\n svg={DeleteSvg}\n svgSize={SvgContainerSize.Standard}\n >\n Delete\n </ActionButton>\n }\n <FormButtons isNew={!props.obj.id} submitText='Save Glance' variant='dark' />\n </div>\n </EditGlance>\n </Form>\n </FormWrapper>\n\n {pointOfInterestToAdd &&\n <ManagePointOfInterestPopup\n popupTitle='Add Point of Interest'\n closePopup={() => setPointOfInterestToAdd(false)}\n duration={duration}\n addPOI={addPOI}\n actionType='add'\n listOfPOIStartTime={getListOfPOIStartTime(state.list)}\n />\n }\n {pointOfInterestToEdit &&\n <ManagePointOfInterestPopup\n popupTitle='Edit Point of interest'\n closePopup={() => setPointOfInterestToEdit(null)}\n pointOfInterest={pointOfInterestToEdit}\n duration={duration}\n editPOI={editPOI}\n actionType='edit'\n listOfPOIStartTime={getListOfPOIStartTime(state.list)}\n />\n }\n {pointOfInterestToDelete &&\n <ConfirmationPopup\n title='Delete point of interest?'\n confirmButtonVariant='danger'\n onClickConfirm={() => {\n dispatch({\n type: 'delete',\n payload: {\n pointOfInterest: pointOfInterestToDelete\n }\n });\n setPointOfInterestToDelete(null);\n }}\n closePopup={() => setPointOfInterestToDelete(null)}\n >\n <p>\n Are you sure you want to delete <strong>{pointOfInterestToDelete.description}\n </strong> at <strong>{DurationHelper.ToDisplayDuration(pointOfInterestToDelete.startTime * 1000)}\n </strong>?\n </p>\n </ConfirmationPopup>\n }\n {showDeleteGlancePopup &&\n <ConfirmationPopup\n title='Delete Video at a Glance?'\n confirmButtonVariant='danger'\n onClickConfirm={() => {\n deleteGlance();\n setShowDeleteGlancePopup(false);\n }}\n closePopup={() => setShowDeleteGlancePopup(false)}\n >\n <p>\n Deleting a glance will remove all of it's current content. Are you sure you want to delete this glance?\n </p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n","import { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { PointOfInterest } from 'libs/shared/interfaces';\n\nimport { GlanceRequests } from 'apps/glance/flight-requests/GlanceRequests';\n\nexport function useFetchPointsOfInterest(videoId?: string): SelectAllPagesResult<PointOfInterest> {\n const dispatch = useDispatch();\n\n function getRequest(cursor?: string): Flight.Request {\n return GlanceRequests.pointsOfInterest(videoId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n Flight.getFetch(dispatch)(getRequest(cursor));\n }\n\n useFetchAll(!!videoId && getRequest, !!videoId && fetchNext);\n\n return useSelectAllPages<PointOfInterest>(!!videoId && ((cursor?: string) => getRequest(cursor).key));\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./BVbA6fE6.chunk.js";import{d as i,f as a}from"./BhKv6dKl2.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{r as s,s as c}from"./Dgk5cBBe.chunk.js";import{t as l}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";e();var f=t();function p(e){let{classificationId:t,memberType:p,presentationId:m}=e,h=l(),g=u(),_=c(d.classificationWithAliases(t)),v=c(d.presentation(m)),y=_.data?.aliases;function b(e,n){s(h,d.createAlias(t,{..._.data,aliases:[e]},()=>{g.success(`Successfully created alias`),n()},()=>{g.error(`Something went wrong creating your alias`)}))}function x(e){s(h,d.deleteAlias(t,e,()=>{g.success(`Successfully deleted alias`)},()=>{g.error(`Something went wrong deleting your alias`)}))}return!v.data||!_.data?(0,f.jsx)(`div`,{className:`text-center py-3`,children:(0,f.jsx)(o,{as:`div`,animation:`border`,role:`status`})}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(i,{memberType:p,presentation:v.data,classificationId:t,getTabs:(e,t,i)=>r.getEditClassificationTabs(n.SUBJECTS,e,t,i)}),(0,f.jsx)(a,{aliases:y.data,onSave:b,onDelete:x})]})}export{p as EditClassificationAliasesView};
2
- //# sourceMappingURL=CaEXONXp2.chunk.js.map
1
+ import{a as e,i as t}from"./rp704-Pm.chunk.js";import{t as n}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{t as r}from"./BVbA6fE6.chunk.js";import{d as i,f as a}from"./GpDEun8c2.chunk.js";import{n as o}from"./CbiGs3Tn.chunk.js";import{r as s,s as c}from"./Dgk5cBBe.chunk.js";import{t as l}from"./Bw7dP6jB.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as u}from"./Bwpvc7Th2.chunk.js";import{t as d}from"./CZyPFSXo.chunk.js";e();var f=t();function p(e){let{classificationId:t,memberType:p,presentationId:m}=e,h=l(),g=u(),_=c(d.classificationWithAliases(t)),v=c(d.presentation(m)),y=_.data?.aliases;function b(e,n){s(h,d.createAlias(t,{..._.data,aliases:[e]},()=>{g.success(`Successfully created alias`),n()},()=>{g.error(`Something went wrong creating your alias`)}))}function x(e){s(h,d.deleteAlias(t,e,()=>{g.success(`Successfully deleted alias`)},()=>{g.error(`Something went wrong deleting your alias`)}))}return!v.data||!_.data?(0,f.jsx)(`div`,{className:`text-center py-3`,children:(0,f.jsx)(o,{as:`div`,animation:`border`,role:`status`})}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(i,{memberType:p,presentation:v.data,classificationId:t,getTabs:(e,t,i)=>r.getEditClassificationTabs(n.SUBJECTS,e,t,i)}),(0,f.jsx)(a,{aliases:y.data,onSave:b,onDelete:x})]})}export{p as EditClassificationAliasesView};
2
+ //# sourceMappingURL=jf0e_ii92.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CaEXONXp2.chunk.js","names":[],"sources":["../../../../../src/apps/subjects/views/classifications/edit-classification-aliases/EditClassificationAliasesView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { Aliases } from 'shared/components/aliases';\nimport { EditClassificationNav } from 'shared/components/classifications';\nimport { AppChannels } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { CreateAliasRequest } from 'shared/interfaces';\nimport { TopicsNavHelper } from 'shared/utils';\n\ninterface EditClassificationAliasViewProps {\n presentationId: string;\n classificationId: string;\n memberType: SubjectMemberType;\n}\n\nexport function EditClassificationAliasesView(props: EditClassificationAliasViewProps): React.ReactElement {\n const { classificationId, memberType, presentationId } = props;\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const classification = Flight.useBasicFetch<Classification>(\n SubjectRequests.classificationWithAliases(classificationId)\n );\n const presentation = Flight.useBasicFetch<Presentation>(\n SubjectRequests.presentation(presentationId)\n );\n const aliases = classification.data?.aliases;\n\n function createAlias(alias: CreateAliasRequest, success: () => void): void {\n Flight.fetch(dispatch, SubjectRequests.createAlias(classificationId, {\n ...classification.data,\n aliases: [alias]\n }, () => {\n alerts.success('Successfully created alias');\n success();\n }, () => {\n alerts.error('Something went wrong creating your alias');\n }));\n }\n\n function deleteAlias(id: string): void {\n Flight.fetch(dispatch, SubjectRequests.deleteAlias(classificationId, id, () => {\n alerts.success('Successfully deleted alias');\n }, () => {\n alerts.error('Something went wrong deleting your alias');\n }));\n }\n\n if (!presentation.data || !classification.data) {\n return <div className='text-center py-3'><Spinner as='div' animation='border' role='status' /></div>;\n }\n\n return (\n <>\n <EditClassificationNav\n memberType={memberType}\n presentation={presentation.data}\n classificationId={classificationId}\n getTabs={(presentationId: string, classificationId: string, hasPermissions) =>\n TopicsNavHelper.getEditClassificationTabs(\n AppChannels.SUBJECTS,\n presentationId,\n classificationId,\n hasPermissions\n )}\n />\n <Aliases\n aliases={aliases.data}\n onSave={createAlias}\n onDelete={deleteAlias}\n />\n </>\n );\n}\n"],"mappings":"qcAuBA,SAAgB,EAA8B,EAA6D,CACzG,GAAM,CAAE,mBAAkB,aAAY,kBAAmB,EAEnD,EAAW,EAAY,EACvB,EAAS,EAAU,EAEnB,EAAiB,EACrB,EAAgB,0BAA0B,CAAgB,CAC5D,EACM,EAAe,EACnB,EAAgB,aAAa,CAAc,CAC7C,EACM,EAAU,EAAe,MAAM,QAErC,SAAS,EAAY,EAA2B,EAA2B,CACzE,EAAa,EAAU,EAAgB,YAAY,EAAkB,CACnE,GAAG,EAAe,KAClB,QAAS,CAAC,CAAK,CACjB,MAAS,CACP,EAAO,QAAQ,4BAA4B,EAC3C,EAAQ,CACV,MAAS,CACP,EAAO,MAAM,0CAA0C,CACzD,CAAC,CAAC,CACJ,CAEA,SAAS,EAAY,EAAkB,CACrC,EAAa,EAAU,EAAgB,YAAY,EAAkB,MAAU,CAC7E,EAAO,QAAQ,4BAA4B,CAC7C,MAAS,CACP,EAAO,MAAM,0CAA0C,CACzD,CAAC,CAAC,CACJ,CAMA,MAJI,CAAC,EAAa,MAAQ,CAAC,EAAe,MACjC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BAAmB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CAAM,CAAA,GAInG,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACc,aACZ,aAAc,EAAa,KACT,mBAClB,SAAU,EAAwB,EAA0B,IAC1D,EAAgB,0BACd,EAAY,SACZ,EACA,EACA,CACF,CACH,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,EAAQ,KACjB,OAAQ,EACR,SAAU,CACX,CAAA,CACD,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"jf0e_ii92.chunk.js","names":[],"sources":["../../../../../src/apps/subjects/views/classifications/edit-classification-aliases/EditClassificationAliasesView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nimport { Aliases } from 'shared/components/aliases';\nimport { EditClassificationNav } from 'shared/components/classifications';\nimport { AppChannels } from 'shared/constants';\nimport { SubjectMemberType } from 'shared/enums';\nimport { SubjectRequests } from 'shared/flight-requests/SubjectRequests';\nimport { CreateAliasRequest } from 'shared/interfaces';\nimport { TopicsNavHelper } from 'shared/utils';\n\ninterface EditClassificationAliasViewProps {\n presentationId: string;\n classificationId: string;\n memberType: SubjectMemberType;\n}\n\nexport function EditClassificationAliasesView(props: EditClassificationAliasViewProps): React.ReactElement {\n const { classificationId, memberType, presentationId } = props;\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const classification = Flight.useBasicFetch<Classification>(\n SubjectRequests.classificationWithAliases(classificationId)\n );\n const presentation = Flight.useBasicFetch<Presentation>(\n SubjectRequests.presentation(presentationId)\n );\n const aliases = classification.data?.aliases;\n\n function createAlias(alias: CreateAliasRequest, success: () => void): void {\n Flight.fetch(dispatch, SubjectRequests.createAlias(classificationId, {\n ...classification.data,\n aliases: [alias]\n }, () => {\n alerts.success('Successfully created alias');\n success();\n }, () => {\n alerts.error('Something went wrong creating your alias');\n }));\n }\n\n function deleteAlias(id: string): void {\n Flight.fetch(dispatch, SubjectRequests.deleteAlias(classificationId, id, () => {\n alerts.success('Successfully deleted alias');\n }, () => {\n alerts.error('Something went wrong deleting your alias');\n }));\n }\n\n if (!presentation.data || !classification.data) {\n return <div className='text-center py-3'><Spinner as='div' animation='border' role='status' /></div>;\n }\n\n return (\n <>\n <EditClassificationNav\n memberType={memberType}\n presentation={presentation.data}\n classificationId={classificationId}\n getTabs={(presentationId: string, classificationId: string, hasPermissions) =>\n TopicsNavHelper.getEditClassificationTabs(\n AppChannels.SUBJECTS,\n presentationId,\n classificationId,\n hasPermissions\n )}\n />\n <Aliases\n aliases={aliases.data}\n onSave={createAlias}\n onDelete={deleteAlias}\n />\n </>\n );\n}\n"],"mappings":"qcAuBA,SAAgB,EAA8B,EAA6D,CACzG,GAAM,CAAE,mBAAkB,aAAY,kBAAmB,EAEnD,EAAW,EAAY,EACvB,EAAS,EAAU,EAEnB,EAAiB,EACrB,EAAgB,0BAA0B,CAAgB,CAC5D,EACM,EAAe,EACnB,EAAgB,aAAa,CAAc,CAC7C,EACM,EAAU,EAAe,MAAM,QAErC,SAAS,EAAY,EAA2B,EAA2B,CACzE,EAAa,EAAU,EAAgB,YAAY,EAAkB,CACnE,GAAG,EAAe,KAClB,QAAS,CAAC,CAAK,CACjB,MAAS,CACP,EAAO,QAAQ,4BAA4B,EAC3C,EAAQ,CACV,MAAS,CACP,EAAO,MAAM,0CAA0C,CACzD,CAAC,CAAC,CACJ,CAEA,SAAS,EAAY,EAAkB,CACrC,EAAa,EAAU,EAAgB,YAAY,EAAkB,MAAU,CAC7E,EAAO,QAAQ,4BAA4B,CAC7C,MAAS,CACP,EAAO,MAAM,0CAA0C,CACzD,CAAC,CAAC,CACJ,CAMA,MAJI,CAAC,EAAa,MAAQ,CAAC,EAAe,MACjC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6BAAmB,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,MAAM,UAAU,SAAS,KAAK,QAAU,CAAA,CAAM,CAAA,GAInG,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACc,aACZ,aAAc,EAAa,KACT,mBAClB,SAAU,EAAwB,EAA0B,IAC1D,EAAgB,0BACd,EAAY,SACZ,EACA,EACA,CACF,CACH,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,EAAQ,KACjB,OAAQ,EACR,SAAU,CACX,CAAA,CACD,CAAA,CAAA,CAEN"}
@@ -1,2 +1,2 @@
1
- import{C as e,a as t,i as n}from"./rp704-Pm.chunk.js";import{n as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{r as o}from"./DkstLT1W.chunk.js";import{t as s}from"./Da4lNxpT2.chunk.js";import{t as c}from"./DrMTnrkG2.chunk.js";import{n as l}from"./C6KIBIQi.chunk.js";import{s as u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./DjzD1n9W.chunk.js";import{n as f}from"./DSpSOEc72.chunk.js";import{t as p}from"./Bv5hYKhN2.chunk.js";import{t as m}from"./Bg2zGOFJ2.chunk.js";import{n as h,t as g}from"./oGkpmMft2.chunk.js";import{t as _}from"./Dfhl7nI62.chunk.js";import{t as v}from"./B_IbIJNZ.chunk.js";t();var y={dropdownBtn:`_dropdownBtn_1ld2d_1`},b=n();function x(e){return(0,b.jsx)(`div`,{className:`w-100 d-flex justify-content-center`,children:(0,b.jsxs)(c,{className:`px-2`,children:[(0,b.jsx)(c.Toggle,{variant:`outline-dark`,className:`w-100 ${y.dropdownBtn}`,children:(0,b.jsx)(r,{svg:f})}),g.renderInPortal((0,b.jsx)(c.Menu,{children:e.actions.map(e=>(0,b.jsx)(c.Item,{className:e.className,onClick:e.onClick,children:e.label},e.label))}))]})})}var S=l();function C(t,n,r){let o=t.map(e=>S.accessor(e.name,{header:()=>(0,b.jsx)(h,{data:e.name,readonly:e.name===`id`,appLink:e.name!==`id`&&{application:a.MARKETING_APP,action:i.Marketing.DELETE_FIELD,args:[n,e.name,r]}}),cell:t=>(0,b.jsx)(h,{data:t.getValue(),clampLevel:2,readonly:e.name===`id`,appLink:{application:a.MARKETING_APP,action:i.Marketing.EDIT_CATALOG,args:[n,t.getValue(),t.table.getRowModel().rows[Number(t.row.id)].original.id,e.name,e.type,r]}})}));return o.push(S.accessor(e=>e,{id:`actions`,header:()=>(0,b.jsx)(h,{data:`action`,readonly:!0,appLink:null}),cell:t=>(0,b.jsx)(`div`,{className:`p-1`,children:(0,b.jsx)(x,{actions:[{label:`Delete Item`,onClick:()=>{let o={application:a.MARKETING_APP,action:i.Marketing.DELETE_ITEM,args:[n,t.table.getRowModel().rows[Number(t.row.id)].original.id,r]};e.trigger(o)}}]})})})),o}function w({catalogName:t,region:n}){return(0,b.jsxs)(`div`,{className:`d-flex flex-row justify-content-between align-items-center`,children:[(0,b.jsx)(`h3`,{children:t}),(0,b.jsxs)(`div`,{className:`d-flex flex-row align-items-center gap-2`,children:[(0,b.jsx)(s,{variant:`dark`,onClick:()=>{let r={application:a.MARKETING_APP,action:i.Marketing.CREATE_FIELDS,args:[t,n]};e.trigger(r)},children:`Create Field`}),(0,b.jsx)(s,{variant:`dark`,onClick:()=>{let r={application:a.MARKETING_APP,action:i.Marketing.CREATE_ITEMS,args:[t,n]};e.trigger(r)},children:`Create Item`})]})]})}function T(e,t){return e.map(e=>t.reduce((t,n)=>(t[n.name]=e[n.name],t),{}))}function E({catalogName:e,region:t}){let n=u(m.getCatalog(e,t)),r=u(m.getCatalogItems(e,t)),{hasPermissions:a}=d(),s=a(o.MarketingContactUploadAll),c=a(o.MarketingCatalogManagement),l=s&&c;if(p({title:`Catalog Management`}),!n.hasCompleted||!r.hasCompleted)return(0,b.jsx)(b.Fragment,{});let f=n.data?.fields,h=C(f,e,t),y=T(r.data,f);return(0,b.jsx)(_,{leftNavItems:g.getLeftNavItems(l,i.Marketing.INDEX),children:(0,b.jsxs)(`div`,{className:`p-4 d-flex flex-column gap-4`,children:[(0,b.jsx)(w,{catalogName:e,region:t}),(0,b.jsx)(v,{data:y,columns:h})]})})}export{E as ViewCatalogView};
2
- //# sourceMappingURL=Co7TevGA.chunk.js.map
1
+ import{C as e,a as t,i as n}from"./rp704-Pm.chunk.js";import{n as r}from"./Crs6pJ2h.chunk.js";import{t as i}from"./Di_u2uix.chunk.js";import{t as a}from"./BvMTtGLi.chunk.js";import"./CfCYHRuo.chunk.js";import{r as o}from"./DkstLT1W.chunk.js";import{t as s}from"./Da4lNxpT2.chunk.js";import{t as c}from"./DrMTnrkG2.chunk.js";import{n as l}from"./C6KIBIQi.chunk.js";import{s as u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{t as d}from"./DjzD1n9W.chunk.js";import{n as f}from"./DSpSOEc72.chunk.js";import{t as p}from"./Bv5hYKhN2.chunk.js";import{t as m}from"./Bg2zGOFJ2.chunk.js";import{n as h,t as g}from"./dmUfJoJz2.chunk.js";import{t as _}from"./BrBPGjLi2.chunk.js";import{t as v}from"./B_IbIJNZ.chunk.js";t();var y={dropdownBtn:`_dropdownBtn_1ld2d_1`},b=n();function x(e){return(0,b.jsx)(`div`,{className:`w-100 d-flex justify-content-center`,children:(0,b.jsxs)(c,{className:`px-2`,children:[(0,b.jsx)(c.Toggle,{variant:`outline-dark`,className:`w-100 ${y.dropdownBtn}`,children:(0,b.jsx)(r,{svg:f})}),g.renderInPortal((0,b.jsx)(c.Menu,{children:e.actions.map(e=>(0,b.jsx)(c.Item,{className:e.className,onClick:e.onClick,children:e.label},e.label))}))]})})}var S=l();function C(t,n,r){let o=t.map(e=>S.accessor(e.name,{header:()=>(0,b.jsx)(h,{data:e.name,readonly:e.name===`id`,appLink:e.name!==`id`&&{application:a.MARKETING_APP,action:i.Marketing.DELETE_FIELD,args:[n,e.name,r]}}),cell:t=>(0,b.jsx)(h,{data:t.getValue(),clampLevel:2,readonly:e.name===`id`,appLink:{application:a.MARKETING_APP,action:i.Marketing.EDIT_CATALOG,args:[n,t.getValue(),t.table.getRowModel().rows[Number(t.row.id)].original.id,e.name,e.type,r]}})}));return o.push(S.accessor(e=>e,{id:`actions`,header:()=>(0,b.jsx)(h,{data:`action`,readonly:!0,appLink:null}),cell:t=>(0,b.jsx)(`div`,{className:`p-1`,children:(0,b.jsx)(x,{actions:[{label:`Delete Item`,onClick:()=>{let o={application:a.MARKETING_APP,action:i.Marketing.DELETE_ITEM,args:[n,t.table.getRowModel().rows[Number(t.row.id)].original.id,r]};e.trigger(o)}}]})})})),o}function w({catalogName:t,region:n}){return(0,b.jsxs)(`div`,{className:`d-flex flex-row justify-content-between align-items-center`,children:[(0,b.jsx)(`h3`,{children:t}),(0,b.jsxs)(`div`,{className:`d-flex flex-row align-items-center gap-2`,children:[(0,b.jsx)(s,{variant:`dark`,onClick:()=>{let r={application:a.MARKETING_APP,action:i.Marketing.CREATE_FIELDS,args:[t,n]};e.trigger(r)},children:`Create Field`}),(0,b.jsx)(s,{variant:`dark`,onClick:()=>{let r={application:a.MARKETING_APP,action:i.Marketing.CREATE_ITEMS,args:[t,n]};e.trigger(r)},children:`Create Item`})]})]})}function T(e,t){return e.map(e=>t.reduce((t,n)=>(t[n.name]=e[n.name],t),{}))}function E({catalogName:e,region:t}){let n=u(m.getCatalog(e,t)),r=u(m.getCatalogItems(e,t)),{hasPermissions:a}=d(),s=a(o.MarketingContactUploadAll),c=a(o.MarketingCatalogManagement),l=s&&c;if(p({title:`Catalog Management`}),!n.hasCompleted||!r.hasCompleted)return(0,b.jsx)(b.Fragment,{});let f=n.data?.fields,h=C(f,e,t),y=T(r.data,f);return(0,b.jsx)(_,{leftNavItems:g.getLeftNavItems(l,i.Marketing.INDEX),children:(0,b.jsxs)(`div`,{className:`p-4 d-flex flex-column gap-4`,children:[(0,b.jsx)(w,{catalogName:e,region:t}),(0,b.jsx)(v,{data:y,columns:h})]})})}export{E as ViewCatalogView};
2
+ //# sourceMappingURL=kp4jXqVv.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Co7TevGA.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/cells/marketing-dropdown-cell.module.scss","../../../../../src/apps/marketing/views/catalogs/components/cells/MarketingDropdownCell.tsx","../../../../../src/apps/marketing/views/catalogs/components/columns/MarketingViewCatalogTableColumns.tsx","../../../../../src/apps/marketing/views/catalogs/components/ViewCatalogHeader.tsx","../../../../../src/apps/marketing/views/catalogs/view-catalog/ViewCatalogView.tsx"],"sourcesContent":[":local {\n .dropdownBtn::after {\n content: none;\n }\n}","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nimport styles from './marketing-dropdown-cell.module.scss';\n\nexport interface MarketingDropdownItem {\n label: string;\n onClick: () => void;\n className?: string;\n}\n\ninterface MarketingDropdownCellProps {\n actions: MarketingDropdownItem[];\n}\n\nexport function MarketingDropdownCell(props: MarketingDropdownCellProps): JSX.Element {\n return (\n <div className='w-100 d-flex justify-content-center'>\n <Dropdown className='px-2'>\n <Dropdown.Toggle\n variant='outline-dark'\n className={`w-100 ${styles.dropdownBtn}`}\n >\n <SvgContainer svg={MoreSvg} />\n </Dropdown.Toggle>\n {/* Prevent the dropdown from being cut off by the tables `overflow: hidden` */}\n {MarketingHelper.renderInPortal(\n <Dropdown.Menu>\n {props.actions.map(a => {\n return (\n <Dropdown.Item key={a.label} className={a.className} onClick={a.onClick}>\n {a.label}\n </Dropdown.Item>\n );\n })}\n </Dropdown.Menu>\n )}\n </Dropdown>\n </div>\n );\n}\n","import React from 'react';\nimport { ColumnDef, createColumnHelper } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { BrazeField } from 'apps/marketing/interfaces/BrazeField';\nimport { BrazeItem } from 'apps/marketing/interfaces/BrazeItem';\nimport { MarketingBasicCell } from 'apps/marketing/views/catalogs/components/cells/MarketingBasicCell';\nimport { MarketingDropdownCell, MarketingDropdownItem } from 'apps/marketing/views/catalogs/components/cells/MarketingDropdownCell';\n\nconst columnHelper = createColumnHelper<ColumnDef<BrazeField, BrazeItem>>();\n\nexport function getMarketingViewCatalogTableColumns(fields: BrazeField[], catalogName: string, region: string) {\n // Create columns dynamically based on fields\n const columns = fields.map(field => {\n return columnHelper.accessor(field.name as any, {\n header: () => (\n <MarketingBasicCell\n data={field.name}\n readonly={field.name === 'id'}\n appLink={field.name !== 'id' && {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.DELETE_FIELD,\n args: [ catalogName, field.name, region ]\n }}\n />\n ),\n cell: props => (\n <MarketingBasicCell\n data={props.getValue()}\n clampLevel={2}\n readonly={field.name === 'id'}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.EDIT_CATALOG,\n args: [\n catalogName,\n props.getValue(),\n props.table.getRowModel().rows[Number(props.row.id)].original.id,\n field.name,\n field.type,\n region\n ]\n }}\n />\n )\n });\n });\n\n // Add actions column to end of table\n columns.push(columnHelper.accessor(w => w, {\n id: 'actions',\n header: () => (\n <MarketingBasicCell\n data='action'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const actions: MarketingDropdownItem[] = [{\n label: 'Delete Item',\n onClick: () => {\n const applink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.DELETE_ITEM,\n args: [\n catalogName,\n props.table.getRowModel().rows[Number(props.row.id)].original.id,\n region\n ]\n };\n Core.AppLinkHelper.trigger(applink);\n }\n }];\n\n return (\n <div className='p-1'>\n <MarketingDropdownCell actions={actions}/>\n </div>\n );\n }\n }));\n\n return columns;\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\ninterface ViewCatalogHeaderProps {\n catalogName: string;\n region: string;\n}\n\nexport function ViewCatalogHeader({ catalogName, region }: ViewCatalogHeaderProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between align-items-center'>\n <h3>{catalogName}</h3>\n <div className='d-flex flex-row align-items-center gap-2'>\n <Button\n variant='dark'\n onClick={() => {\n const appLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CREATE_FIELDS,\n args: [ catalogName, region ]\n };\n Core.AppLinkHelper.trigger(appLink);\n }}\n >\n Create Field\n </Button>\n <Button\n variant='dark'\n onClick={() => {\n const appLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CREATE_ITEMS,\n args: [ catalogName, region ]\n };\n Core.AppLinkHelper.trigger(appLink);\n }}\n >\n Create Item\n </Button>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { useCuratorPermissions } from 'shared/hooks/UseCuratorPermissions';\n\nimport { MarketingRequests } from 'apps/marketing/flight-requests/MarketingRequests';\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { BrazeField } from 'apps/marketing/interfaces/BrazeField';\nimport { BrazeItem } from 'apps/marketing/interfaces/BrazeItem';\nimport { MarketingLayoutView } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\nimport { getMarketingViewCatalogTableColumns } from 'apps/marketing/views/catalogs/components/columns/MarketingViewCatalogTableColumns';\nimport { MarketingTable } from 'apps/marketing/views/catalogs/components/MarketingTable';\nimport { ViewCatalogHeader } from 'apps/marketing/views/catalogs/components/ViewCatalogHeader';\n\ninterface ViewCatalogViewProps extends PopupViewProps {\n catalogName: string;\n region: string;\n}\n\n// Transform the items to match the fields\nfunction getColumnData(items: BrazeItem[], fields: BrazeField[]): BrazeItem[] {\n return items.map((item: BrazeItem) => {\n return fields.reduce((obj, field) => {\n obj[field.name] = item[field.name];\n return obj;\n }, {} as BrazeItem);\n });\n}\n\nexport function ViewCatalogView({ catalogName, region }: ViewCatalogViewProps): JSX.Element {\n const catalogRequest = Flight.useBasicFetch<BrazeCatalog>(MarketingRequests.getCatalog(catalogName, region));\n const itemsRequest = Flight.useBasicFetch<BrazeItem[]>(MarketingRequests.getCatalogItems(catalogName, region));\n\n const { hasPermissions } = useCuratorPermissions();\n const canManageUpload = hasPermissions(CuratorPermissionName.MarketingContactUploadAll);\n const canManageCatalog = hasPermissions(CuratorPermissionName.MarketingCatalogManagement);\n const canManageAll = canManageUpload && canManageCatalog;\n\n useSetPageMetadata({ title: 'Catalog Management' });\n\n if (!catalogRequest.hasCompleted || !itemsRequest.hasCompleted) return <></>;\n\n const fields: BrazeField[] = catalogRequest.data?.fields;\n\n const columns = getMarketingViewCatalogTableColumns(fields, catalogName, region);\n const data = getColumnData(itemsRequest.data, fields);\n\n // This view does not have a corresponding nav item so use it's parents\n const leftNavItems = MarketingHelper.getLeftNavItems(canManageAll, Actions.Marketing.INDEX);\n \n return (\n <MarketingLayoutView leftNavItems={leftNavItems}>\n <div className='p-4 d-flex flex-column gap-4'>\n <ViewCatalogHeader catalogName={catalogName} region={region} />\n <MarketingTable data={data} columns={columns} />\n </div>\n </MarketingLayoutView>\n );\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"kp4jXqVv.chunk.js","names":[],"sources":["../../../../../src/apps/marketing/views/catalogs/components/cells/marketing-dropdown-cell.module.scss","../../../../../src/apps/marketing/views/catalogs/components/cells/MarketingDropdownCell.tsx","../../../../../src/apps/marketing/views/catalogs/components/columns/MarketingViewCatalogTableColumns.tsx","../../../../../src/apps/marketing/views/catalogs/components/ViewCatalogHeader.tsx","../../../../../src/apps/marketing/views/catalogs/view-catalog/ViewCatalogView.tsx"],"sourcesContent":[":local {\n .dropdownBtn::after {\n content: none;\n }\n}","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\n\nimport styles from './marketing-dropdown-cell.module.scss';\n\nexport interface MarketingDropdownItem {\n label: string;\n onClick: () => void;\n className?: string;\n}\n\ninterface MarketingDropdownCellProps {\n actions: MarketingDropdownItem[];\n}\n\nexport function MarketingDropdownCell(props: MarketingDropdownCellProps): JSX.Element {\n return (\n <div className='w-100 d-flex justify-content-center'>\n <Dropdown className='px-2'>\n <Dropdown.Toggle\n variant='outline-dark'\n className={`w-100 ${styles.dropdownBtn}`}\n >\n <SvgContainer svg={MoreSvg} />\n </Dropdown.Toggle>\n {/* Prevent the dropdown from being cut off by the tables `overflow: hidden` */}\n {MarketingHelper.renderInPortal(\n <Dropdown.Menu>\n {props.actions.map(a => {\n return (\n <Dropdown.Item key={a.label} className={a.className} onClick={a.onClick}>\n {a.label}\n </Dropdown.Item>\n );\n })}\n </Dropdown.Menu>\n )}\n </Dropdown>\n </div>\n );\n}\n","import React from 'react';\nimport { ColumnDef, createColumnHelper } from '@tanstack/react-table';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\nimport { BrazeField } from 'apps/marketing/interfaces/BrazeField';\nimport { BrazeItem } from 'apps/marketing/interfaces/BrazeItem';\nimport { MarketingBasicCell } from 'apps/marketing/views/catalogs/components/cells/MarketingBasicCell';\nimport { MarketingDropdownCell, MarketingDropdownItem } from 'apps/marketing/views/catalogs/components/cells/MarketingDropdownCell';\n\nconst columnHelper = createColumnHelper<ColumnDef<BrazeField, BrazeItem>>();\n\nexport function getMarketingViewCatalogTableColumns(fields: BrazeField[], catalogName: string, region: string) {\n // Create columns dynamically based on fields\n const columns = fields.map(field => {\n return columnHelper.accessor(field.name as any, {\n header: () => (\n <MarketingBasicCell\n data={field.name}\n readonly={field.name === 'id'}\n appLink={field.name !== 'id' && {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.DELETE_FIELD,\n args: [ catalogName, field.name, region ]\n }}\n />\n ),\n cell: props => (\n <MarketingBasicCell\n data={props.getValue()}\n clampLevel={2}\n readonly={field.name === 'id'}\n appLink={{\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.EDIT_CATALOG,\n args: [\n catalogName,\n props.getValue(),\n props.table.getRowModel().rows[Number(props.row.id)].original.id,\n field.name,\n field.type,\n region\n ]\n }}\n />\n )\n });\n });\n\n // Add actions column to end of table\n columns.push(columnHelper.accessor(w => w, {\n id: 'actions',\n header: () => (\n <MarketingBasicCell\n data='action'\n readonly={true}\n appLink={null}\n />\n ),\n cell: props => {\n const actions: MarketingDropdownItem[] = [{\n label: 'Delete Item',\n onClick: () => {\n const applink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.DELETE_ITEM,\n args: [\n catalogName,\n props.table.getRowModel().rows[Number(props.row.id)].original.id,\n region\n ]\n };\n Core.AppLinkHelper.trigger(applink);\n }\n }];\n\n return (\n <div className='p-1'>\n <MarketingDropdownCell actions={actions}/>\n </div>\n );\n }\n }));\n\n return columns;\n}\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { Actions, AppChannels } from 'shared/constants';\n\ninterface ViewCatalogHeaderProps {\n catalogName: string;\n region: string;\n}\n\nexport function ViewCatalogHeader({ catalogName, region }: ViewCatalogHeaderProps): JSX.Element {\n return (\n <div className='d-flex flex-row justify-content-between align-items-center'>\n <h3>{catalogName}</h3>\n <div className='d-flex flex-row align-items-center gap-2'>\n <Button\n variant='dark'\n onClick={() => {\n const appLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CREATE_FIELDS,\n args: [ catalogName, region ]\n };\n Core.AppLinkHelper.trigger(appLink);\n }}\n >\n Create Field\n </Button>\n <Button\n variant='dark'\n onClick={() => {\n const appLink = {\n application: AppChannels.MARKETING_APP,\n action: Actions.Marketing.CREATE_ITEMS,\n args: [ catalogName, region ]\n };\n Core.AppLinkHelper.trigger(appLink);\n }}\n >\n Create Item\n </Button>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants';\nimport { CuratorPermissionName } from 'shared/enums/CuratorPermissionName';\nimport { useCuratorPermissions } from 'shared/hooks/UseCuratorPermissions';\n\nimport { MarketingRequests } from 'apps/marketing/flight-requests/MarketingRequests';\nimport { BrazeCatalog } from 'apps/marketing/interfaces/BrazeCatalog';\nimport { BrazeField } from 'apps/marketing/interfaces/BrazeField';\nimport { BrazeItem } from 'apps/marketing/interfaces/BrazeItem';\nimport { MarketingLayoutView } from 'apps/marketing/layout/MarketingLayout';\nimport { MarketingHelper } from 'apps/marketing/utils/MarketingHelper';\nimport { getMarketingViewCatalogTableColumns } from 'apps/marketing/views/catalogs/components/columns/MarketingViewCatalogTableColumns';\nimport { MarketingTable } from 'apps/marketing/views/catalogs/components/MarketingTable';\nimport { ViewCatalogHeader } from 'apps/marketing/views/catalogs/components/ViewCatalogHeader';\n\ninterface ViewCatalogViewProps extends PopupViewProps {\n catalogName: string;\n region: string;\n}\n\n// Transform the items to match the fields\nfunction getColumnData(items: BrazeItem[], fields: BrazeField[]): BrazeItem[] {\n return items.map((item: BrazeItem) => {\n return fields.reduce((obj, field) => {\n obj[field.name] = item[field.name];\n return obj;\n }, {} as BrazeItem);\n });\n}\n\nexport function ViewCatalogView({ catalogName, region }: ViewCatalogViewProps): JSX.Element {\n const catalogRequest = Flight.useBasicFetch<BrazeCatalog>(MarketingRequests.getCatalog(catalogName, region));\n const itemsRequest = Flight.useBasicFetch<BrazeItem[]>(MarketingRequests.getCatalogItems(catalogName, region));\n\n const { hasPermissions } = useCuratorPermissions();\n const canManageUpload = hasPermissions(CuratorPermissionName.MarketingContactUploadAll);\n const canManageCatalog = hasPermissions(CuratorPermissionName.MarketingCatalogManagement);\n const canManageAll = canManageUpload && canManageCatalog;\n\n useSetPageMetadata({ title: 'Catalog Management' });\n\n if (!catalogRequest.hasCompleted || !itemsRequest.hasCompleted) return <></>;\n\n const fields: BrazeField[] = catalogRequest.data?.fields;\n\n const columns = getMarketingViewCatalogTableColumns(fields, catalogName, region);\n const data = getColumnData(itemsRequest.data, fields);\n\n // This view does not have a corresponding nav item so use it's parents\n const leftNavItems = MarketingHelper.getLeftNavItems(canManageAll, Actions.Marketing.INDEX);\n \n return (\n <MarketingLayoutView leftNavItems={leftNavItems}>\n <div className='p-4 d-flex flex-column gap-4'>\n <ViewCatalogHeader catalogName={catalogName} region={region} />\n <MarketingTable data={data} columns={columns} />\n </div>\n </MarketingLayoutView>\n );\n}\n\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./DZX1tZ-D.chunk.js";import{t}from"./BkdBq-7h.chunk.js";import{r as n,t as r}from"./CBq4vrjT.chunk.js";var i={getZoomBaseUrl:()=>`https://clickview.zoom.us/w/`,getStartDate:e=>t.format(a(e.startDateTime),`YYYY-MM-DD`),getStartTime:e=>t.format(a(e.startDateTime),`HH:mm`),getDuration:e=>`${t.diffBetween(a(e.endDateTime),a(e.startDateTime),`minutes`)}`,isPastLivestream:e=>t.getUtcISOString(new Date)>e,buildLivestreamUrl:t=>t?.trim()?e.safeUrlConcat(i.getZoomBaseUrl(),t.trim()):``,getLivestreamUrlId:e=>e.livestreamUrl?e.livestreamUrl.replace(i.getZoomBaseUrl(),``):``};function a(e){return r.convertUTCToTimezoneDate(e,n.ET)}export{i as t};
2
+ //# sourceMappingURL=lAvSm0ti.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lAvSm0ti.chunk.js","names":[],"sources":["../../../../../src/apps/cv-live/utils/LivestreamHelper.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Timezone } from 'libs/shared/apps/streamable-learning/constants/Timezones';\nimport { TimezoneHelper } from 'libs/shared/apps/streamable-learning/utils/TimezoneHelper';\nimport { Livestream } from 'libs/shared/interfaces';\n\nexport const LivestreamHelper = {\n getZoomBaseUrl: () => 'https://clickview.zoom.us/w/',\n\n getStartDate: (livestream: Livestream) => {\n return DateHelper.format(getTimezoneDate(livestream.startDateTime), 'YYYY-MM-DD');\n },\n\n getStartTime: (livestream: Livestream) => {\n return DateHelper.format(getTimezoneDate(livestream.startDateTime), 'HH:mm');\n },\n\n getDuration: (livestream: Livestream) => {\n return `${DateHelper.diffBetween(getTimezoneDate(livestream.endDateTime), getTimezoneDate(livestream.startDateTime), 'minutes')}`;\n },\n\n isPastLivestream: (endDateTime: Livestream['endDateTime']) => {\n // EndDateTime is already in UTC\n return DateHelper.getUtcISOString(new Date()) > endDateTime;\n },\n\n buildLivestreamUrl: (urlId: string) => {\n if (!urlId?.trim())\n return '';\n\n return UrlHelper.safeUrlConcat(LivestreamHelper.getZoomBaseUrl(), urlId.trim());\n },\n\n getLivestreamUrlId: (livestream: Livestream) => {\n if (!livestream.livestreamUrl)\n return '';\n\n return livestream.livestreamUrl.replace(LivestreamHelper.getZoomBaseUrl(), '');\n }\n};\n\nfunction getTimezoneDate(datetime: string) {\n return TimezoneHelper.convertUTCToTimezoneDate(datetime, Timezone.ET);\n}\n"],"mappings":"0HAOA,IAAa,EAAmB,CAC9B,mBAAsB,+BAEtB,aAAe,GACN,EAAW,OAAO,EAAgB,EAAW,aAAa,EAAG,YAAY,EAGlF,aAAe,GACN,EAAW,OAAO,EAAgB,EAAW,aAAa,EAAG,OAAO,EAG7E,YAAc,GACL,GAAG,EAAW,YAAY,EAAgB,EAAW,WAAW,EAAG,EAAgB,EAAW,aAAa,EAAG,SAAS,IAGhI,iBAAmB,GAEV,EAAW,gBAAgB,IAAI,IAAM,EAAI,EAGlD,mBAAqB,GACd,GAAO,KAAK,EAGV,EAAU,cAAc,EAAiB,eAAe,EAAG,EAAM,KAAK,CAAC,EAFrE,GAKX,mBAAqB,GACd,EAAW,cAGT,EAAW,cAAc,QAAQ,EAAiB,eAAe,EAAG,EAAE,EAFpE,EAIb,EAEA,SAAS,EAAgB,EAAkB,CACzC,OAAO,EAAe,yBAAyB,EAAU,EAAS,EAAE,CACtE"}
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{n as r,r as i,t as a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./UCDGupVs.chunk.js";import{S as s}from"./DMxtE2iS.chunk.js";import{lt as c}from"./a9Q9HOAR2.chunk.js";import{s as l,u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as d,t as f}from"./DyKk_C_Y.chunk.js";import{t as p}from"./Bwpvc7Th2.chunk.js";import{t as m}from"./Broadxiw.chunk.js";import{t as h}from"./BhWPGAdN2.chunk.js";import{t as g}from"./GWw4zEXk2.chunk.js";import{t as _}from"./2NdfwDHB.chunk.js";import{d as v,i as y,n as b,r as x}from"./Ta_RhTv-.chunk.js";import{t as S}from"./D7Azbq7u.chunk.js";import{t as C}from"./CrF0fWIm.chunk.js";import{t as w}from"./BcwM0but2.chunk.js";import{t as T}from"./CoqIP93V2.chunk.js";import{t as E}from"./ogE6FIPU2.chunk.js";import{t as D}from"./CignflP_2.chunk.js";var O=n(e(),1),k=n(c(),1),A={row:`_row_18op7_1`,index:`_index_18op7_1`,handle:`_handle_18op7_4`,name:`_name_18op7_17`},j=t();function M(e){let{partner:t,onRemove:n,index:a}=e,{setNodeRef:o,transform:s,transition:c,listeners:l,attributes:u}=y({id:t.id});return(0,j.jsxs)(`div`,{ref:o,style:{transform:v.Transform.toString(s),transition:c,touchAction:`none`},className:(0,k.default)(A.row,`d-flex align-items-center py-2 bg-white border-bottom`),...u,...l,children:[(0,j.jsx)(`span`,{className:(0,k.default)(A.handle,`user-select-none mb-3 me-1`),children:(0,j.jsx)(r,{svg:C,size:i.XXS})}),(0,j.jsx)(`span`,{className:(0,k.default)(A.index,`me-2`),children:a+1}),(0,j.jsx)(`span`,{className:(0,k.default)(A.name,`flex-grow-1 text-truncate px-1`),children:t.name}),(0,j.jsx)(m,{svg:_,className:`text-danger`,onClick:()=>n(t.id)})]})}var N={sidebar:`_sidebar_1mh5y_1`,regionItem:`_regionItem_1mh5y_4`,active:`_active_1mh5y_7`,main:`_main_1mh5y_10`,dragOverlay:`_dragOverlay_1mh5y_14`},P=18,F=6;function I(e,t){return t.map((t,n)=>({contentRegion:e,index:n,partnerProfileId:t.id}))}function L(){let e=u(),t=E(),n=p(),i=l(T.contentRegions()),c=[...i.data?.data??[]].sort((e,t)=>e.name.localeCompare(t.name))??[],m=l(o.currentUser()),[_,v]=(0,O.useState)([]),[y,C]=(0,O.useState)(null),A=l(y&&w.getFeaturedChannelsForRegion(y));if(O.useEffect(()=>{A.hasCompleted&&v(A.data??[])},[A.hasCompleted,y]),O.useEffect(()=>{y||C(i.data?.data?.[0]?.systemName??null)},[i.hasCompleted]),!i.hasCompleted||!m.hasCompleted)return(0,j.jsx)(h,{});let L=c.find(e=>e.systemName===y)??null,R=new Set(_.map(e=>e.id)),z=_.length>=P,B=_.length<F;function V(e){C(e),v([])}async function H(t){if(R.has(t.id))return;let n=await e(w.getContentPartner(t.id));v(e=>[...e,n])}function U(e){v(t=>t.filter(t=>t.id!==e))}function W(e){let{active:t,over:n}=e;!n||t.id===n.id||v(e=>{let r=e.findIndex(e=>e.id?.toString()===t.id.toString()),i=e.findIndex(e=>e.id?.toString()===n.id.toString());return r===-1||i===-1?e:x(e,r,i)})}async function G(){if(!(!y||B))try{await e(w.updateFeaturedChannelsForRegion(y,I(y,_))),n.success(`Featured channels updated successfully`)}catch{n.error(`Failed to update featured channels`)}}return(0,j.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,j.jsxs)(`div`,{className:(0,k.default)(N.sidebar,`flex-shrink-0`),children:[(0,j.jsx)(`div`,{className:`mb-2`,children:(0,j.jsxs)(a,{appLink:t.contentPartners(),className:`text-secondary d-flex align-items-center`,children:[(0,j.jsx)(r,{svg:S}),`Channels`]})}),(0,j.jsx)(`h6`,{className:`mb-3`,children:`Regions`}),(0,j.jsx)(`ul`,{className:`list-unstyled m-0`,children:c.map(e=>(0,j.jsx)(`li`,{className:(0,k.default)(N.regionItem,{[N.active]:e.systemName===y},`cursor-pointer d-flex align-items-center rounded-1 user-select-none p-2`),onClick:()=>V(e.systemName),children:e.name},e.id))})]}),(0,j.jsx)(`div`,{className:N.main,children:L?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`h3`,{className:`mb-3`,children:[`Featured Channels — `,L.name]}),(0,j.jsxs)(`div`,{className:`my-3`,children:[(0,j.jsx)(g,{disabled:z,placeholder:`Search for a channel to add`,onSuggestionSelected:H,getRemoteUrl:()=>`/api/search/v4/search?userId=${m.data?.id}&customerId=${m.data?.customerId}&searchAllChannels=true`,getRemotePostBody:e=>({query:e,indices:[{index:`partner_profile`}],searchType:`content`,filters:{contentRegion:[y]}}),formatRemoteSuggestions:e=>e.results,activationLength:0,clearQueryOnSelect:!0,shouldUpdateQueryOnSelection:!1,renderAsForm:!1}),z&&(0,j.jsxs)(`p`,{className:`text-secondary mt-2 mb-0 small`,children:[`Maximum of `,P,` featured channels reached. Remove a channel before adding a new one.`]})]}),_.length>0?(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`p`,{className:`text-secondary mb-0`,children:`Drag and drop to reorder`}),(0,j.jsx)(b,{ids:_.map(e=>e.id),onSortEnd:W,getDragOverlay:e=>{let t=_.find(t=>t.id===e);return(0,j.jsx)(`div`,{className:(0,k.default)(N.dragOverlay,`bg-white rounded-1 border`),children:t?.name})},children:_.map((e,t)=>(0,j.jsx)(M,{partner:e,index:t,onRemove:U},e.id))})]}):(0,j.jsx)(`p`,{className:`text-secondary mt-2`,children:`No featured channels. Add one using the search above.`}),(0,j.jsxs)(`div`,{className:`mt-4`,children:[(0,j.jsx)(`h4`,{className:`mb-4`,children:`Preview`}),_.length>0?(0,j.jsx)(D,{content:_,templateId:d.RectangularLogoSlidingList,widgetTypeId:f.SpotlightContentPartners,description:``,name:``,id:`featured-channels`,metadata:{},location:`curator`}):(0,j.jsx)(s,{isPreviewing:!0})]}),(0,j.jsxs)(`div`,{className:`mt-3 text-end`,children:[B&&(0,j.jsxs)(`p`,{className:`text-secondary mb-2 small`,children:[`A minimum of `,F,` featured channels is required.`]}),(0,j.jsx)(`button`,{type:`button`,className:`btn btn-dark`,disabled:B,onClick:G,children:`Save`})]})]}):(0,j.jsx)(`p`,{className:`text-secondary mt-2`,children:`Select a region to manage its featured channels.`})})]})}export{L as ManageFeaturedChannelsView};
2
- //# sourceMappingURL=Dmf5vYc42.chunk.js.map
1
+ import{a as e,i as t,ln as n}from"./rp704-Pm.chunk.js";import{n as r,r as i,t as a}from"./Crs6pJ2h.chunk.js";import{t as o}from"./UCDGupVs.chunk.js";import{S as s}from"./DxW67uUT.chunk.js";import{lt as c}from"./a9Q9HOAR2.chunk.js";import{s as l,u}from"./Dgk5cBBe.chunk.js";import"./Oh4_zGIH.chunk.js";import{n as d,t as f}from"./DyKk_C_Y.chunk.js";import{t as p}from"./Bwpvc7Th2.chunk.js";import{t as m}from"./Broadxiw.chunk.js";import{t as h}from"./BhWPGAdN2.chunk.js";import{t as g}from"./GWw4zEXk2.chunk.js";import{t as _}from"./2NdfwDHB.chunk.js";import{d as v,i as y,n as b,r as x}from"./Ta_RhTv-.chunk.js";import{t as S}from"./D7Azbq7u.chunk.js";import{t as C}from"./CrF0fWIm.chunk.js";import{t as w}from"./BcwM0but2.chunk.js";import{t as T}from"./CoqIP93V2.chunk.js";import{t as E}from"./ogE6FIPU2.chunk.js";import{t as D}from"./DZthp5T62.chunk.js";var O=n(e(),1),k=n(c(),1),A={row:`_row_18op7_1`,index:`_index_18op7_1`,handle:`_handle_18op7_4`,name:`_name_18op7_17`},j=t();function M(e){let{partner:t,onRemove:n,index:a}=e,{setNodeRef:o,transform:s,transition:c,listeners:l,attributes:u}=y({id:t.id});return(0,j.jsxs)(`div`,{ref:o,style:{transform:v.Transform.toString(s),transition:c,touchAction:`none`},className:(0,k.default)(A.row,`d-flex align-items-center py-2 bg-white border-bottom`),...u,...l,children:[(0,j.jsx)(`span`,{className:(0,k.default)(A.handle,`user-select-none mb-3 me-1`),children:(0,j.jsx)(r,{svg:C,size:i.XXS})}),(0,j.jsx)(`span`,{className:(0,k.default)(A.index,`me-2`),children:a+1}),(0,j.jsx)(`span`,{className:(0,k.default)(A.name,`flex-grow-1 text-truncate px-1`),children:t.name}),(0,j.jsx)(m,{svg:_,className:`text-danger`,onClick:()=>n(t.id)})]})}var N={sidebar:`_sidebar_1mh5y_1`,regionItem:`_regionItem_1mh5y_4`,active:`_active_1mh5y_7`,main:`_main_1mh5y_10`,dragOverlay:`_dragOverlay_1mh5y_14`},P=18,F=6;function I(e,t){return t.map((t,n)=>({contentRegion:e,index:n,partnerProfileId:t.id}))}function L(){let e=u(),t=E(),n=p(),i=l(T.contentRegions()),c=[...i.data?.data??[]].sort((e,t)=>e.name.localeCompare(t.name))??[],m=l(o.currentUser()),[_,v]=(0,O.useState)([]),[y,C]=(0,O.useState)(null),A=l(y&&w.getFeaturedChannelsForRegion(y));if(O.useEffect(()=>{A.hasCompleted&&v(A.data??[])},[A.hasCompleted,y]),O.useEffect(()=>{y||C(i.data?.data?.[0]?.systemName??null)},[i.hasCompleted]),!i.hasCompleted||!m.hasCompleted)return(0,j.jsx)(h,{});let L=c.find(e=>e.systemName===y)??null,R=new Set(_.map(e=>e.id)),z=_.length>=P,B=_.length<F;function V(e){C(e),v([])}async function H(t){if(R.has(t.id))return;let n=await e(w.getContentPartner(t.id));v(e=>[...e,n])}function U(e){v(t=>t.filter(t=>t.id!==e))}function W(e){let{active:t,over:n}=e;!n||t.id===n.id||v(e=>{let r=e.findIndex(e=>e.id?.toString()===t.id.toString()),i=e.findIndex(e=>e.id?.toString()===n.id.toString());return r===-1||i===-1?e:x(e,r,i)})}async function G(){if(!(!y||B))try{await e(w.updateFeaturedChannelsForRegion(y,I(y,_))),n.success(`Featured channels updated successfully`)}catch{n.error(`Failed to update featured channels`)}}return(0,j.jsxs)(`div`,{className:`d-flex gap-3`,children:[(0,j.jsxs)(`div`,{className:(0,k.default)(N.sidebar,`flex-shrink-0`),children:[(0,j.jsx)(`div`,{className:`mb-2`,children:(0,j.jsxs)(a,{appLink:t.contentPartners(),className:`text-secondary d-flex align-items-center`,children:[(0,j.jsx)(r,{svg:S}),`Channels`]})}),(0,j.jsx)(`h6`,{className:`mb-3`,children:`Regions`}),(0,j.jsx)(`ul`,{className:`list-unstyled m-0`,children:c.map(e=>(0,j.jsx)(`li`,{className:(0,k.default)(N.regionItem,{[N.active]:e.systemName===y},`cursor-pointer d-flex align-items-center rounded-1 user-select-none p-2`),onClick:()=>V(e.systemName),children:e.name},e.id))})]}),(0,j.jsx)(`div`,{className:N.main,children:L?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`h3`,{className:`mb-3`,children:[`Featured Channels — `,L.name]}),(0,j.jsxs)(`div`,{className:`my-3`,children:[(0,j.jsx)(g,{disabled:z,placeholder:`Search for a channel to add`,onSuggestionSelected:H,getRemoteUrl:()=>`/api/search/v4/search?userId=${m.data?.id}&customerId=${m.data?.customerId}&searchAllChannels=true`,getRemotePostBody:e=>({query:e,indices:[{index:`partner_profile`}],searchType:`content`,filters:{contentRegion:[y]}}),formatRemoteSuggestions:e=>e.results,activationLength:0,clearQueryOnSelect:!0,shouldUpdateQueryOnSelection:!1,renderAsForm:!1}),z&&(0,j.jsxs)(`p`,{className:`text-secondary mt-2 mb-0 small`,children:[`Maximum of `,P,` featured channels reached. Remove a channel before adding a new one.`]})]}),_.length>0?(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`p`,{className:`text-secondary mb-0`,children:`Drag and drop to reorder`}),(0,j.jsx)(b,{ids:_.map(e=>e.id),onSortEnd:W,getDragOverlay:e=>{let t=_.find(t=>t.id===e);return(0,j.jsx)(`div`,{className:(0,k.default)(N.dragOverlay,`bg-white rounded-1 border`),children:t?.name})},children:_.map((e,t)=>(0,j.jsx)(M,{partner:e,index:t,onRemove:U},e.id))})]}):(0,j.jsx)(`p`,{className:`text-secondary mt-2`,children:`No featured channels. Add one using the search above.`}),(0,j.jsxs)(`div`,{className:`mt-4`,children:[(0,j.jsx)(`h4`,{className:`mb-4`,children:`Preview`}),_.length>0?(0,j.jsx)(D,{content:_,templateId:d.RectangularLogoSlidingList,widgetTypeId:f.SpotlightContentPartners,description:``,name:``,id:`featured-channels`,metadata:{},location:`curator`}):(0,j.jsx)(s,{isPreviewing:!0})]}),(0,j.jsxs)(`div`,{className:`mt-3 text-end`,children:[B&&(0,j.jsxs)(`p`,{className:`text-secondary mb-2 small`,children:[`A minimum of `,F,` featured channels is required.`]}),(0,j.jsx)(`button`,{type:`button`,className:`btn btn-dark`,disabled:B,onClick:G,children:`Save`})]})]}):(0,j.jsx)(`p`,{className:`text-secondary mt-2`,children:`Select a region to manage its featured channels.`})})]})}export{L as ManageFeaturedChannelsView};
2
+ //# sourceMappingURL=n7lzp_Mc2.chunk.js.map