@clickview/reports 0.72.0-rc.0 → 0.73.0-rc.2

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 (418) 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 -3
  61. package/dist/css/1VpVng8x.chunk.css +1 -0
  62. package/dist/css/BDijM1kt.chunk.css +1 -0
  63. package/dist/css/BMPwvOki.chunk.css +1 -0
  64. package/dist/css/BNt45Kgy.chunk.css +1 -0
  65. package/dist/css/BSGhUWzl.chunk.css +1 -0
  66. package/dist/css/BZ3_uhDP.chunk.css +1 -0
  67. package/dist/css/BaadNO4A.chunk.css +1 -0
  68. package/dist/css/BdUNjJqp.chunk.css +1 -0
  69. package/dist/css/BdeI0FAV.chunk.css +1 -0
  70. package/dist/css/BxcMGr8Y.chunk.css +1 -0
  71. package/dist/css/ByuL_xKJ.chunk.css +1 -0
  72. package/dist/css/C-A0Pj_7.chunk.css +1 -0
  73. package/dist/css/C4jMfPWU.chunk.css +1 -0
  74. package/dist/css/C7XoyEPr.chunk.css +1 -0
  75. package/dist/css/C8sxda3R.chunk.css +1 -0
  76. package/dist/css/CD1qrI1T.chunk.css +1 -0
  77. package/dist/css/CFO--d_R.chunk.css +1 -0
  78. package/dist/css/CX9nw8t8.chunk.css +1 -0
  79. package/dist/css/C_qGRdC2.chunk.css +1 -0
  80. package/dist/css/CdC6ugQR.chunk.css +1 -0
  81. package/dist/css/ClRRGXPb.chunk.css +1 -0
  82. package/dist/css/Cr1bwtZG.chunk.css +1 -0
  83. package/dist/css/DBlPz5Fw.chunk.css +1 -0
  84. package/dist/css/DDnpOnVB.chunk.css +1 -0
  85. package/dist/css/DFZQCLLg.chunk.css +1 -0
  86. package/dist/css/DJwAbl6l.chunk.css +1 -0
  87. package/dist/css/DWjg_0sz.chunk.css +1 -0
  88. package/dist/css/DYV9jjVn.chunk.css +1 -0
  89. package/dist/css/Dgeh4AqU.chunk.css +9 -0
  90. package/dist/css/DlOtoSz0.chunk.css +1 -0
  91. package/dist/css/DlxOgKUu.chunk.css +1 -0
  92. package/dist/css/Dp3arkyy.chunk.css +1 -0
  93. package/dist/css/DwgaDUzz.chunk.css +1 -0
  94. package/dist/css/FPQ_LmXH.chunk.css +1 -0
  95. package/dist/css/H09rC9gw.chunk.css +1 -0
  96. package/dist/css/LAFr2dPT.chunk.css +1 -0
  97. package/dist/css/Pg1TlYG6.chunk.css +1 -0
  98. package/dist/css/PsQn3-kb.chunk.css +1 -0
  99. package/dist/css/alkEuPrr.chunk.css +1 -0
  100. package/dist/css/k4DgCj_g.chunk.css +1 -0
  101. package/dist/en.json +1 -0
  102. package/dist/scripts/0Uji-0Ig.chunk.js +2 -0
  103. package/dist/scripts/0Uji-0Ig.chunk.js.map +1 -0
  104. package/dist/scripts/1uUClbTi.chunk.js +2 -0
  105. package/dist/scripts/1uUClbTi.chunk.js.map +1 -0
  106. package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
  107. package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
  108. package/dist/scripts/9-ob4xwW.chunk.js +2 -0
  109. package/dist/scripts/9-ob4xwW.chunk.js.map +1 -0
  110. package/dist/scripts/B-0CRp8U.chunk.js +15 -0
  111. package/dist/scripts/B-0CRp8U.chunk.js.map +1 -0
  112. package/dist/scripts/B-M_POW7.chunk.js +2 -0
  113. package/dist/scripts/B-M_POW7.chunk.js.map +1 -0
  114. package/dist/scripts/B0HNQPjj.chunk.js +2 -0
  115. package/dist/scripts/B0HNQPjj.chunk.js.map +1 -0
  116. package/dist/scripts/B2kHUvkf.chunk.js +2 -0
  117. package/dist/scripts/B2kHUvkf.chunk.js.map +1 -0
  118. package/dist/scripts/BADbeO_o.chunk.js +2 -0
  119. package/dist/scripts/BADbeO_o.chunk.js.map +1 -0
  120. package/dist/scripts/BAR_V9AM.chunk.js +2 -0
  121. package/dist/scripts/BAR_V9AM.chunk.js.map +1 -0
  122. package/dist/scripts/BArX7fyb.chunk.js +2 -0
  123. package/dist/scripts/BArX7fyb.chunk.js.map +1 -0
  124. package/dist/scripts/BAt5WimN.chunk.js +2 -0
  125. package/dist/scripts/BAt5WimN.chunk.js.map +1 -0
  126. package/dist/scripts/BBKDp0Ea.chunk.js +4 -0
  127. package/dist/scripts/BBKDp0Ea.chunk.js.map +1 -0
  128. package/dist/scripts/BE4qMmvm.chunk.js +2 -0
  129. package/dist/scripts/BE4qMmvm.chunk.js.map +1 -0
  130. package/dist/scripts/BEjQ8YiC.chunk.js +10 -0
  131. package/dist/scripts/BEjQ8YiC.chunk.js.map +1 -0
  132. package/dist/scripts/BFH1W3y4.chunk.js +2 -0
  133. package/dist/scripts/BFH1W3y4.chunk.js.map +1 -0
  134. package/dist/scripts/BGYUqEPH.chunk.js +2 -0
  135. package/dist/scripts/BGYUqEPH.chunk.js.map +1 -0
  136. package/dist/scripts/BI4Pc5Qp.chunk.js +3 -0
  137. package/dist/scripts/BI4Pc5Qp.chunk.js.map +1 -0
  138. package/dist/scripts/BIcuRL8o.chunk.js +2 -0
  139. package/dist/scripts/BIcuRL8o.chunk.js.map +1 -0
  140. package/dist/scripts/BK5Lddwt.chunk.js +2 -0
  141. package/dist/scripts/BK5Lddwt.chunk.js.map +1 -0
  142. package/dist/scripts/BM1URibR.chunk.js +2 -0
  143. package/dist/scripts/BM1URibR.chunk.js.map +1 -0
  144. package/dist/scripts/BOenBxfx.chunk.js +34 -0
  145. package/dist/scripts/BOenBxfx.chunk.js.map +1 -0
  146. package/dist/scripts/BOoxRruH.chunk.js +2 -0
  147. package/dist/scripts/BOoxRruH.chunk.js.map +1 -0
  148. package/dist/scripts/BP4vyxCh.chunk.js +2 -0
  149. package/dist/scripts/BP4vyxCh.chunk.js.map +1 -0
  150. package/dist/scripts/BRR3J_Zy.chunk.js +2 -0
  151. package/dist/scripts/BRR3J_Zy.chunk.js.map +1 -0
  152. package/dist/scripts/BUJR0SBs.chunk.js +2 -0
  153. package/dist/scripts/BUJR0SBs.chunk.js.map +1 -0
  154. package/dist/scripts/BY58fjpA.chunk.js +2 -0
  155. package/dist/scripts/BY58fjpA.chunk.js.map +1 -0
  156. package/dist/scripts/BZV5U3ST.chunk.js +2 -0
  157. package/dist/scripts/BZV5U3ST.chunk.js.map +1 -0
  158. package/dist/scripts/BfaprYhg.chunk.js +2 -0
  159. package/dist/scripts/BfaprYhg.chunk.js.map +1 -0
  160. package/dist/scripts/Bfbk7XQF.chunk.js +2 -0
  161. package/dist/scripts/Bfbk7XQF.chunk.js.map +1 -0
  162. package/dist/scripts/BgBDu2hA.chunk.js +2 -0
  163. package/dist/scripts/BgBDu2hA.chunk.js.map +1 -0
  164. package/dist/scripts/BoLC4I50.chunk.js +2 -0
  165. package/dist/scripts/BoLC4I50.chunk.js.map +1 -0
  166. package/dist/scripts/BsXmQt2a.chunk.js +2 -0
  167. package/dist/scripts/BsXmQt2a.chunk.js.map +1 -0
  168. package/dist/scripts/ByUxUi78.chunk.js +2 -0
  169. package/dist/scripts/ByUxUi78.chunk.js.map +1 -0
  170. package/dist/scripts/BzFtDyVZ.chunk.js +2 -0
  171. package/dist/scripts/BzFtDyVZ.chunk.js.map +1 -0
  172. package/dist/scripts/C1TqvuUF.chunk.js +2 -0
  173. package/dist/scripts/C1TqvuUF.chunk.js.map +1 -0
  174. package/dist/scripts/C5lK-q9T.chunk.js +2 -0
  175. package/dist/scripts/C5lK-q9T.chunk.js.map +1 -0
  176. package/dist/scripts/C7IXStcD.chunk.js +2 -0
  177. package/dist/scripts/C7IXStcD.chunk.js.map +1 -0
  178. package/dist/scripts/CANX99lP.chunk.js +2 -0
  179. package/dist/scripts/CANX99lP.chunk.js.map +1 -0
  180. package/dist/scripts/CBjj_ih-.chunk.js +2 -0
  181. package/dist/scripts/CBjj_ih-.chunk.js.map +1 -0
  182. package/dist/scripts/CCIDM29p.chunk.js +2 -0
  183. package/dist/scripts/CCIDM29p.chunk.js.map +1 -0
  184. package/dist/scripts/CFjwQ5Sg.chunk.js +2 -0
  185. package/dist/scripts/CFjwQ5Sg.chunk.js.map +1 -0
  186. package/dist/scripts/CGbmnb6g.chunk.js +380 -0
  187. package/dist/scripts/CGbmnb6g.chunk.js.map +1 -0
  188. package/dist/scripts/CSd_qFwj.chunk.js +2 -0
  189. package/dist/scripts/CSd_qFwj.chunk.js.map +1 -0
  190. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  191. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  192. package/dist/scripts/CX5q-0jT.chunk.js +2 -0
  193. package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
  194. package/dist/scripts/CZHffw7D.chunk.js +2 -0
  195. package/dist/scripts/CZHffw7D.chunk.js.map +1 -0
  196. package/dist/scripts/C_Famtl1.chunk.js +2 -0
  197. package/dist/scripts/C_Famtl1.chunk.js.map +1 -0
  198. package/dist/scripts/C_TaaD_7.chunk.js +2 -0
  199. package/dist/scripts/C_TaaD_7.chunk.js.map +1 -0
  200. package/dist/scripts/C_zppm7j.chunk.js +2 -0
  201. package/dist/scripts/C_zppm7j.chunk.js.map +1 -0
  202. package/dist/scripts/CbrfSCTb.chunk.js +2 -0
  203. package/dist/scripts/CbrfSCTb.chunk.js.map +1 -0
  204. package/dist/scripts/CjL3q_zy.chunk.js +6 -0
  205. package/dist/scripts/CjL3q_zy.chunk.js.map +1 -0
  206. package/dist/scripts/CjQHXyx0.chunk.js +2 -0
  207. package/dist/scripts/CjQHXyx0.chunk.js.map +1 -0
  208. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  209. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  210. package/dist/scripts/Co9J1lM_.chunk.js +2 -0
  211. package/dist/scripts/Co9J1lM_.chunk.js.map +1 -0
  212. package/dist/scripts/Cq8XHkfC.chunk.js +2 -0
  213. package/dist/scripts/Cq8XHkfC.chunk.js.map +1 -0
  214. package/dist/scripts/Crxtdvtr.chunk.js +2 -0
  215. package/dist/scripts/Crxtdvtr.chunk.js.map +1 -0
  216. package/dist/scripts/CvkQEqoz.chunk.js +2 -0
  217. package/dist/scripts/CvkQEqoz.chunk.js.map +1 -0
  218. package/dist/scripts/DC24UA5G.chunk.js +2 -0
  219. package/dist/scripts/DC24UA5G.chunk.js.map +1 -0
  220. package/dist/scripts/DDQPxnFm.chunk.js +2 -0
  221. package/dist/scripts/DDQPxnFm.chunk.js.map +1 -0
  222. package/dist/scripts/DGmD-zcu.chunk.js +3 -0
  223. package/dist/scripts/DGmD-zcu.chunk.js.map +1 -0
  224. package/dist/scripts/DIqHgqYU.chunk.js +42 -0
  225. package/dist/scripts/DIqHgqYU.chunk.js.map +1 -0
  226. package/dist/scripts/DLNH1FET.chunk.js +2 -0
  227. package/dist/scripts/DLNH1FET.chunk.js.map +1 -0
  228. package/dist/scripts/DREQwdto.chunk.js +2 -0
  229. package/dist/scripts/DREQwdto.chunk.js.map +1 -0
  230. package/dist/scripts/DSJfyygS.chunk.js +2 -0
  231. package/dist/scripts/DSJfyygS.chunk.js.map +1 -0
  232. package/dist/scripts/DUPqT4A_.chunk.js +2 -0
  233. package/dist/scripts/DUPqT4A_.chunk.js.map +1 -0
  234. package/dist/scripts/DZWKI51S.chunk.js +2 -0
  235. package/dist/scripts/DZWKI51S.chunk.js.map +1 -0
  236. package/dist/scripts/DaLaLgLY.chunk.js +2 -0
  237. package/dist/scripts/DaLaLgLY.chunk.js.map +1 -0
  238. package/dist/scripts/DcnG6LJL.chunk.js +2 -0
  239. package/dist/scripts/DcnG6LJL.chunk.js.map +1 -0
  240. package/dist/scripts/DdCE2h3h.chunk.js +2 -0
  241. package/dist/scripts/DdCE2h3h.chunk.js.map +1 -0
  242. package/dist/scripts/DdaZekkP.chunk.js +2 -0
  243. package/dist/scripts/DdaZekkP.chunk.js.map +1 -0
  244. package/dist/scripts/DkJdzeV5.chunk.js +2 -0
  245. package/dist/scripts/DkJdzeV5.chunk.js.map +1 -0
  246. package/dist/scripts/DlVmB7me.chunk.js +4 -0
  247. package/dist/scripts/DlVmB7me.chunk.js.map +1 -0
  248. package/dist/scripts/Dm6PeyeG.chunk.js +2 -0
  249. package/dist/scripts/Dm6PeyeG.chunk.js.map +1 -0
  250. package/dist/scripts/DqMufS1U.chunk.js +2 -0
  251. package/dist/scripts/DqMufS1U.chunk.js.map +1 -0
  252. package/dist/scripts/DtMtah8Q.chunk.js +2 -0
  253. package/dist/scripts/DtMtah8Q.chunk.js.map +1 -0
  254. package/dist/scripts/DwxW4_xW.chunk.js +2 -0
  255. package/dist/scripts/DwxW4_xW.chunk.js.map +1 -0
  256. package/dist/scripts/Dx4VsESo.chunk.js +2 -0
  257. package/dist/scripts/Dx4VsESo.chunk.js.map +1 -0
  258. package/dist/scripts/DyhdHLt7.chunk.js +2 -0
  259. package/dist/scripts/DyhdHLt7.chunk.js.map +1 -0
  260. package/dist/scripts/EpoqEdEt.chunk.js +2 -0
  261. package/dist/scripts/EpoqEdEt.chunk.js.map +1 -0
  262. package/dist/scripts/Etwv4iY4.chunk.js +2 -0
  263. package/dist/scripts/Etwv4iY4.chunk.js.map +1 -0
  264. package/dist/scripts/GlEgn_rx.chunk.js +2 -0
  265. package/dist/scripts/GlEgn_rx.chunk.js.map +1 -0
  266. package/dist/scripts/H-GxGp0N.chunk.js +2 -0
  267. package/dist/scripts/H-GxGp0N.chunk.js.map +1 -0
  268. package/dist/scripts/HFbpCC17.chunk.js +2 -0
  269. package/dist/scripts/HFbpCC17.chunk.js.map +1 -0
  270. package/dist/scripts/HVSLS_Hw.chunk.js +2 -0
  271. package/dist/scripts/HVSLS_Hw.chunk.js.map +1 -0
  272. package/dist/scripts/Hdw9KpzY.chunk.js +10 -0
  273. package/dist/scripts/Hdw9KpzY.chunk.js.map +1 -0
  274. package/dist/scripts/L-FEMlca.chunk.js +2 -0
  275. package/dist/scripts/L-FEMlca.chunk.js.map +1 -0
  276. package/dist/scripts/OUlVmzyS.chunk.js +2 -0
  277. package/dist/scripts/OUlVmzyS.chunk.js.map +1 -0
  278. package/dist/scripts/SdlfGvLH.chunk.js +2 -0
  279. package/dist/scripts/SdlfGvLH.chunk.js.map +1 -0
  280. package/dist/scripts/Us8IAQKV.chunk.js +2 -0
  281. package/dist/scripts/Us8IAQKV.chunk.js.map +1 -0
  282. package/dist/scripts/ZPrCrk06.chunk.js +2 -0
  283. package/dist/scripts/ZPrCrk06.chunk.js.map +1 -0
  284. package/dist/scripts/app-CQEXKRTo.js +228 -0
  285. package/dist/scripts/app-CQEXKRTo.js.map +1 -0
  286. package/dist/scripts/bDb9_r6g.chunk.js +8 -0
  287. package/dist/scripts/bDb9_r6g.chunk.js.map +1 -0
  288. package/dist/scripts/bfga3fp9.chunk.js +6 -0
  289. package/dist/scripts/bfga3fp9.chunk.js.map +1 -0
  290. package/dist/scripts/ckwYvamH.chunk.js +2 -0
  291. package/dist/scripts/ckwYvamH.chunk.js.map +1 -0
  292. package/dist/scripts/gVHcxSzg.chunk.js +2 -0
  293. package/dist/scripts/gVHcxSzg.chunk.js.map +1 -0
  294. package/dist/scripts/j7UObMj5.chunk.js +3 -0
  295. package/dist/scripts/j7UObMj5.chunk.js.map +1 -0
  296. package/dist/scripts/jNUTSO6y.chunk.js +2 -0
  297. package/dist/scripts/jNUTSO6y.chunk.js.map +1 -0
  298. package/dist/scripts/mLe4zPMQ.chunk.js +2 -0
  299. package/dist/scripts/mLe4zPMQ.chunk.js.map +1 -0
  300. package/dist/scripts/oXJu4dT2.chunk.js +2 -0
  301. package/dist/scripts/oXJu4dT2.chunk.js.map +1 -0
  302. package/dist/scripts/pW31gVxo.chunk.js +2 -0
  303. package/dist/scripts/pW31gVxo.chunk.js.map +1 -0
  304. package/dist/scripts/pmJce9de.chunk.js +2 -0
  305. package/dist/scripts/pmJce9de.chunk.js.map +1 -0
  306. package/dist/scripts/rO0zPagv.chunk.js +2 -0
  307. package/dist/scripts/rO0zPagv.chunk.js.map +1 -0
  308. package/dist/scripts/rf9OuobP.chunk.js +2 -0
  309. package/dist/scripts/rf9OuobP.chunk.js.map +1 -0
  310. package/dist/scripts/sBa2VMAv.chunk.js +2 -0
  311. package/dist/scripts/sBa2VMAv.chunk.js.map +1 -0
  312. package/dist/scripts/sFV5nxD4.chunk.js +2 -0
  313. package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
  314. package/dist/scripts/vDUMsOFT.chunk.js +2 -0
  315. package/dist/scripts/vDUMsOFT.chunk.js.map +1 -0
  316. package/dist/scripts/z0Is6h8v.chunk.js +2 -0
  317. package/dist/scripts/z0Is6h8v.chunk.js.map +1 -0
  318. package/dist/scripts/zVke3nt7.chunk.js +3 -0
  319. package/dist/scripts/zVke3nt7.chunk.js.map +1 -0
  320. package/package.json +5 -3
  321. package/typings/utils/env.d.ts +3 -0
  322. package/typings/utils/imports.d.ts +1 -1
  323. package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
  324. package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
  325. package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
  326. package/dist/css/209-reports-c33663a53e.chunk.css +0 -11
  327. package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
  328. package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
  329. package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
  330. package/dist/css/2999-reports-f190450b10.chunk.css +0 -60
  331. package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
  332. package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
  333. package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
  334. package/dist/css/6031-reports-d558076846.chunk.css +0 -6
  335. package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
  336. package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
  337. package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
  338. package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
  339. package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
  340. package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
  341. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
  342. package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
  343. package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
  344. package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
  345. package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
  346. package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
  347. package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
  348. package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
  349. package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
  350. package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
  351. package/dist/css/reports-app-b4c4ec5632.css +0 -32
  352. package/dist/languages/en.json +0 -1
  353. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
  354. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
  355. package/dist/scripts/1456-b7f437ef87-reports.chunk.js +0 -1
  356. package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
  357. package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
  358. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
  359. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
  360. package/dist/scripts/209-72e77f375e-reports.chunk.js +0 -1
  361. package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +0 -1
  362. package/dist/scripts/2217-15fa35197a-reports.chunk.js +0 -1
  363. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
  364. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
  365. package/dist/scripts/2997-444b5bdaf0-reports.chunk.js +0 -1
  366. package/dist/scripts/2999-4d87eebbbd-reports.chunk.js +0 -2
  367. package/dist/scripts/2999-4d87eebbbd-reports.chunk.js.LICENSE.txt +0 -1
  368. package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
  369. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
  370. package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
  371. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
  372. package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
  373. package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
  374. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
  375. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
  376. package/dist/scripts/5051-ff0ec9348d-reports.chunk.js +0 -1
  377. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
  378. package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
  379. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
  380. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
  381. package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
  382. package/dist/scripts/6007-42edca6bba-reports.chunk.js +0 -1
  383. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
  384. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
  385. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
  386. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
  387. package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
  388. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
  389. package/dist/scripts/645-e8b19128e5-reports.chunk.js +0 -1
  390. package/dist/scripts/6545-eadce8e749-reports.chunk.js +0 -1
  391. package/dist/scripts/6811-40ded4c089-reports.chunk.js +0 -1
  392. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
  393. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
  394. package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
  395. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
  396. package/dist/scripts/7747-bc33e51d7b-reports.chunk.js +0 -2
  397. package/dist/scripts/7747-bc33e51d7b-reports.chunk.js.LICENSE.txt +0 -1
  398. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
  399. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
  400. package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +0 -1
  401. package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
  402. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
  403. package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
  404. package/dist/scripts/8622-a422eff0c4-reports.chunk.js +0 -1
  405. package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
  406. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
  407. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
  408. package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
  409. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
  410. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
  411. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
  412. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
  413. package/dist/scripts/9822-1b202f9d49-reports.chunk.js +0 -1
  414. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
  415. package/dist/scripts/9949-63e32c6733-reports.chunk.js +0 -1
  416. package/dist/scripts/bundle-1bfbac149b.min.js +0 -2
  417. package/dist/scripts/bundle-1bfbac149b.min.js.LICENSE.txt +0 -108
  418. package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DkJdzeV5.chunk.js","sources":["../../src/apps/dashboard/views/overview-cards/top-searches/TopSearchesCardView.tsx","../../../../libs/shared/src/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem.tsx","../../src/apps/dashboard/views/overview-cards/top-topics/TopTopicsCardView.tsx","../../src/apps/dashboard/views/overview-cards/top-videos/components/partial-top-videos/PartialTopVideos.tsx","../../src/apps/dashboard/views/overview-cards/top-videos/components/top-video-item/TopVideoItem.tsx","../../src/apps/dashboard/views/overview-cards/top-videos/components/top-videos-empty-state/TopVideosEmptyState.tsx","../../src/apps/dashboard/views/overview-cards/top-videos/TopVideosCardView.tsx"],"sourcesContent":["import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport { SearchRequests } from 'shared/flight-requests/SearchRequests';\nimport { useGetExternalUrl } from 'shared/hooks/UseGetExternalUrl';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopSearch } from 'shared/interfaces';\nimport { ExternalRouteHelper } from 'shared/utils/ExternalRouteHelper';\n\nimport styles from './top-searches-card.module.scss';\n\nconst namespace = 'reportsDashboard.topSearchesCardView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction PartialTopSearches(): JSX.Element {\n return (\n <ul className='list-unstyled m-0 pt-2'>\n <li className='py-1'>\n <div className={`${styles.partialQuery} partial-loading-background`} />\n </li>\n <li className='py-1'>\n <div className={`${styles.partialQuery} partial-loading-background`} />\n </li>\n <li className='py-1'>\n <div className={`${styles.partialQuery} partial-loading-background`} />\n </li>\n <li className='py-1'>\n <div className={`${styles.partialQuery} partial-loading-background`} />\n </li>\n </ul>\n );\n}\n\ninterface EmptyTopSearchesProps {\n isAdmin: boolean;\n}\n\nfunction EmptyTopSearches(props: EmptyTopSearchesProps): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n {getPhrase(props.isAdmin ? 'emptyStateAdmin' : 'emptyStateTeacher')}\n </div>\n );\n}\n\nconst EmojiMap: { [index: number]: string } = {\n [0]: '🥇',\n [1]: '🥈',\n [2]: '🥉'\n};\n\nfunction getCardClassName(props: TopSearchesCardViewProps): string {\n let className = 'd-flex flex-column bg-white rounded p-3';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface TopSearchesCardViewProps {\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopSearchesCardView(props: TopSearchesCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const { hasPermissions } = usePermissions();\n\n const searches = Flight.useBasicFetch<TopSearch[]>(!!requestFilter && SearchRequests.topSearches(requestFilter));\n\n const getSearchUrl = useGetExternalUrl(ExternalRouteHelper.getPrimarySearchUrl);\n\n useHandleObjectError(searches);\n\n return (\n <div className={getCardClassName(props)}>\n <h3 className='h6 mb-2'>{getPhrase('topSearches')}</h3>\n {!!searches.data?.length &&\n <div className='h-100 me-n2'>\n <Scrollbars height='100%'>\n <ul className='list-unstyled m-0 pe-3'>\n {searches.data.map((s, idx) => {\n const emoji = EmojiMap[idx];\n\n return (\n <li\n key={idx}\n className={`py-1 ${styles.searchItem}`}\n >\n <a\n href={getSearchUrl(s.query)}\n target='_blank'\n className='position-relative d-flex justify-content-between align-items-center'\n >\n <span>\n {emoji\n ? <EmojiText emoji={emoji} />\n : <>&nbsp;</> // This is needed to give the li the correct height.\n }\n <span className={styles.query}>\n {s.query}\n </span>\n </span>\n <SvgContainer svg={NewWindowSvg} className={`svg-container ${styles.newWindowIcon}`} />\n </a>\n </li>\n );\n })}\n </ul>\n </Scrollbars>\n </div>\n }\n {!searches.data && <PartialTopSearches />}\n {!!searches.data && !searches.data.length &&\n <EmptyTopSearches isAdmin={hasPermissions(PermissionName.ViewCustomerAnalytics)} />\n }\n </div>\n );\n}","import * as React from 'react';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from './cover-pill.module.scss';\n\nexport const PartialSubjectWidgetItem = () => {\n const [width] = React.useState(RandomHelper.getRandomInt(5) + 3 + 'rem');\n\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={styles.imagePanel} />\n <div className='px-2' style={{ width }} />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} />\n </div>\n </div>\n );\n};\n\nexport const PartialLargeSubjectWidgetItem = () => {\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={`${styles.partialLargeImage}`} />\n <div className='px-2' />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} extraClasses={styles.partialLargeFallback} />\n </div>\n </div>\n );\n};","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { PartialSubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { HasPermissionsFunc, usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsDashboard.topTopicsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOPIC_TYPE_PHRASES = {\n [TopicAnalyticsType.RootTopic]: {\n toggle: 'subjects',\n heading: 'popularSubjects',\n emptyState: {\n admin: 'emptySubjectsAdmin',\n teacher: 'emptySubjectsTeacher'\n }\n },\n [TopicAnalyticsType.ChildTopic]: {\n toggle: 'topics',\n heading: 'popularTopics',\n emptyState: {\n admin: 'emptyTopicsAdmin',\n teacher: 'emptyTopicsTeacher'\n }\n }\n};\n\nconst LOCAL_STORAGE_KEY = 'top:topics:selection';\n\nfunction getInitialToggleState(hasPermissions: HasPermissionsFunc): TopicAnalyticsType {\n const defaultState = hasPermissions(PermissionName.ViewCustomerAnalytics)\n ? TopicAnalyticsType.RootTopic\n : TopicAnalyticsType.ChildTopic;\n\n const localStoragePreference = localStorage.getItem(LOCAL_STORAGE_KEY);\n\n if (!localStoragePreference)\n return defaultState;\n\n const preferenceInt = parseInt(localStoragePreference);\n\n const isValid = !isNaN(preferenceInt) && !!TopicAnalyticsType[preferenceInt];\n\n if (!isValid)\n return defaultState;\n\n return preferenceInt;\n}\n\nfunction setTogglePreference(type: TopicAnalyticsType): void {\n localStorage.setItem(LOCAL_STORAGE_KEY, type.toString());\n}\n\nfunction getEnumValues(): TopicAnalyticsType[] {\n return Object.values(TopicAnalyticsType).filter(t => typeof t === 'number') as TopicAnalyticsType[];\n}\n\ninterface TopTopicsEmptyStateProps {\n type: TopicAnalyticsType;\n isAdmin: boolean;\n}\n\nfunction TopTopicsEmptyState(props: TopTopicsEmptyStateProps): JSX.Element {\n const phrase = TOPIC_TYPE_PHRASES[props.type].emptyState;\n\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n {getPhrase(props.isAdmin ? phrase.admin : phrase.teacher)}\n </div>\n );\n}\n\ninterface TopicTypeToggleProps {\n type: TopicAnalyticsType;\n onSelectType: (type: TopicAnalyticsType) => void;\n}\n\nfunction TopicTypeToggle(props: TopicTypeToggleProps): JSX.Element {\n return (\n <Dropdown align='end'>\n <Dropdown.Toggle\n id='topic-type-dropdown'\n variant='outline-dark'\n className='no-caret'\n >\n {getPhrase(TOPIC_TYPE_PHRASES[props.type].toggle)}\n </Dropdown.Toggle>\n <Dropdown.Menu>\n {getEnumValues().map((type, idx) => {\n if (props.type === type)\n return <React.Fragment key={idx} />;\n\n return (\n <Dropdown.Item key={idx} onClick={() => props.onSelectType(type)}>\n {getPhrase(TOPIC_TYPE_PHRASES[type].toggle)}\n </Dropdown.Item>\n );\n })}\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n\nfunction getCardClassName(props: TopTopicsCardViewProps): string {\n let className = 'd-flex flex-column bg-white rounded p-3';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface TopTopicsCardViewProps {\n className?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopTopicsCardView(props: TopTopicsCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n const { hasPermissions } = usePermissions();\n\n const [ type, setType ] = React.useState(getInitialToggleState(hasPermissions));\n \n const topTopics = Flight.useBasicFetch<Classification[]>(!!requestFilter &&\n TopicRequests.topTopics(requestFilter, type));\n\n function onSelectType(type: TopicAnalyticsType): void {\n setTogglePreference(type);\n setType(type);\n }\n\n return (\n <div className={getCardClassName(props)}>\n <div className='d-flex justify-content-between align-items-center pb-1'>\n <h3 className='h6 m-0'>\n {getPhrase(TOPIC_TYPE_PHRASES[type].heading)}\n </h3>\n <TopicTypeToggle type={type} onSelectType={onSelectType} />\n </div>\n {!topTopics.data &&\n <ul className='list-unstyled m-0'>\n <li className='py-2'>\n <PartialSubjectWidgetItem />\n </li>\n <li className='py-2'>\n <PartialSubjectWidgetItem />\n </li>\n <li className='py-2'>\n <PartialSubjectWidgetItem />\n </li>\n </ul>\n }\n {!!topTopics.data?.length &&\n <div className='h-100 me-n2'>\n <Scrollbars height='100%'>\n <ul className='list-unstyled m-0 pe-3'>\n {topTopics.data.map((t, idx) => (\n <li key={idx} className='py-2'>\n <SubjectWidgetItem data={t} />\n </li>\n ))}\n </ul>\n </Scrollbars>\n </div>\n }\n {!!topTopics.data && !topTopics.data.length &&\n <TopTopicsEmptyState\n type={type}\n isAdmin={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n />\n }\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-top-videos.module.scss';\n\nconst VIDEOS = (new Array(7)).fill(null).map((v, idx) => idx);\n\nexport function PartialTopVideos(): JSX.Element {\n return (\n <ul className='list-unstyled'>\n {VIDEOS.map(v => (\n <li key={v} className='py-2'>\n <div className='row'>\n <div className='col-6'>\n <div className={`${styles.thumbnail} rounded partial-loading-background`} />\n </div>\n <div className='col-6 d-flex align-items-center'>\n <div className={`${styles.name} partial-loading-background`} />\n </div>\n </div>\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\nimport { getVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\ninterface TopVideoItemProps {\n video: VideoTypes;\n}\n\nexport function TopVideoItem(props: TopVideoItemProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n return (\n <li className='py-2'>\n <AppLink appLink={getVideoAppLink(props.video, filterQueryParams)}>\n <div className='row'>\n <div className='col-6'>\n <VideoThumbnail\n video={props.video}\n imageOptions={{ size: ImageSize.Small }}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n newDurationStyle\n size='sm'\n />\n </div>\n <div className='col-6 d-flex align-items-center'>\n <span className='clamp-2 fw-bold'>\n {props.video.name}\n </span>\n </div>\n </div>\n </AppLink>\n </li>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'reportsDashboard.topVideosEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TopVideosEmptyStateProps {\n isAdmin: boolean;\n}\n\nexport function TopVideosEmptyState(props: TopVideosEmptyStateProps): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center text-center h-100'>\n {getPhrase(props.isAdmin ? 'messageAdmin' : 'messageTeacher')}\n </div>\n );\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewRequests } from 'shared/flight-requests/VideoViewRequests';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TopVideosResponse } from 'shared/interfaces';\n\nimport { PartialTopVideos } from './components/partial-top-videos/PartialTopVideos';\nimport { TopVideoItem } from './components/top-video-item/TopVideoItem';\nimport { TopVideosEmptyState } from './components/top-videos-empty-state/TopVideosEmptyState';\n\nconst namespace = 'reportsDashboard.topVideosCardView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useVideosViewsAppLink(): Core.AppLink {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.VIEWS,\n params: filterQueryParams\n };\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopVideosCardView(): JSX.Element {\n const requestFilter = useGetRequestFilter();\n const videoViewsAppLink = useVideosViewsAppLink();\n\n const { hasPermissions } = usePermissions();\n\n const videos = Flight.useBasicFetch<TopVideosResponse>(!!requestFilter &&\n VideoViewRequests.topVideos(requestFilter));\n\n useHandleObjectError(videos);\n\n return (\n <div className='d-flex flex-column bg-white rounded p-3 h-100'>\n <h3 className='h6 mb-2'>{getPhrase('topVideos')}</h3>\n {!!videos.data?.data?.length &&\n <div className='h-100 me-n2'>\n <Scrollbars height='100%'>\n <ul className='list-unstyled m-0 pe-3'>\n {videos.data.data.map((v, idx) => <TopVideoItem key={idx} video={v.object} />)}\n </ul>\n {hasPermissions(PermissionName.ViewCustomerAnalytics) &&\n <div className='d-flex align-items-center justify-content-center mt-2 mb-1'>\n <AppLink appLink={videoViewsAppLink} className='btn btn-outline-dark rounded-pill'>\n {getPhrase('seeMore')}\n </AppLink>\n </div>\n }\n </Scrollbars>\n </div>\n }\n {!videos.data && <PartialTopVideos />}\n {!!videos.data && !videos.data.data.length &&\n <TopVideosEmptyState isAdmin={hasPermissions(PermissionName.ViewCustomerAnalytics)} />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","PartialTopSearches","jsxs","jsx","styles","EmptyTopSearches","props","EmojiMap","getCardClassName","className","TopSearchesCardView","requestFilter","useGetRequestFilter","hasPermissions","usePermissions","searches","Flight.useBasicFetch","SearchRequests","getSearchUrl","useGetExternalUrl","ExternalRouteHelper","useHandleObjectError","_a","Scrollbars","s","idx","emoji","EmojiText","SvgContainer","NewWindowSvg","PermissionName","PartialSubjectWidgetItem","width","React.useState","RandomHelper","ImageFallback","ImageFallbackType","TOPIC_TYPE_PHRASES","TopicAnalyticsType","LOCAL_STORAGE_KEY","getInitialToggleState","defaultState","localStoragePreference","preferenceInt","setTogglePreference","type","getEnumValues","t","TopTopicsEmptyState","phrase","TopicTypeToggle","Dropdown","React","TopTopicsCardView","setType","topTopics","TopicRequests","onSelectType","SubjectWidgetItem","VIDEOS","v","PartialTopVideos","TopVideoItem","filterQueryParams","useGetAppLinkFilterParams","AppLink","getVideoAppLink","VideoThumbnail","ImageSize","ThumbnailTextPosition","TopVideosEmptyState","useVideosViewsAppLink","AppChannels","Actions","TopVideosCardView","videoViewsAppLink","videos","VideoViewRequests","_b"],"mappings":"4sBAqBMA,GAAY,uCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAE5D,SAASG,IAAkC,CACzC,OACEC,EAAAA,KAAC,KAAA,CAAG,UAAU,yBACZ,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,YAAY,6BAAA,CAA+B,EACvE,EACAD,EAAAA,IAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,YAAY,6BAAA,CAA+B,EACvE,EACAD,EAAAA,IAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,YAAY,6BAAA,CAA+B,EACvE,EACAD,EAAAA,IAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,YAAY,6BAAA,CAA+B,CAAA,CACvE,CAAA,EACF,CAEJ,CAMA,SAASC,GAAiBC,EAA2C,CACnE,OACEH,MAAC,OAAI,UAAU,qEACZ,WAAUG,EAAM,QAAU,kBAAoB,mBAAmB,CAAA,CACpE,CAEJ,CAEA,MAAMC,GAAwC,CAC3C,EAAI,KACJ,EAAI,KACJ,EAAI,IACP,EAEA,SAASC,GAAiBF,EAAyC,CACjE,IAAIG,EAAY,0CAEhB,OAAIH,EAAM,YACRG,GAAa,IAAIH,EAAM,SAAS,IAE3BG,CACT,CAOO,SAASC,GAAoBJ,EAA8C,OAChF,MAAMK,EAAgBC,EAAA,EAEhB,CAAE,eAAAC,CAAA,EAAmBC,EAAA,EAErBC,EAAWC,EAAkC,CAAC,CAACL,GAAiBM,EAAe,YAAYN,CAAa,CAAC,EAEzGO,EAAeC,EAAkBC,EAAoB,mBAAmB,EAE9E,OAAAC,EAAqBN,CAAQ,EAG3Bb,EAAAA,KAAC,MAAA,CAAI,UAAWM,GAAiBF,CAAK,EACpC,SAAA,CAAAH,MAAC,KAAA,CAAG,UAAU,UAAW,SAAAJ,EAAU,aAAa,EAAE,EACjD,CAAC,GAACuB,EAAAP,EAAS,OAAT,MAAAO,EAAe,SAChBnB,EAAAA,IAAC,MAAA,CAAI,UAAU,cACb,SAAAA,EAAAA,IAACoB,EAAAA,WAAA,CAAW,OAAO,OACjB,SAAApB,EAAAA,IAAC,MAAG,UAAU,yBACX,WAAS,KAAK,IAAI,CAACqB,EAAGC,IAAQ,CAC7B,MAAMC,EAAQnB,GAASkB,CAAG,EAE1B,OACEtB,EAAAA,IAAC,KAAA,CAEC,UAAW,QAAQC,EAAO,UAAU,GAEpC,SAAAF,EAAAA,KAAC,IAAA,CACC,KAAMgB,EAAaM,EAAE,KAAK,EAC1B,OAAO,SACP,UAAU,sEAEV,SAAA,CAAAtB,OAAC,OAAA,CACE,SAAA,CAAAwB,EACGvB,EAAAA,IAACwB,EAAA,CAAU,MAAAD,CAAA,CAAc,oBACvB,SAAA,IAAM,QAEX,OAAA,CAAK,UAAWtB,EAAO,MACrB,WAAE,KAAA,CACL,CAAA,EACF,EACAD,MAACyB,GAAa,IAAKC,EAAc,UAAW,iBAAiBzB,EAAO,aAAa,EAAA,CAAI,CAAA,CAAA,CAAA,CACvF,EAlBKqB,CAAA,CAqBX,CAAC,CAAA,CACH,CAAA,CACF,EACF,EAED,CAACV,EAAS,MAAQZ,MAACF,GAAA,CAAA,CAAmB,EACtC,CAAC,CAACc,EAAS,MAAQ,CAACA,EAAS,KAAK,QACjCZ,MAACE,GAAA,CAAiB,QAASQ,EAAeiB,EAAe,qBAAqB,CAAA,CAAG,CAAA,EAErF,CAEJ,CC1HO,MAAMC,EAA2B,IAAM,CAC5C,KAAM,CAACC,CAAK,EAAIC,WAAeC,EAAa,aAAa,CAAC,EAAI,EAAI,KAAK,EAEvE,cACG,MAAA,CAAI,UAAW,wCAAwC9B,EAAO,UAAU,GACvE,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,UAAA,CAAY,QAClC,MAAA,CAAI,UAAU,OAAO,MAAO,CAAE,MAAA4B,GAAS,EACxC7B,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAO,YACrB,eAAC+B,EAAA,CAAc,KAAMC,EAAkB,OAAA,CAAS,CAAA,CAClD,CAAA,EACF,CAEJ,ECHMtC,GAAY,iCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAEtDuC,EAAqB,CACzB,CAACC,EAAmB,SAAS,EAAG,CAC9B,OAAQ,WACR,QAAS,kBACT,WAAY,CACV,MAAO,qBACP,QAAS,sBAAA,CACX,EAEF,CAACA,EAAmB,UAAU,EAAG,CAC/B,OAAQ,SACR,QAAS,gBACT,WAAY,CACV,MAAO,mBACP,QAAS,oBAAA,CACX,CAEJ,EAEMC,EAAoB,uBAE1B,SAASC,GAAsB3B,EAAwD,CACrF,MAAM4B,EAAe5B,EAAeiB,EAAe,qBAAqB,EACpEQ,EAAmB,UACnBA,EAAmB,WAEjBI,EAAyB,aAAa,QAAQH,CAAiB,EAErE,GAAI,CAACG,EACH,OAAOD,EAET,MAAME,EAAgB,SAASD,CAAsB,EAIrD,MAFgB,CAAC,MAAMC,CAAa,GAAK,CAAC,CAACL,EAAmBK,CAAa,EAKpEA,EAFEF,CAGX,CAEA,SAASG,GAAoBC,EAAgC,CAC3D,aAAa,QAAQN,EAAmBM,EAAK,SAAA,CAAU,CACzD,CAEA,SAASC,IAAsC,CAC7C,OAAO,OAAO,OAAOR,CAAkB,EAAE,OAAOS,GAAK,OAAOA,GAAM,QAAQ,CAC5E,CAOA,SAASC,GAAoB1C,EAA8C,CACzE,MAAM2C,EAASZ,EAAmB/B,EAAM,IAAI,EAAE,WAE9C,OACEH,EAAAA,IAAC,MAAA,CAAI,UAAU,qEACZ,SAAAJ,EAAUO,EAAM,QAAU2C,EAAO,MAAQA,EAAO,OAAO,CAAA,CAC1D,CAEJ,CAOA,SAASC,GAAgB5C,EAA0C,CACjE,OACEJ,EAAAA,KAACiD,EAAA,CAAS,MAAM,MACd,SAAA,CAAAhD,EAAAA,IAACgD,EAAS,OAAT,CACC,GAAG,sBACH,QAAQ,eACR,UAAU,WAET,SAAApD,EAAUsC,EAAmB/B,EAAM,IAAI,EAAE,MAAM,CAAA,CAAA,EAElDH,MAACgD,EAAS,KAAT,CACE,cAAgB,IAAI,CAACN,EAAMpB,IACtBnB,EAAM,OAASuC,EACV1C,EAAAA,IAACiD,EAAM,SAAN,CAAA,EAAoB3B,CAAK,QAGhC0B,EAAS,KAAT,CAAwB,QAAS,IAAM7C,EAAM,aAAauC,CAAI,EAC5D,WAAUR,EAAmBQ,CAAI,EAAE,MAAM,GADxBpB,CAEpB,CAEH,CAAA,CACH,CAAA,EACF,CAEJ,CAEA,SAASjB,GAAiBF,EAAuC,CAC/D,IAAIG,EAAY,0CAEhB,OAAIH,EAAM,YACRG,GAAa,IAAIH,EAAM,SAAS,IAE3BG,CACT,CAOO,SAAS4C,GAAkB/C,EAA4C,OAC5E,MAAMK,EAAgBC,EAAA,EAChB,CAAE,eAAAC,CAAA,EAAmBC,EAAA,EAErB,CAAE+B,EAAMS,CAAQ,EAAIF,EAAM,SAASZ,GAAsB3B,CAAc,CAAC,EAExE0C,EAAYvC,EAAuC,CAAC,CAACL,GACzD6C,EAAc,UAAU7C,EAAekC,CAAI,CAAC,EAE9C,SAASY,EAAaZ,EAAgC,CACpDD,GAAoBC,CAAI,EACxBS,EAAQT,CAAI,CACd,CAEA,OACE3C,EAAAA,KAAC,MAAA,CAAI,UAAWM,GAAiBF,CAAK,EACpC,SAAA,CAAAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,yDACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,SACX,SAAAJ,EAAUsC,EAAmBQ,CAAI,EAAE,OAAO,CAAA,CAC7C,EACA1C,EAAAA,IAAC+C,GAAA,CAAgB,KAAAL,EAAY,aAAAY,CAAA,CAA4B,CAAA,EAC3D,EACC,CAACF,EAAU,MACVrD,EAAAA,KAAC,KAAA,CAAG,UAAU,oBACZ,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,OACZ,SAAAA,MAAC4B,IAAyB,EAC5B,QACC,KAAA,CAAG,UAAU,OACZ,SAAA5B,MAAC4B,IAAyB,EAC5B,QACC,KAAA,CAAG,UAAU,OACZ,SAAA5B,EAAAA,IAAC4B,IAAyB,CAAA,CAC5B,CAAA,EACF,EAED,CAAC,GAACT,EAAAiC,EAAU,OAAV,MAAAjC,EAAgB,eAChB,MAAA,CAAI,UAAU,cACb,SAAAnB,EAAAA,IAACoB,cAAW,OAAO,OACjB,SAAApB,EAAAA,IAAC,KAAA,CAAG,UAAU,yBACX,SAAAoD,EAAU,KAAK,IAAI,CAACR,EAAGtB,IACtBtB,EAAAA,IAAC,KAAA,CAAa,UAAU,OACtB,SAAAA,EAAAA,IAACuD,EAAA,CAAkB,KAAMX,EAAG,CAAA,EADrBtB,CAET,CACD,CAAA,CACH,EACF,EACF,EAED,CAAC,CAAC8B,EAAU,MAAQ,CAACA,EAAU,KAAK,QACnCpD,EAAAA,IAAC6C,GAAA,CACC,KAAAH,EACA,QAAShC,EAAeiB,EAAe,qBAAqB,CAAA,CAAA,CAC9D,EAEJ,CAEJ,2ECrLM6B,GAAU,IAAI,MAAM,CAAC,EAAG,KAAK,IAAI,EAAE,IAAI,CAACC,EAAGnC,IAAQA,CAAG,EAErD,SAASoC,IAAgC,CAC9C,OACE1D,EAAAA,IAAC,KAAA,CAAG,UAAU,gBACX,YAAO,IAAIyD,GACVzD,EAAAA,IAAC,KAAA,CAAW,UAAU,OACpB,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,MACb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,QACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,SAAS,qCAAA,CAAuC,EAC5E,EACAD,EAAAA,IAAC,MAAA,CAAI,UAAU,kCACb,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAW,GAAGC,EAAO,IAAI,6BAAA,CAA+B,CAAA,CAC/D,CAAA,CAAA,CACF,CAAA,EAROwD,CAST,CACD,EACH,CAEJ,CCRO,SAASE,GAAaxD,EAAuC,CAClE,MAAMyD,EAAoBC,EAAA,EAE1B,OACE7D,EAAAA,IAAC,KAAA,CAAG,UAAU,OACZ,eAAC8D,EAAA,CAAQ,QAASC,EAAgB5D,EAAM,MAAOyD,CAAiB,EAC9D,SAAA7D,EAAAA,KAAC,MAAA,CAAI,UAAU,MACb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,QACb,SAAAA,EAAAA,IAACgE,EAAA,CACC,MAAO7D,EAAM,MACb,aAAc,CAAE,KAAM8D,EAAU,KAAA,EAChC,aAAcC,EAAsB,YACpC,KAAK,WACL,SAAQ,GACR,iBAAgB,GAChB,KAAK,IAAA,CAAA,EAET,EACAlE,EAAAA,IAAC,MAAA,CAAI,UAAU,kCACb,SAAAA,EAAAA,IAAC,OAAA,CAAK,UAAU,kBACb,SAAAG,EAAM,MAAM,IAAA,CACf,CAAA,CACF,CAAA,CAAA,CACF,EACF,EACF,CAEJ,CCtCA,MAAMR,GAAY,uCACZC,GAAYC,EAAgB,iBAAiBF,EAAS,EAMrD,SAASwE,GAAoBhE,EAA8C,CAChF,OACEH,MAAC,OAAI,UAAU,qEACZ,YAAUG,EAAM,QAAU,eAAiB,gBAAgB,CAAA,CAC9D,CAEJ,CCKA,MAAMR,GAAY,qCACZC,EAAYC,EAAgB,iBAAiBF,EAAS,EAE5D,SAASyE,IAAsC,CAC7C,MAAMR,EAAoBC,EAAA,EAE1B,MAAO,CACL,YAAaQ,EAAY,OACzB,OAAQC,EAAQ,OAAO,MACvB,OAAQV,CAAA,CAEZ,CAGO,SAASW,IAAiC,SAC/C,MAAM/D,EAAgBC,EAAA,EAChB+D,EAAoBJ,GAAA,EAEpB,CAAE,eAAA1D,CAAA,EAAmBC,EAAA,EAErB8D,EAAS5D,EAAwC,CAAC,CAACL,GACvDkE,EAAkB,UAAUlE,CAAa,CAAC,EAE5C,OAAAU,EAAqBuD,CAAM,EAGzB1E,EAAAA,KAAC,MAAA,CAAI,UAAU,gDACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,UAAW,SAAAJ,EAAU,WAAW,EAAE,EAC/C,CAAC,GAAC+E,GAAAxD,EAAAsD,EAAO,OAAP,YAAAtD,EAAa,OAAb,MAAAwD,EAAmB,SACpB3E,EAAAA,IAAC,MAAA,CAAI,UAAU,cACb,SAAAD,OAACqB,EAAAA,WAAA,CAAW,OAAO,OACjB,SAAA,CAAApB,MAAC,MAAG,UAAU,yBACX,SAAAyE,EAAO,KAAK,KAAK,IAAI,CAAChB,EAAGnC,UAASqC,GAAA,CAAuB,MAAOF,EAAE,MAAA,EAAdnC,CAAsB,CAAE,EAC/E,EACCZ,EAAeiB,EAAe,qBAAqB,GAClD3B,EAAAA,IAAC,OAAI,UAAU,6DACb,SAAAA,EAAAA,IAAC8D,EAAA,CAAQ,QAASU,EAAmB,UAAU,oCAC5C,SAAA5E,EAAU,SAAS,EACtB,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,EAED,CAAC6E,EAAO,MAAQzE,MAAC0D,GAAA,CAAA,CAAiB,EAClC,CAAC,CAACe,EAAO,MAAQ,CAACA,EAAO,KAAK,KAAK,cACjCN,GAAA,CAAoB,QAASzD,EAAeiB,EAAe,qBAAqB,CAAA,CAAG,CAAA,EAExF,CAEJ"}
@@ -0,0 +1,4 @@
1
+ import{j as e,u,bO as h,e as f,L as v,v as w,O as p,bF as $,c as H,V,d as L,i as T,A as q,g as D,b as F,ad as O,a as G,P as U,T as B}from"./app-CQEXKRTo.js";import{u as S}from"./CZHffw7D.chunk.js";import{u as Q}from"./DSJfyygS.chunk.js";import{u as N}from"./HFbpCC17.chunk.js";import{u as b}from"./BArX7fyb.chunk.js";import{u as K,a as W}from"./CjQHXyx0.chunk.js";import{u as z}from"./CvkQEqoz.chunk.js";import{P as Y,E as J}from"./zVke3nt7.chunk.js";import{V as X}from"./Crxtdvtr.chunk.js";import{V as Z}from"./BM1URibR.chunk.js";import{u as ee,I as te}from"./pmJce9de.chunk.js";import{M as ae}from"./ZPrCrk06.chunk.js";import{O as se}from"./SdlfGvLH.chunk.js";import{u as ne}from"./BP4vyxCh.chunk.js";import{g as re,a as ie,b as ce,c as de}from"./vDUMsOFT.chunk.js";import{S as g}from"./5O9SdVRZ.chunk.js";import{I as oe}from"./DIqHgqYU.chunk.js";import{P as k,a as C}from"./Cq8XHkfC.chunk.js";import{a as le}from"./BI4Pc5Qp.chunk.js";import{E as me}from"./BoLC4I50.chunk.js";import"./sFV5nxD4.chunk.js";import"./H-GxGp0N.chunk.js";import"./OUlVmzyS.chunk.js";import"./sBa2VMAv.chunk.js";import"./j7UObMj5.chunk.js";import"./BZV5U3ST.chunk.js";import"./Bfbk7XQF.chunk.js";import"./mLe4zPMQ.chunk.js";import"./BUJR0SBs.chunk.js";import"./DGmD-zcu.chunk.js";import"./CFjwQ5Sg.chunk.js";import"./Co9J1lM_.chunk.js";import"./DLNH1FET.chunk.js";import"./DDQPxnFm.chunk.js";import"./B-0CRp8U.chunk.js";import"./rO0zPagv.chunk.js";import"./BGYUqEPH.chunk.js";import"./DdCE2h3h.chunk.js";const ue="_container_eav1c_1",he={container:ue};function ge(t){return e.jsx("div",{className:`rounded bg-white p-3 ${he.container}`,children:t.children})}function xe(t){return t>=g.HIGH?"text-success":t>=g.MODERATE?"text-warning":"text-danger"}function ve(t){return`${Math.round(t*100)}%`}function pe(t){return t.markingRequired?{subheading:"markingRequiredSubheading",description:"markingRequiredDescription"}:typeof t.score!="number"?{subheading:"noScoresSubheading",description:"noScoresDescription"}:t.score>=g.HIGH?{subheading:"highScoreSubheading",description:"highScoreDescription"}:t.score>=g.MODERATE?{subheading:"moderateScoreSubheading",description:"moderateScoreDescription"}:{subheading:"lowScoreSubheading",description:"lowScoreDescription"}}function je(t,n){const s=[];let r=!1;return n.students.forEach(c=>{const a=re(t,c);s.push(a.percentCorrect),a.awaitingMarking&&(r=!0)}),{score:s.length?s.reduce((c,a)=>c+a,0)/s.length:null,markingRequired:r}}const Ie="_percentage_aor5o_1",fe={percentage:Ie},Se="interactives.averageScoreCard",j=v.encloseNamespace(Se);function Ne(t){var x;const n=u(h.interactiveMetadata(t.interactiveMetadataId)),s=u((x=n.data)!=null&&x.interactiveId?h.interactive(n.data.interactiveId):null),r=f(),c=S(t.interactiveMetadataId,r);b(n),N([n,c]);const a=!!s.data&&!!c.data,i=a&&je(s.data,c.data),{subheading:d,description:o}=pe(i);return a?e.jsxs("div",{className:"rounded bg-white p-3",children:[e.jsx("h3",{className:"h6 mb-3",children:j("heading")}),e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${fe.percentage} text-center py-2`,children:!i.markingRequired&&typeof i.score=="number"?e.jsx("span",{className:xe(i.score),children:ve(i.score)}):e.jsx("span",{className:"text-info",children:"--%"})}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"m-0",children:e.jsx("strong",{children:j(d)})}),e.jsx("p",{className:"m-0",children:j(o)})]})]})]}):e.jsx(ge,{children:e.jsx("h3",{className:"h6",children:j("heading")})})}const be="interactives.hardestQuestionCard",R=v.encloseNamespace(be);function ye(t,n){const r=ie(t).map(a=>({...a,resultsSummary:ce(a,n)})).filter(a=>!!a.resultsSummary.answered&&!a.resultsSummary.awaitingMarking),c=w.sortBy(r,a=>a.resultsSummary.percentCorrect);return w.first(c)}function we(t){var d,o;const n=u(h.interactiveMetadata(t.interactiveMetadataId)),s=u((d=n.data)!=null&&d.interactiveId?h.interactive(n.data.interactiveId):null),r=f(),c=S(t.interactiveMetadataId,r);b(n),N([n,c]);const a=!!s.data&&!!c.data,i=a&&ye(s.data,c.data);return e.jsxs("div",{className:"rounded bg-white p-3",children:[e.jsx("h3",{className:"h6 mb-2",children:R("heading")}),a&&e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(k,{percentage:(o=i==null?void 0:i.resultsSummary)==null?void 0:o.percentCorrect,layout:C.LabelInside}),i?e.jsx("div",{className:"d-flex ms-2",children:e.jsx(oe,{interaction:i,iconClassName:"flex-shrink-0"})}):e.jsx("span",{className:"ms-2",children:R("empty")})]}),!a&&e.jsx(Y,{layout:C.LabelInside})]})}const Ce="_container_1n7u9_1",Me={container:Ce};function y(){return e.jsx("div",{className:`bg-white rounded mt-3 ${Me.container}`})}const _e="_emptyState_f6c1y_1",Re={emptyState:_e},Ee="interactives.studentResultInsightsEmptyState",E=v.encloseNamespace(Ee);function Pe(){return e.jsxs(p,{className:`${Re.emptyState} justify-content-center`,children:[e.jsx(p.Image,{src:$.EmptyStates.Interactives.StudentInsights,className:"w-75 h-auto"}),e.jsx(p.Heading,{children:E("heading")}),e.jsx(p.Info,{className:"w-100",children:E("description")})]})}const ke="_numberCircle_11ecw_1",Ae="_studentsContainer_11ecw_5",$e="_studentRow_11ecw_8",He="_indicatorRing_11ecw_11",Ve="_ringSuccess_11ecw_29",Le="_ringDanger_11ecw_32",Te="_ringInfo_11ecw_35",qe="_percentageIndicator_11ecw_38",m={numberCircle:ke,studentsContainer:Ae,studentRow:$e,indicatorRing:He,ringSuccess:Ve,ringDanger:Le,ringInfo:Te,percentageIndicator:qe},De="0.3rem";function Fe(t){const n=w.first(t);return n.summary.awaitingMarking?"bg-blue":n.summary.percentCorrect>=g.HIGH?"bg-success":"bg-danger"}function Oe(t){return t.summary.awaitingMarking?m.ringInfo:t.summary.percentCorrect>=g.HIGH?m.ringSuccess:m.ringDanger}I.defaultProps={displayLimit:3};function I(t){const[n]=H(V.ANONYMISE_USERS);return e.jsxs("div",{className:"bg-white rounded p-3 mt-3",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-2",children:[e.jsx("h4",{className:"h6 m-0",children:e.jsx(me,{emoji:t.headingEmoji,children:t.heading})}),!!t.students.length&&e.jsx("div",{className:`
2
+ text-white text-center rounded-circle
3
+ ${m.numberCircle} ${Fe(t.students)}`,children:t.students.length})]}),e.jsx("div",{className:m.studentsContainer,children:t.students.length?e.jsx("ul",{className:"list-unstyled m-0",children:t.students.slice(0,t.displayLimit).map((s,r)=>e.jsxs("li",{className:`d-flex justify-content-between align-items-center ${m.studentRow}`,children:[e.jsxs("span",{className:"d-flex align-items-center text-truncate",children:[e.jsx("div",{className:m.indicatorRing,children:e.jsx("svg",{children:e.jsx("circle",{r:De,className:Oe(s)})})}),e.jsx("span",{className:"text-truncate",children:le(s.user,n)})]}),!s.summary.awaitingMarking&&e.jsx("span",{className:m.percentageIndicator,children:e.jsx(k,{percentage:s.summary.percentCorrect,layout:C.LabelBefore})})]},r))}):e.jsx("p",{className:"mt-1 mb-0",children:t.emptyStateText})})]})}const Ge="interactives.studentResultInsightsCard",l=v.encloseNamespace(Ge);function Ue(t){var o;const n=L(),s=u(h.interactiveMetadata(t.interactiveMetadataId)),r=u((o=s.data)!=null&&o.interactiveId?h.interactive(s.data.interactiveId):null),c=f(),a=S(t.interactiveMetadataId,c);b(s),N([s,a]);const i=!!r.data&&!!a.data,d=i&&de(r.data,a.data);return e.jsxs("div",{className:"d-flex flex-column",children:[e.jsxs("div",{className:"bg-white rounded p-3",children:[e.jsx("h3",{className:"h6 m-0",children:l("heading")}),i&&!a.data.students.length&&e.jsx(Pe,{})]}),i&&!!a.data.students.length&&e.jsxs(e.Fragment,{children:[e.jsx(I,{heading:l("markingRequired"),headingEmoji:"📝",students:d.markingRequired,emptyStateText:l("markingRequiredEmpty")}),e.jsx(I,{heading:l("needHelp"),headingEmoji:"✋",students:d.lowScore,emptyStateText:l("needHelpEmpty")}),e.jsx(I,{heading:l("topAchievers"),headingEmoji:"🏅",students:d.highScore,emptyStateText:l("topAchieversEmpty")}),e.jsx(T,{className:"btn btn-outline-dark mt-3",appLink:{application:D.INTERACTIVES,action:q.Interactives.RESULTS,args:[t.interactiveMetadataId],params:n},children:l("seeAll")})]}),!i&&e.jsxs(e.Fragment,{children:[e.jsx(y,{}),e.jsx(y,{}),e.jsx(y,{}),e.jsx("button",{className:"btn btn-outline-dark mt-3 cursor-default",children:" "})]})]})}const Be="_pieChart_1xbkb_1",Qe="_barChart_1xbkb_4",P={pieChart:Be,barChart:Qe},A="reportsInteractives.interactiveOverview",Ke=v.encloseNamespace(A);function kt(t){var o,x,M,_;const{hasPermissions:n}=F(),{hasShareFlowV2:s}=O(null),r=u(h.interactiveMetadata(t.interactiveMetadataId)),c=u((o=r.data)!=null&&o.interactiveId?h.interactive(r.data.interactiveId):null),a=f(),i=S(t.interactiveMetadataId,a);G({title:Ke("pageTitle",{interactive:(x=r.data)==null?void 0:x.name})}),z((M=r.data)==null?void 0:M.name),K(W(r.data)),ne(t.interactiveMetadataId),ee(t.interactiveMetadataId),b(r),N([c,i]),Q(r);const d=s&&n(U.ViewMyShares);return e.jsxs("div",{children:[e.jsx(te,{interactiveMetadataId:t.interactiveMetadataId,hasInsights:d}),!d&&!!c.data&&!!i.data&&e.jsx(ae,{interactive:c.data,results:i.data,interactiveMetadataId:t.interactiveMetadataId}),e.jsxs("div",{className:"row",children:[e.jsxs("div",{className:"col-4",children:[e.jsx(Z,{objectId:t.interactiveMetadataId,useSharerId:!0,className:P.pieChart}),!d&&e.jsx("div",{className:"mt-3",children:e.jsx(Ne,{interactiveMetadataId:t.interactiveMetadataId})})]}),e.jsxs("div",{className:"col-5",children:[e.jsx(X,{objectId:t.interactiveMetadataId,useSharerId:!0,className:P.barChart}),((_=i.data)==null?void 0:_.hasWatchedInLite)===!1?e.jsxs("div",{className:"mt-3 bg-white p-3 pb-3",children:[e.jsx("h3",{className:"h6 mb-2",children:e.jsx(B,{namespace:A,phrase:"averageAmountPlaceholder"})}),e.jsx(se,{})]}):e.jsx("div",{className:"mt-3",children:e.jsx(J,{objectId:t.interactiveMetadataId,layout:"horizontal",useSharerId:!0})}),!d&&e.jsx("div",{className:"mt-3",children:e.jsx(we,{interactiveMetadataId:t.interactiveMetadataId})})]}),!d&&e.jsx("div",{className:"col-3",children:e.jsx(Ue,{interactiveMetadataId:t.interactiveMetadataId})})]})]})}export{kt as InteractiveOverviewView};
4
+ //# sourceMappingURL=DlVmB7me.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DlVmB7me.chunk.js","sources":["../../src/apps/interactives/views/overview-cards/average-score/components/partial-average-score-card/PartialAverageScoreCard.tsx","../../src/apps/interactives/views/overview-cards/average-score/AverageScoreCardUtils.ts","../../src/apps/interactives/views/overview-cards/average-score/AverageScoreCardView.tsx","../../src/apps/interactives/views/overview-cards/hardest-question-card/HardestQuestionCardView.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/partial-student-insights-section/PartialStudentInsightsSection.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/student-result-insights-empty-state/StudentResultInsightsEmptyState.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/components/student-result-insights-section/StudentResultInsightsSection.tsx","../../src/apps/interactives/views/overview-cards/student-result-insights-card/StudentResultInsightsCardView.tsx","../../src/apps/interactives/views/interactive-overview/InteractiveOverviewView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport styles from './partial-average-score-card.module.scss';\n\nexport function PartialAverageScoreCard(props: React.PropsWithChildren<HashObject>): JSX.Element {\n return (\n <div className={`rounded bg-white p-3 ${styles.container}`}>\n {props.children}\n </div>\n );\n}","import { getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { ScoreThresholdDefaults } from 'libs/shared/constants/ScoreThresholds';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\n\ninterface AverageScoreSummary {\n markingRequired: boolean;\n score?: number;\n}\n\nexport function getTextColourClass(score: number): string {\n if (score >= ScoreThresholdDefaults.HIGH)\n return 'text-success';\n\n if (score >= ScoreThresholdDefaults.MODERATE)\n return 'text-warning';\n\n return 'text-danger';\n}\n\nexport function formatPercentage(score: number): string {\n return `${Math.round(score * 100)}%`;\n}\n\nexport function getPhraseKeys(averageScoreSummary: AverageScoreSummary): { subheading: string; description: string } {\n if (averageScoreSummary.markingRequired)\n return { subheading: 'markingRequiredSubheading', description: 'markingRequiredDescription' };\n\n if (typeof averageScoreSummary.score !== 'number')\n return { subheading: 'noScoresSubheading', description: 'noScoresDescription' };\n\n if (averageScoreSummary.score >= ScoreThresholdDefaults.HIGH)\n return { subheading: 'highScoreSubheading', description: 'highScoreDescription' };\n\n if (averageScoreSummary.score >= ScoreThresholdDefaults.MODERATE)\n return { subheading: 'moderateScoreSubheading', description: 'moderateScoreDescription' };\n\n return { subheading: 'lowScoreSubheading', description: 'lowScoreDescription' };\n}\n\nexport function getAverageScoreSummary(interactive: Interactive, results: InteractiveResultSet): AverageScoreSummary {\n const scores: number[] = [];\n let markingRequired = false;\n\n results.students.forEach(s => {\n const summary = getStudentResultsSummary(interactive, s);\n scores.push(summary.percentCorrect);\n\n if (summary.awaitingMarking)\n markingRequired = true;\n });\n\n return {\n score: scores.length ? scores.reduce((a, b) => a + b, 0) / scores.length : null,\n markingRequired\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nimport { PartialAverageScoreCard } from './components/partial-average-score-card/PartialAverageScoreCard';\nimport { formatPercentage, getAverageScoreSummary, getPhraseKeys, getTextColourClass } from './AverageScoreCardUtils';\n\nimport styles from './average-score-card.module.scss';\n\nconst namespace = 'interactives.averageScoreCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AverageScoreCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function AverageScoreCardView(props: AverageScoreCardViewProps): JSX.Element {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const averageScore = dataLoaded && getAverageScoreSummary(interactive.data, results.data);\n\n const { subheading, description } = getPhraseKeys(averageScore);\n\n if (!dataLoaded) {\n return (\n <PartialAverageScoreCard>\n <h3 className='h6'>{getPhrase('heading')}</h3>\n </PartialAverageScoreCard>\n );\n }\n\n return (\n <div className='rounded bg-white p-3'>\n <h3 className='h6 mb-3'>{getPhrase('heading')}</h3>\n <>\n <div className={`${styles.percentage} text-center py-2`}>\n {(!averageScore.markingRequired && typeof averageScore.score === 'number')\n ? <span className={getTextColourClass(averageScore.score)}>{formatPercentage(averageScore.score)}</span>\n : <span className='text-info'>--%</span>\n }\n </div>\n <div className='text-center'>\n <p className='m-0'><strong>{getPhrase(subheading)}</strong></p>\n <p className='m-0'>{getPhrase(description)}</p>\n </div>\n </>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractionWithResultsSummary } from 'libs/shared/apps/analytics/interfaces/InteractionWithResultsSummary';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PartialPercentageIndicator } from 'libs/shared/components/percentage-indicator/PartialPercentageIndicator';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nconst namespace = 'interactives.hardestQuestionCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getHardestQuestion(interactive: Interactive, results: InteractiveResultSet): InteractionWithResultsSummary {\n const interactions: InteractionWithResultsSummary[] = getInteractions(interactive).map(i => ({\n ...i,\n resultsSummary: getInteractionResultsSummary(i, results)\n }));\n\n const answeredInteractions = interactions.filter(i =>\n !!i.resultsSummary.answered && !i.resultsSummary.awaitingMarking);\n\n const sortedInteractions = ArrayHelper.sortBy(\n answeredInteractions,\n i => i.resultsSummary.percentCorrect\n );\n\n return ArrayHelper.first(sortedInteractions);\n}\n\ninterface HardestQuestionCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function HardestQuestionCardView(props: HardestQuestionCardViewProps): JSX.Element {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const hardestQuestion = dataLoaded && getHardestQuestion(interactive.data, results.data);\n\n return (\n <div className='rounded bg-white p-3'>\n <h3 className='h6 mb-2'>{getPhrase('heading')}</h3>\n {dataLoaded &&\n <div className='d-flex align-items-center'>\n <PercentageIndicator\n percentage={hardestQuestion?.resultsSummary?.percentCorrect}\n layout={PercentageIndicatorLayout.LabelInside}\n />\n {hardestQuestion\n ? <div className='d-flex ms-2'>\n <InteractionLabel interaction={hardestQuestion} iconClassName='flex-shrink-0' />\n </div>\n : <span className='ms-2'>{getPhrase('empty')}</span>\n }\n </div>\n }\n {!dataLoaded && <PartialPercentageIndicator layout={PercentageIndicatorLayout.LabelInside} />}\n </div>\n );\n}","import React from 'react';\n\nimport styles from './partial-student-insights-section.module.scss';\n\nexport function PartialStudentInsightsSection(): JSX.Element {\n return (\n <div className={`bg-white rounded mt-3 ${styles.container}`} />\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './student-results-insights-empty-state.module.scss';\n\nconst namespace = 'interactives.studentResultInsightsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function StudentResultInsightsEmptyState(): JSX.Element {\n return (\n <EmptyState className={`${styles.emptyState} justify-content-center`}>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Interactives.StudentInsights}\n className='w-75 h-auto'\n />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { ScoreThresholdDefaults } from 'libs/shared/constants/ScoreThresholds';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nimport styles from './student-result-insights-section.module.scss';\n\n// If this is changed it must be changed in student-result-insights-section.scss too\nconst INDICATOR_RING_RADIUS = '0.3rem';\n\nfunction getIndicatorBackgroundColour(students: StudentResultsWithSummary[]): string {\n const firstStudent = ArrayHelper.first(students);\n\n if (firstStudent.summary.awaitingMarking)\n return 'bg-blue';\n\n if (firstStudent.summary.percentCorrect >= ScoreThresholdDefaults.HIGH)\n return 'bg-success';\n\n return 'bg-danger';\n}\n\nfunction getIndicatorRingColourClass(student: StudentResultsWithSummary): string {\n if (student.summary.awaitingMarking)\n return styles.ringInfo;\n\n if (student.summary.percentCorrect >= ScoreThresholdDefaults.HIGH)\n return styles.ringSuccess;\n\n return styles.ringDanger;\n}\n\ninterface StudentResultInsightsSectionProps {\n heading: string;\n headingEmoji: string;\n students: StudentResultsWithSummary[];\n emptyStateText: string;\n displayLimit: number;\n}\n\nStudentResultInsightsSection.defaultProps = {\n displayLimit: 3\n};\n\nexport function StudentResultInsightsSection(props: StudentResultInsightsSectionProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n return (\n <div className='bg-white rounded p-3 mt-3'>\n <div className='d-flex justify-content-between align-items-center mb-2'>\n <h4 className='h6 m-0'>\n <EmojiText emoji={props.headingEmoji}>{props.heading}</EmojiText>\n </h4>\n {!!props.students.length &&\n <div\n className={`\n text-white text-center rounded-circle\n ${styles.numberCircle} ${getIndicatorBackgroundColour(props.students)}`\n }\n >\n {props.students.length}\n </div>\n }\n </div>\n <div className={styles.studentsContainer}>\n {props.students.length\n ? <ul className='list-unstyled m-0'>\n {props.students.slice(0, props.displayLimit).map((s, idx) => (\n <li key={idx} className={`d-flex justify-content-between align-items-center ${styles.studentRow}`}>\n <span className='d-flex align-items-center text-truncate'>\n <div className={styles.indicatorRing}>\n <svg>\n <circle r={INDICATOR_RING_RADIUS} className={getIndicatorRingColourClass(s)} />\n </svg>\n </div>\n <span className='text-truncate'>{anonymiseUserName(s.user, anonymiseUsers)}</span>\n </span>\n {!s.summary.awaitingMarking &&\n <span className={styles.percentageIndicator}>\n <PercentageIndicator\n percentage={s.summary.percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n />\n </span>\n }\n </li>\n ))}\n </ul>\n : <p className='mt-1 mb-0'>{props.emptyStateText}</p>\n }\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { groupStudents } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\n\nimport { PartialStudentInsightsSection } from './components/partial-student-insights-section/PartialStudentInsightsSection';\nimport { StudentResultInsightsEmptyState } from './components/student-result-insights-empty-state/StudentResultInsightsEmptyState';\nimport { StudentResultInsightsSection } from './components/student-result-insights-section/StudentResultInsightsSection';\n\nconst namespace = 'interactives.studentResultInsightsCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultInsightsCardViewProps {\n interactiveMetadataId: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StudentResultInsightsCardView(props: StudentResultInsightsCardViewProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactiveMetadata, results ]);\n\n const dataLoaded = !!interactive.data && !!results.data;\n\n const studentGroups = dataLoaded && groupStudents(interactive.data, results.data);\n\n return (\n <div className='d-flex flex-column'>\n <div className='bg-white rounded p-3'>\n <h3 className='h6 m-0'>{getPhrase('heading')}</h3>\n {dataLoaded && !results.data.students.length &&\n <StudentResultInsightsEmptyState />\n }\n </div>\n {dataLoaded && !!results.data.students.length &&\n <>\n <StudentResultInsightsSection\n heading={getPhrase('markingRequired')}\n headingEmoji='📝'\n students={studentGroups.markingRequired}\n emptyStateText={getPhrase('markingRequiredEmpty')}\n />\n <StudentResultInsightsSection\n heading={getPhrase('needHelp')}\n headingEmoji='✋'\n students={studentGroups.lowScore}\n emptyStateText={getPhrase('needHelpEmpty')}\n />\n <StudentResultInsightsSection\n heading={getPhrase('topAchievers')}\n headingEmoji='🏅'\n students={studentGroups.highScore}\n emptyStateText={getPhrase('topAchieversEmpty')}\n />\n <AppLink\n className='btn btn-outline-dark mt-3'\n appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.RESULTS,\n args: [props.interactiveMetadataId],\n params: filterQueryParams\n }}\n >\n {getPhrase('seeAll')}\n </AppLink>\n </>\n }\n {!dataLoaded &&\n <>\n <PartialStudentInsightsSection />\n <PartialStudentInsightsSection />\n <PartialStudentInsightsSection />\n <button className='btn btn-outline-dark mt-3 cursor-default'>\n &nbsp;\n </button>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { useGetObjectHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { EngagementOverviewCardView } from 'shared/views/overview-cards/engagement-overview-card/EngagementOverviewCardView';\nimport { ViewCountBarChartCardView } from 'shared/views/overview-cards/view-count-bar-chart-card/ViewCountBarChartCardView';\nimport { ViewCountPieChartCardView } from 'shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView';\n\nimport { InteractiveNav } from 'apps/interactives/components/interactive-nav/InteractiveNav';\nimport { MarkingRequiredAlert } from 'apps/interactives/components/marking-required-alert/MarkingRequiredAlert';\nimport { OnlineDataWarning } from 'apps/interactives/components/online-data-warning/OnlineDataWarning';\nimport { useNoResultsPopup } from 'apps/interactives/hooks/UseNoResultsPopup';\nimport { useSetSuggestedInteractiveResultsAudience } from 'apps/interactives/hooks/UseSetSuggestedInteractiveResultsAudience';\nimport { AverageScoreCardView } from 'apps/interactives/views/overview-cards/average-score/AverageScoreCardView';\nimport { HardestQuestionCardView } from 'apps/interactives/views/overview-cards/hardest-question-card/HardestQuestionCardView';\nimport { StudentResultInsightsCardView } from 'apps/interactives/views/overview-cards/student-result-insights-card/StudentResultInsightsCardView';\n\nimport styles from './interactive-overview.module.scss';\n\nconst namespace = 'reportsInteractives.interactiveOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveOverviewViewProps {\n interactiveMetadataId: string;\n}\n\nexport function InteractiveOverviewView(props: InteractiveOverviewViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const requestFilter = useGetRequestFilter();\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useSetPageMetadata({ title: getPhrase('pageTitle', { interactive: interactiveMetadata.data?.name }) });\n useSetHeaderTitle(interactiveMetadata.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(interactiveMetadata.data));\n useSetSuggestedInteractiveResultsAudience(props.interactiveMetadataId);\n useNoResultsPopup(props.interactiveMetadataId);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactive, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewMyShares);\n\n return (\n <div>\n <InteractiveNav\n interactiveMetadataId={props.interactiveMetadataId}\n hasInsights={hasInsightsPermission}\n />\n {!hasInsightsPermission && !!interactive.data && !!results.data &&\n <MarkingRequiredAlert\n interactive={interactive.data}\n results={results.data}\n interactiveMetadataId={props.interactiveMetadataId}\n />\n }\n <div className='row'>\n <div className='col-4'>\n <ViewCountPieChartCardView\n objectId={props.interactiveMetadataId}\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n className={styles.pieChart}\n />\n {!hasInsightsPermission && <div className='mt-3'>\n <AverageScoreCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n <div className='col-5'>\n <ViewCountBarChartCardView\n objectId={props.interactiveMetadataId}\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n className={styles.barChart}\n />\n {results.data?.hasWatchedInLite === false\n ? <div className='mt-3 bg-white p-3 pb-3'>\n <h3 className='h6 mb-2'><Text namespace={namespace} phrase='averageAmountPlaceholder' /></h3>\n <OnlineDataWarning />\n </div>\n : <div className='mt-3'>\n <EngagementOverviewCardView\n objectId={props.interactiveMetadataId}\n layout='horizontal'\n // Currently we don't have a way to support admins viewing all results so we scope views by sharer\n // to align with the results data.\n useSharerId\n />\n </div>\n }\n {!hasInsightsPermission && <div className='mt-3'>\n <HardestQuestionCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n {!hasInsightsPermission && <div className='col-3'>\n <StudentResultInsightsCardView interactiveMetadataId={props.interactiveMetadataId} />\n </div>}\n </div>\n </div>\n );\n}"],"names":["PartialAverageScoreCard","props","jsx","styles","getTextColourClass","score","ScoreThresholdDefaults","formatPercentage","getPhraseKeys","averageScoreSummary","getAverageScoreSummary","interactive","results","scores","markingRequired","s","summary","getStudentResultsSummary","a","b","namespace","getPhrase","LanguageService","AverageScoreCardView","interactiveMetadata","Flight.useBasicFetch","InteractiveRequests","_a","requestFilter","useGetRequestFilter","useFetchInteractiveResults","useHandleVideoError","useHandleObjectError","dataLoaded","averageScore","subheading","description","jsxs","Fragment","getHardestQuestion","answeredInteractions","getInteractions","i","getInteractionResultsSummary","sortedInteractions","ArrayHelper","HardestQuestionCardView","hardestQuestion","PercentageIndicator","_b","PercentageIndicatorLayout","InteractionLabel","PartialPercentageIndicator","PartialStudentInsightsSection","StudentResultInsightsEmptyState","EmptyState","ImageUrls","INDICATOR_RING_RADIUS","getIndicatorBackgroundColour","students","firstStudent","getIndicatorRingColourClass","student","StudentResultInsightsSection","anonymiseUsers","useViewModel","ViewModelKeys","EmojiText","idx","StudentResultInsightsCardView","filterQueryParams","useGetAppLinkFilterParams","studentGroups","groupStudents","AppLink","AppChannels","Actions","InteractiveOverviewView","hasPermissions","usePermissions","hasShareFlowV2","useSettings","useSetPageMetadata","useSetHeaderTitle","_c","useSetHeaderActions","useGetObjectHeaderActions","useSetSuggestedInteractiveResultsAudience","useNoResultsPopup","useCannotConsumeError","hasInsightsPermission","PermissionName","InteractiveNav","MarkingRequiredAlert","ViewCountPieChartCardView","ViewCountBarChartCardView","_d","Text","OnlineDataWarning","EngagementOverviewCardView"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as b,j as o,ah as k,by as L,i as I,bz as c}from"./app-CQEXKRTo.js";import{u as N}from"./CBjj_ih-.chunk.js";function x(e={}){const{prevent:r,rootMargin:a,triggerOnce:t=!0}=e;let[i,m,g]=N({triggerOnce:t,rootMargin:a});return(r===!0||typeof window.IntersectionObserver>"u")&&(m=!0,i=null),{ref:i,inView:m,initialized:!!g}}const v="_image_pp6me_1",A={image:v},T="500px",$="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",j=b.memo(function(e){const{forceLoad:r,extraClasses:a="",errorFallbackImageSrc:t,preventLoad:i=!1,errorFallbackImageClassName:m,src:g,alt:f,...u}=e,{ref:_,inView:s}=x({rootMargin:T}),[l,C]=b.useState(!1);b.useEffect(()=>{if(!r&&!s||i)return;const d=new Image;return d.onerror=()=>{C(!0),t&&(d.src=t)},d.src=g,()=>d.onerror=null},[s,i]);function y(){return l&&t?t:e.src}if(l&&!t)return o.jsx(o.Fragment,{});if(!_)return o.jsx("img",{className:`${A.image} ${a} ${l&&m||""}`,alt:f,src:y(),...u});const h={alt:f,...u,...(s||r)&&!i?{src:y()}:{src:$}};return r||(h.ref=_),o.jsx("img",{className:`${A.image} ${a} ${l&&m||""}`,...h})}),p="_image_1himm_1",P="_thumbnail_1himm_13",F="_tallPoster_1himm_16",O="_cover_1himm_19",S="_banner_1himm_22",E="_poster_1himm_25",w="_pdf_1himm_28",D="_link_1himm_31",n={image:p,thumbnail:P,tallPoster:F,cover:O,banner:S,poster:E,pdf:w,link:D};function B(e){let r=n.image,a="";return e.imageType===c.Thumbnails&&(a=`thumbnail ${n.thumbnail}`),e.imageType===c.TallPosters&&(a=n.tallPoster),e.imageType===c.Covers&&(a=n.cover),e.imageType===c.Banners&&(a=n.banner),e.imageType===c.Posters&&(a=n.poster),e.imageType===c.Pdf&&(a=n.pdf),e.imageType===c.Link&&(a=n.link),a&&(r+=` ${a}`),e.className&&(r+=` ${e.className}`),r}function H(e){const{data:r,imageOptions:a,appLink:t,preload:i,preventLoad:m,analyticsOptions:g,analyticsData:f,imageClassName:u,alt:_}=e;let s="";typeof r=="string"?s=r:k.isObject(r)&&(s=r.url);const l=s&&a?L.createUrl(s,a):s;return o.jsx("div",{className:B(e),style:e.imageStyle,children:o.jsxs(I,{appLink:t,analyticsData:f,analyticsOptions:g,onClick:e.onClick,preventFocus:e.preventFocus,className:e.appLinkClassName,children:[e.children,l&&o.jsx(j,{src:l,alt:_,forceLoad:i,preventLoad:m,extraClasses:u,errorFallbackImageSrc:e.errorFallbackImageSrc,errorFallbackImageClassName:e.errorFallbackImageClassName,onLoad:e.onLoad})]})})}export{H as B};
2
+ //# sourceMappingURL=Dm6PeyeG.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dm6PeyeG.chunk.js","sources":["../../../../libs/shared/src/hooks/UseLazyLoad.ts","../../../../libs/shared/src/components/lazy-image/LazyImage.tsx","../../../../libs/shared/src/components/image/BaseImage.tsx"],"sourcesContent":["import { useInView } from 'react-intersection-observer';\n\ninterface LazyUtils {\n ref: (node?: Element) => void | null;\n inView: boolean;\n\n /**\n * Use this if you want to hide something on start\n * and then show it as something else leaves the window\n * e.g. The student feed floating jump to button\n */\n initialized: boolean;\n}\n\ninterface UseLazyLoadOptions {\n prevent?: boolean;\n /**\n * See rootMagin here: https://www.npmjs.com/package/react-intersection-observer#api\n * Thow allows us to have items load ahead of coming into the viewport\n * for example thumbnail images as we scroll\n */\n rootMargin?: string;\n triggerOnce?: boolean;\n}\n\nexport function useLazyLoad(options: UseLazyLoadOptions = {}): LazyUtils {\n const { prevent, rootMargin, triggerOnce = true } = options;\n\n // eslint-disable-next-line\n let [ ref, inView, entry ] = useInView({ triggerOnce, rootMargin: rootMargin });\n\n if (prevent === true || typeof (window as any).IntersectionObserver === 'undefined') {\n inView = true;\n ref = null;\n }\n\n return { ref, inView, initialized: !!entry };\n}","import * as React from 'react';\n\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\n\nimport styles from './lazy-image.module.scss';\n\n/**\n * This value means we will load images 500px above\n * or below the viewport so that they are loaded\n * by the time they come into the viewport\n */\nconst PRELOAD_DISTANCE = '500px';\n/**\n * Atomically small blank GIF as placeholder for image src to prevent w3 validator error\n */\nconst PLACEHOLDER_SRC = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n\ninterface LazyImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n forceLoad?: boolean;\n preventLoad?: boolean;\n extraClasses?: string;\n errorFallbackImageSrc?: string;\n errorFallbackImageClassName?: string;\n}\n\nexport const LazyImage = React.memo(function(props: LazyImageProps): React.ReactElement {\n const { forceLoad, extraClasses = '', errorFallbackImageSrc, preventLoad = false, errorFallbackImageClassName, src, alt, ...propsWithoutSrc } = props;\n \n const { ref, inView } = useLazyLoad({ rootMargin: PRELOAD_DISTANCE });\n const [ error, setError ] = React.useState(false);\n\n React.useEffect(() => {\n if ((!forceLoad && !inView) || preventLoad)\n return;\n \n // https://stackoverflow.com/questions/2342132/waiting-for-image-to-load-in-javascript\n const img = new Image();\n\n img.onerror = () => {\n setError(true);\n \n if (errorFallbackImageSrc)\n img.src = errorFallbackImageSrc;\n };\n\n img.src = src;\n return () => img.onerror = null;\n }, [ inView, preventLoad ]);\n\n function getSrc(): string {\n if (error && errorFallbackImageSrc)\n return errorFallbackImageSrc;\n\n return props.src;\n }\n\n if (error && !errorFallbackImageSrc)\n return <></>;\n\n if (!ref) {\n return (\n <img\n className={`${styles.image} ${extraClasses} ${error ? errorFallbackImageClassName || '' : ''}`}\n alt={alt}\n src={getSrc()}\n {...propsWithoutSrc}\n />\n );\n }\n\n const imgProps: React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> = {\n alt,\n ...propsWithoutSrc,\n ...(((inView || forceLoad) && !preventLoad) ? { src: getSrc() } : { src: PLACEHOLDER_SRC })\n };\n\n if (!forceLoad)\n imgProps.ref = ref;\n\n return (\n <img className={`${styles.image} ${extraClasses} ${error ? errorFallbackImageClassName || '' : ''}`} {...imgProps} />\n );\n});","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { Image } from 'libs/shared/interfaces';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './image.module.scss';\n\nfunction getImageClassName(props: BaseImageProps): string {\n let className = styles.image;\n\n let imageTypeClassName = '';\n\n if (props.imageType === ImageType.Thumbnails)\n imageTypeClassName = `thumbnail ${styles.thumbnail}`;\n\n if (props.imageType === ImageType.TallPosters)\n imageTypeClassName = styles.tallPoster;\n\n if (props.imageType === ImageType.Covers)\n imageTypeClassName = styles.cover;\n\n if (props.imageType === ImageType.Banners)\n imageTypeClassName = styles.banner;\n\n if (props.imageType === ImageType.Posters)\n imageTypeClassName = styles.poster;\n\n if (props.imageType === ImageType.Pdf)\n imageTypeClassName = styles.pdf;\n\n if (props.imageType === ImageType.Link)\n imageTypeClassName = styles.link;\n\n if (imageTypeClassName)\n className += ` ${imageTypeClassName}`;\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface BaseImageProps {\n data: Image | string;\n imageOptions?: ImageOptions;\n appLink?: Core.AppLink;\n imageType?: ImageType;\n className?: string;\n imageClassName?: string;\n imageStyle?: HashObject;\n preload?: boolean;\n preventLoad?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n errorFallbackImageSrc?: string;\n errorFallbackImageClassName?: string;\n alt?: string;\n preventFocus?: boolean;\n appLinkClassName?: string;\n onClick?: () => void;\n onLoad?: () => void;\n}\n\nexport function BaseImage(props: React.PropsWithChildren<BaseImageProps>): React.ReactElement {\n const {\n data,\n imageOptions,\n appLink,\n preload,\n preventLoad,\n analyticsOptions,\n analyticsData,\n imageClassName,\n alt\n } = props;\n\n let url = '';\n\n if (typeof data === 'string') {\n url = data;\n } else if (ObjectHelper.isObject(data)) {\n url = data.url;\n }\n\n const imageUrl = (url && imageOptions) ? ImageHelper.createUrl(url, imageOptions) : url;\n\n return (\n <div className={getImageClassName(props)} style={props.imageStyle}>\n <AppLink\n appLink={appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n onClick={props.onClick}\n preventFocus={props.preventFocus}\n className={props.appLinkClassName}\n >\n {props.children}\n {imageUrl && (\n <LazyImage\n src={imageUrl}\n alt={alt}\n forceLoad={preload}\n preventLoad={preventLoad}\n extraClasses={imageClassName}\n errorFallbackImageSrc={props.errorFallbackImageSrc}\n errorFallbackImageClassName={props.errorFallbackImageClassName}\n onLoad={props.onLoad}\n />\n )}\n </AppLink>\n </div>\n );\n}\n\n"],"names":["useLazyLoad","options","prevent","rootMargin","triggerOnce","ref","inView","entry","useInView","PRELOAD_DISTANCE","PLACEHOLDER_SRC","LazyImage","React.memo","props","forceLoad","extraClasses","errorFallbackImageSrc","preventLoad","errorFallbackImageClassName","src","alt","propsWithoutSrc","error","setError","React.useState","React.useEffect","img","getSrc","jsx","Fragment","styles","imgProps","getImageClassName","className","imageTypeClassName","ImageType","BaseImage","data","imageOptions","appLink","preload","analyticsOptions","analyticsData","imageClassName","url","ObjectHelper","imageUrl","ImageHelper","jsxs","AppLink"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as a}from"./app-CQEXKRTo.js";function o(r){return a.jsx("svg",{...r,children:a.jsx("path",{fill:"currentColor",d:"M4 5.5A1.5 1.5 0 0 1 5.5 4h9A1.5 1.5 0 0 1 16 5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5V15a.5.5 0 0 0 .5.5h1a.5.5 0 0 1 0 1h-1A1.5 1.5 0 0 1 4 15zM7.5 9A1.5 1.5 0 0 1 9 7.5h9.5A1.5 1.5 0 0 1 20 9v9.5a1.5 1.5 0 0 1-1.5 1.5H9a1.5 1.5 0 0 1-1.5-1.5zM9 8.5a.5.5 0 0 0-.5.5v9.5a.5.5 0 0 0 .5.5h9.5a.5.5 0 0 0 .5-.5V9a.5.5 0 0 0-.5-.5z"})})}export{o as C};
2
+ //# sourceMappingURL=DqMufS1U.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DqMufS1U.chunk.js","sources":["../../../../libs/shared/src/images/svg/actions/CopySvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function CopySvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M4 5.5A1.5 1.5 0 0 1 5.5 4h9A1.5 1.5 0 0 1 16 5.5v1a.5.5 0 0 1-1 0v-1a.5.5 0 0 0-.5-.5h-9a.5.5 0 0 0-.5.5V15a.5.5 0 0 0 .5.5h1a.5.5 0 0 1 0 1h-1A1.5 1.5 0 0 1 4 15zM7.5 9A1.5 1.5 0 0 1 9 7.5h9.5A1.5 1.5 0 0 1 20 9v9.5a1.5 1.5 0 0 1-1.5 1.5H9a1.5 1.5 0 0 1-1.5-1.5zM9 8.5a.5.5 0 0 0-.5.5v9.5a.5.5 0 0 0 .5.5h9.5a.5.5 0 0 0 .5-.5V9a.5.5 0 0 0-.5-.5z'\n />\n </svg>\n );\n}\n"],"names":["CopySvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAQC,EAAsC,CAC5D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,6VAAA,CAAA,EAEN,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as n,a7 as r,L as o}from"./app-CQEXKRTo.js";import{P as l}from"./Cq8XHkfC.chunk.js";const m="interactives.pendingIndicator",d=o.encloseNamespace(m);function u(e){let t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=` ${e.className}`),t}function g(e){const{title:t,showLabel:a,tooltipClassName:c,showIndicator:i=!0}=e,s=()=>n.jsxs("div",{className:u(e),children:[!!a&&n.jsx("em",{children:d("pending")}),!!i&&n.jsx(l,{})]});return t?n.jsx(r,{title:t,spanHack:!0,spanHackClassName:c||"h-100 w-100 d-flex align-items-center",children:n.jsx(s,{})}):n.jsx(s,{})}export{g as P};
2
+ //# sourceMappingURL=DtMtah8Q.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DtMtah8Q.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n showIndicator?: boolean;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const { title, showLabel, tooltipClassName, showIndicator = true } = props;\n\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n {!!showIndicator &&\n <PercentageIndicator />\n }\n </div>\n );\n\n if (!title)\n return <Indicator />;\n\n return (\n <Tooltip title={title} spanHack spanHackClassName={tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}"],"names":["namespace","getPhrase","LanguageService","getClassName","props","className","PendingIndicator","title","showLabel","tooltipClassName","showIndicator","Indicator","jsxs","jsx","PercentageIndicator","Tooltip"],"mappings":"6FAOA,MAAMA,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAaC,EAAsC,CAC1D,IAAIC,EAAY,kCAEhB,OAAAA,GAAaD,EAAM,UAAY,2BAA6B,0BAExDA,EAAM,YACRC,GAAa,IAAID,EAAM,SAAS,IAE3BC,CACT,CAUO,SAASC,EAAiBF,EAA2C,CAC1E,KAAM,CAAE,MAAAG,EAAO,UAAAC,EAAW,iBAAAC,EAAkB,cAAAC,EAAgB,IAASN,EAE/DO,EAAY,IAChBC,EAAAA,KAAC,OAAI,UAAWT,EAAaC,CAAK,EAC/B,SAAA,CAAA,CAAC,CAACI,GACDK,EAAAA,IAAC,KAAA,CAAI,SAAAZ,EAAU,SAAS,EAAE,EAE3B,CAAC,CAACS,GACDG,MAACC,EAAA,CAAA,CAAoB,CAAA,EAEzB,EAGF,OAAKP,EAIHM,EAAAA,IAACE,EAAA,CAAQ,MAAAR,EAAc,SAAQ,GAAC,kBAAmBE,GAAoB,wCACrE,SAAAI,EAAAA,IAACF,EAAA,CAAA,CAAU,CAAA,CACb,QALQA,EAAA,EAAU,CAOtB"}
@@ -0,0 +1,2 @@
1
+ import{bG as D,az as W,bH as K,ah as Y,v as O,aw as b,aW as d,s as p,l as j,bI as m,bJ as q,bK as v,bL as z,bM as J,L as H,u as C,bN as Q,bO as X,m as Z,au as ee,at as te,av as S,an as x,a0 as $,a3 as I,a1 as k,a2 as re,ab as se,bx as E,bD as B,bP as ie}from"./app-CQEXKRTo.js";import{S as T}from"./DdCE2h3h.chunk.js";import{C as ae,V}from"./BFH1W3y4.chunk.js";const ne=5,A={getRecentItem(e,t,r=!0){let s=r?t.cacheGet(e):t.get(e);return Array.isArray(s)||(s=[]),s},setRecentItem(e,t,r,s){if(Array.isArray(t)){if(s){r.cacheSet(e,t);return}r.set(e,t)}},addRecentItem(e,t,r){const{id:s,limit:i=ne,expire:n=!0}=r;let a=A.getRecentItem(e,t,n);const l=a.indexOf(s);return l>-1&&a.splice(l,1),a.unshift(s),a.length>i&&(a=a.slice(0,i)),A.setRecentItem(e,a,t,n),a},removeRecentItem(e,t,r){const i=A.getRecentItem(e,r).filter(n=>n!==t.toString());A.setRecentItem(e,i,r)}},_=e=>`recently:shared:to:${e}`,le={getRecentlySharedTo(e){return A.getRecentItem(_(e),D)},addRecentlySharedTo(e,t){return A.addRecentItem(_(e),D,t)}};class oe{constructor(t){this.setData(t)}setData(t){const{collectionPrefix:r,id:s,sort:i,cursor:n}=t;s&&(this.id=s),i&&(this.sort=i),n&&(this.cursor=n),r&&(this.collectionPrefix=r)}toString(){return[this.collectionPrefix,this.id,this.sort,this.cursor].filter(Boolean).join(":")}toParams(){const t={};return this.sort&&(t.sort=this.getSortTypeParam().toLowerCase()),this.cursor&&(t.cursor=this.cursor),t}getSortTypeParam(){return W.throw(new K("getSortTypeParam must be implemented when extending BaseCollectionIdentifier")),""}}class ce extends oe{constructor(t,r=""){super({collectionPrefix:"playlist:videos",id:t,cursor:r})}}const U={deletePlaylist(e){return t=>{const r={...t};return r.hasOwnProperty(e)&&delete r[e],r}},incrementVideoCount(e,t){return r=>{const s={...r};return s.hasOwnProperty(e)?(s[e].videos||(s[e].videos={}),s[e].videos.count=s[e].videos.count?s[e].videos.count+t:t,s):r}}},ue={reorder(e,t,r){if(t===r)return{reorderedItems:e,reorderRequest:null};const s=O.moveItem(e,t,r),i=r<e.length-1?s[r+1].id:null,n={sourceMemberId:s[r].id,destinationMemberId:i};return{reorderedItems:s,reorderRequest:n}},updateState(e,t,r){const s=[],i=Y.deepClone(r),n=[e];let a=r[e];const l=!!a&&!!a.data&&a.data.length;for(;a&&Array.isArray(a.data);){s.push(...a.data);const y=a.pagination&&a.pagination.cursors&&a.pagination.cursors.next,w=!!y&&`${e}:${y}`;a=y&&r[w],a&&n.push(w)}if(!s.length)return r;const c=O.findIndex(s,y=>y.id===t.sourceMemberId);let u=[...s];const g=u.splice(c,1),f=t.destinationMemberId?O.findIndex(u,y=>y.id===t.destinationMemberId):u.length;return u.splice(f,0,g[0]),u=u.map(y=>({id:y.id})),n.forEach(y=>{const w=u.splice(0,l);i[y].data=w}),i}},pe={getUserPlaylists(e){const{sort:t,type:r}=e,s={sort:t,query:`{limit:100}${v.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`};return e.cursor&&(s.cursor=e.cursor),{url:p.urlBuilder(`/api/domain/v2/me/playlists/${r}`,s),key:e.toString()}},getPlaylist(e,t,r){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated`}),key:`playlist:${e}`,success:t,error:r}},getSharedPlaylist(e,t,r,s){return{url:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`,shareId:t}),key:`shared:playlist:${e}:${t}`,success:r,error:s}},playlistWithThumbnailAndCount(e){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`}),key:`playlist:${e}:thumbnail:count`}},getPlaylistVideos(e,t){const{VIDEO_COLLECTION:r,CLIP_COLLECTION:s,INTERACTIVE:i}=v,n={query:`(videos[${r}]{status:[${m.Published},${m.Archived}]}|clips[${s}]{status:[${m.Published},${m.Archived}]}|interactives[${i}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata};return t&&(n.cursor=t),{url:p.urlBuilder(`{gateway}/v1/objects/${e}/members`,n),publicUrl:p.urlBuilder(`/api/objects/${e}/members`,n),key:`playlist:${e}:videos${t?`:${t}`:""}`}},getSharedPlaylistVideos(e,t,r){const{VIDEO_COLLECTION:s,CLIP_COLLECTION:i,INTERACTIVE:n}=v,a={query:`(videos[${s}]{status:[${m.Published},${m.Archived}]}|clips[${i}]{status:[${m.Published},${m.Archived}]}|interactives[${n}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata,shareId:t};return r&&(a.cursor=r),{url:p.urlBuilder(`/api/objects/${e}/members`,a),key:`shared:playlist:${e}:${t}:videos:${r}`}},getPlaylistVideosCount(e){const t=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),key:`playlist:count:${e}`,normalize:!1}},getSharedPlaylistVideosCount(e,t){const r=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${r},clips[count()]${r},interactives[count()]${r}`,shareId:t}),key:`shared:playlist:count:${e}:${t}`,normalize:!1}},getVideoPlaylists(e,t,r){return{url:`{gateway}/v1/objects/${e}/playlists?query={limit:100,owner.id:[${t}]}`,key:`video:playlists:${e}${r?":cursor":""}`}},createPlaylist(e,t,r,s,i){return{key:"create:playlist",url:`{gateway}/v1/objects/${e}/playlists`,data:t,type:b.POST,success:r,error:s,always:i,invalidationKeys:"user:playlists"}},updatePlaylist(e,t,r,s,i){return{key:"update:playlist",url:`{gateway}/v1/objects/${e}`,data:t,type:b.PUT,success:r,error:s,always:i}},deletePlaylist(e,t,r,s){return{key:"delete:playlist",url:`{gateway}/v1/objects/${e}`,type:b.DELETE,success:t,error:r,always:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}`,updateData:U.deletePlaylist(`playlist:${e}`)}}},copyPlaylist(e,t,r,s){return{url:"{gateway}/v1/playlists/copy",key:"copy:playlist",data:{playlistId:e},type:b.POST,invalidationKeys:"user:playlists",success:t,error:r,always:s}},addToPlaylist(e,t,r,s){const i=["user:playlists",new ce(e).toString(),`playlist:${e}:videos`];t.forEach(a=>{i.push(`video:playlists:${a.id}`)});const n=t.reduce((a,l)=>(j.isClip(l)&&(Array.isArray(a.clips)?a.clips.push({id:l.id}):a.clips=[{id:l.id}]),j.isInteractive(l)&&(Array.isArray(a.interactives)?a.interactives.push({id:l.id}):a.interactives=[{id:l.id}]),j.isVideo(l)&&(Array.isArray(a.videos)?a.videos.push({id:l.id}):a.videos=[{id:l.id}]),a),{});return{key:`add:to:playlist:${e}:${t.map(a=>a.id).join(":")}`,url:`{gateway}/v1/objects/${e}`,data:n,type:b.PUT,success:r,error:s,invalidationKeys:i,updateState:{keys:`playlist:${e}`,updateData:U.incrementVideoCount(`playlist:${e}`,t.length)},normalize:!1}},removePlaylistVideo(e,t,r,s,i){let n=`{gateway}/v1/objects/${e}`;return r===d.Clip?n+="/clips":r===d.Interactive?n+="/interactives":n+="/videos",{key:"remove:playlist:video",url:p.urlBuilder(n,{memberId:t}),type:b.DELETE,success:s,error:i,invalidationKeys:["user:playlists",`playlist:${e}:videos`,`video:playlists:${t}`,`playlist:${e}`]}},getIsFollowingPlaylist(e,t){const r=s=>{var i;return{objectId:e,isFollowing:!!((i=s==null?void 0:s.data)!=null&&i.length)}};return{url:`{gateway}/v1/objects/${t}/followedPlaylists?query={id:${e}}`,key:`playlist:${e}:following:${t}`,formatData:r,normalize:!1}},followPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}`,key:`follow:playlist:${e}`,data:{followedPlaylists:e},type:b.PUT,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},unfollowPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}/followedPlaylists?memberId=${e}`,key:`unfollow:playlist:${e}`,type:b.DELETE,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},reorderVideos(e,t,r,s){return{key:"reorder:playlist",url:`{gateway}/v1/playlists/${e}/reorder`,data:t,type:b.PUT,success:r,error:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}:videos`,updateData:i=>ue.updateState(`playlist:${e}:videos`,t,i)}}},getVideoCandidate(e){return{url:`{gateway}/v1/objects/${e}?query=_restrictions`,key:`add:to:playlist:candidate:${e}`}}},G={sharedSeries:(e,t)=>p.urlBuilder(`/api/objects/${e}`,{query:v.SERIES,shareId:t}),seriesWithVideos:(e,t=3)=>`{gateway}/v1/objects/${e}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${t}}`},ye={series(e){const t={query:v.SERIES};return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,t),publicUrl:p.urlBuilder(`/api/objects/${e}`,t),key:`series:${e}`}},sharedSeries(e,t){return{url:G.sharedSeries(e,t),key:`shared:series:${e}:${t}`}},seriesWithVideos(e,t=3){return{url:G.seriesWithVideos(e,t),key:`series:${e}:with:videos:${t}`}},seriesWithThumbnailAndCount(e){return{url:`{gateway}/v1/objects/${e}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,key:`series:${e}:thumbnail:count`}},seriesVideos(e,t,r,s){const i=z.getVideoSortParam(r),n=["series",e,"videos",s,r].filter(a=>!!a).join(":");return{url:p.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:`{${i}}${v.VIDEO_COLLECTION}`,cursor:s}),publicUrl:p.urlBuilder(`/api/objects/collections/${e}/videos`,{query:`{${i}}${J.VIDEO_COLLECTION}`,cursor:s}),key:n}}},de="shared.share",h=H.encloseNamespace(de),P={getObjectTypeId(e){switch(e){case"video":return d.Video;case"playlist":return d.Playlist;case"subject":return d.Subject;case"series":return d.Series;case"interactive":return d.Interactive;case"clip":return d.Clip}},createLink(e){const t=i=>{$.logUserAction({...i,objectName:e.entity.name},$.mergeOptions(P.getAnalyticsOptions(e.entityType),{actionType:I.Create,entity:S.ShareLink,eventVersion:k.V3})),e.success&&e.success(i)},r=()=>{e.alerts.error(h("createLinkError",{name:e.entity.name}))},s={resourceId:e.entity.id,overrideRestrictions:!1};e.password&&(s.password=e.password),e.linkExpireDate&&(s.linkExpireDate=e.linkExpireDate),x(e.dispatch,T.createShareLink(s,t,r))},updateLink(e,t,r,s,i,n,a,l){const c=g=>{$.logUserAction({...g,objectName:t.name},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Edit,entity:S.ShareLink,eventVersion:k.V3})),a&&a(g),n.success(h("editSuccess",{name:t.name,escapeText:!0}))},u=()=>{l&&l(),n.error(h("editError",{name:t.name,escapeText:!0}))};x(e,T.editShareLink(s,i,c,u))},deleteLink(e,t,r,s,i,n,a){const l=()=>{$.logUserAction({...s,objectName:t.name},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Delete,entity:S.ShareLink})),n&&n(),i.success(h("deleteSuccess",{name:t.name,escapeText:!0}))},c=()=>{i.error(h("deleteError",{name:t.name,escapeText:!0}))},u=()=>{a&&a()};x(e,T.deleteShareLink(s,l,c,u))},createOrUpdateDirectShare(e){const{dispatch:t,entity:r,entityType:s,currentUser:i,recipients:n,sentDirectShare:a,message:l,onSuccess:c,onError:u,onDone:g}=e,f=N=>{c&&c(N),$.logUserAction({id:r.id,name:r.name,shareCount:n.length},$.mergeOptions(P.getAnalyticsOptions(s),{actionType:I.Share,descriptor:re.DirectShare,eventVersion:k.V3})),n.map(F=>{le.addRecentlySharedTo(i.id,{id:F.id})})},y={objectId:r.id,objectTypeId:P.getObjectTypeId(s),recipients:n,message:l},w={recipients:n,message:l},M=a?T.updateDirectShareRecipients(a.id,w,f,u,g):T.createDirectShare(y,f,u,g);x(t,M)},removeDirectShareRecipient(e,t,r,s,i,n){const a=l=>{i&&i(l),$.logUserAction({shareCount:1},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Unshare}))};x(e,T.removeDirectShareRecipient(s.id,t,a,n))},getDirectShareRecipientsRequest(e,t){var s;return!!((s=t==null?void 0:t.recipients)!=null&&s.length)&&T.getDirectShareRecipientsById(t.id,t.recipients,e)},getAnalyticsEntity(e){switch(e){case"playlist":return S.Playlist;case"subject":return S.Classification;case"video":return S.Video;case"series":return S.Series;case"interactive":return S.Interactive;case"clip":return S.Clip}},getAnalyticsOptions(e){return{entity:P.getAnalyticsEntity(e),location:te.Popup,workflowPhase:ee.Complete}},getFetchFunctionByType:e=>{switch(e){case"video":return t=>C(Z.video(t));case"playlist":return t=>C(pe.getPlaylist(t));case"subject":return(t,r)=>C(ae.classification(t,r));case"series":return t=>C(ye.series(t));case"interactive":return t=>C(X.interactiveMetadata(t));case"clip":return t=>C(Q.clip(t))}},getImageUrl(e){var t,r,s,i;return"thumbnail"in e&&e.thumbnail?(t=e.thumbnail)==null?void 0:t.url:"_thumbnail"in e&&e._thumbnail?(r=e._thumbnail)==null?void 0:r.url:"cover"in e?(s=e.cover)==null?void 0:s.url:"tallPoster"in e?(i=e.tallPoster)==null?void 0:i.url:""},getShareRecipientsPhrase(e){var l,c,u;if(!e.length)return;let t={};if(e.length===1)return O.first(e).name;e.forEach(g=>{let f;switch(g.typeId){case d.User:f="users";break;case d.Classroom:f="classrooms";break;case d.ClassroomGroup:f="classroomGroups";break}const y=t[f]??[];y.push(g),t={...t,[f]:O.uniq(y)}});const r=t.classrooms&&!t.classroomGroups&&!t.users,s=t.classroomGroups&&!t.classrooms&&!t.users,i=t.users&&!t.classrooms&&!t.classroomGroups;if(r)return h("classrooms",{smartCount:t.classrooms.length});if(s)return h("groups",{smartCount:t.classroomGroups.length});if(i)return h("users",{smartCount:t.users.length});const n=[];(l=t.classrooms)!=null&&l.length&&n.push(h("classrooms",{smartCount:t.classrooms.length})),(c=t.classroomGroups)!=null&&c.length&&n.push(h("groups",{smartCount:t.classroomGroups.length})),(u=t.users)!=null&&u.length&&n.push(h("users",{smartCount:t.users.length}));const a=n.pop();return`${n.join(", ")} ${h("and")} ${a}`}};var R=(e=>(e.Expired="Expired",e.Active="Active",e))(R||{});const me="share.shareLinkInfo",o=H.encloseNamespace(me),L={getPrivateIconAndText:e=>{const{entityTypeId:t,privacy:r,hasStudentExp:s,entity:i,yearGroups:n}=e;if(t===d.Topic||t===d.Series)return{icon:V,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r.privacy){case"public":return{icon:V,text:o("publicDescription")};case"protected":return r.overrideRestrictions?{icon:V,text:o("clickViewOnly")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"just_my_customer":return r.overrideRestrictions?{icon:E,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"restricted":case"private":return{icon:E,text:o("privateDescription")};default:return{}}},getIconAndText:e=>{const{linkExpireDate:t,isPasswordProtected:r,status:s}=e;if(!t&&!r)return L.getPrivateIconAndText(e);if(!t)return{icon:E,text:o("password")};const i=B.isToday(t),n=B.diffBetween(t,new Date,"day");if(!r){let l=i?o("expiryToday"):o("expiry",{days:n});return s===R.Expired&&(l=o("expired")),{icon:ie,text:l}}let a=i?o("passwordExpiryToday"):o("passwordExpiry",{days:n});return s===R.Expired&&(a=o("passwordExpired")),{icon:E,text:a}},getRespectRatingText(e,t,r){var l;if(!e||!t)return null;if(r)return o("justMySchoolTeachers");if(!j.isVideoType(e))return o("collectionRating");const s=se.getWeightedRestriction((l=e._restrictions)==null?void 0:l.value);if(s&&!s.yearGroup)return o("onlyAdmins");const i=j.getRating(e);let n,a;for(const c of t)(!n||c.value>n.value)&&(n=c),!(s&&c.value<=s.yearGroup)&&(i&&c.rating.value<i.value||(!a||c.value<a.value)&&(a=c));return a?t.length===1?o("clickViewOnly"):a.value===n.value?o("maxYearGroup",{yearGroup:n.name}):o("yearGroupRange",{yearGroup:a.name}):o("onlyStaff")}};export{le as R,P as S,L as a,R as b};
2
+ //# sourceMappingURL=DwxW4_xW.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DwxW4_xW.chunk.js","sources":["../../../../libs/shared/src/utils/RecentItemHelper.ts","../../../../libs/shared/src/apps/share/utils/RecentShareHelper.ts","../../../../libs/common/src/backbone/interfaces/BaseCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistVideoCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/utils/PlaylistStateUpdateHelper.ts","../../../../libs/shared/src/utils/ReorderHelper.ts","../../../../libs/shared/src/flight-requests/PlaylistRequests.ts","../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../../../libs/shared/src/apps/share/views/share/ShareViewHelper.ts","../../../../libs/shared/src/enums/ShareLinkStatus.ts","../../../../libs/shared/src/apps/share/utils/ShareLinkHelper.ts"],"sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nconst DEFAULT_STORAGE_LIMIT = 5;\n\ninterface AddRecentItemOptions {\n id: string;\n limit?: number;\n expire?: boolean;\n}\n\nexport const RecentItemHelper = {\n getRecentItem(cacheKey: string, dataSource: StorageHelper, expire: boolean = true): string[] {\n let recentItems = expire ? dataSource.cacheGet(cacheKey) : dataSource.get(cacheKey);\n\n if (!Array.isArray(recentItems))\n recentItems = [];\n\n return recentItems;\n },\n\n setRecentItem(cacheKey: string, ids: string[], dataSource: StorageHelper, expire?: boolean): void {\n if (!Array.isArray(ids))\n return;\n\n if (expire) {\n dataSource.cacheSet(cacheKey, ids);\n return;\n }\n\n dataSource.set(cacheKey, ids);\n },\n\n addRecentItem(cacheKey: string, dataSource: StorageHelper, options: AddRecentItemOptions): string[] {\n const { id, limit = DEFAULT_STORAGE_LIMIT, expire = true } = options;\n\n let recentItems = RecentItemHelper.getRecentItem(cacheKey, dataSource, expire);\n\n const idIndex = recentItems.indexOf(id);\n\n /**\n * If the item is already in the stored list, \n * remove it so that it will be inserted at the first position.\n */\n if (idIndex > -1)\n recentItems.splice(idIndex, 1);\n\n recentItems.unshift(id);\n\n if (recentItems.length > limit)\n recentItems = recentItems.slice(0, limit);\n\n RecentItemHelper.setRecentItem(cacheKey, recentItems, dataSource, expire);\n\n return recentItems;\n },\n\n removeRecentItem(cacheKey: string, id: string, dataSource: StorageHelper): void {\n const items = RecentItemHelper.getRecentItem(cacheKey, dataSource);\n const omitted = items.filter(i => i !== id.toString());\n RecentItemHelper.setRecentItem(cacheKey, omitted, dataSource);\n }\n};","import { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { RecentItemHelper } from 'libs/shared/utils/RecentItemHelper';\n\nconst getCacheKey = (userId: string) => `recently:shared:to:${userId}`;\n\ninterface AddRecentShareOptions {\n id: string;\n limit?: number;\n}\n\nexport const RecentShareHelper = {\n /**\n * Get a list of ids of recipients recently shared to.\n */\n getRecentlySharedTo(userId: string): string[] {\n return RecentItemHelper.getRecentItem(getCacheKey(userId), LocalStorageHelper);\n },\n \n addRecentlySharedTo(userId: string, options: AddRecentShareOptions): string[] {\n return RecentItemHelper.addRecentItem(getCacheKey(userId), LocalStorageHelper, options);\n }\n};","import { ObjectHash } from 'backbone';\n\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport interface BaseCollectionIdentifierOptions<T> {\n collectionPrefix?: string;\n id?: string;\n sort?: T;\n cursor?: string;\n}\n\nexport class BaseCollectionIdentifier<T = HashObject> {\n public id: string;\n public sort: T;\n public cursor: string;\n public collectionPrefix: string;\n\n constructor(options: BaseCollectionIdentifierOptions<T>) {\n this.setData(options);\n }\n\n protected setData(options: BaseCollectionIdentifierOptions<T>): void {\n const { collectionPrefix, id, sort, cursor } = options;\n\n if (id)\n this.id = id;\n\n if (sort)\n this.sort = sort;\n\n if (cursor)\n this.cursor = cursor;\n\n if (collectionPrefix)\n this.collectionPrefix = collectionPrefix;\n }\n\n public toString(): string {\n const params = [\n this.collectionPrefix,\n this.id,\n this.sort,\n this.cursor\n ];\n\n return params.filter(Boolean).join(':');\n }\n\n public toParams(): ObjectHash {\n const params: ObjectHash = {};\n\n if (this.sort)\n params.sort = this.getSortTypeParam().toLowerCase();\n\n if (this.cursor)\n params.cursor = this.cursor;\n\n return params;\n }\n\n protected getSortTypeParam(): string {\n ErrorHelper.throw(new DevError('getSortTypeParam must be implemented when extending BaseCollectionIdentifier'));\n\n return '';\n }\n}","import { BaseCollectionIdentifier } from 'libs/common/backbone/interfaces';\n\nexport class PlaylistVideoCollectionIdentifier extends BaseCollectionIdentifier {\n constructor(id: string, cursor: string = '') {\n super({ collectionPrefix: 'playlist:videos', id, cursor });\n }\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\n\ntype StateMap = { [key: string]: HashObject };\n\nexport const PlaylistStateUpdateHelper = {\n deletePlaylist(key: string): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (updatedState.hasOwnProperty(key))\n delete updatedState[key];\n\n return updatedState;\n };\n },\n\n incrementVideoCount(key: string, count: number): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (!updatedState.hasOwnProperty(key))\n return state;\n\n if (!updatedState[key].videos)\n updatedState[key].videos = {};\n\n updatedState[key].videos.count = updatedState[key].videos.count\n ? updatedState[key].videos.count + count\n : count;\n\n return updatedState;\n };\n }\n};","import { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { BaseObject, ReorderRequest } from 'libs/shared/interfaces';\n\ninterface ReorderResult<T extends BaseObject> {\n reorderRequest: ReorderRequest;\n reorderedItems: T[];\n}\n\nexport const ReorderHelper = {\n reorder<T extends BaseObject>(items: T[], oldIdx: number, newIdx: number): ReorderResult<T> {\n if (oldIdx === newIdx)\n return { reorderedItems: items, reorderRequest: null };\n\n const reorderedItems: T[] = ArrayHelper.moveItem(items, oldIdx, newIdx);\n\n /**\n * If newIdx is the last idx then we set\n * destinationMemberId to null.\n */\n const destinationMemberId = newIdx < items.length - 1\n ? reorderedItems[newIdx + 1].id\n : null;\n\n const reorderRequest: ReorderRequest = {\n sourceMemberId: reorderedItems[newIdx].id,\n destinationMemberId\n };\n\n return { reorderedItems, reorderRequest };\n },\n\n updateState(\n dataPrefix: string,\n reorderRequest: ReorderRequest,\n data: { [key: string]: HashObject }\n ): { [key: string]: HashObject } {\n const items: BaseObject[] = [];\n const updatedData = ObjectHelper.deepClone(data);\n\n const keys = [dataPrefix]; // Maintain an ordered list of keys.\n let page = data[dataPrefix];\n const pageSize = !!page && !!page.data && page.data.length;\n\n /**\n * Flatten items\n */\n while (page) {\n if (!Array.isArray(page.data))\n break;\n\n items.push(...page.data as BaseObject[]);\n\n const nextCursor = page.pagination\n && page.pagination.cursors\n && page.pagination.cursors.next;\n\n const nextKey = !!nextCursor && `${dataPrefix}:${nextCursor}`;\n\n page = nextCursor && data[nextKey];\n\n if (page)\n keys.push(nextKey);\n }\n\n if (!items.length)\n return data;\n\n /**\n * Reorder items\n */\n const removeIdx = ArrayHelper.findIndex(items, i => i.id === reorderRequest.sourceMemberId);\n\n let reorderedItems = [...items];\n\n const itemToMove = reorderedItems.splice(removeIdx, 1);\n\n const insertIdx = reorderRequest.destinationMemberId\n ? ArrayHelper.findIndex(reorderedItems, r => r.id === reorderRequest.destinationMemberId)\n : reorderedItems.length;\n\n reorderedItems.splice(insertIdx, 0, itemToMove[0]);\n\n reorderedItems = reorderedItems.map(v => ({ id: v.id }));\n\n /**\n * Paginate reordered items\n */\n keys.forEach(key => {\n const itemsToInsert = reorderedItems.splice(0, pageSize);\n updatedData[key].data = itemsToInsert;\n });\n\n return updatedData;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { CreateOrUpdatePlaylistRequest, PlaylistCollectionIdentifier, PlaylistVideoCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces';\nimport { PlaylistStateUpdateHelper } from 'libs/shared/apps/playlists/utils/PlaylistStateUpdateHelper';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Following, ReorderRequest, UserCollection, VideoTypes } from 'libs/shared/interfaces';\nimport { ObjectApiXhr } from 'libs/shared/interfaces/responses/ErrorResponse';\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport const PlaylistRequests = {\n // TODO: Get working with objects api (playlist count needs to include clips and ints too)\n getUserPlaylists(collectionIdentifier: PlaylistCollectionIdentifier): Flight.Request {\n const { sort, type } = collectionIdentifier;\n\n const params: HashObject = {\n sort: sort,\n query: `{limit:100}${SharedWithStatements.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`\n };\n\n if (collectionIdentifier.cursor)\n params.cursor = collectionIdentifier.cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v2/me/playlists/${type}`, params),\n key: collectionIdentifier.toString()\n };\n },\n\n getPlaylist(id: string, success?: (data: any) => void, error?: (data: any) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated`\n }),\n key: `playlist:${id}`,\n success,\n error\n };\n },\n\n getSharedPlaylist(\n id: string,\n shareId: string,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`,\n shareId\n }),\n key: `shared:playlist:${id}:${shareId}`,\n success,\n error\n };\n },\n\n playlistWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`\n }),\n key: `playlist:${id}:thumbnail:count`\n };\n },\n\n getPlaylistVideos(id: string, cursor?: string): Flight.PublicRequest {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `playlist:${id}:videos${cursor ? `:${cursor}` : ''}`\n };\n },\n\n getSharedPlaylistVideos(id: string, shareId: string, cursor?: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `shared:playlist:${id}:${shareId}:videos:${cursor}`\n };\n },\n\n getPlaylistVideosCount(id: string): Flight.PublicRequest {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n key: `playlist:count:${id}`,\n normalize: false\n };\n },\n\n getSharedPlaylistVideosCount(\n id: string,\n shareId: string\n ): Flight.Request {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`,\n shareId\n }),\n key: `shared:playlist:count:${id}:${shareId}`,\n normalize: false\n };\n },\n\n getVideoPlaylists(videoId: string, userId: string, cursor?: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/playlists?query={limit:100,owner.id:[${userId}]}`,\n key: `video:playlists:${videoId}${cursor ? ':cursor' : ''}`\n };\n },\n\n createPlaylist(\n userId: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'create:playlist',\n url: `{gateway}/v1/objects/${userId}/playlists`,\n data,\n type: HttpVerbs.POST,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists'\n };\n },\n\n updatePlaylist(\n id: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'update:playlist',\n url: `{gateway}/v1/objects/${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deletePlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'delete:playlist',\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}`,\n updateData: PlaylistStateUpdateHelper.deletePlaylist(`playlist:${id}`)\n }\n };\n },\n\n copyPlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/playlists/copy',\n key: 'copy:playlist',\n data: { playlistId: id },\n type: HttpVerbs.POST,\n invalidationKeys: 'user:playlists',\n success,\n error,\n always\n };\n },\n\n addToPlaylist(\n playlistId: string,\n videos: VideoTypes[],\n success?: (data: any) => void,\n error?: (data: ObjectApiXhr) => void\n ): Flight.Request {\n /**\n * Invalidate:\n * - Playlists as they are fetched with first video.\n * - Playlist video collection.\n * - Playlists for each video.\n */\n const invalidationKeys = [\n 'user:playlists',\n (new PlaylistVideoCollectionIdentifier(playlistId)).toString(),\n `playlist:${playlistId}:videos`\n ];\n\n videos.forEach(video => {\n invalidationKeys.push(`video:playlists:${video.id}`);\n });\n\n const body = videos.reduce((acc: HashObject, video: VideoTypes) => {\n if (VideoHelper.isClip(video)) {\n if (Array.isArray(acc.clips))\n acc.clips.push({ id: video.id });\n else\n acc.clips = [{ id: video.id }];\n }\n\n if (VideoHelper.isInteractive(video)) {\n if (Array.isArray(acc.interactives))\n acc.interactives.push({ id: video.id });\n else\n acc.interactives = [{ id: video.id }];\n }\n\n if (VideoHelper.isVideo(video)) {\n if (Array.isArray(acc.videos))\n acc.videos.push({ id: video.id });\n else\n acc.videos = [{ id: video.id }];\n }\n\n return acc;\n }, {});\n\n return {\n key: `add:to:playlist:${playlistId}:${videos.map(v => v.id).join(':')}`,\n url: `{gateway}/v1/objects/${playlistId}`,\n data: body,\n type: HttpVerbs.PUT,\n success,\n error,\n invalidationKeys,\n updateState: {\n keys: `playlist:${playlistId}`,\n updateData: PlaylistStateUpdateHelper.incrementVideoCount(`playlist:${playlistId}`, videos.length)\n },\n normalize: false\n };\n },\n\n removePlaylistVideo(\n playlistId: string,\n videoId: string,\n typeId: MasterType,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n let baseUrl = `{gateway}/v1/objects/${playlistId}`;\n\n if (typeId === MasterType.Clip)\n baseUrl += '/clips';\n else if (typeId === MasterType.Interactive)\n baseUrl += '/interactives';\n else\n baseUrl += '/videos';\n\n return {\n key: 'remove:playlist:video',\n url: UrlHelper.urlBuilder(baseUrl, { memberId: videoId }),\n type: HttpVerbs.DELETE,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: [\n 'user:playlists',\n `playlist:${playlistId}:videos`,\n `video:playlists:${videoId}`,\n `playlist:${playlistId}`\n ]\n };\n },\n\n getIsFollowingPlaylist(playlistId: string, userId: string): Flight.Request {\n const formatData: ((data: UserCollection) => Following) = (data: UserCollection) => (\n { objectId: playlistId, isFollowing: !!data?.data?.length }\n );\n\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?query={id:${playlistId}}`,\n key: `playlist:${playlistId}:following:${userId}`,\n formatData,\n normalize: false\n };\n },\n\n followPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}`,\n key: `follow:playlist:${playlistId}`,\n data: { followedPlaylists: playlistId },\n type: HttpVerbs.PUT,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n unfollowPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?memberId=${playlistId}`,\n key: `unfollow:playlist:${playlistId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n // TODO: Use objects api and get working with clips + ints\n reorderVideos(\n id: string,\n reorderRequest: ReorderRequest,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n key: `reorder:playlist`,\n url: `{gateway}/v1/playlists/${id}/reorder`,\n data: reorderRequest,\n type: HttpVerbs.PUT,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}:videos`,\n updateData: (data: { [key: string]: HashObject }) =>\n ReorderHelper.updateState(`playlist:${id}:videos`, reorderRequest, data)\n }\n };\n },\n\n getVideoCandidate(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=_restrictions`,\n key: `add:to:playlist:candidate:${id}`\n };\n }\n};\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport {\n AnalyticsOptions, EntityType, EventVersion, LocationContext, ShareDescriptors, UserAction, WorkflowPhase\n} from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { CreateDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/CreateDirectShareRequest';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/CreateShareLinkRequest';\nimport { EditDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/EditDirectShareRequest';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { RecentShareHelper } from 'libs/shared/apps/share/utils/RecentShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseObject, Classification, Classroom, ClassroomGroup, Clip, CurrentUser, DirectShare, InteractiveMetadata, Playlist, Series, ShareLink, ShareRecipient, Subject, User, Video } from 'libs/shared/interfaces';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport type SharableRecipient = User | Classroom | ClassroomGroup;\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n getObjectTypeId(type: SharableEntityType): MasterType {\n switch (type) {\n case 'video':\n return MasterType.Video;\n\n case 'playlist':\n return MasterType.Playlist;\n\n case 'subject':\n return MasterType.Subject;\n\n case 'series':\n return MasterType.Series;\n\n case 'interactive':\n return MasterType.Interactive;\n\n case 'clip':\n return MasterType.Clip;\n }\n },\n\n createLink(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n alerts: Alerts;\n password?: string;\n linkExpireDate?: string;\n success?: (shareLink: ShareLink) => void;\n }): void {\n const success = (newShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...newShareLink, objectName: options.entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(options.entityType), {\n actionType: UserAction.Create,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (options.success)\n options.success(newShareLink);\n };\n\n const error = () => {\n options.alerts.error(getPhrase('createLinkError', { name: options.entity.name }));\n };\n\n const data: CreateShareLinkRequest = {\n resourceId: options.entity.id,\n overrideRestrictions: false\n };\n\n if (options.password)\n data.password = options.password;\n\n if (options.linkExpireDate)\n data.linkExpireDate = options.linkExpireDate;\n\n\n Flight.fetch(options.dispatch, ShareRequests.createShareLink(data, success, error));\n },\n\n updateLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n data: EditShareLinkRequest,\n alerts: Alerts,\n onSuccess?: (data?: ShareLink) => void,\n onError?: () => void\n ): void {\n const success = (updatedShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShareLink);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.editShareLink(shareLink, data, success, error));\n },\n\n deleteLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n alerts: Alerts,\n onSuccess?: () => void,\n onDone?: () => void\n ): void {\n const success = () => {\n AnalyticsHelper.logUserAction(\n { ...shareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink\n })\n );\n\n if (onSuccess)\n onSuccess();\n\n alerts.success(getPhrase('deleteSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n alerts.error(getPhrase('deleteError', { name: entity.name, escapeText: true }));\n };\n\n const always = () => {\n if (onDone)\n onDone();\n };\n\n Flight.fetch(dispatch, ShareRequests.deleteShareLink(shareLink, success, error, always));\n },\n\n createOrUpdateDirectShare(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n currentUser: CurrentUser;\n recipients: ShareRecipient[];\n sentDirectShare?: DirectShare;\n message: string;\n onSuccess?: (updatedDirectShare: DirectShare) => void;\n onError?: () => void;\n onDone?: () => void;\n }): void {\n const {\n dispatch, entity, entityType, currentUser, recipients, sentDirectShare, message,\n onSuccess, onError, onDone\n } = options;\n\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n {\n id: entity.id,\n name: entity.name,\n shareCount: recipients.length\n },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.DirectShare,\n eventVersion: EventVersion.V3\n })\n );\n\n recipients.map(recipient => {\n RecentShareHelper.addRecentlySharedTo(currentUser.id, { id: recipient.id });\n });\n };\n\n const createData: CreateDirectShareRequest = {\n objectId: entity.id,\n objectTypeId: ShareViewHelper.getObjectTypeId(entityType),\n recipients,\n message\n };\n\n const updateData: EditDirectShareRequest = {\n recipients,\n message\n };\n\n const request = sentDirectShare\n ? ShareRequests.updateDirectShareRecipients(sentDirectShare.id, updateData, success, onError, onDone)\n : ShareRequests.createDirectShare(createData, success, onError, onDone);\n\n Flight.fetch(dispatch, request);\n },\n\n removeDirectShareRecipient(\n dispatch: Flight.Dispatch,\n recipientId: string,\n entityType: SharableEntityType,\n sentDirectShare?: DirectShare,\n onSuccess?: (updatedDirectShare: DirectShare) => void,\n onError?: () => void\n ): void {\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n { shareCount: 1 },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Unshare\n })\n );\n };\n\n Flight.fetch(\n dispatch,\n ShareRequests.removeDirectShareRecipient(\n sentDirectShare.id,\n recipientId,\n success,\n onError\n )\n );\n },\n\n getDirectShareRecipientsRequest(customerId: string, directShare?: DirectShare): Flight.Request {\n const hasRecipients = !!directShare?.recipients?.length;\n\n return hasRecipients &&\n ShareRequests.getDirectShareRecipientsById(directShare.id, directShare.recipients, customerId);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n\n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n\n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n\n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getImageUrl(sharedResource: SharableEntity): string {\n // Videos and potentially interactives + clips\n if ('thumbnail' in sharedResource && !!sharedResource.thumbnail)\n return sharedResource.thumbnail?.url;\n\n if ('_thumbnail' in sharedResource && !!sharedResource._thumbnail)\n return sharedResource._thumbnail?.url;\n\n // Topics and playlists\n if ('cover' in sharedResource)\n return sharedResource.cover?.url;\n\n // Series\n if ('tallPoster' in sharedResource)\n return sharedResource.tallPoster?.url;\n\n return '';\n },\n\n getShareRecipientsPhrase(selections: BaseObject[]) {\n if (!selections.length)\n return;\n\n let recipients: { [type: string]: BaseObject[] } = {};\n\n if (selections.length === 1) {\n return ArrayHelper.first(selections).name;\n }\n \n selections.forEach(s => {\n let paramKey;\n \n switch (s.typeId) {\n case MasterType.User:\n paramKey = 'users';\n break;\n \n case MasterType.Classroom:\n paramKey = 'classrooms';\n break;\n \n case MasterType.ClassroomGroup:\n paramKey = 'classroomGroups';\n break;\n }\n\n const recipientType = recipients[paramKey] ?? [];\n\n recipientType.push(s);\n\n recipients = {\n ...recipients,\n [paramKey]: ArrayHelper.uniq(recipientType)\n };\n });\n\n const onlyClassroomsSelected = recipients.classrooms &&\n !recipients.classroomGroups &&\n !recipients.users;\n const onlyGroupsSelected = recipients.classroomGroups &&\n !recipients.classrooms &&\n !recipients.users;\n const onlyUsersSelected = recipients.users &&\n !recipients.classrooms &&\n !recipients.classroomGroups;\n \n if (onlyClassroomsSelected)\n return getPhrase('classrooms', { smartCount: recipients.classrooms.length });\n \n if (onlyGroupsSelected)\n return getPhrase('groups', { smartCount: recipients.classroomGroups.length });\n \n if (onlyUsersSelected)\n return getPhrase('users', { smartCount: recipients.users.length });\n \n const mixedSelections = [];\n \n if (recipients.classrooms?.length)\n mixedSelections.push(getPhrase('classrooms', { smartCount: recipients.classrooms.length }));\n \n if (recipients.classroomGroups?.length)\n mixedSelections.push(getPhrase('groups', { smartCount: recipients.classroomGroups.length }));\n \n if (recipients.users?.length)\n mixedSelections.push(getPhrase('users', { smartCount: recipients.users.length }));\n \n const lastSelection = mixedSelections.pop();\n \n return `${mixedSelections.join(', ')} ${getPhrase('and')} ${lastSelection}`;\n }\n};","export enum ShareLinkStatus {\n Expired = 'Expired',\n Active = 'Active'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: VisibleOnSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy.privacy) {\n case 'public':\n return { icon: VisibleOnSvg, text: getPhrase('publicDescription') };\n case 'protected':\n if (privacy.overrideRestrictions)\n return { icon: VisibleOnSvg, text: getPhrase('clickViewOnly') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case 'just_my_customer':\n if (privacy.overrideRestrictions)\n return { icon: LockSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n /**\n * Because we plan to add restricted management later \n * for the time being we treat is the same as private \n */\n case 'restricted':\n case 'private':\n return { icon: LockSvg, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: LockSvg, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: TimerSvg, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: LockSvg, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n }\n};"],"names":["DEFAULT_STORAGE_LIMIT","RecentItemHelper","cacheKey","dataSource","expire","recentItems","ids","options","id","limit","idIndex","omitted","i","getCacheKey","userId","RecentShareHelper","LocalStorageHelper","BaseCollectionIdentifier","collectionPrefix","sort","cursor","params","ErrorHelper","DevError","PlaylistVideoCollectionIdentifier","PlaylistStateUpdateHelper","key","state","updatedState","count","ReorderHelper","items","oldIdx","newIdx","reorderedItems","ArrayHelper","destinationMemberId","reorderRequest","dataPrefix","data","updatedData","ObjectHelper","keys","page","pageSize","nextCursor","nextKey","removeIdx","itemToMove","insertIdx","r","v","itemsToInsert","PlaylistRequests","collectionIdentifier","type","SharedWithStatements","UrlHelper","success","error","shareId","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","CurationStatus","PermissionFilterOption","filter","videoId","always","HttpVerbs","playlistId","videos","invalidationKeys","video","body","acc","VideoHelper","typeId","baseUrl","MasterType","formatData","_a","endpoints","videoCount","SeriesRequests","queryStringObj","sortFilter","VideoSortHelper","k","PublicWithStatement","namespace","getPhrase","LanguageService","ShareViewHelper","newShareLink","AnalyticsHelper","UserAction","EntityType","EventVersion","Flight.fetch","ShareRequests","dispatch","entity","entityType","shareLink","alerts","onSuccess","onError","updatedShareLink","onDone","currentUser","recipients","sentDirectShare","message","updatedDirectShare","ShareDescriptors","recipient","createData","updateData","request","recipientId","customerId","directShare","LocationContext","WorkflowPhase","Flight.useBasicFetch","VideoRequests","ClassificationRequests","InteractiveRequests","ClipRequests","sharedResource","_b","_c","_d","selections","s","paramKey","recipientType","onlyClassroomsSelected","onlyGroupsSelected","onlyUsersSelected","mixedSelections","lastSelection","ShareLinkStatus","ShareLinkHelper","entityTypeId","privacy","hasStudentExp","yearGroups","VisibleOnSvg","LockSvg","linkExpireDate","isPasswordProtected","status","isToday","DateHelper","dayDifference","text","TimerSvg","restriction","RestrictionHelper","rating","maxYearGroup","minAllowedYearGroup","yearGroup"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as o,y as c,j as e,z as D,B as d,G as L,H as R,J as p,K as $,M as b,a as B}from"./app-CQEXKRTo.js";const N=D("h4");N.displayName="DivStyledAsH4";const g=o.forwardRef(({className:s,bsPrefix:a,as:r=N,...n},t)=>(a=c(a,"alert-heading"),e.jsx(r,{ref:t,className:d(s,a),...n})));g.displayName="AlertHeading";const A=o.forwardRef(({className:s,bsPrefix:a,as:r=L,...n},t)=>(a=c(a,"alert-link"),e.jsx(r,{ref:t,className:d(s,a),...n})));A.displayName="AlertLink";const C=o.forwardRef((s,a)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:y,children:w,variant:m="primary",onClose:u,dismissible:h,transition:x=p,...f}=R(s,{show:"onClose"}),l=c(r,"alert"),E=$(H=>{u&&u(!1,H)}),i=x===!0?p:x,j=e.jsxs("div",{role:"alert",...i?void 0:f,ref:a,className:d(y,l,m&&`${l}-${m}`,h&&`${l}-dismissible`),children:[h&&e.jsx(b,{onClick:E,"aria-label":t,variant:k}),w]});return i?e.jsx(i,{unmountOnExit:!0,...f,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:g});function F({error:s}){return B({title:"Dev Error"}),s?e.jsxs("div",{className:"px-3",children:[e.jsx("h1",{children:s.name}),e.jsx(v,{variant:"danger",children:e.jsx("h2",{children:s.message})}),e.jsxs(v,{variant:"warning",children:[e.jsx("h3",{children:"Call stack"}),e.jsx("code",{children:s.stack})]})]}):e.jsx(e.Fragment,{})}export{F as DevErrorView};
2
+ //# sourceMappingURL=Dx4VsESo.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dx4VsESo.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}"],"names":["DivStyledAsH4","divWithClassName","AlertHeading","React.forwardRef","className","bsPrefix","Component","props","ref","useBootstrapPrefix","_jsx","classNames","AlertLink","Anchor","Alert","uncontrolledProps","show","closeLabel","closeVariant","children","variant","onClose","dismissible","transition","Fade","useUncontrolled","prefix","handleClose","useEventCallback","e","Transition","alert","_jsxs","CloseButton","Alert$1","DevErrorView","error","useSetPageMetadata","jsxs","jsx","Fragment"],"mappings":"4GAOA,MAAMA,EAAgBC,EAAiB,IAAI,EAC3CD,EAAc,YAAc,gBAC5B,MAAME,EAA4BC,EAAAA,WAAiB,CAAC,CAClD,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYN,EAChB,GAAGO,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,eAAe,EACnCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDL,EAAa,YAAc,eCf3B,MAAMU,EAAyBT,EAAAA,WAAiB,CAAC,CAC/C,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYO,EAChB,GAAGN,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,YAAY,EAChCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDK,EAAU,YAAc,YCPxB,MAAME,EAAqBX,EAAAA,WAAiB,CAACY,EAAmBP,IAAQ,CACtE,KAAM,CACJ,SAAAH,EACA,KAAAW,EAAO,GACP,WAAAC,EAAa,cACb,aAAAC,EACA,UAAAd,EACA,SAAAe,EACA,QAAAC,EAAU,UACV,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaC,EACb,GAAGjB,CACP,EAAMkB,EAAgBV,EAAmB,CACrC,KAAM,SACV,CAAG,EACKW,EAASjB,EAAmBJ,EAAU,OAAO,EAC7CsB,EAAcC,EAAiBC,GAAK,CACpCR,GACFA,EAAQ,GAAOQ,CAAC,CAEpB,CAAC,EACKC,EAAaP,IAAe,GAAOC,EAAOD,EAC1CQ,EAAqBC,EAAAA,KAAM,MAAO,CACtC,KAAM,QACN,GAAKF,EAAqB,OAARvB,EAClB,IAAKC,EACL,UAAWG,EAAWP,EAAWsB,EAAQN,GAAW,GAAGM,CAAM,IAAIN,CAAO,GAAIE,GAAe,GAAGI,CAAM,cAAc,EAClH,SAAU,CAACJ,GAA4BZ,EAAAA,IAAKuB,EAAa,CACvD,QAASN,EACT,aAAcV,EACd,QAASC,CACf,CAAK,EAAGC,CAAQ,CAChB,CAAG,EACD,OAAKW,EACepB,EAAAA,IAAKoB,EAAY,CACnC,cAAe,GACf,GAAGvB,EACH,IAAK,OACL,GAAIS,EACJ,SAAUe,CACd,CAAG,EAPuBf,EAAOe,EAAQ,IAQzC,CAAC,EACDjB,EAAM,YAAc,QACpB,MAAAoB,EAAe,OAAO,OAAOpB,EAAO,CAClC,KAAMF,EACN,QAASV,CACX,CAAC,ECnDM,SAASiC,EAAa,CAAE,MAAAC,GAAgD,CAG7E,OAFAC,EAAmB,CAAE,MAAO,YAAa,EAEpCD,EAIHE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,WAAM,IAAA,CAAK,EAChBA,EAAAA,IAACzB,GAAM,QAAQ,SACb,eAAC,KAAA,CAAI,SAAAsB,EAAM,QAAQ,CAAA,CACrB,EACAE,EAAAA,KAACxB,EAAA,CAAM,QAAQ,UACb,SAAA,CAAAyB,EAAAA,IAAC,MAAG,SAAA,YAAA,CAAU,EACdA,EAAAA,IAAC,OAAA,CAAM,SAAAH,EAAM,KAAA,CAAM,CAAA,CAAA,CACrB,CAAA,EACF,EAZOG,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CAcb","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,2 @@
1
+ import{r as g,y as j,c7 as N,c8 as v,j as e,B as T,c6 as t}from"./app-CQEXKRTo.js";const n=g.forwardRef(({bsPrefix:s,className:c,as:o="div",...d},p)=>{const x=j(s,"row"),h=N(),u=v(),b=`${x}-cols`,m=[];return h.forEach(r=>{const i=d[r];delete d[r];let l;i!=null&&typeof i=="object"?{cols:l}=i:l=i;const _=r!==u?`-${r}`:"";l!=null&&m.push(`${b}${_}-${l}`)}),e.jsx(o,{ref:p,...d,className:T(c,x,...m)})});n.displayName="Row";const f="_videoTable_14eqw_1",w="_interactiveTable_14eqw_4",$="_userTable_14eqw_7",C="_header_14eqw_10",k="_videoItemContainer_14eqw_16",S="_interactiveItemContainer_14eqw_19",y="_userItemContainer_14eqw_22",q="_heatMapItemContainer_14eqw_25",I="_partialAvatar_14eqw_28",M="_partialNumber_14eqw_33",B="_partialLongText_14eqw_37",H="_partialMediumText_14eqw_41",R="_partialShortText_14eqw_45",E="_partialThumbnail_14eqw_49",V="_partialHeatMap_14eqw_53",a={videoTable:f,interactiveTable:w,userTable:$,header:C,videoItemContainer:k,interactiveItemContainer:S,userItemContainer:y,heatMapItemContainer:q,partialAvatar:I,partialNumber:M,partialLongText:B,partialMediumText:H,partialShortText:R,partialThumbnail:E,partialHeatMap:V},A=e.jsxs(n,{className:"py-3",children:[e.jsx(t,{xs:1,className:"d-flex align-items-center justify-content-center",children:e.jsx("div",{className:`partial-loading-background ${a.partialNumber}`})}),e.jsx(t,{xs:5,className:"d-flex align-items-center",children:e.jsx("div",{className:`partial-loading-background ${a.partialShortText}`})}),e.jsx(t,{xs:2,className:"d-flex align-items-center",children:e.jsx("div",{className:`d-block partial-loading-background mx-4 ${a.partialShortText}`})}),e.jsx(t,{xs:4,className:"d-flex align-items-center",children:e.jsx("div",{className:`d-block partial-loading-background mx-4 ${a.partialShortText}`})})]}),L=e.jsxs(n,{className:"py-3",children:[e.jsx(t,{xs:5,className:"d-flex align-items-center",children:e.jsx("div",{className:`partial-loading-background mx-4 ${a.partialShortText}`})}),e.jsx(t,{xs:2,className:"d-flex align-items-center",children:e.jsx("div",{className:`d-block partial-loading-background mx-4 ${a.partialShortText}`})}),e.jsx(t,{xs:2,className:"d-flex align-items-center",children:e.jsx("div",{className:`d-block partial-loading-background mx-4 ${a.partialShortText}`})}),e.jsx(t,{xs:3,className:"d-flex align-items-center",children:e.jsx("div",{className:`d-block partial-loading-background mx-4 ${a.partialShortText}`})})]}),P=e.jsxs(n,{className:"py-3",children:[e.jsx(t,{xs:2,className:"d-flex",children:e.jsx("div",{className:`partial-loading-background mx-3 ${a.partialShortText}`})}),e.jsx(t,{xs:2,className:"d-flex justify-content-center",children:e.jsx("div",{className:`partial-loading-background mx-2 ${a.partialShortText}`})}),e.jsx(t,{xs:2,className:"d-flex justify-content-center",children:e.jsx("div",{className:`partial-loading-background ${a.partialShortText}`})}),e.jsx(t,{xs:6,className:"d-flex justify-content-between",children:e.jsx("div",{className:`d-block partial-loading-background ${a.heatMapItemContainer} ${a.partialShortText}`})})]});function z(s){switch(s){case"video-views":return{headerComponent:A,tableStyle:a.videoTable};case"interactives":return{headerComponent:L,tableStyle:a.interactiveTable};case"engagement-users":return{headerComponent:P,tableStyle:a.userTable};default:return{headerComponent:e.jsx(e.Fragment,{}),tableStyle:""}}}function U(s){const{headerComponent:c,tableStyle:o}=z(s.variant);return e.jsxs("div",{className:`bg-white rounded ${o} ${s.className??""}`,children:[e.jsx("div",{className:`border-bottom ${a.header} ${s.headerClassName??""}`,children:c}),s.children]})}export{U as P,n as R,a as s};
2
+ //# sourceMappingURL=DyhdHLt7.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DyhdHLt7.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../src/shared/components/partial-loading/PartialTable.tsx"],"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 React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport styles from './partial-loading.module.scss';\n\nconst VideoViewsHeader = (\n <Row className='py-3'>\n <Col xs={1} className='d-flex align-items-center justify-content-center'>\n <div className={`partial-loading-background ${styles.partialNumber}`} />\n </Col>\n <Col xs={5} className='d-flex align-items-center'>\n <div className={`partial-loading-background ${styles.partialShortText}`} />\n </Col>\n <Col xs={2} className='d-flex align-items-center' >\n <div className={`d-block partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n <Col xs={4} className='d-flex align-items-center'>\n <div className={`d-block partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n </Row>\n);\n\nconst InteractivesHeader = (\n <Row className='py-3'>\n <Col xs={5} className='d-flex align-items-center'>\n <div className={`partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n <Col xs={2} className='d-flex align-items-center' >\n <div className={`d-block partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n <Col xs={2} className='d-flex align-items-center'>\n <div className={`d-block partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n <Col xs={3} className='d-flex align-items-center'>\n <div className={`d-block partial-loading-background mx-4 ${styles.partialShortText}`} />\n </Col>\n </Row>\n);\n\nconst EngagementUsersHeader = (\n <Row className='py-3'>\n <Col xs={2} className='d-flex'>\n <div className={`partial-loading-background mx-3 ${styles.partialShortText}`} />\n </Col>\n <Col xs={2} className='d-flex justify-content-center'>\n <div className={`partial-loading-background mx-2 ${styles.partialShortText}`} />\n </Col>\n <Col xs={2} className='d-flex justify-content-center'>\n <div className={`partial-loading-background ${styles.partialShortText}`} />\n </Col>\n <Col xs={6} className='d-flex justify-content-between'>\n <div className={`d-block partial-loading-background ${styles.heatMapItemContainer} ${styles.partialShortText}`} />\n </Col>\n </Row>\n);\n\nfunction getTableVariant(type: TableVariant) {\n switch (type) {\n case 'video-views':\n return {\n headerComponent: VideoViewsHeader,\n tableStyle: styles.videoTable\n };\n\n case 'interactives':\n return {\n headerComponent: InteractivesHeader,\n tableStyle: styles.interactiveTable\n };\n\n case 'engagement-users':\n return {\n headerComponent: EngagementUsersHeader,\n tableStyle: styles.userTable\n };\n\n default:\n return {\n headerComponent: <></>,\n tableStyle: ''\n };\n }\n}\n\nexport type TableVariant = 'video-views' | 'interactives' | 'engagement-users';\n\ninterface PartialTableProps {\n variant?: TableVariant;\n className?: string;\n headerClassName?: string;\n}\n\nexport function PartialTable(props: React.PropsWithChildren<PartialTableProps>): JSX.Element {\n const { headerComponent, tableStyle } = getTableVariant(props.variant);\n\n return (\n <div className={`bg-white rounded ${tableStyle} ${props.className ?? ''}`}>\n <div className={`border-bottom ${styles.header} ${props.headerClassName ?? ''}`}>\n {headerComponent}\n </div>\n {props.children}\n </div>\n );\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","VideoViewsHeader","jsxs","jsx","Col","styles","InteractivesHeader","EngagementUsersHeader","getTableVariant","type","Fragment","PartialTable","headerComponent","tableStyle"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{cr as E,r as p}from"./app-CQEXKRTo.js";var P=(function(){var o=function(r,e){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a])},o(r,e)};return function(r,e){o(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}})(),c="html",d="svg",g="http://www.w3.org/2000/svg",_=function(o,r){if(r===c)return o instanceof HTMLElement;if(r===d)return o instanceof SVGElement;throw new Error('Unrecognized element type "'+r+'" for validateElementType.')},v=function(o,r){var e={},t,n,a;if(o===c)a=document.createElement("div");else if(o===d)a=document.createElementNS(g,"g");else throw new Error('Invalid element type "'+o+'" for createPortalNode: must be "html" or "svg".');if(r&&typeof r=="object")for(var s=0,h=Object.entries(r.attributes);s<h.length;s++){var f=h[s],m=f[0],N=f[1];a.setAttribute(m,N)}var u={element:a,elementType:o,setPortalProps:function(i){e=i},getInitialPortalProps:function(){return e},mount:function(i,l){if(l!==n){if(u.unmount(),i!==t&&!_(i,o))throw new Error('Invalid element type for portal: "'+o+'" portalNodes must be used with '+o+" elements, but OutPortal is within <"+i.tagName+">.");i.replaceChild(u.element,l),t=i,n=l}},unmount:function(i){i&&i!==n||t&&n&&(t.replaceChild(n,u.element),t=void 0,n=void 0)}};return u},O=(function(o){P(r,o);function r(e){var t=o.call(this,e)||this;return t.addPropsChannel=function(){Object.assign(t.props.node,{setPortalProps:function(n){t.setState({nodeProps:n})}})},t.state={nodeProps:t.props.node.getInitialPortalProps()},t}return r.prototype.componentDidMount=function(){this.addPropsChannel()},r.prototype.componentDidUpdate=function(){this.addPropsChannel()},r.prototype.render=function(){var e=this,t=this.props,n=t.children,a=t.node;return E.createPortal(p.Children.map(n,function(s){return p.isValidElement(s)?p.cloneElement(s,e.state.nodeProps):s}),a.element)},r})(p.PureComponent),C=(function(o){P(r,o);function r(e){var t=o.call(this,e)||this;return t.placeholderNode=p.createRef(),t.passPropsThroughPortal(),t}return r.prototype.passPropsThroughPortal=function(){var e=Object.assign({},this.props,{node:void 0});this.props.node.setPortalProps(e)},r.prototype.componentDidMount=function(){var e=this.props.node;this.currentPortalNode=e;var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},r.prototype.componentDidUpdate=function(){var e=this.props.node;this.currentPortalNode&&e!==this.currentPortalNode&&(this.currentPortalNode.unmount(this.placeholderNode.current),this.currentPortalNode.setPortalProps({}),this.currentPortalNode=e);var t=this.placeholderNode.current,n=t.parentNode;e.mount(n,t),this.passPropsThroughPortal()},r.prototype.componentWillUnmount=function(){var e=this.props.node;e.unmount(this.placeholderNode.current),e.setPortalProps({})},r.prototype.render=function(){return p.createElement("div",{ref:this.placeholderNode})},r})(p.PureComponent),w=v.bind(null,c);v.bind(null,d);export{O as I,C as O,w as c};
2
+ //# sourceMappingURL=EpoqEdEt.chunk.js.map