@clickview/exchange 0.47.0 → 0.47.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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/B-5ydzuM.chunk.js +2 -0
  97. package/dist/scripts/B-5ydzuM.chunk.js.map +1 -0
  98. package/dist/scripts/B3-JqlcP.chunk.js +2 -0
  99. package/dist/scripts/B3-JqlcP.chunk.js.map +1 -0
  100. package/dist/scripts/B668bf5B.chunk.js +2 -0
  101. package/dist/scripts/B668bf5B.chunk.js.map +1 -0
  102. package/dist/scripts/B7u1qZUC.chunk.js +2 -0
  103. package/dist/scripts/B7u1qZUC.chunk.js.map +1 -0
  104. package/dist/scripts/B8wzW7Yj.chunk.js +2 -0
  105. package/dist/scripts/B8wzW7Yj.chunk.js.map +1 -0
  106. package/dist/scripts/B9rPD6n8.chunk.js +2 -0
  107. package/dist/scripts/B9rPD6n8.chunk.js.map +1 -0
  108. package/dist/scripts/BF36nt4r.chunk.js +2 -0
  109. package/dist/scripts/BF36nt4r.chunk.js.map +1 -0
  110. package/dist/scripts/BGnfLy0q.chunk.js +15 -0
  111. package/dist/scripts/BGnfLy0q.chunk.js.map +1 -0
  112. package/dist/scripts/BNzrcPxP.chunk.js +2 -0
  113. package/dist/scripts/BNzrcPxP.chunk.js.map +1 -0
  114. package/dist/scripts/BO4-fm-e.chunk.js +2 -0
  115. package/dist/scripts/BO4-fm-e.chunk.js.map +1 -0
  116. package/dist/scripts/BPSvvoqU.chunk.js +362 -0
  117. package/dist/scripts/BPSvvoqU.chunk.js.map +1 -0
  118. package/dist/scripts/BPZ_jyzP.chunk.js +2 -0
  119. package/dist/scripts/BPZ_jyzP.chunk.js.map +1 -0
  120. package/dist/scripts/BRAYzUlB.chunk.js +2 -0
  121. package/dist/scripts/BRAYzUlB.chunk.js.map +1 -0
  122. package/dist/scripts/BRJXjLDa.chunk.js +2 -0
  123. package/dist/scripts/BRJXjLDa.chunk.js.map +1 -0
  124. package/dist/scripts/BVcQUV7q.chunk.js +2 -0
  125. package/dist/scripts/BVcQUV7q.chunk.js.map +1 -0
  126. package/dist/scripts/B_bz6ygY.chunk.js +2 -0
  127. package/dist/scripts/B_bz6ygY.chunk.js.map +1 -0
  128. package/dist/scripts/Be9uUZcG.chunk.js +2 -0
  129. package/dist/scripts/Be9uUZcG.chunk.js.map +1 -0
  130. package/dist/scripts/BgaIiZcl.chunk.js +2 -0
  131. package/dist/scripts/BgaIiZcl.chunk.js.map +1 -0
  132. package/dist/scripts/BietNZU2.chunk.js +2 -0
  133. package/dist/scripts/BietNZU2.chunk.js.map +1 -0
  134. package/dist/scripts/BkyZfdvv.chunk.js +3 -0
  135. package/dist/scripts/BkyZfdvv.chunk.js.map +1 -0
  136. package/dist/scripts/BlDVEZsX.chunk.js +2 -0
  137. package/dist/scripts/BlDVEZsX.chunk.js.map +1 -0
  138. package/dist/scripts/Bm-ruqha.chunk.js +2 -0
  139. package/dist/scripts/Bm-ruqha.chunk.js.map +1 -0
  140. package/dist/scripts/Bo-XjbmT.chunk.js +2 -0
  141. package/dist/scripts/Bo-XjbmT.chunk.js.map +1 -0
  142. package/dist/scripts/Bpa_PvUX.chunk.js +2 -0
  143. package/dist/scripts/Bpa_PvUX.chunk.js.map +1 -0
  144. package/dist/scripts/Bu8WHAmF.chunk.js +2 -0
  145. package/dist/scripts/Bu8WHAmF.chunk.js.map +1 -0
  146. package/dist/scripts/C-jOhSzY.chunk.js +2 -0
  147. package/dist/scripts/C-jOhSzY.chunk.js.map +1 -0
  148. package/dist/scripts/C1_c6qh4.chunk.js +2 -0
  149. package/dist/scripts/C1_c6qh4.chunk.js.map +1 -0
  150. package/dist/scripts/C7yAlGG9.chunk.js +2 -0
  151. package/dist/scripts/C7yAlGG9.chunk.js.map +1 -0
  152. package/dist/scripts/CDFiJlb4.chunk.js +2 -0
  153. package/dist/scripts/CDFiJlb4.chunk.js.map +1 -0
  154. package/dist/scripts/CHNNWZoa.chunk.js +2 -0
  155. package/dist/scripts/CHNNWZoa.chunk.js.map +1 -0
  156. package/dist/scripts/CI47nh5L.chunk.js +2 -0
  157. package/dist/scripts/CI47nh5L.chunk.js.map +1 -0
  158. package/dist/scripts/CIkmhMNR.chunk.js +2 -0
  159. package/dist/scripts/CIkmhMNR.chunk.js.map +1 -0
  160. package/dist/scripts/CJ3oIQlG.chunk.js +2 -0
  161. package/dist/scripts/CJ3oIQlG.chunk.js.map +1 -0
  162. package/dist/scripts/CPApz2KV.chunk.js +2 -0
  163. package/dist/scripts/CPApz2KV.chunk.js.map +1 -0
  164. package/dist/scripts/CRO8NV-g.chunk.js +2 -0
  165. package/dist/scripts/CRO8NV-g.chunk.js.map +1 -0
  166. package/dist/scripts/CUSpSpZ7.chunk.js +8 -0
  167. package/dist/scripts/CUSpSpZ7.chunk.js.map +1 -0
  168. package/dist/scripts/CWIqj_F3.chunk.js +2 -0
  169. package/dist/scripts/CWIqj_F3.chunk.js.map +1 -0
  170. package/dist/scripts/CY7w74ke.chunk.js +50 -0
  171. package/dist/scripts/CY7w74ke.chunk.js.map +1 -0
  172. package/dist/scripts/CYrgiYqL.chunk.js +2 -0
  173. package/dist/scripts/CYrgiYqL.chunk.js.map +1 -0
  174. package/dist/scripts/C_RBC04Q.chunk.js +2 -0
  175. package/dist/scripts/C_RBC04Q.chunk.js.map +1 -0
  176. package/dist/scripts/CePx6UH8.chunk.js +2 -0
  177. package/dist/scripts/CePx6UH8.chunk.js.map +1 -0
  178. package/dist/scripts/Cg5KzJdC.chunk.js +2 -0
  179. package/dist/scripts/Cg5KzJdC.chunk.js.map +1 -0
  180. package/dist/scripts/ChTv7GMQ.chunk.js +2 -0
  181. package/dist/scripts/ChTv7GMQ.chunk.js.map +1 -0
  182. package/dist/scripts/ChiWcyj1.chunk.js +2 -0
  183. package/dist/scripts/ChiWcyj1.chunk.js.map +1 -0
  184. package/dist/scripts/Ci-X7TGl.chunk.js +5 -0
  185. package/dist/scripts/Ci-X7TGl.chunk.js.map +1 -0
  186. package/dist/scripts/Ckz2DJ_U.chunk.js +2 -0
  187. package/dist/scripts/Ckz2DJ_U.chunk.js.map +1 -0
  188. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  189. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  190. package/dist/scripts/CykxXZkx.chunk.js +2 -0
  191. package/dist/scripts/CykxXZkx.chunk.js.map +1 -0
  192. package/dist/scripts/D-ZSOo7Q.chunk.js +2 -0
  193. package/dist/scripts/D-ZSOo7Q.chunk.js.map +1 -0
  194. package/dist/scripts/D-likyuC.chunk.js +2 -0
  195. package/dist/scripts/D-likyuC.chunk.js.map +1 -0
  196. package/dist/scripts/D1pufNca.chunk.js +2 -0
  197. package/dist/scripts/D1pufNca.chunk.js.map +1 -0
  198. package/dist/scripts/D4CIz80G.chunk.js +2 -0
  199. package/dist/scripts/D4CIz80G.chunk.js.map +1 -0
  200. package/dist/scripts/D7VkMmnb.chunk.js +2 -0
  201. package/dist/scripts/D7VkMmnb.chunk.js.map +1 -0
  202. package/dist/scripts/D95rI9HN.chunk.js +2 -0
  203. package/dist/scripts/D95rI9HN.chunk.js.map +1 -0
  204. package/dist/scripts/DJpMcGX1.chunk.js +2 -0
  205. package/dist/scripts/DJpMcGX1.chunk.js.map +1 -0
  206. package/dist/scripts/DMCzbHMl.chunk.js +2 -0
  207. package/dist/scripts/DMCzbHMl.chunk.js.map +1 -0
  208. package/dist/scripts/DOs-gjWY.chunk.js +2 -0
  209. package/dist/scripts/DOs-gjWY.chunk.js.map +1 -0
  210. package/dist/scripts/DPtwsIzh.chunk.js +2 -0
  211. package/dist/scripts/DPtwsIzh.chunk.js.map +1 -0
  212. package/dist/scripts/DTpRellp.chunk.js +2 -0
  213. package/dist/scripts/DTpRellp.chunk.js.map +1 -0
  214. package/dist/scripts/DTtpo7W0.chunk.js +2 -0
  215. package/dist/scripts/DTtpo7W0.chunk.js.map +1 -0
  216. package/dist/scripts/DXjf6BeH.chunk.js +2 -0
  217. package/dist/scripts/DXjf6BeH.chunk.js.map +1 -0
  218. package/dist/scripts/DYgHg3xX.chunk.js +2 -0
  219. package/dist/scripts/DYgHg3xX.chunk.js.map +1 -0
  220. package/dist/scripts/DZpf3JyV.chunk.js +2 -0
  221. package/dist/scripts/DZpf3JyV.chunk.js.map +1 -0
  222. package/dist/scripts/D_mIsJh2.chunk.js +2 -0
  223. package/dist/scripts/D_mIsJh2.chunk.js.map +1 -0
  224. package/dist/scripts/DeT4vB6l.chunk.js +2 -0
  225. package/dist/scripts/DeT4vB6l.chunk.js.map +1 -0
  226. package/dist/scripts/DhC-T3Lw.chunk.js +2 -0
  227. package/dist/scripts/DhC-T3Lw.chunk.js.map +1 -0
  228. package/dist/scripts/DhZaCYmC.chunk.js +2 -0
  229. package/dist/scripts/DhZaCYmC.chunk.js.map +1 -0
  230. package/dist/scripts/DmWfOnj1.chunk.js +2 -0
  231. package/dist/scripts/DmWfOnj1.chunk.js.map +1 -0
  232. package/dist/scripts/DqCESxCM.chunk.js +2 -0
  233. package/dist/scripts/DqCESxCM.chunk.js.map +1 -0
  234. package/dist/scripts/DvNnjPg5.chunk.js +2 -0
  235. package/dist/scripts/DvNnjPg5.chunk.js.map +1 -0
  236. package/dist/scripts/DxQMPV5P.chunk.js +2 -0
  237. package/dist/scripts/DxQMPV5P.chunk.js.map +1 -0
  238. package/dist/scripts/DxSRnTZT.chunk.js +2 -0
  239. package/dist/scripts/DxSRnTZT.chunk.js.map +1 -0
  240. package/dist/scripts/FtezGuzd.chunk.js +2 -0
  241. package/dist/scripts/FtezGuzd.chunk.js.map +1 -0
  242. package/dist/scripts/IFRPGDQf.chunk.js +2 -0
  243. package/dist/scripts/IFRPGDQf.chunk.js.map +1 -0
  244. package/dist/scripts/JNMAKyNq.chunk.js +2 -0
  245. package/dist/scripts/JNMAKyNq.chunk.js.map +1 -0
  246. package/dist/scripts/Kj832An8.chunk.js +2 -0
  247. package/dist/scripts/Kj832An8.chunk.js.map +1 -0
  248. package/dist/scripts/MwatUxhm.chunk.js +2 -0
  249. package/dist/scripts/MwatUxhm.chunk.js.map +1 -0
  250. package/dist/scripts/NLYsyNLg.chunk.js +2 -0
  251. package/dist/scripts/NLYsyNLg.chunk.js.map +1 -0
  252. package/dist/scripts/P2J0rmbX.chunk.js +2 -0
  253. package/dist/scripts/P2J0rmbX.chunk.js.map +1 -0
  254. package/dist/scripts/PzQ6JDDL.chunk.js +2 -0
  255. package/dist/scripts/PzQ6JDDL.chunk.js.map +1 -0
  256. package/dist/scripts/QfCSKVqV.chunk.js +2 -0
  257. package/dist/scripts/QfCSKVqV.chunk.js.map +1 -0
  258. package/dist/scripts/QnZLc1Rx.chunk.js +2 -0
  259. package/dist/scripts/QnZLc1Rx.chunk.js.map +1 -0
  260. package/dist/scripts/RJLacO7e.chunk.js +2 -0
  261. package/dist/scripts/RJLacO7e.chunk.js.map +1 -0
  262. package/dist/scripts/SwyafJDN.chunk.js +2 -0
  263. package/dist/scripts/SwyafJDN.chunk.js.map +1 -0
  264. package/dist/scripts/ZJlVW2Ry.chunk.js +2 -0
  265. package/dist/scripts/ZJlVW2Ry.chunk.js.map +1 -0
  266. package/dist/scripts/_sYSSSUN.chunk.js +2 -0
  267. package/dist/scripts/_sYSSSUN.chunk.js.map +1 -0
  268. package/dist/scripts/aYSRXnKS.chunk.js +2 -0
  269. package/dist/scripts/aYSRXnKS.chunk.js.map +1 -0
  270. package/dist/scripts/app-DxIP7Chi.js +203 -0
  271. package/dist/scripts/app-DxIP7Chi.js.map +1 -0
  272. package/dist/scripts/cgmaXINJ.chunk.js +2 -0
  273. package/dist/scripts/cgmaXINJ.chunk.js.map +1 -0
  274. package/dist/scripts/cw5ndfQh.chunk.js +2 -0
  275. package/dist/scripts/cw5ndfQh.chunk.js.map +1 -0
  276. package/dist/scripts/oZTtKho4.chunk.js +2 -0
  277. package/dist/scripts/oZTtKho4.chunk.js.map +1 -0
  278. package/dist/scripts/pkzD5BEm.chunk.js +2 -0
  279. package/dist/scripts/pkzD5BEm.chunk.js.map +1 -0
  280. package/dist/scripts/q-llueA4.chunk.js +2 -0
  281. package/dist/scripts/q-llueA4.chunk.js.map +1 -0
  282. package/dist/scripts/somfQ0OC.chunk.js +2 -0
  283. package/dist/scripts/somfQ0OC.chunk.js.map +1 -0
  284. package/dist/scripts/tcOwjCrz.chunk.js +6 -0
  285. package/dist/scripts/tcOwjCrz.chunk.js.map +1 -0
  286. package/dist/scripts/tjMjOV-C.chunk.js +2 -0
  287. package/dist/scripts/tjMjOV-C.chunk.js.map +1 -0
  288. package/dist/scripts/tzCBjHpZ.chunk.js +2 -0
  289. package/dist/scripts/tzCBjHpZ.chunk.js.map +1 -0
  290. package/dist/scripts/uFv_7m8b.chunk.js +2 -0
  291. package/dist/scripts/uFv_7m8b.chunk.js.map +1 -0
  292. package/dist/scripts/yBXeHdE_.chunk.js +2 -0
  293. package/dist/scripts/yBXeHdE_.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-133a67ef3f-exchange.chunk.js +0 -1
  325. package/dist/scripts/1861-dec4e1de06-exchange.chunk.js +0 -2
  326. package/dist/scripts/1861-dec4e1de06-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/4312-7d095d2f30-exchange.chunk.js +0 -1
  341. package/dist/scripts/442-47e3927b49-exchange.chunk.js +0 -1
  342. package/dist/scripts/455-ceeb969c54-exchange.chunk.js +0 -1
  343. package/dist/scripts/4558-057650ef22-exchange.chunk.js +0 -1
  344. package/dist/scripts/5027-61929c8ce6-exchange.chunk.js +0 -1
  345. package/dist/scripts/5173-9cde8f68d3-exchange.chunk.js +0 -1
  346. package/dist/scripts/5267-443f3cdd59-exchange.chunk.js +0 -1
  347. package/dist/scripts/601-a3c22b0a9f-exchange.chunk.js +0 -1
  348. package/dist/scripts/6156-ab0437013a-exchange.chunk.js +0 -1
  349. package/dist/scripts/6298-1c7a0ba516-exchange.chunk.js +0 -1
  350. package/dist/scripts/6332-9d2d42e2f9-exchange.chunk.js +0 -1
  351. package/dist/scripts/6356-dd8ff70cbb-exchange.chunk.js +0 -1
  352. package/dist/scripts/6725-25d1542dec-exchange.chunk.js +0 -1
  353. package/dist/scripts/6831-30fa3e741e-exchange.chunk.js +0 -1
  354. package/dist/scripts/7095-a0b75b4c75-exchange.chunk.js +0 -2
  355. package/dist/scripts/7095-a0b75b4c75-exchange.chunk.js.LICENSE.txt +0 -1
  356. package/dist/scripts/7170-cc2ea0de18-exchange.chunk.js +0 -1
  357. package/dist/scripts/7759-2740213eb8-exchange.chunk.js +0 -1
  358. package/dist/scripts/7782-36924dba92-exchange.chunk.js +0 -1
  359. package/dist/scripts/7925-978cf5d7fb-exchange.chunk.js +0 -1
  360. package/dist/scripts/851-d89fb94a66-exchange.chunk.js +0 -2
  361. package/dist/scripts/851-d89fb94a66-exchange.chunk.js.LICENSE.txt +0 -1
  362. package/dist/scripts/8536-dc903c2f54-exchange.chunk.js +0 -1
  363. package/dist/scripts/8589-912ab9f055-exchange.chunk.js +0 -1
  364. package/dist/scripts/8619-e5f595a594-exchange.chunk.js +0 -1
  365. package/dist/scripts/8866-1e58530102-exchange.chunk.js +0 -1
  366. package/dist/scripts/8937-727d080ed9-exchange.chunk.js +0 -1
  367. package/dist/scripts/9212-e8bde56a84-exchange.chunk.js +0 -1
  368. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js +0 -2
  369. package/dist/scripts/9414-85c7657c8f-exchange.chunk.js.LICENSE.txt +0 -60
  370. package/dist/scripts/9484-d7d531ac85-exchange.chunk.js +0 -1
  371. package/dist/scripts/9566-238004eaed-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-f07a05484d-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-18219c9ccc.min.js +0 -2
  378. package/dist/scripts/bundle-18219c9ccc.min.js.LICENSE.txt +0 -108
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bu8WHAmF.chunk.js","sources":["../../../../libs/shared/src/utils/TreeHelper.ts","../../../../libs/shared/src/components/tree/TreeNodeText.tsx","../../../../libs/shared/src/components/tree/TreeNode.tsx","../../../../libs/shared/src/components/tree/Tree.tsx","../../../../libs/shared/src/apps/libraries/components/add-to-library-form/AddToLibraryForm.tsx","../../../../libs/shared/src/apps/libraries/utils/LibraryHelper.ts","../../../../libs/shared/src/apps/libraries/validation/AddToLibraryValidationSchema.ts","../../../../libs/shared/src/enums/LibraryRequestObjectType.ts","../../../../libs/shared/src/utils/error-message-helper/ErrorMessageHelper.ts","../../../../libs/shared/src/utils/LaunchUrlHelper.ts","../../../../libs/shared/src/apps/libraries/views/add-to-library/AddToLibraryView.tsx"],"sourcesContent":["import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BaseObject, MasterNestedObject } from 'libs/shared/interfaces';\nimport { BaseTree } from 'libs/shared/interfaces';\n\nfunction _find<T extends BaseTree<BaseObject>>(\n node: T,\n id: string | number,\n parents: T[]\n): [ T | null, T[] ] {\n if (TextHelper.isEqual(node.id, id))\n return [ node, parents ];\n\n const children = node.children;\n\n if (!children || !children.length)\n return [ null, null ];\n\n for (let i = 0; i < children.length; i++) {\n const [ child, foundParents ] = _find(children[i] as T, id, [ ...parents, node ]);\n\n if (child)\n return [ child, foundParents ];\n }\n\n return [ null, null ];\n}\n\nexport const DEFAULT_MAX_DEPTH = 7;\n\nexport const TreeHelper = {\n find<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T | null {\n if (!tree || !tree.children || !tree.children.length)\n return;\n\n for (let j = 0; j < tree.children.length; j++) {\n const [child] = _find(tree.children[j] as T, id, []);\n \n if (child)\n return child;\n }\n },\n\n getPath<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T[] {\n if (!tree || !tree.children || !tree.children.length)\n return;\n\n for (let j = 0; j < tree.children.length; j++) {\n const [ , path ] = _find(tree.children[j] as T, id, []);\n \n if (path?.length)\n return path;\n }\n },\n\n getParent<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T {\n const path = TreeHelper.getPath(tree, id);\n\n if (!path?.length)\n return null;\n\n return path[path.length - 1];\n },\n\n convertNestedObjectToTree<T extends BaseObject>(nestedObject: MasterNestedObject<T>): BaseTree<T> {\n const node: BaseTree<T> = {\n ...nestedObject.data,\n children: nestedObject.children\n };\n\n if (node.children?.length)\n node.children = node.children.map(TreeHelper.convertNestedObjectToTree);\n\n return node;\n },\n\n findDepth<T extends MasterNestedObject<BaseObject>>(nodes: T[], targetId: string, currentDepth: number = 0): number {\n if (!nodes || nodes.length === 0) {\n return 0;\n }\n\n let depth = 0;\n\n for (const node of nodes) {\n if (node.data?.id?.toString() === targetId.toString()) {\n return currentDepth;\n }\n\n const childDepth = TreeHelper.findDepth(node.children, targetId, currentDepth + 1);\n\n if (childDepth > 0) {\n depth = childDepth;\n break;\n }\n }\n\n return depth;\n },\n\n findMaxChildDepth<T extends BaseObject>(nodes: MasterNestedObject<T>[], currentDepth: number = 0): number {\n if (!nodes || nodes.length === 0) {\n return currentDepth;\n }\n \n let deepestLevel = currentDepth;\n \n for (const node of nodes) {\n const childLevel = TreeHelper.findMaxChildDepth(node.children, currentDepth + 1);\n deepestLevel = Math.max(deepestLevel, childLevel);\n }\n \n return deepestLevel;\n },\n\n findTargetNode<T extends BaseObject>(nodes: MasterNestedObject<T>[], targetId: string): MasterNestedObject<T> | null {\n if (!nodes || nodes.length === 0) {\n return null;\n }\n \n for (const node of nodes) {\n if (node.data?.id?.toString() === targetId.toString()) {\n return node;\n }\n \n const result = TreeHelper.findTargetNode(node.children, targetId);\n if (result !== null) {\n return result;\n }\n }\n \n return null;\n },\n\n isMaxDepth<T extends MasterNestedObject<BaseObject>>(\n nodes: T[],\n sourceId: string,\n targetId: string,\n maxDepth: number = DEFAULT_MAX_DEPTH\n ): boolean {\n const sourceTree = TreeHelper.findTargetNode(nodes, sourceId);\n const maxChildDepth = TreeHelper.findMaxChildDepth(sourceTree.children);\n const targetDepth = TreeHelper.findDepth(nodes, targetId);\n \n return maxChildDepth + targetDepth >= maxDepth;\n },\n\n flatten<T>(\n tree: BaseTree<T>\n ): T[] {\n if (!tree)\n return [];\n\n const nodes: T[] = [];\n\n function pushNode(node: BaseTree<T>): void {\n nodes.push(ObjectHelper.omit(node, ['children']));\n node.children.forEach(pushNode);\n }\n\n tree.children.forEach(pushNode);\n\n return nodes;\n }\n};","import React from 'react';\n\nimport { BaseObject } from 'libs/analytics/interfaces';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseTree } from 'libs/shared/interfaces';\n\nimport styles from './tree.module.scss';\n\ninterface TreeNodeTextProps<T extends BaseTree<BaseObject>> {\n tree: T;\n text: string;\n className?: string;\n isDisabled?: boolean;\n disabledTooltip?: string | ((tree: T) => string);\n}\n\nexport function TreeNodeText<T extends BaseTree<BaseObject>>(props: TreeNodeTextProps<T>): React.ReactElement {\n function getTextClass(): string {\n let textClassName = `${styles.text} clamp-4`;\n\n if (props.className)\n textClassName += ` ${props.className}`;\n\n return textClassName;\n }\n\n if (props.isDisabled) {\n const disabledToolTip = typeof props.disabledTooltip === 'string' ?\n props.disabledTooltip :\n props.disabledTooltip?.(props.tree);\n\n return (\n <Tooltip title={disabledToolTip} spanHack spanHackClassName='d-inline-block flex-grow-1'>\n <span className={`${getTextClass()} text-secondary ${styles.disabled}`}>\n {props.text}\n </span>\n </Tooltip>\n );\n }\n\n return (\n <div className={getTextClass()}>\n {props.text}\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { BaseTree } from 'libs/shared/interfaces';\nimport { TreeHelper } from 'libs/shared/utils/TreeHelper';\n\nimport { Tree } from './Tree';\nimport { TreeNodeText } from './TreeNodeText';\n\nimport styles from './tree.module.scss';\n\nconst TREE_ACTIONS_CLASS = 'tree-actions';\n\nexport interface TreeNodeAction<T extends BaseTree<BaseObject>> {\n label: string;\n getAppLink: (node: T) => Core.AppLink;\n className?: string;\n}\n\ninterface TreeNodeProps<T extends BaseTree<BaseObject>> {\n tree: T;\n selectedIds?: string[];\n getAppLink?: (item: T) => Core.AppLink;\n onSelect?: (item: T) => void;\n isDisabled?: (item: T) => boolean;\n isClickDisabled?: (item: T) => boolean;\n actions?: TreeNodeAction<T>[];\n selectedLinkClassName?: string;\n disabledTooltip?: string | ((tree: T) => string);\n isRoot?: boolean;\n isDropdown?: boolean;\n multiSelect?: boolean;\n depth: number;\n openDepth?: number;\n maxDisplayDepth?: number;\n}\n\nTreeNode.defaultProps = {\n selectedLinkClassName: styles.selected\n};\n\nexport function TreeNode<T extends BaseTree<BaseObject>>(props: TreeNodeProps<T>): React.ReactElement {\n const { tree, selectedIds, getAppLink, onSelect, isDisabled, isClickDisabled, actions, isDropdown } = props;\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n // If one of our children is selected\n const isParentOfSelected = React.useMemo(() => {\n return selectedIds?.some(id => TreeHelper.find(tree, id));\n }, [ tree, selectedIds ]);\n\n // Or we are below the initial open depth\n const initiallyOpen = props.openDepth && props.depth < props.openDepth;\n\n // We render expanded initially\n const [ isExpanded, setIsExpanded ] = React.useState(isParentOfSelected || initiallyOpen);\n\n const isSelected = selectedIds?.some(id => TextHelper.isEqual(tree.id, id));\n let hasChildren = !!tree.children && !!tree.children.length;\n\n if (props.maxDisplayDepth && hasChildren)\n hasChildren = props.depth < props.maxDisplayDepth;\n\n /**\n * We need to stop propagation of our event if our tree is rendered\n * inside of a bootstrap dropdown - Sha\n */\n React.useEffect(() => {\n if (!ref.current || !isDropdown)\n return;\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n onSelectNode();\n };\n\n ref.current.addEventListener('click', onClick);\n return () => {\n if (!ref.current)\n return;\n\n ref.current.removeEventListener('click', onClick);\n };\n }, [ ref.current, onSelect ]);\n\n /**\n * Check if an expanded item should actually be collapsed\n */\n React.useEffect(() => {\n // Don't do auto collapsing for trees that support multiple selections\n if (props.multiSelect)\n return;\n\n // Skip item if it's already collapsed\n if (!isExpanded)\n return;\n\n // Parents of a selected item should remain expanded\n if (isParentOfSelected)\n return;\n\n // Selected items should remain expanded\n if (isSelected)\n return;\n\n // Disabled items can be expanded if nothing has been selected\n if (!props.selectedIds?.length && isDisabled?.(props.tree))\n return;\n\n // If we want it to be initially open\n if (initiallyOpen)\n return;\n\n setIsExpanded(false);\n }, [selectedIds]);\n\n function onSelectNode(): void {\n if (isClickDisabled?.(tree))\n return;\n\n if (!props.multiSelect)\n setIsExpanded(!isExpanded);\n\n if (getAppLink) {\n Core.AppLinkHelper.trigger(getAppLink(tree));\n return;\n }\n\n if (isDisabled?.(tree)) {\n onSelect(null);\n return;\n }\n\n onSelect?.(tree);\n }\n\n function onClickCaret(e: any): void {\n e.stopPropagation();\n\n if (props.multiSelect) {\n setIsExpanded(!isExpanded);\n return;\n }\n\n onSelectNode();\n }\n\n function getNodeClass(): string {\n let className = `py-1 d-flex align-items-center w-100 position-relative ${styles.node}`;\n\n if (isSelected)\n className += ' ' + props.selectedLinkClassName;\n\n if (!actions?.length)\n className += ' ' + styles.noActions;\n\n if (isParentOfSelected && props.multiSelect)\n className += ' text-underline fst-italic';\n\n return className;\n }\n\n if (props.maxDisplayDepth && (props.depth > props.maxDisplayDepth))\n return <></>;\n\n return (\n <li className={`position-relative ${isExpanded ? '' : styles.collapsed} ${props.isRoot ? styles.root : ''}`}>\n <div className='position-relative'>\n <DivButton\n className={getNodeClass()}\n onClick={isDropdown ? null : onSelectNode}\n ref={ref}\n >\n {hasChildren && (\n <div className={styles.chevron} onClick={onClickCaret}>\n <Caret direction={isExpanded ? 'down' : 'right'} />\n </div>\n )}\n\n <TreeNodeText\n tree={tree}\n // Always prefer name over description\n text={tree.name || tree.description}\n isDisabled={isDisabled?.(tree) || isClickDisabled?.(tree)}\n disabledTooltip={props.disabledTooltip}\n />\n </DivButton>\n\n {!!props.actions && (\n <Actions\n className={styles.actions}\n actions={actions?.map(a => ({ ...a, appLink: a.getAppLink(tree) }))}\n actionsDropdownClassName={`btn btn-light ${TREE_ACTIONS_CLASS} py-0`}\n />\n )}\n\n {isExpanded && <Tree key={tree.id} {...props} isChild depth={props.depth + 1} />}\n </div>\n </li>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { BaseTree } from 'libs/shared/interfaces';\n\nimport { TreeNode, TreeNodeAction } from './TreeNode';\n\nimport styles from './tree.module.scss';\n\nexport interface TreeProps<T extends BaseTree<BaseObject>> {\n tree: T;\n selectedIds?: string[];\n getAppLink?: (item: T) => Core.AppLink;\n onSelect?: (item: T) => void;\n isDisabled?: (item: T) => boolean;\n isClickDisabled?: (item: T) => boolean;\n actions?: TreeNodeAction<T>[];\n selectedLinkClassName?: string;\n disabledTooltip?: string | ((tree: T) => string);\n isChild?: boolean;\n depth?: number;\n multiSelect?: boolean;\n /**\n * Set to true if you are using this component inside of\n * a bootstrap dropdown menu and don't want it to close\n * on click events - Sha\n */\n isDropdown?: boolean;\n /**\n * If you want to initially render open to a certain depth\n */\n openDepth?: number;\n maxDisplayDepth?: number;\n}\n\nexport function Tree<T extends BaseTree<BaseObject>>(props: TreeProps<T>): React.ReactElement {\n const { tree, ...childProps } = props;\n\n if (!tree || !tree.children)\n return <></>;\n\n return (\n <ul className={`m-0 p-0 list-unstyled ${styles.tree}`}>\n {tree.children.map((child, key) => (\n <TreeNode key={key} tree={child} {...childProps} isRoot={!props.isChild} depth={props.depth || 0} />\n ))}\n </ul>\n );\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AddToLibraryFormValues } from 'libs/shared/apps/libraries/views/add-to-library/AddToLibraryView';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tree } from 'libs/shared/components/tree/Tree';\nimport { BaseTree, Folder, Library, LibraryTree, PopupViewProps, VideoTypes } from 'libs/shared/interfaces';\nimport { TreeHelper } from 'libs/shared/utils/TreeHelper';\n\nconst namespace = 'libraries.addToLibraryForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToLibraryFormProps extends PopupViewProps {\n libraries: Library[];\n isFolderDisabled: (folder: BaseTree<Folder>) => boolean;\n video: VideoTypes;\n videoLibraries?: Library[];\n getCategoryTree: (libraryId: string) => LibraryTree[];\n}\n\nexport function AddToLibraryForm(props: AddToLibraryFormProps): JSX.Element {\n const formikProps = useFormikContextWrapper<AddToLibraryFormValues>();\n\n const isMakingLibraryRequest = !formikProps.values.library.canAddContent;\n const isAlreadyInLibrary = props.videoLibraries?.find(l => l.id === formikProps.values.library.id);\n\n const tree = React.useMemo(() => {\n const categoryTree = props.getCategoryTree(formikProps.values.library.id);\n\n const rootBranches = categoryTree.map(TreeHelper.convertNestedObjectToTree);\n\n return {\n children: rootBranches\n } as BaseTree<Library>;\n }, [formikProps.values.library.id]);\n\n return (\n <>\n {isAlreadyInLibrary && (\n <div className='alert alert-info'>\n <Text namespace={namespace} phrase='alreadyInLibrary' options={{ library: formikProps.values.library.name }} />\n </div>\n )}\n\n {isMakingLibraryRequest && (\n <p>\n <Text namespace={namespace} phrase='sendLibraryRequest' options={{ video: props.video.name }} />\n </p>\n )}\n\n <Form>\n {props.libraries.length > 1 && (\n <FormField\n as='select'\n label={getPhrase('selectLibrary')}\n name='library'\n value={formikProps.values.library?.id ?? ''}\n className={!formikProps.values.library?.id ? 'text-secondary' : ''}\n showRequiredStar\n onChange={(e: any) => {\n formikProps.setFieldValue('folder', null);\n\n const libraryId = e.target.value;\n\n formikProps.setFieldValue('library', props.libraries.find(l => l.id.toString() === libraryId.toString()));\n }}\n >\n {props.libraries.map(library => (\n <option key={library.id} value={library.id} className='text-dark'>\n {library.name}\n </option>\n ))}\n </FormField>\n )}\n\n <FormField\n label={getPhrase('selectFolder')}\n name='folder'\n showRequiredStar\n disabled={!formikProps.values.library}\n >\n {() => (\n <Scrollbars autoHeight autoHeightMax={300} className='border rounded-3'>\n <Tree\n tree={tree}\n onSelect={(folder: Folder) => formikProps.setFieldValue('folder', folder)}\n isDisabled={props.isFolderDisabled}\n disabledTooltip={LanguageService.getPhrase(namespace, 'disabledFolder')}\n selectedIds={formikProps.values.folder?.id ? [formikProps.values.folder.id] : undefined}\n selectedLinkClassName='bg-light'\n />\n </Scrollbars>\n )}\n </FormField>\n \n {!!formikProps.values.folder && (\n <p className='mt-n2'>\n <Text\n namespace={namespace}\n phrase={isMakingLibraryRequest ? 'requestTo' : 'addTo'}\n options={{ folder: formikProps.values.folder.name }}\n />\n </p>\n )}\n\n {isMakingLibraryRequest && (\n <FormField\n label={LanguageService.getPhrase(namespace, 'comment')}\n as='textarea'\n name='comment'\n id='comment'\n placeholder={LanguageService.getPhrase(namespace, 'commentPlaceholder')}\n value={formikProps.values.comment}\n />\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit variant='dark' text={getPhrase('addToLibrary')} />\n </PopupButtons>\n </Form>\n </>\n );\n}","import { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { CurrentUser, Library } from 'libs/shared/interfaces';\n\ntype LibraryTypes = Library['type'] | 'shared_library';\n\nexport const LibraryHelper = {\n /**\n * Orders libraries by type (custom -> shared -> hosted).\n * Also orders libraries of same type alphabetically.\n */\n sort(libraries: Library[]): Library[] {\n if (!libraries?.length)\n return [];\n\n return libraries.sort((a: Library, b: Library) => {\n // This is required because shared libraries have a type of `custom_library`\n const aType: LibraryTypes = a.isSharedLibrary ? 'shared_library' : a.type;\n const bType: LibraryTypes = b.isSharedLibrary ? 'shared_library' : b.type;\n \n if (aType === bType)\n return a.name.localeCompare(b.name);\n \n if (aType === 'custom_library')\n return -1;\n \n if (aType === 'shared_library' && bType !== 'custom_library')\n return -1;\n\n if (aType === 'hosted_library' && bType !== 'custom_library' && bType !== 'shared_library')\n return -1;\n \n return 1;\n });\n },\n\n hasTwigOrTigtag(libraries: Library[], currentUser: CurrentUser) {\n if (!currentUser)\n return { hasTwig: false, hasTigtag: false };\n\n // Anon users can see Twig/Tigtag if they're in England.\n if (!currentUser.isAuthenticated) {\n const hasAnonAccess = (\n currentUser.contentRegion === ContentRegion.UK ||\n currentUser.contentRegion === ContentRegion.SCOT\n );\n\n return {\n hasTwig: hasAnonAccess,\n hasTigtag: hasAnonAccess\n };\n }\n\n if (!libraries)\n return { hasTwig: false, hasTigtag: false };\n \n let hasTwig = false;\n let hasTigtag = false;\n\n for (const lib of libraries) {\n if (lib.id.toString() === HardCoded.Libraries.TWIG)\n hasTwig = true;\n else if (lib.id.toString() === HardCoded.Libraries.TIGTAG)\n hasTigtag = true;\n\n // If both are true we don't need to keep searching\n if (hasTwig && hasTigtag)\n break;\n }\n\n return { hasTwig, hasTigtag };\n }\n};","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'libraries.validation';\n\nexport const AddToLibraryValidationSchema = object().shape({\n comment: string()\n .nullable()\n .max(512, () => LanguageService.getPhrase(namespace, 'commentExceeds')),\n library: object()\n .required(() => LanguageService.getPhrase(namespace, 'libraryRequired'))\n .nullable(),\n folder: object()\n .required(() => LanguageService.getPhrase(namespace, 'folderRequired'))\n .nullable()\n});","export enum LibraryRequestObjectType {\n MasterVideo = 1,\n MasterClip = 2,\n MasterInteractive = 3\n}","import { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { InviteColleagueXhr, LibraryApiXhr } from 'libs/shared/interfaces/responses/ErrorResponse';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.errorMessageHelper');\n\nconst LIBRARY_ERROR_PHRASE_MAPPING = {\n 'operation-not-allowed': 'operationNotAllowed',\n 'library-not-supported': 'libraryNotSupported',\n 'access-denied': 'accessDenied',\n 'library-access-denied': 'libraryAccessDenied',\n 'library-access-denied-create': 'libraryAccessDeniedCreate',\n 'library-access-denied-fulfil': 'libraryAccessDeniedFulfill',\n 'library-access-denied-not-authorized': 'libraryAccessDeniedNotAuthorized',\n 'library-request-access-denied': 'accessDenied',\n 'library-request-access-denied-create-request': 'libraryRequestAccessDeniedCreateRequest',\n 'library-request-access-denied-process-comment': 'libraryRequestAccessDeniedProcessComment',\n 'customer-not-found': 'customerNotFound',\n 'customer-not-found-current-user': 'customerNotFound',\n 'customer-not-found-library-owner': 'customerNotFoundLibraryOwner',\n 'customer-not-found-destination-library-owner': 'customerNotFoundLibraryOwner',\n 'user-not-found': 'userNotFound',\n 'library-not-found': 'libraryNotFound',\n 'video-not-found': 'videoNotFound',\n 'category-not-found': 'categoryNotFound',\n 'category-not-found-destination-not-provided': 'categoryNotFoundDestinationNotProvided',\n 'category-not-found-not-in-library': 'categoryNotFoundInLibrary',\n 'library-request-not-found': 'libraryRequestNotFound',\n 'invalid-category-path': 'invalidCategoryPath',\n 'library-api-error': 'somethingWentWrong',\n 'content-not-playable': 'contentNotPlayable',\n 'invalid-object': 'invalidObject',\n 'same-request-existed': 'sameRequestExisted',\n 'unknown-error': 'somethingWentWrong',\n 'no-email': 'noEmailError'\n};\n\nconst INVITE_COLLEAGUE_PHRASE_MAPPING = {\n 'create-invitation-failed': 'createInvitationFailed',\n 'invitation-resend-failed': 'invitationResendFailed',\n 'failed-to-accept': 'failedToAccept',\n 'invitee-not-found': 'inviteeNotFound',\n 'invitation-not-found': 'invitationNotFound',\n 'invitation-deleted': 'invitationDeleted',\n 'too-many-emails': 'tooManyEmails'\n};\n\nexport const ErrorMessageHelper = {\n libraryApiError(xhr: LibraryApiXhr): string {\n const phrase = LIBRARY_ERROR_PHRASE_MAPPING[xhr?.responseJSON?.type];\n\n if (!phrase)\n return getPhrase('somethingWentWrong');\n\n return getPhrase(phrase);\n },\n inviteColleagueError(xhr: InviteColleagueXhr): string {\n const phrase = INVITE_COLLEAGUE_PHRASE_MAPPING[xhr?.responseJSON?.type];\n\n if (!phrase)\n return getPhrase('somethingWentWrong');\n\n return getPhrase(phrase);\n }\n};\n\nexport const ErrorMessageHelperValidation = {\n libraryApiErrors(): void {\n Object.values(LIBRARY_ERROR_PHRASE_MAPPING).forEach(value => {\n const phrase = getPhrase(value);\n\n if (!phrase)\n Core.ErrorHelper.throw(new DevError(`No language mapping found for library api error type: ${value}`));\n });\n },\n inviteColleagueErrors(): void {\n Object.values(INVITE_COLLEAGUE_PHRASE_MAPPING).forEach(value => {\n const phrase = getPhrase(value);\n\n if (!phrase)\n Core.ErrorHelper.throw(new DevError(`No language mapping found for library api error type: ${value}`));\n });\n }\n};","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\ninterface OpenLibraryFolderParams {\n libraryId: string;\n folderId: string;\n}\n\nexport const LaunchUrlHelper = {\n buildOpenAppLinkUrl(baseLaunchUrl: string, appLink: string, product?: string): string {\n return UrlHelper.urlBuilder(`${baseLaunchUrl}/open`, { appLink, product });\n },\n\n buildOpenVideoUrl(baseLaunchUrl: string, videoId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `video:${videoId}`, product);\n },\n\n buildOpenClipUrl(baseLaunchUrl: string, clipId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `clip:${clipId}`, product);\n },\n\n buildOpenInteractiveUrl(baseLaunchUrl: string, interactiveId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `interactive:${interactiveId}`, product);\n },\n\n buildOpenTopicUrl(baseLaunchUrl: string, topicId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `topic:${topicId}`, product);\n },\n\n buildOpenSeriesUrl(baseLaunchUrl: string, seriesId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `series:${seriesId}`, product);\n },\n\n buildOpenPlaylistUrl(baseLaunchUrl: string, playlistId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `playlist:${playlistId}`, product);\n },\n\n buildOpenCategoryUrl(baseLaunchUrl: string, categoryId: string, product?: string): string {\n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, `category:${categoryId}`, product);\n },\n\n buildOpenLibraryFolderUrl(baseLaunchUrl: string, params: OpenLibraryFolderParams, product?: string): string {\n const appLink = `library:${params.libraryId}:folder:${params.folderId}`;\n \n return LaunchUrlHelper.buildOpenAppLinkUrl(baseLaunchUrl, appLink, product);\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AddToLibraryForm } from 'libs/shared/apps/libraries/components/add-to-library-form/AddToLibraryForm';\nimport { LibraryHelper } from 'libs/shared/apps/libraries/utils/LibraryHelper';\nimport { AddToLibraryValidationSchema } from 'libs/shared/apps/libraries/validation/AddToLibraryValidationSchema';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { LibraryRequestObjectType } from 'libs/shared/enums/LibraryRequestObjectType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\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 { BaseTree, Clip, Config, CurrentUser, Folder, InteractiveMetadata, Library, LibraryTree, PopupViewProps, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { AddToLibraryRequest } from 'libs/shared/interfaces/requests/AddToLibraryRequest';\nimport { LibraryApiXhr } from 'libs/shared/interfaces/responses/ErrorResponse';\nimport { ErrorMessageHelper } from 'libs/shared/utils/error-message-helper/ErrorMessageHelper';\nimport { LaunchUrlHelper } from 'libs/shared/utils/LaunchUrlHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nexport interface AddToLibraryFormValues {\n library: Library;\n folder: Folder;\n comment?: string;\n}\n\ntype LibraryObjectType = MasterType.Video | MasterType.Clip | MasterType.Interactive;\n\ntype ObjectTypeMap = {\n [K in LibraryObjectType]: LibraryRequestObjectType;\n};\n\nconst OBJECT_TYPE_MAP: ObjectTypeMap = {\n [MasterType.Video]: LibraryRequestObjectType.MasterVideo,\n [MasterType.Clip]: LibraryRequestObjectType.MasterClip,\n [MasterType.Interactive]: LibraryRequestObjectType.MasterInteractive\n};\n\nconst namespace = 'libraries.addToLibrary';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AddToLibraryViewProps extends PopupViewProps {\n id: string;\n typeId: MasterType;\n folderAppLink?: Core.AppLink;\n}\n\nexport function AddToLibraryView(props: AddToLibraryViewProps): JSX.Element {\n const user = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const librariesWithCategories = Flight.useBasicFetch<LibraryTree[]>(LibraryRequests.librariesWithCategories());\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.libraryRequestLibraries());\n\n const videoRequest = VideoHelper.getVideoRequest(props.id, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const isClipOrInteractive = VideoHelper.isClip(video.data) || VideoHelper.isInteractive(video.data);\n const parentVideo = isClipOrInteractive && (video.data as Clip | InteractiveMetadata)?._parentVideo;\n const parentVideoDetails = Flight.useBasicFetch<Video>(\n parentVideo && VideoRequests.video(parentVideo.id)\n );\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const sortedLibraries = React.useMemo(() => LibraryHelper.sort(libraries.data), [libraries.data]);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n\n const sort = !!user.data && VideoSortHelper.getOrSetSortType(user.data.id);\n\n /**\n * We try to pull the library and category id off the video/clip/interactive.\n * If we can't, then we try to get them off the _parentVideo. \n */\n function getSourceIds() {\n let sourceCategoryId: string = null;\n let sourceLibraryId = ArrayHelper.first(video.data?.libraries?.data)?.id;\n\n if (sourceLibraryId && video.data.categories.data?.length) {\n const category = video.data.categories.data.find(category => {\n return category.libraries?.data?.find(l => l.id.toString() === sourceLibraryId.toString());\n });\n\n if (category)\n sourceCategoryId = category.id;\n }\n\n if (!sourceLibraryId) {\n sourceLibraryId = ArrayHelper.first(parentVideoDetails.data?.libraries?.data)?.id;\n\n if (sourceLibraryId && parentVideoDetails.data.categories.data?.length) {\n const category = parentVideoDetails.data.categories.data.find(category => {\n return category.libraries?.data?.find(l => l.id.toString() === sourceLibraryId.toString());\n });\n \n if (category)\n sourceCategoryId = category.id;\n }\n }\n\n return {\n sourceLibraryId: sourceLibraryId ? +sourceLibraryId : null,\n sourceCategoryId: sourceCategoryId ? +sourceCategoryId : null\n };\n }\n\n function addToLibrary(data: AddToLibraryFormValues, onDone: () => void): void {\n const { sourceLibraryId, sourceCategoryId } = getSourceIds();\n\n const request: AddToLibraryRequest = {\n objectId: props.id.toString(),\n objectType: OBJECT_TYPE_MAP[props.typeId as LibraryObjectType],\n message: data.comment,\n sourceLibraryId,\n destinationLibraryId: +data.library.id,\n metadata: {\n destinationCategoryId: +data.folder.id,\n sourceCategoryId\n }\n };\n\n fetchAsync(LibraryRequests.addToLibrary(request, sort))\n .then(() => {\n if (!data.library.canAddContent) {\n alerts.success({\n type: AlertType.Pending,\n heading: getPhrase('pendingApproval'),\n message: getPhrase('libraryRequestSent', { library: data.library.name, escapeText: true })\n });\n } else {\n alerts.success({\n type: AlertType.Success,\n heading: '',\n message: getPhrase('addToLibrarySuccess', { folder: data.folder.name, video: video.data.name, escapeText: true }),\n ...(props.folderAppLink ? {\n appLink: {\n ...props.folderAppLink,\n args: [ data.library.id, data.folder.id, TextHelper.slugify(data.folder.name) ]\n },\n appLinkText: getPhrase('goToFolder', { folder: data.folder.name }),\n appLinkClassName: 'info-link'\n } : {\n extLink: LaunchUrlHelper.buildOpenLibraryFolderUrl(config.data.launchUrl, {\n libraryId: data.library.id,\n folderId: data.folder.id\n }),\n extLinkText: getPhrase('goToFolder', { folder: data.folder.name }),\n extLinkClassName: 'info-link'\n })\n });\n }\n })\n .catch((xhr: LibraryApiXhr) => {\n const errorMessage = ErrorMessageHelper.libraryApiError(xhr);\n handleGenerateReportError(xhr, errorMessage, errorMessage);\n onDone();\n })\n .finally(() => {\n props.closePopup();\n });\n }\n\n function getCategoryTree(libraryId: string): LibraryTree[] {\n return librariesWithCategories.data.find(l => l.data.id.toString() === libraryId.toString())?.children;\n }\n\n function isFolderDisabled(folder: BaseTree<Folder>): boolean {\n return !!video.data.categories?.data?.find(category => category.id === folder.id);\n }\n\n const dataLoaded = (\n libraries.data &&\n video.data &&\n librariesWithCategories.data\n );\n\n return (\n <Popup title={getPhrase('addToLibrary')} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded || loading}>\n {dataLoaded && (\n <FormWrapper<AddToLibraryFormValues>\n initialValues={{\n library: ArrayHelper.first(sortedLibraries),\n folder: null,\n comment: ''\n }}\n validationSchema={AddToLibraryValidationSchema}\n onSubmit={addToLibrary}\n >\n <AddToLibraryForm\n libraries={sortedLibraries}\n closePopup={props.closePopup}\n isFolderDisabled={isFolderDisabled}\n video={video.data}\n videoLibraries={video.data?.libraries?.data}\n getCategoryTree={getCategoryTree}\n />\n </FormWrapper>\n )}\n </Popup>\n );\n}"],"names":["_find","node","id","parents","TextHelper","children","i","child","foundParents","DEFAULT_MAX_DEPTH","TreeHelper","tree","j","path","nestedObject","_a","nodes","targetId","currentDepth","depth","_b","childDepth","deepestLevel","childLevel","result","sourceId","maxDepth","sourceTree","maxChildDepth","targetDepth","pushNode","ObjectHelper","TreeNodeText","props","getTextClass","textClassName","styles","disabledToolTip","jsx","Tooltip","TREE_ACTIONS_CLASS","TreeNode","selectedIds","getAppLink","onSelect","isDisabled","isClickDisabled","actions","isDropdown","ref","React.useRef","isParentOfSelected","React.useMemo","initiallyOpen","isExpanded","setIsExpanded","React.useState","isSelected","hasChildren","React.useEffect","onClick","e","onSelectNode","Core.AppLinkHelper","onClickCaret","getNodeClass","className","Fragment","jsxs","DivButton","Caret","Actions","a","Tree","childProps","key","namespace","getPhrase","LanguageService","AddToLibraryForm","formikProps","useFormikContextWrapper","isMakingLibraryRequest","isAlreadyInLibrary","l","React","Text","Form","FormField","_c","libraryId","library","Scrollbars","folder","PopupButtons","LibraryHelper","libraries","b","aType","bType","currentUser","hasAnonAccess","ContentRegion","hasTwig","hasTigtag","lib","HardCoded","AddToLibraryValidationSchema","object","string","LibraryRequestObjectType","LIBRARY_ERROR_PHRASE_MAPPING","INVITE_COLLEAGUE_PHRASE_MAPPING","ErrorMessageHelper","xhr","phrase","LaunchUrlHelper","baseLaunchUrl","appLink","product","UrlHelper","videoId","clipId","interactiveId","topicId","seriesId","playlistId","categoryId","params","OBJECT_TYPE_MAP","MasterType","AddToLibraryView","user","Flight.useBasicFetch","UserRequests","librariesWithCategories","LibraryRequests","videoRequest","VideoHelper","video","parentVideo","parentVideoDetails","VideoRequests","loading","handleGenerateReportError","useVerifiedEmailRequiredErrorHandler","config","ConfigRequests","sortedLibraries","fetchAsync","Flight.useGetFetchAsync","alerts","useAlerts","sort","VideoSortHelper","getSourceIds","sourceCategoryId","sourceLibraryId","ArrayHelper","_d","category","_g","_f","_e","_h","addToLibrary","data","onDone","request","AlertType","errorMessage","getCategoryTree","isFolderDisabled","dataLoaded","Popup","FormWrapper"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as s,ay as h,L as d}from"./app-DxIP7Chi.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=C-jOhSzY.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C-jOhSzY.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":"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"}
@@ -0,0 +1,2 @@
1
+ import{a1 as g,u as d,Y as u,ck as c}from"./app-DxIP7Chi.js";import{u as l}from"./B_bz6ygY.chunk.js";import{T as f}from"./cw5ndfQh.chunk.js";function w(){var t;const e=g(f.regions());l(e);const{tvRegion:n,isLoadingSettings:s}=d(null),[r,a]=u("tv:region",{region:null},{storage:c.LocalStorage});function i(o){a({region:o.code})}return!((t=e.data)!=null&&t.length)||s?{isLoading:!0,region:null,setRegion:i}:r.region&&e.data.find(o=>o.code.toLowerCase()===r.region.toLowerCase())?{isLoading:!1,region:r.region.toUpperCase(),setRegion:i}:n&&e.data.find(o=>o.code.toLowerCase()===n.toLowerCase())?{isLoading:!1,region:n.toUpperCase(),setRegion:i}:{isLoading:!1,region:e.data[0].code,setRegion:i}}export{w as u};
2
+ //# sourceMappingURL=C1_c6qh4.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C1_c6qh4.chunk.js","sources":["../../src/apps/tv/hooks/useSelectedRegion.ts"],"sourcesContent":["import { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nexport function useSelectedRegion() {\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n\n useHandleObjectError(regions);\n\n const { tvRegion: customerRegion, isLoadingSettings } = useSettings(null);\n\n const [ regionViewModel, setRegionViewModel ] = useViewModel('tv:region', { region: null }, { storage: StorageType.LocalStorage });\n\n function setRegion(newRegion: TvRegion): void {\n setRegionViewModel({ region: newRegion.code });\n }\n\n if (!regions.data?.length || isLoadingSettings)\n return { isLoading: true, region: null, setRegion };\n\n if (regionViewModel.region && regions.data.find(r => r.code.toLowerCase() === regionViewModel.region.toLowerCase()))\n return { isLoading: false, region: regionViewModel.region.toUpperCase(), setRegion };\n \n if (customerRegion && regions.data.find(r => r.code.toLowerCase() === customerRegion.toLowerCase()))\n return { isLoading: false, region: customerRegion.toUpperCase(), setRegion };\n\n return { isLoading: false, region: regions.data[0].code, setRegion };\n}"],"names":["useSelectedRegion","regions","Flight.useBasicFetch","TvRequests","useHandleObjectError","customerRegion","isLoadingSettings","useSettings","regionViewModel","setRegionViewModel","useViewModel","StorageType","setRegion","newRegion","_a","r"],"mappings":"6IAUO,SAASA,GAAoB,OAClC,MAAMC,EAAUC,EAAiCC,EAAW,SAAS,EAErEC,EAAqBH,CAAO,EAE5B,KAAM,CAAE,SAAUI,EAAgB,kBAAAC,CAAA,EAAsBC,EAAY,IAAI,EAElE,CAAEC,EAAiBC,CAAmB,EAAIC,EAAa,YAAa,CAAE,OAAQ,IAAA,EAAQ,CAAE,QAASC,EAAY,aAAc,EAEjI,SAASC,EAAUC,EAA2B,CAC5CJ,EAAmB,CAAE,OAAQI,EAAU,IAAA,CAAM,CAC/C,CAEA,MAAI,GAACC,EAAAb,EAAQ,OAAR,MAAAa,EAAc,SAAUR,EACpB,CAAE,UAAW,GAAM,OAAQ,KAAM,UAAAM,CAAA,EAEtCJ,EAAgB,QAAUP,EAAQ,KAAK,KAAKc,GAAKA,EAAE,KAAK,YAAA,IAAkBP,EAAgB,OAAO,aAAa,EACzG,CAAE,UAAW,GAAO,OAAQA,EAAgB,OAAO,YAAA,EAAe,UAAAI,CAAA,EAEvEP,GAAkBJ,EAAQ,KAAK,KAAKc,GAAKA,EAAE,KAAK,YAAA,IAAkBV,EAAe,YAAA,CAAa,EACzF,CAAE,UAAW,GAAO,OAAQA,EAAe,YAAA,EAAe,UAAAO,CAAA,EAE5D,CAAE,UAAW,GAAO,OAAQX,EAAQ,KAAK,CAAC,EAAE,KAAM,UAAAW,CAAA,CAC3D"}
@@ -0,0 +1,2 @@
1
+ import{cm as g,L as t,q as o,aR as a,cn as c,co as f}from"./app-DxIP7Chi.js";const i="shared.privateResourceError";class u extends g{constructor(){super(t.getPhrase(i,"title"))}get name(){return"PrivateResourceError"}get heading(){return t.getPhrase(i,"heading")}get description(){return t.getPhrase(i,"description")}}const d="shared.regionLockedResourceError";class p extends g{constructor(){super(t.getPhrase(d,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return t.getPhrase(d,"heading")}get description(){return t.getPhrase(d,"description")}}const E={notFound:f,forbidden:{rating:u,yearLevel:u,region:p,privacy:u},badRequest:c,internalServerError:c};function R(e,h={},n={}){if(!e)return;let r;typeof e=="number"?r=e:r=e.status;const s={...E,...h};if(r&&o.isStatusCodeError(r)){if(r===a.InternalServer){n.internalServerError||o.throw(new c);return}if(r===a.NotFound){n.notFound||o.throw(new s.notFound);return}if(r===a.Forbidden){n.forbidden||o.throw(new s.forbidden.privacy);return}n.badRequest||o.throw(new s.badRequest)}}export{R as h};
2
+ //# sourceMappingURL=C7yAlGG9.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C7yAlGG9.chunk.js","sources":["../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}"],"names":["namespace","PrivateResourceError","ErrorPageError","LanguageService","RegionLockedResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus"],"mappings":"6EAIA,MAAMA,EAAY,8BAEX,MAAMC,UAA6BC,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,mCAEX,MAAMI,UAAkCF,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQL,EACR,UAAWA,EACX,OAAQG,EACR,QAASH,CAAA,EAEX,WAAYM,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD"}
@@ -0,0 +1,2 @@
1
+ import{j as r}from"./app-DxIP7Chi.js";function m(t){return r.jsx("svg",{...t,children:r.jsx("path",{d:"m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466",fill:"currentColor"})})}const o={numItems:5,minWidth:50,maxWidth:100},e={getPartialLoadingItems(t={}){const a={...o,...t},n=()=>Math.max(Math.floor(Math.random()*a.maxWidth),a.minWidth);return[...Array(a.numItems)].map(()=>({width:`${n()}px`}))}};export{m as C,e as P};
2
+ //# sourceMappingURL=CDFiJlb4.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CDFiJlb4.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronLeftSvg.tsx","../../../../libs/shared/src/utils/PartialLoadingHelper.ts"],"sourcesContent":["import React from 'react';\n\nexport function ChevronLeftSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m8.305 11.267 5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466'\n fill='currentColor'\n />\n </svg>\n );\n}\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};"],"names":["ChevronLeftSvg","props","jsx","DEFAULT_PARTIAL_LOADING_OPTIONS","PartialLoadingHelper","options","opts","getRandomFilterWidth"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ,CCXA,MAAMC,EAAyD,CAC7D,SAAU,EACV,SAAU,GACV,SAAU,GACZ,EAYaC,EAAuB,CAClC,uBAAuBC,EAAiC,GAA0B,CAChF,MAAMC,EAAO,CACX,GAAGH,EACH,GAAGE,CAAA,EAGCE,EAAuB,IAAM,KAAK,IAAI,KAAK,MAAM,KAAK,OAAA,EAAWD,EAAK,QAAQ,EAAGA,EAAK,QAAQ,EAEpG,MAAO,CAAC,GAAG,MAAMA,EAAK,QAAQ,CAAC,EAAE,IAAI,KAAO,CAAE,MAAO,GAAGC,EAAA,CAAsB,MAAO,CACvF,CACF"}
@@ -0,0 +1,2 @@
1
+ import{r as u,d as w,aZ as $,a_ as E,j as n,f as M,F,a$ as k,J as D,B as H,O as y,au as b,_ as h}from"./app-DxIP7Chi.js";import{u as P}from"./D7VkMmnb.chunk.js";import{a as X}from"./cgmaXINJ.chunk.js";import{C as B}from"./Bpa_PvUX.chunk.js";import{u as T}from"./SwyafJDN.chunk.js";import{M as l}from"./_sYSSSUN.chunk.js";const j=u.forwardRef(({bsPrefix:e,className:r,as:a="div",...i},o)=>{const m=w(e,"row"),c=$(),g=E(),x=`${m}-cols`,C=[];return c.forEach(t=>{const f=i[t];delete i[t];let s;f!=null&&typeof f=="object"?{cols:s}=f:s=f;const d=t!==g?`-${t}`:"";s!=null&&C.push(`${x}${d}-${s}`)}),n.jsx(a,{ref:o,...i,className:M(r,m,...C)})});j.displayName="Row";const L=400;function z(e){const r=()=>{if(!e.isFetching){if(e.scrollContainer){const{scrollContainer:a}=e,i=a.getBoundingClientRect().height+a.scrollTop,o=a.scrollHeight-L;if(i<o)return}else{const a=window.innerHeight+document.documentElement.scrollTop,i=document.documentElement.scrollHeight-L;if(a<i)return}e.fetchNextPage()}};u.useEffect(()=>{const a=F.throttle(r,200),i=e.scrollContainer||window;return e.hasMore&&i.addEventListener("scroll",a),()=>i.removeEventListener("scroll",a)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function te(e,r,a,i,o,m){const[c,g]=u.useState(0),x=r;function C(s){if(!e)return null;const d=e(s);return d?d.key:null}const t=P(C,i,o);function f(){if(!(!r||!e||!t))return g(s=>s+1),x(t.nextCursor)}return z({fetchNextPage:f,hasMore:!!(t!=null&&t.nextCursor),isFetching:t==null?void 0:t.isFetching,scrollContainer:m}),u.useEffect(()=>{t&&t.shouldInitialFetch&&r&&(x(),g(s=>s+1))},[t==null?void 0:t.shouldInitialFetch,r]),u.useEffect(()=>{var d,v;if(!(t!=null&&t.statusCode)||!F.isFunction(a))return;const s=+((v=(d=t.statusCode)==null?void 0:d.toString())==null?void 0:v.substr(0,1));s!==k.ClientError&&s!==k.ServerError||a(c,t.statusCode)},[t==null?void 0:t.statusCode]),{items:t==null?void 0:t.items,hasMore:!!(t!=null&&t.nextCursor),nextCursor:t==null?void 0:t.nextCursor,isFetching:t==null?void 0:t.isFetching,totalItems:t==null?void 0:t.totalItems,hasFirstPageCompleted:t==null?void 0:t.hasFirstPageCompleted}}const I="_container_1kfhe_1",V="_spinner_1kfhe_4",_={container:I,spinner:V};R.defaultProps={fetchOnScroll:!1};function R(e){const[r,a]=X();return u.useEffect(()=>{var i;e.fetchOnScroll&&(!a||e.isFetching||(i=e.fetchNext)==null||i.call(e,e.nextCursor))},[a,e.isFetching]),n.jsx("div",{className:`p-3 text-center ${_.container}`,children:e.isFetching?n.jsx(D,{as:"span",animation:"border",role:"status",className:_.spinner}):n.jsx("div",{ref:r,children:n.jsx(H,{svg:B,className:"svg-container cursor-pointer",size:y.Large,onClick:()=>{var i;return(i=e.fetchNext)==null?void 0:i.call(e,e.nextCursor)}})})})}const S={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,r){return e.sm?"sm":r||"md"},getThumbnailColSize(e){return e?10:12}},G="_partialName_157xw_4",A="_partialDescription_157xw_8",O="_partialThumbnail_157xw_12",Q="_partialDragHandle_157xw_15",N={partialName:G,partialDescription:A,partialThumbnail:O,partialDragHandle:Q};J.defaultProps={numVideos:15};function J(e){return n.jsx(n.Fragment,{children:Array(e.numVideos).fill(null).map((r,a)=>n.jsxs("div",{className:"d-flex",children:[e.allowBulkActions&&n.jsx("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.jsx(K,{...e})]},a))})}function K(e){const r=T(),i=S.getSize(r,"md")==="sm",o=e.withReordering&&!r.xs;return n.jsxs(j,{className:`${i?"":"py-2"} flex-grow-1`,children:[n.jsx(b,{...S.getThumbnailColumns(),className:`flex-column align-items-flex-start ${i?"pb-2 pe-1":"mb-1 pe-3 pe-md-2"}`,children:n.jsxs(j,{children:[!!o&&n.jsx("div",{className:"d-flex align-items-center justify-content-center col-2",children:n.jsx("div",{className:`partial-loading-background ${N.partialDragHandle}`})}),n.jsx(b,{xs:S.getThumbnailColSize(o),children:n.jsx("div",{className:`partial-loading-background ${i?"rounded":"rounded-3"} ${N.partialThumbnail}`})})]})}),n.jsxs(b,{...S.getDetailsColumns(),className:i?"pb-2":"px-2",children:[n.jsx("div",{className:`partial-loading-background mb-1 ${N.partialName}`}),n.jsx("div",{className:`partial-loading-background ${N.partialDescription}`})]})]})}Z.defaultProps={checked:!1,label:"",className:""};function Z(e){const{isLabelEllipsis:r}=e,a=u.useRef(null);return u.useEffect(()=>{if(a.current){if(e.checked){a.current.indeterminate&&(a.current.indeterminate=!1);return}if(e.indeterminate&&!a.current.indeterminate){a.current.indeterminate=!0;return}!e.indeterminate&&a.current.indeterminate&&(a.current.indeterminate=!1)}},[a.current,e.indeterminate,e.checked]),n.jsxs("div",{className:`form-check pe-2 ${e.className}`,children:[n.jsx("input",{ref:a,type:"checkbox",className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&n.jsx("label",{className:"form-check-label cursor-pointer align-top",htmlFor:e.id,children:n.jsx("span",{className:`${r?"clamp-1":""}`,children:e.label})})]})}function ae(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",d:"M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024"})})}function ne(){const e=h(l.XS),r=h(l.SM),a=h(l.MD),i=h(l.LG),o=h(l.XL),m=h(l.XXL);let c=l.LG;return e&&(c=l.XS),r&&(c=l.SM),a&&(c=l.MD),i&&(c=l.LG),o&&(c=l.XL),m&&(c=l.XXL),c}export{Z as C,ae as G,R as I,J as P,j as R,S as V,ne as a,te as u};
2
+ //# sourceMappingURL=CHNNWZoa.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CHNNWZoa.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","_a","HttpStatusClass","InfiniteScrollFooter","inView","useInView","React.useEffect","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","VideoListHelper","size","hasDragHandle","PartialVideoList","Fragment","_","i","jsxs","PartialVideoItem","useBreakpoints","isSmall","withDragHandle","Col","Checkbox","isLabelEllipsis","React.useRef","GraduationCapSvg","useGetMediaQueryString","isXS","useMediaQuery","MediaQueryStrings","isSM","isMD","isLG","isXL","isXXL","currentString"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{j as t,cl as p,L as o,I as S,Q as C,B as v,O as f}from"./app-DxIP7Chi.js";import{C as m}from"./BlDVEZsX.chunk.js";import{R as x,s as P}from"./C-jOhSzY.chunk.js";import{a as $,F as j}from"./Be9uUZcG.chunk.js";var d=(e=>(e.Draft="Draft",e.Published="Published",e.Archived="Archived",e))(d||{}),H=(e=>(e.Discover="discover",e.Classification="classification",e.ClassificationDirectory="classification-directory",e.ClassificationCurriculum="classification-curriculum",e.MoviesAndTv="movies-and-tv",e.Company="company",e.Search="search",e))(H||{}),g=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(g||{});function A(e){return t.jsx("svg",{...e,children:t.jsx("path",{fill:"currentColor",fillRule:"evenodd",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",clipRule:"evenodd"})})}function D(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}const b=(e,r,n)=>{e=e.toString();const i=r-e.length;return i<=0?e:new Array(i+1).join(n)+e},w={ToDisplayDuration(e,r){if(!p(e))return"";const n=new Date(e),i=n.getUTCHours(),c=b(n.getUTCMinutes(),2,"0"),a=b(n.getUTCSeconds(),2,"0");return r||i>0?`${i}:${c}:${a}`:`${c}:${a}`},ToDisplayDurationNewStyle(e,r){if(!p(e))return"";const n=new Date(e),i=n.getUTCHours();let c=n.getUTCMinutes();const a=n.getUTCSeconds();if((i>0||c>0)&&a>=30&&(c=c+1),i>0){const h=i>1?"hrs":"hr";return c>0?r&&a>0?`${i}${h} ${c}m ${a}s`:`${i}${h} ${c}m `:`${i} ${h}`}return c>0?r&&a>0?`${c}m ${a}s`:`${c}m`:`${a}s`}};var l=(e=>(e.Folder="category",e.CategoryTree="category_tree",e.CustomLibrary="custom_library",e.HostedLibrary="hosted_library",e.Exchange="exchange",e.Workspace="workspace",e.Video="video",e.Clip="clip",e.Interactive="interactive",e))(l||{}),s=(e=>(e.Pdf="pdf",e.Image="image",e.PowerPoint="powerpoint",e.Document="document",e.Excel="excel",e.Zip="archive",e.File="text",e))(s||{});function N(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}function E(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}function L(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}function q(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}function M(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}function V(e){return t.jsx("svg",{...e,children:t.jsx("path",{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",fill:"currentColor"})})}const u="shared.shared-utils",k={mapRatingToClass(e){return e?(n=>{switch(!0){case n<32:return"bg-purple";case n<48:return"bg-green";case n<80:return"bg-blue";case n<96:return"bg-red";case n<128:return"bg-pink";case n>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case l.HostedLibrary:case l.CustomLibrary:return e.name;case l.Exchange:return o.getPhrase(u,"exchange");case l.Workspace:return o.getPhrase(u,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case l.HostedLibrary:case l.CustomLibrary:return"bg-blue";case l.Exchange:return"bg-green";case l.Workspace:default:return"bg-red"}},isInteractive(e){var r,n;return!!((n=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&n.length)},mapTypeToSvg(e){let n={[s.Pdf]:E,[s.Image]:$,[s.PowerPoint]:L,[s.Document]:M,[s.Excel]:N,[s.Zip]:V,[s.File]:q}[e];return n||(n=j),n},mapTypeToClass(e){switch(e){case s.Pdf:return"icon-red";case s.Image:return"icon-purple";case s.Document:return"icon-blue";case s.Excel:return"icon-green";case s.PowerPoint:return"icon-orange";case s.Zip:return"icon-teal";case s.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case s.Pdf:return o.getPhrase(u,"pdf");case s.Image:return o.getPhrase(u,"image");case s.Document:return o.getPhrase(u,"document");case s.Excel:return o.getPhrase(u,"spreadsheet");case s.PowerPoint:return o.getPhrase(u,"presentation");case s.Zip:return o.getPhrase(u,"zipArchive");case s.File:return o.getPhrase(u,"file");default:return""}}},F="shared.badges",I=o.encloseNamespace(F);var R=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(R||{});const U={xs:f.ExtraSmall,sm:f.Small,std:f.Standard,lg:f.Large},Z={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function _(e){switch(e){case m.Published:case d.Published:return"bg-success";case m.Archived:case m.Rejected:case d.Archived:return"bg-danger";case m.Draft:case d.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case m.Pending:case m.Processing:return"bg-warning"}}function W(e){return e.includes(g.Streamable)?`px-1 text-nowrap d-flex align-items-center ${P.streamable}`:e.includes(g.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(g.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(g.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function T(e,r,n){const i="badge",c=Z[n];let a="";if(e==="duration-approximate"&&(a="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(a="duration-badge"),e==="interactive"&&(a="interactive-badge"),e==="rating"&&(a=`rating-badge text-shadow ${k.mapRatingToClass(r.value)}`),e==="production-year"&&(a="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${_(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${c}`;if(e==="count"&&(a="count-badge px-1 rounded"),e==="restriction"){const h=x.mapRestrictionToClass(r.restrictions);return C("restriction-badge rounded-pill px-2 d-flex align-items-center",h)}return e==="source"&&(a=W(r)),C(i,a)}function G(e,r,n){if(e==="interactive")return I("interactive");if(e==="duration-approximate")return w.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return w.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return t.jsx(v,{svg:D});if(e==="status")return typeof r=="number"?m[r]:r;if(e==="trending")return t.jsxs(t.Fragment,{children:[t.jsx(v,{svg:A,size:U[n]}),t.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return t.jsxs(t.Fragment,{children:[t.jsx(v,{svg:x.mapRestrictionToSvg(r.restrictions)}),t.jsx("span",{children:x.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const i=r;return i.includes(g.Streamable)?"streamable":i.includes(g.MoviesAndTv)?"movies + tv":i.includes(g.Exchange)?"exchange":i.includes(g.Twig)?"twig":"-"}}function Q(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function Y(e,r){var n,i;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((n=r==null?void 0:r.data)!=null&&n.length):e==="captions"?!!(r!=null&&r.length)||!!((i=r==null?void 0:r.data)!=null&&i.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function O(e){const{type:r,data:n,size:i="std"}=e;if(!Y(r,n))return t.jsx(t.Fragment,{});let c=T(r,n,i);c=`${c} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const a=G(r,n,i),h=Q(r,n),z=e.inline&&"d-inline-block";return h?t.jsx("div",{className:"badge-wrapper d-inline",children:t.jsx(S,{...h,spanHack:!0,spanHackClassName:z,children:t.jsx("span",{className:c,children:a})})}):t.jsx("span",{className:`${c} badge-wrapper`,children:a})}export{O as B,D as C,w as D,l as M,s as R,R as a,H as b};
2
+ //# sourceMappingURL=CI47nh5L.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CI47nh5L.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{a1 as r,aQ as l,l as m,L as h,j as e,a as x,b as u,z as s,bx as j,aH as v,aA as T}from"./app-DxIP7Chi.js";import{a as f,T as R}from"./D_mIsJh2.chunk.js";import{T as N,a as b}from"./DhC-T3Lw.chunk.js";import{T as i}from"./cw5ndfQh.chunk.js";import{u as w}from"./C1_c6qh4.chunk.js";import"./yBXeHdE_.chunk.js";import"./BGnfLy0q.chunk.js";import"./CI47nh5L.chunk.js";import"./BlDVEZsX.chunk.js";import"./C-jOhSzY.chunk.js";import"./Be9uUZcG.chunk.js";import"./Bpa_PvUX.chunk.js";import"./DXjf6BeH.chunk.js";import"./B_bz6ygY.chunk.js";import"./C7yAlGG9.chunk.js";const a="tv.tvGuide",S=h.encloseNamespace(a);function z(n){const o=r(T.config()),t=r(i.region(n.region)),c=r(i.dateRange(n.region)),p=r(i.regions()),{setRegion:d}=w(),{showTvGuide:g}=l();return m({title:S("title")}),e.jsxs(e.Fragment,{children:[e.jsx(N,{region:t.data}),e.jsx(f,{dateRange:c.data,region:t.data}),e.jsxs("div",{className:"d-flex justify-content-between",children:[e.jsx(R,{active:"tv-guide",currentRegion:t.data,showTvGuide:g}),e.jsx(b,{currentRegion:t.data,regions:p.data,appLink:{application:u.TV,action:x.Tv.CHANNELS},onClick:d})]}),e.jsx("div",{className:"row",children:e.jsxs("div",{className:"col-6",children:[e.jsx("h1",{className:"h4",children:e.jsx(s,{namespace:a,phrase:"title"})}),e.jsx("p",{children:e.jsx(s,{namespace:a,phrase:"paragraph1"})}),e.jsx("p",{children:e.jsx(s,{namespace:a,phrase:"paragraph2"})}),e.jsx("p",{children:e.jsx(s,{namespace:a,phrase:"paragraph3"})}),o.data&&e.jsx(j,{href:`${o.data.onlineUrl}/login?returnUrl=/tv/guide`,openInNewTab:!0,svg:v,className:"btn btn-dark",children:e.jsx(s,{namespace:a,phrase:"cta"})})]})})]})}export{z as TvGuideView};
2
+ //# sourceMappingURL=CIkmhMNR.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CIkmhMNR.chunk.js","sources":["../../src/apps/tv/views/tv-guide/TvGuideView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { Config } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvInfoAlert } from 'apps/tv/components/tv-info-alert/TvInfoAlert';\nimport { TvRegionSelect } from 'apps/tv/components/tv-region-select/TvRegionSelect';\nimport { TvSearchBar } from 'apps/tv/components/tv-search-bar/TvSearchBar';\nimport { TvTabs } from 'apps/tv/components/tv-tabs/TvTabs';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useSelectedRegion } from 'apps/tv/hooks/useSelectedRegion';\nimport { TvDateRange, TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.tvGuide';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvGuideViewProps {\n region: string;\n}\n\nexport function TvGuideView(props: TvGuideViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const dateRange = Flight.useBasicFetch<TvDateRange>(TvRequests.dateRange(props.region));\n const regions = Flight.useBasicFetch<TvRegion[]>(TvRequests.regions());\n\n const { setRegion } = useSelectedRegion();\n const { showTvGuide } = useLiteUpgrade();\n\n useSetPageMetadata({ title: getPhrase('title') });\n\n return (\n <>\n <TvSearchBar region={region.data} />\n\n <TvInfoAlert dateRange={dateRange.data} region={region.data} />\n\n <div className='d-flex justify-content-between'>\n <TvTabs\n active='tv-guide'\n currentRegion={region.data}\n showTvGuide={showTvGuide}\n />\n\n <TvRegionSelect\n currentRegion={region.data}\n regions={regions.data}\n appLink={{\n application: AppChannels.TV,\n action: Actions.Tv.CHANNELS\n }}\n onClick={setRegion}\n />\n </div>\n\n <div className='row'>\n <div className='col-6'>\n <h1 className='h4'>\n <Text namespace={namespace} phrase='title' />\n </h1>\n <p>\n <Text namespace={namespace} phrase='paragraph1' />\n </p>\n <p>\n <Text namespace={namespace} phrase='paragraph2' />\n </p>\n <p>\n <Text namespace={namespace} phrase='paragraph3' />\n </p>\n {config.data &&\n <IconButton\n href={`${config.data.onlineUrl}/login?returnUrl=/tv/guide`}\n openInNewTab\n svg={NewWindowSvg}\n className='btn btn-dark'\n >\n <Text namespace={namespace} phrase='cta' />\n </IconButton>\n }\n </div>\n </div>\n </>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TvGuideView","props","config","Flight.useBasicFetch","ConfigRequests","region","TvRequests","dateRange","regions","setRegion","useSelectedRegion","showTvGuide","useLiteUpgrade","useSetPageMetadata","jsxs","Fragment","jsx","TvSearchBar","TvInfoAlert","TvTabs","TvRegionSelect","AppChannels","Actions","Text","IconButton","NewWindowSvg"],"mappings":"ujBAwBA,MAAMA,EAAY,aACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAMrD,SAASG,EAAYC,EAAsC,CAChE,MAAMC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAASF,EAA+BG,EAAW,OAAOL,EAAM,MAAM,CAAC,EACvEM,EAAYJ,EAAkCG,EAAW,UAAUL,EAAM,MAAM,CAAC,EAChFO,EAAUL,EAAiCG,EAAW,SAAS,EAE/D,CAAE,UAAAG,CAAA,EAAcC,EAAA,EAChB,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAExB,OAAAC,EAAmB,CAAE,MAAOf,EAAU,OAAO,EAAG,EAG9CgB,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAY,OAAQZ,EAAO,IAAA,CAAM,QAEjCa,EAAA,CAAY,UAAWX,EAAU,KAAM,OAAQF,EAAO,KAAM,EAE7DS,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAE,EAAAA,IAACG,EAAA,CACC,OAAO,WACP,cAAed,EAAO,KACtB,YAAAM,CAAA,CAAA,EAGFK,EAAAA,IAACI,EAAA,CACC,cAAef,EAAO,KACtB,QAASG,EAAQ,KACjB,QAAS,CACP,YAAaa,EAAY,GACzB,OAAQC,EAAQ,GAAG,QAAA,EAErB,QAASb,CAAA,CAAA,CACX,EACF,QAEC,MAAA,CAAI,UAAU,MACb,SAAAK,EAAAA,KAAC,MAAA,CAAI,UAAU,QACb,SAAA,CAAAE,EAAAA,IAAC,KAAA,CAAG,UAAU,KACZ,SAAAA,EAAAA,IAACO,GAAK,UAAA1B,EAAsB,OAAO,QAAQ,CAAA,CAC7C,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,QACC,IAAA,CACC,SAAAmB,MAACO,GAAK,UAAA1B,EAAsB,OAAO,aAAa,EAClD,EACCK,EAAO,MACNc,EAAAA,IAACQ,EAAA,CACC,KAAM,GAAGtB,EAAO,KAAK,SAAS,6BAC9B,aAAY,GACZ,IAAKuB,EACL,UAAU,eAEV,SAAAT,EAAAA,IAACO,EAAA,CAAK,UAAA1B,EAAsB,OAAO,KAAA,CAAM,CAAA,CAAA,CAC3C,CAAA,CAEJ,CAAA,CACF,CAAA,EACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ var v=(t=>(t.AU="cv-ap-southeast-1",t.NZ="cv-ap-southeast-2",t.UK="cv-eu-west-1",t.US="cv-na-west-1",t))(v||{});export{v as I};
2
+ //# sourceMappingURL=CJ3oIQlG.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CJ3oIQlG.chunk.js","sources":["../../../../libs/shared/src/enums/InstanceRegion.ts"],"sourcesContent":["export enum InstanceRegion {\n AU = 'cv-ap-southeast-1',\n NZ = 'cv-ap-southeast-2',\n UK = 'cv-eu-west-1',\n US = 'cv-na-west-1'\n}"],"names":["InstanceRegion"],"mappings":"AAAO,IAAKA,GAAAA,IACVA,EAAA,GAAK,oBACLA,EAAA,GAAK,oBACLA,EAAA,GAAK,eACLA,EAAA,GAAK,eAJKA,IAAAA,GAAA,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{j as t,ay as m}from"./app-DxIP7Chi.js";import{t as i}from"./yBXeHdE_.chunk.js";const n="_programTimeBadge_2h19o_1",l="_small_2h19o_5",g="_hover_2h19o_8",a={programTimeBadge:n,small:l,hover:g};function c(e){const o=e.program.timeZone||e.program.region.timeZone,r=i(e.program.startTime,o),s=i(e.program.stopTime,o);return t.jsx("div",{className:`${a.programTimeBadge} ${e.small?`${a.small} align-items-end`:"align-items-center"} ${e.hover?a.hover:""} ${e.className||""} d-flex bg-white text-nowrap border border-dark rounded-pill px-2`,children:t.jsxs("span",{children:[e.showDate&&`${m.format(r,"D MMM")} @ `,m.format(r,"hh:mma"),e.showEndTime&&` - ${m.format(s,"hh:mma")}`]})})}export{c as T};
2
+ //# sourceMappingURL=CPApz2KV.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CPApz2KV.chunk.js","sources":["../../src/apps/tv/components/tv-program-time-badge/TvProgramTimeBadge.tsx"],"sourcesContent":["import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-program-time-badge.module.scss';\n\ninterface TvProgramTimeBadgeProps {\n program: TvProgram;\n small?: boolean;\n showEndTime?: boolean;\n showDate?: boolean;\n hover?: boolean;\n className?: string;\n}\n\nexport function TvProgramTimeBadge(props: TvProgramTimeBadgeProps) {\n const timeZone = props.program.timeZone || props.program.region.timeZone;\n const startTime = toLocalTime(props.program.startTime, timeZone);\n const stopTime = toLocalTime(props.program.stopTime, timeZone);\n\n return (\n <div className={`${styles.programTimeBadge} ${props.small ? `${styles.small} align-items-end` : 'align-items-center'} ${props.hover ? styles.hover : ''} ${props.className || ''} d-flex bg-white text-nowrap border border-dark rounded-pill px-2`}>\n <span>\n {props.showDate && `${DateHelper.format(startTime, 'D MMM')} @ `}\n {DateHelper.format(startTime, 'hh:mma')}\n {props.showEndTime && ` - ${DateHelper.format(stopTime, 'hh:mma')}`}\n </span>\n </div>\n );\n}"],"names":["TvProgramTimeBadge","props","timeZone","startTime","toLocalTime","stopTime","jsx","styles","jsxs","DateHelper"],"mappings":"uMAkBO,SAASA,EAAmBC,EAAgC,CACjE,MAAMC,EAAWD,EAAM,QAAQ,UAAYA,EAAM,QAAQ,OAAO,SAC1DE,EAAYC,EAAYH,EAAM,QAAQ,UAAWC,CAAQ,EACzDG,EAAWD,EAAYH,EAAM,QAAQ,SAAUC,CAAQ,EAE7D,OACEI,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,gBAAgB,IAAIN,EAAM,MAAQ,GAAGM,EAAO,KAAK,mBAAqB,oBAAoB,IAAIN,EAAM,MAAQM,EAAO,MAAQ,EAAE,IAAIN,EAAM,WAAa,EAAE,oEAC9K,SAAAO,EAAAA,KAAC,OAAA,CACE,SAAA,CAAAP,EAAM,UAAY,GAAGQ,EAAW,OAAON,EAAW,OAAO,CAAC,MAC1DM,EAAW,OAAON,EAAW,QAAQ,EACrCF,EAAM,aAAe,MAAMQ,EAAW,OAAOJ,EAAU,QAAQ,CAAC,EAAA,CAAA,CACnE,CAAA,CACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{a1 as s,j as a,P as g,L as h,w as i,z as u,aA as x}from"./app-DxIP7Chi.js";import{T as j}from"./CPApz2KV.chunk.js";import{T as r}from"./cw5ndfQh.chunk.js";import"./yBXeHdE_.chunk.js";const l="tv.radioDownload",d=h.encloseNamespace(l);function T(o){const t=s(x.config()),e=s(r.program(o.id)),c=s(r.region(o.region));function m(){var n;const p=(n=e.data)==null?void 0:n.globalId.split("-").join("");return`${t.data.tvPreviewUrls[c.data.code]}/audio/${p}.mp3`}return t.hasCompleted&&e.hasCompleted?a.jsxs(g,{title:d("title"),closePopup:o.closePopup,showLoadingSpinner:!e.hasCompleted,children:[e.data&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:"fw-semibold mb-2",children:e.data.title}),a.jsx("div",{className:"d-flex mb-2",children:a.jsx(j,{program:e.data,showDate:!0,showEndTime:!0})}),a.jsx("p",{children:e.data.description})]}),a.jsxs(i,{children:[a.jsx(i.Cancel,{text:d("cancel"),onClick:o.closePopup,variant:"link"}),a.jsx("a",{target:"_blank",href:m(),className:"btn btn-dark",children:a.jsx(u,{namespace:l,phrase:"download"})})]})]}):a.jsx(a.Fragment,{})}export{T as TvRadioDownloadView};
2
+ //# sourceMappingURL=CRO8NV-g.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CRO8NV-g.chunk.js","sources":["../../src/apps/tv/views/tv-radio-download/TvRadioDownloadView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { Popup, PopupProps } 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 { Config } from 'libs/shared/interfaces';\n\nimport { TvProgramTimeBadge } from 'apps/tv/components/tv-program-time-badge/TvProgramTimeBadge';\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.radioDownload';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvRadioDownloadProps extends PopupProps {\n id: string;\n region: string;\n}\n\nexport function TvRadioDownloadView(props: TvRadioDownloadProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n\n function getDownloadLink() {\n const globalId = program.data?.globalId.split('-').join('');\n return `${config.data.tvPreviewUrls[region.data.code]}/audio/${globalId}.mp3`;\n }\n\n const hasLoaded = (config.hasCompleted && program.hasCompleted);\n\n if (!hasLoaded) {\n return <></>;\n }\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!program.hasCompleted}\n >\n {program.data &&\n <>\n <p className='fw-semibold mb-2'>{program.data.title}</p>\n <div className='d-flex mb-2'>\n <TvProgramTimeBadge program={program.data} showDate showEndTime />\n </div>\n <p>{program.data.description}</p>\n </>\n }\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('cancel')}\n onClick={props.closePopup}\n variant='link'\n />\n <a target='_blank' href={getDownloadLink()} className='btn btn-dark'>\n <Text namespace={namespace} phrase='download' />\n </a>\n </PopupButtons>\n </Popup>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TvRadioDownloadView","props","config","Flight.useBasicFetch","ConfigRequests","program","TvRequests","region","getDownloadLink","globalId","_a","jsxs","Popup","Fragment","jsx","TvProgramTimeBadge","PopupButtons","Text"],"mappings":"8LAgBA,MAAMA,EAAY,mBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAOrD,SAASG,EAAoBC,EAA6B,CAC/D,MAAMC,EAASC,EAA6BC,EAAe,QAAQ,EAC7DC,EAAUF,EAAgCG,EAAW,QAAQL,EAAM,EAAE,CAAC,EACtEM,EAASJ,EAA+BG,EAAW,OAAOL,EAAM,MAAM,CAAC,EAE7E,SAASO,GAAkB,OACzB,MAAMC,GAAWC,EAAAL,EAAQ,OAAR,YAAAK,EAAc,SAAS,MAAM,KAAK,KAAK,IACxD,MAAO,GAAGR,EAAO,KAAK,cAAcK,EAAO,KAAK,IAAI,CAAC,UAAUE,CAAQ,MACzE,CAIA,OAFmBP,EAAO,cAAgBG,EAAQ,aAOhDM,EAAAA,KAACC,EAAA,CACC,MAAOd,EAAU,OAAO,EACxB,WAAYG,EAAM,WAClB,mBAAoB,CAACI,EAAQ,aAE5B,SAAA,CAAAA,EAAQ,MACPM,EAAAA,KAAAE,EAAAA,SAAA,CACE,SAAA,CAAAC,MAAC,IAAA,CAAE,UAAU,mBAAoB,SAAAT,EAAQ,KAAK,MAAM,QACnD,MAAA,CAAI,UAAU,cACb,eAACU,EAAA,CAAmB,QAASV,EAAQ,KAAM,SAAQ,GAAC,YAAW,EAAA,CAAC,EAClE,QACC,IAAA,CAAG,SAAAA,EAAQ,KAAK,YAAY,CAAA,EAC/B,SAEDW,EAAA,CACC,SAAA,CAAAF,EAAAA,IAACE,EAAa,OAAb,CACC,KAAMlB,EAAU,QAAQ,EACxB,QAASG,EAAM,WACf,QAAQ,MAAA,CAAA,QAET,IAAA,CAAE,OAAO,SAAS,KAAMO,IAAmB,UAAU,eACpD,SAAAM,EAAAA,IAACG,EAAA,CAAK,UAAApB,EAAsB,OAAO,UAAA,CAAW,EAChD,CAAA,EACF,CAAA,CAAA,CAAA,EA3BKiB,EAAAA,IAAAD,EAAAA,SAAA,EAAE,CA8Bb"}