@clickview/exchange 0.51.0 → 0.51.1

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 (193) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/en.json +1 -1
  3. package/dist/scripts/{BLJrwNZd.chunk.js → 11puwNJo.chunk.js} +2 -2
  4. package/dist/scripts/{BLJrwNZd.chunk.js.map → 11puwNJo.chunk.js.map} +1 -1
  5. package/dist/scripts/{CW105qba.chunk.js → 2-mHspOU.chunk.js} +2 -2
  6. package/dist/scripts/{CW105qba.chunk.js.map → 2-mHspOU.chunk.js.map} +1 -1
  7. package/dist/scripts/{DZEUA_Xy.chunk.js → 4fNVRbjv.chunk.js} +2 -2
  8. package/dist/scripts/{DZEUA_Xy.chunk.js.map → 4fNVRbjv.chunk.js.map} +1 -1
  9. package/dist/scripts/{BYA29WEV.chunk.js → 6JMI0Hhs.chunk.js} +2 -2
  10. package/dist/scripts/{BYA29WEV.chunk.js.map → 6JMI0Hhs.chunk.js.map} +1 -1
  11. package/dist/scripts/{BiFlN7Ya.chunk.js → 8qib0Mvd.chunk.js} +2 -2
  12. package/dist/scripts/{BiFlN7Ya.chunk.js.map → 8qib0Mvd.chunk.js.map} +1 -1
  13. package/dist/scripts/{CT_rcqQG.chunk.js → B3z0crrc.chunk.js} +2 -2
  14. package/dist/scripts/{CT_rcqQG.chunk.js.map → B3z0crrc.chunk.js.map} +1 -1
  15. package/dist/scripts/{U56PHXKm.chunk.js → B5WGUFGa.chunk.js} +2 -2
  16. package/dist/scripts/{U56PHXKm.chunk.js.map → B5WGUFGa.chunk.js.map} +1 -1
  17. package/dist/scripts/{BvlT0tCj.chunk.js → B9FAS-p1.chunk.js} +2 -2
  18. package/dist/scripts/{BvlT0tCj.chunk.js.map → B9FAS-p1.chunk.js.map} +1 -1
  19. package/dist/scripts/BAsU-_cO.chunk.js +2 -0
  20. package/dist/scripts/{DDtPt8Oy.chunk.js.map → BAsU-_cO.chunk.js.map} +1 -1
  21. package/dist/scripts/{Dr28tW01.chunk.js → BJUO8a2A.chunk.js} +2 -2
  22. package/dist/scripts/{Dr28tW01.chunk.js.map → BJUO8a2A.chunk.js.map} +1 -1
  23. package/dist/scripts/{DoLggBSu.chunk.js → BKLaPb8Z.chunk.js} +2 -2
  24. package/dist/scripts/{DoLggBSu.chunk.js.map → BKLaPb8Z.chunk.js.map} +1 -1
  25. package/dist/scripts/{fr9DW7QR.chunk.js → BMu5FhhA.chunk.js} +2 -2
  26. package/dist/scripts/{fr9DW7QR.chunk.js.map → BMu5FhhA.chunk.js.map} +1 -1
  27. package/dist/scripts/{BrHp5K-X.chunk.js → BSsgBjVY.chunk.js} +2 -2
  28. package/dist/scripts/{BrHp5K-X.chunk.js.map → BSsgBjVY.chunk.js.map} +1 -1
  29. package/dist/scripts/{C7v7YuIG.chunk.js → BT4JRb1Y.chunk.js} +2 -2
  30. package/dist/scripts/{C7v7YuIG.chunk.js.map → BT4JRb1Y.chunk.js.map} +1 -1
  31. package/dist/scripts/{CwLEz-p-.chunk.js → BTcOTDv_.chunk.js} +2 -2
  32. package/dist/scripts/{CwLEz-p-.chunk.js.map → BTcOTDv_.chunk.js.map} +1 -1
  33. package/dist/scripts/{DQFr5PPd.chunk.js → BXHBb_0I.chunk.js} +2 -2
  34. package/dist/scripts/{DQFr5PPd.chunk.js.map → BXHBb_0I.chunk.js.map} +1 -1
  35. package/dist/scripts/{Cb4tce-r.chunk.js → Ba3xCq1s.chunk.js} +2 -2
  36. package/dist/scripts/{Cb4tce-r.chunk.js.map → Ba3xCq1s.chunk.js.map} +1 -1
  37. package/dist/scripts/{CL4pALcK.chunk.js → Ba_KnYVR.chunk.js} +2 -2
  38. package/dist/scripts/{CL4pALcK.chunk.js.map → Ba_KnYVR.chunk.js.map} +1 -1
  39. package/dist/scripts/Bbv2kSGH.chunk.js +2 -0
  40. package/dist/scripts/{B_SfYU_Z.chunk.js.map → Bbv2kSGH.chunk.js.map} +1 -1
  41. package/dist/scripts/{DleGvW_4.chunk.js → Bc6W0MI6.chunk.js} +2 -2
  42. package/dist/scripts/{DleGvW_4.chunk.js.map → Bc6W0MI6.chunk.js.map} +1 -1
  43. package/dist/scripts/{ySnC80BC.chunk.js → BcqbWwtY.chunk.js} +2 -2
  44. package/dist/scripts/{ySnC80BC.chunk.js.map → BcqbWwtY.chunk.js.map} +1 -1
  45. package/dist/scripts/{D8WccEdk.chunk.js → BdkyXvBB.chunk.js} +2 -2
  46. package/dist/scripts/{D8WccEdk.chunk.js.map → BdkyXvBB.chunk.js.map} +1 -1
  47. package/dist/scripts/BdpMFXvX.chunk.js +2 -0
  48. package/dist/scripts/{BeMlNTkA.chunk.js.map → BdpMFXvX.chunk.js.map} +1 -1
  49. package/dist/scripts/{BjHsODRK.chunk.js → BgQsAU_t.chunk.js} +2 -2
  50. package/dist/scripts/{BjHsODRK.chunk.js.map → BgQsAU_t.chunk.js.map} +1 -1
  51. package/dist/scripts/{BGadFKMT.chunk.js → Biq7_-Qu.chunk.js} +2 -2
  52. package/dist/scripts/{BGadFKMT.chunk.js.map → Biq7_-Qu.chunk.js.map} +1 -1
  53. package/dist/scripts/{CyMTnTQB.chunk.js → Bk4jBWaN.chunk.js} +2 -2
  54. package/dist/scripts/{CyMTnTQB.chunk.js.map → Bk4jBWaN.chunk.js.map} +1 -1
  55. package/dist/scripts/{ocyN3mGw.chunk.js → BnkNxrEp.chunk.js} +2 -2
  56. package/dist/scripts/{ocyN3mGw.chunk.js.map → BnkNxrEp.chunk.js.map} +1 -1
  57. package/dist/scripts/{DxE8D48c.chunk.js → Br-w-uIM.chunk.js} +2 -2
  58. package/dist/scripts/{DxE8D48c.chunk.js.map → Br-w-uIM.chunk.js.map} +1 -1
  59. package/dist/scripts/{Bysn-kjB.chunk.js → BrNzIV_r.chunk.js} +2 -2
  60. package/dist/scripts/{Bysn-kjB.chunk.js.map → BrNzIV_r.chunk.js.map} +1 -1
  61. package/dist/scripts/{CGhbtKll.chunk.js → BtTmb52z.chunk.js} +2 -2
  62. package/dist/scripts/{CGhbtKll.chunk.js.map → BtTmb52z.chunk.js.map} +1 -1
  63. package/dist/scripts/{C4f1zB5D.chunk.js → BxNS_W6A.chunk.js} +2 -2
  64. package/dist/scripts/{C4f1zB5D.chunk.js.map → BxNS_W6A.chunk.js.map} +1 -1
  65. package/dist/scripts/{CqpUPtGp.chunk.js → C-VdYv59.chunk.js} +2 -2
  66. package/dist/scripts/{CqpUPtGp.chunk.js.map → C-VdYv59.chunk.js.map} +1 -1
  67. package/dist/scripts/{Cou4Uk_z.chunk.js → C25DVNqV.chunk.js} +2 -2
  68. package/dist/scripts/{Cou4Uk_z.chunk.js.map → C25DVNqV.chunk.js.map} +1 -1
  69. package/dist/scripts/{CISd2iel.chunk.js → C3oUPcIr.chunk.js} +2 -2
  70. package/dist/scripts/{CISd2iel.chunk.js.map → C3oUPcIr.chunk.js.map} +1 -1
  71. package/dist/scripts/{TSNK3Bg3.chunk.js → C5KITUPg.chunk.js} +2 -2
  72. package/dist/scripts/{TSNK3Bg3.chunk.js.map → C5KITUPg.chunk.js.map} +1 -1
  73. package/dist/scripts/{BQzaYetN.chunk.js → C70AJ8Ph.chunk.js} +2 -2
  74. package/dist/scripts/{BQzaYetN.chunk.js.map → C70AJ8Ph.chunk.js.map} +1 -1
  75. package/dist/scripts/{B_bh4_2-.chunk.js → COmkaZTY.chunk.js} +2 -2
  76. package/dist/scripts/{B_bh4_2-.chunk.js.map → COmkaZTY.chunk.js.map} +1 -1
  77. package/dist/scripts/{DTVmftQW.chunk.js → CSzv69qT.chunk.js} +2 -2
  78. package/dist/scripts/{DTVmftQW.chunk.js.map → CSzv69qT.chunk.js.map} +1 -1
  79. package/dist/scripts/{BuccZFco.chunk.js → CT4M6LAt.chunk.js} +2 -2
  80. package/dist/scripts/{BuccZFco.chunk.js.map → CT4M6LAt.chunk.js.map} +1 -1
  81. package/dist/scripts/{CQEBaZBs.chunk.js → CVGxJ58B.chunk.js} +2 -2
  82. package/dist/scripts/{CQEBaZBs.chunk.js.map → CVGxJ58B.chunk.js.map} +1 -1
  83. package/dist/scripts/{l5drRPeT.chunk.js → CZwze3a2.chunk.js} +2 -2
  84. package/dist/scripts/{l5drRPeT.chunk.js.map → CZwze3a2.chunk.js.map} +1 -1
  85. package/dist/scripts/{CqI1MQDE.chunk.js → CeFAm80O.chunk.js} +2 -2
  86. package/dist/scripts/{CqI1MQDE.chunk.js.map → CeFAm80O.chunk.js.map} +1 -1
  87. package/dist/scripts/{DVrIrni9.chunk.js → CjpryakR.chunk.js} +2 -2
  88. package/dist/scripts/{DVrIrni9.chunk.js.map → CjpryakR.chunk.js.map} +1 -1
  89. package/dist/scripts/{By_OMtDJ.chunk.js → CoXPUxT-.chunk.js} +2 -2
  90. package/dist/scripts/{By_OMtDJ.chunk.js.map → CoXPUxT-.chunk.js.map} +1 -1
  91. package/dist/scripts/{BUuCwkpu.chunk.js → Cu98NFjS.chunk.js} +2 -2
  92. package/dist/scripts/{BUuCwkpu.chunk.js.map → Cu98NFjS.chunk.js.map} +1 -1
  93. package/dist/scripts/{DX9fdMAU.chunk.js → Cy4rHX30.chunk.js} +2 -2
  94. package/dist/scripts/{DX9fdMAU.chunk.js.map → Cy4rHX30.chunk.js.map} +1 -1
  95. package/dist/scripts/{fcH9o5X3.chunk.js → D03Abjc_.chunk.js} +2 -2
  96. package/dist/scripts/{fcH9o5X3.chunk.js.map → D03Abjc_.chunk.js.map} +1 -1
  97. package/dist/scripts/{ChL5ufI4.chunk.js → D2a2dcGU.chunk.js} +2 -2
  98. package/dist/scripts/{ChL5ufI4.chunk.js.map → D2a2dcGU.chunk.js.map} +1 -1
  99. package/dist/scripts/{QIbgTj4j.chunk.js → D3ImQw2c.chunk.js} +2 -2
  100. package/dist/scripts/{QIbgTj4j.chunk.js.map → D3ImQw2c.chunk.js.map} +1 -1
  101. package/dist/scripts/{4dJGhLcF.chunk.js → D3hkQeI3.chunk.js} +2 -2
  102. package/dist/scripts/{4dJGhLcF.chunk.js.map → D3hkQeI3.chunk.js.map} +1 -1
  103. package/dist/scripts/{pYIH9TUm.chunk.js → D3i5M6Ra.chunk.js} +2 -2
  104. package/dist/scripts/{pYIH9TUm.chunk.js.map → D3i5M6Ra.chunk.js.map} +1 -1
  105. package/dist/scripts/{DhU1_zaa.chunk.js → D6PZ2zrc.chunk.js} +2 -2
  106. package/dist/scripts/{DhU1_zaa.chunk.js.map → D6PZ2zrc.chunk.js.map} +1 -1
  107. package/dist/scripts/{D2UAzuy_.chunk.js → DCZt5zdo.chunk.js} +2 -2
  108. package/dist/scripts/{D2UAzuy_.chunk.js.map → DCZt5zdo.chunk.js.map} +1 -1
  109. package/dist/scripts/{C5Um1mJN.chunk.js → DKEmRPe5.chunk.js} +2 -2
  110. package/dist/scripts/{C5Um1mJN.chunk.js.map → DKEmRPe5.chunk.js.map} +1 -1
  111. package/dist/scripts/{CqyexBBO.chunk.js → DOp0Y0kk.chunk.js} +2 -2
  112. package/dist/scripts/{CqyexBBO.chunk.js.map → DOp0Y0kk.chunk.js.map} +1 -1
  113. package/dist/scripts/{0O3fE335.chunk.js → DTO3v7TR.chunk.js} +2 -2
  114. package/dist/scripts/{0O3fE335.chunk.js.map → DTO3v7TR.chunk.js.map} +1 -1
  115. package/dist/scripts/{DcsoXCdt.chunk.js → Db208T_5.chunk.js} +2 -2
  116. package/dist/scripts/{DcsoXCdt.chunk.js.map → Db208T_5.chunk.js.map} +1 -1
  117. package/dist/scripts/{DsYAvL3r.chunk.js → DdKPWSa-.chunk.js} +2 -2
  118. package/dist/scripts/{DsYAvL3r.chunk.js.map → DdKPWSa-.chunk.js.map} +1 -1
  119. package/dist/scripts/{-pUO7-TY.chunk.js → DdaXMT9A.chunk.js} +2 -2
  120. package/dist/scripts/{-pUO7-TY.chunk.js.map → DdaXMT9A.chunk.js.map} +1 -1
  121. package/dist/scripts/Dequ_ZY-.chunk.js +2 -0
  122. package/dist/scripts/{CbuFJTrt.chunk.js.map → Dequ_ZY-.chunk.js.map} +1 -1
  123. package/dist/scripts/{qIzf4pm6.chunk.js → Dg5ezm9_.chunk.js} +2 -2
  124. package/dist/scripts/{qIzf4pm6.chunk.js.map → Dg5ezm9_.chunk.js.map} +1 -1
  125. package/dist/scripts/{E3OALlLu.chunk.js → DiFNkYHy.chunk.js} +2 -2
  126. package/dist/scripts/{E3OALlLu.chunk.js.map → DiFNkYHy.chunk.js.map} +1 -1
  127. package/dist/scripts/{SrHfrZ_D.chunk.js → DiVvth5j.chunk.js} +2 -2
  128. package/dist/scripts/{SrHfrZ_D.chunk.js.map → DiVvth5j.chunk.js.map} +1 -1
  129. package/dist/scripts/{DCXHIIUP.chunk.js → Dlp5KylI.chunk.js} +2 -2
  130. package/dist/scripts/{DCXHIIUP.chunk.js.map → Dlp5KylI.chunk.js.map} +1 -1
  131. package/dist/scripts/{wX0oeObx.chunk.js → DoOK7kUv.chunk.js} +2 -2
  132. package/dist/scripts/{wX0oeObx.chunk.js.map → DoOK7kUv.chunk.js.map} +1 -1
  133. package/dist/scripts/{CKHb3pvm.chunk.js → Dot69sAe.chunk.js} +2 -2
  134. package/dist/scripts/{CKHb3pvm.chunk.js.map → Dot69sAe.chunk.js.map} +1 -1
  135. package/dist/scripts/{gDhzFsR2.chunk.js → DsCmIb0y.chunk.js} +2 -2
  136. package/dist/scripts/{gDhzFsR2.chunk.js.map → DsCmIb0y.chunk.js.map} +1 -1
  137. package/dist/scripts/DulaiN8k.chunk.js +2 -0
  138. package/dist/scripts/{RDz68qfn.chunk.js.map → DulaiN8k.chunk.js.map} +1 -1
  139. package/dist/scripts/{CbvT5tOJ.chunk.js → DvopWUeu.chunk.js} +2 -2
  140. package/dist/scripts/{CbvT5tOJ.chunk.js.map → DvopWUeu.chunk.js.map} +1 -1
  141. package/dist/scripts/{3NU4Uele.chunk.js → Dvty4-yq.chunk.js} +2 -2
  142. package/dist/scripts/{3NU4Uele.chunk.js.map → Dvty4-yq.chunk.js.map} +1 -1
  143. package/dist/scripts/{YlT1G1sJ.chunk.js → DwdAMsTn.chunk.js} +2 -2
  144. package/dist/scripts/{YlT1G1sJ.chunk.js.map → DwdAMsTn.chunk.js.map} +1 -1
  145. package/dist/scripts/{CRQrsCQB.chunk.js → Dy5Hagep.chunk.js} +2 -2
  146. package/dist/scripts/{CRQrsCQB.chunk.js.map → Dy5Hagep.chunk.js.map} +1 -1
  147. package/dist/scripts/{DkFC8dkV.chunk.js → FARgFqug.chunk.js} +2 -2
  148. package/dist/scripts/{DkFC8dkV.chunk.js.map → FARgFqug.chunk.js.map} +1 -1
  149. package/dist/scripts/{DWrwMjZY.chunk.js → GXToHPHe.chunk.js} +2 -2
  150. package/dist/scripts/{DWrwMjZY.chunk.js.map → GXToHPHe.chunk.js.map} +1 -1
  151. package/dist/scripts/{D_y7C4wF.chunk.js → Mm1GvAIj.chunk.js} +2 -2
  152. package/dist/scripts/{D_y7C4wF.chunk.js.map → Mm1GvAIj.chunk.js.map} +1 -1
  153. package/dist/scripts/{BRcsVYw7.chunk.js → O_gDwfEj.chunk.js} +2 -2
  154. package/dist/scripts/{BRcsVYw7.chunk.js.map → O_gDwfEj.chunk.js.map} +1 -1
  155. package/dist/scripts/{DI__y4wi.chunk.js → PUKDcvT2.chunk.js} +2 -2
  156. package/dist/scripts/{DI__y4wi.chunk.js.map → PUKDcvT2.chunk.js.map} +1 -1
  157. package/dist/scripts/{LUhWZ6aW.chunk.js → SAoHi7e5.chunk.js} +2 -2
  158. package/dist/scripts/{LUhWZ6aW.chunk.js.map → SAoHi7e5.chunk.js.map} +1 -1
  159. package/dist/scripts/SErl8iiO.chunk.js +2 -0
  160. package/dist/scripts/{IxBH4lFI.chunk.js.map → SErl8iiO.chunk.js.map} +1 -1
  161. package/dist/scripts/{CImJqeCy.chunk.js → UgARO_Sh.chunk.js} +2 -2
  162. package/dist/scripts/{CImJqeCy.chunk.js.map → UgARO_Sh.chunk.js.map} +1 -1
  163. package/dist/scripts/{dniZ6e3H.chunk.js → UvQu1iiY.chunk.js} +2 -2
  164. package/dist/scripts/{dniZ6e3H.chunk.js.map → UvQu1iiY.chunk.js.map} +1 -1
  165. package/dist/scripts/aPq0PUkl.chunk.js +2 -0
  166. package/dist/scripts/{fftzBNKK.chunk.js.map → aPq0PUkl.chunk.js.map} +1 -1
  167. package/dist/scripts/{app-nj3yOqer.js → app-CAg-7ccU.js} +3 -3
  168. package/dist/scripts/{app-nj3yOqer.js.map → app-CAg-7ccU.js.map} +1 -1
  169. package/dist/scripts/{BaY6qhO_.chunk.js → cB6ytVLm.chunk.js} +2 -2
  170. package/dist/scripts/{BaY6qhO_.chunk.js.map → cB6ytVLm.chunk.js.map} +1 -1
  171. package/dist/scripts/{HiwCz-PT.chunk.js → c_eEfqOG.chunk.js} +2 -2
  172. package/dist/scripts/{HiwCz-PT.chunk.js.map → c_eEfqOG.chunk.js.map} +1 -1
  173. package/dist/scripts/{DKaBhZWG.chunk.js → fIpx79-n.chunk.js} +2 -2
  174. package/dist/scripts/{DKaBhZWG.chunk.js.map → fIpx79-n.chunk.js.map} +1 -1
  175. package/dist/scripts/{CE99prXT.chunk.js → qZQmdlst.chunk.js} +2 -2
  176. package/dist/scripts/{CE99prXT.chunk.js.map → qZQmdlst.chunk.js.map} +1 -1
  177. package/dist/scripts/{Cau1TcaF.chunk.js → thJth_Km.chunk.js} +2 -2
  178. package/dist/scripts/{Cau1TcaF.chunk.js.map → thJth_Km.chunk.js.map} +1 -1
  179. package/dist/scripts/{DprAwPn0.chunk.js → u8PxaIUU.chunk.js} +2 -2
  180. package/dist/scripts/{DprAwPn0.chunk.js.map → u8PxaIUU.chunk.js.map} +1 -1
  181. package/dist/scripts/{BVJN5cea.chunk.js → uiiMcBcy.chunk.js} +2 -2
  182. package/dist/scripts/{BVJN5cea.chunk.js.map → uiiMcBcy.chunk.js.map} +1 -1
  183. package/dist/scripts/w6RjnEDK.chunk.js +2 -0
  184. package/dist/scripts/{DnrIQC4C.chunk.js.map → w6RjnEDK.chunk.js.map} +1 -1
  185. package/package.json +1 -1
  186. package/dist/scripts/B_SfYU_Z.chunk.js +0 -2
  187. package/dist/scripts/BeMlNTkA.chunk.js +0 -2
  188. package/dist/scripts/CbuFJTrt.chunk.js +0 -2
  189. package/dist/scripts/DDtPt8Oy.chunk.js +0 -2
  190. package/dist/scripts/DnrIQC4C.chunk.js +0 -2
  191. package/dist/scripts/IxBH4lFI.chunk.js +0 -2
  192. package/dist/scripts/RDz68qfn.chunk.js +0 -2
  193. package/dist/scripts/fftzBNKK.chunk.js +0 -2
@@ -1,2 +1,2 @@
1
- import{j as e,R as s}from"./app-nj3yOqer.js";import{C as g}from"./CE99prXT.chunk.js";const p="_accordionHeader_1eoao_1",j={accordionHeader:p};function H(i){return e.jsx("ul",{className:"striped-list list-unstyled no-full-width",children:i.children})}function y(i){const[t,r]=s.useState(!1),[a,n]=s.useState({}),[o,c]=s.useState(0),l=s.useRef(null),d=s.useRef(null),u=s.useRef(null),m=s.useRef(null);function x(){t?(n({maxHeight:0,opacity:1}),c(0),d.current=window.setTimeout(()=>r(!1),400)):(r(!0),u.current=window.setTimeout(()=>{n({maxHeight:"max-content",opacity:0,position:"absolute"})}))}return s.useEffect(()=>{var f;if(!t)return;const w=Math.ceil((f=l.current)==null?void 0:f.getBoundingClientRect().height),h=a.opacity===0;h&&c(w),h&&o&&(n({position:"relative"}),m.current=window.requestAnimationFrame(()=>n({maxHeight:o,opacity:1})))},[t,o,a.maxHeight]),s.useEffect(()=>()=>{window.clearTimeout(d.current),window.clearTimeout(u.current),window.cancelAnimationFrame(m.current)},[]),e.jsxs("li",{className:"position-relative",children:[e.jsxs("div",{className:"cursor-pointer d-flex align-items-center py-2 px-3",onClick:x,children:[e.jsx("div",{className:"ms-1",children:e.jsx(g,{direction:t?"down":"right"})}),e.jsx("span",{className:`${t?"fw-semibold":""} user-select-none ms-2`,children:i.title})]}),t&&e.jsx("div",{className:"bg-white",children:e.jsx("div",{ref:l,className:`${j.accordionHeader}`,style:a,children:i.children})})]})}H.Header=y;function A(){return e.jsx(e.Fragment,{children:e.jsx("ul",{className:"list-unstyled",children:[...Array(20)].map((i,t)=>e.jsxs("li",{className:`${t%2===0?"partial-loading-background":""} d-flex w-100 p-2`,children:[e.jsx("div",{className:"svg-container"}),e.jsx("span",{children:" "})]},t))})})}var R=(i=>(i[i.Video=0]="Video",i[i.Audio=1]="Audio",i))(R||{});export{H as A,R as P,A as a};
2
- //# sourceMappingURL=DVrIrni9.chunk.js.map
1
+ import{j as e,R as s}from"./app-CAg-7ccU.js";import{C as g}from"./qZQmdlst.chunk.js";const p="_accordionHeader_1eoao_1",j={accordionHeader:p};function H(i){return e.jsx("ul",{className:"striped-list list-unstyled no-full-width",children:i.children})}function y(i){const[t,r]=s.useState(!1),[a,n]=s.useState({}),[o,c]=s.useState(0),l=s.useRef(null),d=s.useRef(null),u=s.useRef(null),m=s.useRef(null);function x(){t?(n({maxHeight:0,opacity:1}),c(0),d.current=window.setTimeout(()=>r(!1),400)):(r(!0),u.current=window.setTimeout(()=>{n({maxHeight:"max-content",opacity:0,position:"absolute"})}))}return s.useEffect(()=>{var f;if(!t)return;const w=Math.ceil((f=l.current)==null?void 0:f.getBoundingClientRect().height),h=a.opacity===0;h&&c(w),h&&o&&(n({position:"relative"}),m.current=window.requestAnimationFrame(()=>n({maxHeight:o,opacity:1})))},[t,o,a.maxHeight]),s.useEffect(()=>()=>{window.clearTimeout(d.current),window.clearTimeout(u.current),window.cancelAnimationFrame(m.current)},[]),e.jsxs("li",{className:"position-relative",children:[e.jsxs("div",{className:"cursor-pointer d-flex align-items-center py-2 px-3",onClick:x,children:[e.jsx("div",{className:"ms-1",children:e.jsx(g,{direction:t?"down":"right"})}),e.jsx("span",{className:`${t?"fw-semibold":""} user-select-none ms-2`,children:i.title})]}),t&&e.jsx("div",{className:"bg-white",children:e.jsx("div",{ref:l,className:`${j.accordionHeader}`,style:a,children:i.children})})]})}H.Header=y;function A(){return e.jsx(e.Fragment,{children:e.jsx("ul",{className:"list-unstyled",children:[...Array(20)].map((i,t)=>e.jsxs("li",{className:`${t%2===0?"partial-loading-background":""} d-flex w-100 p-2`,children:[e.jsx("div",{className:"svg-container"}),e.jsx("span",{children:" "})]},t))})})}var R=(i=>(i[i.Video=0]="Video",i[i.Audio=1]="Audio",i))(R||{});export{H as A,R as P,A as a};
2
+ //# sourceMappingURL=CjpryakR.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DVrIrni9.chunk.js","sources":["../../src/shared/components/accordion-list/AccordionList.tsx","../../src/shared/components/accordion-list/partial-loading/PartialAccordionList.tsx","../../src/apps/tv/interfaces/enums/ProgramType.ts"],"sourcesContent":["import React from 'react';\n\nimport { Caret } from 'libs/shared/components/caret/Caret';\n\nimport styles from './accordion-list.module.scss';\n\nexport function AccordionList(props: React.PropsWithChildren) {\n return (\n <ul className='striped-list list-unstyled no-full-width'>\n {props.children}\n </ul>\n );\n}\n\ninterface AccordionListProps {\n title?: string;\n}\n\nfunction AccordionListHeader(props: React.PropsWithChildren<AccordionListProps>) {\n const [ show, setShow ] = React.useState(false);\n const [ programsStyle, setProgramsStyle ] = React.useState<React.CSSProperties>({});\n const [ dynamicHeight, setDynamicHeight ] = React.useState(0);\n\n const accordionBodyRef = React.useRef<HTMLDivElement>(null);\n const hideProgramsTimeRef = React.useRef<number>(null);\n const showProgramsTimeRef = React.useRef<number>(null);\n const animationFrameRef = React.useRef<number>(null);\n\n function handleSetShow() {\n if (show) {\n setProgramsStyle({ maxHeight: 0, opacity: 1 });\n setDynamicHeight(0);\n hideProgramsTimeRef.current = window.setTimeout(() => setShow(false), 400);\n } else {\n setShow(true);\n showProgramsTimeRef.current = window.setTimeout(() => {\n setProgramsStyle({ maxHeight: 'max-content', opacity: 0, position: 'absolute' });\n });\n }\n }\n\n React.useEffect(() => {\n if (!show) return;\n\n const accordionContentHeight = Math.ceil(accordionBodyRef.current?.getBoundingClientRect().height);\n const isHidden = programsStyle.opacity === 0;\n\n if (isHidden) {\n setDynamicHeight(accordionContentHeight);\n }\n\n if (isHidden && dynamicHeight) {\n setProgramsStyle({ position: 'relative' });\n animationFrameRef.current = window.requestAnimationFrame(\n () => setProgramsStyle({ maxHeight: dynamicHeight, opacity: 1 })\n );\n }\n }, [ show, dynamicHeight, programsStyle.maxHeight ]);\n\n React.useEffect(() => {\n return () => {\n window.clearTimeout(hideProgramsTimeRef.current);\n window.clearTimeout(showProgramsTimeRef.current);\n window.cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n \n return (\n <li className='position-relative'>\n <div\n className={'cursor-pointer d-flex align-items-center py-2 px-3'}\n onClick={handleSetShow}\n >\n <div className='ms-1'>\n <Caret direction={show ? 'down' : 'right'} />\n </div>\n <span className={`${show ? 'fw-semibold' : ''} user-select-none ms-2`}>{props.title}</span>\n </div>\n {show && (\n <div className='bg-white'>\n <div\n ref={accordionBodyRef}\n className={`${styles.accordionHeader}`}\n style={programsStyle}\n >\n {props.children}\n </div>\n </div>\n )}\n </li>\n );\n}\n\nAccordionList.Header = AccordionListHeader;","import React from 'react';\n\nexport function PartialAccordionList() {\n return (\n <>\n <ul className='list-unstyled'>\n {[...Array(20)].map((_, index) => (\n <li key={index} className={`${index % 2 === 0 ? 'partial-loading-background' : ''} d-flex w-100 p-2`}>\n <div className='svg-container'></div>\n <span>&nbsp;</span>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","export enum ProgramType {\n Video = 0,\n Audio = 1\n}"],"names":["AccordionList","props","jsx","AccordionListHeader","show","setShow","React","programsStyle","setProgramsStyle","dynamicHeight","setDynamicHeight","accordionBodyRef","hideProgramsTimeRef","showProgramsTimeRef","animationFrameRef","handleSetShow","accordionContentHeight","_a","isHidden","jsxs","Caret","styles","PartialAccordionList","Fragment","_","index","ProgramType"],"mappings":"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"}
1
+ {"version":3,"file":"CjpryakR.chunk.js","sources":["../../src/shared/components/accordion-list/AccordionList.tsx","../../src/shared/components/accordion-list/partial-loading/PartialAccordionList.tsx","../../src/apps/tv/interfaces/enums/ProgramType.ts"],"sourcesContent":["import React from 'react';\n\nimport { Caret } from 'libs/shared/components/caret/Caret';\n\nimport styles from './accordion-list.module.scss';\n\nexport function AccordionList(props: React.PropsWithChildren) {\n return (\n <ul className='striped-list list-unstyled no-full-width'>\n {props.children}\n </ul>\n );\n}\n\ninterface AccordionListProps {\n title?: string;\n}\n\nfunction AccordionListHeader(props: React.PropsWithChildren<AccordionListProps>) {\n const [ show, setShow ] = React.useState(false);\n const [ programsStyle, setProgramsStyle ] = React.useState<React.CSSProperties>({});\n const [ dynamicHeight, setDynamicHeight ] = React.useState(0);\n\n const accordionBodyRef = React.useRef<HTMLDivElement>(null);\n const hideProgramsTimeRef = React.useRef<number>(null);\n const showProgramsTimeRef = React.useRef<number>(null);\n const animationFrameRef = React.useRef<number>(null);\n\n function handleSetShow() {\n if (show) {\n setProgramsStyle({ maxHeight: 0, opacity: 1 });\n setDynamicHeight(0);\n hideProgramsTimeRef.current = window.setTimeout(() => setShow(false), 400);\n } else {\n setShow(true);\n showProgramsTimeRef.current = window.setTimeout(() => {\n setProgramsStyle({ maxHeight: 'max-content', opacity: 0, position: 'absolute' });\n });\n }\n }\n\n React.useEffect(() => {\n if (!show) return;\n\n const accordionContentHeight = Math.ceil(accordionBodyRef.current?.getBoundingClientRect().height);\n const isHidden = programsStyle.opacity === 0;\n\n if (isHidden) {\n setDynamicHeight(accordionContentHeight);\n }\n\n if (isHidden && dynamicHeight) {\n setProgramsStyle({ position: 'relative' });\n animationFrameRef.current = window.requestAnimationFrame(\n () => setProgramsStyle({ maxHeight: dynamicHeight, opacity: 1 })\n );\n }\n }, [ show, dynamicHeight, programsStyle.maxHeight ]);\n\n React.useEffect(() => {\n return () => {\n window.clearTimeout(hideProgramsTimeRef.current);\n window.clearTimeout(showProgramsTimeRef.current);\n window.cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n \n return (\n <li className='position-relative'>\n <div\n className={'cursor-pointer d-flex align-items-center py-2 px-3'}\n onClick={handleSetShow}\n >\n <div className='ms-1'>\n <Caret direction={show ? 'down' : 'right'} />\n </div>\n <span className={`${show ? 'fw-semibold' : ''} user-select-none ms-2`}>{props.title}</span>\n </div>\n {show && (\n <div className='bg-white'>\n <div\n ref={accordionBodyRef}\n className={`${styles.accordionHeader}`}\n style={programsStyle}\n >\n {props.children}\n </div>\n </div>\n )}\n </li>\n );\n}\n\nAccordionList.Header = AccordionListHeader;","import React from 'react';\n\nexport function PartialAccordionList() {\n return (\n <>\n <ul className='list-unstyled'>\n {[...Array(20)].map((_, index) => (\n <li key={index} className={`${index % 2 === 0 ? 'partial-loading-background' : ''} d-flex w-100 p-2`}>\n <div className='svg-container'></div>\n <span>&nbsp;</span>\n </li>\n ))}\n </ul>\n </>\n );\n}\n","export enum ProgramType {\n Video = 0,\n Audio = 1\n}"],"names":["AccordionList","props","jsx","AccordionListHeader","show","setShow","React","programsStyle","setProgramsStyle","dynamicHeight","setDynamicHeight","accordionBodyRef","hideProgramsTimeRef","showProgramsTimeRef","animationFrameRef","handleSetShow","accordionContentHeight","_a","isHidden","jsxs","Caret","styles","PartialAccordionList","Fragment","_","index","ProgramType"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e,ac as I,ad as U,ae as O,A as H,c as $,R,aA as L,ap as B,a as T,b as x,a2 as u,aS as V,aT as W,l as G,L as Y,aC as F}from"./app-nj3yOqer.js";import{P as q}from"./CL4pALcK.chunk.js";import{h as K}from"./ChL5ufI4.chunk.js";import{u as Z}from"./RDz68qfn.chunk.js";import{P as S,A as _,a as z}from"./DVrIrni9.chunk.js";import{T as X,a as J}from"./ySnC80BC.chunk.js";import{T as Q,a as ee}from"./4dJGhLcF.chunk.js";import{T as f}from"./CISd2iel.chunk.js";import{u as te}from"./BeMlNTkA.chunk.js";import{u as ae}from"./CImJqeCy.chunk.js";import{t as ne}from"./BjHsODRK.chunk.js";import{L as se}from"./DxE8D48c.chunk.js";import{T as re}from"./DsYAvL3r.chunk.js";import"./DTVmftQW.chunk.js";import"./BlDVEZsX.chunk.js";import"./Dr28tW01.chunk.js";import"./CW105qba.chunk.js";import"./CE99prXT.chunk.js";import"./Cau1TcaF.chunk.js";import"./CGhbtKll.chunk.js";const oe="_pillTabSelector_1d8n6_1",ie={pillTabSelector:oe},A=["All","#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],ce={"#":"0"},le={actionType:O.Click,entity:U.Url,location:I.MagicTabs};function de(t,s){if(!t)return;if(t==="0")return"#";const r=A.find(a=>a.toUpperCase()===t.toUpperCase());if(!(r==="All"&&!s))return r}function me(t){return A.map(s=>{if(s==="All"&&!t.showAll)return;const r=t.getItemAppLink(ce[s]??s);return{name:s,appLink:r,active:t.selected===s,analyticsData:{name:s,url:H.getHref(r)},analyticsOptions:le}}).filter(Boolean)}function pe(t){const s=de(t.selected,t.showAll),r=me({selected:s,showAll:t.showAll,getItemAppLink:t.getItemAppLink});return e.jsx("div",{className:"mb-3",children:e.jsx(q,{tabs:r,className:ie.pillTabSelector,enableSmallScreenSupport:t.enableSmallScreenSupport,formatDisplayText:t.formatDisplayText})})}const ge="_dateContainer_b9acj_1",ue="_hover_b9acj_4",he="_channelLogo_b9acj_7",fe="_channelLogoContainer_b9acj_10",Te="_programsContainer_b9acj_13",xe="_date_b9acj_1",je="_thumbnail_b9acj_27",p={dateContainer:ge,hover:ue,channelLogo:he,channelLogoContainer:fe,programsContainer:Te,date:xe,thumbnail:je};function ve(t){function s(r){const a=$.findWhere(t.channels,{name:r});return a==null?void 0:a.logoUrl}return e.jsx("div",{className:"mb-2",children:t.groupedPrograms.map(([r,a])=>e.jsxs("div",{className:"border-top d-flex pt-3 pb-2",children:[e.jsx("div",{className:`${p.channelLogoContainer} flex-shrink-0 mb-3`,children:e.jsx("img",{src:s(r),alt:r,className:`${p.channelLogo} ms-4`})}),e.jsx("div",{className:"w-100",children:a.map(([i,n])=>e.jsx(be,{date:i,programs:n,tvPreviewUrls:t.tvPreviewUrls},i))})]},r))})}function be(t){const[s,r]=R.useState();function a(n){switch(n.programType){case S.Video:return{application:x.TV,action:T.Tv.PREVIEW,args:[n.regionCode,n.id]};case S.Audio:return{application:x.TV,action:T.Tv.RADIO_DOWNLOAD,args:[n.id]}}}function i(n){const j=t.tvPreviewUrls[n.regionCode],m=n.globalId.split("-").join("");return`${j}/thumbnail/${m}.jpg`}return e.jsx("div",{className:`${p.dateContainer} ${s?p.hover:""} py-2 px-3 rounded`,children:e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx("div",{className:`${p.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:e.jsx(se,{src:i(s||t.programs[0]),alt:L.format(t.date,"D MMM"),extraClasses:"w-100 rounded"})}),e.jsxs("p",{className:`${p.date} fw-semibold flex-shrink-0 mb-0`,children:[L.format(t.date,"D MMM"),":"]}),e.jsx("div",{className:`${p.programsContainer} d-flex flex-wrap`,children:t.programs.map(n=>e.jsx("div",{onMouseEnter:()=>r(n),onMouseLeave:()=>r(null),children:e.jsx(B,{appLink:a(n),className:"text-decoration-none",children:e.jsx(re,{program:n,showEndTime:!0})},n.id)},n.id))})]},t.date)})}const Le="tv.programs",Ae=Y.encloseNamespace(Le),Pe=/^[a-zA-Z]/;function Fe(t){const s=t.startsWith||"A",r=u(F.config()),a=u(f.region(t.region)),i=u(f.regions()),n=u(f.dateRange(t.region)),j=u(a.data&&f.channels(a.data.code)),m=u(a.data&&n.data&&f.programsByLetter(a.data.code,s,n.data.startDate,n.data.endDate)),{setRegion:N}=ae(),{showTvGuide:w}=V(),y=R.useMemo(()=>{var C;if(!((C=m.data)!=null&&C.length))return[];const c={};m.data.forEach(o=>{t.startsWith==="0"&&Pe.test(o.title)||(c[o.title]||(c[o.title]=[]),c[o.title].push(o))});let l=Object.entries(c);return l=l.sort(([o],[v])=>o<v?-1:1),l.map(([o,v])=>{const M=v.reduce((d,g)=>{const h=g.channelName;d[h]||(d[h]={});const D=ne(g.startTime,g.timeZone),b=L.format(D,"YYYY-MM-DD");return d[h][b]||(d[h][b]=[]),d[h][b].push(g),d},{}),k=Object.entries(M).map((([d,g])=>[d,Object.entries(g)]));return[o,k]})},[m.data]);[...A,"0"].includes(s)||K(W.BadRequest),te(a),Z([i,m]),G({title:Ae("title")});const E=a.hasCompleted&&i.hasCompleted&&n.hasCompleted&&m.hasCompleted&&r.hasCompleted;return e.jsxs(e.Fragment,{children:[e.jsx(Q,{region:a.data}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(X,{active:"programs",currentRegion:a.data,showTvGuide:w}),e.jsx(ee,{currentRegion:a.data,regions:i.data,appLink:{application:x.TV,action:T.Tv.PROGRAMS,params:{startsWith:s}},onClick:N})]}),e.jsx(J,{dateRange:n.data,region:a.data}),e.jsx(pe,{selected:s,getItemAppLink:c=>{var l;return{application:x.TV,action:T.Tv.PROGRAMS,args:[(l=a.data)==null?void 0:l.code],params:{startsWith:c}}}}),E?e.jsx(e.Fragment,{children:e.jsx(_,{children:y.map(([c,l],P)=>e.jsx(_.Header,{title:c,children:e.jsx(ve,{groupedPrograms:l,channels:j.data,tvPreviewUrls:r.data.tvPreviewUrls})},P))})}):e.jsx(z,{})]})}export{Fe as TvProgramsView};
2
- //# sourceMappingURL=By_OMtDJ.chunk.js.map
1
+ import{j as e,ac as I,ad as U,ae as O,A as H,c as $,R,aA as L,ap as B,a as T,b as x,a2 as u,aS as V,aT as W,l as G,L as Y,aC as F}from"./app-CAg-7ccU.js";import{P as q}from"./Ba_KnYVR.chunk.js";import{h as K}from"./D2a2dcGU.chunk.js";import{u as Z}from"./DulaiN8k.chunk.js";import{P as S,A as _,a as z}from"./CjpryakR.chunk.js";import{T as X,a as J}from"./BcqbWwtY.chunk.js";import{T as Q,a as ee}from"./D3hkQeI3.chunk.js";import{T as f}from"./C3oUPcIr.chunk.js";import{u as te}from"./BdpMFXvX.chunk.js";import{u as ae}from"./UgARO_Sh.chunk.js";import{t as ne}from"./BgQsAU_t.chunk.js";import{L as se}from"./Br-w-uIM.chunk.js";import{T as re}from"./DdKPWSa-.chunk.js";import"./CSzv69qT.chunk.js";import"./BlDVEZsX.chunk.js";import"./BJUO8a2A.chunk.js";import"./2-mHspOU.chunk.js";import"./qZQmdlst.chunk.js";import"./thJth_Km.chunk.js";import"./BtTmb52z.chunk.js";const oe="_pillTabSelector_1d8n6_1",ie={pillTabSelector:oe},A=["All","#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],ce={"#":"0"},le={actionType:O.Click,entity:U.Url,location:I.MagicTabs};function de(t,s){if(!t)return;if(t==="0")return"#";const r=A.find(a=>a.toUpperCase()===t.toUpperCase());if(!(r==="All"&&!s))return r}function me(t){return A.map(s=>{if(s==="All"&&!t.showAll)return;const r=t.getItemAppLink(ce[s]??s);return{name:s,appLink:r,active:t.selected===s,analyticsData:{name:s,url:H.getHref(r)},analyticsOptions:le}}).filter(Boolean)}function pe(t){const s=de(t.selected,t.showAll),r=me({selected:s,showAll:t.showAll,getItemAppLink:t.getItemAppLink});return e.jsx("div",{className:"mb-3",children:e.jsx(q,{tabs:r,className:ie.pillTabSelector,enableSmallScreenSupport:t.enableSmallScreenSupport,formatDisplayText:t.formatDisplayText})})}const ge="_dateContainer_b9acj_1",ue="_hover_b9acj_4",he="_channelLogo_b9acj_7",fe="_channelLogoContainer_b9acj_10",Te="_programsContainer_b9acj_13",xe="_date_b9acj_1",je="_thumbnail_b9acj_27",p={dateContainer:ge,hover:ue,channelLogo:he,channelLogoContainer:fe,programsContainer:Te,date:xe,thumbnail:je};function ve(t){function s(r){const a=$.findWhere(t.channels,{name:r});return a==null?void 0:a.logoUrl}return e.jsx("div",{className:"mb-2",children:t.groupedPrograms.map(([r,a])=>e.jsxs("div",{className:"border-top d-flex pt-3 pb-2",children:[e.jsx("div",{className:`${p.channelLogoContainer} flex-shrink-0 mb-3`,children:e.jsx("img",{src:s(r),alt:r,className:`${p.channelLogo} ms-4`})}),e.jsx("div",{className:"w-100",children:a.map(([i,n])=>e.jsx(be,{date:i,programs:n,tvPreviewUrls:t.tvPreviewUrls},i))})]},r))})}function be(t){const[s,r]=R.useState();function a(n){switch(n.programType){case S.Video:return{application:x.TV,action:T.Tv.PREVIEW,args:[n.regionCode,n.id]};case S.Audio:return{application:x.TV,action:T.Tv.RADIO_DOWNLOAD,args:[n.id]}}}function i(n){const j=t.tvPreviewUrls[n.regionCode],m=n.globalId.split("-").join("");return`${j}/thumbnail/${m}.jpg`}return e.jsx("div",{className:`${p.dateContainer} ${s?p.hover:""} py-2 px-3 rounded`,children:e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx("div",{className:`${p.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:e.jsx(se,{src:i(s||t.programs[0]),alt:L.format(t.date,"D MMM"),extraClasses:"w-100 rounded"})}),e.jsxs("p",{className:`${p.date} fw-semibold flex-shrink-0 mb-0`,children:[L.format(t.date,"D MMM"),":"]}),e.jsx("div",{className:`${p.programsContainer} d-flex flex-wrap`,children:t.programs.map(n=>e.jsx("div",{onMouseEnter:()=>r(n),onMouseLeave:()=>r(null),children:e.jsx(B,{appLink:a(n),className:"text-decoration-none",children:e.jsx(re,{program:n,showEndTime:!0})},n.id)},n.id))})]},t.date)})}const Le="tv.programs",Ae=Y.encloseNamespace(Le),Pe=/^[a-zA-Z]/;function Fe(t){const s=t.startsWith||"A",r=u(F.config()),a=u(f.region(t.region)),i=u(f.regions()),n=u(f.dateRange(t.region)),j=u(a.data&&f.channels(a.data.code)),m=u(a.data&&n.data&&f.programsByLetter(a.data.code,s,n.data.startDate,n.data.endDate)),{setRegion:N}=ae(),{showTvGuide:w}=V(),y=R.useMemo(()=>{var C;if(!((C=m.data)!=null&&C.length))return[];const c={};m.data.forEach(o=>{t.startsWith==="0"&&Pe.test(o.title)||(c[o.title]||(c[o.title]=[]),c[o.title].push(o))});let l=Object.entries(c);return l=l.sort(([o],[v])=>o<v?-1:1),l.map(([o,v])=>{const M=v.reduce((d,g)=>{const h=g.channelName;d[h]||(d[h]={});const D=ne(g.startTime,g.timeZone),b=L.format(D,"YYYY-MM-DD");return d[h][b]||(d[h][b]=[]),d[h][b].push(g),d},{}),k=Object.entries(M).map((([d,g])=>[d,Object.entries(g)]));return[o,k]})},[m.data]);[...A,"0"].includes(s)||K(W.BadRequest),te(a),Z([i,m]),G({title:Ae("title")});const E=a.hasCompleted&&i.hasCompleted&&n.hasCompleted&&m.hasCompleted&&r.hasCompleted;return e.jsxs(e.Fragment,{children:[e.jsx(Q,{region:a.data}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(X,{active:"programs",currentRegion:a.data,showTvGuide:w}),e.jsx(ee,{currentRegion:a.data,regions:i.data,appLink:{application:x.TV,action:T.Tv.PROGRAMS,params:{startsWith:s}},onClick:N})]}),e.jsx(J,{dateRange:n.data,region:a.data}),e.jsx(pe,{selected:s,getItemAppLink:c=>{var l;return{application:x.TV,action:T.Tv.PROGRAMS,args:[(l=a.data)==null?void 0:l.code],params:{startsWith:c}}}}),E?e.jsx(e.Fragment,{children:e.jsx(_,{children:y.map(([c,l],P)=>e.jsx(_.Header,{title:c,children:e.jsx(ve,{groupedPrograms:l,channels:j.data,tvPreviewUrls:r.data.tvPreviewUrls})},P))})}):e.jsx(z,{})]})}export{Fe as TvProgramsView};
2
+ //# sourceMappingURL=CoXPUxT-.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"By_OMtDJ.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\nconst LetterParamMap: {[key in typeof ALPHABET[number]]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): typeof ALPHABET[number] | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
1
+ {"version":3,"file":"CoXPUxT-.chunk.js","sources":["../../../../libs/shared/src/components/letters-bar/LettersBar.tsx","../../src/apps/tv/views/tv-programs/components/program-selector/ProgramSelector.tsx","../../src/apps/tv/views/tv-programs/TvProgramsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTab, PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport styles from './letters-bar.module.scss';\n\nexport const ALPHABET = [\n 'All',\n '#',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n] as const;\n\nconst LetterParamMap: {[key in typeof ALPHABET[number]]?: string} = {\n '#': '0'\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\nfunction getSelectedAlphabet(selected: string, showAll: boolean): typeof ALPHABET[number] | undefined {\n if (!selected)\n return;\n \n if (selected === '0')\n return '#';\n\n const alphabet = ALPHABET.find(letter => letter.toUpperCase() === selected.toUpperCase());\n\n if (alphabet === 'All' && !showAll)\n return;\n\n return alphabet;\n}\n\ninterface GenerateTabsOptions {\n selected: string;\n showAll: boolean;\n getItemAppLink: (letter: string) => Core.AppLink;\n}\n\nfunction generateTabs(options: GenerateTabsOptions): PillTab[] {\n return ALPHABET.map(letter => {\n if (letter === 'All' && !options.showAll)\n return;\n\n const appLink = options.getItemAppLink(LetterParamMap[letter] ?? letter);\n\n return {\n name: letter,\n appLink,\n active: options.selected === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n }).filter(Boolean);\n}\n\ninterface LettersBarProps {\n selected: string;\n getItemAppLink: (letter: string) => Core.AppLink;\n showAll?: boolean;\n enableSmallScreenSupport?: boolean;\n formatDisplayText?: (name: string) => string;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const localSelected = getSelectedAlphabet(props.selected, props.showAll);\n\n const tabs = generateTabs({\n selected: localSelected,\n showAll: props.showAll,\n getItemAppLink: props.getItemAppLink\n });\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\n enableSmallScreenSupport={props.enableSmallScreenSupport}\n formatDisplayText={props.formatDisplayText}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { ProgramType } from 'apps/tv/interfaces/enums/ProgramType';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\n\nimport styles from './program-selector.module.scss';\n\ninterface ProgramSelectorProps {\n groupedPrograms: [string, [string, TvProgram[]][]][];\n channels: TvChannel[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function ProgramSelector(props: ProgramSelectorProps) {\n function getChannelLogo(channel: string) {\n const matchingChannel = ArrayHelper.findWhere(props.channels, { name: channel });\n return matchingChannel?.logoUrl;\n }\n\n return (\n <div className='mb-2'>\n {props.groupedPrograms.map(([ channel, dates ]) => (\n <div className={`border-top d-flex pt-3 pb-2`} key={channel}>\n <div className={`${styles.channelLogoContainer} flex-shrink-0 mb-3`}>\n <img src={getChannelLogo(channel)} alt={channel} className={`${styles.channelLogo} ms-4`} />\n </div>\n\n <div className='w-100'>\n {dates.map(([ date, programs ]) => (\n <GroupedPrograms key={date} date={date} programs={programs} tvPreviewUrls={props.tvPreviewUrls} />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupedProgramsProps {\n date: string;\n programs: TvProgram[];\n tvPreviewUrls: { [region: string]: string };\n}\n\nexport function GroupedPrograms(props: GroupedProgramsProps) {\n const [ hoveredProgram, setHoveredProgram ] = React.useState<TvProgram>();\n\n function getProgramAppLink(program: TvProgram) {\n switch (program.programType) {\n case ProgramType.Video:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ program.regionCode, program.id ]\n };\n case ProgramType.Audio:\n return {\n application: AppChannels.TV,\n action: Actions.Tv.RADIO_DOWNLOAD,\n args: [program.id]\n };\n }\n }\n\n function getThumbnailUrl(program: TvProgram) {\n const previewUrl = props.tvPreviewUrls[program.regionCode];\n const globalId = program.globalId.split('-').join('');\n return `${previewUrl}/thumbnail/${globalId}.jpg`;\n }\n\n return (\n <div\n className={`${styles.dateContainer} ${hoveredProgram ? styles.hover : ''} py-2 px-3 rounded`}\n >\n <div key={props.date} className={`d-flex align-items-center`}>\n <div className={`${styles.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`}>\n <LazyImage\n src={getThumbnailUrl(hoveredProgram || props.programs[0])}\n alt={DateHelper.format(props.date, 'D MMM')}\n extraClasses='w-100 rounded'\n />\n </div>\n <p className={`${styles.date} fw-semibold flex-shrink-0 mb-0`}>{DateHelper.format(props.date, 'D MMM')}:</p>\n <div className={`${styles.programsContainer} d-flex flex-wrap`}>\n {props.programs.map((program: TvProgram) => (\n <div\n key={program.id}\n onMouseEnter={() => setHoveredProgram(program)}\n onMouseLeave={() => setHoveredProgram(null)}\n >\n <AppLink appLink={getProgramAppLink(program)} key={program.id} className='text-decoration-none'>\n <TvProgramTimeBadge program={program} showEndTime />\n </AppLink>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ALPHABET, LettersBar } from 'libs/shared/components/letters-bar/LettersBar';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { AccordionList } from 'shared/components/accordion-list/AccordionList';\nimport { PartialAccordionList } from 'shared/components/accordion-list/partial-loading/PartialAccordionList';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\nimport { ProgramSelector } from 'apps/tv/views/tv-programs/components/program-selector/ProgramSelector';\n\nconst namespace = 'tv.programs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst FIRST_LETTER_REGEX = /^[a-zA-Z]/;\n\ninterface TvProgramsViewProps {\n region: string;\n startsWith: string;\n}\n\nexport function TvProgramsView(props: TvProgramsViewProps): JSX.Element {\n const startsWith = props.startsWith || 'A';\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const programs = Flight.useBasicFetch<TvProgram[]>(\n region.data &&\n dateRange.data &&\n TvRequests.programsByLetter(\n region.data.code,\n startsWith,\n dateRange.data.startDate,\n dateRange.data.endDate\n )\n );\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n const grouped = React.useMemo(() => {\n if (!programs.data?.length)\n return [] as any[];\n\n const groups: HashObject<TvProgram[]> = {};\n\n programs.data.forEach(program => {\n if (props.startsWith === '0' && FIRST_LETTER_REGEX.test(program.title))\n return;\n\n if (!groups[program.title])\n groups[program.title] = [];\n\n groups[program.title].push(program);\n });\n\n let sorted = Object.entries(groups);\n\n sorted = sorted.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1));\n\n const groupedPrograms = sorted.map(([ title, data ]) => {\n const groupedProgram = data.reduce((acc: { [channel: string]: { [date: string]: TvProgram[]} }, program) => {\n const channelKey = program.channelName;\n if (!acc[channelKey]) {\n acc[channelKey] = {};\n }\n \n const startTime = toLocalTime(program.startTime, program.timeZone);\n const dateKey = DateHelper.format(startTime, 'YYYY-MM-DD');\n if (!acc[channelKey][dateKey]) {\n acc[channelKey][dateKey] = [];\n }\n\n acc[channelKey][dateKey].push(program);\n return acc;\n }, {});\n\n const groupedProgramEntries =\n Object\n .entries(groupedProgram)\n .map((([ channel, programs ]) => [ channel, Object.entries(programs) ]));\n \n return [ title, groupedProgramEntries ];\n });\n\n return groupedPrograms as [string, [string, TvProgram[]]];\n }, [programs.data]);\n\n const matchesLetters = [ ...ALPHABET, '0' ].includes(startsWith);\n if (!matchesLetters) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, programs ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n programs.hasCompleted &&\n config.hasCompleted\n );\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='programs'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n params: { startsWith }\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <LettersBar\n selected={startsWith}\n getItemAppLink={letter => ({\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region.data?.code],\n params: { startsWith: letter }\n })}\n />\n\n {dataLoaded ? (\n <>\n <AccordionList>\n {grouped.map(([ title, programs ], index) => (\n <AccordionList.Header key={index} title={title}>\n <ProgramSelector\n groupedPrograms={programs}\n channels={channels.data}\n tvPreviewUrls={config.data.tvPreviewUrls}\n />\n </AccordionList.Header>\n ))}\n </AccordionList>\n </>\n ) : (\n <PartialAccordionList />\n )}\n </>\n );\n}"],"names":["ALPHABET","LetterParamMap","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","getSelectedAlphabet","selected","showAll","alphabet","letter","generateTabs","options","appLink","Core.AppLinkHelper","LettersBar","props","localSelected","tabs","jsx","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","AppChannels","Actions","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","startsWith","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","regions","dateRange","channels","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","grouped","_a","groups","sorted","keyA","keyB","title","data","groupedProgram","acc","channelKey","startTime","toLocalTime","dateKey","groupedProgramEntries","handleHttpError","HttpStatus","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","Fragment","TvSearchBar","TvTabs","TvRegionSelect","TvInfoAlert","AccordionList","index","PartialAccordionList"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{U as p,a2 as m,R as v,j as o,P as y,aC as U,a4 as C}from"./app-nj3yOqer.js";import{u as h}from"./fftzBNKK.chunk.js";import{C as P,P as w,a as R}from"./C5Um1mJN.chunk.js";import{T as b}from"./CISd2iel.chunk.js";import{u as T}from"./SrHfrZ_D.chunk.js";import{u as j}from"./BeMlNTkA.chunk.js";import"./BuccZFco.chunk.js";import"./D_y7C4wF.chunk.js";import"./HiwCz-PT.chunk.js";import"./D2UAzuy_.chunk.js";import"./BlDVEZsX.chunk.js";import"./Dr28tW01.chunk.js";import"./pkzD5BEm.chunk.js";import"./QIbgTj4j.chunk.js";import"./B_bh4_2-.chunk.js";import"./CGhbtKll.chunk.js";import"./Cau1TcaF.chunk.js";import"./DhU1_zaa.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./DTVmftQW.chunk.js";import"./CW105qba.chunk.js";import"./DWrwMjZY.chunk.js";import"./LUhWZ6aW.chunk.js";import"./wX0oeObx.chunk.js";import"./CwLEz-p-.chunk.js";import"./E3OALlLu.chunk.js";import"./DxE8D48c.chunk.js";import"./DX9fdMAU.chunk.js";import"./Bysn-kjB.chunk.js";import"./B668bf5B.chunk.js";import"./CT_rcqQG.chunk.js";import"./C4f1zB5D.chunk.js";import"./YlT1G1sJ.chunk.js";import"./Cou4Uk_z.chunk.js";import"./DsYAvL3r.chunk.js";import"./BjHsODRK.chunk.js";import"./ChL5ufI4.chunk.js";function x(r){const{currentUser:t,region:i,config:e,program:a}=r,s=e.tvPreviewUrls[i.code],l=a.globalId.replace(/-/g,""),c=p.safeUrlConcat(s,`/thumbnail/${l}.jpg`),u=p.safeUrlConcat(s,`/144p/${l.toUpperCase()}_144p.mp4`),n=p.safeUrlConcat(s,`/subtitle/${l.toUpperCase()}.srt`),d=p.urlBuilder(p.safeUrlConcat(e.playerApiUrl,"/api/srt-to-vtt"),{url:n});return{videoId:null,episodeNumber:0,seriesName:null,mediaId:null,mediaType:null,ratingCode:null,region:t.instanceRegion,seasonNumber:null,viewerId:t.id,viewerCustomerId:t.customerId,files:{fileToken:"",progressive:[{mimeType:"video/mp4",profile:"144",url:u}]},chapters:{list:[]},instanceRegion:t.instanceRegion,localCacheAddresses:[],posterUrl:c,resources:{list:[]},settings:{showSubtitles:!1,playbackProfile:"144",playbackProfileLocalCache:"144",playbackSubtitleSizeDefault:"medium"},subtitles:{list:[{url:d,isDefault:!1,language:"en-AU",mimeType:"text/vtt",label:"English"}]},title:a.title}}function ue(r){var g;const t=m(b.region(r.region)),i=m(U.config()),e=m(b.program(r.id)),a=m(C.currentUser()),[s,l]=v.useState(),c=T("preview",t.data,s);j(t,!0),h(e.statusCode);function u(f){l(f),r.currentTime&&f.currentTime(r.currentTime)}const n=t.hasCompleted&&e.hasCompleted&&i.hasCompleted&&a.hasCompleted,d=n&&x({currentUser:a.data,region:t.data,config:i.data,program:e.data});return o.jsx(y,{title:(g=e.data)==null?void 0:g.title,closePopup:r.closePopup,showLoadingSpinner:!n,size:"lg",bodyClassName:"p-0 rounded-3 position-relative",hideTitle:!0,children:n&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"overflow-hidden rounded-top-lg",children:o.jsx(P,{viewKey:null,offlinePlaybackObject:d,playerApi:new URL(i.data.playerApiUrl),autoplay:!0,hotkeyElQuerySelector:"body",onReady:u,allowFullscreen:!1})}),o.jsx(w,{program:e.data,title:e.data.title,description:e.data.description,videoActions:c(e.data)}),o.jsx(R,{closePopup:r.closePopup})]})})}export{ue as TvPreviewView};
2
- //# sourceMappingURL=BUuCwkpu.chunk.js.map
1
+ import{U as p,a2 as m,R as v,j as o,P as y,aC as U,a4 as C}from"./app-CAg-7ccU.js";import{u as h}from"./aPq0PUkl.chunk.js";import{C as P,P as w,a as R}from"./DKEmRPe5.chunk.js";import{T as b}from"./C3oUPcIr.chunk.js";import{u as T}from"./DiVvth5j.chunk.js";import{u as j}from"./BdpMFXvX.chunk.js";import"./CT4M6LAt.chunk.js";import"./Mm1GvAIj.chunk.js";import"./c_eEfqOG.chunk.js";import"./DCZt5zdo.chunk.js";import"./BlDVEZsX.chunk.js";import"./BJUO8a2A.chunk.js";import"./pkzD5BEm.chunk.js";import"./D3ImQw2c.chunk.js";import"./COmkaZTY.chunk.js";import"./BtTmb52z.chunk.js";import"./thJth_Km.chunk.js";import"./D6PZ2zrc.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./CSzv69qT.chunk.js";import"./2-mHspOU.chunk.js";import"./GXToHPHe.chunk.js";import"./SAoHi7e5.chunk.js";import"./DoOK7kUv.chunk.js";import"./BTcOTDv_.chunk.js";import"./DiFNkYHy.chunk.js";import"./Br-w-uIM.chunk.js";import"./Cy4rHX30.chunk.js";import"./BrNzIV_r.chunk.js";import"./B668bf5B.chunk.js";import"./B3z0crrc.chunk.js";import"./BxNS_W6A.chunk.js";import"./DwdAMsTn.chunk.js";import"./C25DVNqV.chunk.js";import"./DdKPWSa-.chunk.js";import"./BgQsAU_t.chunk.js";import"./D2a2dcGU.chunk.js";function x(r){const{currentUser:t,region:i,config:e,program:a}=r,s=e.tvPreviewUrls[i.code],l=a.globalId.replace(/-/g,""),c=p.safeUrlConcat(s,`/thumbnail/${l}.jpg`),u=p.safeUrlConcat(s,`/144p/${l.toUpperCase()}_144p.mp4`),n=p.safeUrlConcat(s,`/subtitle/${l.toUpperCase()}.srt`),d=p.urlBuilder(p.safeUrlConcat(e.playerApiUrl,"/api/srt-to-vtt"),{url:n});return{videoId:null,episodeNumber:0,seriesName:null,mediaId:null,mediaType:null,ratingCode:null,region:t.instanceRegion,seasonNumber:null,viewerId:t.id,viewerCustomerId:t.customerId,files:{fileToken:"",progressive:[{mimeType:"video/mp4",profile:"144",url:u}]},chapters:{list:[]},instanceRegion:t.instanceRegion,localCacheAddresses:[],posterUrl:c,resources:{list:[]},settings:{showSubtitles:!1,playbackProfile:"144",playbackProfileLocalCache:"144",playbackSubtitleSizeDefault:"medium"},subtitles:{list:[{url:d,isDefault:!1,language:"en-AU",mimeType:"text/vtt",label:"English"}]},title:a.title}}function ue(r){var g;const t=m(b.region(r.region)),i=m(U.config()),e=m(b.program(r.id)),a=m(C.currentUser()),[s,l]=v.useState(),c=T("preview",t.data,s);j(t,!0),h(e.statusCode);function u(f){l(f),r.currentTime&&f.currentTime(r.currentTime)}const n=t.hasCompleted&&e.hasCompleted&&i.hasCompleted&&a.hasCompleted,d=n&&x({currentUser:a.data,region:t.data,config:i.data,program:e.data});return o.jsx(y,{title:(g=e.data)==null?void 0:g.title,closePopup:r.closePopup,showLoadingSpinner:!n,size:"lg",bodyClassName:"p-0 rounded-3 position-relative",hideTitle:!0,children:n&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"overflow-hidden rounded-top-lg",children:o.jsx(P,{viewKey:null,offlinePlaybackObject:d,playerApi:new URL(i.data.playerApiUrl),autoplay:!0,hotkeyElQuerySelector:"body",onReady:u,allowFullscreen:!1})}),o.jsx(w,{program:e.data,title:e.data.title,description:e.data.description,videoActions:c(e.data)}),o.jsx(R,{closePopup:r.closePopup})]})})}export{ue as TvPreviewView};
2
+ //# sourceMappingURL=Cu98NFjS.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BUuCwkpu.chunk.js","sources":["../../src/apps/tv/views/tv-preview/utils/getTvPlaybackObject.ts","../../src/apps/tv/views/tv-preview/TvPreviewView.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { RegionName } from 'libs/analytics/enums/RegionName';\n\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PlaybackObject } from 'projects/player/interfaces/models/PlaybackObject';\n\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\ninterface GetTvPlaybackObjectOptions {\n currentUser: CurrentUser;\n region: TvRegion;\n config: ExchangeConfig;\n program: TvProgram;\n}\n\nexport function getTvPlaybackObject(options: GetTvPlaybackObjectOptions): PlaybackObject {\n const { currentUser, region, config, program } = options;\n\n const previewUrl = config.tvPreviewUrls[region.code];\n\n const globalId = program.globalId.replace(/-/g, '');\n\n const thumbnailUrl = UrlHelper.safeUrlConcat(\n previewUrl,\n `/thumbnail/${globalId}.jpg`\n );\n const fileUrl = UrlHelper.safeUrlConcat(\n previewUrl,\n `/144p/${globalId.toUpperCase()}_144p.mp4`\n );\n const subtitleLocation = UrlHelper.safeUrlConcat(\n previewUrl,\n `/subtitle/${globalId.toUpperCase()}.srt`\n );\n const subtitleUrl = UrlHelper.urlBuilder(\n UrlHelper.safeUrlConcat(config.playerApiUrl, `/api/srt-to-vtt`),\n { url: subtitleLocation }\n );\n\n return ({\n videoId: null,\n episodeNumber: 0,\n seriesName: null,\n mediaId: null,\n mediaType: null,\n ratingCode: null,\n region: currentUser.instanceRegion,\n seasonNumber: null,\n viewerId: currentUser.id,\n viewerCustomerId: currentUser.customerId,\n files: {\n fileToken: '',\n progressive: [{\n mimeType: 'video/mp4',\n profile: '144',\n url: fileUrl\n }]\n },\n chapters: { list: []},\n instanceRegion: currentUser.instanceRegion as unknown as RegionName,\n localCacheAddresses: [],\n posterUrl: thumbnailUrl,\n resources: { list: []},\n settings: {\n showSubtitles: false,\n playbackProfile: '144',\n playbackProfileLocalCache: '144',\n playbackSubtitleSizeDefault: 'medium'\n },\n subtitles: {\n list: [{\n url: subtitleUrl,\n isDefault: false,\n language: 'en-AU',\n mimeType: 'text/vtt',\n label: 'English'\n }]\n },\n title: program.title\n });\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ClickViewPlayer } from 'projects/player/react/Player';\n\nimport { PlayerOverlayButtons } from 'shared/components/player-overlay-buttons/PlayerOverlayButtons';\nimport { PreviewVideoDetails } from 'shared/components/preview-video-details/PreviewVideoDetails';\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nimport { getTvPlaybackObject } from './utils/getTvPlaybackObject';\n\ninterface TvPreviewViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvPreviewView(props: TvPreviewViewProps): JSX.Element {\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const config = Flight.useBasicFetch<ExchangeConfig>(ConfigRequests.config());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ playerRef, setPlayerRef ] = React.useState<PlayerReference>();\n\n const getVideoActions = useGetTvActions('preview', region.data, playerRef);\n\n useHandleRegionError(region, true);\n useHandleDialogError(program.statusCode);\n\n // TODO: Solve analytics collection\n function onReady(player: PlayerReference): void {\n setPlayerRef(player);\n\n if (props.currentTime)\n player.currentTime(props.currentTime);\n // setupAnalytics(player);\n }\n\n const dataLoaded = (\n region.hasCompleted &&\n program.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const playbackObject = dataLoaded && getTvPlaybackObject({\n currentUser: currentUser.data,\n region: region.data,\n config: config.data,\n program: program.data\n });\n\n return (\n <Popup\n title={program.data?.title}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n size='lg'\n bodyClassName='p-0 rounded-3 position-relative'\n hideTitle\n >\n {dataLoaded &&\n <>\n <div className='overflow-hidden rounded-top-lg'>\n <ClickViewPlayer\n viewKey={null}\n offlinePlaybackObject={playbackObject}\n playerApi={new URL(config.data.playerApiUrl)}\n autoplay\n hotkeyElQuerySelector='body'\n onReady={onReady}\n allowFullscreen={false}\n />\n </div>\n <PreviewVideoDetails\n program={program.data}\n title={program.data.title}\n description={program.data.description}\n videoActions={getVideoActions(program.data)}\n />\n <PlayerOverlayButtons closePopup={props.closePopup} />\n </>\n }\n </Popup>\n );\n}"],"names":["getTvPlaybackObject","options","currentUser","region","config","program","previewUrl","globalId","thumbnailUrl","UrlHelper","fileUrl","subtitleLocation","subtitleUrl","TvPreviewView","props","Flight.useBasicFetch","TvRequests","ConfigRequests","UserRequests","playerRef","setPlayerRef","React","getVideoActions","useGetTvActions","useHandleRegionError","useHandleDialogError","onReady","player","dataLoaded","playbackObject","jsx","Popup","_a","jsxs","Fragment","ClickViewPlayer","PreviewVideoDetails","PlayerOverlayButtons"],"mappings":"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"}
1
+ {"version":3,"file":"Cu98NFjS.chunk.js","sources":["../../src/apps/tv/views/tv-preview/utils/getTvPlaybackObject.ts","../../src/apps/tv/views/tv-preview/TvPreviewView.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { RegionName } from 'libs/analytics/enums/RegionName';\n\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PlaybackObject } from 'projects/player/interfaces/models/PlaybackObject';\n\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\ninterface GetTvPlaybackObjectOptions {\n currentUser: CurrentUser;\n region: TvRegion;\n config: ExchangeConfig;\n program: TvProgram;\n}\n\nexport function getTvPlaybackObject(options: GetTvPlaybackObjectOptions): PlaybackObject {\n const { currentUser, region, config, program } = options;\n\n const previewUrl = config.tvPreviewUrls[region.code];\n\n const globalId = program.globalId.replace(/-/g, '');\n\n const thumbnailUrl = UrlHelper.safeUrlConcat(\n previewUrl,\n `/thumbnail/${globalId}.jpg`\n );\n const fileUrl = UrlHelper.safeUrlConcat(\n previewUrl,\n `/144p/${globalId.toUpperCase()}_144p.mp4`\n );\n const subtitleLocation = UrlHelper.safeUrlConcat(\n previewUrl,\n `/subtitle/${globalId.toUpperCase()}.srt`\n );\n const subtitleUrl = UrlHelper.urlBuilder(\n UrlHelper.safeUrlConcat(config.playerApiUrl, `/api/srt-to-vtt`),\n { url: subtitleLocation }\n );\n\n return ({\n videoId: null,\n episodeNumber: 0,\n seriesName: null,\n mediaId: null,\n mediaType: null,\n ratingCode: null,\n region: currentUser.instanceRegion,\n seasonNumber: null,\n viewerId: currentUser.id,\n viewerCustomerId: currentUser.customerId,\n files: {\n fileToken: '',\n progressive: [{\n mimeType: 'video/mp4',\n profile: '144',\n url: fileUrl\n }]\n },\n chapters: { list: []},\n instanceRegion: currentUser.instanceRegion as unknown as RegionName,\n localCacheAddresses: [],\n posterUrl: thumbnailUrl,\n resources: { list: []},\n settings: {\n showSubtitles: false,\n playbackProfile: '144',\n playbackProfileLocalCache: '144',\n playbackSubtitleSizeDefault: 'medium'\n },\n subtitles: {\n list: [{\n url: subtitleUrl,\n isDefault: false,\n language: 'en-AU',\n mimeType: 'text/vtt',\n label: 'English'\n }]\n },\n title: program.title\n });\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ClickViewPlayer } from 'projects/player/react/Player';\n\nimport { PlayerOverlayButtons } from 'shared/components/player-overlay-buttons/PlayerOverlayButtons';\nimport { PreviewVideoDetails } from 'shared/components/preview-video-details/PreviewVideoDetails';\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nimport { getTvPlaybackObject } from './utils/getTvPlaybackObject';\n\ninterface TvPreviewViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvPreviewView(props: TvPreviewViewProps): JSX.Element {\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const config = Flight.useBasicFetch<ExchangeConfig>(ConfigRequests.config());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ playerRef, setPlayerRef ] = React.useState<PlayerReference>();\n\n const getVideoActions = useGetTvActions('preview', region.data, playerRef);\n\n useHandleRegionError(region, true);\n useHandleDialogError(program.statusCode);\n\n // TODO: Solve analytics collection\n function onReady(player: PlayerReference): void {\n setPlayerRef(player);\n\n if (props.currentTime)\n player.currentTime(props.currentTime);\n // setupAnalytics(player);\n }\n\n const dataLoaded = (\n region.hasCompleted &&\n program.hasCompleted &&\n config.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const playbackObject = dataLoaded && getTvPlaybackObject({\n currentUser: currentUser.data,\n region: region.data,\n config: config.data,\n program: program.data\n });\n\n return (\n <Popup\n title={program.data?.title}\n closePopup={props.closePopup}\n showLoadingSpinner={!dataLoaded}\n size='lg'\n bodyClassName='p-0 rounded-3 position-relative'\n hideTitle\n >\n {dataLoaded &&\n <>\n <div className='overflow-hidden rounded-top-lg'>\n <ClickViewPlayer\n viewKey={null}\n offlinePlaybackObject={playbackObject}\n playerApi={new URL(config.data.playerApiUrl)}\n autoplay\n hotkeyElQuerySelector='body'\n onReady={onReady}\n allowFullscreen={false}\n />\n </div>\n <PreviewVideoDetails\n program={program.data}\n title={program.data.title}\n description={program.data.description}\n videoActions={getVideoActions(program.data)}\n />\n <PlayerOverlayButtons closePopup={props.closePopup} />\n </>\n }\n </Popup>\n );\n}"],"names":["getTvPlaybackObject","options","currentUser","region","config","program","previewUrl","globalId","thumbnailUrl","UrlHelper","fileUrl","subtitleLocation","subtitleUrl","TvPreviewView","props","Flight.useBasicFetch","TvRequests","ConfigRequests","UserRequests","playerRef","setPlayerRef","React","getVideoActions","useGetTvActions","useHandleRegionError","useHandleDialogError","onReady","player","dataLoaded","playbackObject","jsx","Popup","_a","jsxs","Fragment","ClickViewPlayer","PreviewVideoDetails","PlayerOverlayButtons"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e,au as x,G as d,J as j,F as g,ap as b,aa as N,af as f,Q as v,r as h,bI as y,bz as k}from"./app-nj3yOqer.js";function T(n){return e.jsx("svg",{...n,children:e.jsx("path",{d:"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3",fill:"currentColor"})})}const C="_dropdownToggle_1jkd1_1",S={dropdownToggle:C};function p(){return e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})})]})}function r(n){let o="dropdown-item";return n&&(o+=` ${n}`),o}function u(n){const o=g.isFunction(n.action.label)?n.action.label():e.jsx(e.Fragment,{children:n.action.label});if(n.action.appLink)return e.jsxs(b,{appLink:n.action.appLink,onClick:n.action.onClick,className:r(n.action.className),analyticsData:n.action.analyticsData,analyticsOptions:n.action.analyticsOptions,openInNewTab:n.action.openInNewTab,disabled:n.action.disabled,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]});function l(i){i.preventDefault(),n.action.analyticsData&&n.action.analyticsOptions&&N.logUserAction(n.action.analyticsData,n.action.analyticsOptions),g.isFunction(n.action.onClick)&&n.action.onClick(),n.action.href&&f.PageLoad(n.action.href,n.action.openInNewTab)}return n.action.href?e.jsxs("a",{className:r(n.action.className),onClick:l,href:n.action.href,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]}):e.jsxs("span",{className:`cursor-pointer ${r(n.action.className)}`,onClick:l,role:"button",tabIndex:0,onKeyDown:i=>i.key==="Enter"&&l(i),children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2"}),o]})}w.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:v.Small};function w(n){if(!n.actions||!n.actions.length)return e.jsx(e.Fragment,{});const o=n.actions.some(t=>t.lazyPlaceholder);let l="dropdown";n.className&&(l+=` ${n.className}`);const i=`actions-dropdown-${x.getRandomInt()}`;let s=`dropdown-toggle px-0 ${S.dropdownToggle}`;n.dropdownToggleClassName&&(s+=` ${n.dropdownToggleClassName}`);let a;return e.jsxs("div",{className:l,children:[e.jsx("button",{className:s,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:o?n.fetchMore:null,children:e.jsx(d,{svg:T,size:n.dropdownToggleSvgSize})}),e.jsx("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i,children:o?e.jsx(p,{}):n.actions.map((t,c)=>{const m=a!==void 0&&a!==t.group;return a=t.group,t.tooltip?e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(j,{title:t.tooltip,spanHack:!0,children:e.jsx(u,{action:t})})]},c):e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(u,{action:t})]},c)})})]})}function z(n){const o=h.useMemo(()=>n.actions.sort((a,t)=>a.order-t.order),[n.actions]),l=[],i=[];o.forEach(a=>{a.button?l.push(a):i.push(a)});let s="d-flex";return n.className&&(s+=` ${n.className}`),!l.length&&!i.length?e.jsx(e.Fragment,{}):e.jsxs("div",{className:s,children:[l.length?l.map((a,t)=>e.jsx(h.Fragment,{children:(()=>{if(a.label){const c=g.isFunction(a.label)?a.label():e.jsx(e.Fragment,{children:a.label});return e.jsx(y,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,svgSize:n.dropdownToggleSvgSize,className:a.className,tooltip:a.tooltip,showSpinner:a.showSpinner,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,children:c})}return e.jsx(k,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,className:a.className,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,showBorder:a.showBorder,customSize:n.customSize,ariaLabel:a.tooltip,tooltip:a.tooltip})})()},t)):e.jsx(e.Fragment,{}),n.sortComponent&&n.sortComponent,i.length?e.jsx(w,{actions:i,dropdownToggleClassName:n.actionsDropdownClassName,dropdownToggleSvgSize:n.dropdownToggleSvgSize,fetchMore:n.fetchMore}):e.jsx(e.Fragment,{})]})}export{z as A};
2
- //# sourceMappingURL=DX9fdMAU.chunk.js.map
1
+ import{j as e,au as x,G as d,J as j,F as g,ap as b,aa as N,af as f,Q as v,r as h,bI as y,bz as k}from"./app-CAg-7ccU.js";function T(n){return e.jsx("svg",{...n,children:e.jsx("path",{d:"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3",fill:"currentColor"})})}const C="_dropdownToggle_1jkd1_1",S={dropdownToggle:C};function p(){return e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})}),e.jsx("div",{style:{padding:"0.53125rem 1rem"},children:e.jsx("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})})]})}function r(n){let o="dropdown-item";return n&&(o+=` ${n}`),o}function u(n){const o=g.isFunction(n.action.label)?n.action.label():e.jsx(e.Fragment,{children:n.action.label});if(n.action.appLink)return e.jsxs(b,{appLink:n.action.appLink,onClick:n.action.onClick,className:r(n.action.className),analyticsData:n.action.analyticsData,analyticsOptions:n.action.analyticsOptions,openInNewTab:n.action.openInNewTab,disabled:n.action.disabled,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]});function l(i){i.preventDefault(),n.action.analyticsData&&n.action.analyticsOptions&&N.logUserAction(n.action.analyticsData,n.action.analyticsOptions),g.isFunction(n.action.onClick)&&n.action.onClick(),n.action.href&&f.PageLoad(n.action.href,n.action.openInNewTab)}return n.action.href?e.jsxs("a",{className:r(n.action.className),onClick:l,href:n.action.href,children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2 align-middle"}),e.jsx("span",{className:"align-middle",children:o})]}):e.jsxs("span",{className:`cursor-pointer ${r(n.action.className)}`,onClick:l,role:"button",tabIndex:0,onKeyDown:i=>i.key==="Enter"&&l(i),children:[n.action.svg&&e.jsx(d,{svg:n.action.svg,className:"d-inline-block svg-container me-2"}),o]})}w.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:v.Small};function w(n){if(!n.actions||!n.actions.length)return e.jsx(e.Fragment,{});const o=n.actions.some(t=>t.lazyPlaceholder);let l="dropdown";n.className&&(l+=` ${n.className}`);const i=`actions-dropdown-${x.getRandomInt()}`;let s=`dropdown-toggle px-0 ${S.dropdownToggle}`;n.dropdownToggleClassName&&(s+=` ${n.dropdownToggleClassName}`);let a;return e.jsxs("div",{className:l,children:[e.jsx("button",{className:s,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:o?n.fetchMore:null,children:e.jsx(d,{svg:T,size:n.dropdownToggleSvgSize})}),e.jsx("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i,children:o?e.jsx(p,{}):n.actions.map((t,c)=>{const m=a!==void 0&&a!==t.group;return a=t.group,t.tooltip?e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(j,{title:t.tooltip,spanHack:!0,children:e.jsx(u,{action:t})})]},c):e.jsxs("li",{children:[m&&e.jsx("hr",{className:"dropdown-divider",role:"separator"}),e.jsx(u,{action:t})]},c)})})]})}function z(n){const o=h.useMemo(()=>n.actions.sort((a,t)=>a.order-t.order),[n.actions]),l=[],i=[];o.forEach(a=>{a.button?l.push(a):i.push(a)});let s="d-flex";return n.className&&(s+=` ${n.className}`),!l.length&&!i.length?e.jsx(e.Fragment,{}):e.jsxs("div",{className:s,children:[l.length?l.map((a,t)=>e.jsx(h.Fragment,{children:(()=>{if(a.label){const c=g.isFunction(a.label)?a.label():e.jsx(e.Fragment,{children:a.label});return e.jsx(y,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,svgSize:n.dropdownToggleSvgSize,className:a.className,tooltip:a.tooltip,showSpinner:a.showSpinner,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,children:c})}return e.jsx(k,{appLink:a.appLink,href:a.href,onClick:a.onClick,svg:a.svg,className:a.className,analyticsData:a.analyticsData,analyticsOptions:a.analyticsOptions,openInNewTab:a.openInNewTab,disabled:a.disabled,showBorder:a.showBorder,customSize:n.customSize,ariaLabel:a.tooltip,tooltip:a.tooltip})})()},t)):e.jsx(e.Fragment,{}),n.sortComponent&&n.sortComponent,i.length?e.jsx(w,{actions:i,dropdownToggleClassName:n.actionsDropdownClassName,dropdownToggleSvgSize:n.dropdownToggleSvgSize,fetchMore:n.fetchMore}):e.jsx(e.Fragment,{})]})}export{z as A};
2
+ //# sourceMappingURL=Cy4rHX30.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DX9fdMAU.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/MoreSvg.tsx","../../../../libs/shared/src/components/actions/ActionsDropdown.tsx","../../../../libs/shared/src/components/actions/Actions.tsx"],"sourcesContent":["import React from 'react';\n\nexport function MoreSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.module.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label()\n : <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2' />}\n {label}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svg={MoreSvg} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svg?: SvgIcon;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label: JSX.Element = FunctionHelper.isFunction(a.label)\n ? a.label()\n : <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label}\n </ActionButton>\n );\n }\n\n return (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n tooltip={a.tooltip}\n />\n );\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}"],"names":["MoreSvg","props","jsx","LazyDropdownItems","jsxs","Fragment","getDropdownItemClassName","actionClassName","className","ActionsDropdownItem","label","FunctionHelper","AppLink","SvgContainer","onClick","e","AnalyticsHelper","Core.LocationUtils","ActionsDropdown","SvgContainerSize","isLazy","a","dropdownToggleId","RandomHelper","dropdownToggleClassName","styles","currentGroup","idx","showDivider","Tooltip","Actions","orderedActions","React.useMemo","b","buttonActions","moreActions","React.Fragment","ActionButton","IconButton"],"mappings":"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"}
1
+ {"version":3,"file":"Cy4rHX30.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/MoreSvg.tsx","../../../../libs/shared/src/components/actions/ActionsDropdown.tsx","../../../../libs/shared/src/components/actions/Actions.tsx"],"sourcesContent":["import React from 'react';\n\nexport function MoreSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MoreSvg } from 'libs/shared/images/svg/actions/MoreSvg';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.module.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label()\n : <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svg && <SvgContainer svg={props.action.svg} className='d-inline-block svg-container me-2' />}\n {label}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svg={MoreSvg} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { SvgIcon } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svg?: SvgIcon;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label: JSX.Element = FunctionHelper.isFunction(a.label)\n ? a.label()\n : <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label}\n </ActionButton>\n );\n }\n\n return (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svg={a.svg}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n tooltip={a.tooltip}\n />\n );\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}"],"names":["MoreSvg","props","jsx","LazyDropdownItems","jsxs","Fragment","getDropdownItemClassName","actionClassName","className","ActionsDropdownItem","label","FunctionHelper","AppLink","SvgContainer","onClick","e","AnalyticsHelper","Core.LocationUtils","ActionsDropdown","SvgContainerSize","isLazy","a","dropdownToggleId","RandomHelper","dropdownToggleClassName","styles","currentGroup","idx","showDivider","Tooltip","Actions","orderedActions","React.useMemo","b","buttonActions","moreActions","React.Fragment","ActionButton","IconButton"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a1 as b,a2 as n,R as i,aa as w,ad as k,ac as C,aH as E,ae as L,L as T,j as e,P as R,al as F,B as p,x as m,A as H,aC as I}from"./app-nj3yOqer.js";import{S as U}from"./IxBH4lFI.chunk.js";import{V as q}from"./QIbgTj4j.chunk.js";import{u as B}from"./wX0oeObx.chunk.js";import{E as u}from"./DI__y4wi.chunk.js";import{u as G}from"./BYA29WEV.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./DleGvW_4.chunk.js";const c="exchange.add",o=T.encloseNamespace(c);function X(s){var l;const x=B(),g=b(),f=n(I.config()),h=n(u.exchange()),a=n(q.video(s.id)),[r,j]=i.useState(!1),[A,P]=i.useState(!1),[V,v]=i.useState(null),{previewContext:t,clearPreviewContext:y}=G(s.id,!1);i.useEffect(()=>{!a.data||A||N()},[(l=a.data)==null?void 0:l.id]);async function N(){P(!0);try{const S=await g(u.addVideo(h.data.id,a.data.id));j(!0),v(S.id),w.logUserAction({id:a.data.id,name:a.data.name},{actionType:L.Submit,descriptor:E.AddToWorkspace,location:C.Popup,entity:k.Video})}catch{x.error(o("error")),s.closePopup()}}function d(){s.closePopup(),t!=null&&t.appLink&&(U.preventScrollTop(),H.trigger(t.appLink),y())}return e.jsx(R,{title:o("title"),closePopup:d,showLoadingSpinner:!r,children:r&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-auto w-75 mt-1 mb-2",children:e.jsx("img",{src:F.General.CONFETTI,className:"img-fluid",draggable:!1})}),e.jsx("div",{className:"text-center pb-3",children:e.jsx("h4",{className:"mb-2",children:e.jsx(p,{namespace:c,phrase:"added"})})}),e.jsxs(m,{children:[e.jsx(m.Cancel,{text:o("close"),onClick:d,variant:"link"}),e.jsx("a",{href:`${f.data.liteUrl}/videos/${V}`,className:"btn btn-dark",children:e.jsx("span",{className:"align-text-bottom me-1",children:e.jsx(p,{namespace:c,phrase:"open"})})})]})]})})}export{X as ExchangeAddView};
2
- //# sourceMappingURL=fcH9o5X3.chunk.js.map
1
+ import{a1 as b,a2 as n,R as i,aa as w,ad as k,ac as C,aH as E,ae as L,L as T,j as e,P as R,al as F,B as p,x as m,A as H,aC as I}from"./app-CAg-7ccU.js";import{S as U}from"./SErl8iiO.chunk.js";import{V as q}from"./D3ImQw2c.chunk.js";import{u as B}from"./DoOK7kUv.chunk.js";import{E as u}from"./PUKDcvT2.chunk.js";import{u as G}from"./6JMI0Hhs.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./Bc6W0MI6.chunk.js";const c="exchange.add",o=T.encloseNamespace(c);function X(s){var l;const x=B(),g=b(),f=n(I.config()),h=n(u.exchange()),a=n(q.video(s.id)),[r,j]=i.useState(!1),[A,P]=i.useState(!1),[V,v]=i.useState(null),{previewContext:t,clearPreviewContext:y}=G(s.id,!1);i.useEffect(()=>{!a.data||A||N()},[(l=a.data)==null?void 0:l.id]);async function N(){P(!0);try{const S=await g(u.addVideo(h.data.id,a.data.id));j(!0),v(S.id),w.logUserAction({id:a.data.id,name:a.data.name},{actionType:L.Submit,descriptor:E.AddToWorkspace,location:C.Popup,entity:k.Video})}catch{x.error(o("error")),s.closePopup()}}function d(){s.closePopup(),t!=null&&t.appLink&&(U.preventScrollTop(),H.trigger(t.appLink),y())}return e.jsx(R,{title:o("title"),closePopup:d,showLoadingSpinner:!r,children:r&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-auto w-75 mt-1 mb-2",children:e.jsx("img",{src:F.General.CONFETTI,className:"img-fluid",draggable:!1})}),e.jsx("div",{className:"text-center pb-3",children:e.jsx("h4",{className:"mb-2",children:e.jsx(p,{namespace:c,phrase:"added"})})}),e.jsxs(m,{children:[e.jsx(m.Cancel,{text:o("close"),onClick:d,variant:"link"}),e.jsx("a",{href:`${f.data.liteUrl}/videos/${V}`,className:"btn btn-dark",children:e.jsx("span",{className:"align-text-bottom me-1",children:e.jsx(p,{namespace:c,phrase:"open"})})})]})]})})}export{X as ExchangeAddView};
2
+ //# sourceMappingURL=D03Abjc_.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fcH9o5X3.chunk.js","sources":["../../src/apps/exchange/views/exchange-add/ExchangeAddView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Config, Library, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\n\nconst namespace = 'exchange.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeAddViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function ExchangeAddView(props: ExchangeAddViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const exchange = Flight.useBasicFetch<Library>(ExchangeRequests.exchange());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const [ added, setAdded ] = React.useState<boolean>(false);\n const [ adding, setAdding ] = React.useState<boolean>(false);\n const [ newVideoId, setNewVideoId ] = React.useState<string>(null);\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.id, false);\n\n React.useEffect(() => {\n if (!video.data || adding)\n return;\n\n addVideo();\n }, [video.data?.id]);\n\n async function addVideo() {\n setAdding(true);\n\n try {\n const newVideo = await fetchAsync<Video>(ExchangeRequests.addVideo(\n exchange.data.id,\n video.data.id\n ));\n\n setAdded(true);\n setNewVideoId(newVideo.id);\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: LocationContext.Popup,\n entity: EntityType.Video\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={!added}\n >\n {added &&\n <>\n <div className='mx-auto w-75 mt-1 mb-2'>\n <img src={ImageUrls.General.CONFETTI} className='img-fluid' draggable={false} />\n </div>\n\n <div className='text-center pb-3'>\n <h4 className='mb-2'>\n <Text namespace={namespace} phrase={'added'} />\n </h4>\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('close')}\n onClick={closePopup}\n variant='link'\n />\n <a href={`${config.data.liteUrl}/videos/${newVideoId}`} className={'btn btn-dark'}>\n <span className='align-text-bottom me-1'>\n <Text namespace={namespace} phrase={'open'} />\n </span>\n </a>\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ExchangeAddView","props","alerts","useAlerts","fetchAsync","Flight.useGetFetchAsync","config","Flight.useBasicFetch","ConfigRequests","exchange","ExchangeRequests","video","VideoRequests","added","setAdded","React","adding","setAdding","newVideoId","setNewVideoId","previewContext","clearPreviewContext","usePreviewContext","addVideo","_a","newVideo","AnalyticsHelper","UserAction","VideoActionDescriptor","LocationContext","EntityType","closePopup","ScrollHelper","Core.AppLinkHelper","jsx","Popup","jsxs","Fragment","ImageUrls","Text","PopupButtons"],"mappings":"obAuBA,MAAMA,EAAY,eACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASG,EAAgBC,EAA0C,OACxE,MAAMC,EAASC,EAAA,EACTC,EAAaC,EAAO,EAEpBC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAWF,EAA8BG,EAAiB,UAAU,EACpEC,EAAQJ,EAA4BK,EAAc,MAAMX,EAAM,EAAE,CAAC,EAEjE,CAAEY,EAAOC,CAAS,EAAIC,EAAM,SAAkB,EAAK,EACnD,CAAEC,EAAQC,CAAU,EAAIF,EAAM,SAAkB,EAAK,EACrD,CAAEG,EAAYC,CAAc,EAAIJ,EAAM,SAAiB,IAAI,EAE3D,CAAE,eAAAK,EAAgB,oBAAAC,CAAA,EAAwBC,EAAkBrB,EAAM,GAAI,EAAK,EAEjFc,EAAM,UAAU,IAAM,CAChB,CAACJ,EAAM,MAAQK,GAGnBO,EAAA,CACF,EAAG,EAACC,EAAAb,EAAM,OAAN,YAAAa,EAAY,EAAE,CAAC,EAEnB,eAAeD,GAAW,CACxBN,EAAU,EAAI,EAEd,GAAI,CACF,MAAMQ,EAAW,MAAMrB,EAAkBM,EAAiB,SACxDD,EAAS,KAAK,GACdE,EAAM,KAAK,EAAA,CACZ,EAEDG,EAAS,EAAI,EACbK,EAAcM,EAAS,EAAE,EAEzBC,EAAgB,cACd,CAAE,GAAIf,EAAM,KAAK,GAAI,KAAMA,EAAM,KAAK,IAAA,EACtC,CACE,WAAYgB,EAAW,OACvB,WAAYC,EAAsB,eAClC,SAAUC,EAAgB,MAC1B,OAAQC,EAAW,KAAA,CACrB,CAEJ,MAAQ,CACN5B,EAAO,MAAMJ,EAAU,OAAO,CAAC,EAC/BG,EAAM,WAAA,CACR,CACF,CAOA,SAAS8B,GAAmB,CAC1B9B,EAAM,WAAA,EAEDmB,GAAA,MAAAA,EAAgB,UAGrBY,EAAa,iBAAA,EACbC,EAAmB,QAAQb,EAAe,OAAO,EACjDC,EAAA,EACF,CAEA,OACEa,EAAAA,IAACC,EAAA,CACC,MAAOrC,EAAU,OAAO,EACxB,WAAAiC,EACA,mBAAoB,CAAClB,EAEpB,YACCuB,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAH,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKI,EAAU,QAAQ,SAAU,UAAU,YAAY,UAAW,GAAO,EAChF,EAEAJ,MAAC,MAAA,CAAI,UAAU,mBACb,eAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAACK,EAAA,CAAK,UAAA1C,EAAsB,OAAQ,OAAA,CAAS,EAC/C,EACF,SAEC2C,EAAA,CACC,SAAA,CAAAN,EAAAA,IAACM,EAAa,OAAb,CACC,KAAM1C,EAAU,OAAO,EACvB,QAASiC,EACT,QAAQ,MAAA,CAAA,EAEVG,EAAAA,IAAC,KAAE,KAAM,GAAG5B,EAAO,KAAK,OAAO,WAAWY,CAAU,GAAI,UAAW,eACjE,SAAAgB,EAAAA,IAAC,OAAA,CAAK,UAAU,yBACd,SAAAA,EAAAA,IAACK,GAAK,UAAA1C,EAAsB,OAAQ,MAAA,CAAQ,CAAA,CAC9C,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAIR"}
1
+ {"version":3,"file":"D03Abjc_.chunk.js","sources":["../../src/apps/exchange/views/exchange-add/ExchangeAddView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Config, Library, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\n\nconst namespace = 'exchange.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeAddViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function ExchangeAddView(props: ExchangeAddViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const exchange = Flight.useBasicFetch<Library>(ExchangeRequests.exchange());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const [ added, setAdded ] = React.useState<boolean>(false);\n const [ adding, setAdding ] = React.useState<boolean>(false);\n const [ newVideoId, setNewVideoId ] = React.useState<string>(null);\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.id, false);\n\n React.useEffect(() => {\n if (!video.data || adding)\n return;\n\n addVideo();\n }, [video.data?.id]);\n\n async function addVideo() {\n setAdding(true);\n\n try {\n const newVideo = await fetchAsync<Video>(ExchangeRequests.addVideo(\n exchange.data.id,\n video.data.id\n ));\n\n setAdded(true);\n setNewVideoId(newVideo.id);\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: LocationContext.Popup,\n entity: EntityType.Video\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={!added}\n >\n {added &&\n <>\n <div className='mx-auto w-75 mt-1 mb-2'>\n <img src={ImageUrls.General.CONFETTI} className='img-fluid' draggable={false} />\n </div>\n\n <div className='text-center pb-3'>\n <h4 className='mb-2'>\n <Text namespace={namespace} phrase={'added'} />\n </h4>\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('close')}\n onClick={closePopup}\n variant='link'\n />\n <a href={`${config.data.liteUrl}/videos/${newVideoId}`} className={'btn btn-dark'}>\n <span className='align-text-bottom me-1'>\n <Text namespace={namespace} phrase={'open'} />\n </span>\n </a>\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ExchangeAddView","props","alerts","useAlerts","fetchAsync","Flight.useGetFetchAsync","config","Flight.useBasicFetch","ConfigRequests","exchange","ExchangeRequests","video","VideoRequests","added","setAdded","React","adding","setAdding","newVideoId","setNewVideoId","previewContext","clearPreviewContext","usePreviewContext","addVideo","_a","newVideo","AnalyticsHelper","UserAction","VideoActionDescriptor","LocationContext","EntityType","closePopup","ScrollHelper","Core.AppLinkHelper","jsx","Popup","jsxs","Fragment","ImageUrls","Text","PopupButtons"],"mappings":"obAuBA,MAAMA,EAAY,eACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASG,EAAgBC,EAA0C,OACxE,MAAMC,EAASC,EAAA,EACTC,EAAaC,EAAO,EAEpBC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAWF,EAA8BG,EAAiB,UAAU,EACpEC,EAAQJ,EAA4BK,EAAc,MAAMX,EAAM,EAAE,CAAC,EAEjE,CAAEY,EAAOC,CAAS,EAAIC,EAAM,SAAkB,EAAK,EACnD,CAAEC,EAAQC,CAAU,EAAIF,EAAM,SAAkB,EAAK,EACrD,CAAEG,EAAYC,CAAc,EAAIJ,EAAM,SAAiB,IAAI,EAE3D,CAAE,eAAAK,EAAgB,oBAAAC,CAAA,EAAwBC,EAAkBrB,EAAM,GAAI,EAAK,EAEjFc,EAAM,UAAU,IAAM,CAChB,CAACJ,EAAM,MAAQK,GAGnBO,EAAA,CACF,EAAG,EAACC,EAAAb,EAAM,OAAN,YAAAa,EAAY,EAAE,CAAC,EAEnB,eAAeD,GAAW,CACxBN,EAAU,EAAI,EAEd,GAAI,CACF,MAAMQ,EAAW,MAAMrB,EAAkBM,EAAiB,SACxDD,EAAS,KAAK,GACdE,EAAM,KAAK,EAAA,CACZ,EAEDG,EAAS,EAAI,EACbK,EAAcM,EAAS,EAAE,EAEzBC,EAAgB,cACd,CAAE,GAAIf,EAAM,KAAK,GAAI,KAAMA,EAAM,KAAK,IAAA,EACtC,CACE,WAAYgB,EAAW,OACvB,WAAYC,EAAsB,eAClC,SAAUC,EAAgB,MAC1B,OAAQC,EAAW,KAAA,CACrB,CAEJ,MAAQ,CACN5B,EAAO,MAAMJ,EAAU,OAAO,CAAC,EAC/BG,EAAM,WAAA,CACR,CACF,CAOA,SAAS8B,GAAmB,CAC1B9B,EAAM,WAAA,EAEDmB,GAAA,MAAAA,EAAgB,UAGrBY,EAAa,iBAAA,EACbC,EAAmB,QAAQb,EAAe,OAAO,EACjDC,EAAA,EACF,CAEA,OACEa,EAAAA,IAACC,EAAA,CACC,MAAOrC,EAAU,OAAO,EACxB,WAAAiC,EACA,mBAAoB,CAAClB,EAEpB,YACCuB,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAH,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKI,EAAU,QAAQ,SAAU,UAAU,YAAY,UAAW,GAAO,EAChF,EAEAJ,MAAC,MAAA,CAAI,UAAU,mBACb,eAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAACK,EAAA,CAAK,UAAA1C,EAAsB,OAAQ,OAAA,CAAS,EAC/C,EACF,SAEC2C,EAAA,CACC,SAAA,CAAAN,EAAAA,IAACM,EAAa,OAAb,CACC,KAAM1C,EAAU,OAAO,EACvB,QAASiC,EACT,QAAQ,MAAA,CAAA,EAEVG,EAAAA,IAAC,KAAE,KAAM,GAAG5B,EAAO,KAAK,OAAO,WAAWY,CAAU,GAAI,UAAW,eACjE,SAAAgB,EAAAA,IAAC,OAAA,CAAK,UAAU,yBACd,SAAAA,EAAAA,IAACK,GAAK,UAAA1C,EAAsB,OAAQ,MAAA,CAAQ,CAAA,CAC9C,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAIR"}
@@ -1,2 +1,2 @@
1
- import{co as g,L as t,q as o,aT as a,cp as c,cq as p}from"./app-nj3yOqer.js";const i="shared.privateResourceError";class u extends g{constructor(){super(t.getPhrase(i,"title"))}get name(){return"PrivateResourceError"}get heading(){return t.getPhrase(i,"heading")}get description(){return t.getPhrase(i,"description")}}const d="shared.regionLockedResourceError";class f extends g{constructor(){super(t.getPhrase(d,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return t.getPhrase(d,"heading")}get description(){return t.getPhrase(d,"description")}}const E={notFound:p,forbidden:{rating:u,yearLevel:u,region:f,privacy:u},badRequest:c,internalServerError:c};function R(e,h={},n={}){if(!e)return;let r;typeof e=="number"?r=e:r=e.status;const s={...E,...h};if(r&&o.isStatusCodeError(r)){if(r===a.InternalServer){n.internalServerError||o.throw(new c);return}if(r===a.NotFound){n.notFound||o.throw(new s.notFound);return}if(r===a.Forbidden){n.forbidden||o.throw(new s.forbidden.privacy);return}n.badRequest||o.throw(new s.badRequest)}}export{R as h};
2
- //# sourceMappingURL=ChL5ufI4.chunk.js.map
1
+ import{co as g,L as t,q as o,aT as a,cp as c,cq as p}from"./app-CAg-7ccU.js";const i="shared.privateResourceError";class u extends g{constructor(){super(t.getPhrase(i,"title"))}get name(){return"PrivateResourceError"}get heading(){return t.getPhrase(i,"heading")}get description(){return t.getPhrase(i,"description")}}const d="shared.regionLockedResourceError";class f extends g{constructor(){super(t.getPhrase(d,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return t.getPhrase(d,"heading")}get description(){return t.getPhrase(d,"description")}}const E={notFound:p,forbidden:{rating:u,yearLevel:u,region:f,privacy:u},badRequest:c,internalServerError:c};function R(e,h={},n={}){if(!e)return;let r;typeof e=="number"?r=e:r=e.status;const s={...E,...h};if(r&&o.isStatusCodeError(r)){if(r===a.InternalServer){n.internalServerError||o.throw(new c);return}if(r===a.NotFound){n.notFound||o.throw(new s.notFound);return}if(r===a.Forbidden){n.forbidden||o.throw(new s.forbidden.privacy);return}n.badRequest||o.throw(new s.badRequest)}}export{R as h};
2
+ //# sourceMappingURL=D2a2dcGU.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChL5ufI4.chunk.js","sources":["../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}"],"names":["namespace","PrivateResourceError","ErrorPageError","LanguageService","RegionLockedResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus"],"mappings":"6EAIA,MAAMA,EAAY,8BAEX,MAAMC,UAA6BC,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,mCAEX,MAAMI,UAAkCF,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQL,EACR,UAAWA,EACX,OAAQG,EACR,QAASH,CAAA,EAEX,WAAYM,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD"}
1
+ {"version":3,"file":"D2a2dcGU.chunk.js","sources":["../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}"],"names":["namespace","PrivateResourceError","ErrorPageError","LanguageService","RegionLockedResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus"],"mappings":"6EAIA,MAAMA,EAAY,8BAEX,MAAMC,UAA6BC,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,mCAEX,MAAMI,UAAkCF,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQL,EACR,UAAWA,EACX,OAAQG,EACR,QAASH,CAAA,EAEX,WAAYM,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD"}
@@ -1,2 +1,2 @@
1
- import{U as a,am as C,S as l,H as p,M as v,m as T}from"./app-nj3yOqer.js";import{C as y}from"./BlDVEZsX.chunk.js";import{P as $}from"./pkzD5BEm.chunk.js";var m=(e=>(e.Series="series",e.Playlist="playlist",e.Widget="widget",e.Folder="category",e.CategoryTree="categoryTree",e))(m||{});const d={sharedVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{shareId:i,query:l.VIDEO}),publicVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{query:"thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}",permissionFilterOption:$.StripMetadata,shareId:i}),getVideosById:e=>a.urlBuilder("{gateway}/v1/objects",{"query.video":l.VIDEO_COLLECTION,"query.clip":l.CLIP_COLLECTION,"query.interactive":l.INTERACTIVE_COLLECTION,id:e}),relatedVideos:e=>{const{videoId:i,context:t,collectionId:r,moviesAndTv:s,limit:n}=e,o={videoId:i,limit:n,query:l.VIDEO_COLLECTION};return t&&(t===m.Widget?o["context.widgetId"]=r:(o["context.collectionType"]=t,o["context.collectionId"]=r)),s&&(o["context.moviesAndTv"]=!0),a.urlBuilder("{gateway}/v1/suggestions/related-videos",o)}},f={video(e,i){return{url:a.urlBuilder(`{gateway}/v1/objects/${e}`,{query:l.VIDEO,permissionFilterOption:i}),publicUrl:a.urlBuilder(`/api/objects/${e}`,{query:T.VIDEO,permissionFilterOption:i}),key:`videos:${e}:${i}`}},publicVideo(e,i,t,r){return{url:d.publicVideo(e,i),key:`videos:${e}:public:${i}`,bootstrapName:`shared:object:${e}`,success:t,error:r}},sharedVideo(e,i,t,r){return{url:d.sharedVideo(e,i),key:`shared:video:${e}`,success:t,error:r}},myVideos(e,i){const{VIDEO_COLLECTION:t,CLIP_COLLECTION:r,INTERACTIVE:s}=l,n=`videos[${t}]{libraries.typeid:${v.WorkspaceCollection}}`,o=`clips[${r}]`,u=`interactives[${s}]{status:[${y.Published},${y.Draft}]}`,c={query:`(${n}|${o}|${u}){orderbydesc:id}`,permissionFilterOption:$.StripMetadata};return i&&(c.cursor=i),{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,c),key:`my:videos:${i}`}},videos(e,i){return{url:d.getVideosById(e),key:`videos:by:id:${e.join(",")}`,success:i}},watchHistoryVideos(e,i){return{url:d.getVideosById(e),key:`watch:history:videos:by:id:${e.join(",")}`,success:i}},updateVideo(e,i,t,r,s){return{key:`update:video:${e}`,url:`{gateway}/v1/objects/${e}`,type:p.PUT,data:i,success:t,error:r,always:s}},videoRatings(e,i){const t=e.map(r=>`id=${r}`);if(t.length)return{url:`/api/domain/v2/objects?query=rating&${t.join("&")}`,key:`video:ratings:by:id:${e.join(",")}`,normalizeOptions:{namespace:i}}},videoMixinAssocs(e,i){if(e.map(r=>`id=${r}`).length)return{url:a.urlBuilder("{gateway}/v1/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),publicUrl:a.urlBuilder("/api/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),key:`video:mixin:assocs:${e.join(",")}`,normalizeOptions:{namespace:i}}},getRestrictions(e){const i=e.slice().sort();return{url:`/api/domain/v1/restrictedobjects?objectTypeId=${v.Video}${i.map(t=>`&objectId=${t}`).join("")}`,key:`restrictions:${i.join(",")}`,normalizeOptions:{namespace:"domain",idAttribute:"objectId"}}},delete(e,i,t){return{url:`{gateway}/v1/objects/${e}`,key:`delete:video:${e}`,type:p.DELETE,success:i,error:t,invalidationKeys:["videos","search"]}},deleteBulk(e,i,t,r,s){const n=e.map(u=>`videoIds=${u}`).join("&"),o=[`categoryId=${t}`,`${n}`].join("&");return{url:`/api/domain/v1/libraries/${i}/videos?${o}`,key:`delete:bulk:video:${e.join(":")}:${i}:${t}`,type:p.DELETE,success:r,error:s,invalidationKeys:["videos","search"]}},relatedVideos(e){const{videoId:i,context:t,collectionId:r,moviesAndTv:s}=e;return{url:d.relatedVideos(e),key:`related:videos:${i}:${t}:${r}:${s}`}},collectionVideos(e,i,t,r,s,n){const o=C.getVideoSortParam(i),{VIDEO_COLLECTION:u,CLIP_COLLECTION:c,INTERACTIVE:b}=l,g=`videos[${u}]`,j=`clips[${c}]`,I=`interactives[${b}]{status:[${y.Published},${y.Draft}]}`,O={query:`(${g}|${j}|${I})${o?`{${o}}`:""}`,permissionFilterOption:$.FilterOut,...t?{cursor:t}:{}},V=["folder","videos",e,t,i].filter(E=>!!E).join(":");return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,O),key:V,success:r,error:s,always:n}},pointsOfInterest(e,i,t,r,s){const n={query:"{limit:100}",cursor:i};return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/pointsofinterest`,n),publicUrl:a.urlBuilder(`/api/objects/${e}/pointsofinterest`,n),key:`pointsofinterest:${e}${i?`:${i}`:""}`,success:t,error:r,always:s}},regionAlternatives(e,i,t,r){return{url:`/api/objects/videos/${e}/region-alternatives`,publicUrl:`/api/objects/videos/${e}/region-alternatives`,key:`video:regionAlternatives:${e}`,normalize:!1,success:i,error:t,always:r}}};export{f as V};
2
- //# sourceMappingURL=QIbgTj4j.chunk.js.map
1
+ import{U as a,am as C,S as l,H as p,M as v,m as T}from"./app-CAg-7ccU.js";import{C as y}from"./BlDVEZsX.chunk.js";import{P as $}from"./pkzD5BEm.chunk.js";var m=(e=>(e.Series="series",e.Playlist="playlist",e.Widget="widget",e.Folder="category",e.CategoryTree="categoryTree",e))(m||{});const d={sharedVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{shareId:i,query:l.VIDEO}),publicVideo:(e,i)=>a.urlBuilder(`/api/objects/${e}`,{query:"thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}",permissionFilterOption:$.StripMetadata,shareId:i}),getVideosById:e=>a.urlBuilder("{gateway}/v1/objects",{"query.video":l.VIDEO_COLLECTION,"query.clip":l.CLIP_COLLECTION,"query.interactive":l.INTERACTIVE_COLLECTION,id:e}),relatedVideos:e=>{const{videoId:i,context:t,collectionId:r,moviesAndTv:s,limit:n}=e,o={videoId:i,limit:n,query:l.VIDEO_COLLECTION};return t&&(t===m.Widget?o["context.widgetId"]=r:(o["context.collectionType"]=t,o["context.collectionId"]=r)),s&&(o["context.moviesAndTv"]=!0),a.urlBuilder("{gateway}/v1/suggestions/related-videos",o)}},f={video(e,i){return{url:a.urlBuilder(`{gateway}/v1/objects/${e}`,{query:l.VIDEO,permissionFilterOption:i}),publicUrl:a.urlBuilder(`/api/objects/${e}`,{query:T.VIDEO,permissionFilterOption:i}),key:`videos:${e}:${i}`}},publicVideo(e,i,t,r){return{url:d.publicVideo(e,i),key:`videos:${e}:public:${i}`,bootstrapName:`shared:object:${e}`,success:t,error:r}},sharedVideo(e,i,t,r){return{url:d.sharedVideo(e,i),key:`shared:video:${e}`,success:t,error:r}},myVideos(e,i){const{VIDEO_COLLECTION:t,CLIP_COLLECTION:r,INTERACTIVE:s}=l,n=`videos[${t}]{libraries.typeid:${v.WorkspaceCollection}}`,o=`clips[${r}]`,u=`interactives[${s}]{status:[${y.Published},${y.Draft}]}`,c={query:`(${n}|${o}|${u}){orderbydesc:id}`,permissionFilterOption:$.StripMetadata};return i&&(c.cursor=i),{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,c),key:`my:videos:${i}`}},videos(e,i){return{url:d.getVideosById(e),key:`videos:by:id:${e.join(",")}`,success:i}},watchHistoryVideos(e,i){return{url:d.getVideosById(e),key:`watch:history:videos:by:id:${e.join(",")}`,success:i}},updateVideo(e,i,t,r,s){return{key:`update:video:${e}`,url:`{gateway}/v1/objects/${e}`,type:p.PUT,data:i,success:t,error:r,always:s}},videoRatings(e,i){const t=e.map(r=>`id=${r}`);if(t.length)return{url:`/api/domain/v2/objects?query=rating&${t.join("&")}`,key:`video:ratings:by:id:${e.join(",")}`,normalizeOptions:{namespace:i}}},videoMixinAssocs(e,i){if(e.map(r=>`id=${r}`).length)return{url:a.urlBuilder("{gateway}/v1/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),publicUrl:a.urlBuilder("/api/objects",{query:"interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks",id:e}),key:`video:mixin:assocs:${e.join(",")}`,normalizeOptions:{namespace:i}}},getRestrictions(e){const i=e.slice().sort();return{url:`/api/domain/v1/restrictedobjects?objectTypeId=${v.Video}${i.map(t=>`&objectId=${t}`).join("")}`,key:`restrictions:${i.join(",")}`,normalizeOptions:{namespace:"domain",idAttribute:"objectId"}}},delete(e,i,t){return{url:`{gateway}/v1/objects/${e}`,key:`delete:video:${e}`,type:p.DELETE,success:i,error:t,invalidationKeys:["videos","search"]}},deleteBulk(e,i,t,r,s){const n=e.map(u=>`videoIds=${u}`).join("&"),o=[`categoryId=${t}`,`${n}`].join("&");return{url:`/api/domain/v1/libraries/${i}/videos?${o}`,key:`delete:bulk:video:${e.join(":")}:${i}:${t}`,type:p.DELETE,success:r,error:s,invalidationKeys:["videos","search"]}},relatedVideos(e){const{videoId:i,context:t,collectionId:r,moviesAndTv:s}=e;return{url:d.relatedVideos(e),key:`related:videos:${i}:${t}:${r}:${s}`}},collectionVideos(e,i,t,r,s,n){const o=C.getVideoSortParam(i),{VIDEO_COLLECTION:u,CLIP_COLLECTION:c,INTERACTIVE:b}=l,g=`videos[${u}]`,j=`clips[${c}]`,I=`interactives[${b}]{status:[${y.Published},${y.Draft}]}`,O={query:`(${g}|${j}|${I})${o?`{${o}}`:""}`,permissionFilterOption:$.FilterOut,...t?{cursor:t}:{}},V=["folder","videos",e,t,i].filter(E=>!!E).join(":");return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/members`,O),key:V,success:r,error:s,always:n}},pointsOfInterest(e,i,t,r,s){const n={query:"{limit:100}",cursor:i};return{url:a.urlBuilder(`{gateway}/v1/objects/${e}/pointsofinterest`,n),publicUrl:a.urlBuilder(`/api/objects/${e}/pointsofinterest`,n),key:`pointsofinterest:${e}${i?`:${i}`:""}`,success:t,error:r,always:s}},regionAlternatives(e,i,t,r){return{url:`/api/objects/videos/${e}/region-alternatives`,publicUrl:`/api/objects/videos/${e}/region-alternatives`,key:`video:regionAlternatives:${e}`,normalize:!1,success:i,error:t,always:r}}};export{f as V};
2
+ //# sourceMappingURL=D3ImQw2c.chunk.js.map