@clickview/exchange 0.47.1-dev.4 → 0.48.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/1068-exchange-b5eaf8af44.chunk.css +35 -0
  3. package/dist/css/1127-exchange-0eab318199.chunk.css +40 -0
  4. package/dist/css/1226-exchange-217b44f8b4.chunk.css +57 -0
  5. package/dist/css/1861-exchange-f3ff7e4f0d.chunk.css +85 -0
  6. package/dist/css/2494-exchange-02d7a0249c.chunk.css +2 -0
  7. package/dist/css/2538-exchange-4cbfe56ba3.chunk.css +1 -0
  8. package/dist/css/3291-exchange-3a8e198338.chunk.css +11 -0
  9. package/dist/css/3858-exchange-06944bdfa4.chunk.css +1 -0
  10. package/dist/css/4075-exchange-6d2304419c.chunk.css +5 -0
  11. package/dist/css/5027-exchange-2284222ca6.chunk.css +25 -0
  12. package/dist/css/6298-exchange-78ece5c7c5.chunk.css +37 -0
  13. package/dist/css/6332-exchange-2a22bfa655.chunk.css +1 -0
  14. package/dist/css/6356-exchange-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/7095-exchange-4cbfe56ba3.chunk.css +1 -0
  16. package/dist/css/7759-exchange-23bb5dd175.chunk.css +8 -0
  17. package/dist/css/8294-exchange-c797263ac2.chunk.css +1 -0
  18. package/dist/css/8589-exchange-71b6bc18f9.chunk.css +11 -0
  19. package/dist/css/8866-exchange-e80e6c6649.chunk.css +10 -0
  20. package/dist/css/9212-exchange-d71527fc65.chunk.css +1 -0
  21. package/dist/css/9611-exchange-cbf2bb5621.chunk.css +5 -0
  22. package/dist/css/9958-exchange-1387f35e92.chunk.css +14 -0
  23. package/dist/css/lite-exchange-306a09841f.css +15 -0
  24. package/dist/languages/en.json +1 -0
  25. package/dist/scripts/1068-0b00683666-exchange.chunk.js +1 -0
  26. package/dist/scripts/1127-356b23351e-exchange.chunk.js +1 -0
  27. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js +2 -0
  28. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js.LICENSE.txt +1 -0
  29. package/dist/scripts/1226-a4c0643661-exchange.chunk.js +1 -0
  30. package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js +2 -0
  31. package/dist/scripts/1861-dbceb13d3f-exchange.chunk.js.LICENSE.txt +1 -0
  32. package/dist/scripts/2087-bbc1fd721f-exchange.chunk.js +1 -0
  33. package/dist/scripts/2117-5d867c698d-exchange.chunk.js +1 -0
  34. package/dist/scripts/2127-71bf57d74b-exchange.chunk.js +1 -0
  35. package/dist/scripts/2494-98cce57764-exchange.chunk.js +2 -0
  36. package/dist/scripts/2494-98cce57764-exchange.chunk.js.LICENSE.txt +1 -0
  37. package/dist/scripts/2507-1911a9bdb2-exchange.chunk.js +1 -0
  38. package/dist/scripts/2538-997edb9433-exchange.chunk.js +2 -0
  39. package/dist/scripts/2538-997edb9433-exchange.chunk.js.LICENSE.txt +1 -0
  40. package/dist/scripts/2648-4197959943-exchange.chunk.js +1 -0
  41. package/dist/scripts/2877-eee7fe484e-exchange.chunk.js +1 -0
  42. package/dist/scripts/3291-f9ccc2ea28-exchange.chunk.js +1 -0
  43. package/dist/scripts/3858-cd9d38c31c-exchange.chunk.js +1 -0
  44. package/dist/scripts/4075-6624f96fc6-exchange.chunk.js +1 -0
  45. package/dist/scripts/4299-36e5929cc6-exchange.chunk.js +1 -0
  46. package/dist/scripts/4312-7d095d2f30-exchange.chunk.js +1 -0
  47. package/dist/scripts/442-47e3927b49-exchange.chunk.js +1 -0
  48. package/dist/scripts/455-ceeb969c54-exchange.chunk.js +1 -0
  49. package/dist/scripts/4558-057650ef22-exchange.chunk.js +1 -0
  50. package/dist/scripts/5027-357264982b-exchange.chunk.js +1 -0
  51. package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +1 -0
  52. package/dist/scripts/5267-443f3cdd59-exchange.chunk.js +1 -0
  53. package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +1 -0
  54. package/dist/scripts/6156-2bf99d5991-exchange.chunk.js +1 -0
  55. package/dist/scripts/6298-1c7a0ba516-exchange.chunk.js +1 -0
  56. package/dist/scripts/6332-9d2d42e2f9-exchange.chunk.js +1 -0
  57. package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +1 -0
  58. package/dist/scripts/6725-25d1542dec-exchange.chunk.js +1 -0
  59. package/dist/scripts/6831-30fa3e741e-exchange.chunk.js +1 -0
  60. package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js +2 -0
  61. package/dist/scripts/7095-bbe1bfbe2f-exchange.chunk.js.LICENSE.txt +1 -0
  62. package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +1 -0
  63. package/dist/scripts/7759-2740213eb8-exchange.chunk.js +1 -0
  64. package/dist/scripts/7782-36924dba92-exchange.chunk.js +1 -0
  65. package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +1 -0
  66. package/dist/scripts/851-d89fb94a66-exchange.chunk.js +2 -0
  67. package/dist/scripts/851-d89fb94a66-exchange.chunk.js.LICENSE.txt +1 -0
  68. package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +1 -0
  69. package/dist/scripts/8589-912ab9f055-exchange.chunk.js +1 -0
  70. package/dist/scripts/8619-e5f595a594-exchange.chunk.js +1 -0
  71. package/dist/scripts/8866-0993e6b43a-exchange.chunk.js +1 -0
  72. package/dist/scripts/8937-727d080ed9-exchange.chunk.js +1 -0
  73. package/dist/scripts/9212-e8bde56a84-exchange.chunk.js +1 -0
  74. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +2 -0
  75. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +60 -0
  76. package/dist/scripts/9566-0625fb0cbe-exchange.chunk.js +1 -0
  77. package/dist/scripts/9611-6fe32ccc83-exchange.chunk.js +1 -0
  78. package/dist/scripts/9866-2d10067a4e-exchange.chunk.js +1 -0
  79. package/dist/scripts/9899-2b571c961b-exchange.chunk.js +1 -0
  80. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js +2 -0
  81. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js.LICENSE.txt +1 -0
  82. package/dist/scripts/bundle-be81211eaf.min.js +2 -0
  83. package/dist/scripts/bundle-be81211eaf.min.js.LICENSE.txt +108 -0
  84. package/package.json +4 -7
  85. package/typings/utils/imports.d.ts +1 -1
  86. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  87. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  88. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  89. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  90. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  91. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  92. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  93. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  94. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  95. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  96. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  97. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  98. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  99. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  100. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  101. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  102. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  103. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  104. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  105. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  106. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  107. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  108. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  109. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  110. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  111. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  112. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  113. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  114. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  115. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  116. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  117. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  118. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  119. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  120. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  121. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  122. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  123. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  124. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  125. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  126. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  127. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  128. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  129. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  130. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  131. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  132. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  133. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  134. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  135. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  136. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  137. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  138. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  139. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  140. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  141. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  142. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  143. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  144. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  145. package/dist/css/B57G3PZD.chunk.css +0 -1
  146. package/dist/css/BBV1d-ZI.chunk.css +0 -1
  147. package/dist/css/BDOTXlob.chunk.css +0 -1
  148. package/dist/css/BIeUeS4h.chunk.css +0 -1
  149. package/dist/css/BPdg7JW4.chunk.css +0 -1
  150. package/dist/css/BiRz4h1c.chunk.css +0 -1
  151. package/dist/css/Bt3pBBLn.chunk.css +0 -1
  152. package/dist/css/Bz8F9buU.chunk.css +0 -1
  153. package/dist/css/C2R4QydJ.chunk.css +0 -1
  154. package/dist/css/C7XoyEPr.chunk.css +0 -1
  155. package/dist/css/CAdv9Saa.chunk.css +0 -1
  156. package/dist/css/CC5F5C8O.chunk.css +0 -1
  157. package/dist/css/CCsCPLDG.chunk.css +0 -1
  158. package/dist/css/CD1qrI1T.chunk.css +0 -1
  159. package/dist/css/CDiJwtuL.chunk.css +0 -1
  160. package/dist/css/CM-cscAF.chunk.css +0 -1
  161. package/dist/css/CY0yvCW4.chunk.css +0 -1
  162. package/dist/css/Ci6HCTb5.chunk.css +0 -1
  163. package/dist/css/CifDVjr-.chunk.css +0 -1
  164. package/dist/css/CphXVlxY.chunk.css +0 -1
  165. package/dist/css/CrSv-tYo.chunk.css +0 -1
  166. package/dist/css/DD13UQOa.chunk.css +0 -1
  167. package/dist/css/DGyCCqtO.chunk.css +0 -1
  168. package/dist/css/DI4l_5OJ.chunk.css +0 -1
  169. package/dist/css/DL_jCfRl.chunk.css +0 -1
  170. package/dist/css/DRlDmMhN.chunk.css +0 -1
  171. package/dist/css/Dkh6sNpi.chunk.css +0 -1
  172. package/dist/css/DlOtoSz0.chunk.css +0 -1
  173. package/dist/css/DnhNnDZN.chunk.css +0 -1
  174. package/dist/css/EnQ3abug.chunk.css +0 -1
  175. package/dist/css/O777zV0C.chunk.css +0 -1
  176. package/dist/css/fs02hBfZ.chunk.css +0 -1
  177. package/dist/css/jbMisi9r.chunk.css +0 -1
  178. package/dist/css/w4TLT4f5.chunk.css +0 -1
  179. package/dist/en.json +0 -1
  180. package/dist/scripts/0eZyUL6x.chunk.js +0 -2
  181. package/dist/scripts/0eZyUL6x.chunk.js.map +0 -1
  182. package/dist/scripts/2tJmZ2Oi.chunk.js +0 -2
  183. package/dist/scripts/2tJmZ2Oi.chunk.js.map +0 -1
  184. package/dist/scripts/81elAOH1.chunk.js +0 -2
  185. package/dist/scripts/81elAOH1.chunk.js.map +0 -1
  186. package/dist/scripts/AkCv9mUX.chunk.js +0 -2
  187. package/dist/scripts/AkCv9mUX.chunk.js.map +0 -1
  188. package/dist/scripts/B-Dp4NBp.chunk.js +0 -2
  189. package/dist/scripts/B-Dp4NBp.chunk.js.map +0 -1
  190. package/dist/scripts/B-DrhpV6.chunk.js +0 -2
  191. package/dist/scripts/B-DrhpV6.chunk.js.map +0 -1
  192. package/dist/scripts/B-Ve87B8.chunk.js +0 -2
  193. package/dist/scripts/B-Ve87B8.chunk.js.map +0 -1
  194. package/dist/scripts/B3fiTt0v.chunk.js +0 -2
  195. package/dist/scripts/B3fiTt0v.chunk.js.map +0 -1
  196. package/dist/scripts/B3gC_Ph0.chunk.js +0 -2
  197. package/dist/scripts/B3gC_Ph0.chunk.js.map +0 -1
  198. package/dist/scripts/B5GSz7JC.chunk.js +0 -2
  199. package/dist/scripts/B5GSz7JC.chunk.js.map +0 -1
  200. package/dist/scripts/B5ReN0O-.chunk.js +0 -2
  201. package/dist/scripts/B5ReN0O-.chunk.js.map +0 -1
  202. package/dist/scripts/B668bf5B.chunk.js +0 -2
  203. package/dist/scripts/B668bf5B.chunk.js.map +0 -1
  204. package/dist/scripts/B6J5cgUO.chunk.js +0 -2
  205. package/dist/scripts/B6J5cgUO.chunk.js.map +0 -1
  206. package/dist/scripts/B70bPb5E.chunk.js +0 -2
  207. package/dist/scripts/B70bPb5E.chunk.js.map +0 -1
  208. package/dist/scripts/BAJmnmDG.chunk.js +0 -2
  209. package/dist/scripts/BAJmnmDG.chunk.js.map +0 -1
  210. package/dist/scripts/BBtnCImF.chunk.js +0 -2
  211. package/dist/scripts/BBtnCImF.chunk.js.map +0 -1
  212. package/dist/scripts/BDF37jEe.chunk.js +0 -2
  213. package/dist/scripts/BDF37jEe.chunk.js.map +0 -1
  214. package/dist/scripts/BHYvYUqt.chunk.js +0 -2
  215. package/dist/scripts/BHYvYUqt.chunk.js.map +0 -1
  216. package/dist/scripts/BIU8qa9K.chunk.js +0 -2
  217. package/dist/scripts/BIU8qa9K.chunk.js.map +0 -1
  218. package/dist/scripts/BKI4hXQ7.chunk.js +0 -2
  219. package/dist/scripts/BKI4hXQ7.chunk.js.map +0 -1
  220. package/dist/scripts/BMZLL3_m.chunk.js +0 -2
  221. package/dist/scripts/BMZLL3_m.chunk.js.map +0 -1
  222. package/dist/scripts/BO2QSQWF.chunk.js +0 -2
  223. package/dist/scripts/BO2QSQWF.chunk.js.map +0 -1
  224. package/dist/scripts/BPdCNtlr.chunk.js +0 -2
  225. package/dist/scripts/BPdCNtlr.chunk.js.map +0 -1
  226. package/dist/scripts/BSruPC6q.chunk.js +0 -2
  227. package/dist/scripts/BSruPC6q.chunk.js.map +0 -1
  228. package/dist/scripts/BXEZ_cH6.chunk.js +0 -2
  229. package/dist/scripts/BXEZ_cH6.chunk.js.map +0 -1
  230. package/dist/scripts/BXihGKiH.chunk.js +0 -2
  231. package/dist/scripts/BXihGKiH.chunk.js.map +0 -1
  232. package/dist/scripts/BZWC2UjJ.chunk.js +0 -2
  233. package/dist/scripts/BZWC2UjJ.chunk.js.map +0 -1
  234. package/dist/scripts/BZiHvyg-.chunk.js +0 -2
  235. package/dist/scripts/BZiHvyg-.chunk.js.map +0 -1
  236. package/dist/scripts/BlDVEZsX.chunk.js +0 -2
  237. package/dist/scripts/BlDVEZsX.chunk.js.map +0 -1
  238. package/dist/scripts/BmeqRFWF.chunk.js +0 -2
  239. package/dist/scripts/BmeqRFWF.chunk.js.map +0 -1
  240. package/dist/scripts/BqNPVwUS.chunk.js +0 -2
  241. package/dist/scripts/BqNPVwUS.chunk.js.map +0 -1
  242. package/dist/scripts/BxCjtYxH.chunk.js +0 -2
  243. package/dist/scripts/BxCjtYxH.chunk.js.map +0 -1
  244. package/dist/scripts/BxIUA4rE.chunk.js +0 -2
  245. package/dist/scripts/BxIUA4rE.chunk.js.map +0 -1
  246. package/dist/scripts/BzTPaPHA.chunk.js +0 -362
  247. package/dist/scripts/BzTPaPHA.chunk.js.map +0 -1
  248. package/dist/scripts/C4qPC8G0.chunk.js +0 -2
  249. package/dist/scripts/C4qPC8G0.chunk.js.map +0 -1
  250. package/dist/scripts/C88MKPgQ.chunk.js +0 -3
  251. package/dist/scripts/C88MKPgQ.chunk.js.map +0 -1
  252. package/dist/scripts/C8QZE6Un.chunk.js +0 -2
  253. package/dist/scripts/C8QZE6Un.chunk.js.map +0 -1
  254. package/dist/scripts/CAm4-U8J.chunk.js +0 -2
  255. package/dist/scripts/CAm4-U8J.chunk.js.map +0 -1
  256. package/dist/scripts/CBHt08r_.chunk.js +0 -2
  257. package/dist/scripts/CBHt08r_.chunk.js.map +0 -1
  258. package/dist/scripts/CC6EHIeg.chunk.js +0 -2
  259. package/dist/scripts/CC6EHIeg.chunk.js.map +0 -1
  260. package/dist/scripts/CCj-BH4j.chunk.js +0 -2
  261. package/dist/scripts/CCj-BH4j.chunk.js.map +0 -1
  262. package/dist/scripts/CFa5wiAZ.chunk.js +0 -2
  263. package/dist/scripts/CFa5wiAZ.chunk.js.map +0 -1
  264. package/dist/scripts/CHtfOuwt.chunk.js +0 -2
  265. package/dist/scripts/CHtfOuwt.chunk.js.map +0 -1
  266. package/dist/scripts/CJ3oIQlG.chunk.js +0 -2
  267. package/dist/scripts/CJ3oIQlG.chunk.js.map +0 -1
  268. package/dist/scripts/CKvmo9qU.chunk.js +0 -2
  269. package/dist/scripts/CKvmo9qU.chunk.js.map +0 -1
  270. package/dist/scripts/CLGeYsiU.chunk.js +0 -2
  271. package/dist/scripts/CLGeYsiU.chunk.js.map +0 -1
  272. package/dist/scripts/CW29yRhD.chunk.js +0 -2
  273. package/dist/scripts/CW29yRhD.chunk.js.map +0 -1
  274. package/dist/scripts/CXB1Dc5J.chunk.js +0 -2
  275. package/dist/scripts/CXB1Dc5J.chunk.js.map +0 -1
  276. package/dist/scripts/CY2lx-Xj.chunk.js +0 -2
  277. package/dist/scripts/CY2lx-Xj.chunk.js.map +0 -1
  278. package/dist/scripts/CacmfpJ3.chunk.js +0 -2
  279. package/dist/scripts/CacmfpJ3.chunk.js.map +0 -1
  280. package/dist/scripts/CbAEl-Vm.chunk.js +0 -2
  281. package/dist/scripts/CbAEl-Vm.chunk.js.map +0 -1
  282. package/dist/scripts/CcijYrFA.chunk.js +0 -2
  283. package/dist/scripts/CcijYrFA.chunk.js.map +0 -1
  284. package/dist/scripts/CdvQhnVd.chunk.js +0 -2
  285. package/dist/scripts/CdvQhnVd.chunk.js.map +0 -1
  286. package/dist/scripts/Cdw__lc8.chunk.js +0 -2
  287. package/dist/scripts/Cdw__lc8.chunk.js.map +0 -1
  288. package/dist/scripts/Cg9HJsEZ.chunk.js +0 -2
  289. package/dist/scripts/Cg9HJsEZ.chunk.js.map +0 -1
  290. package/dist/scripts/Ch0LKWIV.chunk.js +0 -50
  291. package/dist/scripts/Ch0LKWIV.chunk.js.map +0 -1
  292. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  293. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  294. package/dist/scripts/CqytaiSJ.chunk.js +0 -2
  295. package/dist/scripts/CqytaiSJ.chunk.js.map +0 -1
  296. package/dist/scripts/CubAa6F_.chunk.js +0 -2
  297. package/dist/scripts/CubAa6F_.chunk.js.map +0 -1
  298. package/dist/scripts/CwOHSynR.chunk.js +0 -2
  299. package/dist/scripts/CwOHSynR.chunk.js.map +0 -1
  300. package/dist/scripts/D19_0c-8.chunk.js +0 -2
  301. package/dist/scripts/D19_0c-8.chunk.js.map +0 -1
  302. package/dist/scripts/D1S6hwZq.chunk.js +0 -2
  303. package/dist/scripts/D1S6hwZq.chunk.js.map +0 -1
  304. package/dist/scripts/D7pbmK0q.chunk.js +0 -6
  305. package/dist/scripts/D7pbmK0q.chunk.js.map +0 -1
  306. package/dist/scripts/D7uBkU79.chunk.js +0 -8
  307. package/dist/scripts/D7uBkU79.chunk.js.map +0 -1
  308. package/dist/scripts/D8Hat_q8.chunk.js +0 -2
  309. package/dist/scripts/D8Hat_q8.chunk.js.map +0 -1
  310. package/dist/scripts/D8zZvitu.chunk.js +0 -5
  311. package/dist/scripts/D8zZvitu.chunk.js.map +0 -1
  312. package/dist/scripts/DCeinDae.chunk.js +0 -2
  313. package/dist/scripts/DCeinDae.chunk.js.map +0 -1
  314. package/dist/scripts/DEimCdra.chunk.js +0 -2
  315. package/dist/scripts/DEimCdra.chunk.js.map +0 -1
  316. package/dist/scripts/DKoiUoAQ.chunk.js +0 -2
  317. package/dist/scripts/DKoiUoAQ.chunk.js.map +0 -1
  318. package/dist/scripts/DLihS4mZ.chunk.js +0 -2
  319. package/dist/scripts/DLihS4mZ.chunk.js.map +0 -1
  320. package/dist/scripts/DS4k_cAQ.chunk.js +0 -2
  321. package/dist/scripts/DS4k_cAQ.chunk.js.map +0 -1
  322. package/dist/scripts/DVrUHsk4.chunk.js +0 -2
  323. package/dist/scripts/DVrUHsk4.chunk.js.map +0 -1
  324. package/dist/scripts/De8m6Vtf.chunk.js +0 -15
  325. package/dist/scripts/De8m6Vtf.chunk.js.map +0 -1
  326. package/dist/scripts/Dg-4fBAS.chunk.js +0 -2
  327. package/dist/scripts/Dg-4fBAS.chunk.js.map +0 -1
  328. package/dist/scripts/DgBm4Z5H.chunk.js +0 -2
  329. package/dist/scripts/DgBm4Z5H.chunk.js.map +0 -1
  330. package/dist/scripts/Dh8xoOSf.chunk.js +0 -2
  331. package/dist/scripts/Dh8xoOSf.chunk.js.map +0 -1
  332. package/dist/scripts/DlrCPMdZ.chunk.js +0 -2
  333. package/dist/scripts/DlrCPMdZ.chunk.js.map +0 -1
  334. package/dist/scripts/DnMWAYTf.chunk.js +0 -2
  335. package/dist/scripts/DnMWAYTf.chunk.js.map +0 -1
  336. package/dist/scripts/DtLhe3Mi.chunk.js +0 -2
  337. package/dist/scripts/DtLhe3Mi.chunk.js.map +0 -1
  338. package/dist/scripts/DzdwUdxf.chunk.js +0 -2
  339. package/dist/scripts/DzdwUdxf.chunk.js.map +0 -1
  340. package/dist/scripts/IV3bbn1E.chunk.js +0 -2
  341. package/dist/scripts/IV3bbn1E.chunk.js.map +0 -1
  342. package/dist/scripts/K3QqEeXP.chunk.js +0 -2
  343. package/dist/scripts/K3QqEeXP.chunk.js.map +0 -1
  344. package/dist/scripts/Kj832An8.chunk.js +0 -2
  345. package/dist/scripts/Kj832An8.chunk.js.map +0 -1
  346. package/dist/scripts/QfCSKVqV.chunk.js +0 -2
  347. package/dist/scripts/QfCSKVqV.chunk.js.map +0 -1
  348. package/dist/scripts/RAnkajCC.chunk.js +0 -2
  349. package/dist/scripts/RAnkajCC.chunk.js.map +0 -1
  350. package/dist/scripts/RfKhDEFx.chunk.js +0 -2
  351. package/dist/scripts/RfKhDEFx.chunk.js.map +0 -1
  352. package/dist/scripts/RjaJ7sQ8.chunk.js +0 -2
  353. package/dist/scripts/RjaJ7sQ8.chunk.js.map +0 -1
  354. package/dist/scripts/Us_3OHJ6.chunk.js +0 -2
  355. package/dist/scripts/Us_3OHJ6.chunk.js.map +0 -1
  356. package/dist/scripts/W5aHBnKW.chunk.js +0 -2
  357. package/dist/scripts/W5aHBnKW.chunk.js.map +0 -1
  358. package/dist/scripts/_sYSSSUN.chunk.js +0 -2
  359. package/dist/scripts/_sYSSSUN.chunk.js.map +0 -1
  360. package/dist/scripts/aWiaSYnf.chunk.js +0 -2
  361. package/dist/scripts/aWiaSYnf.chunk.js.map +0 -1
  362. package/dist/scripts/ajQ8aa2Z.chunk.js +0 -2
  363. package/dist/scripts/ajQ8aa2Z.chunk.js.map +0 -1
  364. package/dist/scripts/app-BOVAF25L.js +0 -219
  365. package/dist/scripts/app-BOVAF25L.js.map +0 -1
  366. package/dist/scripts/fryHFjND.chunk.js +0 -2
  367. package/dist/scripts/fryHFjND.chunk.js.map +0 -1
  368. package/dist/scripts/gaXZzMcg.chunk.js +0 -2
  369. package/dist/scripts/gaXZzMcg.chunk.js.map +0 -1
  370. package/dist/scripts/pkzD5BEm.chunk.js +0 -2
  371. package/dist/scripts/pkzD5BEm.chunk.js.map +0 -1
  372. package/dist/scripts/rZLzwqIY.chunk.js +0 -2
  373. package/dist/scripts/rZLzwqIY.chunk.js.map +0 -1
  374. package/dist/scripts/sQODx69W.chunk.js +0 -2
  375. package/dist/scripts/sQODx69W.chunk.js.map +0 -1
  376. package/dist/scripts/tP6Wmg__.chunk.js +0 -2
  377. package/dist/scripts/tP6Wmg__.chunk.js.map +0 -1
  378. package/vite.config.ts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"file":"C8QZE6Un.chunk.js","sources":["../../../../libs/shared/src/enums/RelatedVideosContext.ts","../../../../libs/shared/src/flight-requests/VideoRequests.ts"],"sourcesContent":["export enum RelatedVideosContext {\n Series = 'series',\n Playlist = 'playlist',\n Widget = 'widget',\n Folder = 'category',\n CategoryTree = 'categoryTree'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { PointOfInterestCollection, UpdateVideoRequest, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { RegionAlternative } from 'libs/shared/interfaces/models/RegionAlternative';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedVideo: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.VIDEO\n }),\n\n publicVideo: (id: string, shareId?: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: 'thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n\n getVideosById: (ids: string[]) => {\n return UrlHelper.urlBuilder('{gateway}/v1/objects', {\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'id': ids\n });\n },\n\n relatedVideos: (options: {\n videoId: string;\n context?: RelatedVideosContext;\n collectionId?: string;\n moviesAndTv?: boolean;\n limit: number;\n }) => {\n const { videoId, context, collectionId, moviesAndTv, limit } = options;\n\n const params: HashObject = {\n videoId,\n limit,\n query: SharedWithStatements.VIDEO_COLLECTION\n };\n\n if (context) {\n if (context === RelatedVideosContext.Widget) {\n params['context.widgetId'] = collectionId;\n } else {\n params['context.collectionType'] = context;\n params['context.collectionId'] = collectionId;\n }\n }\n\n if (moviesAndTv)\n params['context.moviesAndTv'] = true;\n\n return UrlHelper.urlBuilder('{gateway}/v1/suggestions/related-videos', params);\n }\n};\n\nexport const VideoRequests = {\n video(id: string, permissionFilterOption?: PermissionFilterOption): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.VIDEO,\n permissionFilterOption\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: PublicWithStatement.VIDEO,\n permissionFilterOption\n }),\n key: `videos:${id}:${permissionFilterOption}`\n };\n },\n\n publicVideo(\n id: string,\n shareId?: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.publicVideo(id, shareId),\n key: `videos:${id}:public:${shareId}`,\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n\n sharedVideo(\n id: string,\n shareId: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.sharedVideo(id, shareId),\n key: `shared:video:${id}`,\n success,\n error\n };\n },\n\n myVideos(userId: string, cursor: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery}){orderbydesc:id}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${userId}/members`, params),\n key: `my:videos:${cursor}`\n };\n },\n\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n watchHistoryVideos(\n ids: string[],\n success?: (videos: Video[]) => void\n ): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `watch:history:videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n updateVideo(\n id: string,\n data: UpdateVideoRequest,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `update:video:${id}`,\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.PUT,\n data,\n success,\n error,\n always\n };\n },\n\n /**\n * This is simply an example to show the prototype for useVideoMixin\n * eventually there will be endpoints in domain that let us fetch members\n * without fetching the objects properties, so we can fetch stuff like\n * hasInteractives and isFavourited as subsequent calls\n */\n videoRatings(ids: string[], namespace?: string): Flight.Request {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n return {\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\n key: `video:ratings:by:id:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n videoMixinAssocs(ids: string[], namespace?: string): Flight.PublicRequest {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n /**\n * IMPORTANT!\n * \n * This request is used for BOTH clips and videos. This means these requests will fail if you\n * add assocs in the future that are not supported for both object types. If you find yourself in this\n * case, what you should do is:\n * \n * 1. Consider whether clips should support the assoc that you're hydrating for videos. In most cases,\n * I think they should, as we want clips and videos to basically support the same fields and metadata.\n * 2. If the above is false or can't be done right now, you will need to create a separate request for clips\n * and update the logic in useVideoMixin to handle this.\n */\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/objects', {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects`, {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n /**\n * We are intentionally NOT sorting the IDs here. This is because `useVideoMixin` wants to provide\n * the IDs in their original order so that the cache key here doesn't change for subsequent calls.\n * \n * Here is an example of a problem that would occur if we were sorting: say we search for something,\n * and load the first page of 25 results. The videos and clips here would have their IDs sorted in the cache\n * key, then fetched. Then, we scrolled down and fetched the next 25, leading to 50 IDs in the array. If we\n * sort the IDs in the key, the keys would change from the first request, leading to all of the videos/clips\n * from the first request being fetched a second time unnecessarily. Every time you'd fetch a new page, you'd\n * be making multiple unnecessary API calls.\n * \n * TL;DR: Don't sort the IDs here, `useVideoMixin` will handle that.\n */\n key: `video:mixin:assocs:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n getRestrictions(videoIds: string[]): Flight.Request {\n const sortedIds = videoIds.slice().sort();\n\n return {\n url: '/api/domain/v1/restrictedobjects'\n + `?objectTypeId=${MasterType.Video}${sortedIds.map(id => `&objectId=${id}`).join('')}`,\n key: `restrictions:${sortedIds.join(',')}`,\n normalizeOptions: {\n namespace: 'domain',\n idAttribute: 'objectId'\n }\n };\n },\n\n delete(videoId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}`,\n key: `delete:video:${videoId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n deleteBulk(\n videoId: string[],\n libraryId: string,\n categoryId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n const videoIds = videoId.map(id => `videoIds=${id}`).join('&');\n const params = [\n `categoryId=${categoryId}`,\n `${videoIds}`\n ].join('&');\n\n return {\n url: `/api/domain/v1/libraries/${libraryId}/videos?${params}`,\n key: `delete:bulk:video:${videoId.join(':')}:${libraryId}:${categoryId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n relatedVideos(options: {\n videoId: string;\n context?: RelatedVideosContext;\n collectionId?: string;\n moviesAndTv?: boolean;\n /**\n * This limit is intentionall not in the key. See useGetRelatedVideos for an explanation\n */\n limit: number;\n }): Flight.Request {\n const { videoId, context, collectionId, moviesAndTv } = options;\n\n return {\n url: endpoints.relatedVideos(options),\n key: `related:videos:${videoId}:${context}:${collectionId}:${moviesAndTv}`\n };\n },\n\n collectionVideos(\n collectionId: string,\n sort?: VideoSortType,\n cursor?: string,\n success?: (data: VideoCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery})${sortFilter ? `{${sortFilter}}` : ''}`,\n permissionFilterOption: PermissionFilterOption.FilterOut,\n ...(cursor ? { cursor } : {})\n };\n\n const key = [ 'folder', 'videos', collectionId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${collectionId}/members`, params),\n key,\n success,\n error,\n always\n };\n },\n\n pointsOfInterest(\n videoId: string,\n cursor?: string,\n success?: (data: PointOfInterestCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n const queryStringObj = { query: '{limit:100}', cursor };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/pointsofinterest`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/pointsofinterest`, queryStringObj),\n key: `pointsofinterest:${videoId}${cursor ? `:${cursor}` : ''}`,\n success,\n error,\n always\n };\n },\n\n regionAlternatives(\n videoId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/objects/videos/${videoId}/region-alternatives`,\n publicUrl: `/api/objects/videos/${videoId}/region-alternatives`,\n key: `video:regionAlternatives:${videoId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n"],"names":["RelatedVideosContext","endpoints","id","shareId","UrlHelper","SharedWithStatements","PermissionFilterOption","ids","options","videoId","context","collectionId","moviesAndTv","limit","params","VideoRequests","permissionFilterOption","PublicWithStatement","success","error","userId","cursor","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","videoQuery","MasterType","clipQuery","interactiveQuery","CurationStatus","data","always","HttpVerbs","namespace","i","videoIds","sortedIds","libraryId","categoryId","sort","sortFilter","VideoSortHelper","key","k","queryStringObj"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as e,al as i,B as d,x as n,L as l,G as o,aI as r,a2 as m,P as x,aB as u}from"./app-BOVAF25L.js";const h="_myVideosButton_5ybcl_1",y={myVideosButton:h},a="shared.alreadyAdded",j=l.encloseNamespace(a);function g(s){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-auto w-75 mt-1 mb-2",children:e.jsx("img",{src:i.General.CONFETTI,className:"img-fluid",draggable:!1})}),e.jsxs("div",{className:"text-center pb-3",children:[e.jsx("h4",{children:s.alreadyAdded?e.jsx(d,{namespace:a,phrase:"alreadyAdded"}):e.jsx(d,{namespace:a,phrase:"successfullyAdded"})}),!s.alreadyAdded&&e.jsx("p",{children:e.jsx(d,{namespace:a,phrase:"successfullyAddedDescription"})})]}),e.jsxs(n,{children:[e.jsx(n.Cancel,{text:j(s.alreadyAdded?"addAnyway":"close"),onClick:s.onClickClose,variant:"link"}),e.jsxs("a",{href:`${s.liteUrl}${s.videoId?"/videos/"+s.videoId:"/my-videos"}`,className:`${y.myVideosButton} btn btn-dark d-flex align-items-center`,children:[e.jsx("span",{className:"me-1",children:e.jsx(d,{namespace:a,phrase:s.videoId?"watchVideo":"myVideos"})}),e.jsx(o,{svg:r})]})]})]})}const A="shared.alreadyAdded",v=l.encloseNamespace(A);function p(s){const{alreadyAdded:c}=s.params,t=m(u.config());return e.jsx(x,{title:v("title"),closePopup:s.closePopup,children:e.jsx(g,{liteUrl:t.data.liteUrl,alreadyAdded:c,onClickClose:s.closePopup})})}export{p as TvAlreadyAddedView};
2
- //# sourceMappingURL=CAm4-U8J.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CAm4-U8J.chunk.js","sources":["../../src/shared/components/already-added/AlreadyAdded.tsx","../../src/apps/tv/views/tv-already-added/TvAlreadyAddedView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './already-added.module.scss';\n\nconst namespace = 'shared.alreadyAdded';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AlreadyAddedProps {\n liteUrl: string;\n videoId?: string;\n alreadyAdded?: boolean;\n onClickClose: () => void;\n}\n\nexport function AlreadyAdded(props: AlreadyAddedProps) {\n return (\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>\n {props.alreadyAdded\n ? <Text namespace={namespace} phrase={'alreadyAdded'} />\n : <Text namespace={namespace} phrase={'successfullyAdded'} />\n }\n </h4>\n {!props.alreadyAdded && <p><Text namespace={namespace} phrase='successfullyAddedDescription' /></p>}\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(props.alreadyAdded ? 'addAnyway' : 'close')}\n onClick={props.onClickClose}\n variant='link'\n />\n <a\n href={`${props.liteUrl}${props.videoId ? '/videos/' + props.videoId : '/my-videos'}`}\n className={`${styles.myVideosButton} btn btn-dark d-flex align-items-center`}\n >\n <span className='me-1'>\n <Text namespace={namespace} phrase={props.videoId ? 'watchVideo' : 'myVideos'} />\n </span>\n <SvgContainer svg={NewWindowSvg} />\n </a>\n </PopupButtons>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { AlreadyAdded } from 'shared/components/already-added/AlreadyAdded';\n\nconst namespace = 'shared.alreadyAdded';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvAlreadyAddedViewProps extends PopupViewProps {\n params: HashObject;\n}\n\nexport function TvAlreadyAddedView(props: TvAlreadyAddedViewProps): JSX.Element {\n const { alreadyAdded } = props.params;\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n >\n <AlreadyAdded\n liteUrl={config.data.liteUrl}\n alreadyAdded={alreadyAdded}\n onClickClose={props.closePopup}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","AlreadyAdded","props","jsxs","Fragment","jsx","ImageUrls","Text","PopupButtons","styles","SvgContainer","NewWindowSvg","TvAlreadyAddedView","alreadyAdded","config","Flight.useBasicFetch","ConfigRequests","Popup"],"mappings":"gKAaMA,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EASrD,SAASG,EAAaC,EAA0B,CACrD,OACEC,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKC,EAAU,QAAQ,SAAU,UAAU,YAAY,UAAW,GAAO,EAChF,EAEAH,EAAAA,KAAC,MAAA,CAAI,UAAU,mBACb,SAAA,CAAAE,MAAC,KAAA,CACE,SAAAH,EAAM,aACHG,EAAAA,IAACE,aAAKT,EAAsB,OAAQ,cAAA,CAAgB,EACpDO,EAAAA,IAACE,EAAA,CAAA,UAAKT,EAAsB,OAAQ,oBAAqB,EAE/D,EACC,CAACI,EAAM,cAAgBG,MAAC,IAAA,CAAE,eAACE,EAAA,CAAA,UAAKT,EAAsB,OAAO,8BAAA,CAA+B,CAAA,CAAE,CAAA,EACjG,SAECU,EAAA,CACC,SAAA,CAAAH,EAAAA,IAACG,EAAa,OAAb,CACC,KAAMT,EAAUG,EAAM,aAAe,YAAc,OAAO,EAC1D,QAASA,EAAM,aACf,QAAQ,MAAA,CAAA,EAEVC,EAAAA,KAAC,IAAA,CACC,KAAM,GAAGD,EAAM,OAAO,GAAGA,EAAM,QAAU,WAAaA,EAAM,QAAU,YAAY,GAClF,UAAW,GAAGO,EAAO,cAAc,0CAEnC,SAAA,CAAAJ,EAAAA,IAAC,OAAA,CAAK,UAAU,OACd,SAAAA,EAAAA,IAACE,EAAA,CAAA,UAAKT,EAAsB,OAAQI,EAAM,QAAU,aAAe,UAAA,CAAY,EACjF,EACAG,EAAAA,IAACK,EAAA,CAAa,IAAKC,CAAA,CAAc,CAAA,CAAA,CAAA,CACnC,CAAA,CACF,CAAA,EACF,CAEJ,CC9CA,MAAMb,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASc,EAAmBV,EAA6C,CAC9E,KAAM,CAAE,aAAAW,GAAiBX,EAAM,OAEzBY,EAASC,EAA6BC,EAAe,QAAQ,EAEnE,OACEX,EAAAA,IAACY,EAAA,CACC,MAAOlB,EAAU,OAAO,EACxB,WAAYG,EAAM,WAElB,SAAAG,EAAAA,IAACJ,EAAA,CACC,QAASa,EAAO,KAAK,QACrB,aAAAD,EACA,aAAcX,EAAM,UAAA,CAAA,CACtB,CAAA,CAGN"}
@@ -1,2 +0,0 @@
1
- import{U as n,H as $,am as k,c as D,S as m}from"./app-BOVAF25L.js";import{S as C}from"./tP6Wmg__.chunk.js";import{P as b}from"./pkzD5BEm.chunk.js";const j={exchange(){return{url:n.urlBuilder("/api/domain/v2/me/libraries",{type:["exchange"],maxCategoryDepth:0}),key:"exchange",normalize:!1,formatData:e=>D.first(e).data}},categories(){return{url:n.urlBuilder("/api/domain/v2/me/libraries",{type:["exchange"],maxCategoryDepth:2}),key:"exchange:categories",normalize:!1,formatData:e=>D.first(e).children}},folderVideos(e,t,a){const i=k.getVideoSortParam(t),s=(i?`{${i},libraries.typeid:18}`:"")+m.VIDEO_COLLECTION,o=n.urlBuilder(`{gateway}/v1/objects/${e}/videos`,{cursor:a,query:s,permissionFilterOption:b.StripMetadata}),r=["folder","videos",e,a,t].filter(l=>!!l).join(":");return{url:o,key:r}},seriesVideos(e,t,a){const i=k.getVideoSortParam(t),s=(i?`{${i},libraries.typeid:18}`:"")+m.VIDEO_COLLECTION,o=n.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:s,cursor:a}),r=["series","videos",e,a,t].filter(l=>!!l).join(":");return{url:o,key:r}},mostRecentVideos(e,t){const a="{orderByDesc:timestamp}"+m.VIDEO_COLLECTION,i=n.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:a,cursor:t}),s=["mostRecent","videos",e,t].filter(o=>!!o).join(":");return{url:i,key:s}},addVideo(e,t){return{key:"add:video:exchange",url:"{gateway}/v1/users/me/add-videos",data:{libraryId:e,objectId:t},type:$.POST,invalidationKeys:`videos:${t}:`}},suggestEdit(e,t){return{key:"suggest:an:edit",url:`{gateway}/v1/videos/${e}/suggest-edit`,data:t,type:$.POST}},search(e,t,a={},i){let s=`search:${e}:${t}:${i}`;s+=Object.keys(a).map(r=>a[r]).join(";");const o=Object.assign({},{index:t,cursor:i??void 0,query:e,...a});return{url:n.urlBuilder("{gateway}/v3/search/exchange",o),key:s,formatData:r=>{var y,g;let l=r.totalResults;const u=((y=r==null?void 0:r.results)==null?void 0:y.filter(d=>{var p,v,h,f,x,O,S,V;if(d._index!=="series"&&d._index!=="playlist")return!0;if(d._index==="playlist"){const c=d;return(v=(p=c.clips)==null?void 0:p.data)!=null&&v.length||(f=(h=c.interactives)==null?void 0:h.data)!=null&&f.length||(O=(x=c.videos)==null?void 0:x.data)!=null&&O.length?!0:(l--,!1)}return((V=(S=d.videos)==null?void 0:S.data)==null?void 0:V.length)===0?(l--,!1):!0}))??[];r.results=u,r.totalResults=l;const E=(g=u[0])==null?void 0:g._score;return{...r,results:C.mapMaxScoreToSearchResults(u,E)}}}}};export{j as E};
2
- //# sourceMappingURL=CBHt08r_.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CBHt08r_.chunk.js","sources":["../../src/apps/exchange/flight-requests/ExchangeRequests.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SearchIndices, SearchResultObjectTypes, SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { SharedSearchHelper } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { Playlist, Series, SuggestEditRequest } from 'libs/shared/interfaces';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nexport const ExchangeRequests = {\n exchange() {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 0\n }),\n key: 'exchange',\n normalize: false,\n formatData: (data: HashObject[]) => {\n return ArrayHelper.first(data).data;\n }\n };\n },\n categories() {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 2\n }),\n key: 'exchange:categories',\n normalize: false,\n formatData: (data: HashObject[]) => {\n return ArrayHelper.first(data).children;\n }\n };\n },\n folderVideos(\n folderId: string,\n sort?: VideoSortType,\n cursor?: string\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n \n const query = (sortFilter ? `{${sortFilter},libraries.typeid:18}` : '') + SharedWithStatements.VIDEO_COLLECTION;\n\n const url = UrlHelper.urlBuilder(`{gateway}/v1/objects/${folderId}/videos`, {\n cursor,\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n });\n\n const key = [ 'folder', 'videos', folderId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n seriesVideos(\n seriesId: string,\n sort?: VideoSortType,\n cursor?: string\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const query = (sortFilter ? `{${sortFilter},libraries.typeid:18}` : '') + SharedWithStatements.VIDEO_COLLECTION;\n\n const url = UrlHelper.urlBuilder(`{gateway}/v1/collections/${seriesId}/videos`, {\n query,\n cursor\n });\n\n const key = [ 'series', 'videos', seriesId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n mostRecentVideos(exchangeId: string, cursor?: string): Flight.Request {\n const query = '{orderByDesc:timestamp}' + SharedWithStatements.VIDEO_COLLECTION;\n \n const url = UrlHelper.urlBuilder(`{gateway}/v1/collections/${exchangeId}/videos`, {\n query,\n cursor\n });\n\n const key = [ 'mostRecent', 'videos', exchangeId, cursor ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n addVideo(\n libraryId: string,\n objectId: string\n ): Flight.Request {\n return {\n key: 'add:video:exchange',\n url: '{gateway}/v1/users/me/add-videos',\n data: {\n libraryId,\n objectId\n },\n type: HttpVerbs.POST,\n invalidationKeys: `videos:${objectId}:`\n };\n },\n\n suggestEdit(id: string, data: SuggestEditRequest): Flight.Request {\n return {\n key: 'suggest:an:edit',\n url: `{gateway}/v1/videos/${id}/suggest-edit`,\n data,\n type: HttpVerbs.POST\n };\n },\n\n search(\n query: string,\n indices: SearchIndices[],\n filters: HashObject = {},\n cursor?: string\n ): Flight.Request {\n let key = `search:${query}:${indices}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => filters[filterName]).join(';');\n\n const params = Object.assign({}, {\n index: indices,\n cursor: cursor ?? undefined,\n query,\n ...filters\n });\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search/exchange', params),\n key,\n formatData: (response: SearchResults<SearchResultObjectTypes>) => {\n /**\n * Until playlists and series are regionalised, search will always return every series/playlist that exists\n * even if the current user doesn't have access to the content inside (which will happen for example when playlists/series)\n * contain all UK library content but is being searched for by an AU user.\n *\n * For some search queries, this may result in search showing a bunch of \"empty\" playlists/series, which sucks.\n * This will filter all empty collections out and decrement the `totalResults` to avoid this and make search a better\n * experience.\n *\n * Ideally this will be removed one day when this regionalisation is no longer an issue.\n */\n let totalResults = response.totalResults;\n\n const results = response?.results?.filter(result => {\n if (result._index !== 'series' && result._index !== 'playlist')\n return true;\n\n if (result._index === 'playlist') {\n const playlist = result as SearchResultsObject<Playlist>;\n\n if (playlist.clips?.data?.length ||\n playlist.interactives?.data?.length ||\n playlist.videos?.data?.length)\n return true;\n\n totalResults--;\n return false;\n }\n\n if ((result as SearchResultsObject<Series>).videos?.data?.length === 0) {\n totalResults--;\n return false;\n }\n\n return true;\n }) ?? [];\n\n response.results = results;\n response.totalResults = totalResults;\n\n // The first search result will always have the highest score value.\n // We store it so that we can access it for subsequent results pages\n const resultMaxScore = results[0]?._score;\n\n return {\n ...response,\n results: SharedSearchHelper.mapMaxScoreToSearchResults(results, resultMaxScore)\n };\n }\n };\n }\n};"],"names":["ExchangeRequests","UrlHelper","data","ArrayHelper","folderId","sort","cursor","sortFilter","VideoSortHelper","query","SharedWithStatements","url","PermissionFilterOption","key","k","seriesId","exchangeId","libraryId","objectId","HttpVerbs","id","indices","filters","filterName","params","response","totalResults","results","_a","result","playlist","_b","_d","_c","_f","_e","_h","_g","resultMaxScore","SharedSearchHelper"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{aJ as i,bL as n,j as t,bM as m,B as r}from"./app-BOVAF25L.js";const u="shared.formButtons";function c(s){const e=i(),a=n(e);return t.jsx(m,{variant:s.variant||"primary",type:"submit",disabled:!a,size:s.size,className:s.className?s.className:"",showSpinner:e.isSubmitting,children:s.submitText?t.jsx(t.Fragment,{children:s.submitText}):t.jsx(r,{namespace:u,phrase:s.isNew?"create":"save"})})}export{c as F};
2
- //# sourceMappingURL=CC6EHIeg.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CC6EHIeg.chunk.js","sources":["../../../../libs/shared/src/components/forms/form-buttons/FormButtons.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n"],"names":["namespace","FormButtons","props","formikProps","useFormikContext","canSubmit","useCanSubmitForm","jsx","SpinnerButton","Fragment","Text"],"mappings":"qEAWA,MAAMA,EAAY,qBAUX,SAASC,EAAuCC,EAAsC,CAC3F,MAAMC,EAAcC,EAAA,EAEdC,EAAYC,EAAiBH,CAAW,EAE9C,OACEI,EAAAA,IAACC,EAAA,CACC,QAASN,EAAM,SAAW,UAC1B,KAAK,SACL,SAAU,CAACG,EACX,KAAMH,EAAM,KACZ,UAAWA,EAAM,UAAYA,EAAM,UAAY,GAC/C,YAAaC,EAAY,aAExB,SAAAD,EAAM,WACHK,EAAAA,IAAAE,EAAAA,SAAA,CAAG,SAAAP,EAAM,UAAA,CAAW,EACpBK,MAACG,EAAA,CAAK,UAAAV,EAAsB,OAAQE,EAAM,MAAQ,SAAW,MAAA,CAAQ,CAAA,CAAA,CAG/E"}
@@ -1,2 +0,0 @@
1
- import{a2 as g,u as d,Z as u,cl as l}from"./app-BOVAF25L.js";import{u as c}from"./BqNPVwUS.chunk.js";import{T as f}from"./W5aHBnKW.chunk.js";function w(){var t;const e=g(f.regions());c(e);const{tvRegion:n,isLoadingSettings:s}=d(null),[r,a]=u("tv:region",{region:null},{storage:l.LocalStorage});function i(o){a({region:o.code})}return!((t=e.data)!=null&&t.length)||s?{isLoading:!0,region:null,setRegion:i}:r.region&&e.data.find(o=>o.code.toLowerCase()===r.region.toLowerCase())?{isLoading:!1,region:r.region.toUpperCase(),setRegion:i}:n&&e.data.find(o=>o.code.toLowerCase()===n.toLowerCase())?{isLoading:!1,region:n.toUpperCase(),setRegion:i}:{isLoading:!1,region:e.data[0].code,setRegion:i}}export{w as u};
2
- //# sourceMappingURL=CCj-BH4j.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CCj-BH4j.chunk.js","sources":["../../src/apps/tv/hooks/useSelectedRegion.ts"],"sourcesContent":["import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nexport function useSelectedRegion() {\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n\n useHandleObjectError(regions);\n\n const { tvRegion: customerRegion, isLoadingSettings } = useSettings(null);\n\n const [ regionViewModel, setRegionViewModel ] = useViewModel('tv:region', { region: null }, { storage: StorageType.LocalStorage });\n\n function setRegion(newRegion: TvRegion): void {\n setRegionViewModel({ region: newRegion.code });\n }\n\n if (!regions.data?.length || isLoadingSettings)\n return { isLoading: true, region: null, setRegion };\n\n if (regionViewModel.region && regions.data.find(r => r.code.toLowerCase() === regionViewModel.region.toLowerCase()))\n return { isLoading: false, region: regionViewModel.region.toUpperCase(), setRegion };\n \n if (customerRegion && regions.data.find(r => r.code.toLowerCase() === customerRegion.toLowerCase()))\n return { isLoading: false, region: customerRegion.toUpperCase(), setRegion };\n\n return { isLoading: false, region: regions.data[0].code, setRegion };\n}"],"names":["useSelectedRegion","regions","Flight.useBasicFetch","TvRequests","useHandleObjectError","customerRegion","isLoadingSettings","useSettings","regionViewModel","setRegionViewModel","useViewModel","StorageType","setRegion","newRegion","_a","r"],"mappings":"6IAUO,SAASA,GAAoB,OAClC,MAAMC,EAAUC,EAAiCC,EAAW,SAAS,EAErEC,EAAqBH,CAAO,EAE5B,KAAM,CAAE,SAAUI,EAAgB,kBAAAC,CAAA,EAAsBC,EAAY,IAAI,EAElE,CAAEC,EAAiBC,CAAmB,EAAIC,EAAa,YAAa,CAAE,OAAQ,IAAA,EAAQ,CAAE,QAASC,EAAY,aAAc,EAEjI,SAASC,EAAUC,EAA2B,CAC5CJ,EAAmB,CAAE,OAAQI,EAAU,IAAA,CAAM,CAC/C,CAEA,MAAI,GAACC,EAAAb,EAAQ,OAAR,MAAAa,EAAc,SAAUR,EACpB,CAAE,UAAW,GAAM,OAAQ,KAAM,UAAAM,CAAA,EAEtCJ,EAAgB,QAAUP,EAAQ,KAAK,KAAKc,GAAKA,EAAE,KAAK,YAAA,IAAkBP,EAAgB,OAAO,aAAa,EACzG,CAAE,UAAW,GAAO,OAAQA,EAAgB,OAAO,YAAA,EAAe,UAAAI,CAAA,EAEvEP,GAAkBJ,EAAQ,KAAK,KAAKc,GAAKA,EAAE,KAAK,YAAA,IAAkBV,EAAe,YAAA,CAAa,EACzF,CAAE,UAAW,GAAO,OAAQA,EAAe,YAAA,EAAe,UAAAO,CAAA,EAE5D,CAAE,UAAW,GAAO,OAAQX,EAAQ,KAAK,CAAC,EAAE,KAAM,UAAAW,CAAA,CAC3D"}
@@ -1,2 +0,0 @@
1
- import{ac as D,ad as H,ae as U,A as I,a as v,b as x,j as e,c as W,R as A,az as L,ap as $,a2 as u,aR as B,aS as V,l as G,L as Y,aB as F}from"./app-BOVAF25L.js";import{h as q}from"./ajQ8aa2Z.chunk.js";import{u as z}from"./BqNPVwUS.chunk.js";import{P as C,A as R,a as K}from"./81elAOH1.chunk.js";import{T as Z,a as X}from"./DCeinDae.chunk.js";import{T as J,a as Q}from"./AkCv9mUX.chunk.js";import{T as j}from"./W5aHBnKW.chunk.js";import{u as ee}from"./BZiHvyg-.chunk.js";import{u as ae}from"./CCj-BH4j.chunk.js";import{t as te}from"./CKvmo9qU.chunk.js";import{P as se}from"./De8m6Vtf.chunk.js";import{L as ne}from"./B6J5cgUO.chunk.js";import{T as re}from"./Cg9HJsEZ.chunk.js";import"./gaXZzMcg.chunk.js";import"./B3gC_Ph0.chunk.js";import"./Dg-4fBAS.chunk.js";import"./BKI4hXQ7.chunk.js";import"./BlDVEZsX.chunk.js";import"./2tJmZ2Oi.chunk.js";import"./B-Dp4NBp.chunk.js";const oe="_pillTabSelector_1d8n6_1",ie={pillTabSelector:oe},S=["#","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={actionType:U.Click,entity:H.Url,location:D.MagicTabs};function le(s){const{startsWith:r,region:n}=s;let t=r;t==="0"&&(t="#");const o=S.map(a=>{let d=a;d==="#"&&(d="0");const i={application:x.TV,action:v.Tv.PROGRAMS,args:[n==null?void 0:n.code],params:{startsWith:d}};return{name:a,appLink:i,active:t===a,analyticsData:{name:a,url:I.getHref(i)},analyticsOptions:ce}});return e.jsx("div",{className:"mb-3",children:e.jsx(se,{tabs:o,className:ie.pillTabSelector})})}const de="_dateContainer_b9acj_1",me="_hover_b9acj_4",ge="_channelLogo_b9acj_7",pe="_channelLogoContainer_b9acj_10",ue="_programsContainer_b9acj_13",he="_date_b9acj_1",fe="_thumbnail_b9acj_27",m={dateContainer:de,hover:me,channelLogo:ge,channelLogoContainer:pe,programsContainer:ue,date:he,thumbnail:fe};function je(s){function r(n){const t=W.findWhere(s.channels,{name:n});return t==null?void 0:t.logoUrl}return e.jsx("div",{className:"mb-2",children:s.groupedPrograms.map(([n,t])=>e.jsxs("div",{className:"border-top d-flex pt-3 pb-2",children:[e.jsx("div",{className:`${m.channelLogoContainer} flex-shrink-0 mb-3`,children:e.jsx("img",{src:r(n),alt:n,className:`${m.channelLogo} ms-4`})}),e.jsx("div",{className:"w-100",children:t.map(([o,a])=>e.jsx(ve,{date:o,programs:a,tvPreviewUrls:s.tvPreviewUrls},o))})]},n))})}function ve(s){const[r,n]=A.useState();function t(a){switch(a.programType){case C.Video:return{application:x.TV,action:v.Tv.PREVIEW,args:[a.regionCode,a.id]};case C.Audio:return{application:x.TV,action:v.Tv.RADIO_DOWNLOAD,args:[a.id]}}}function o(a){const d=s.tvPreviewUrls[a.regionCode],i=a.globalId.split("-").join("");return`${d}/thumbnail/${i}.jpg`}return e.jsx("div",{className:`${m.dateContainer} ${r?m.hover:""} py-2 px-3 rounded`,children:e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx("div",{className:`${m.thumbnail} flex-shrink-0 me-3 partial-loading-background rounded`,children:e.jsx(ne,{src:o(r||s.programs[0]),alt:L.format(s.date,"D MMM"),extraClasses:"w-100 rounded"})}),e.jsxs("p",{className:`${m.date} fw-semibold flex-shrink-0 mb-0`,children:[L.format(s.date,"D MMM"),":"]}),e.jsx("div",{className:`${m.programsContainer} d-flex flex-wrap`,children:s.programs.map(a=>e.jsx("div",{onMouseEnter:()=>n(a),onMouseLeave:()=>n(null),children:e.jsx($,{appLink:t(a),className:"text-decoration-none",children:e.jsx(re,{program:a,showEndTime:!0})},a.id)},a.id))})]},s.date)})}const xe="tv.programs",Te=Y.encloseNamespace(xe),be=/^[a-zA-Z]/;function Ve(s){const r=s.startsWith||"A",n=u(F.config()),t=u(j.region(s.region)),o=u(j.regions()),a=u(j.dateRange(s.region)),d=u(t.data&&j.channels(t.data.code)),i=u(t.data&&a.data&&j.programsByLetter(t.data.code,r,a.data.startDate,a.data.endDate)),{setRegion:N}=ae(),{showTvGuide:y}=B(),E=A.useMemo(()=>{var _;if(!((_=i.data)!=null&&_.length))return[];const g={};i.data.forEach(c=>{s.startsWith==="0"&&be.test(c.title)||(g[c.title]||(g[c.title]=[]),g[c.title].push(c))});let h=Object.entries(g);return h=h.sort(([c],[T])=>c<T?-1:1),h.map(([c,T])=>{const w=T.reduce((l,p)=>{const f=p.channelName;l[f]||(l[f]={});const k=te(p.startTime,p.timeZone),b=L.format(k,"YYYY-MM-DD");return l[f][b]||(l[f][b]=[]),l[f][b].push(p),l},{}),O=Object.entries(w).map((([l,p])=>[l,Object.entries(p)]));return[c,O]})},[i.data]);[...S,"0"].includes(r)||q(V.BadRequest),ee(t),z([o,i]),G({title:Te("title")});const M=t.hasCompleted&&o.hasCompleted&&a.hasCompleted&&i.hasCompleted&&n.hasCompleted;return e.jsxs(e.Fragment,{children:[e.jsx(J,{region:t.data}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(Z,{active:"programs",currentRegion:t.data,showTvGuide:y}),e.jsx(Q,{currentRegion:t.data,regions:o.data,appLink:{application:x.TV,action:v.Tv.PROGRAMS,params:{startsWith:r}},onClick:N})]}),e.jsx(X,{dateRange:a.data,region:t.data}),e.jsx(le,{startsWith:r,region:t.data}),M?e.jsx(e.Fragment,{children:e.jsx(R,{children:E.map(([g,h],P)=>e.jsx(R.Header,{title:g,children:e.jsx(je,{groupedPrograms:h,channels:d.data,tvPreviewUrls:n.data.tvPreviewUrls})},P))})}):e.jsx(K,{})]})}export{Ve as TvProgramsView};
2
- //# sourceMappingURL=CFa5wiAZ.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CFa5wiAZ.chunk.js","sources":["../../src/apps/tv/views/tv-programs/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 { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nimport styles from './letter-bar.module.scss';\n\nexport const ALPHABET = [\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];\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\ninterface LettersBarProps {\n startsWith: string;\n region: TvRegion;\n}\n\nexport function LettersBar(props: LettersBarProps): JSX.Element {\n const { startsWith, region } = props;\n\n let localStartsWith = startsWith;\n\n if (localStartsWith === '0')\n localStartsWith = '#';\n\n const tabs = ALPHABET.map(letter => {\n let paramLetter = letter;\n\n if (paramLetter === '#')\n paramLetter = '0';\n\n const appLink = {\n application: AppChannels.TV,\n action: Actions.Tv.PROGRAMS,\n args: [region?.code],\n params: { startsWith: paramLetter }\n };\n\n return {\n name: letter,\n appLink,\n active: localStartsWith === letter,\n analyticsData: {\n name: letter,\n url: Core.AppLinkHelper.getHref(appLink)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n };\n });\n\n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTabSelector}\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 { 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 { ALPHABET, LettersBar } from 'apps/tv/views/tv-programs/components/letters-bar/LettersBar';\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 startsWith={startsWith} region={region.data} />\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","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","LettersBar","props","startsWith","region","localStartsWith","tabs","letter","paramLetter","appLink","AppChannels","Actions","Core.AppLinkHelper","jsx","PillTabSelector","styles","ProgramSelector","getChannelLogo","channel","matchingChannel","ArrayHelper","dates","jsxs","date","programs","GroupedPrograms","hoveredProgram","setHoveredProgram","React","getProgramAppLink","program","ProgramType","getThumbnailUrl","previewUrl","globalId","LazyImage","DateHelper","AppLink","TvProgramTimeBadge","namespace","getPhrase","LanguageService","FIRST_LETTER_REGEX","TvProgramsView","config","Flight.useBasicFetch","ConfigRequests","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 +0,0 @@
1
- import{j as e,ap as N,B as y,aQ as L,ac as $,ad as w,ae as S,a2 as r,aR as A,l as U,L as E,a as o,b as c,a4 as F}from"./app-BOVAF25L.js";import{u as P}from"./BqNPVwUS.chunk.js";import{T as H,a as M}from"./DCeinDae.chunk.js";import{T as V,a as q}from"./AkCv9mUX.chunk.js";import{T as d}from"./W5aHBnKW.chunk.js";import{u as I}from"./BZiHvyg-.chunk.js";import{u as B}from"./CCj-BH4j.chunk.js";import{g as f}from"./BAJmnmDG.chunk.js";import"./ajQ8aa2Z.chunk.js";import"./CKvmo9qU.chunk.js";import"./De8m6Vtf.chunk.js";import"./BKI4hXQ7.chunk.js";import"./BlDVEZsX.chunk.js";import"./2tJmZ2Oi.chunk.js";import"./B-Dp4NBp.chunk.js";import"./B3gC_Ph0.chunk.js";import"./Dg-4fBAS.chunk.js";import"./CJ3oIQlG.chunk.js";const O="_cardContainer_p5jjm_1",z="_image_p5jjm_4",j={cardContainer:O,image:z};function h(a){return e.jsx("div",{className:`${j.cardContainer} px-2 mb-3`,children:e.jsxs(N,{className:`${a.className} border rounded-3 py-3 px-4 d-block text-center`,appLink:a.appLink,children:[e.jsx("div",{className:`${j.image} d-flex align-items-center justify-content-center`,children:e.jsx("img",{className:"mh-100",src:a.logoUrl})}),e.jsx("p",{className:"fw-semibold text-dark text-truncate mb-0",children:a.name})]})})}const D="_cardContainer_1s4mp_1",G="_image_1s4mp_4",v={cardContainer:D,image:G};function Q(){return e.jsx("div",{className:`${v.cardContainer} px-2 mb-3`,children:e.jsxs("div",{className:"partial-loading-background border rounded-3 py-3 px-4",children:[e.jsx("div",{className:`${v.image}`}),e.jsx("p",{className:"mb-0",children:" "})]})})}function T(a){return e.jsx(e.Fragment,{children:e.jsx("div",{className:"row mb-2",children:[...Array(a.cards)].map((n,t)=>e.jsx(Q,{},t))})})}const J="_cardContainer_7wzee_1",K="_image_7wzee_4",C={cardContainer:J,image:K},W="tv.tvRegionSelectMap",X=a=>{const n=f(a.instanceRegion);return!a.regions||!a.currentRegion?e.jsx(T,{cards:5}):a.regions.length<=1?e.jsx(e.Fragment,{}):e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"h4",children:e.jsx(y,{namespace:W,phrase:"regions",options:{country:n.country}})}),e.jsx("div",{className:"row",children:a.regions.map((t,s)=>{if(t.id!==a.currentRegion.id)return e.jsx("div",{className:`${C.cardContainer} px-2 mb-3`,children:e.jsxs(N,{className:"border rounded-3 py-3 px-4 d-block text-center",appLink:{...a.appLink,args:[t.code]},analyticsData:{region:a.currentRegion.code},analyticsOptions:{actionType:S.Click,entity:w.Region,location:$.RegionMap,descriptor:L.RegionSelect},onClick:()=>a.onClick(t),children:[e.jsx("div",{className:`${C.image} d-flex align-items-center justify-content-center`,children:e.jsx("img",{src:`https://tv.clickview.com.au/content/images/${t.code}.png`})}),e.jsx("p",{className:"fw-semibold text-dark mb-0",children:t.stateFull})]})},s)})})]})},Y="tv.channels",R=E.encloseNamespace(Y);function he(a){var u;const n=r(d.region(a.region)),t=r(d.dateRange(a.region)),s=r(d.regions()),l=r(n.data&&d.channels(n.data.code)),p=r(F.currentUser()),m=(u=p.data)==null?void 0:u.instanceRegion,{setRegion:x}=B(),{showTvGuide:b}=A();I(n),P([s,l]),U({title:R("title")});const k=n.hasCompleted&&s.hasCompleted&&t.hasCompleted&&l.hasCompleted&&p.hasCompleted,g=f(m);return e.jsxs(e.Fragment,{children:[e.jsx(V,{region:n.data}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(H,{active:"channels",currentRegion:n.data,showTvGuide:b}),e.jsx(q,{currentRegion:n.data,regions:s.data,appLink:{application:c.TV,action:o.Tv.CHANNELS},onClick:x})]}),e.jsx(M,{dateRange:t.data,region:n.data}),k?e.jsx(e.Fragment,{children:e.jsxs("div",{className:"row mb-2",children:[!!g.requestProgram&&e.jsx(h,{appLink:{application:c.TV,action:o.Tv.REQUEST_PROGRAM,args:[a.region,m]},logoUrl:g.logo,name:R("requestProgram"),className:g.bgColor}),l.data.map((i,_)=>e.jsx(h,{appLink:{application:c.TV,action:o.Tv.CHANNEL,args:[i.region,i.id],params:{region:i.region!==a.region?a.region:null}},logoUrl:i.logoUrl,name:i.displayName},_))]})}):e.jsx(T,{cards:20}),e.jsx(X,{instanceRegion:m,currentRegion:n.data,regions:s.data,appLink:{application:c.TV,action:o.Tv.CHANNELS},onClick:x})]})}export{he as TvChannelsView};
2
- //# sourceMappingURL=CHtfOuwt.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CHtfOuwt.chunk.js","sources":["../../src/apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard.tsx","../../src/apps/tv/views/tv-channels/partial-loading/PartialCardRow.tsx","../../src/apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap.tsx","../../src/apps/tv/views/tv-channels/TvChannelsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './tv-channel-card.module.scss';\n\ninterface TvChannelCardProps {\n appLink: Core.AppLink;\n logoUrl: string;\n name: string;\n className?: string;\n}\n\nexport function TvChannelCard(props: TvChannelCardProps): JSX.Element {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className={`${props.className} border rounded-3 py-3 px-4 d-block text-center`}\n appLink={props.appLink}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n className='mh-100'\n src={props.logoUrl}\n />\n </div>\n <p className='fw-semibold text-dark text-truncate mb-0'>\n {props.name}\n </p>\n </AppLink>\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-card-row.module.scss';\n\nfunction PartialRow() {\n return (\n <div className={`${styles.cardContainer} px-2 mb-3`}>\n <div className='partial-loading-background border rounded-3 py-3 px-4'>\n <div className={`${styles.image}`}></div>\n <p className='mb-0'>&nbsp;</p>\n </div>\n </div>\n );\n}\n\ninterface PartialCardRowProps {\n cards: number;\n}\n\nexport function PartialCardRow(props: PartialCardRowProps) {\n return (\n <>\n <div className='row mb-2'>\n {[...Array(props.cards)].map((_, index) => <PartialRow key={index} />)}\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { EntityType, LocationContext, TvDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { PartialCardRow } from 'apps/tv/views/tv-channels/partial-loading/PartialCardRow';\n\nimport styles from './tv-region-select-map.module.scss';\n\nconst namespace = 'tv.tvRegionSelectMap';\n\ninterface TvRegionSelectMapProps {\n instanceRegion: InstanceRegion;\n currentRegion: TvRegion;\n regions: TvRegion[];\n appLink: Core.AppLink;\n onClick: (region: TvRegion) => void;\n}\n\nconst TvRegionSelectMap = (props: TvRegionSelectMapProps) => {\n const regionInfo = getRegionInfo(props.instanceRegion);\n\n if (!props.regions || !props.currentRegion)\n return <PartialCardRow cards={5} />;\n\n if (props.regions.length <= 1)\n return <></>;\n \n return (\n <>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase='regions'\n options={{ country: regionInfo.country }}\n />\n </h2>\n <div className='row'>\n {props.regions.map((region, index) => {\n if (region.id !== props.currentRegion.id)\n return (\n <div key={index} className={`${styles.cardContainer} px-2 mb-3`}>\n <AppLink\n className='border rounded-3 py-3 px-4 d-block text-center'\n appLink={{\n ...props.appLink,\n args: [region.code]\n }}\n analyticsData={{ region: props.currentRegion.code }}\n analyticsOptions={{\n actionType: UserAction.Click,\n entity: EntityType.Region,\n location: LocationContext.RegionMap,\n descriptor: TvDescriptor.RegionSelect\n }}\n onClick={() => props.onClick(region)}\n >\n <div className={`${styles.image} d-flex align-items-center justify-content-center`}>\n <img\n src={`https://tv.clickview.com.au/content/images/${region.code}.png`}\n />\n </div>\n <p className='fw-semibold text-dark mb-0'>\n {region.stateFull}\n </p>\n </AppLink>\n </div>\n );\n })}\n </div>\n </>\n );\n};\n\nexport default TvRegionSelectMap;","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\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 { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { getRegionInfo } from 'apps/tv/utils/getRegionInfo/getRegionInfo';\nimport { TvChannelCard } from 'apps/tv/views/tv-channels/components/tv-channel-card/TvChannelCard';\nimport TvRegionSelectMap from 'apps/tv/views/tv-channels/components/tv-region-select-map/TvRegionSelectMap';\n\nimport { PartialCardRow } from './partial-loading/PartialCardRow';\n\n\nconst namespace = 'tv.channels';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvChannelsViewProps {\n region: string;\n}\n\nexport function TvChannelsView(props: TvChannelsViewProps): JSX.Element {\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n const channels = Flight.useBasicFetch<TvChannel[]>(\n region.data && TvRequests.channels(region.data.code)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const instanceRegion = currentUser.data?.instanceRegion;\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n const dataLoaded = (\n region.hasCompleted &&\n regions.hasCompleted &&\n dateRange.hasCompleted &&\n channels.hasCompleted &&\n currentUser.hasCompleted\n );\n\n const regionInfo = getRegionInfo(instanceRegion);\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='channels'\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.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n {dataLoaded ? (\n <>\n <div className='row mb-2'>\n {!!regionInfo.requestProgram &&\n <TvChannelCard\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.REQUEST_PROGRAM,\n args: [ props.region, instanceRegion ]\n }}\n logoUrl={regionInfo.logo}\n name={getPhrase('requestProgram')}\n className={regionInfo.bgColor}\n />\n }\n {channels.data.map((channel, index) => {\n return (\n <TvChannelCard\n key={index}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNEL,\n args: [ channel.region, channel.id ],\n params: {\n region: channel.region !== props.region ? props.region : null\n }\n }}\n logoUrl={channel.logoUrl}\n name={channel.displayName}\n />\n );\n })}\n </div>\n </>\n ) : <PartialCardRow cards={20} />}\n \n\n <TvRegionSelectMap\n instanceRegion={instanceRegion}\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </>\n );\n}"],"names":["TvChannelCard","props","styles","jsxs","AppLink","jsx","PartialRow","PartialCardRow","Fragment","_","index","namespace","TvRegionSelectMap","regionInfo","getRegionInfo","Text","region","UserAction","EntityType","LocationContext","TvDescriptor","getPhrase","LanguageService","TvChannelsView","Flight.useBasicFetch","TvRequests","dateRange","regions","channels","currentUser","UserRequests","instanceRegion","_a","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","useHandleRegionError","useHandleObjectError","useSetPageMetadata","dataLoaded","TvSearchBar","TvTabs","TvRegionSelect","AppChannels","Actions","TvInfoAlert","channel"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- var v=(t=>(t.AU="cv-ap-southeast-1",t.NZ="cv-ap-southeast-2",t.UK="cv-eu-west-1",t.US="cv-na-west-1",t))(v||{});export{v as I};
2
- //# sourceMappingURL=CJ3oIQlG.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CJ3oIQlG.chunk.js","sources":["../../../../libs/shared/src/enums/InstanceRegion.ts"],"sourcesContent":["export enum InstanceRegion {\n AU = 'cv-ap-southeast-1',\n NZ = 'cv-ap-southeast-2',\n UK = 'cv-eu-west-1',\n US = 'cv-na-west-1'\n}"],"names":["InstanceRegion"],"mappings":"AAAO,IAAKA,GAAAA,IACVA,EAAA,GAAK,oBACLA,EAAA,GAAK,oBACLA,EAAA,GAAK,eACLA,EAAA,GAAK,eAJKA,IAAAA,GAAA,CAAA,CAAA"}
@@ -1,2 +0,0 @@
1
- import{az as t}from"./app-BOVAF25L.js";const i={"AUS Eastern Standard Time":"Australia/Sydney","W. Australia Standard Time":"Australia/Perth","E. Australia Standard Time":"Australia/Brisbane","Cen. Australia Standard Time":"Australia/Adelaide","New Zealand Standard Time":"Pacific/Auckland","GMT Standard Time":"Europe/London"};function d(a,e){return t.getUtcTimeByTimezone(a,"YYYY-MM-DDTHH:mm:ss",i[e])}export{d as t};
2
- //# sourceMappingURL=CKvmo9qU.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CKvmo9qU.chunk.js","sources":["../../src/apps/tv/utils/toLocalTime.ts"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\n/**\n * A fully fleshed out Windows to IANA mapping library\n * can be absolutely huge, so instead we're just taking the \n * windows timezones that we know our system can have\n * and are mapping them ourselves here.\n */\nconst WINDOWS_TO_IANA: HashObject = {\n 'AUS Eastern Standard Time': 'Australia/Sydney',\n 'W. Australia Standard Time': 'Australia/Perth',\n 'E. Australia Standard Time': 'Australia/Brisbane',\n 'Cen. Australia Standard Time': 'Australia/Adelaide',\n 'New Zealand Standard Time': 'Pacific/Auckland',\n 'GMT Standard Time': 'Europe/London'\n};\n\n/**\n * When we replace moment with dayjs, we're going to have to import the timezone plugin for dayjs\n * https://day.js.org/docs/en/plugin/timezone\n * in order to support time conversion here - Sha\n */\nexport function toLocalTime(time: string | Date, timezone: string): string {\n /**\n * If for whatever reason we hit a timezone that we don't have a mapping for,\n * just use UTC. This is less than ideal, but any mapping library for mapping\n * windows to IANA times is about 1mb in size - Sha\n */\n const localTime = DateHelper.getUtcTimeByTimezone(time, 'YYYY-MM-DDTHH:mm:ss', WINDOWS_TO_IANA[timezone]);\n \n return localTime;\n}"],"names":["WINDOWS_TO_IANA","toLocalTime","time","timezone","DateHelper"],"mappings":"uCASA,MAAMA,EAA8B,CAClC,4BAA6B,mBAC7B,6BAA8B,kBAC9B,6BAA8B,qBAC9B,+BAAgC,qBAChC,4BAA6B,mBAC7B,oBAAqB,eACvB,EAOO,SAASC,EAAYC,EAAqBC,EAA0B,CAQzE,OAFkBC,EAAW,qBAAqBF,EAAM,sBAAuBF,EAAgBG,CAAQ,CAAC,CAG1G"}
@@ -1,2 +0,0 @@
1
- import{a2 as o,j as e,P as x,L as h,al as g,B as d,x as m,a4 as j}from"./app-BOVAF25L.js";import{u as b}from"./RAnkajCC.chunk.js";import{T as n}from"./W5aHBnKW.chunk.js";import{u as C}from"./BZiHvyg-.chunk.js";import"./ajQ8aa2Z.chunk.js";const a="tv.adFreeRequest",u=h.encloseNamespace(a);function f(t){const r=o(j.currentUser()),i=o(n.region(t.region)),l=o(n.program(t.id)),s=o(r.data&&i.data&&n.adFreeCredits(r.data.id,r.data.customerId,i.data.code));C(i,!0),b(l.statusCode);const c=r.hasCompleted&&i.hasCompleted&&l.hasCompleted&&s.hasCompleted,p=s.data.maxAvailableCredit-s.data.userRequests;return e.jsxs(x,{title:u("title"),closePopup:t.closePopup,showLoadingSpinner:!c,children:[c&&e.jsxs("div",{className:"text-center",children:[e.jsx("img",{src:g.General.PAPER_PLANE,className:"img-fluid w-50 mb-3",draggable:!1}),e.jsx("h2",{className:"h4 mb-2",children:e.jsx(d,{namespace:a,phrase:"requestSent"})}),e.jsx("div",{className:"bg-dark rounded-pill text-white d-inline-block fw-semibold border border-dark py-0 px-2 mb-2",children:e.jsx(d,{namespace:a,phrase:"remaining",options:{smartCount:p}})}),e.jsxs("div",{className:"pb-1",children:[e.jsx("p",{className:"mb-2",children:e.jsx(d,{namespace:a,phrase:"requestDaily",options:{dailyLimit:s.data.maxAvailableCredit}})}),e.jsx("p",{className:"mb-3",children:e.jsx(d,{namespace:a,phrase:"requestHours",options:{dailyLimit:s.data.maxAvailableCredit}})})]})]}),e.jsx(m,{children:e.jsx(m.Cancel,{text:u("close"),onClick:t.closePopup,variant:"link"})})]})}export{f as TvAdFreeRequestView};
2
- //# sourceMappingURL=CLGeYsiU.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CLGeYsiU.chunk.js","sources":["../../src/apps/tv/views/tv-ad-free-request/TvAdFreeRequestView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\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 { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.adFreeRequest';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvAdFreeRequestViewProps extends PopupViewProps {\n id: string;\n region: string;\n}\n\nexport function TvAdFreeRequestView(props: TvAdFreeRequestViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n region.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n region.data.code\n )\n );\n\n useHandleRegionError(region, true);\n useHandleDialogError(program.statusCode);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n region.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const remainingRequests = adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!hasLoaded}\n >\n {hasLoaded &&\n <div className='text-center'>\n <img src={ImageUrls.General.PAPER_PLANE} className='img-fluid w-50 mb-3' draggable={false} />\n <h2 className='h4 mb-2'><Text namespace={namespace} phrase='requestSent' /></h2>\n <div className='bg-dark rounded-pill text-white d-inline-block fw-semibold border border-dark py-0 px-2 mb-2'>\n <Text namespace={namespace} phrase='remaining' options={{ smartCount: remainingRequests }} />\n </div>\n <div className='pb-1'>\n <p className='mb-2'>\n <Text namespace={namespace} phrase='requestDaily' options={{ dailyLimit: adFreeCredits.data.maxAvailableCredit }} />\n </p>\n <p className='mb-3'>\n <Text namespace={namespace} phrase='requestHours' options={{ dailyLimit: adFreeCredits.data.maxAvailableCredit }} />\n </p>\n </div>\n </div>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('close')}\n onClick={props.closePopup}\n variant='link'\n />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TvAdFreeRequestView","props","currentUser","Flight.useBasicFetch","UserRequests","region","TvRequests","program","adFreeCredits","useHandleRegionError","useHandleDialogError","hasLoaded","remainingRequests","jsxs","Popup","jsx","ImageUrls","Text","PopupButtons"],"mappings":"8OAoBA,MAAMA,EAAY,mBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAOrD,SAASG,EAAoBC,EAA8C,CAChF,MAAMC,EAAcC,EAAkCC,EAAa,aAAa,EAC1EC,EAASF,EAA+BG,EAAW,OAAOL,EAAM,MAAM,CAAC,EACvEM,EAAUJ,EAAgCG,EAAW,QAAQL,EAAM,EAAE,CAAC,EACtEO,EAAgBL,EACpBD,EAAY,MACZG,EAAO,MACPC,EAAW,cACTJ,EAAY,KAAK,GACjBA,EAAY,KAAK,WACjBG,EAAO,KAAK,IAAA,CACd,EAGFI,EAAqBJ,EAAQ,EAAI,EACjCK,EAAqBH,EAAQ,UAAU,EAEvC,MAAMI,EACJT,EAAY,cACZG,EAAO,cACPE,EAAQ,cACRC,EAAc,aAGVI,EAAoBJ,EAAc,KAAK,mBAAqBA,EAAc,KAAK,aAErF,OACEK,EAAAA,KAACC,EAAA,CACC,MAAOhB,EAAU,OAAO,EACxB,WAAYG,EAAM,WAClB,mBAAoB,CAACU,EAEpB,SAAA,CAAAA,GACCE,EAAAA,KAAC,MAAA,CAAI,UAAU,cACb,SAAA,CAAAE,EAAAA,IAAC,MAAA,CAAI,IAAKC,EAAU,QAAQ,YAAa,UAAU,sBAAsB,UAAW,EAAA,CAAO,EAC3FD,EAAAA,IAAC,MAAG,UAAU,UAAU,eAACE,EAAA,CAAK,UAAApB,EAAsB,OAAO,aAAA,CAAc,CAAA,CAAE,EAC3EkB,EAAAA,IAAC,MAAA,CAAI,UAAU,+FACb,eAACE,EAAA,CAAK,UAAApB,EAAsB,OAAO,YAAY,QAAS,CAAE,WAAYe,CAAA,EAAqB,EAC7F,EACAC,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAE,MAAC,IAAA,CAAE,UAAU,OACX,SAAAA,EAAAA,IAACE,GAAK,UAAApB,EAAsB,OAAO,eAAe,QAAS,CAAE,WAAYW,EAAc,KAAK,kBAAA,EAAsB,EACpH,QACC,IAAA,CAAE,UAAU,OACX,SAAAO,EAAAA,IAACE,GAAK,UAAApB,EAAsB,OAAO,eAAe,QAAS,CAAE,WAAYW,EAAc,KAAK,kBAAA,EAAsB,CAAA,CACpH,CAAA,CAAA,CACF,CAAA,EACF,QAGDU,EAAA,CACC,SAAAH,EAAAA,IAACG,EAAa,OAAb,CACC,KAAMpB,EAAU,OAAO,EACvB,QAASG,EAAM,WACf,QAAQ,MAAA,CAAA,CACV,CACF,CAAA,CAAA,CAAA,CAGN"}
@@ -1,2 +0,0 @@
1
- import{H as c,R as s,a2 as r,aa as i,ab as l,ad as u,ac as f,ae as w,j as p,aB as k}from"./app-BOVAF25L.js";import{D as y}from"./sQODx69W.chunk.js";const m={createDownloadToken(o){return{url:"/api/downloadproxy/api/tokens",key:`download:token:${o}`,data:{objectId:o},type:c.POST,normalize:!1}}};function R(o){const a=s.useRef(null),e=r(k.config()),t=r(m.createDownloadToken(o.id)),n=!!e.data&&!!t.data;return s.useEffect(()=>{if(!n||!a.current)return;const d=y.getVideoDownloadUrl(e.data.downloadProxy,t.data.token);a.current.src=d,i.logUserAction({id:o.id},{actionType:w.Download,location:f.Popup,entity:u.Video,workflowPhase:l.Complete})},[n,a.current]),p.jsx("iframe",{ref:a})}export{R as DownloadVideoView};
2
- //# sourceMappingURL=CW29yRhD.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CW29yRhD.chunk.js","sources":["../../src/shared/flight-requests/DownloadRequests.ts","../../src/shared/views/download-video/DownloadVideoView.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nexport const DownloadRequests = {\n createDownloadToken(videoId: string): Flight.Request {\n return {\n url: '/api/downloadproxy/api/tokens',\n key: `download:token:${videoId}`,\n data: { objectId: videoId },\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { Config } from 'libs/shared/interfaces';\nimport { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\n\nimport { DownloadRequests } from 'shared/flight-requests/DownloadRequests';\n\ninterface DownloadVideoViewProps {\n id: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function DownloadVideoView(props: DownloadVideoViewProps): JSX.Element {\n const ref = React.useRef(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const downloadToken = Flight.useBasicFetch<HashObject>(DownloadRequests.createDownloadToken(props.id));\n\n const dataLoaded = !!config.data && !!downloadToken.data;\n\n React.useEffect(() => {\n if (!dataLoaded || !ref.current)\n return;\n\n const url = DownloadHelper.getVideoDownloadUrl(config.data.downloadProxy, downloadToken.data.token);\n ref.current.src = url;\n\n AnalyticsHelper.logUserAction({\n id: props.id\n }, {\n actionType: UserAction.Download,\n location: LocationContext.Popup,\n entity: EntityType.Video,\n workflowPhase: WorkflowPhase.Complete\n });\n }, [ dataLoaded, ref.current ]);\n\n return (\n <iframe ref={ref} />\n );\n}"],"names":["DownloadRequests","videoId","HttpVerbs","DownloadVideoView","props","ref","React","config","Flight.useBasicFetch","ConfigRequests","downloadToken","dataLoaded","url","DownloadHelper","AnalyticsHelper","UserAction","LocationContext","EntityType","WorkflowPhase","jsx"],"mappings":"oJAGO,MAAMA,EAAmB,CAC9B,oBAAoBC,EAAiC,CACnD,MAAO,CACL,IAAK,gCACL,IAAK,kBAAkBA,CAAO,GAC9B,KAAM,CAAE,SAAUA,CAAA,EAClB,KAAMC,EAAU,KAChB,UAAW,EAAA,CAEf,CACF,ECMO,SAASC,EAAkBC,EAA4C,CAC5E,MAAMC,EAAMC,EAAM,OAAO,IAAI,EAEvBC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAgBF,EAAiCR,EAAiB,oBAAoBI,EAAM,EAAE,CAAC,EAE/FO,EAAa,CAAC,CAACJ,EAAO,MAAQ,CAAC,CAACG,EAAc,KAEpD,OAAAJ,EAAM,UAAU,IAAM,CACpB,GAAI,CAACK,GAAc,CAACN,EAAI,QACtB,OAEF,MAAMO,EAAMC,EAAe,oBAAoBN,EAAO,KAAK,cAAeG,EAAc,KAAK,KAAK,EAClGL,EAAI,QAAQ,IAAMO,EAElBE,EAAgB,cAAc,CAC5B,GAAIV,EAAM,EAAA,EACT,CACD,WAAYW,EAAW,SACvB,SAAUC,EAAgB,MAC1B,OAAQC,EAAW,MACnB,cAAeC,EAAc,QAAA,CAC9B,CACH,EAAG,CAAEP,EAAYN,EAAI,OAAQ,CAAC,EAG5Bc,MAAC,UAAO,IAAAd,EAAU,CAEtB"}
@@ -1,2 +0,0 @@
1
- import{j as r}from"./app-BOVAF25L.js";function m(t){return r.jsx("svg",{...t,children:r.jsx("path",{d:"m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466",fill:"currentColor"})})}const o={numItems:5,minWidth:50,maxWidth:100},e={getPartialLoadingItems(t={}){const a={...o,...t},n=()=>Math.max(Math.floor(Math.random()*a.maxWidth),a.minWidth);return[...Array(a.numItems)].map(()=>({width:`${n()}px`}))}};export{m as C,e as P};
2
- //# sourceMappingURL=CXB1Dc5J.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CXB1Dc5J.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronLeftSvg.tsx","../../../../libs/shared/src/utils/PartialLoadingHelper.ts"],"sourcesContent":["import React from 'react';\n\nexport function ChevronLeftSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466'\n fill='currentColor'\n />\n </svg>\n );\n}\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};"],"names":["ChevronLeftSvg","props","jsx","DEFAULT_PARTIAL_LOADING_OPTIONS","PartialLoadingHelper","options","opts","getRandomFilterWidth"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ,CCXA,MAAMC,EAAyD,CAC7D,SAAU,EACV,SAAU,GACV,SAAU,GACZ,EAYaC,EAAuB,CAClC,uBAAuBC,EAAiC,GAA0B,CAChF,MAAMC,EAAO,CACX,GAAGH,EACH,GAAGE,CAAA,EAGCE,EAAuB,IAAM,KAAK,IAAI,KAAK,MAAM,KAAK,OAAA,EAAWD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAEpG,MAAO,CAAC,GAAG,MAAMA,EAAK,QAAQ,CAAC,EAAE,IAAI,KAAO,CAAE,MAAO,GAAGC,EAAA,CAAsB,MAAO,CACvF,CACF"}
@@ -1,2 +0,0 @@
1
- import{R as i,A as o,a,b as n,j as r}from"./app-BOVAF25L.js";import{u as s}from"./CCj-BH4j.chunk.js";import"./BqNPVwUS.chunk.js";import"./ajQ8aa2Z.chunk.js";import"./W5aHBnKW.chunk.js";function f(){const{region:e,isLoading:t}=s();return i.useEffect(()=>{t||o.trigger({application:n.TV,action:a.Tv.CHANNELS,args:[e]},{replace:!0})},[e]),r.jsx(r.Fragment,{})}export{f as TvHomeView};
2
- //# sourceMappingURL=CY2lx-Xj.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CY2lx-Xj.chunk.js","sources":["../../src/apps/tv/views/tv-home/TvHomeView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TvHomeView(): JSX.Element {\n const { region, isLoading } = useSelectedRegion();\n\n React.useEffect(() => {\n if (isLoading)\n return;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS,\n args: [region]\n }, { replace: true });\n }, [region]);\n\n return <></>;\n}"],"names":["TvHomeView","region","isLoading","useSelectedRegion","React","Core.AppLinkHelper","AppChannels","Actions","jsx","Fragment"],"mappings":"yLAUO,SAASA,GAA0B,CACxC,KAAM,CAAE,OAAAC,EAAQ,UAAAC,CAAA,EAAcC,EAAA,EAE9B,OAAAC,EAAM,UAAU,IAAM,CAChBF,GAGJG,EAAmB,QAAQ,CACzB,YAAaC,EAAY,GACzB,OAAQC,EAAQ,GAAG,SACnB,KAAM,CAACN,CAAM,CAAA,EACZ,CAAE,QAAS,GAAM,CACtB,EAAG,CAACA,CAAM,CAAC,EAEJO,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CACX"}
@@ -1,2 +0,0 @@
1
- import{U as p,a2 as m,R as v,j as o,P as y,aB as U,a4 as h}from"./app-BOVAF25L.js";import{u as C}from"./RAnkajCC.chunk.js";import{C as P,P as w,a as R}from"./BzTPaPHA.chunk.js";import{T as b}from"./W5aHBnKW.chunk.js";import{u as T}from"./BSruPC6q.chunk.js";import{u as j}from"./BZiHvyg-.chunk.js";import"./DzdwUdxf.chunk.js";import"./Cdw__lc8.chunk.js";import"./D8zZvitu.chunk.js";import"./DKoiUoAQ.chunk.js";import"./BlDVEZsX.chunk.js";import"./2tJmZ2Oi.chunk.js";import"./pkzD5BEm.chunk.js";import"./C8QZE6Un.chunk.js";import"./B3fiTt0v.chunk.js";import"./Dg-4fBAS.chunk.js";import"./B3gC_Ph0.chunk.js";import"./BPdCNtlr.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./BKI4hXQ7.chunk.js";import"./B-Dp4NBp.chunk.js";import"./CcijYrFA.chunk.js";import"./CbAEl-Vm.chunk.js";import"./B-DrhpV6.chunk.js";import"./sQODx69W.chunk.js";import"./BBtnCImF.chunk.js";import"./B6J5cgUO.chunk.js";import"./DEimCdra.chunk.js";import"./B70bPb5E.chunk.js";import"./B668bf5B.chunk.js";import"./rZLzwqIY.chunk.js";import"./D8Hat_q8.chunk.js";import"./BO2QSQWF.chunk.js";import"./0eZyUL6x.chunk.js";import"./Cg9HJsEZ.chunk.js";import"./CKvmo9qU.chunk.js";import"./ajQ8aa2Z.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(h.currentUser()),[s,l]=v.useState(),c=T("preview",t.data,s);j(t,!0),C(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=CacmfpJ3.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CacmfpJ3.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 +0,0 @@
1
- import{R as L,r as s,Y as M,F as d}from"./app-BOVAF25L.js";const g=()=>{const e=L.useRef(!0);return L.useEffect(()=>()=>{e.current=!1},[]),e},R=275,y=5,Y={className:"",delay:0,style:null},T={screenX:0,screenY:0};function H(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.add(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=t.style[u]}))}function h(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.remove(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=null}))}function b(e,t){return Math.abs(e.screenX-t.screenX)>y||Math.abs(e.screenY-t.screenY)>y}function X(e=Y){const t=g(),[n,u]=s.useState(e),[l,c]=s.useState(!1),r=s.useRef(null);s.useEffect(()=>{M.isEqual(e,n)||u(e)},[e]);const i=d.throttle(()=>{H(r,n),t.current&&c(!0)},n.delay,{leading:!1}),f=()=>{d.isFunction(i.cancel)&&i.cancel(),h(r,n),t.current&&c(!1)};return s.useLayoutEffect(()=>{const o=r.current;if(o)return o.addEventListener("mouseenter",i),o.addEventListener("mouseleave",f),()=>{o.removeEventListener("mouseenter",i),o.removeEventListener("mouseleave",f)}},[r.current,n]),[r,l]}function w(e){const[t,n]=s.useState(e),u=s.useRef({...T}),l=s.useRef(!1),c=s.useRef(0),r=s.useRef(null),[i,f]=s.useState(!1);s.useEffect(()=>{M.isEqual(e,t)||n(e)},[e]);function o(){c.current&&(window.clearTimeout(c.current),c.current=0)}function O(a,v){c.current||(c.current=window.setTimeout(a,v))}function m(){l.current=!0}function S(a){if(!l.current)return;const v={...u.current};u.current.screenX=a.screenX,u.current.screenY=a.screenY,b(v,a)&&o(),O(()=>{H(r,t),f(!0)},t.delay||R)}function E(){o(),h(r,t),l.current=!1,f(!1)}return s.useLayoutEffect(()=>{if(!r.current)return;const a=d.throttle(S,25,{leading:!1});return r.current.addEventListener("mouseenter",m),r.current.addEventListener("mousemove",a),r.current.addEventListener("mouseleave",E),()=>{r.current&&(r.current.removeEventListener("mouseenter",m),r.current.removeEventListener("mousemove",a),r.current.removeEventListener("mouseleave",E))}},[r.current,t]),[r,i]}export{w as a,X as u};
2
- //# sourceMappingURL=CbAEl-Vm.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CbAEl-Vm.chunk.js","sources":["../../../../libs/shared/src/hooks/UseIsComponentMounted.ts","../../../../libs/shared/src/hooks/UseHover.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsComponentMounted = () => {\n const isMounted = React.useRef(true);\n\n React.useEffect(() => {\n return () => { isMounted.current = false; };\n }, []);\n\n return isMounted;\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { useIsComponentMounted } from 'libs/shared/hooks/UseIsComponentMounted';\n\nconst DEFAULT_HOVER_DELAY = 275;\nconst MOUSE_MOVE_THRESHOLD = 5; // value is in pixels\n\ninterface HoverOptions {\n /**\n * Classes to be applied to the target element on hover. Useful if you want to style the element on hover\n * after a delay (controlled by the `timeout` option below)\n */\n className?: string;\n\n /**\n * Style attribute to be applied to the target element on hover. Should only be used \n */\n style?: HashObject;\n\n /**\n * A delay between when the user actually hovers on the element, and when the hook returns `true` for `isHovering`.\n * This can be used to determine whether a user has actually intended for a hover event on an element to be\n * triggered or not. Defaults to 0.\n */\n delay?: number;\n}\n\nconst defaultOptions: HoverOptions = {\n className: '',\n delay: 0,\n style: null\n};\n\ninterface MousePosition {\n screenX: number;\n screenY: number;\n}\n\nconst defaultHoverState: MousePosition = {\n screenX: 0,\n screenY: 0\n};\n\nfunction setHoveringStyles<T extends HTMLElement>(\n ref: React.MutableRefObject<T>,\n options: HoverOptions\n): void {\n if (!ref.current)\n return;\n\n if (options.className)\n ref.current.classList?.add(options.className);\n\n if (options.style) {\n Object.keys(options.style).forEach((styleName: any) => {\n ref.current.style[styleName] = options.style[styleName];\n });\n }\n}\n\nfunction unSetHoveringStyles<T extends HTMLElement>(\n ref: React.MutableRefObject<T>,\n options: HoverOptions\n): void {\n if (!ref.current)\n return;\n\n if (options.className)\n ref.current.classList?.remove(options.className);\n\n if (options.style) {\n Object.keys(options.style).forEach((styleName: any) => {\n ref.current.style[styleName] = null;\n });\n }\n}\n\nfunction hasMouseMoved(prev: MousePosition, current: MousePosition): boolean {\n return Math.abs(prev.screenX - current.screenX) > MOUSE_MOVE_THRESHOLD ||\n Math.abs(prev.screenY - current.screenY) > MOUSE_MOVE_THRESHOLD;\n}\n\n/**\n * This hook detects hover events on an element.\n * This should only be used where CSS hover events won't suffice for what you are trying to achieve.\n * It will trigger after the delay regardless of pointer movement within the container, if you want\n * it to trigger only after the pointer has stopped moving, consider the `useHoverIntent` hook.\n */\nexport function useHover<T extends HTMLElement>(\n options: HoverOptions = defaultOptions\n): [ React.MutableRefObject<T>, boolean ] {\n const isMounted = useIsComponentMounted();\n const [ cachedOptions, setCachedOptions ] = React.useState(options);\n const [ isHovering, setIsHovering ] = React.useState(false);\n\n const ref = React.useRef<T>(null);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(options, cachedOptions))\n return;\n\n setCachedOptions(options);\n }, [options]);\n\n const triggerHover = FunctionHelper.throttle(() => {\n setHoveringStyles(ref, cachedOptions);\n if (isMounted.current)\n setIsHovering(true);\n }, cachedOptions.delay, { leading: false });\n\n const handleMouseOut = () => {\n if (FunctionHelper.isFunction(triggerHover.cancel))\n triggerHover.cancel();\n\n unSetHoveringStyles(ref, cachedOptions);\n\n if (isMounted.current)\n setIsHovering(false);\n };\n\n React.useLayoutEffect(() => {\n const node = ref.current;\n\n if (node) {\n node.addEventListener('mouseenter', triggerHover);\n node.addEventListener('mouseleave', handleMouseOut);\n\n return () => {\n node.removeEventListener('mouseenter', triggerHover);\n node.removeEventListener('mouseleave', handleMouseOut);\n };\n }\n }, [ ref.current, cachedOptions ]);\n\n return [ ref, isHovering ];\n}\n\n\n/**\n * This hook detects hover events on an element with intent.\n * This should only be used where CSS hover events won't suffice for what you are trying to achieve.\n * It will trigger after the pointer has stopped moving and the delay has elapsed, if you want it to trigger\n * regardless of pointer movement within the container, consider the `useHover` hook`.\n */\nexport function useHoverIntent<T extends HTMLElement>(options: HoverOptions): [ React.MutableRefObject<T>, boolean ] {\n const [ cachedOptions, setCachedOptions ] = React.useState(options);\n\n /**\n * Using refs for frequently updated state in order to not trigger react rendering\n */\n const mousePosition = React.useRef<MousePosition>({ ...defaultHoverState });\n const isInside = React.useRef<boolean>(false);\n const timeout = React.useRef<number>(0);\n\n const ref = React.useRef<T>(null);\n const [ isHovering, setIsHovering ] = React.useState(false);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(options, cachedOptions))\n return;\n\n setCachedOptions(options);\n }, [options]);\n\n function localClearTimeout(): void {\n if (!timeout.current)\n return;\n\n window.clearTimeout(timeout.current);\n timeout.current = 0;\n }\n\n function localSetTimeout(fn: () => void, delay: number): void {\n if (timeout.current)\n return;\n\n timeout.current = window.setTimeout(fn, delay);\n }\n\n function onMouseEnter(): void {\n isInside.current = true;\n }\n\n function onMouseMove(event: MouseEvent): void {\n if (!isInside.current)\n return;\n\n const prev = { ...mousePosition.current };\n mousePosition.current.screenX = event.screenX;\n mousePosition.current.screenY = event.screenY;\n\n if (hasMouseMoved(prev, event))\n localClearTimeout();\n \n localSetTimeout(() => {\n setHoveringStyles(ref, cachedOptions);\n setIsHovering(true);\n }, cachedOptions.delay || DEFAULT_HOVER_DELAY);\n }\n\n function onMouseLeave(): void {\n localClearTimeout();\n unSetHoveringStyles(ref, cachedOptions);\n isInside.current = false;\n setIsHovering(false);\n }\n\n React.useLayoutEffect(() => {\n if (!ref.current)\n return;\n\n const throttledMouseMove = FunctionHelper.throttle(onMouseMove, 25, { leading: false });\n ref.current.addEventListener('mouseenter', onMouseEnter);\n ref.current.addEventListener('mousemove', throttledMouseMove);\n ref.current.addEventListener('mouseleave', onMouseLeave);\n \n return () => {\n if (!ref.current)\n return;\n ref.current.removeEventListener('mouseenter', onMouseEnter);\n ref.current.removeEventListener('mousemove', throttledMouseMove);\n ref.current.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [ ref.current, cachedOptions ]);\n \n return [ ref, isHovering ];\n}"],"names":["useIsComponentMounted","isMounted","React","DEFAULT_HOVER_DELAY","MOUSE_MOVE_THRESHOLD","defaultOptions","defaultHoverState","setHoveringStyles","ref","options","_a","styleName","unSetHoveringStyles","hasMouseMoved","prev","current","useHover","cachedOptions","setCachedOptions","React.useState","isHovering","setIsHovering","React.useRef","React.useEffect","ObjectHelper","triggerHover","FunctionHelper","handleMouseOut","React.useLayoutEffect","node","useHoverIntent","mousePosition","isInside","timeout","localClearTimeout","localSetTimeout","fn","delay","onMouseEnter","onMouseMove","event","onMouseLeave","throttledMouseMove"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{M as s}from"./app-BOVAF25L.js";const p={isType(e,r){var t;return e!=null&&e.typeId?e.typeId===r:((t=e==null?void 0:e.type)==null?void 0:t.toLowerCase())===s[r].toLowerCase()},isResource(e){return p.isType(e,s.Resource)},isClassification(e){return e.type==="Subject"}};export{p as M};
2
- //# sourceMappingURL=CcijYrFA.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CcijYrFA.chunk.js","sources":["../../../../libs/shared/src/utils/MasterTypeHelper.ts"],"sourcesContent":["import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classification, Resource } from 'libs/shared/interfaces';\n\nexport const MasterTypeHelper = {\n isType<T extends BaseObject>(obj: any, typeId: MasterType): obj is T {\n if (obj?.typeId)\n return obj.typeId === typeId;\n\n // Fallback to comparing actual string types\n return obj?.type?.toLowerCase() === MasterType[typeId].toLowerCase();\n },\n\n isResource(obj: any): obj is Resource {\n return MasterTypeHelper.isType<Resource>(obj, MasterType.Resource);\n },\n\n isClassification(obj: any): obj is Classification {\n return obj.type === 'Subject';\n }\n};"],"names":["MasterTypeHelper","obj","typeId","_a","MasterType"],"mappings":"sCAGO,MAAMA,EAAmB,CAC9B,OAA6BC,EAAUC,EAA8B,OACnE,OAAID,GAAA,MAAAA,EAAK,OACAA,EAAI,SAAWC,IAGjBC,EAAAF,GAAA,YAAAA,EAAK,OAAL,YAAAE,EAAW,iBAAkBC,EAAWF,CAAM,EAAE,YAAA,CACzD,EAEA,WAAWD,EAA2B,CACpC,OAAOD,EAAiB,OAAiBC,EAAKG,EAAW,QAAQ,CACnE,EAEA,iBAAiBH,EAAiC,CAChD,OAAOA,EAAI,OAAS,SACtB,CACF"}
@@ -1,2 +0,0 @@
1
- import{aJ as F,j as e,B as h,aK as k,L as j,R as y,w as B,aL as T,az as $,a0 as D,x as V,a1 as I,a2 as x,P as M,aB as U,a4 as Y,A as H,aa as G,ab as O,ac as W,aG as z,ad as J,ae as K}from"./app-BOVAF25L.js";import{S as Q}from"./Dh8xoOSf.chunk.js";import{F as _}from"./CC6EHIeg.chunk.js";import{l as m,a as X,F as f}from"./D7pbmK0q.chunk.js";import{F as Z}from"./DVrUHsk4.chunk.js";import{B as ee}from"./CubAa6F_.chunk.js";import{R as ae}from"./QfCSKVqV.chunk.js";import{V as te}from"./C8QZE6Un.chunk.js";import{u as se}from"./B-DrhpV6.chunk.js";import{u as re}from"./DlrCPMdZ.chunk.js";import{E as ne}from"./CBHt08r_.chunk.js";import{u as oe}from"./fryHFjND.chunk.js";import"./DzdwUdxf.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./tP6Wmg__.chunk.js";const L="shared.flagRemovalRadio",p=j.encloseNamespace(L);function ie(){const t=F();function l(o){t.setFieldValue("suggestion",o)}function a(){return[p("nonEducational"),p("poorQuality"),p("offensive"),p("copyright"),p("ageAppropriate"),p("audio"),p("other")]}return e.jsxs("div",{className:"mb-3",children:[e.jsxs("label",{className:"form-label",children:[e.jsx(h,{namespace:L,phrase:"flagRemovalReasonLabel"}),e.jsx("span",{className:"text-danger",children:"*"})]}),a().map((o,d)=>e.jsx(k.Check,{type:"radio",label:o,name:o,id:`flag-${d}`,onChange:()=>l(o),checked:t.values.suggestion===o,className:"mb-2"},d))]})}const C="shared.suggestEditForm";function le(t){const l=F(),[a,o]=y.useState(),[d,n]=y.useState(!1);function g(r){const u=(l==null?void 0:l.values.property)&&t.metadataValue===r.name;l.setFieldValue("suggestion",u?"":r.name),o(r),n(u)}return e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:e.jsx(h,{namespace:C,phrase:"suggestLabel"})}),e.jsx("div",{"aria-describedby":"suggestEditRatingError",children:e.jsx(ee,{children:t.ratings.map(r=>e.jsx(B,{onClick:()=>g(r),className:`btn ${r.id===(a==null?void 0:a.id)?"btn-dark":"btn-outline-dark"}`,children:r.code},r.id))})}),d&&e.jsx(Z,{name:"suggestEditRating",children:e.jsx(h,{namespace:C,phrase:"ratingError"})})]})}const ce="shared.suggestEditValidation",S=j.encloseNamespace(ce);function de(){return m.object().shape({property:m.string().required(S("metadata")),reason:m.string().when("property",{is:t=>t==="FlagRemoval",then:m.string().notRequired(),otherwise:m.string().required(S("reason"))}),suggestion:m.string().required(S("suggestion")),currentValue:m.string()})}const b={VideoTitle:{name:"video title",property:"name"},Description:{name:"description",property:"description"},Rating:{name:"rating",property:"rating.name"},SeriesTitle:{name:"series title",property:"series.name"},Season:{name:"season number",property:"season.number"},EpisodeNumber:{name:"episode number",property:"episodeNumber"},BroadcastDate:{name:"broadcast date",property:"dateBroadcast"},Channel:{name:"channel",property:"channel.name"},ProductionYear:{name:"production year",property:"productionYear"},Distributors:{name:"distributors",property:"distributors",collection:!0},ProductionCompanies:{name:"production companies",property:"productionCompanies",collection:!0},Directors:{name:"directors",property:"directors",collection:!0},Producers:{name:"producers",property:"producers",collection:!0},FlagRemoval:{name:"flag for removal"},Other:{name:"other"}},N="shared.suggestEditForm",i=j.encloseNamespace(N),ue={property:"",suggestion:"",reason:"",currentValue:""};function me(t){var r,u;const l=(r=t.ratings)==null?void 0:r.filter(s=>s.code),a=F(),[o,d]=y.useState(),n=a==null?void 0:a.values.property;y.useEffect(()=>{const s=g();a.setValues({property:n,reason:"",suggestion:"",currentValue:s||""}),a.setTouched({}),d(s)},[n]);function g(){const s=b[n];if(!s||!s.property)return null;let c=T(t.video,s.property);if(!c||s.collection&&!c.data.length)return i("none");switch(s.collection&&(c=c.data.map(R=>R.name).join(", ")),n){case"BroadcastDate":return $.format(c,"D MMMM YYYY");default:return c}}return e.jsxs(D,{children:[e.jsxs(f,{as:"select",label:i("metadataLabel"),id:"property",name:"property",value:n,className:"text-capitalize",showRequiredStar:!0,children:[e.jsx("option",{value:"",children:i("metadataPlaceholder")}),Object.keys(b).map((s,c)=>e.jsx("option",{value:s,children:b[s].name},c))]}),n&&e.jsxs(e.Fragment,{children:[o&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"fw-semibold mb-0",children:[e.jsx(h,{namespace:N,phrase:"currentValueLabel"})," ",e.jsx("span",{children:(u=b[n])==null?void 0:u.name})]}),e.jsx("p",{children:o})]}),n==="Rating"&&e.jsx(le,{ratings:l,metadataValue:o}),n==="FlagRemoval"&&e.jsx(ie,{}),n!=="Rating"&&n!=="FlagRemoval"&&e.jsx(f,{label:i("suggestLabel"),placeholder:i("suggestPlaceholder"),type:"text",id:"suggestion",name:"suggestion",value:a==null?void 0:a.values.suggestion,showRequiredStar:!0}),n==="FlagRemoval"?e.jsx(f,{label:i("flagRemovalCommentsLabel"),placeholder:i("flagRemovalCommentsPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason}):e.jsx(f,{label:i("reasonLabel"),placeholder:i("reasonPlaceholder"),type:"text",id:"reason",name:"reason",value:a==null?void 0:a.values.reason,showRequiredStar:!0})]}),e.jsxs(V,{children:[e.jsx(V.Cancel,{text:i("cancel"),onClick:t.closePopup,variant:"link"}),e.jsx(_,{variant:"dark",submitText:i("submit")})]})]})}function pe(t){return e.jsx(X,{initialValues:ue,validationSchema:de(),onSubmit:t.onClickSubmit,children:e.jsx(me,{...t})})}const w="exchange.suggestEdit",v=j.encloseNamespace(w);function Pe(t){const l=I(),a=se(),{loading:o,handleGenerateReportError:d}=re(),n=x(U.config()),g=x(Y.currentUser()),r=x(te.video(t.videoId)),u=x(ae.ratings()),{previewContext:s,clearPreviewContext:c}=oe(t.videoId,!1);async function R(P,q){try{await l(ne.suggestEdit(r.data.id,P)),a.success(v("success")),E(),G.logUserAction({id:r.data.id,name:r.data.name},{actionType:K.Submit,entity:J.Video,descriptor:z.SuggestEdit,location:W.Popup,workflowPhase:O.Complete})}catch(A){d(A,v("error"),v("noEmailError"))}finally{q()}}function E(){t.closePopup(),s!=null&&s.appLink&&(Q.preventScrollTop(),H.trigger(s.appLink),c())}return n.hasCompleted&&g.hasCompleted&&r.hasCompleted&&u.hasCompleted?e.jsxs(M,{title:v("title"),closePopup:E,showLoadingSpinner:o,children:[e.jsx("p",{children:e.jsx(h,{namespace:w,phrase:"description"})}),e.jsx(pe,{video:r.data,ratings:u.data,closePopup:E,onClickSubmit:R})]}):e.jsx(e.Fragment,{})}export{Pe as ExchangeSuggestEditView};
2
- //# sourceMappingURL=CdvQhnVd.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CdvQhnVd.chunk.js","sources":["../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval.tsx","../../../../libs/shared/src/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector.tsx","../../../../libs/shared/src/components/suggest-edit-form/validation/SuggestEditValidation.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditMetadataTypes.ts","../../../../libs/shared/src/components/suggest-edit-form/SuggestEditForm.tsx","../../src/apps/exchange/views/exchange-suggest-edit/ExchangeSuggestEditView.tsx"],"sourcesContent":["import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.flagRemovalRadio';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditFlagRemoval() {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n function onSelectOption(option: string) {\n formikProps.setFieldValue('suggestion', option);\n }\n\n function flagRemovalRadioOptions() {\n return [\n getPhrase('nonEducational'),\n getPhrase('poorQuality'),\n getPhrase('offensive'),\n getPhrase('copyright'),\n getPhrase('ageAppropriate'),\n getPhrase('audio'),\n getPhrase('other')\n ];\n }\n\n return (\n <div className='mb-3'>\n <label className='form-label'>\n <Text namespace={namespace} phrase='flagRemovalReasonLabel' />\n <span className='text-danger'>*</span>\n </label>\n {flagRemovalRadioOptions().map((option, index) => (\n <Form.Check\n type='radio'\n key={index}\n label={option}\n name={option}\n id={`flag-${index}`}\n onChange={() => onSelectOption(option)}\n checked={formikProps.values.suggestion === option}\n className='mb-2'\n />\n ))}\n </div>\n );\n}","import React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { Rating } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nconst namespace = 'shared.suggestEditForm';\n\ninterface SuggestEditRatingSelectorProps {\n ratings: Rating[];\n metadataValue: string\n}\n\nexport function SuggestEditRatingSelector(props: SuggestEditRatingSelectorProps) {\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ selectedRating, setSelectedRating ] = React.useState<Rating>();\n const [ isRatingInvalid, setIsRatingInvalid ] = React.useState<boolean>(false);\n \n function onRatingSelect(rating: Rating) {\n const isRatingInvalid = formikProps?.values.property && props.metadataValue === rating.name;\n formikProps.setFieldValue('suggestion', !isRatingInvalid ? rating.name : '');\n setSelectedRating(rating);\n setIsRatingInvalid(isRatingInvalid);\n }\n\n return (\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='suggestLabel' /></label>\n <div aria-describedby='suggestEditRatingError'>\n <ButtonGroup>\n {props.ratings.map(rating => (\n <DivButton key={rating.id} onClick={() => onRatingSelect(rating)} className={`btn ${rating.id === selectedRating?.id ? 'btn-dark' : 'btn-outline-dark'}`}>\n {rating.code}\n </DivButton>\n ))}\n </ButtonGroup>\n </div>\n {isRatingInvalid && <FormFeedback name='suggestEditRating'><Text namespace={namespace} phrase='ratingError' /></FormFeedback>}\n </div>\n );\n}","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.suggestEditValidation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SuggestEditValidation() {\n return object().shape({\n property: string().required((getPhrase('metadata'))),\n reason: string().when('property', {\n is: propertyValue => propertyValue === 'FlagRemoval',\n then: string().notRequired(),\n otherwise: string().required(getPhrase('reason'))\n }),\n suggestion: string().required(getPhrase('suggestion')),\n currentValue: string()\n });\n}","export enum MetadataType {\n VideoTitle = 'video title',\n Description = 'description',\n Rating = 'rating',\n SeriesTitle = 'series title',\n Season = 'season number',\n EpisodeNumber = 'episode number',\n BroadcastDate = 'broadcast date',\n Channel = 'channel',\n ProductionYear = 'production year',\n Distributors = 'distributors',\n ProductionCompanies = 'production companies',\n Directors = 'directors',\n Producers = 'producers',\n FlagRemoval = 'flag for removal',\n Other = 'other'\n}\n\nexport type MetadataTypeKey = keyof typeof MetadataType;\n\nexport type MetadataTypeMap = {\n [K in MetadataTypeKey]: {\n name: MetadataType;\n property?: string;\n collection?: boolean;\n };\n};\n\nexport const MetadataTypes: MetadataTypeMap = {\n VideoTitle: {\n name: MetadataType.VideoTitle,\n property: 'name'\n },\n Description: {\n name: MetadataType.Description,\n property: 'description'\n },\n Rating: {\n name: MetadataType.Rating,\n property: 'rating.name'\n },\n SeriesTitle: {\n name: MetadataType.SeriesTitle,\n property: 'series.name'\n },\n Season: {\n name: MetadataType.Season,\n property: 'season.number'\n },\n EpisodeNumber: {\n name: MetadataType.EpisodeNumber,\n property: 'episodeNumber'\n },\n BroadcastDate: {\n name: MetadataType.BroadcastDate,\n property: 'dateBroadcast'\n },\n Channel: {\n name: MetadataType.Channel,\n property: 'channel.name'\n },\n ProductionYear: {\n name: MetadataType.ProductionYear,\n property: 'productionYear'\n },\n Distributors: {\n name: MetadataType.Distributors,\n property: 'distributors',\n collection: true\n },\n ProductionCompanies: {\n name: MetadataType.ProductionCompanies,\n property: 'productionCompanies',\n collection: true\n },\n Directors: {\n name: MetadataType.Directors,\n property: 'directors',\n collection: true\n },\n Producers: {\n name: MetadataType.Producers,\n property: 'producers',\n collection: true\n },\n FlagRemoval: {\n name: MetadataType.FlagRemoval\n },\n Other: {\n name: MetadataType.Other\n }\n};","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\nimport get from 'lodash/get';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SuggestEditFlagRemoval } from 'libs/shared/components/suggest-edit-form/suggest-edit-flag-removal/SuggestEditFlagRemoval';\nimport { SuggestEditRatingSelector } from 'libs/shared/components/suggest-edit-form/suggest-edit-rating-selector/suggest-edit-rating-selector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BaseObject, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { SuggestEditValidation } from './validation/SuggestEditValidation';\nimport { MetadataTypeKey, MetadataTypes } from './SuggestEditMetadataTypes';\n\nconst namespace = 'shared.suggestEditForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst INITIAL_VALUES = {\n property: '',\n suggestion: '',\n reason: '',\n currentValue: ''\n};\n\ninterface SuggestEditFormProps {\n video: Video;\n ratings: Rating[];\n onClickSubmit: (\n data: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) => void;\n closePopup: () => void\n}\n\nfunction SuggestEditForm(props: SuggestEditFormProps) {\n const ratings = props.ratings?.filter(rating => rating.code);\n const formikProps = useFormikContext<SuggestEditModel>();\n\n const [ metadataValue, setMetadataValue ] = React.useState<string>();\n\n const metadata = formikProps?.values.property as MetadataTypeKey;\n\n React.useEffect(() => {\n const metadataValue = getMetadataValue();\n formikProps.setValues({\n property: metadata,\n reason: '',\n suggestion: '',\n currentValue: metadataValue || ''\n });\n formikProps.setTouched({});\n setMetadataValue(metadataValue);\n }, [metadata]);\n\n function getMetadataValue(): string {\n const metadataType = MetadataTypes[metadata];\n\n if (!metadataType || !metadataType.property)\n return null;\n\n let currentValue = get(props.video, metadataType.property);\n\n if (!currentValue || (metadataType.collection && !currentValue.data.length))\n return getPhrase('none');\n\n if (metadataType.collection) {\n currentValue = (currentValue.data as BaseObject[]).map(obj => obj.name).join(', ');\n }\n\n switch (metadata) {\n case 'BroadcastDate':\n return DateHelper.format(currentValue, 'D MMMM YYYY');\n default:\n return currentValue;\n }\n }\n\n return (\n <Form>\n <FormField\n as='select'\n label={getPhrase('metadataLabel')}\n id='property'\n name='property'\n value={metadata}\n className='text-capitalize'\n showRequiredStar\n >\n <option value=''>{getPhrase('metadataPlaceholder')}</option>\n {Object.keys(MetadataTypes).map((metadata, index) => (\n <option key={index} value={metadata}>\n {MetadataTypes[metadata as keyof typeof MetadataTypes].name}\n </option>\n ))}\n </FormField>\n\n {metadata &&\n <>\n {metadataValue && (\n <>\n <p className='fw-semibold mb-0'>\n <Text namespace={namespace} phrase='currentValueLabel' /> <span>{MetadataTypes[metadata as MetadataTypeKey]?.name}</span>\n </p>\n <p>{metadataValue}</p>\n </>\n )}\n\n {metadata === 'Rating' && <SuggestEditRatingSelector ratings={ratings} metadataValue={metadataValue} />}\n {metadata === 'FlagRemoval' && <SuggestEditFlagRemoval />}\n {metadata !== 'Rating' && metadata !== 'FlagRemoval' &&\n <FormField\n label={getPhrase('suggestLabel')}\n placeholder={getPhrase('suggestPlaceholder')}\n type='text'\n id='suggestion'\n name='suggestion'\n value={formikProps?.values.suggestion}\n showRequiredStar\n />\n }\n\n {\n metadata === 'FlagRemoval' ? (\n <FormField\n label={getPhrase('flagRemovalCommentsLabel')}\n placeholder={getPhrase('flagRemovalCommentsPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n />\n ) : (\n <FormField\n label={getPhrase('reasonLabel')}\n placeholder={getPhrase('reasonPlaceholder')}\n type='text'\n id='reason'\n name='reason'\n value={formikProps?.values.reason}\n showRequiredStar\n />\n )\n }\n </>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <FormButtons variant='dark' submitText={getPhrase('submit')} />\n </PopupButtons>\n </Form>\n );\n}\n\nexport function SuggestEditFormWrapper(props: SuggestEditFormProps) {\n return (\n <FormWrapper<SuggestEditModel>\n initialValues={INITIAL_VALUES}\n validationSchema={SuggestEditValidation()}\n onSubmit={props.onClickSubmit}\n >\n <SuggestEditForm {...props} />\n </FormWrapper>\n );\n}","\nimport 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, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SuggestEditFormWrapper } from 'libs/shared/components/suggest-edit-form/SuggestEditForm';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { Config, CurrentUser, PopupViewProps, Rating, Video } from 'libs/shared/interfaces';\nimport { SuggestEditModel } from 'libs/shared/interfaces/models/SuggestEdit';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\nconst namespace = 'exchange.suggestEdit';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSuggestEditProps extends PopupViewProps {\n videoId: string;\n}\n\nexport function ExchangeSuggestEditView(props: ExchangeSuggestEditProps) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.videoId, false);\n\n async function onClickSubmit(\n values: SuggestEditModel,\n onDone: (options?: FormSubmissionOptions<SuggestEditModel>) => void\n ) {\n try {\n await fetchAsync(ExchangeRequests.suggestEdit(video.data.id, values));\n alerts.success(getPhrase('success'));\n closePopup();\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.SuggestEdit,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (xhr) {\n handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError'));\n } finally {\n onDone();\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 const hasLoaded = (\n config.hasCompleted &&\n currentUser.hasCompleted &&\n video.hasCompleted &&\n ratings.hasCompleted\n );\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={loading}\n >\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <SuggestEditFormWrapper\n video={video.data}\n ratings={ratings.data}\n closePopup={closePopup}\n onClickSubmit={onClickSubmit}\n />\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","SuggestEditFlagRemoval","formikProps","useFormikContext","onSelectOption","option","flagRemovalRadioOptions","jsxs","jsx","Text","index","Form","SuggestEditRatingSelector","props","selectedRating","setSelectedRating","React","isRatingInvalid","setIsRatingInvalid","onRatingSelect","rating","ButtonGroup","DivButton","FormFeedback","SuggestEditValidation","object","string","propertyValue","MetadataTypes","INITIAL_VALUES","SuggestEditForm","ratings","_a","metadataValue","setMetadataValue","metadata","getMetadataValue","metadataType","currentValue","get","obj","DateHelper","FormField","Fragment","_b","PopupButtons","FormButtons","SuggestEditFormWrapper","FormWrapper","ExchangeSuggestEditView","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","loading","handleGenerateReportError","useVerifiedEmailRequiredErrorHandler","config","Flight.useBasicFetch","ConfigRequests","currentUser","UserRequests","video","VideoRequests","RatingRequests","previewContext","clearPreviewContext","usePreviewContext","onClickSubmit","values","onDone","ExchangeRequests","closePopup","AnalyticsHelper","UserAction","EntityType","VideoActionDescriptor","LocationContext","WorkflowPhase","xhr","ScrollHelper","Core.AppLinkHelper","Popup"],"mappings":"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"}