@clickview/exchange 0.49.0 → 0.49.1-dev.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/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/bundles.json +2 -2
  61. package/dist/css/B57G3PZD.chunk.css +1 -0
  62. package/dist/css/BBV1d-ZI.chunk.css +1 -0
  63. package/dist/css/BDOTXlob.chunk.css +1 -0
  64. package/dist/css/BIeUeS4h.chunk.css +1 -0
  65. package/dist/css/BPdg7JW4.chunk.css +1 -0
  66. package/dist/css/BiRz4h1c.chunk.css +1 -0
  67. package/dist/css/Bt3pBBLn.chunk.css +1 -0
  68. package/dist/css/Bz8F9buU.chunk.css +1 -0
  69. package/dist/css/C2R4QydJ.chunk.css +1 -0
  70. package/dist/css/C7XoyEPr.chunk.css +1 -0
  71. package/dist/css/CAdv9Saa.chunk.css +1 -0
  72. package/dist/css/CC5F5C8O.chunk.css +1 -0
  73. package/dist/css/CCsCPLDG.chunk.css +1 -0
  74. package/dist/css/CD1qrI1T.chunk.css +1 -0
  75. package/dist/css/CDiJwtuL.chunk.css +1 -0
  76. package/dist/css/CM-cscAF.chunk.css +1 -0
  77. package/dist/css/CY0yvCW4.chunk.css +1 -0
  78. package/dist/css/Ci6HCTb5.chunk.css +1 -0
  79. package/dist/css/CifDVjr-.chunk.css +1 -0
  80. package/dist/css/CphXVlxY.chunk.css +1 -0
  81. package/dist/css/CrSv-tYo.chunk.css +1 -0
  82. package/dist/css/DD13UQOa.chunk.css +1 -0
  83. package/dist/css/DGyCCqtO.chunk.css +1 -0
  84. package/dist/css/DI4l_5OJ.chunk.css +1 -0
  85. package/dist/css/DL_jCfRl.chunk.css +1 -0
  86. package/dist/css/DRlDmMhN.chunk.css +1 -0
  87. package/dist/css/Dkh6sNpi.chunk.css +1 -0
  88. package/dist/css/DlOtoSz0.chunk.css +1 -0
  89. package/dist/css/DnhNnDZN.chunk.css +1 -0
  90. package/dist/css/EnQ3abug.chunk.css +1 -0
  91. package/dist/css/O777zV0C.chunk.css +1 -0
  92. package/dist/css/fs02hBfZ.chunk.css +1 -0
  93. package/dist/css/jbMisi9r.chunk.css +1 -0
  94. package/dist/css/w4TLT4f5.chunk.css +1 -0
  95. package/dist/en.json +1 -0
  96. package/dist/scripts/-OkQC3ld.chunk.js +2 -0
  97. package/dist/scripts/-OkQC3ld.chunk.js.map +1 -0
  98. package/dist/scripts/1--zOUke.chunk.js +2 -0
  99. package/dist/scripts/1--zOUke.chunk.js.map +1 -0
  100. package/dist/scripts/B1pmJy9w.chunk.js +2 -0
  101. package/dist/scripts/B1pmJy9w.chunk.js.map +1 -0
  102. package/dist/scripts/B1sQeAw1.chunk.js +2 -0
  103. package/dist/scripts/B1sQeAw1.chunk.js.map +1 -0
  104. package/dist/scripts/B2HQh_vn.chunk.js +2 -0
  105. package/dist/scripts/B2HQh_vn.chunk.js.map +1 -0
  106. package/dist/scripts/B55exgI3.chunk.js +2 -0
  107. package/dist/scripts/B55exgI3.chunk.js.map +1 -0
  108. package/dist/scripts/B668bf5B.chunk.js +2 -0
  109. package/dist/scripts/B668bf5B.chunk.js.map +1 -0
  110. package/dist/scripts/B6QdLVkd.chunk.js +2 -0
  111. package/dist/scripts/B6QdLVkd.chunk.js.map +1 -0
  112. package/dist/scripts/B9JNzh8J.chunk.js +2 -0
  113. package/dist/scripts/B9JNzh8J.chunk.js.map +1 -0
  114. package/dist/scripts/BAFefpdu.chunk.js +2 -0
  115. package/dist/scripts/BAFefpdu.chunk.js.map +1 -0
  116. package/dist/scripts/BEM-fEAF.chunk.js +2 -0
  117. package/dist/scripts/BEM-fEAF.chunk.js.map +1 -0
  118. package/dist/scripts/BGyYkDnT.chunk.js +2 -0
  119. package/dist/scripts/BGyYkDnT.chunk.js.map +1 -0
  120. package/dist/scripts/BIdpr1Qt.chunk.js +2 -0
  121. package/dist/scripts/BIdpr1Qt.chunk.js.map +1 -0
  122. package/dist/scripts/BIgz-kuD.chunk.js +5 -0
  123. package/dist/scripts/BIgz-kuD.chunk.js.map +1 -0
  124. package/dist/scripts/BKFoap_e.chunk.js +2 -0
  125. package/dist/scripts/BKFoap_e.chunk.js.map +1 -0
  126. package/dist/scripts/BPgR5vGs.chunk.js +2 -0
  127. package/dist/scripts/BPgR5vGs.chunk.js.map +1 -0
  128. package/dist/scripts/BQso9AQl.chunk.js +2 -0
  129. package/dist/scripts/BQso9AQl.chunk.js.map +1 -0
  130. package/dist/scripts/BSZIQf6b.chunk.js +2 -0
  131. package/dist/scripts/BSZIQf6b.chunk.js.map +1 -0
  132. package/dist/scripts/BVnGsVC0.chunk.js +2 -0
  133. package/dist/scripts/BVnGsVC0.chunk.js.map +1 -0
  134. package/dist/scripts/BabLz50F.chunk.js +2 -0
  135. package/dist/scripts/BabLz50F.chunk.js.map +1 -0
  136. package/dist/scripts/BeAXnr0Y.chunk.js +2 -0
  137. package/dist/scripts/BeAXnr0Y.chunk.js.map +1 -0
  138. package/dist/scripts/Bei6waJp.chunk.js +2 -0
  139. package/dist/scripts/Bei6waJp.chunk.js.map +1 -0
  140. package/dist/scripts/BesZ5ef9.chunk.js +2 -0
  141. package/dist/scripts/BesZ5ef9.chunk.js.map +1 -0
  142. package/dist/scripts/Bfzs9Sl1.chunk.js +2 -0
  143. package/dist/scripts/Bfzs9Sl1.chunk.js.map +1 -0
  144. package/dist/scripts/BlDVEZsX.chunk.js +2 -0
  145. package/dist/scripts/BlDVEZsX.chunk.js.map +1 -0
  146. package/dist/scripts/BlhmwaPM.chunk.js +3 -0
  147. package/dist/scripts/BlhmwaPM.chunk.js.map +1 -0
  148. package/dist/scripts/BnG9RTEw.chunk.js +2 -0
  149. package/dist/scripts/BnG9RTEw.chunk.js.map +1 -0
  150. package/dist/scripts/BoOaRkjh.chunk.js +2 -0
  151. package/dist/scripts/BoOaRkjh.chunk.js.map +1 -0
  152. package/dist/scripts/BtB8UFKw.chunk.js +2 -0
  153. package/dist/scripts/BtB8UFKw.chunk.js.map +1 -0
  154. package/dist/scripts/BvBjT_FP.chunk.js +2 -0
  155. package/dist/scripts/BvBjT_FP.chunk.js.map +1 -0
  156. package/dist/scripts/Bwi6Bruj.chunk.js +2 -0
  157. package/dist/scripts/Bwi6Bruj.chunk.js.map +1 -0
  158. package/dist/scripts/C-Aq4Xkl.chunk.js +2 -0
  159. package/dist/scripts/C-Aq4Xkl.chunk.js.map +1 -0
  160. package/dist/scripts/C6DEEFsr.chunk.js +2 -0
  161. package/dist/scripts/C6DEEFsr.chunk.js.map +1 -0
  162. package/dist/scripts/C7bOWWn5.chunk.js +2 -0
  163. package/dist/scripts/C7bOWWn5.chunk.js.map +1 -0
  164. package/dist/scripts/C7hyn4la.chunk.js +2 -0
  165. package/dist/scripts/C7hyn4la.chunk.js.map +1 -0
  166. package/dist/scripts/C85NI7Ud.chunk.js +2 -0
  167. package/dist/scripts/C85NI7Ud.chunk.js.map +1 -0
  168. package/dist/scripts/C956LU-_.chunk.js +2 -0
  169. package/dist/scripts/C956LU-_.chunk.js.map +1 -0
  170. package/dist/scripts/CAEqKa2O.chunk.js +2 -0
  171. package/dist/scripts/CAEqKa2O.chunk.js.map +1 -0
  172. package/dist/scripts/CDQmFQKb.chunk.js +8 -0
  173. package/dist/scripts/CDQmFQKb.chunk.js.map +1 -0
  174. package/dist/scripts/CEm6gEC5.chunk.js +2 -0
  175. package/dist/scripts/CEm6gEC5.chunk.js.map +1 -0
  176. package/dist/scripts/CG3lXZKd.chunk.js +2 -0
  177. package/dist/scripts/CG3lXZKd.chunk.js.map +1 -0
  178. package/dist/scripts/CIC9gqwS.chunk.js +2 -0
  179. package/dist/scripts/CIC9gqwS.chunk.js.map +1 -0
  180. package/dist/scripts/CJ3oIQlG.chunk.js +2 -0
  181. package/dist/scripts/CJ3oIQlG.chunk.js.map +1 -0
  182. package/dist/scripts/CJyM8Xpz.chunk.js +2 -0
  183. package/dist/scripts/CJyM8Xpz.chunk.js.map +1 -0
  184. package/dist/scripts/CKEc1C50.chunk.js +2 -0
  185. package/dist/scripts/CKEc1C50.chunk.js.map +1 -0
  186. package/dist/scripts/CNNFzIQb.chunk.js +2 -0
  187. package/dist/scripts/CNNFzIQb.chunk.js.map +1 -0
  188. package/dist/scripts/COTdau6A.chunk.js +2 -0
  189. package/dist/scripts/COTdau6A.chunk.js.map +1 -0
  190. package/dist/scripts/CRCiqh7u.chunk.js +2 -0
  191. package/dist/scripts/CRCiqh7u.chunk.js.map +1 -0
  192. package/dist/scripts/CRTvC3qC.chunk.js +2 -0
  193. package/dist/scripts/CRTvC3qC.chunk.js.map +1 -0
  194. package/dist/scripts/CSBkyxHZ.chunk.js +2 -0
  195. package/dist/scripts/CSBkyxHZ.chunk.js.map +1 -0
  196. package/dist/scripts/CUaampu9.chunk.js +2 -0
  197. package/dist/scripts/CUaampu9.chunk.js.map +1 -0
  198. package/dist/scripts/CW0X_Az5.chunk.js +2 -0
  199. package/dist/scripts/CW0X_Az5.chunk.js.map +1 -0
  200. package/dist/scripts/CbaWlt2e.chunk.js +2 -0
  201. package/dist/scripts/CbaWlt2e.chunk.js.map +1 -0
  202. package/dist/scripts/CeKBw2vH.chunk.js +2 -0
  203. package/dist/scripts/CeKBw2vH.chunk.js.map +1 -0
  204. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  205. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  206. package/dist/scripts/CnoR_GVG.chunk.js +2 -0
  207. package/dist/scripts/CnoR_GVG.chunk.js.map +1 -0
  208. package/dist/scripts/CogvVbpP.chunk.js +2 -0
  209. package/dist/scripts/CogvVbpP.chunk.js.map +1 -0
  210. package/dist/scripts/Cty2AOK7.chunk.js +2 -0
  211. package/dist/scripts/Cty2AOK7.chunk.js.map +1 -0
  212. package/dist/scripts/D-VkpSW0.chunk.js +50 -0
  213. package/dist/scripts/D-VkpSW0.chunk.js.map +1 -0
  214. package/dist/scripts/D2WOxvRg.chunk.js +2 -0
  215. package/dist/scripts/D2WOxvRg.chunk.js.map +1 -0
  216. package/dist/scripts/D7wAo_p-.chunk.js +2 -0
  217. package/dist/scripts/D7wAo_p-.chunk.js.map +1 -0
  218. package/dist/scripts/D8qEOAnP.chunk.js +2 -0
  219. package/dist/scripts/D8qEOAnP.chunk.js.map +1 -0
  220. package/dist/scripts/D97YVAoS.chunk.js +2 -0
  221. package/dist/scripts/D97YVAoS.chunk.js.map +1 -0
  222. package/dist/scripts/DBhZPu6x.chunk.js +2 -0
  223. package/dist/scripts/DBhZPu6x.chunk.js.map +1 -0
  224. package/dist/scripts/DHE-sUO-.chunk.js +2 -0
  225. package/dist/scripts/DHE-sUO-.chunk.js.map +1 -0
  226. package/dist/scripts/DInJ42HN.chunk.js +2 -0
  227. package/dist/scripts/DInJ42HN.chunk.js.map +1 -0
  228. package/dist/scripts/DLXENX3X.chunk.js +2 -0
  229. package/dist/scripts/DLXENX3X.chunk.js.map +1 -0
  230. package/dist/scripts/DLlygSGB.chunk.js +6 -0
  231. package/dist/scripts/DLlygSGB.chunk.js.map +1 -0
  232. package/dist/scripts/DMora6f7.chunk.js +2 -0
  233. package/dist/scripts/DMora6f7.chunk.js.map +1 -0
  234. package/dist/scripts/DOatLOGk.chunk.js +2 -0
  235. package/dist/scripts/DOatLOGk.chunk.js.map +1 -0
  236. package/dist/scripts/DTQRX2Z5.chunk.js +15 -0
  237. package/dist/scripts/DTQRX2Z5.chunk.js.map +1 -0
  238. package/dist/scripts/DV2PfQB1.chunk.js +2 -0
  239. package/dist/scripts/DV2PfQB1.chunk.js.map +1 -0
  240. package/dist/scripts/Di6TX7bW.chunk.js +2 -0
  241. package/dist/scripts/Di6TX7bW.chunk.js.map +1 -0
  242. package/dist/scripts/DiXTMx9M.chunk.js +2 -0
  243. package/dist/scripts/DiXTMx9M.chunk.js.map +1 -0
  244. package/dist/scripts/Do3_vYj7.chunk.js +2 -0
  245. package/dist/scripts/Do3_vYj7.chunk.js.map +1 -0
  246. package/dist/scripts/DoUAuskL.chunk.js +2 -0
  247. package/dist/scripts/DoUAuskL.chunk.js.map +1 -0
  248. package/dist/scripts/Dotf-cjL.chunk.js +2 -0
  249. package/dist/scripts/Dotf-cjL.chunk.js.map +1 -0
  250. package/dist/scripts/Dq4chRUI.chunk.js +2 -0
  251. package/dist/scripts/Dq4chRUI.chunk.js.map +1 -0
  252. package/dist/scripts/Dr_uQct3.chunk.js +2 -0
  253. package/dist/scripts/Dr_uQct3.chunk.js.map +1 -0
  254. package/dist/scripts/DwC7tXo7.chunk.js +2 -0
  255. package/dist/scripts/DwC7tXo7.chunk.js.map +1 -0
  256. package/dist/scripts/DzLRlab-.chunk.js +2 -0
  257. package/dist/scripts/DzLRlab-.chunk.js.map +1 -0
  258. package/dist/scripts/I2TdsaDo.chunk.js +2 -0
  259. package/dist/scripts/I2TdsaDo.chunk.js.map +1 -0
  260. package/dist/scripts/Kj832An8.chunk.js +2 -0
  261. package/dist/scripts/Kj832An8.chunk.js.map +1 -0
  262. package/dist/scripts/NFCjXwMo.chunk.js +2 -0
  263. package/dist/scripts/NFCjXwMo.chunk.js.map +1 -0
  264. package/dist/scripts/QfCSKVqV.chunk.js +2 -0
  265. package/dist/scripts/QfCSKVqV.chunk.js.map +1 -0
  266. package/dist/scripts/UTlJo9et.chunk.js +2 -0
  267. package/dist/scripts/UTlJo9et.chunk.js.map +1 -0
  268. package/dist/scripts/Va6df4HV.chunk.js +2 -0
  269. package/dist/scripts/Va6df4HV.chunk.js.map +1 -0
  270. package/dist/scripts/VjKgglJA.chunk.js +2 -0
  271. package/dist/scripts/VjKgglJA.chunk.js.map +1 -0
  272. package/dist/scripts/ZX9cci3Q.chunk.js +2 -0
  273. package/dist/scripts/ZX9cci3Q.chunk.js.map +1 -0
  274. package/dist/scripts/_sYSSSUN.chunk.js +2 -0
  275. package/dist/scripts/_sYSSSUN.chunk.js.map +1 -0
  276. package/dist/scripts/app-C44h5z5p.js +219 -0
  277. package/dist/scripts/app-C44h5z5p.js.map +1 -0
  278. package/dist/scripts/hiCMZ4pZ.chunk.js +2 -0
  279. package/dist/scripts/hiCMZ4pZ.chunk.js.map +1 -0
  280. package/dist/scripts/kpWgY6h_.chunk.js +2 -0
  281. package/dist/scripts/kpWgY6h_.chunk.js.map +1 -0
  282. package/dist/scripts/nWPqxcEa.chunk.js +2 -0
  283. package/dist/scripts/nWPqxcEa.chunk.js.map +1 -0
  284. package/dist/scripts/oaUqawuU.chunk.js +2 -0
  285. package/dist/scripts/oaUqawuU.chunk.js.map +1 -0
  286. package/dist/scripts/onGT4kCC.chunk.js +2 -0
  287. package/dist/scripts/onGT4kCC.chunk.js.map +1 -0
  288. package/dist/scripts/pkzD5BEm.chunk.js +2 -0
  289. package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
  290. package/dist/scripts/w9Re11Oi.chunk.js +362 -0
  291. package/dist/scripts/w9Re11Oi.chunk.js.map +1 -0
  292. package/dist/scripts/z-Nrq5UI.chunk.js +2 -0
  293. package/dist/scripts/z-Nrq5UI.chunk.js.map +1 -0
  294. package/package.json +7 -4
  295. package/typings/utils/imports.d.ts +1 -1
  296. package/vite.config.ts +6 -0
  297. package/dist/css/1068-exchange-b5eaf8af44.chunk.css +0 -35
  298. package/dist/css/1127-exchange-0eab318199.chunk.css +0 -40
  299. package/dist/css/1226-exchange-217b44f8b4.chunk.css +0 -57
  300. package/dist/css/1861-exchange-f3ff7e4f0d.chunk.css +0 -85
  301. package/dist/css/2494-exchange-02d7a0249c.chunk.css +0 -2
  302. package/dist/css/2538-exchange-4cbfe56ba3.chunk.css +0 -1
  303. package/dist/css/3291-exchange-3a8e198338.chunk.css +0 -11
  304. package/dist/css/3858-exchange-06944bdfa4.chunk.css +0 -1
  305. package/dist/css/4075-exchange-6d2304419c.chunk.css +0 -5
  306. package/dist/css/5027-exchange-2284222ca6.chunk.css +0 -25
  307. package/dist/css/6298-exchange-78ece5c7c5.chunk.css +0 -37
  308. package/dist/css/6332-exchange-2a22bfa655.chunk.css +0 -1
  309. package/dist/css/6356-exchange-8c5b220bf6.chunk.css +0 -1
  310. package/dist/css/7095-exchange-4cbfe56ba3.chunk.css +0 -1
  311. package/dist/css/7759-exchange-23bb5dd175.chunk.css +0 -8
  312. package/dist/css/8294-exchange-c797263ac2.chunk.css +0 -1
  313. package/dist/css/8589-exchange-71b6bc18f9.chunk.css +0 -11
  314. package/dist/css/8866-exchange-e80e6c6649.chunk.css +0 -10
  315. package/dist/css/9212-exchange-d71527fc65.chunk.css +0 -1
  316. package/dist/css/9611-exchange-cbf2bb5621.chunk.css +0 -5
  317. package/dist/css/9958-exchange-1387f35e92.chunk.css +0 -14
  318. package/dist/css/lite-exchange-306a09841f.css +0 -15
  319. package/dist/languages/en.json +0 -1
  320. package/dist/scripts/1068-0b00683666-exchange.chunk.js +0 -1
  321. package/dist/scripts/1127-356b23351e-exchange.chunk.js +0 -1
  322. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js +0 -2
  323. package/dist/scripts/1136-4d8336cfdf-exchange.chunk.js.LICENSE.txt +0 -1
  324. package/dist/scripts/1226-a4c0643661-exchange.chunk.js +0 -1
  325. package/dist/scripts/1861-5966a23e19-exchange.chunk.js +0 -2
  326. package/dist/scripts/1861-5966a23e19-exchange.chunk.js.LICENSE.txt +0 -1
  327. package/dist/scripts/2087-bbc1fd721f-exchange.chunk.js +0 -1
  328. package/dist/scripts/2117-5d867c698d-exchange.chunk.js +0 -1
  329. package/dist/scripts/2127-71bf57d74b-exchange.chunk.js +0 -1
  330. package/dist/scripts/2494-98cce57764-exchange.chunk.js +0 -2
  331. package/dist/scripts/2494-98cce57764-exchange.chunk.js.LICENSE.txt +0 -1
  332. package/dist/scripts/2507-1911a9bdb2-exchange.chunk.js +0 -1
  333. package/dist/scripts/2538-997edb9433-exchange.chunk.js +0 -2
  334. package/dist/scripts/2538-997edb9433-exchange.chunk.js.LICENSE.txt +0 -1
  335. package/dist/scripts/2648-4197959943-exchange.chunk.js +0 -1
  336. package/dist/scripts/2877-eee7fe484e-exchange.chunk.js +0 -1
  337. package/dist/scripts/3291-f9ccc2ea28-exchange.chunk.js +0 -1
  338. package/dist/scripts/3858-cd9d38c31c-exchange.chunk.js +0 -1
  339. package/dist/scripts/4075-6624f96fc6-exchange.chunk.js +0 -1
  340. package/dist/scripts/4299-36e5929cc6-exchange.chunk.js +0 -1
  341. package/dist/scripts/4312-552ca118ad-exchange.chunk.js +0 -1
  342. package/dist/scripts/442-47e3927b49-exchange.chunk.js +0 -1
  343. package/dist/scripts/455-ceeb969c54-exchange.chunk.js +0 -1
  344. package/dist/scripts/4558-057650ef22-exchange.chunk.js +0 -1
  345. package/dist/scripts/5027-357264982b-exchange.chunk.js +0 -1
  346. package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +0 -1
  347. package/dist/scripts/5267-443f3cdd59-exchange.chunk.js +0 -1
  348. package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +0 -1
  349. package/dist/scripts/6156-2bf99d5991-exchange.chunk.js +0 -1
  350. package/dist/scripts/6298-1c7a0ba516-exchange.chunk.js +0 -1
  351. package/dist/scripts/6332-9d2d42e2f9-exchange.chunk.js +0 -1
  352. package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +0 -1
  353. package/dist/scripts/6725-25d1542dec-exchange.chunk.js +0 -1
  354. package/dist/scripts/6831-30fa3e741e-exchange.chunk.js +0 -1
  355. package/dist/scripts/7095-ee45499a0d-exchange.chunk.js +0 -2
  356. package/dist/scripts/7095-ee45499a0d-exchange.chunk.js.LICENSE.txt +0 -1
  357. package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +0 -1
  358. package/dist/scripts/7759-2740213eb8-exchange.chunk.js +0 -1
  359. package/dist/scripts/7782-36924dba92-exchange.chunk.js +0 -1
  360. package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +0 -1
  361. package/dist/scripts/851-d89fb94a66-exchange.chunk.js +0 -2
  362. package/dist/scripts/851-d89fb94a66-exchange.chunk.js.LICENSE.txt +0 -1
  363. package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +0 -1
  364. package/dist/scripts/8589-912ab9f055-exchange.chunk.js +0 -1
  365. package/dist/scripts/8619-e5f595a594-exchange.chunk.js +0 -1
  366. package/dist/scripts/8866-0993e6b43a-exchange.chunk.js +0 -1
  367. package/dist/scripts/8937-727d080ed9-exchange.chunk.js +0 -1
  368. package/dist/scripts/9212-e8bde56a84-exchange.chunk.js +0 -1
  369. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +0 -2
  370. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +0 -60
  371. package/dist/scripts/9566-0625fb0cbe-exchange.chunk.js +0 -1
  372. package/dist/scripts/9611-6fe32ccc83-exchange.chunk.js +0 -1
  373. package/dist/scripts/9866-2d10067a4e-exchange.chunk.js +0 -1
  374. package/dist/scripts/9899-2b571c961b-exchange.chunk.js +0 -1
  375. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js +0 -2
  376. package/dist/scripts/9958-7f8f5ae2c6-exchange.chunk.js.LICENSE.txt +0 -1
  377. package/dist/scripts/bundle-1ce30e6578.min.js +0 -2
  378. package/dist/scripts/bundle-1ce30e6578.min.js.LICENSE.txt +0 -108
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1--zOUke.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/Dashboard.ts","../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/utils/DurationHelper.ts","../../../../libs/shared/src/enums/MasterObjectTypes.ts","../../../../libs/shared/src/enums/ResourceFileType.ts","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\nimport { BaseObject, BasePaginatedCollection, CuratedWidget, CuratedWidgetContent, CuratedWidgetData } from 'libs/shared/interfaces';\n\nexport enum DashboardLearningLevel {\n Any = 'Any',\n Level_1 = 'Level_1',\n Level_2 = 'Level_2',\n Level_3 = 'Level_3',\n Level_4 = 'Level_4',\n}\n\nexport enum DashboardUserType {\n Any = 'Any',\n Staff = 'Staff',\n Learner = 'Learner',\n}\n\nexport enum DashboardStatus {\n Draft = 'Draft',\n Published = 'Published',\n Archived = 'Archived',\n}\n\nexport interface Dashboard extends BaseObject {\n libraryType: LibraryType;\n customerType: CustomerType;\n userRole: number;\n}\n\nexport interface CuratedDashboard<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BaseObject {\n contentRegion: ContentRegion;\n description: string;\n learningLevel: DashboardLearningLevel;\n userType: DashboardUserType;\n status: DashboardStatus;\n target: string;\n widgets: CuratedWidget<TWidgetData, TWidgetContent>[];\n metadata: HashObject;\n datePublished: string;\n}\n\nexport interface CuratedDashboardCollection<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BasePaginatedCollection<CuratedDashboard<TWidgetData, TWidgetContent>>{}\n\n/**\n * Dashboard identification below\n */\nexport enum DashboardTargetType {\n Discover = 'discover',\n Classification = 'classification',\n ClassificationDirectory = 'classification-directory',\n ClassificationCurriculum = 'classification-curriculum',\n MoviesAndTv = 'movies-and-tv',\n Company = 'company',\n Search = 'search'\n}\n\ninterface DiscoverDashboardInfo {\n targetType: DashboardTargetType.Discover;\n presentationId: string;\n}\n\nexport interface ClassificationDashboardInfo {\n targetType: DashboardTargetType.Classification;\n classificationId: string;\n}\n\nexport interface ClassificationDirectoryInfo {\n targetType: DashboardTargetType.ClassificationDirectory;\n classificationId: string;\n}\n\nexport interface ClassificationCurriculumInfo {\n targetType: DashboardTargetType.ClassificationCurriculum;\n classificationId: string;\n}\n\ninterface MoviesAndTvDashboardInfo {\n targetType: DashboardTargetType.MoviesAndTv;\n presentationId: string;\n}\n\nexport interface CompanyDashboardInfo {\n targetType: DashboardTargetType.Company;\n companyId: string;\n presentationId: string;\n}\n\nexport type DashboardTargetInfo = DiscoverDashboardInfo |\n ClassificationDashboardInfo |\n ClassificationDirectoryInfo |\n ClassificationCurriculumInfo |\n MoviesAndTvDashboardInfo |\n CompanyDashboardInfo;\n\nexport interface UnknownDashboardTargetInfo {\n targetType: DashboardTargetType;\n presentationId: string;\n classificationId: string;\n companyId: string;\n}","export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import * as _ from 'underscore';\n\nconst padLeft = (value: string | number, totalLength: number, padChar: string) => {\n value = value.toString();\n\n const diff = totalLength - value.length;\n\n if (diff <= 0)\n return value;\n\n return new Array(diff + 1).join(padChar) + value;\n};\n\nconst DurationHelper = {\n /**\n * Copypasta from Online. Feel free to improve it if you see fit - Sha\n */\n ToDisplayDuration(milliseconds: number, showAll?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n \n const time = new Date(milliseconds);\n \n const h = time.getUTCHours();\n const m = padLeft(time.getUTCMinutes(), 2, '0');\n const s = padLeft(time.getUTCSeconds(), 2, '0');\n \n if (showAll || h > 0) {\n return `${h}:${m}:${s}`;\n }\n \n return `${m}:${s}`;\n },\n\n ToDisplayDurationNewStyle(milliseconds: number, includeSeconds?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n\n const time = new Date(milliseconds);\n\n const h = time.getUTCHours();\n let m = time.getUTCMinutes();\n const s = time.getUTCSeconds();\n\n // Round up 1m when >= 30s\n if ((h > 0 || m > 0) && s >= 30) {\n m = m + 1;\n }\n \n if (h > 0) {\n const hourUnit = h > 1 ? 'hrs' : 'hr';\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${h}${hourUnit} ${m}m ${s}s`;\n }\n\n return `${h}${hourUnit} ${m}m `;\n }\n \n return `${h} ${hourUnit}`;\n }\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${m}m ${s}s`;\n }\n\n return `${m}m`;\n }\n\n return `${s}s`;\n }\n};\n\nexport { DurationHelper };","export enum MasterObjectTypes {\n Folder = 'category',\n CategoryTree = 'category_tree',\n CustomLibrary = 'custom_library',\n HostedLibrary = 'hosted_library',\n Exchange = 'exchange',\n Workspace = 'workspace',\n Video = 'video',\n Clip = 'clip',\n Interactive = 'interactive'\n}","// File types match metadata for a resource FileApi\nexport enum ResourceFileType {\n Pdf = 'pdf',\n Image = 'image',\n PowerPoint = 'powerpoint',\n Document = 'document',\n Excel = 'excel',\n Zip = 'archive',\n File = 'text'\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize} = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string} = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}"],"names":["DashboardStatus","DashboardTargetType","VideoSource","TrendingSvg","props","jsx","CloseCaptionBadgeSvg","padLeft","value","totalLength","padChar","diff","DurationHelper","milliseconds","showAll","_.isNumber","time","h","m","s","includeSeconds","hourUnit","MasterObjectTypes","ResourceFileType","FileExcelSvg","FilePdfSvg","FilePptSvg","FileSvg","FileWordSvg","FileZipSvg","lang","VideoDetailsHelper","ratingValue","rating","library","hasLite","LanguageService","sourceType","video","_b","_a","type","mappedType","FileImgSvg","FolderSvg","namespace","getPhrase","BadgeType","badgeSvgContainerSizeMap","SvgContainerSize","badgeSizeClassNameMap","getStatusClassName","status","CurationStatus","getSourceClassName","sources","styles","getClassName","data","size","baseClass","sizeClass","typeClass","restrictionBgClass","RestrictionHelper","classNames","getBadgeContent","SvgContainer","jsxs","Fragment","getTooltip","hasData","Badge","className","content","tooltip","spanHackClassName","Tooltip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as g,ac as l,ad as m,ae as E,A as n,L as i,a as s,b as c}from"./app-C44h5z5p.js";import{P as x}from"./DTQRX2Z5.chunk.js";const r="exchange.exchangeTabs",e=i.encloseNamespace(r),a={categories:{application:c.EXCHANGE,action:s.Exchange.INDEX},mostRecent:{application:c.EXCHANGE,action:s.Exchange.MOST_RECENT}},o={actionType:E.Click,entity:m.Url,location:l.MagicTabs};function h(p){const{active:t}=p;return g.jsx(x,{tabs:[{name:e("categories"),appLink:a.categories,active:t==="categories",analyticsData:{name:e("categories"),url:n.getHref(a.categories)},analyticsOptions:o},{name:e("mostRecent"),appLink:a.mostRecent,active:t==="most-recent",analyticsData:{name:i.getPhrase(r,"mostRecent"),url:n.getHref(a.mostRecent)},analyticsOptions:o}]})}export{h as E};
2
+ //# sourceMappingURL=B1pmJy9w.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B1pmJy9w.chunk.js","sources":["../../src/apps/exchange/components/exchange-tabs/ExchangeTabs.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\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\nconst namespace = 'exchange.exchangeTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst APP_LINKS = {\n categories: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.INDEX\n },\n mostRecent: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.MOST_RECENT\n }\n};\n\nconst ANALYTICS_OPTIONS = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n};\n\ninterface ExchangeTabs {\n active: 'categories' | 'most-recent' | 'featured-channels';\n}\n\nexport function ExchangeTabs(props: ExchangeTabs): JSX.Element {\n const { active } = props;\n\n return (\n <PillTabSelector\n tabs={[{\n name: getPhrase('categories'),\n appLink: APP_LINKS.categories,\n active: active === 'categories',\n analyticsData: {\n name: getPhrase('categories'),\n url: Core.AppLinkHelper.getHref(APP_LINKS.categories)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n }, {\n name: getPhrase('mostRecent'),\n appLink: APP_LINKS.mostRecent,\n active: active === 'most-recent',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'mostRecent'),\n url: Core.AppLinkHelper.getHref(APP_LINKS.mostRecent)\n },\n analyticsOptions: ANALYTICS_OPTIONS\n }]}\n />\n );\n}"],"names":["namespace","getPhrase","LanguageService","APP_LINKS","AppChannels","Actions","ANALYTICS_OPTIONS","UserAction","EntityType","LocationContext","ExchangeTabs","props","active","jsx","PillTabSelector","Core.AppLinkHelper"],"mappings":"kIAYA,MAAMA,EAAY,wBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAEtDG,EAAY,CAChB,WAAY,CACV,YAAaC,EAAY,SACzB,OAAQC,EAAQ,SAAS,KAAA,EAE3B,WAAY,CACV,YAAaD,EAAY,SACzB,OAAQC,EAAQ,SAAS,WAAA,CAE7B,EAEMC,EAAoB,CACxB,WAAYC,EAAW,MACvB,OAAQC,EAAW,IACnB,SAAUC,EAAgB,SAC5B,EAMO,SAASC,EAAaC,EAAkC,CAC7D,KAAM,CAAE,OAAAC,GAAWD,EAEnB,OACEE,EAAAA,IAACC,EAAA,CACC,KAAM,CAAC,CACL,KAAMb,EAAU,YAAY,EAC5B,QAASE,EAAU,WACnB,OAAQS,IAAW,aACnB,cAAe,CACb,KAAMX,EAAU,YAAY,EAC5B,IAAKc,EAAmB,QAAQZ,EAAU,UAAU,CAAA,EAEtD,iBAAkBG,CAAA,EACjB,CACD,KAAML,EAAU,YAAY,EAC5B,QAASE,EAAU,WACnB,OAAQS,IAAW,cACnB,cAAe,CACb,KAAMV,EAAgB,UAAUF,EAAW,YAAY,EACvD,IAAKe,EAAmB,QAAQZ,EAAU,UAAU,CAAA,EAEtD,iBAAkBG,CAAA,CACnB,CAAA,CAAA,CAGP"}
@@ -0,0 +1,2 @@
1
+ import{r as n}from"./app-C44h5z5p.js";import{h as s}from"./DLXENX3X.chunk.js";function c(t){return t.map(e=>e.statusCode).join(":")}function p(t,e,r){const a=Array.isArray(t)?t:[t];n.useEffect(()=>{a.forEach(o=>{s(o.statusCode,e,r)})},[c(a),e,r])}export{p as u};
2
+ //# sourceMappingURL=B1sQeAw1.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B1sQeAw1.chunk.js","sources":["../../../../libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect","handleHttpError"],"mappings":"8EAMA,SAASA,EAAiBC,EAAiD,CACzE,OAAOA,EAAW,IAAIC,GAAOA,EAAI,UAAU,EAAE,KAAK,GAAG,CACvD,CAGO,SAASC,EACdC,EACAC,EACAC,EACM,CACN,MAAML,EAAa,MAAM,QAAQG,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE1EG,EAAAA,UAAU,IAAM,CACdN,EAAW,QAAQC,GAAO,CACxBM,EAAgBN,EAAI,WAAYG,EAAcC,CAAY,CAC5D,CAAC,CACH,EAAG,CAAEN,EAAiBC,CAAU,EAAGI,EAAcC,CAAa,CAAC,CACjE"}
@@ -0,0 +1,2 @@
1
+ import{j as e,aj as q,ak as x,al as P,B as y,R as A,aA as S,a as N,b as C,aq as V,ap as B,ai as M,a2 as b,aT as O,l as D,ac as U,ad as W}from"./app-C44h5z5p.js";import{F,S as $}from"./CAEqKa2O.chunk.js";import{u as G,I as Q,P as Z}from"./Dotf-cjL.chunk.js";import{h as E}from"./DLXENX3X.chunk.js";import{u as z}from"./Va6df4HV.chunk.js";import{u as J}from"./B1sQeAw1.chunk.js";import{T as K,a as X}from"./oaUqawuU.chunk.js";import{T as f}from"./C7bOWWn5.chunk.js";import{u as Y}from"./CKEc1C50.chunk.js";import{u as ee}from"./CSBkyxHZ.chunk.js";import{u as te}from"./onGT4kCC.chunk.js";import{A as ae}from"./C85NI7Ud.chunk.js";import{B as se,a as re}from"./1--zOUke.chunk.js";import{B as ie}from"./C6DEEFsr.chunk.js";import{B as ne}from"./B6QdLVkd.chunk.js";import{I as oe,a as le}from"./DoUAuskL.chunk.js";import{T as me}from"./NFCjXwMo.chunk.js";import{T as ce}from"./DOatLOGk.chunk.js";import{T as de}from"./z-Nrq5UI.chunk.js";import{t as I}from"./-OkQC3ld.chunk.js";import"./CRTvC3qC.chunk.js";import"./BtB8UFKw.chunk.js";import"./BQso9AQl.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./D8qEOAnP.chunk.js";import"./DHE-sUO-.chunk.js";import"./CbaWlt2e.chunk.js";import"./D97YVAoS.chunk.js";import"./ZX9cci3Q.chunk.js";import"./DiXTMx9M.chunk.js";import"./_sYSSSUN.chunk.js";import"./D2WOxvRg.chunk.js";import"./BKFoap_e.chunk.js";import"./BlDVEZsX.chunk.js";import"./BGyYkDnT.chunk.js";const pe="tv.searchResultsEmptyState";function he(i){return e.jsx(q.Provider,{value:pe,children:e.jsxs(x,{children:[e.jsx(x.Image,{src:P.EmptyStates.SEARCH}),e.jsx(x.Heading,{children:i.query?e.jsx(y,{phrase:"headingWithQuery",options:{query:i.query}}):e.jsx(y,{phrase:"headingWithoutQuery"})}),e.jsx(x.Info,{children:e.jsx(y,{phrase:"info"})})]})})}const ue="_highlight_107l1_1",ge="_badgeOverlay_107l1_8",w={highlight:ue,badgeOverlay:ge};function R(i,t){const r=new RegExp(t,"gi");return i.replace(r,c=>`<span class=${w.highlight}>${c}</span>`)}function xe(i){var l,g,p;const{program:t,query:r,region:c,getVideoActions:j}=i,[a,d]=A.useState(!1),n={application:C.TV,action:N.Tv.PREVIEW,args:[c.code,t.id]},u=I(t.startTime,t.timeZone),o=I(t.stopTime,t.timeZone),T=Math.abs(S.diffBetween(u,o,"milliseconds"));return e.jsxs("div",{className:"row g-0 mb-3",children:[e.jsx("div",{className:"col-3 flex-column align-items-flex-start pe-2",children:e.jsx("div",{className:"rounded rounded-3 overflow-hidden",children:e.jsxs(ne,{imageType:V.Thumbnails,data:t.thumbnailUrl,appLink:n,children:[e.jsx(oe,{type:le.Video}),e.jsx("div",{className:w.badgeOverlay,children:e.jsx(se,{type:re.DurationApproximate,data:T})})]})})}),e.jsxs("div",{className:"col-9 pb-2",children:[e.jsx(ae,{actions:j(t),className:"float-end mt-n1",actionsDropdownClassName:"btn btn-link ms-1"}),e.jsx(B,{appLink:n,children:e.jsx("h5",{className:"h4 mb-1 align-middle text-dark text-truncate",title:t.title??"",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:R(t.title,r)}})})}),e.jsxs(ie,{className:"mb-1",children:[t.channelLogoUrl&&e.jsx(ce,{logoUrl:t.channelLogoUrl,className:"me-1",small:!0}),e.jsx(de,{program:t,className:"me-1",showDate:!0,showEndTime:!0}),t.hasAdsFree&&e.jsx(me,{small:!0})]}),e.jsx("div",{className:"mb-1",children:e.jsx("span",{dangerouslySetInnerHTML:{__html:R(t.description,r)}})}),!!((l=t.subtitleHits)!=null&&l.length)&&e.jsxs("div",{children:[(g=t.subtitleHits)==null?void 0:g.map(((m,h)=>!a&&h>1?e.jsx(A.Fragment,{},h):e.jsxs(B,{appLink:{...n,args:[...n.args],params:{currentTime:m.HitStartTime/1e3}},className:"d-block text-dark",children:[e.jsxs("span",{className:"fw-semibold",children:["[",S.format(S.add(u,m.HitStartTime,"milliseconds"),"h:mm:ss a"),"]"]})," ",e.jsx("span",{dangerouslySetInnerHTML:{__html:R(m.SrtFragment,r)}})]},h))),!a&&((p=t.subtitleHits)==null?void 0:p.length)>2&&e.jsx("div",{className:"text-info cursor-pointer",onClick:()=>d(!0),children:"Show more"})]})]})]})}fe.defaultProps={queryParams:{}};function fe(i){var L;const{queryParams:t}=i,{query:r}=t,c=M(),j=z(),a=b(f.region(i.region)),d=b(f.regions()),n=b(a.data&&f.channels(a.data.code));a.hasCompleted&&!a.data&&E(O.BadRequest);const{setRegion:u}=te();ee(a),J([d,n]),D({title:r??""});const{items:o,hasMore:T,isFetching:l,nextCursor:g}=G(a.data&&p,m,h,s=>s.results,s=>s.page*25>s.totalNumber?null:(s.page+1).toString());function p(s){return f.search(a.data.code,t,+s)}function m(s){return c(p(s))}function h(s,v){if(s===1)return E(v);j.error("Something went wrong")}const k=Y("video-list",a.data),H=a.hasCompleted&&d.hasCompleted&&n.hasCompleted,_=[F.TvChannel(n.data),F.TvDateBroadcast(),F.TvFields()];return e.jsxs(e.Fragment,{children:[e.jsx(K,{query:r,region:a.data}),e.jsxs("div",{className:"d-flex justify-content-between mb-2",children:[e.jsx($,{queryParams:t,mainFilters:_,analyticsOptions:{entity:W.SearchResults,location:U.SearchFilters},appLink:{application:C.TV,action:N.Tv.SEARCH,args:[(L=a.data)==null?void 0:L.code]},hideDivider:!0,isFetchingOptions:!H}),e.jsx(X,{currentRegion:a.data,regions:d.data,appLink:{application:C.TV,action:N.Tv.SEARCH,params:{query:r}},onClick:u})]}),H&&e.jsx(e.Fragment,{children:o!=null&&o.length?e.jsxs(e.Fragment,{children:[o.map((s,v)=>e.jsx(xe,{program:s,query:r,region:a.data,getVideoActions:k},v)),(T||l)&&e.jsx(Q,{isFetching:l,fetchNext:m,nextCursor:g})]}):e.jsx(e.Fragment,{children:l?e.jsx("div",{className:"m-n2",children:e.jsx(Z,{})}):e.jsx(he,{query:r})})})]})}export{fe as TvSearchResultsView};
2
+ //# sourceMappingURL=B2HQh_vn.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B2HQh_vn.chunk.js","sources":["../../src/apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState.tsx","../../src/apps/tv/views/tv-search-results/components/tv-search-result-item/TvSearchResultItem.tsx","../../src/apps/tv/views/tv-search-results/TvSearchResultsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\n\nconst namespace = 'tv.searchResultsEmptyState';\n\ninterface TvSearchResultsStateProps {\n query?: string;\n}\n\nexport function TvSearchResultsState(props: TvSearchResultsStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.SEARCH} />\n\n <EmptyState.Heading>\n {props.query\n ? <Text phrase='headingWithQuery' options={{ query: props.query }} />\n : <Text phrase='headingWithoutQuery' />\n }\n </EmptyState.Heading>\n\n <EmptyState.Info>\n <Text phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ActionOptions, Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageType } from 'libs/shared/enums/Images';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvAdFreeBadge } from 'apps/tv/components/tv-ad-free-badge/TvAdFreeBadge';\nimport { TvChannelBadge } from 'apps/tv/components/tv-channel-badge/TvChannelBadge';\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-search-result-item.module.scss';\n\nfunction highlightText(text: string, query: string): string {\n const regex = new RegExp(query, 'gi');\n return text.replace(regex, match => `<span class=${styles.highlight}>${match}</span>`);\n}\n\ninterface TvSearchResultItemProps {\n query: string;\n program: TvSearchResult;\n region: TvRegion;\n getVideoActions: (video: TvProgram) => ActionOptions[];\n}\n\nexport function TvSearchResultItem(props: TvSearchResultItemProps): JSX.Element {\n const { program, query, region, getVideoActions } = props;\n\n const [ showMore, setShowMore ] = React.useState(false);\n\n const appLink = {\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ region.code, program.id ]\n };\n\n const startTime = toLocalTime(program.startTime, program.timeZone);\n const stopTime = toLocalTime(program.stopTime, program.timeZone);\n const diff = Math.abs(DateHelper.diffBetween(startTime, stopTime, 'milliseconds'));\n\n return (\n <div className='row g-0 mb-3'>\n <div className='col-3 flex-column align-items-flex-start pe-2'>\n <div className='rounded rounded-3 overflow-hidden'>\n <BaseImage\n imageType={ImageType.Thumbnails}\n data={program.thumbnailUrl}\n appLink={appLink}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n\n <div className={styles.badgeOverlay}>\n <Badge\n type={BadgeType.DurationApproximate}\n data={diff}\n />\n </div>\n </BaseImage>\n </div>\n </div>\n <div className='col-9 pb-2'>\n <ActionsComponent\n actions={getVideoActions(program as TvProgram)}\n className='float-end mt-n1'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n <AppLink appLink={appLink}>\n <h5 className='h4 mb-1 align-middle text-dark text-truncate' title={program.title ?? ''}>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.title, query)\n }}></span>\n </h5>\n </AppLink>\n <BadgeListContainer className='mb-1'>\n {program.channelLogoUrl && <TvChannelBadge logoUrl={program.channelLogoUrl} className='me-1' small />}\n <TvProgramTimeBadge program={program as TvProgram} className='me-1' showDate showEndTime />\n {program.hasAdsFree && <TvAdFreeBadge small />}\n </BadgeListContainer>\n <div className='mb-1'>\n <span dangerouslySetInnerHTML={{\n __html: highlightText(program.description, query)\n }}></span>\n </div>\n {!!program.subtitleHits?.length &&\n <div>\n {program.subtitleHits?.map(((hit, index) => {\n if (!showMore && index > 1)\n return <React.Fragment key={index} />;\n\n return (\n <AppLink\n key={index}\n appLink={{\n ...appLink,\n args: [...appLink.args],\n params: {\n currentTime: hit.HitStartTime / 1000\n }\n }}\n className='d-block text-dark'\n >\n <span className='fw-semibold'>\n [{DateHelper.format(DateHelper.add(startTime, hit.HitStartTime, 'milliseconds'), 'h:mm:ss a')}]\n </span>\n &nbsp;\n <span dangerouslySetInnerHTML={{\n __html: highlightText(hit.SrtFragment, query)\n }}></span>\n </AppLink>\n );\n }))}\n {!showMore && program.subtitleHits?.length > 2 && <div className='text-info cursor-pointer' onClick={() => setShowMore(true)}>Show more</div>}\n </div>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useGetTvActions } from 'apps/tv/hooks/useGetTvActions';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvChannel } from 'apps/tv/interfaces/models/TvChannel';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvSearchResult } from 'apps/tv/interfaces/models/TvSearchResult';\nimport { TvSearchResponse } from 'apps/tv/interfaces/responses/TvSearchResponse';\nimport { TvSearchResultsState } from 'apps/tv/views/tv-search-results/empty-state/TvSearchEmptyState';\n\nimport { TvSearchResultItem } from './components/tv-search-result-item/TvSearchResultItem';\n\ninterface TvSearchResultsViewProps {\n region: string;\n queryParams: HashObject;\n}\n\nTvSearchResultsView.defaultProps = {\n queryParams: {}\n};\n\nexport function TvSearchResultsView(props: TvSearchResultsViewProps): JSX.Element {\n const { queryParams } = props;\n const { query } = queryParams;\n\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(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 if (region.hasCompleted && !region.data) {\n handleHttpError(HttpStatus.BadRequest);\n }\n\n const { setRegion } = useSelectedRegion();\n\n useHandleRegionError(region);\n useHandleObjectError([ regions, channels ]);\n\n useSetPageMetadata({ title: query ?? '' });\n\n const {\n items: programs,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<TvSearchResult, TvSearchResponse>(\n region.data && getRequest,\n fetchNext,\n onError,\n response => response.results,\n response => {\n if (response.page * 25 > response.totalNumber)\n return null;\n\n return (response.page + 1).toString();\n }\n );\n\n function getRequest(cursor?: string): Flight.Request {\n return TvRequests.search(\n region.data.code,\n queryParams,\n +cursor\n );\n }\n\n function fetchNext(cursor?: string): void {\n return fetch(getRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error('Something went wrong');\n }\n\n const getVideoActions = useGetTvActions('video-list', region.data);\n\n const dataLoaded = region.hasCompleted && regions.hasCompleted && channels.hasCompleted;\n\n const mainFilters = [\n Filters.TvChannel(channels.data),\n Filters.TvDateBroadcast(),\n Filters.TvFields()\n ];\n\n return (\n <>\n <TvSearchBar query={query} region={region.data} />\n\n <div className='d-flex justify-content-between mb-2'>\n <SearchFilters\n queryParams={queryParams}\n mainFilters={mainFilters}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.SearchFilters\n }}\n appLink={{ application: AppChannels.TV, action: Actions.Tv.SEARCH, args: [region.data?.code]}}\n hideDivider\n isFetchingOptions={!dataLoaded}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.SEARCH,\n params: { query: query }\n }}\n onClick={setRegion}\n />\n </div>\n\n {dataLoaded && (\n <>\n {programs?.length ? (\n <>\n {programs.map((program, index) => {\n return (\n <TvSearchResultItem\n key={index}\n program={program}\n query={query}\n region={region.data}\n getVideoActions={getVideoActions}\n />\n );\n })}\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n />\n )}\n </>\n ) : (\n <>\n {isFetching ? (\n <div className='m-n2'>\n <PartialVideoList />\n </div>\n ) : <TvSearchResultsState query={query} />}\n </>\n )}\n </>\n )}\n </>\n );\n}"],"names":["namespace","TvSearchResultsState","props","LanguageNamespaceContext","EmptyState","jsx","ImageUrls","Text","highlightText","text","query","regex","match","styles","TvSearchResultItem","program","region","getVideoActions","showMore","setShowMore","React","appLink","AppChannels","Actions","startTime","toLocalTime","stopTime","diff","DateHelper","jsxs","BaseImage","ImageType","ImageFallback","ImageFallbackType","Badge","BadgeType","ActionsComponent","AppLink","BadgeListContainer","TvChannelBadge","TvProgramTimeBadge","TvAdFreeBadge","_a","_b","hit","index","_c","TvSearchResultsView","queryParams","fetch","Flight.useGetFetch","alerts","useAlerts","Flight.useBasicFetch","TvRequests","regions","channels","handleHttpError","HttpStatus","setRegion","useSelectedRegion","useHandleRegionError","useHandleObjectError","useSetPageMetadata","programs","hasMore","isFetching","nextCursor","useInfiniteList","getRequest","fetchNext","onError","response","cursor","pageNumber","httpStatus","useGetTvActions","dataLoaded","mainFilters","Filters","Fragment","TvSearchBar","SearchFilters","EntityType","LocationContext","TvRegionSelect","InfiniteScrollFooter","PartialVideoList"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a2 as b,a4 as O,aC as D,U as k,M as l,L as R,aG as T,ai as M,n as x,o as H,ac as U,ab as m,aH as P,ad as C,ae as S,aI as v,aJ as q,a as w,b as E}from"./app-C44h5z5p.js";import{L as _}from"./Di6TX7bW.chunk.js";import{V as $}from"./COTdau6A.chunk.js";import{A as F}from"./C6DEEFsr.chunk.js";var L=(e=>(e.Developer="Curator Devs",e.Content="Content",e.Curator="Curators",e.Support="Support",e.SalesSupport="Sales Support",e.GraphicDesigner="Graphic Designers",e.MetadataEditor="Metadata Editors",e.ResourcingManager="Resourcing Managers",e.SeniorContentManager="Senior Content Manager",e.Marketing="Marketing",e.Sales="Sales Representatives",e.StreamableCurator="Streamable Curator",e.SupportExtraPermission="Support - Extra Permissions",e.SeoManager="SEO Manager",e.ContentReviewer="Content Reviewer",e))(L||{});const W="shared.hooks",X=R.encloseNamespace(W);function j(e,i,n,p){const s=k.safeUrlConcat(e,"manage"),r=k.safeUrlConcat(e,"exchange"),a=(o,c,f)=>k.safeUrlConcat(o,`${c}/${f}`);switch(i){case l.Subject:return k.safeUrlConcat(s,`subjects/presentations/${p}/classifications/${n}/edit`);case l.Video:return a(s,"videos",n);case l.Playlist:return a(s,"playlists",n);case l.Series:return a(s,"series",n);case l.Company:return a(s,"companies",n);case l.Interactive:return a(s,"interactives",n);case l.Clip:return a(s,"clips",n);case l.Category:return a(r,"categories",n)}}function B(){return X("openInCurationStudio")}function z(){var r,a;const e=b(O.currentUser()),{data:i}=b(((r=e.data)==null?void 0:r.id)&&O.groups((a=e.data)==null?void 0:a.id)),n=b(D.config()),p=[L.Curator,L.Content,L.Developer];function s(){return p.some(o=>i==null?void 0:i.data.find(c=>c.name===o))}return{openInCurationStudioLabel:B(),isUserCurator:s(),getOpenInCurationStudioLink:(o,c,f)=>{var t;return j((t=n.data)==null?void 0:t.curatorUrl,o,c,f)}}}var N=(e=>(e[e.PlayPage=0]="PlayPage",e))(N||{});function J(e){const i=T(),n=M();function p(a){return e.type!==0?null:$.getVideoRequest(a.id,a.typeId,e.shareId)}function s(a){const o=p(a);i(o.key).shouldFetch&&n(o)}function r(a){const o=p(a);return i(o.key).hasCompleted}return{hydrate:s,isHydrated:r}}const Y="exchange.exchangeHooks",d=R.encloseNamespace(Y),K={lazyPlaceholder:!0};function ae(e){const{hasPermissions:i}=x(),{isUserCurator:n,openInCurationStudioLabel:p,getOpenInCurationStudioLink:s}=z(),r=b(D.config()),a=b(i(H.ViewLibraries)&&_.libraryRequestLibraries()),{hydrate:o,isHydrated:c}=J({type:N.PlayPage});function f(t){var I,V,A;const u=e==="preview",h={id:t.id,name:t.name},g=u?U.VideoItemPreview:U.VideoListItem,y=[{order:10,label:u?d("openInClickView"):"",svg:q,tooltip:u?"":d("openInClickView"),className:u?"btn btn-dark me-2":"",button:!0,href:r.data&&v.safeUrlConcat(r.data.liteUrl,`/videos/${t.id}`),analyticsData:h,analyticsOptions:{actionType:S.Click,entity:C.Video,descriptor:P.OpenInClickView,location:g,workflowPhase:m.Start}},{order:20,label:u?d("addVideo"):null,svg:u?void 0:F,tooltip:u?"":d("addVideo"),button:!u,appLink:{application:E.EXCHANGE,action:w.Exchange.ADD,args:[t.id]},analyticsData:h,analyticsOptions:{actionType:S.Click,entity:C.Video,descriptor:P.AddToWorkspace,location:g,workflowPhase:m.Start}},{order:30,label:d("suggest"),className:"",appLink:{application:E.EXCHANGE,action:w.Exchange.SUGGEST_EDIT,args:[t.id],params:{location:g}},analyticsData:h,analyticsOptions:{actionType:S.Click,entity:C.Video,descriptor:P.SuggestEdit,location:g,workflowPhase:m.Start}}];return c(t)?((I=t._canAddToLibrary)!=null&&I.customLibrary&&((V=a.data)!=null&&V.length)&&y.push({order:25,label:d("addToLibrary"),className:"",appLink:{application:E.EXCHANGE,action:w.Exchange.ADD_TO_LIBRARY,args:[t.id]},analyticsData:h,analyticsOptions:{actionType:S.Create,entity:C.LibraryRequest,workflowPhase:m.Start,location:g}}),(A=t._canDownload)!=null&&A.value&&y.push({order:40,label:d("download"),className:"",appLink:{application:E.EXCHANGE,action:w.Exchange.DOWNLOAD_VIDEO,args:[t.id]},analyticsData:h,analyticsOptions:{actionType:S.Download,entity:C.Video,workflowPhase:m.Start,location:g}}),n&&y.push({order:50,label:p,openInNewTab:!0,href:s(l.Video,t.id)}),y):[...y,K]}return{getVideoActions:f,fetchMoreActions:t=>o(t)}}export{ae as a,z as u};
2
+ //# sourceMappingURL=B55exgI3.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B55exgI3.chunk.js","sources":["../../../../libs/shared/src/enums/CuratorGroup.ts","../../../../libs/shared/src/hooks/useCurationStudio.ts","../../../../libs/shared/src/hooks/useVideohydration.ts","../../src/apps/exchange/hooks/useGetExchangeActions.ts"],"sourcesContent":["/**\n * The values in this enum directly\n * map to the group names in Master.\n */\nexport enum CuratorGroup {\n Developer = 'Curator Devs',\n Content = 'Content',\n Curator = 'Curators',\n Support = 'Support',\n SalesSupport = 'Sales Support',\n GraphicDesigner = 'Graphic Designers',\n MetadataEditor = 'Metadata Editors',\n ResourcingManager = 'Resourcing Managers',\n SeniorContentManager = 'Senior Content Manager',\n Marketing = 'Marketing',\n Sales = 'Sales Representatives',\n StreamableCurator = 'Streamable Curator',\n SupportExtraPermission = 'Support - Extra Permissions',\n SeoManager = 'SEO Manager',\n ContentReviewer = 'Content Reviewer'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CuratorUserGroupCollection, CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getOpenInCurationStudioLink(\n baseUrl: string,\n objectType: MasterType | string,\n id: string,\n presentationId?: string\n) {\n const baseManageUrl = UrlHelper.safeUrlConcat(baseUrl, 'manage');\n const baseExchangeUrl = UrlHelper.safeUrlConcat(baseUrl, 'exchange');\n const href = (baseUrl: string, objectType: string, id: string) => UrlHelper.safeUrlConcat(baseUrl, `${objectType}/${id}`);\n\n switch (objectType) {\n case MasterType.Subject:\n return UrlHelper.safeUrlConcat(baseManageUrl, `subjects/presentations/${presentationId}/classifications/${id}/edit`);\n case MasterType.Video:\n return href(baseManageUrl, 'videos', id);\n case MasterType.Playlist:\n return href(baseManageUrl, 'playlists', id);\n case MasterType.Series:\n return href(baseManageUrl, 'series', id);\n case MasterType.Company:\n return href(baseManageUrl, 'companies', id);\n case MasterType.Interactive:\n return href(baseManageUrl, 'interactives', id);\n case MasterType.Clip:\n return href(baseManageUrl, 'clips', id);\n case MasterType.Category:\n return href(baseExchangeUrl, 'categories', id);\n }\n}\n\nexport function getOpenInCurationStudioLabel(): string {\n return getPhrase('openInCurationStudio');\n}\n\nexport function useCurationStudio() {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { data: userGroups } = Flight.useBasicFetch<CuratorUserGroupCollection>(\n (currentUser.data?.id) && UserRequests.groups(currentUser.data?.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n \n const curatorGroups = [ CuratorGroup.Curator, CuratorGroup.Content, CuratorGroup.Developer ];\n\n function isUserCurator(): boolean {\n return curatorGroups.some(group => userGroups?.data.find(userGroup => userGroup.name === group));\n }\n\n return {\n openInCurationStudioLabel: getOpenInCurationStudioLabel(),\n isUserCurator: isUserCurator(),\n getOpenInCurationStudioLink: (objectType: MasterType | string, id: string, presentationId?: string) =>\n getOpenInCurationStudioLink(config.data?.curatorUrl, objectType, id, presentationId)\n };\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport enum VideoHydrationType {\n PlayPage\n}\n\ninterface UseVideoHydrationOptions {\n type: VideoHydrationType;\n shareId?: string;\n}\n\nexport function useVideoHydration(options: UseVideoHydrationOptions) {\n const getResponse = Flight.useGetResponseFunc();\n const fetch = Flight.useGetFetch();\n \n function getRequest(video: VideoTypes): Flight.Request {\n if (options.type !== VideoHydrationType.PlayPage)\n return null;\n\n\n return VideoHelper.getVideoRequest(video.id, video.typeId, options.shareId);\n }\n \n function hydrate(video: VideoTypes): void {\n const request = getRequest(video);\n const resp = getResponse(request.key);\n\n resp.shouldFetch && fetch(request);\n }\n\n function isHydrated(video: VideoTypes): boolean {\n const request = getRequest(video);\n const resp = getResponse(request.key);\n\n return resp.hasCompleted;\n }\n\n return { hydrate, isHydrated };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useCurationStudio } from 'libs/shared/hooks/useCurationStudio';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useVideoHydration, VideoHydrationType } from 'libs/shared/hooks/useVideohydration';\nimport { AddVideoSvg } from 'libs/shared/images/svg/actions/AddVideoSvg';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { Config, Library, Video, VideoTypes } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nconst namespace = 'exchange.exchangeHooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype Location = 'preview' | 'video-list';\n\nconst FETCH_MORE_ACTION_OPTION: ActionOptions = {\n lazyPlaceholder: true\n};\n\nexport function useGetExchangeActions(location: Location) {\n const { hasPermissions } = usePermissions();\n\n const { isUserCurator, openInCurationStudioLabel, getOpenInCurationStudioLink } = useCurationStudio();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const requestLibraries = Flight.useBasicFetch<Library[]>(\n hasPermissions(PermissionName.ViewLibraries) &&\n LibraryRequests.libraryRequestLibraries()\n );\n\n const { hydrate, isHydrated } = useVideoHydration({\n type: VideoHydrationType.PlayPage\n });\n \n function getVideoActions(video: Video): ActionOptions[] {\n const isPreview = location === 'preview';\n const analyticsData = { id: video.id, name: video.name };\n const locationContext = isPreview ? LocationContext.VideoItemPreview : LocationContext.VideoListItem;\n\n const actions: ActionOptions[] = [{\n order: 10,\n label: isPreview ? getPhrase('openInClickView') : '',\n svg: NewWindowSvg,\n tooltip: isPreview ? '' : getPhrase('openInClickView'),\n className: isPreview ? 'btn btn-dark me-2' : '',\n button: true,\n href: config.data && UrlHelper.safeUrlConcat(config.data.liteUrl, `/videos/${video.id}`),\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.OpenInClickView,\n location: locationContext,\n workflowPhase: WorkflowPhase.Start\n }\n }, {\n order: 20,\n label: isPreview ? getPhrase('addVideo') : null,\n svg: !isPreview ? AddVideoSvg : undefined,\n tooltip: isPreview ? '' : getPhrase('addVideo'),\n button: !isPreview,\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.ADD,\n args: [video.id]\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: locationContext,\n workflowPhase: WorkflowPhase.Start\n }\n }, {\n order: 30,\n label: getPhrase('suggest'),\n className: '',\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.SUGGEST_EDIT,\n args: [video.id],\n params: { location: locationContext }\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.SuggestEdit,\n location: locationContext,\n workflowPhase: WorkflowPhase.Start\n }\n }];\n\n if (!isHydrated(video)) {\n return [ ...actions, FETCH_MORE_ACTION_OPTION ];\n }\n\n if (video._canAddToLibrary?.customLibrary && requestLibraries.data?.length) {\n actions.push({\n order: 25,\n label: getPhrase('addToLibrary'),\n className: '',\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.ADD_TO_LIBRARY,\n args: [video.id]\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.LibraryRequest,\n workflowPhase: WorkflowPhase.Start,\n location: locationContext\n }\n });\n }\n\n if (video._canDownload?.value) {\n actions.push({\n order: 40,\n label: getPhrase('download'),\n className: '',\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.DOWNLOAD_VIDEO,\n args: [video.id]\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Download,\n entity: EntityType.Video,\n workflowPhase: WorkflowPhase.Start,\n location: locationContext\n }\n });\n }\n\n if (isUserCurator) {\n actions.push({\n order: 50,\n label: openInCurationStudioLabel,\n openInNewTab: true,\n href: getOpenInCurationStudioLink(MasterType.Video, video.id)\n });\n }\n\n return actions;\n }\n\n return {\n getVideoActions,\n fetchMoreActions: (video: VideoTypes) => hydrate(video)\n };\n}"],"names":["CuratorGroup","namespace","getPhrase","LanguageService","getOpenInCurationStudioLink","baseUrl","objectType","id","presentationId","baseManageUrl","UrlHelper","baseExchangeUrl","href","MasterType","getOpenInCurationStudioLabel","useCurationStudio","currentUser","Flight.useBasicFetch","UserRequests","userGroups","_a","_b","config","ConfigRequests","curatorGroups","isUserCurator","group","userGroup","VideoHydrationType","useVideoHydration","options","getResponse","Flight.useGetResponseFunc","fetch","Flight.useGetFetch","getRequest","video","VideoHelper","hydrate","request","isHydrated","FETCH_MORE_ACTION_OPTION","useGetExchangeActions","location","hasPermissions","usePermissions","openInCurationStudioLabel","requestLibraries","PermissionName","LibraryRequests","getVideoActions","isPreview","analyticsData","locationContext","LocationContext","actions","NewWindowSvg","UserAction","EntityType","VideoActionDescriptor","WorkflowPhase","AddVideoSvg","AppChannels","Actions","_c"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const r={isNumber(e){return r.isType(e,"number")},isString(e){return r.isType(e,"string")},isType(e,s){return typeof e===s}};export{r as T};
2
+ //# sourceMappingURL=B668bf5B.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B668bf5B.chunk.js","sources":["../../../../libs/common/src/react/utils/TypeHelper.ts"],"sourcesContent":["export const TypeHelper = {\n isNumber(obj: any): boolean {\n return TypeHelper.isType(obj, 'number');\n },\n\n isString(obj: any): boolean {\n return TypeHelper.isType(obj, 'string');\n },\n\n isType(obj: any, type: string): boolean {\n return typeof obj === type;\n }\n};"],"names":["TypeHelper","obj","type"],"mappings":"AAAO,MAAMA,EAAa,CACxB,SAASC,EAAmB,CAC1B,OAAOD,EAAW,OAAOC,EAAK,QAAQ,CACxC,EAEA,SAASA,EAAmB,CAC1B,OAAOD,EAAW,OAAOC,EAAK,QAAQ,CACxC,EAEA,OAAOA,EAAUC,EAAuB,CACtC,OAAO,OAAOD,IAAQC,CACxB,CACF"}
@@ -0,0 +1,2 @@
1
+ import{Y as b,at as y,j as s,ap as d,aq as t}from"./app-C44h5z5p.js";import{L as u}from"./DiXTMx9M.chunk.js";const k="_image_1himm_1",N="_thumbnail_1himm_13",T="_tallPoster_1himm_16",C="_cover_1himm_19",L="_banner_1himm_22",v="_poster_1himm_25",I="_pdf_1himm_28",j="_link_1himm_31",m={image:k,thumbnail:N,tallPoster:T,cover:C,banner:L,poster:v,pdf:I,link:j};function x(e){let i=m.image,a="";return e.imageType===t.Thumbnails&&(a=`thumbnail ${m.thumbnail}`),e.imageType===t.TallPosters&&(a=m.tallPoster),e.imageType===t.Covers&&(a=m.cover),e.imageType===t.Banners&&(a=m.banner),e.imageType===t.Posters&&(a=m.poster),e.imageType===t.Pdf&&(a=m.pdf),e.imageType===t.Link&&(a=m.link),a&&(i+=` ${a}`),e.className&&(i+=` ${e.className}`),i}function O(e){const{data:i,imageOptions:a,appLink:r,preload:c,preventLoad:o,analyticsOptions:g,analyticsData:_,imageClassName:f,alt:h}=e;let l="";typeof i=="string"?l=i:b.isObject(i)&&(l=i.url);const n=l&&a?y.createUrl(l,a):l;return s.jsx("div",{className:x(e),style:e.imageStyle,children:s.jsxs(d,{appLink:r,analyticsData:_,analyticsOptions:g,onClick:e.onClick,preventFocus:e.preventFocus,className:e.appLinkClassName,children:[e.children,n&&s.jsx(u,{src:n,alt:h,forceLoad:c,preventLoad:o,extraClasses:f,errorFallbackImageSrc:e.errorFallbackImageSrc,errorFallbackImageClassName:e.errorFallbackImageClassName,onLoad:e.onLoad})]})})}export{O as B};
2
+ //# sourceMappingURL=B6QdLVkd.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B6QdLVkd.chunk.js","sources":["../../../../libs/shared/src/components/image/BaseImage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { Image } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './image.module.scss';\n\nfunction getImageClassName(props: BaseImageProps): string {\n let className = styles.image;\n\n let imageTypeClassName = '';\n\n if (props.imageType === ImageType.Thumbnails)\n imageTypeClassName = `thumbnail ${styles.thumbnail}`;\n\n if (props.imageType === ImageType.TallPosters)\n imageTypeClassName = styles.tallPoster;\n\n if (props.imageType === ImageType.Covers)\n imageTypeClassName = styles.cover;\n\n if (props.imageType === ImageType.Banners)\n imageTypeClassName = styles.banner;\n\n if (props.imageType === ImageType.Posters)\n imageTypeClassName = styles.poster;\n\n if (props.imageType === ImageType.Pdf)\n imageTypeClassName = styles.pdf;\n\n if (props.imageType === ImageType.Link)\n imageTypeClassName = styles.link;\n\n if (imageTypeClassName)\n className += ` ${imageTypeClassName}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface BaseImageProps {\n data: Image | string;\n imageOptions?: ImageOptions;\n appLink?: Core.AppLink;\n imageType?: ImageType;\n className?: string;\n imageClassName?: string;\n imageStyle?: HashObject;\n preload?: boolean;\n preventLoad?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n errorFallbackImageSrc?: string;\n errorFallbackImageClassName?: string;\n alt?: string;\n preventFocus?: boolean;\n appLinkClassName?: string;\n onClick?: () => void;\n onLoad?: () => void;\n}\n\nexport function BaseImage(props: React.PropsWithChildren<BaseImageProps>): React.ReactElement {\n const {\n data,\n imageOptions,\n appLink,\n preload,\n preventLoad,\n analyticsOptions,\n analyticsData,\n imageClassName,\n alt\n } = props;\n\n let url = '';\n\n if (typeof data === 'string') {\n url = data;\n } else if (ObjectHelper.isObject(data)) {\n url = data.url;\n }\n\n const imageUrl = (url && imageOptions) ? ImageHelper.createUrl(url, imageOptions) : url;\n\n return (\n <div className={getImageClassName(props)} style={props.imageStyle}>\n <AppLink\n appLink={appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n onClick={props.onClick}\n preventFocus={props.preventFocus}\n className={props.appLinkClassName}\n >\n {props.children}\n {imageUrl && (\n <LazyImage\n src={imageUrl}\n alt={alt}\n forceLoad={preload}\n preventLoad={preventLoad}\n extraClasses={imageClassName}\n errorFallbackImageSrc={props.errorFallbackImageSrc}\n errorFallbackImageClassName={props.errorFallbackImageClassName}\n onLoad={props.onLoad}\n />\n )}\n </AppLink>\n </div>\n );\n}\n\n"],"names":["getImageClassName","props","className","styles","imageTypeClassName","ImageType","BaseImage","data","imageOptions","appLink","preload","preventLoad","analyticsOptions","analyticsData","imageClassName","alt","url","ObjectHelper","imageUrl","ImageHelper","jsx","jsxs","AppLink","LazyImage"],"mappings":"sWAeA,SAASA,EAAkBC,EAA+B,CACxD,IAAIC,EAAYC,EAAO,MAEnBC,EAAqB,GAEzB,OAAIH,EAAM,YAAcI,EAAU,aAChCD,EAAqB,aAAaD,EAAO,SAAS,IAEhDF,EAAM,YAAcI,EAAU,cAChCD,EAAqBD,EAAO,YAE1BF,EAAM,YAAcI,EAAU,SAChCD,EAAqBD,EAAO,OAE1BF,EAAM,YAAcI,EAAU,UAChCD,EAAqBD,EAAO,QAE1BF,EAAM,YAAcI,EAAU,UAChCD,EAAqBD,EAAO,QAE1BF,EAAM,YAAcI,EAAU,MAChCD,EAAqBD,EAAO,KAE1BF,EAAM,YAAcI,EAAU,OAChCD,EAAqBD,EAAO,MAE1BC,IACFF,GAAa,IAAIE,CAAkB,IAEjCH,EAAM,YACRC,GAAa,IAAID,EAAM,SAAS,IAE3BC,CACT,CAuBO,SAASI,EAAUL,EAAoE,CAC5F,KAAM,CACJ,KAAAM,EACA,aAAAC,EACA,QAAAC,EACA,QAAAC,EACA,YAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,eAAAC,EACA,IAAAC,CAAA,EACEd,EAEJ,IAAIe,EAAM,GAEN,OAAOT,GAAS,SAClBS,EAAMT,EACGU,EAAa,SAASV,CAAI,IACnCS,EAAMT,EAAK,KAGb,MAAMW,EAAYF,GAAOR,EAAgBW,EAAY,UAAUH,EAAKR,CAAY,EAAIQ,EAEpF,OACEI,MAAC,OAAI,UAAWpB,EAAkBC,CAAK,EAAG,MAAOA,EAAM,WACrD,SAAAoB,EAAAA,KAACC,EAAA,CACC,QAAAb,EACA,cAAAI,EACA,iBAAAD,EACA,QAASX,EAAM,QACf,aAAcA,EAAM,aACpB,UAAWA,EAAM,iBAEhB,SAAA,CAAAA,EAAM,SACNiB,GACCE,EAAAA,IAACG,EAAA,CACC,IAAKL,EACL,IAAAH,EACA,UAAWL,EACX,YAAAC,EACA,aAAcG,EACd,sBAAuBb,EAAM,sBAC7B,4BAA6BA,EAAM,4BACnC,OAAQA,EAAM,MAAA,CAAA,CAChB,CAAA,CAAA,EAGN,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{D as h,U as g,L as u,a2 as d,a4 as m,a9 as f,aC as p,q as E,a5 as P}from"./app-C44h5z5p.js";import{u as U}from"./Va6df4HV.chunk.js";const c="shared.verifiedEmailError";class q extends h{constructor(e,r,s){super("VerifiedEmailRequiredError"),this.message=e,this.liteUrl=r,this.hasLite=s}get name(){return"VerifiedEmailRequiredError"}get dialogOptions(){const e=g.safeUrlConcat(this.liteUrl,"settings/account");return{title:u.getPhrase(c,"heading"),text:this.hasLite?`${this.message} ${u.getPhrase(c,"visitSettings",{href:e})}`:this.message,buttons:[{text:u.getPhrase(c,"close"),className:"btn btn-dark",success:!0}]}}}const R=()=>{var a;const t=d(m.currentUser()),e=d(((a=t.data)==null?void 0:a.isAuthenticated)&&f.userProducts()),r=!e.hasCompleted;return{hasProduct:i=>{var o;return r||e.hasError||!((o=e.data)!=null&&o.length)?!1:e.data.some(n=>n.id===i)},products:e,isLoadingProducts:r}};function S(){const t=U(),{hasProduct:e,isLoadingProducts:r}=R(),s=d(p.config());function a(i,o,n){var l;if(!i.responseJSON||((l=i.responseJSON)==null?void 0:l.type)!=="no-email"){t.error(o);return}E.throw(new q(n,s.data.liteUrl,e(P.Primary)))}return{handleGenerateReportError:a,loading:!s.hasCompleted||r}}export{S as u};
2
+ //# sourceMappingURL=B9JNzh8J.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"B9JNzh8J.chunk.js","sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite\n ? `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}`\n : this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}"],"names":["namespace","VerifiedEmailRequiredError","DialogError","message","liteUrl","hasLite","href","UrlHelper","LanguageService","useProducts","currentUser","Flight.useBasicFetch","UserRequests","products","_a","ProductRequests","isLoadingProducts","productId","product","useVerifiedEmailRequiredErrorHandler","alerts","useAlerts","hasProduct","config","ConfigRequests","handleGenerateReportError","xhr","noEmailError","Core.ErrorHelper","ProductId"],"mappings":"2IAMA,MAAMA,EAAY,4BAEX,MAAMC,UAAmCC,CAAY,CAK1D,YAAYC,EAAiBC,EAAiBC,EAAkB,CAC9D,MAAM,4BAA4B,EAElC,KAAK,QAAUF,EACf,KAAK,QAAUC,EACf,KAAK,QAAUC,CACjB,CAGA,IAAW,MAAe,CACxB,MAAO,4BACT,CAGA,IAAW,eAA+B,CACxC,MAAMC,EAAOC,EAAU,cAAc,KAAK,QAAS,kBAAkB,EAErE,MAAO,CACL,MAAOC,EAAgB,UAAUR,EAAW,SAAS,EACrD,KAAM,KAAK,QACP,GAAG,KAAK,OAAO,IAAIQ,EAAgB,UAAUR,EAAW,gBAAiB,CAAE,KAAAM,CAAA,CAAM,CAAC,GAClF,KAAK,QACT,QAAS,CAAC,CACR,KAAME,EAAgB,UAAUR,EAAW,OAAO,EAClD,UAAW,eACX,QAAS,EAAA,CACV,CAAA,CAEL,CACF,CC3BO,MAAMS,EAAc,IAA2B,OACpD,MAAMC,EAAcC,EAAkCC,EAAa,aAAa,EAC1EC,EAAWF,IAAgCG,EAAAJ,EAAY,OAAZ,YAAAI,EAAkB,kBAAmBC,EAAgB,cAAc,EAC9GC,EAAoB,CAACH,EAAS,aAYpC,MAAO,CACL,WAXkBI,GAAyB,OAI3C,OAHID,GAAqBH,EAAS,UAG9B,GAACC,EAAAD,EAAS,OAAT,MAAAC,EAAe,QACX,GAEFD,EAAS,KAAK,KAAKK,GAAWA,EAAQ,KAAOD,CAAS,CAC/D,EAIE,SAAAJ,EACA,kBAAAG,CAAA,CAEJ,ECxBO,SAASG,GAAuC,CACrD,MAAMC,EAASC,EAAA,EACT,CAAE,WAAAC,EAAY,kBAAAN,CAAA,EAAsBP,EAAA,EACpCc,EAASZ,EAA6Ba,EAAe,QAAQ,EAEnE,SAASC,EAA0BC,EAAUvB,EAAiBwB,EAAsB,OAClF,GAAI,CAACD,EAAI,gBAAgBZ,EAAAY,EAAI,eAAJ,YAAAZ,EAAkB,QAAS,WAAY,CAC9DM,EAAO,MAAMjB,CAAO,EACpB,MACF,CAEAyB,EAAiB,MACf,IAAI3B,EAA2B0B,EAAcJ,EAAO,KAAK,QAASD,EAAWO,EAAU,OAAO,CAAC,CAAA,CAEnG,CAEA,MAAO,CACL,0BAAAJ,EACA,QAAS,CAACF,EAAO,cAAgBP,CAAA,CAErC"}
@@ -0,0 +1,2 @@
1
+ import{H as v,a2 as p,j as o,P as y,aC as h,A as w,a as f,b as g}from"./app-C44h5z5p.js";import{S as P}from"./D7wAo_p-.chunk.js";import{V as x}from"./BVnGsVC0.chunk.js";import{u as C}from"./DzLRlab-.chunk.js";import{C as j,P as A,a as E}from"./w9Re11Oi.chunk.js";import{a as V}from"./B55exgI3.chunk.js";import{u as S}from"./Bfzs9Sl1.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./BPgR5vGs.chunk.js";import"./C-Aq4Xkl.chunk.js";import"./BIgz-kuD.chunk.js";import"./COTdau6A.chunk.js";import"./BGyYkDnT.chunk.js";import"./Bwi6Bruj.chunk.js";import"./BKFoap_e.chunk.js";import"./D2WOxvRg.chunk.js";import"./BQso9AQl.chunk.js";import"./Kj832An8.chunk.js";import"./CJ3oIQlG.chunk.js";import"./1--zOUke.chunk.js";import"./CbaWlt2e.chunk.js";import"./D8qEOAnP.chunk.js";import"./CRTvC3qC.chunk.js";import"./Va6df4HV.chunk.js";import"./CRCiqh7u.chunk.js";import"./B6QdLVkd.chunk.js";import"./DiXTMx9M.chunk.js";import"./C85NI7Ud.chunk.js";import"./C6DEEFsr.chunk.js";import"./B668bf5B.chunk.js";import"./CeKBw2vH.chunk.js";import"./Di6TX7bW.chunk.js";import"./NFCjXwMo.chunk.js";import"./DOatLOGk.chunk.js";import"./z-Nrq5UI.chunk.js";import"./-OkQC3ld.chunk.js";var c=(e=>(e.Share="share",e.MasterObject="masterobject",e))(c||{});const b={createViewKey(e,t,r,a,s){const i={mediaId:e.toString(),mediaIdType:t};return r&&(i.shareContextId=r),{url:"/api/player/create-view-key",key:`view:key:${e}:${t}`,type:v.POST,data:i,cacheDuration:28800,success:a,error:s}}};function ue(e){var l;const t=p(x.video(e.videoId)),r=p(h.config()),a=p(b.createViewKey(e.videoId,c.MasterObject)),s=V("preview");C(t.statusCode);const{previewContext:i,clearPreviewContext:d}=S(e.videoId,!0);function u(k){}function n(){e.closePopup(),P.preventScrollTop(),w.trigger((i==null?void 0:i.appLink)??{application:g.EXCHANGE,action:f.Exchange.INDEX}),d()}const m=t.data&&r.hasCompleted&&a.hasCompleted;return o.jsx(y,{title:(l=t.data)==null?void 0:l.name,hideTitle:!0,closePopup:n,showLoadingSpinner:!m,size:"lg",bodyClassName:"p-0 rounded-3 position-relative",children:m&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"overflow-hidden rounded-top-lg",children:o.jsx(j,{viewKey:a.data.viewKey,playerApi:new URL(r.data.playerApiUrl),autoplay:!0,hotkeyElQuerySelector:"body",onReady:u,allowFullscreen:!1})}),o.jsx(A,{video:t.data,title:t.data.name,description:t.data.description,videoActions:s.getVideoActions(t.data)}),o.jsx(E,{closePopup:n})]})})}export{ue as ExchangePreviewView};
2
+ //# sourceMappingURL=BAFefpdu.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BAFefpdu.chunk.js","sources":["../../../../libs/shared/src/enums/MediaIdType.ts","../../../../libs/shared/src/flight-requests/PlayerRequests.ts","../../src/apps/exchange/views/exchange-preview/ExchangePreviewView.tsx"],"sourcesContent":["export enum MediaIdType {\n Share = 'share',\n MasterObject = 'masterobject'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PlayerViewKey } from 'libs/shared/interfaces';\n\nexport const PlayerRequests = {\n createViewKey(\n mediaId: string,\n mediaIdType: MediaIdType,\n shareContextId?: string,\n success?: (viewKey: PlayerViewKey) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n const data: HashObject = {\n mediaId: mediaId.toString(),\n mediaIdType\n };\n\n if (shareContextId)\n data.shareContextId = shareContextId;\n\n return {\n url: `/api/player/create-view-key`,\n key: `view:key:${mediaId}:${mediaIdType}`,\n type: HttpVerbs.POST,\n data,\n /**\n * A view key is valid for 8 hours, at that point we need refetch the view key\n */\n cacheDuration: 28800,\n success,\n error\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\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 { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { Config, PlayerViewKey, PopupViewProps, Video } 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 { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { useGetExchangeActions } from 'apps/exchange/hooks/useGetExchangeActions';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\n\ninterface ExchangePreviewViewProps extends PopupViewProps {\n videoId: string;\n currentTime: number;\n}\n\nexport function ExchangePreviewView(props: ExchangePreviewViewProps): JSX.Element {\n // const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.videoId, MediaIdType.MasterObject)\n );\n\n const videoActions = useGetExchangeActions('preview');\n useHandleDialogError(video.statusCode);\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.videoId, true);\n\n // TODO: Solve analytics collection\n function onReady(player: PlayerReference): void {\n player;\n // setupAnalytics(player);\n }\n\n // function setupAnalytics(player: PlayerReference): void {\n // analyticsTracker.current = new PlayerAnalyticsTracker({\n // player,\n // video: props.video,\n // analyticsLocation: props.embed ?\n // LocationContext.EmbeddedPlayer :\n // LocationContext.PlayPage,\n // shareId: props.shareLink?.id\n // });\n // }\n\n function onClose(): void {\n props.closePopup();\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext?.appLink ?? {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.INDEX\n });\n clearPreviewContext();\n }\n\n const hasLoaded = (\n video.data &&\n config.hasCompleted &&\n viewKey.hasCompleted\n );\n\n return (\n <Popup\n title={video.data?.name}\n hideTitle\n closePopup={onClose}\n showLoadingSpinner={!hasLoaded}\n size='lg'\n bodyClassName='p-0 rounded-3 position-relative'\n >\n {hasLoaded &&\n <>\n <div className='overflow-hidden rounded-top-lg'>\n <ClickViewPlayer\n viewKey={viewKey.data.viewKey}\n playerApi={new URL(config.data.playerApiUrl)}\n autoplay\n hotkeyElQuerySelector='body'\n onReady={onReady}\n allowFullscreen={false}\n />\n </div>\n <PreviewVideoDetails\n video={video.data}\n title={video.data.name}\n description={video.data.description}\n videoActions={videoActions.getVideoActions(video.data)}\n />\n <PlayerOverlayButtons closePopup={onClose} />\n </>\n }\n </Popup>\n );\n}"],"names":["MediaIdType","PlayerRequests","mediaId","mediaIdType","shareContextId","success","error","data","HttpVerbs","ExchangePreviewView","props","video","Flight.useBasicFetch","VideoRequests","config","ConfigRequests","viewKey","videoActions","useGetExchangeActions","useHandleDialogError","previewContext","clearPreviewContext","usePreviewContext","onReady","player","onClose","ScrollHelper","Core.AppLinkHelper","AppChannels","Actions","hasLoaded","jsx","Popup","_a","jsxs","Fragment","ClickViewPlayer","PreviewVideoDetails","PlayerOverlayButtons"],"mappings":"+pCAAO,IAAKA,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,aAAe,eAFLA,IAAAA,GAAA,CAAA,CAAA,ECQL,MAAMC,EAAiB,CAC5B,cACEC,EACAC,EACAC,EACAC,EACAC,EACgB,CAChB,MAAMC,EAAmB,CACvB,QAASL,EAAQ,SAAA,EACjB,YAAAC,CAAA,EAGF,OAAIC,IACFG,EAAK,eAAiBH,GAEjB,CACL,IAAK,8BACL,IAAK,YAAYF,CAAO,IAAIC,CAAW,GACvC,KAAMK,EAAU,KAChB,KAAAD,EAIA,cAAe,MACf,QAAAF,EACA,MAAAC,CAAA,CAEJ,CACF,ECPO,SAASG,GAAoBC,EAA8C,OAEhF,MAAMC,EAAQC,EAA4BC,EAAc,MAAMH,EAAM,OAAO,CAAC,EACtEI,EAASF,EAA6BG,EAAe,QAAQ,EAC7DC,EAAUJ,EACdX,EAAe,cAAcS,EAAM,QAASV,EAAY,YAAY,CAAA,EAGhEiB,EAAeC,EAAsB,SAAS,EACpDC,EAAqBR,EAAM,UAAU,EAErC,KAAM,CAAE,eAAAS,EAAgB,oBAAAC,CAAA,EAAwBC,EAAkBZ,EAAM,QAAS,EAAI,EAGrF,SAASa,EAAQC,EAA+B,CAGhD,CAaA,SAASC,GAAgB,CACvBf,EAAM,WAAA,EAENgB,EAAa,iBAAA,EACbC,EAAmB,SAAQP,GAAA,YAAAA,EAAgB,UAAW,CACpD,YAAaQ,EAAY,SACzB,OAAQC,EAAQ,SAAS,KAAA,CAC1B,EACDR,EAAA,CACF,CAEA,MAAMS,EACJnB,EAAM,MACNG,EAAO,cACPE,EAAQ,aAGV,OACEe,EAAAA,IAACC,EAAA,CACC,OAAOC,EAAAtB,EAAM,OAAN,YAAAsB,EAAY,KACnB,UAAS,GACT,WAAYR,EACZ,mBAAoB,CAACK,EACrB,KAAK,KACL,cAAc,kCAEb,YACCI,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAJ,EAAAA,IAAC,MAAA,CAAI,UAAU,iCACb,SAAAA,EAAAA,IAACK,EAAA,CACC,QAASpB,EAAQ,KAAK,QACtB,UAAW,IAAI,IAAIF,EAAO,KAAK,YAAY,EAC3C,SAAQ,GACR,sBAAsB,OACtB,QAAAS,EACA,gBAAiB,EAAA,CAAA,EAErB,EACAQ,EAAAA,IAACM,EAAA,CACC,MAAO1B,EAAM,KACb,MAAOA,EAAM,KAAK,KAClB,YAAaA,EAAM,KAAK,YACxB,aAAcM,EAAa,gBAAgBN,EAAM,IAAI,CAAA,CAAA,EAEvDoB,EAAAA,IAACO,EAAA,CAAqB,WAAYb,CAAA,CAAS,CAAA,CAAA,CAC7C,CAAA,CAAA,CAIR"}
@@ -0,0 +1,2 @@
1
+ import{a1 as b,a2 as n,R as i,aa as w,ad as k,ac as C,aH as E,ae as L,L as T,j as e,P as R,al as F,B as p,x as m,A as H,aC as I}from"./app-C44h5z5p.js";import{S as U}from"./D7wAo_p-.chunk.js";import{V as q}from"./BVnGsVC0.chunk.js";import{u as B}from"./Va6df4HV.chunk.js";import{E as u}from"./BesZ5ef9.chunk.js";import{u as G}from"./Bfzs9Sl1.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./D97YVAoS.chunk.js";const c="exchange.add",o=T.encloseNamespace(c);function X(s){var l;const x=B(),g=b(),f=n(I.config()),h=n(u.exchange()),a=n(q.video(s.id)),[r,j]=i.useState(!1),[A,P]=i.useState(!1),[V,v]=i.useState(null),{previewContext:t,clearPreviewContext:y}=G(s.id,!1);i.useEffect(()=>{!a.data||A||N()},[(l=a.data)==null?void 0:l.id]);async function N(){P(!0);try{const S=await g(u.addVideo(h.data.id,a.data.id));j(!0),v(S.id),w.logUserAction({id:a.data.id,name:a.data.name},{actionType:L.Submit,descriptor:E.AddToWorkspace,location:C.Popup,entity:k.Video})}catch{x.error(o("error")),s.closePopup()}}function d(){s.closePopup(),t!=null&&t.appLink&&(U.preventScrollTop(),H.trigger(t.appLink),y())}return e.jsx(R,{title:o("title"),closePopup:d,showLoadingSpinner:!r,children:r&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mx-auto w-75 mt-1 mb-2",children:e.jsx("img",{src:F.General.CONFETTI,className:"img-fluid",draggable:!1})}),e.jsx("div",{className:"text-center pb-3",children:e.jsx("h4",{className:"mb-2",children:e.jsx(p,{namespace:c,phrase:"added"})})}),e.jsxs(m,{children:[e.jsx(m.Cancel,{text:o("close"),onClick:d,variant:"link"}),e.jsx("a",{href:`${f.data.liteUrl}/videos/${V}`,className:"btn btn-dark",children:e.jsx("span",{className:"align-text-bottom me-1",children:e.jsx(p,{namespace:c,phrase:"open"})})})]})]})})}export{X as ExchangeAddView};
2
+ //# sourceMappingURL=BEM-fEAF.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BEM-fEAF.chunk.js","sources":["../../src/apps/exchange/views/exchange-add/ExchangeAddView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Config, Library, PopupViewProps, Video } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { usePreviewContext } from 'apps/exchange/hooks/usePreviewContext';\n\nconst namespace = 'exchange.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeAddViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function ExchangeAddView(props: ExchangeAddViewProps): JSX.Element {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const exchange = Flight.useBasicFetch<Library>(ExchangeRequests.exchange());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const [ added, setAdded ] = React.useState<boolean>(false);\n const [ adding, setAdding ] = React.useState<boolean>(false);\n const [ newVideoId, setNewVideoId ] = React.useState<string>(null);\n\n const { previewContext, clearPreviewContext } = usePreviewContext(props.id, false);\n\n React.useEffect(() => {\n if (!video.data || adding)\n return;\n\n addVideo();\n }, [video.data?.id]);\n\n async function addVideo() {\n setAdding(true);\n\n try {\n const newVideo = await fetchAsync<Video>(ExchangeRequests.addVideo(\n exchange.data.id,\n video.data.id\n ));\n\n setAdded(true);\n setNewVideoId(newVideo.id);\n\n AnalyticsHelper.logUserAction(\n { id: video.data.id, name: video.data.name },\n {\n actionType: UserAction.Submit,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: LocationContext.Popup,\n entity: EntityType.Video\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n }\n\n /**\n * Because the add view can be navigated to from the ExchangePreviewView\n * which is an addressable popup, we need to navigate back to the \n * original route when this popup is closed - Sha\n */\n function closePopup(): void {\n props.closePopup();\n\n if (!previewContext?.appLink)\n return;\n\n ScrollHelper.preventScrollTop();\n Core.AppLinkHelper.trigger(previewContext.appLink);\n clearPreviewContext();\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={closePopup}\n showLoadingSpinner={!added}\n >\n {added &&\n <>\n <div className='mx-auto w-75 mt-1 mb-2'>\n <img src={ImageUrls.General.CONFETTI} className='img-fluid' draggable={false} />\n </div>\n\n <div className='text-center pb-3'>\n <h4 className='mb-2'>\n <Text namespace={namespace} phrase={'added'} />\n </h4>\n </div>\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('close')}\n onClick={closePopup}\n variant='link'\n />\n <a href={`${config.data.liteUrl}/videos/${newVideoId}`} className={'btn btn-dark'}>\n <span className='align-text-bottom me-1'>\n <Text namespace={namespace} phrase={'open'} />\n </span>\n </a>\n </PopupButtons>\n </>\n }\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ExchangeAddView","props","alerts","useAlerts","fetchAsync","Flight.useGetFetchAsync","config","Flight.useBasicFetch","ConfigRequests","exchange","ExchangeRequests","video","VideoRequests","added","setAdded","React","adding","setAdding","newVideoId","setNewVideoId","previewContext","clearPreviewContext","usePreviewContext","addVideo","_a","newVideo","AnalyticsHelper","UserAction","VideoActionDescriptor","LocationContext","EntityType","closePopup","ScrollHelper","Core.AppLinkHelper","jsx","Popup","jsxs","Fragment","ImageUrls","Text","PopupButtons"],"mappings":"obAuBA,MAAMA,EAAY,eACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASG,EAAgBC,EAA0C,OACxE,MAAMC,EAASC,EAAA,EACTC,EAAaC,EAAO,EAEpBC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAWF,EAA8BG,EAAiB,UAAU,EACpEC,EAAQJ,EAA4BK,EAAc,MAAMX,EAAM,EAAE,CAAC,EAEjE,CAAEY,EAAOC,CAAS,EAAIC,EAAM,SAAkB,EAAK,EACnD,CAAEC,EAAQC,CAAU,EAAIF,EAAM,SAAkB,EAAK,EACrD,CAAEG,EAAYC,CAAc,EAAIJ,EAAM,SAAiB,IAAI,EAE3D,CAAE,eAAAK,EAAgB,oBAAAC,CAAA,EAAwBC,EAAkBrB,EAAM,GAAI,EAAK,EAEjFc,EAAM,UAAU,IAAM,CAChB,CAACJ,EAAM,MAAQK,GAGnBO,EAAA,CACF,EAAG,EAACC,EAAAb,EAAM,OAAN,YAAAa,EAAY,EAAE,CAAC,EAEnB,eAAeD,GAAW,CACxBN,EAAU,EAAI,EAEd,GAAI,CACF,MAAMQ,EAAW,MAAMrB,EAAkBM,EAAiB,SACxDD,EAAS,KAAK,GACdE,EAAM,KAAK,EAAA,CACZ,EAEDG,EAAS,EAAI,EACbK,EAAcM,EAAS,EAAE,EAEzBC,EAAgB,cACd,CAAE,GAAIf,EAAM,KAAK,GAAI,KAAMA,EAAM,KAAK,IAAA,EACtC,CACE,WAAYgB,EAAW,OACvB,WAAYC,EAAsB,eAClC,SAAUC,EAAgB,MAC1B,OAAQC,EAAW,KAAA,CACrB,CAEJ,MAAQ,CACN5B,EAAO,MAAMJ,EAAU,OAAO,CAAC,EAC/BG,EAAM,WAAA,CACR,CACF,CAOA,SAAS8B,GAAmB,CAC1B9B,EAAM,WAAA,EAEDmB,GAAA,MAAAA,EAAgB,UAGrBY,EAAa,iBAAA,EACbC,EAAmB,QAAQb,EAAe,OAAO,EACjDC,EAAA,EACF,CAEA,OACEa,EAAAA,IAACC,EAAA,CACC,MAAOrC,EAAU,OAAO,EACxB,WAAAiC,EACA,mBAAoB,CAAClB,EAEpB,YACCuB,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAH,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKI,EAAU,QAAQ,SAAU,UAAU,YAAY,UAAW,GAAO,EAChF,EAEAJ,MAAC,MAAA,CAAI,UAAU,mBACb,eAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAACK,EAAA,CAAK,UAAA1C,EAAsB,OAAQ,OAAA,CAAS,EAC/C,EACF,SAEC2C,EAAA,CACC,SAAA,CAAAN,EAAAA,IAACM,EAAa,OAAb,CACC,KAAM1C,EAAU,OAAO,EACvB,QAASiC,EACT,QAAQ,MAAA,CAAA,EAEVG,EAAAA,IAAC,KAAE,KAAM,GAAG5B,EAAO,KAAK,OAAO,WAAWY,CAAU,GAAI,UAAW,eACjE,SAAAgB,EAAAA,IAAC,OAAA,CAAK,UAAU,yBACd,SAAAA,EAAAA,IAACK,GAAK,UAAA1C,EAAsB,OAAQ,MAAA,CAAQ,CAAA,CAC9C,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAIR"}
@@ -0,0 +1,2 @@
1
+ import{j as s,aA as h,L as d}from"./app-C44h5z5p.js";const p="_minHeight_kz0hs_1",C="_restrictionBadgeCustom_kz0hs_4",R="_restrictionBadgeUser_kz0hs_8",v="_streamable_kz0hs_12",g={minHeight:p,restrictionBadgeCustom:C,restrictionBadgeUser:R,streamable:v};var n=(e=>(e.Custom="custom",e.User="year_group",e))(n||{});function f(e){return s.jsx("svg",{...e,children:s.jsx("path",{d:"M9.006 10h6.028c.006-.32.01-.641.002-.974-.016-.663-.077-1.28-.243-1.808-.164-.52-.424-.934-.83-1.223-.407-.292-1.015-.495-1.943-.495s-1.536.203-1.944.495c-.405.29-.665.703-.83 1.223-.166.528-.227 1.145-.242 1.808-.008.333-.004.655.002.974m7.028 0H17a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h1.006c-.006-.33-.01-.67-.002-.997.016-.696.08-1.424.289-2.085.21-.67.576-1.29 1.202-1.737.623-.445 1.453-.681 2.525-.681s1.902.236 2.525.681c.626.447.99 1.068 1.202 1.737.208.661.272 1.389.288 2.085.008.326.005.667 0 .997m-1.014 1H7v8h10v-8h-1.98",fill:"currentColor"})})}function x(e){return s.jsxs("svg",{...e,children:[s.jsx("defs",{children:s.jsx("path",{id:"a",d:"M12 19.059A7.059 7.059 0 1 0 12 4.94a7.059 7.059 0 0 0 0 14.118M12 4a8 8 0 1 1 0 16 8 8 0 0 1 0-16m-.229 2.743a.457.457 0 0 0-.457.457v5.486c0 .147.071.286.191.372l3.174 2.27a.457.457 0 1 0 .532-.744l-2.982-2.133V7.2a.457.457 0 0 0-.458-.457",fill:"currentColor"})}),s.jsxs("g",{fill:"none",fillRule:"evenodd",children:[s.jsx("mask",{id:"b",fill:"#fff",children:s.jsx("use",{href:"#a"})}),s.jsx("use",{fill:"#000",fillRule:"nonzero",href:"#a"}),s.jsx("g",{fill:"#383838",mask:"url(#b)",children:s.jsx("path",{d:"M0 0h24v24H0z",fill:"currentColor"})})]})]})}const y="shared.shared-utils",c=d.encloseNamespace(y),_={[n.Custom]:g.restrictionBadgeCustom,[n.User]:g.restrictionBadgeUser},j={[n.Custom]:x,[n.User]:f},B={[n.Custom]:"restrictionCustom",[n.User]:"restrictionYearGroup"},m={[n.Custom]:200,[n.User]:100},o={mapRestrictionToClass(e){var r;if(!((r=e==null?void 0:e.value)!=null&&r.length))return"";const t=o.getWeightedRestriction(e.value);return _[t.type]},mapRestrictionToSvg(e){var r;if(!((r=e==null?void 0:e.value)!=null&&r.length))return f;const t=o.getWeightedRestriction(e.value);return j[t.type]},mapRestrictionToText(e,t){var l;if(!((l=e==null?void 0:e.value)!=null&&l.length)||!(t!=null&&t.length))return"";const r=o.getWeightedRestriction(e.value),a=t.find(u=>u.value===r.yearGroup),i=B[r.type];if(r.type===n.User)return r.yearGroup===null?c("restrictionStaff"):a?t.length===1?c("restrictionStudents"):c(i,{yearGroup:a.name}):"";if(r.type===n.Custom){const u=o.getRestrictionDuration(r);return u?c(i,{duration:u,smartCount:u}):c("restrictionCustomLessThanDay",{duration:u,smartCount:1})}return""},getWeightedRestriction(e,t="highest"){if(e!=null&&e.length)return e.length===1?e[0]:e.reduce((r,a)=>{const i=m[r.type],l=m[a.type];return t==="highest"&&i>l||t==="lowest"&&i<l?r:a})},getRestrictionByType(e,t){if(!o.hasRestrictions(e))return null;const r=Array.isArray(t)?t:[t],a=e._restrictions.value.filter(i=>r.includes(i.type));return o.getWeightedRestriction(a)},getRestrictionDuration(e){if(e.type!==n.Custom||!e.expiresOn)return;const t=h.convertUTCToLocal(e.expiresOn);if(t)return h.diffBetween(t,new Date,"day")},hasCustomRestriction(e){return!!o.getRestrictionByType(e,[n.Custom])},hasRestrictions(e){var t,r;return!!((r=(t=e==null?void 0:e._restrictions)==null?void 0:t.value)!=null&&r.length)}};export{f as L,o as R,n as a,g as s};
2
+ //# sourceMappingURL=BGyYkDnT.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BGyYkDnT.chunk.js","sources":["../../../../libs/shared/src/enums/RestrictionType.ts","../../../../libs/shared/src/images/svg/status/LockSvg.tsx","../../../../libs/shared/src/images/svg/status/TimerSvg.tsx","../../../../libs/shared/src/utils/RestrictionHelper.ts"],"sourcesContent":["/**\n * Restriction Types for an object\n */\nexport enum RestrictionType {\n /** Generated for customers who have turned content review on */\n Custom = 'custom',\n\n /** Restriction created by the user */\n User = 'year_group'\n}","import React from 'react';\n\nexport function LockSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.006 10h6.028c.006-.32.01-.641.002-.974-.016-.663-.077-1.28-.243-1.808-.164-.52-.424-.934-.83-1.223-.407-.292-1.015-.495-1.943-.495s-1.536.203-1.944.495c-.405.29-.665.703-.83 1.223-.166.528-.227 1.145-.242 1.808-.008.333-.004.655.002.974m7.028 0H17a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h1.006c-.006-.33-.01-.67-.002-.997.016-.696.08-1.424.289-2.085.21-.67.576-1.29 1.202-1.737.623-.445 1.453-.681 2.525-.681s1.902.236 2.525.681c.626.447.99 1.068 1.202 1.737.208.661.272 1.389.288 2.085.008.326.005.667 0 .997m-1.014 1H7v8h10v-8h-1.98'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function TimerSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='a'\n d='M12 19.059A7.059 7.059 0 1 0 12 4.94a7.059 7.059 0 0 0 0 14.118M12 4a8 8 0 1 1 0 16 8 8 0 0 1 0-16m-.229 2.743a.457.457 0 0 0-.457.457v5.486c0 .147.071.286.191.372l3.174 2.27a.457.457 0 1 0 .532-.744l-2.982-2.133V7.2a.457.457 0 0 0-.458-.457'\n fill='currentColor'\n />\n </defs>\n <g fill='none' fillRule='evenodd'>\n <mask id='b' fill='#fff'>\n <use href='#a' />\n </mask>\n <use fill='#000' fillRule='nonzero' href='#a' />\n <g fill='#383838' mask='url(#b)'>\n <path d='M0 0h24v24H0z' fill='currentColor' />\n </g>\n </g>\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport styles from 'libs/shared/components/badges/badge.module.scss';\nimport { RestrictionType } from 'libs/shared/enums/RestrictionType';\nimport { ObjectsRestriction, Restrictions, VideoTypes, YearGroup } from 'libs/shared/interfaces';\n\nimport { LockSvg } from '../images/svg/status/LockSvg';\nimport { TimerSvg } from '../images/svg/status/TimerSvg';\n\nimport { SvgIcon } from './SvgHelper';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst ClassNameMap: {[key in RestrictionType]: string} = {\n [RestrictionType.Custom]: styles.restrictionBadgeCustom,\n [RestrictionType.User]: styles.restrictionBadgeUser\n};\n\nconst IconMap: {[key in RestrictionType]: SvgIcon} = {\n [RestrictionType.Custom]: TimerSvg,\n [RestrictionType.User]: LockSvg\n};\n\nconst PhraseMap: {[key in RestrictionType]: string} = {\n [RestrictionType.Custom]: 'restrictionCustom',\n [RestrictionType.User]: 'restrictionYearGroup'\n};\n\nconst WeightMap: {[Key in RestrictionType]: number} = {\n [RestrictionType.Custom]: 200,\n [RestrictionType.User]: 100\n};\n\nexport const RestrictionHelper = {\n mapRestrictionToClass(restrictions: Restrictions): string {\n if (!restrictions?.value?.length)\n return '';\n\n const restriction = RestrictionHelper.getWeightedRestriction(restrictions.value);\n return ClassNameMap[restriction.type];\n },\n\n mapRestrictionToSvg(restrictions: Restrictions): SvgIcon {\n if (!restrictions?.value?.length)\n return LockSvg;\n\n const restriction = RestrictionHelper.getWeightedRestriction(restrictions.value);\n return IconMap[restriction.type];\n },\n\n mapRestrictionToText(\n restrictions: Restrictions,\n yearGroups: YearGroup[]\n ): string {\n if (!restrictions?.value?.length || !yearGroups?.length)\n return '';\n\n const restriction = RestrictionHelper.getWeightedRestriction(restrictions.value);\n const yearGroup = yearGroups.find(y => y.value === restriction.yearGroup);\n\n const phrase = PhraseMap[restriction.type];\n if (restriction.type === RestrictionType.User) {\n if (restriction.yearGroup === null)\n return getPhrase('restrictionStaff');\n\n if (!yearGroup)\n return '';\n\n if (yearGroups.length === 1)\n return getPhrase('restrictionStudents');\n\n return getPhrase(phrase, { yearGroup: yearGroup.name });\n }\n\n if (restriction.type === RestrictionType.Custom) {\n const duration = RestrictionHelper.getRestrictionDuration(restriction);\n return duration ?\n getPhrase(phrase, { duration, smartCount: duration }) :\n getPhrase('restrictionCustomLessThanDay', { duration, smartCount: 1 });\n }\n\n return '';\n },\n\n /**\n * A video can have multiple restrictions, in that case we need to display\n * only one restriction. By default we display the restriction with highest\n * weight bias.\n */\n getWeightedRestriction(\n restrictions: ObjectsRestriction[],\n bias: 'highest' | 'lowest' = 'highest'\n ): ObjectsRestriction {\n if (!restrictions?.length) return;\n \n if (restrictions.length === 1) return restrictions[0];\n\n return restrictions.reduce((previous, current) => {\n const previousWeight = WeightMap[previous.type];\n const currentWeight = WeightMap[current.type];\n\n if (bias === 'highest' && previousWeight > currentWeight) return previous;\n if (bias === 'lowest' && previousWeight < currentWeight) return previous;\n\n return current;\n });\n },\n\n getRestrictionByType(\n video: VideoTypes,\n type: RestrictionType | RestrictionType[]\n ): ObjectsRestriction {\n if (!RestrictionHelper.hasRestrictions(video))\n return null;\n\n const types = Array.isArray(type) ? type : [type];\n\n const restrictions = video._restrictions.value.filter(r => types.includes(r.type));\n return RestrictionHelper.getWeightedRestriction(restrictions);\n },\n\n getRestrictionDuration(\n restriction: ObjectsRestriction\n ): number {\n if (restriction.type !== RestrictionType.Custom || !restriction.expiresOn) return;\n\n const expiresOn = DateHelper.convertUTCToLocal(restriction.expiresOn);\n if (!expiresOn) return;\n\n return DateHelper.diffBetween(expiresOn, new Date(), 'day');\n },\n\n hasCustomRestriction(\n video: VideoTypes\n ): boolean {\n return !!RestrictionHelper.getRestrictionByType(video, [RestrictionType.Custom]);\n },\n\n hasRestrictions(video: VideoTypes): boolean {\n return !!video?._restrictions?.value?.length;\n }\n};"],"names":["RestrictionType","LockSvg","props","jsx","TimerSvg","jsxs","namespace","getPhrase","LanguageService","ClassNameMap","styles","IconMap","PhraseMap","WeightMap","RestrictionHelper","restrictions","_a","restriction","yearGroups","yearGroup","y","phrase","duration","bias","previous","current","previousWeight","currentWeight","video","type","types","r","expiresOn","DateHelper","_b"],"mappings":"8PAGO,IAAKA,GAAAA,IAEVA,EAAA,OAAS,SAGTA,EAAA,KAAO,aALGA,IAAAA,GAAA,CAAA,CAAA,ECDL,SAASC,EAAQC,EAAsC,CAC5D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,mjBACF,KAAK,cAAA,CAAA,EAET,CAEJ,CCTO,SAASC,EAASF,EAAsC,CAC7D,OACEG,EAAAA,KAAC,MAAA,CAAK,GAAGH,EACP,SAAA,CAAAC,MAAC,OAAA,CACC,SAAAA,EAAAA,IAAC,OAAA,CACC,GAAG,IACH,EAAE,oPACF,KAAK,cAAA,CAAA,EAET,EACAE,EAAAA,KAAC,IAAA,CAAE,KAAK,OAAO,SAAS,UACtB,SAAA,CAAAF,EAAAA,IAAC,OAAA,CAAK,GAAG,IAAI,KAAK,OAChB,SAAAA,EAAAA,IAAC,MAAA,CAAI,KAAK,IAAA,CAAK,CAAA,CACjB,QACC,MAAA,CAAI,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,EAC9CA,EAAAA,IAAC,IAAA,CAAE,KAAK,UAAU,KAAK,UACrB,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAE,gBAAgB,KAAK,cAAA,CAAe,CAAA,CAC9C,CAAA,CAAA,CACF,CAAA,EACF,CAEJ,CCXA,MAAMG,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAEtDG,EAAmD,CACvD,CAACT,EAAgB,MAAM,EAAGU,EAAO,uBACjC,CAACV,EAAgB,IAAI,EAAGU,EAAO,oBACjC,EAEMC,EAA+C,CACnD,CAACX,EAAgB,MAAM,EAAGI,EAC1B,CAACJ,EAAgB,IAAI,EAAGC,CAC1B,EAEMW,EAAgD,CACpD,CAACZ,EAAgB,MAAM,EAAG,oBAC1B,CAACA,EAAgB,IAAI,EAAG,sBAC1B,EAEMa,EAAgD,CACpD,CAACb,EAAgB,MAAM,EAAG,IAC1B,CAACA,EAAgB,IAAI,EAAG,GAC1B,EAEac,EAAoB,CAC/B,sBAAsBC,EAAoC,OACxD,GAAI,GAACC,EAAAD,GAAA,YAAAA,EAAc,QAAd,MAAAC,EAAqB,QACxB,MAAO,GAET,MAAMC,EAAcH,EAAkB,uBAAuBC,EAAa,KAAK,EAC/E,OAAON,EAAaQ,EAAY,IAAI,CACtC,EAEA,oBAAoBF,EAAqC,OACvD,GAAI,GAACC,EAAAD,GAAA,YAAAA,EAAc,QAAd,MAAAC,EAAqB,QACxB,OAAOf,EAET,MAAMgB,EAAcH,EAAkB,uBAAuBC,EAAa,KAAK,EAC/E,OAAOJ,EAAQM,EAAY,IAAI,CACjC,EAEA,qBACEF,EACAG,EACQ,OACR,GAAI,GAACF,EAAAD,GAAA,YAAAA,EAAc,QAAd,MAAAC,EAAqB,SAAU,EAACE,GAAA,MAAAA,EAAY,QAC/C,MAAO,GAET,MAAMD,EAAcH,EAAkB,uBAAuBC,EAAa,KAAK,EACzEI,EAAYD,EAAW,QAAUE,EAAE,QAAUH,EAAY,SAAS,EAElEI,EAAST,EAAUK,EAAY,IAAI,EACzC,GAAIA,EAAY,OAASjB,EAAgB,KACvC,OAAIiB,EAAY,YAAc,KACrBV,EAAU,kBAAkB,EAEhCY,EAGDD,EAAW,SAAW,EACjBX,EAAU,qBAAqB,EAEjCA,EAAUc,EAAQ,CAAE,UAAWF,EAAU,KAAM,EAL7C,GAQX,GAAIF,EAAY,OAASjB,EAAgB,OAAQ,CAC/C,MAAMsB,EAAWR,EAAkB,uBAAuBG,CAAW,EACrE,OAAOK,EACLf,EAAUc,EAAQ,CAAE,SAAAC,EAAU,WAAYA,CAAA,CAAU,EACpDf,EAAU,+BAAgC,CAAE,SAAAe,EAAU,WAAY,EAAG,CACzE,CAEA,MAAO,EACT,EAOA,uBACEP,EACAQ,EAA6B,UACT,CACpB,GAAKR,GAAA,MAAAA,EAAc,OAEnB,OAAIA,EAAa,SAAW,EAAUA,EAAa,CAAC,EAE7CA,EAAa,OAAO,CAACS,EAAUC,IAAY,CAChD,MAAMC,EAAiBb,EAAUW,EAAS,IAAI,EACxCG,EAAgBd,EAAUY,EAAQ,IAAI,EAG5C,OADIF,IAAS,WAAaG,EAAiBC,GACvCJ,IAAS,UAAYG,EAAiBC,EAAsBH,EAEzDC,CACT,CAAC,CACH,EAEA,qBACEG,EACAC,EACoB,CACpB,GAAI,CAACf,EAAkB,gBAAgBc,CAAK,EAC1C,OAAO,KAET,MAAME,EAAQ,MAAM,QAAQD,CAAI,EAAIA,EAAO,CAACA,CAAI,EAE1Cd,EAAea,EAAM,cAAc,MAAM,UAAYE,EAAM,SAASC,EAAE,IAAI,CAAC,EACjF,OAAOjB,EAAkB,uBAAuBC,CAAY,CAC9D,EAEA,uBACEE,EACQ,CACR,GAAIA,EAAY,OAASjB,EAAgB,QAAU,CAACiB,EAAY,UAAW,OAE3E,MAAMe,EAAYC,EAAW,kBAAkBhB,EAAY,SAAS,EACpE,GAAKe,EAEL,OAAOC,EAAW,YAAYD,EAAW,IAAI,KAAQ,KAAK,CAC5D,EAEA,qBACEJ,EACS,CACT,MAAO,CAAC,CAACd,EAAkB,qBAAqBc,EAAO,CAAC5B,EAAgB,MAAM,CAAC,CACjF,EAEA,gBAAgB4B,EAA4B,SAC1C,MAAO,CAAC,GAACM,GAAAlB,EAAAY,GAAA,YAAAA,EAAO,gBAAP,YAAAZ,EAAsB,QAAtB,MAAAkB,EAA6B,OACxC,CACF"}
@@ -0,0 +1,2 @@
1
+ import{aK as F,j as e,B as h,aL as k,L as j,R as y,w as T,aM as B,aA as $,a0 as D,x as V,a1 as I,a2 as x,P as M,aC as H,a4 as U,A as Y,aa as O,ab as G,ac as W,aH as z,ad as K,ae as Q}from"./app-C44h5z5p.js";import{S as _}from"./D7wAo_p-.chunk.js";import{F as J}from"./BSZIQf6b.chunk.js";import{l as m,a as X,F as f}from"./DLlygSGB.chunk.js";import{F as Z}from"./DInJ42HN.chunk.js";import{B as ee}from"./BtB8UFKw.chunk.js";import{R as ae}from"./QfCSKVqV.chunk.js";import{V as te}from"./BVnGsVC0.chunk.js";import{u as se}from"./Va6df4HV.chunk.js";import{u as re}from"./B9JNzh8J.chunk.js";import{E as ne}from"./BesZ5ef9.chunk.js";import{u as oe}from"./Bfzs9Sl1.chunk.js";import"./BPgR5vGs.chunk.js";import"./BlDVEZsX.chunk.js";import"./pkzD5BEm.chunk.js";import"./D97YVAoS.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(T,{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=B(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(J,{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(H.config()),g=x(U.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(),O.logUserAction({id:r.data.id,name:r.data.name},{actionType:Q.Submit,entity:K.Video,descriptor:z.SuggestEdit,location:W.Popup,workflowPhase:G.Complete})}catch(A){d(A,v("error"),v("noEmailError"))}finally{q()}}function E(){t.closePopup(),s!=null&&s.appLink&&(_.preventScrollTop(),Y.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=BIdpr1Qt.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BIdpr1Qt.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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"}