@clickview/reports 0.69.1-dev.1 → 0.70.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/bundles.json +3 -2
  2. package/dist/css/1103-reports-d3d5cc00db.chunk.css +31 -0
  3. package/dist/css/1456-reports-4a5871a275.chunk.css +9 -0
  4. package/dist/css/1648-reports-012456ba48.chunk.css +2 -0
  5. package/dist/css/209-reports-c33663a53e.chunk.css +11 -0
  6. package/dist/css/2150-reports-84ec0e9770.chunk.css +4 -0
  7. package/dist/css/2217-reports-74dec0a3fe.chunk.css +32 -0
  8. package/dist/css/2997-reports-e08318f14b.chunk.css +9 -0
  9. package/dist/css/2999-reports-f190450b10.chunk.css +60 -0
  10. package/dist/css/4582-reports-d3d5cc00db.chunk.css +31 -0
  11. package/dist/css/5304-reports-22c2d8d635.chunk.css +9 -0
  12. package/dist/css/6007-reports-5ba77c55a3.chunk.css +8 -0
  13. package/dist/css/6031-reports-d558076846.chunk.css +6 -0
  14. package/dist/css/6356-reports-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/6811-reports-baf2e97e71.chunk.css +35 -0
  16. package/dist/css/7723-reports-8c6d3c414b.chunk.css +4 -0
  17. package/dist/css/7747-reports-2d9e191b5a.chunk.css +12 -0
  18. package/dist/css/8087-reports-cfe23ba648.chunk.css +10 -0
  19. package/dist/css/8294-reports-c797263ac2.chunk.css +1 -0
  20. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +29 -0
  21. package/dist/css/8450-reports-06493dfde5.chunk.css +9 -0
  22. package/dist/css/8622-reports-9e8970cc7f.chunk.css +8 -0
  23. package/dist/css/8839-reports-8e46644943.chunk.css +1 -0
  24. package/dist/css/8989-reports-92b4f1dde8.chunk.css +8 -0
  25. package/dist/css/9059-reports-a2ac630ebc.chunk.css +35 -0
  26. package/dist/css/9285-reports-5b9af8380f.chunk.css +13 -0
  27. package/dist/css/9661-reports-7435e94a85.chunk.css +4 -0
  28. package/dist/css/9822-reports-a1db1900c7.chunk.css +8 -0
  29. package/dist/css/9949-reports-f22fa2b407.chunk.css +15 -0
  30. package/dist/css/reports-app-b4c4ec5632.css +32 -0
  31. package/dist/languages/en.json +1 -0
  32. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +1 -0
  33. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +1 -0
  34. package/dist/scripts/1456-019d93e620-reports.chunk.js +1 -0
  35. package/dist/scripts/1648-e892604f5a-reports.chunk.js +1 -0
  36. package/dist/scripts/1934-ca8497c768-reports.chunk.js +2 -0
  37. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +9 -0
  38. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +1 -0
  39. package/dist/scripts/209-79eb8be706-reports.chunk.js +1 -0
  40. package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +1 -0
  41. package/dist/scripts/2217-15fa35197a-reports.chunk.js +1 -0
  42. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +1 -0
  43. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +1 -0
  44. package/dist/scripts/2997-62d81c3442-reports.chunk.js +1 -0
  45. package/dist/scripts/2999-c1890ca868-reports.chunk.js +2 -0
  46. package/dist/scripts/2999-c1890ca868-reports.chunk.js.LICENSE.txt +1 -0
  47. package/dist/scripts/312-8b006e92ff-reports.chunk.js +1 -0
  48. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +1 -0
  49. package/dist/scripts/4372-26474a3318-reports.chunk.js +1 -0
  50. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +1 -0
  51. package/dist/scripts/4582-230f130f41-reports.chunk.js +1 -0
  52. package/dist/scripts/4752-db4247883d-reports.chunk.js +2 -0
  53. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +118 -0
  54. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +1 -0
  55. package/dist/scripts/5051-72c53737e2-reports.chunk.js +1 -0
  56. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +1 -0
  57. package/dist/scripts/5173-cce3b37672-reports.chunk.js +1 -0
  58. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +1 -0
  59. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +1 -0
  60. package/dist/scripts/5802-2125536755-reports.chunk.js +1 -0
  61. package/dist/scripts/6007-673706aa31-reports.chunk.js +1 -0
  62. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +1 -0
  63. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +1 -0
  64. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +2 -0
  65. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +1 -0
  66. package/dist/scripts/6198-189ddde870-reports.chunk.js +1 -0
  67. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +1 -0
  68. package/dist/scripts/645-e8b19128e5-reports.chunk.js +1 -0
  69. package/dist/scripts/6545-f07bcd318a-reports.chunk.js +1 -0
  70. package/dist/scripts/6811-40ded4c089-reports.chunk.js +1 -0
  71. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +1 -0
  72. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +1 -0
  73. package/dist/scripts/7709-82750ee317-reports.chunk.js +1 -0
  74. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +1 -0
  75. package/dist/scripts/7747-d34db3ff10-reports.chunk.js +2 -0
  76. package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +1 -0
  77. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +1 -0
  78. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +1 -0
  79. package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +1 -0
  80. package/dist/scripts/8418-9f96caf039-reports.chunk.js +1 -0
  81. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +1 -0
  82. package/dist/scripts/8591-4811082ab0-reports.chunk.js +1 -0
  83. package/dist/scripts/8622-ee045574e2-reports.chunk.js +1 -0
  84. package/dist/scripts/8839-711793a97f-reports.chunk.js +1 -0
  85. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +1 -0
  86. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +1 -0
  87. package/dist/scripts/9162-7ffc692736-reports.chunk.js +1 -0
  88. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +1 -0
  89. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +1 -0
  90. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +1 -0
  91. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +1 -0
  92. package/dist/scripts/9822-621fac26e6-reports.chunk.js +1 -0
  93. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +1 -0
  94. package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +1 -0
  95. package/dist/scripts/bundle-44f8e893eb.min.js +2 -0
  96. package/dist/scripts/bundle-44f8e893eb.min.js.LICENSE.txt +108 -0
  97. package/dist/scripts/polyfills-3db3f009d4.min.js +1 -0
  98. package/package.json +3 -5
  99. package/typings/utils/imports.d.ts +1 -1
  100. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  101. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  102. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  103. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  104. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  105. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  106. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  107. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  108. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  109. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  110. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  111. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  112. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  113. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  114. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  115. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  116. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  117. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  118. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  119. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  120. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  121. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  122. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  123. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  124. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  125. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  126. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  127. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  128. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  129. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  130. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  131. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  132. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  133. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  134. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  135. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  136. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  137. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  138. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  139. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  140. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  141. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  142. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  143. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  144. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  145. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  146. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  147. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  148. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  149. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  150. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  151. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  152. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  153. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  154. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  155. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  156. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  157. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  158. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  159. package/dist/css/1VpVng8x.chunk.css +0 -1
  160. package/dist/css/BBwBgFf_.chunk.css +0 -1
  161. package/dist/css/BDijM1kt.chunk.css +0 -1
  162. package/dist/css/BMPwvOki.chunk.css +0 -1
  163. package/dist/css/BNt45Kgy.chunk.css +0 -1
  164. package/dist/css/BSGhUWzl.chunk.css +0 -1
  165. package/dist/css/BZ3_uhDP.chunk.css +0 -1
  166. package/dist/css/BaadNO4A.chunk.css +0 -1
  167. package/dist/css/BdUNjJqp.chunk.css +0 -1
  168. package/dist/css/BdeI0FAV.chunk.css +0 -1
  169. package/dist/css/BxcMGr8Y.chunk.css +0 -1
  170. package/dist/css/ByuL_xKJ.chunk.css +0 -1
  171. package/dist/css/C-A0Pj_7.chunk.css +0 -1
  172. package/dist/css/C4jMfPWU.chunk.css +0 -1
  173. package/dist/css/C7XoyEPr.chunk.css +0 -1
  174. package/dist/css/C8sxda3R.chunk.css +0 -1
  175. package/dist/css/CD1qrI1T.chunk.css +0 -1
  176. package/dist/css/CFO--d_R.chunk.css +0 -1
  177. package/dist/css/CX9nw8t8.chunk.css +0 -1
  178. package/dist/css/C_qGRdC2.chunk.css +0 -1
  179. package/dist/css/CdC6ugQR.chunk.css +0 -1
  180. package/dist/css/ClRRGXPb.chunk.css +0 -1
  181. package/dist/css/Cr1bwtZG.chunk.css +0 -1
  182. package/dist/css/DBlPz5Fw.chunk.css +0 -1
  183. package/dist/css/DDnpOnVB.chunk.css +0 -1
  184. package/dist/css/DFZQCLLg.chunk.css +0 -1
  185. package/dist/css/DJwAbl6l.chunk.css +0 -1
  186. package/dist/css/DWjg_0sz.chunk.css +0 -1
  187. package/dist/css/DYV9jjVn.chunk.css +0 -1
  188. package/dist/css/Dgeh4AqU.chunk.css +0 -9
  189. package/dist/css/DlOtoSz0.chunk.css +0 -1
  190. package/dist/css/DlxOgKUu.chunk.css +0 -1
  191. package/dist/css/DwgaDUzz.chunk.css +0 -1
  192. package/dist/css/FPQ_LmXH.chunk.css +0 -1
  193. package/dist/css/H09rC9gw.chunk.css +0 -1
  194. package/dist/css/LAFr2dPT.chunk.css +0 -1
  195. package/dist/css/Pg1TlYG6.chunk.css +0 -1
  196. package/dist/css/PsQn3-kb.chunk.css +0 -1
  197. package/dist/css/alkEuPrr.chunk.css +0 -1
  198. package/dist/css/k4DgCj_g.chunk.css +0 -1
  199. package/dist/en.json +0 -1
  200. package/dist/scripts/5JDMPiCK.chunk.js +0 -2
  201. package/dist/scripts/5JDMPiCK.chunk.js.map +0 -1
  202. package/dist/scripts/5O9SdVRZ.chunk.js +0 -2
  203. package/dist/scripts/5O9SdVRZ.chunk.js.map +0 -1
  204. package/dist/scripts/B8i2s45X.chunk.js +0 -2
  205. package/dist/scripts/B8i2s45X.chunk.js.map +0 -1
  206. package/dist/scripts/BBOfq9my.chunk.js +0 -2
  207. package/dist/scripts/BBOfq9my.chunk.js.map +0 -1
  208. package/dist/scripts/BE7zUNFh.chunk.js +0 -3
  209. package/dist/scripts/BE7zUNFh.chunk.js.map +0 -1
  210. package/dist/scripts/BIbP_ulq.chunk.js +0 -380
  211. package/dist/scripts/BIbP_ulq.chunk.js.map +0 -1
  212. package/dist/scripts/BJe4D9vd.chunk.js +0 -2
  213. package/dist/scripts/BJe4D9vd.chunk.js.map +0 -1
  214. package/dist/scripts/BKx5S6xk.chunk.js +0 -2
  215. package/dist/scripts/BKx5S6xk.chunk.js.map +0 -1
  216. package/dist/scripts/BMba67Uf.chunk.js +0 -2
  217. package/dist/scripts/BMba67Uf.chunk.js.map +0 -1
  218. package/dist/scripts/BUM8Ub4p.chunk.js +0 -2
  219. package/dist/scripts/BUM8Ub4p.chunk.js.map +0 -1
  220. package/dist/scripts/BW-tzVdx.chunk.js +0 -2
  221. package/dist/scripts/BW-tzVdx.chunk.js.map +0 -1
  222. package/dist/scripts/B_1LOG5E.chunk.js +0 -2
  223. package/dist/scripts/B_1LOG5E.chunk.js.map +0 -1
  224. package/dist/scripts/BaHk6QZB.chunk.js +0 -2
  225. package/dist/scripts/BaHk6QZB.chunk.js.map +0 -1
  226. package/dist/scripts/Bbpuxobz.chunk.js +0 -2
  227. package/dist/scripts/Bbpuxobz.chunk.js.map +0 -1
  228. package/dist/scripts/BfG3wCTD.chunk.js +0 -2
  229. package/dist/scripts/BfG3wCTD.chunk.js.map +0 -1
  230. package/dist/scripts/BfkzHBdb.chunk.js +0 -2
  231. package/dist/scripts/BfkzHBdb.chunk.js.map +0 -1
  232. package/dist/scripts/BiDX0yuI.chunk.js +0 -2
  233. package/dist/scripts/BiDX0yuI.chunk.js.map +0 -1
  234. package/dist/scripts/BkcNwg7K.chunk.js +0 -2
  235. package/dist/scripts/BkcNwg7K.chunk.js.map +0 -1
  236. package/dist/scripts/BlAGsOOw.chunk.js +0 -2
  237. package/dist/scripts/BlAGsOOw.chunk.js.map +0 -1
  238. package/dist/scripts/BmScDBcl.chunk.js +0 -2
  239. package/dist/scripts/BmScDBcl.chunk.js.map +0 -1
  240. package/dist/scripts/BnqNywwJ.chunk.js +0 -2
  241. package/dist/scripts/BnqNywwJ.chunk.js.map +0 -1
  242. package/dist/scripts/BrLXFCMV.chunk.js +0 -2
  243. package/dist/scripts/BrLXFCMV.chunk.js.map +0 -1
  244. package/dist/scripts/BsFynggy.chunk.js +0 -2
  245. package/dist/scripts/BsFynggy.chunk.js.map +0 -1
  246. package/dist/scripts/Bt3gUzzG.chunk.js +0 -2
  247. package/dist/scripts/Bt3gUzzG.chunk.js.map +0 -1
  248. package/dist/scripts/BuHHZnEg.chunk.js +0 -2
  249. package/dist/scripts/BuHHZnEg.chunk.js.map +0 -1
  250. package/dist/scripts/ByllnMKt.chunk.js +0 -2
  251. package/dist/scripts/ByllnMKt.chunk.js.map +0 -1
  252. package/dist/scripts/BzBFC5UE.chunk.js +0 -2
  253. package/dist/scripts/BzBFC5UE.chunk.js.map +0 -1
  254. package/dist/scripts/C4382UCA.chunk.js +0 -2
  255. package/dist/scripts/C4382UCA.chunk.js.map +0 -1
  256. package/dist/scripts/C6H2bU7H.chunk.js +0 -2
  257. package/dist/scripts/C6H2bU7H.chunk.js.map +0 -1
  258. package/dist/scripts/C6eAAaNL.chunk.js +0 -2
  259. package/dist/scripts/C6eAAaNL.chunk.js.map +0 -1
  260. package/dist/scripts/CAh5UtFh.chunk.js +0 -2
  261. package/dist/scripts/CAh5UtFh.chunk.js.map +0 -1
  262. package/dist/scripts/CFIWZ5KT.chunk.js +0 -2
  263. package/dist/scripts/CFIWZ5KT.chunk.js.map +0 -1
  264. package/dist/scripts/CKLfLzhr.chunk.js +0 -34
  265. package/dist/scripts/CKLfLzhr.chunk.js.map +0 -1
  266. package/dist/scripts/COgPEQMR.chunk.js +0 -2
  267. package/dist/scripts/COgPEQMR.chunk.js.map +0 -1
  268. package/dist/scripts/CRWOsqvB.chunk.js +0 -2
  269. package/dist/scripts/CRWOsqvB.chunk.js.map +0 -1
  270. package/dist/scripts/CU-I5G45.chunk.js +0 -2
  271. package/dist/scripts/CU-I5G45.chunk.js.map +0 -1
  272. package/dist/scripts/CV5ioe9U.chunk.js +0 -2
  273. package/dist/scripts/CV5ioe9U.chunk.js.map +0 -1
  274. package/dist/scripts/CW7x8M-z.chunk.js +0 -2
  275. package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
  276. package/dist/scripts/CX5q-0jT.chunk.js +0 -2
  277. package/dist/scripts/CX5q-0jT.chunk.js.map +0 -1
  278. package/dist/scripts/CXK1uNgx.chunk.js +0 -2
  279. package/dist/scripts/CXK1uNgx.chunk.js.map +0 -1
  280. package/dist/scripts/CXhesQTd.chunk.js +0 -2
  281. package/dist/scripts/CXhesQTd.chunk.js.map +0 -1
  282. package/dist/scripts/CaiGBx50.chunk.js +0 -2
  283. package/dist/scripts/CaiGBx50.chunk.js.map +0 -1
  284. package/dist/scripts/CbmUUNB4.chunk.js +0 -2
  285. package/dist/scripts/CbmUUNB4.chunk.js.map +0 -1
  286. package/dist/scripts/CdoC9Mtd.chunk.js +0 -2
  287. package/dist/scripts/CdoC9Mtd.chunk.js.map +0 -1
  288. package/dist/scripts/CdzMtbgC.chunk.js +0 -2
  289. package/dist/scripts/CdzMtbgC.chunk.js.map +0 -1
  290. package/dist/scripts/Cl51qIgL.chunk.js +0 -2
  291. package/dist/scripts/Cl51qIgL.chunk.js.map +0 -1
  292. package/dist/scripts/ClLzLF-_.chunk.js +0 -2
  293. package/dist/scripts/ClLzLF-_.chunk.js.map +0 -1
  294. package/dist/scripts/ClcYw2ra.chunk.js +0 -42
  295. package/dist/scripts/ClcYw2ra.chunk.js.map +0 -1
  296. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  297. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  298. package/dist/scripts/CpwEUwsc.chunk.js +0 -2
  299. package/dist/scripts/CpwEUwsc.chunk.js.map +0 -1
  300. package/dist/scripts/CqSaPgvV.chunk.js +0 -2
  301. package/dist/scripts/CqSaPgvV.chunk.js.map +0 -1
  302. package/dist/scripts/CqyCLTzN.chunk.js +0 -2
  303. package/dist/scripts/CqyCLTzN.chunk.js.map +0 -1
  304. package/dist/scripts/CrlegiVC.chunk.js +0 -2
  305. package/dist/scripts/CrlegiVC.chunk.js.map +0 -1
  306. package/dist/scripts/CsD4Xb6n.chunk.js +0 -2
  307. package/dist/scripts/CsD4Xb6n.chunk.js.map +0 -1
  308. package/dist/scripts/Ct187YvN.chunk.js +0 -2
  309. package/dist/scripts/Ct187YvN.chunk.js.map +0 -1
  310. package/dist/scripts/CwyVC768.chunk.js +0 -2
  311. package/dist/scripts/CwyVC768.chunk.js.map +0 -1
  312. package/dist/scripts/Cy4L5XsI.chunk.js +0 -2
  313. package/dist/scripts/Cy4L5XsI.chunk.js.map +0 -1
  314. package/dist/scripts/CzF-hI_x.chunk.js +0 -2
  315. package/dist/scripts/CzF-hI_x.chunk.js.map +0 -1
  316. package/dist/scripts/D1U_fPVs.chunk.js +0 -2
  317. package/dist/scripts/D1U_fPVs.chunk.js.map +0 -1
  318. package/dist/scripts/D9POXla0.chunk.js +0 -2
  319. package/dist/scripts/D9POXla0.chunk.js.map +0 -1
  320. package/dist/scripts/DAocQXXC.chunk.js +0 -2
  321. package/dist/scripts/DAocQXXC.chunk.js.map +0 -1
  322. package/dist/scripts/DD-2boW1.chunk.js +0 -2
  323. package/dist/scripts/DD-2boW1.chunk.js.map +0 -1
  324. package/dist/scripts/DFhb3ZfO.chunk.js +0 -2
  325. package/dist/scripts/DFhb3ZfO.chunk.js.map +0 -1
  326. package/dist/scripts/DFp9UBZB.chunk.js +0 -4
  327. package/dist/scripts/DFp9UBZB.chunk.js.map +0 -1
  328. package/dist/scripts/DHqmPVfK.chunk.js +0 -2
  329. package/dist/scripts/DHqmPVfK.chunk.js.map +0 -1
  330. package/dist/scripts/DJLuyZJi.chunk.js +0 -2
  331. package/dist/scripts/DJLuyZJi.chunk.js.map +0 -1
  332. package/dist/scripts/DK7va7iQ.chunk.js +0 -2
  333. package/dist/scripts/DK7va7iQ.chunk.js.map +0 -1
  334. package/dist/scripts/DMoPMSgN.chunk.js +0 -2
  335. package/dist/scripts/DMoPMSgN.chunk.js.map +0 -1
  336. package/dist/scripts/DNTR3iW5.chunk.js +0 -2
  337. package/dist/scripts/DNTR3iW5.chunk.js.map +0 -1
  338. package/dist/scripts/DNt9Tv5W.chunk.js +0 -2
  339. package/dist/scripts/DNt9Tv5W.chunk.js.map +0 -1
  340. package/dist/scripts/DQtbfeRV.chunk.js +0 -2
  341. package/dist/scripts/DQtbfeRV.chunk.js.map +0 -1
  342. package/dist/scripts/DRQ39FRr.chunk.js +0 -2
  343. package/dist/scripts/DRQ39FRr.chunk.js.map +0 -1
  344. package/dist/scripts/DTFFRoLz.chunk.js +0 -2
  345. package/dist/scripts/DTFFRoLz.chunk.js.map +0 -1
  346. package/dist/scripts/DU5sOcpt.chunk.js +0 -3
  347. package/dist/scripts/DU5sOcpt.chunk.js.map +0 -1
  348. package/dist/scripts/DWv8V3Lc.chunk.js +0 -2
  349. package/dist/scripts/DWv8V3Lc.chunk.js.map +0 -1
  350. package/dist/scripts/DYFT7QHy.chunk.js +0 -2
  351. package/dist/scripts/DYFT7QHy.chunk.js.map +0 -1
  352. package/dist/scripts/DZAYXeaL.chunk.js +0 -2
  353. package/dist/scripts/DZAYXeaL.chunk.js.map +0 -1
  354. package/dist/scripts/D_Erj5Yn.chunk.js +0 -10
  355. package/dist/scripts/D_Erj5Yn.chunk.js.map +0 -1
  356. package/dist/scripts/DeY3SuCM.chunk.js +0 -2
  357. package/dist/scripts/DeY3SuCM.chunk.js.map +0 -1
  358. package/dist/scripts/DecstRlc.chunk.js +0 -8
  359. package/dist/scripts/DecstRlc.chunk.js.map +0 -1
  360. package/dist/scripts/Df8zbYVK.chunk.js +0 -10
  361. package/dist/scripts/Df8zbYVK.chunk.js.map +0 -1
  362. package/dist/scripts/DgHfAOys.chunk.js +0 -2
  363. package/dist/scripts/DgHfAOys.chunk.js.map +0 -1
  364. package/dist/scripts/DgWHvURU.chunk.js +0 -2
  365. package/dist/scripts/DgWHvURU.chunk.js.map +0 -1
  366. package/dist/scripts/DmGrKXgL.chunk.js +0 -2
  367. package/dist/scripts/DmGrKXgL.chunk.js.map +0 -1
  368. package/dist/scripts/Dp_vnjo0.chunk.js +0 -3
  369. package/dist/scripts/Dp_vnjo0.chunk.js.map +0 -1
  370. package/dist/scripts/DuNeLCIS.chunk.js +0 -15
  371. package/dist/scripts/DuNeLCIS.chunk.js.map +0 -1
  372. package/dist/scripts/DxJzyDBL.chunk.js +0 -2
  373. package/dist/scripts/DxJzyDBL.chunk.js.map +0 -1
  374. package/dist/scripts/DxUueJN7.chunk.js +0 -2
  375. package/dist/scripts/DxUueJN7.chunk.js.map +0 -1
  376. package/dist/scripts/DykFRaNZ.chunk.js +0 -4
  377. package/dist/scripts/DykFRaNZ.chunk.js.map +0 -1
  378. package/dist/scripts/Fd0gT6QK.chunk.js +0 -2
  379. package/dist/scripts/Fd0gT6QK.chunk.js.map +0 -1
  380. package/dist/scripts/MaYDtnoS.chunk.js +0 -2
  381. package/dist/scripts/MaYDtnoS.chunk.js.map +0 -1
  382. package/dist/scripts/T4Chmiqz.chunk.js +0 -2
  383. package/dist/scripts/T4Chmiqz.chunk.js.map +0 -1
  384. package/dist/scripts/UWjf2h5X.chunk.js +0 -2
  385. package/dist/scripts/UWjf2h5X.chunk.js.map +0 -1
  386. package/dist/scripts/VSmYRJOj.chunk.js +0 -2
  387. package/dist/scripts/VSmYRJOj.chunk.js.map +0 -1
  388. package/dist/scripts/W5zJjbqu.chunk.js +0 -2
  389. package/dist/scripts/W5zJjbqu.chunk.js.map +0 -1
  390. package/dist/scripts/YDhSgJI6.chunk.js +0 -2
  391. package/dist/scripts/YDhSgJI6.chunk.js.map +0 -1
  392. package/dist/scripts/Yi67NERS.chunk.js +0 -2
  393. package/dist/scripts/Yi67NERS.chunk.js.map +0 -1
  394. package/dist/scripts/app-BqRx5tK8.js +0 -228
  395. package/dist/scripts/app-BqRx5tK8.js.map +0 -1
  396. package/dist/scripts/cRQEJA0-.chunk.js +0 -2
  397. package/dist/scripts/cRQEJA0-.chunk.js.map +0 -1
  398. package/dist/scripts/g3bqr4mt.chunk.js +0 -6
  399. package/dist/scripts/g3bqr4mt.chunk.js.map +0 -1
  400. package/dist/scripts/h4z9gHMh.chunk.js +0 -2
  401. package/dist/scripts/h4z9gHMh.chunk.js.map +0 -1
  402. package/dist/scripts/kGI4LAzn.chunk.js +0 -6
  403. package/dist/scripts/kGI4LAzn.chunk.js.map +0 -1
  404. package/dist/scripts/kt1K5Xlc.chunk.js +0 -2
  405. package/dist/scripts/kt1K5Xlc.chunk.js.map +0 -1
  406. package/dist/scripts/mdJqhxeb.chunk.js +0 -2
  407. package/dist/scripts/mdJqhxeb.chunk.js.map +0 -1
  408. package/dist/scripts/sFV5nxD4.chunk.js +0 -2
  409. package/dist/scripts/sFV5nxD4.chunk.js.map +0 -1
  410. package/dist/scripts/tCFcWStO.chunk.js +0 -2
  411. package/dist/scripts/tCFcWStO.chunk.js.map +0 -1
  412. package/dist/scripts/wND_WD0i.chunk.js +0 -2
  413. package/dist/scripts/wND_WD0i.chunk.js.map +0 -1
  414. package/dist/scripts/xkqdG021.chunk.js +0 -2
  415. package/dist/scripts/xkqdG021.chunk.js.map +0 -1
  416. package/dist/scripts/zaMwD-xl.chunk.js +0 -3
  417. package/dist/scripts/zaMwD-xl.chunk.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{j as e,O as o,bF as j,L as m,e as g,u as f,T as y,a as T}from"./app-BqRx5tK8.js";import{T as d}from"./D1U_fPVs.chunk.js";import{u as S,b as N}from"./BlAGsOOw.chunk.js";import{u as _}from"./C6H2bU7H.chunk.js";import{S as E,a as L}from"./DgHfAOys.chunk.js";import{T as l}from"./tCFcWStO.chunk.js";import{C as R,V as b}from"./C4382UCA.chunk.js";import{C as n}from"./Dp_vnjo0.chunk.js";import{V as I}from"./BzBFC5UE.chunk.js";import{S as O}from"./mdJqhxeb.chunk.js";import"./sFV5nxD4.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./DHqmPVfK.chunk.js";import"./CbmUUNB4.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";const P="_image_1a110_1",B={image:P},$="reportsShared.totalViewsByContentCardEmptyState",p=m.encloseNamespace($);function A(){return e.jsxs(o,{className:"flex-grow-1 justify-content-center",children:[e.jsx(o.Image,{src:j.EmptyStates.Shared.PuzzleGroup,className:B.image}),e.jsx(o.Heading,{className:"h6",children:p("heading")}),e.jsx(o.Info,{className:"w-100",children:p("description")})]})}const h="reportsShared.videoViewsByContentCard",c=m.encloseNamespace(h);function F(){const x=g(),C=f(I.aggregation("content_type",x));function V(a){switch(a){case"ClickView content":return n.YELLOW;case"TV content":return n.PURPLE;case"User generated content":return n.GREEN}}function w(a){switch(a){case"ClickView content":return c("clickview");case"TV content":return c("tv");case"User generated content":return c("userGenerated")}}function v(a){return a?a.filter(t=>t.name==="ClickView content"||t.name==="TV content"||t.name==="User generated content").map(t=>({name:w(t.name),y:t.count,color:V(t.name)})):null}const r=v(C.data);return e.jsx("div",{className:"d-flex flex-column h-100 bg-white rounded p-3",children:r?e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"h6 mb-3",children:e.jsx(y,{namespace:h,phrase:"videoViews"})}),r.length?e.jsx(R,{data:r}):e.jsx(A,{})]}):e.jsx("div",{className:"partial-loading-background w-25",children:" "})})}const G="_column1_1s749_1",U="_column2_1s749_4",k="_videoViewsCard_1s749_7",s={column1:G,column2:U,videoViewsCard:k},H="videos.schoolVideoOverview",i=m.encloseNamespace(H),u=50;function pe(){return T({title:i("videos")}),_(i("videos")),S(N()),e.jsxs("div",{children:[e.jsx(O,{}),e.jsxs("div",{className:"d-flex gap-3",children:[e.jsxs("div",{className:`d-flex flex-column gap-3 ${s.column1}`,children:[e.jsx("div",{className:s.videoViewsCard,children:e.jsx(E,{type:"year_group"})}),e.jsx("div",{className:s.videoViewsCard,children:e.jsx(b,{})}),e.jsx("div",{className:s.videoViewsCard,children:e.jsx(F,{})})]}),e.jsxs("div",{className:`d-flex flex-column gap-3 ${s.column2}`,children:[e.jsx("div",{className:s.videoViewsCard,children:e.jsx(L,{type:"user_type"})}),e.jsx("div",{className:s.videoViewsCard,children:e.jsx(l,{type:d.RootTopic,heading:i("totalViewsSubject"),emptyStateText:i("emptySubjects"),limit:u})}),e.jsx("div",{className:s.videoViewsCard,children:e.jsx(l,{type:d.ChildTopic,heading:i("totalViewsTopic"),emptyStateText:i("emptyTopics"),limit:u})})]})]})]})}export{pe as SchoolVideoOverviewView};
2
- //# sourceMappingURL=BJe4D9vd.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BJe4D9vd.chunk.js","sources":["../../src/shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard.tsx","../../src/apps/videos/views/school-video-overview/SchoolVideoOverviewView.tsx"],"sourcesContent":["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 './total-views-by-content-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByContentCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByContentCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.PuzzleGroup}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { CHART_COLOUR } from 'shared/constants/ChartStyles';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { TotalViewsByContentCardEmptyState } from 'shared/views/overview-cards/video-views-by-content-card/empty-state/TotalViewsByContentCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByContentCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum ContentType {\n ClickView = 'ClickView content',\n TV = 'TV content',\n UserGenerated = 'User generated content'\n}\n\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByContentCardView() {\n const requestFilter = useGetRequestFilter();\n\n const contentTypeCount = Flight.useBasicFetch<GroupedAnalyticsCount[]>(\n VideoViewsV2Requests.aggregation('content_type', requestFilter)\n );\n\n function mapContentTypeToChartColour(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return CHART_COLOUR.YELLOW;\n case ContentType.TV: return CHART_COLOUR.PURPLE;\n case ContentType.UserGenerated: return CHART_COLOUR.GREEN;\n }\n }\n\n function mapContentTypeToLabel(contentType: string) {\n switch (contentType) {\n case ContentType.ClickView: return getPhrase('clickview');\n case ContentType.TV: return getPhrase('tv');\n case ContentType.UserGenerated: return getPhrase('userGenerated');\n }\n }\n\n function getChartData(contentTypeCount: GroupedAnalyticsCount[]) {\n if (!contentTypeCount) return null;\n\n const mappedGroups = contentTypeCount.filter(group => (\n group.name === ContentType.ClickView ||\n group.name === ContentType.TV ||\n group.name === ContentType.UserGenerated\n )).map(group => ({\n name: mapContentTypeToLabel(group.name),\n y: group.count,\n color: mapContentTypeToChartColour(group.name)\n }));\n\n return mappedGroups;\n }\n\n const chartData = getChartData(contentTypeCount.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <ColumnChart data={chartData} />\n : <TotalViewsByContentCardEmptyState />\n }\n </>\n : <div className='partial-loading-background w-25'>&nbsp;</div>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { StreamsBarChartCardView } from 'shared/views/overview-cards/streams-bar-chart-card/StreamsBarChartCardView';\nimport { StreamsChartCardView } from 'shared/views/overview-cards/streams-chart-card/StreamsChartCardView';\nimport { TopClassificationsCardView } from 'shared/views/overview-cards/top-classifications-card/TopClassificationsCardView';\nimport { VideoViewsByContentCardView } from 'shared/views/overview-cards/video-views-by-content-card/VideoViewsByContentCard';\nimport { VideoViewsByRoleCardView } from 'shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView';\n\nimport { SchoolVideosNav } from 'apps/videos/components/school-videos-nav/SchoolVideosNav';\n\nimport styles from './school-video-overview.module.scss';\n\nconst namespace = 'videos.schoolVideoOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst TOP_CLASSIFICATIONS_LIMIT = 50;\n\nexport function SchoolVideoOverviewView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetHeaderActions(getVideoHeaderActions());\n\n return (\n <div>\n <SchoolVideosNav />\n <div className='d-flex gap-3'>\n <div className={`d-flex flex-column gap-3 ${styles.column1}`}>\n <div className={styles.videoViewsCard}>\n <StreamsBarChartCardView type='year_group' />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByRoleCardView />\n </div>\n <div className={styles.videoViewsCard}>\n <VideoViewsByContentCardView />\n </div>\n </div>\n <div className={`d-flex flex-column gap-3 ${styles.column2}`}>\n <div className={styles.videoViewsCard}>\n <StreamsChartCardView type='user_type' />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.RootTopic}\n heading={getPhrase('totalViewsSubject')}\n emptyStateText={getPhrase('emptySubjects')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n <div className={styles.videoViewsCard}>\n <TopClassificationsCardView\n type={TopicAnalyticsType.ChildTopic}\n heading={getPhrase('totalViewsTopic')}\n emptyStateText={getPhrase('emptyTopics')}\n limit={TOP_CLASSIFICATIONS_LIMIT}\n />\n </div>\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TotalViewsByContentCardEmptyState","jsxs","EmptyState","jsx","ImageUrls","styles","VideoViewsByContentCardView","requestFilter","useGetRequestFilter","contentTypeCount","Flight.useBasicFetch","VideoViewsV2Requests","mapContentTypeToChartColour","contentType","CHART_COLOUR","mapContentTypeToLabel","getChartData","group","chartData","Fragment","Text","ColumnChart","TOP_CLASSIFICATIONS_LIMIT","SchoolVideoOverviewView","useSetPageMetadata","useSetHeaderTitle","useSetHeaderActions","getVideoHeaderActions","SchoolVideosNav","StreamsBarChartCardView","VideoViewsByRoleCardView","StreamsChartCardView","TopClassificationsCardView","TopicAnalyticsType"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{a,L as t,j as o}from"./app-BqRx5tK8.js";import{u as e}from"./C6H2bU7H.chunk.js";import{V as i}from"./CXK1uNgx.chunk.js";import{V as m}from"./BmScDBcl.chunk.js";import{T as p,a as c,b as n}from"./DmGrKXgL.chunk.js";import"./BE7zUNFh.chunk.js";import"./sFV5nxD4.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./DxUueJN7.chunk.js";import"./DAocQXXC.chunk.js";import"./Dp_vnjo0.chunk.js";import"./BMba67Uf.chunk.js";import"./CaiGBx50.chunk.js";import"./CV5ioe9U.chunk.js";import"./D1U_fPVs.chunk.js";import"./CrlegiVC.chunk.js";import"./DWv8V3Lc.chunk.js";import"./CqyCLTzN.chunk.js";import"./Bt3gUzzG.chunk.js";import"./D_Erj5Yn.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./CwyVC768.chunk.js";import"./DHqmPVfK.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./xkqdG021.chunk.js";import"./CdzMtbgC.chunk.js";import"./B_1LOG5E.chunk.js";import"./BUM8Ub4p.chunk.js";const d="_column1_kdgy5_1",l="_column2_kdgy5_4",h="_column3_kdgy5_7",u="_pieChart_kdgy5_11",x="_barChart_kdgy5_14",_="_topSearches_kdgy5_17",C="_topTopics_kdgy5_20",r={column1:d,column2:l,column3:h,pieChart:u,barChart:x,topSearches:_,topTopics:C},j="reportsDashboard.adminOverviewDashboard",s=t.encloseNamespace(j);function X(){return a({title:s("dashboard")}),e(s("dashboard")),o.jsx("div",{children:o.jsxs("div",{className:"d-flex",children:[o.jsxs("div",{className:`d-flex flex-column ${r.column1}`,children:[o.jsx("div",{className:"pb-3",children:o.jsx(m,{className:r.pieChart})}),o.jsx(p,{className:r.topSearches})]}),o.jsx("div",{className:`${r.column2} px-3`,children:o.jsx(c,{})}),o.jsxs("div",{className:`d-flex flex-column ${r.column3}`,children:[o.jsx("div",{className:"pb-3",children:o.jsx(i,{className:r.barChart})}),o.jsx(n,{className:r.topTopics})]})]})})}export{X as AdminOverviewDashboardView};
2
- //# sourceMappingURL=BKx5S6xk.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BKx5S6xk.chunk.js","sources":["../../src/apps/dashboard/views/admin-overview-dashboard/AdminOverviewDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\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 { TopSearchesCardView } from 'apps/dashboard/views/overview-cards/top-searches/TopSearchesCardView';\nimport { TopTopicsCardView } from 'apps/dashboard/views/overview-cards/top-topics/TopTopicsCardView';\nimport { TopVideosCardView } from 'apps/dashboard/views/overview-cards/top-videos/TopVideosCardView';\n\nimport styles from './admin-overview-dashboard.module.scss';\n\nconst namespace = 'reportsDashboard.adminOverviewDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AdminOverviewDashboardView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('dashboard') });\n useSetHeaderTitle(getPhrase('dashboard'));\n\n return (\n <div>\n <div className='d-flex'>\n <div className={`d-flex flex-column ${styles.column1}`}>\n <div className='pb-3'>\n <ViewCountPieChartCardView className={styles.pieChart} />\n </div>\n <TopSearchesCardView className={styles.topSearches} />\n </div>\n <div className={`${styles.column2} px-3`}>\n <TopVideosCardView />\n </div>\n <div className={`d-flex flex-column ${styles.column3}`}>\n <div className='pb-3'>\n <ViewCountBarChartCardView className={styles.barChart} />\n </div>\n <TopTopicsCardView className={styles.topTopics} />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","AdminOverviewDashboardView","useSetPageMetadata","useSetHeaderTitle","jsx","jsxs","styles","ViewCountPieChartCardView","TopSearchesCardView","TopVideosCardView","ViewCountBarChartCardView","TopTopicsCardView"],"mappings":"wsCAgBMA,EAAY,0CACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASG,GAA0C,CACxD,OAAAC,EAAmB,CAAE,MAAOH,EAAU,WAAW,EAAG,EACpDI,EAAkBJ,EAAU,WAAW,CAAC,EAGtCK,EAAAA,IAAC,MAAA,CACC,SAAAC,EAAAA,KAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAA,OAAC,MAAA,CAAI,UAAW,sBAAsBC,EAAO,OAAO,GAClD,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAACG,GAA0B,UAAWD,EAAO,SAAU,CAAA,CACzD,EACAF,EAAAA,IAACI,EAAA,CAAoB,UAAWF,EAAO,WAAA,CAAa,CAAA,EACtD,EACAF,EAAAA,IAAC,OAAI,UAAW,GAAGE,EAAO,OAAO,QAC/B,SAAAF,EAAAA,IAACK,EAAA,CAAA,CAAkB,CAAA,CACrB,SACC,MAAA,CAAI,UAAW,sBAAsBH,EAAO,OAAO,GAClD,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAACM,GAA0B,UAAWJ,EAAO,SAAU,CAAA,CACzD,EACAF,EAAAA,IAACO,EAAA,CAAkB,UAAWL,EAAO,SAAA,CAAW,CAAA,CAAA,CAClD,CAAA,CAAA,CACF,CAAA,CACF,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{c as i,V as n}from"./app-BqRx5tK8.js";function r(){i(n.LEFT_NAV_STATE)}const e=["#FF9300","#38A2E8","#7A76E8","#B679C7","#F7847B","#D9584F","#FFCD52","#5DC786","#40BCC3","#40C2BB"];function a(o){return o.map((s,t)=>({...s,color:e[t%e.length]}))}export{a as m,r as u};
2
- //# sourceMappingURL=BMba67Uf.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BMba67Uf.chunk.js","sources":["../../src/shared/hooks/UseListenToNavState.ts","../../../../libs/shared/src/apps/analytics/utils/ChartColourUtils.ts"],"sourcesContent":["import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { LeftNavState } from 'shared/enums/LeftNavState';\n\n/**\n * Any component that uses this hook will automatically re-render\n * when the left nav is toggled.\n * \n * This is useful for chart components which automatically re-render\n * on a window resize event but not when the content container is resized\n * (which occurs when the nav is toggled).\n */\nexport function useListenToNavState(): void {\n useViewModel<LeftNavState>(ViewModelKeys.LEFT_NAV_STATE);\n}","const CHART_COLOURS = [\n '#FF9300', // Pizazz\n '#38A2E8', // Picton Blue\n '#7A76E8', // Portage\n '#B679C7', // East Side\n '#F7847B', // Froly\n '#D9584F', // Red (Not in the Primary palette)\n '#FFCD52', // Yellow (Not in the Primary Palette)\n '#5DC786', // Emerald\n '#40BCC3', // Perolous\n '#40C2BB' // Puerto rico\n];\n\nexport function mixinSeriesColours<T>(data: T[]): T[] {\n return data.map((d, idx) => ({\n ...d,\n color: CHART_COLOURS[idx % CHART_COLOURS.length]\n }));\n}"],"names":["useListenToNavState","useViewModel","ViewModelKeys","CHART_COLOURS","mixinSeriesColours","data","d","idx"],"mappings":"6CAaO,SAASA,GAA4B,CAC1CC,EAA2BC,EAAc,cAAc,CACzD,CCfA,MAAMC,EAAgB,CACpB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEO,SAASC,EAAsBC,EAAgB,CACpD,OAAOA,EAAK,IAAI,CAACC,EAAGC,KAAS,CAC3B,GAAGD,EACH,MAAOH,EAAcI,EAAMJ,EAAc,MAAM,CAAA,EAC/C,CACJ"}
@@ -1,2 +0,0 @@
1
- import{j as r}from"./app-BqRx5tK8.js";function l(t){return r.jsx("svg",{...t,children:r.jsx("path",{d:"M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074",fill:"currentColor"})})}export{l as T};
2
- //# sourceMappingURL=BUM8Ub4p.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BUM8Ub4p.chunk.js","sources":["../../../../libs/shared/src/images/svg/status/TickSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function TickSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.783 5.192c.264.283.291.775.06 1.098l-8.91 12.444a.6.6 0 0 1-.457.266.58.58 0 0 1-.471-.228l-3.819-4.666a.905.905 0 0 1 0-1.1c.249-.304.652-.304.9 0l3.338 4.078 8.46-11.818c.232-.324.634-.356.899-.074'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["TickSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAQC,EAAsC,CAC5D,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,8MACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{s as i,bJ as f,bK as c,bM as j,j as o}from"./app-BqRx5tK8.js";var a=(e=>(e.Playlists="playlists",e.Series="series",e.Videos="videos",e.PinnedVideos="pinnedVideos",e))(a||{}),n=(e=>(e.Subject="Subject",e.Curriculum="Curriculum",e.StreamableLearning="StreamableLearning",e))(n||{});const m=e=>`subjectpresentationaudiences.id:[${e.join(",")}]`,L={topicsFromAllAvailablePresentations(e){const s={filterType:"topics",presentationId:e};return{url:i.urlBuilder("{gateway}/v1/search/filters",s),publicUrl:i.urlBuilder("/api/search/filters",s),key:"classification:availableTopics",normalize:!1}},availablePresentations(e){const s={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations/available",s),publicUrl:i.urlBuilder("/api/subjects/presentations/available",s),key:`available:presentations:${e}`,normalizeOptions:{namespace:"presentation"}}},topLevelTopics(e){const s={query:c.CLASSIFICATION_COLLECTION,sort:"alphabetical"};return{url:i.urlBuilder(`{gateway}/v1/subjects/presentations/${e}/classifications`,s),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}/classifications`,s),key:`presentation:${e}:classifications`}},presentationById(e){return{url:`{gateway}/v1/subjects/presentations/${e}`,publicUrl:`/api/subjects/presentations/${e}`,key:`presentation:${e}`}},presentationBySlug(e,s,r){const t={type:r.toLowerCase(),contentRegion:s};return{url:i.urlBuilder(`/api/subjects/presentations/${e}`,t),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}`,t),key:`current:presentation:${r.toLowerCase()}:${s}:${e??""}`,bootstrapName:"presentation",normalizeOptions:{namespace:"presentation"}}},presentation(e,s){const r={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations",r),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}`,r),key:`current:presentation${e?`:${e.toLowerCase()}`:""}${s?`:${s}`:""}`,normalizeOptions:{namespace:"presentation"}}},classifications(){return{url:i.urlBuilder("{gateway}/v1/users/me/classifications",{query:c.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),publicUrl:i.urlBuilder("/api/subjects/classifications",{query:j.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),key:"classifications"}},classification(e,s,r){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}`,{query:c.CLASSIFICATION(s)}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}`,{query:j.CLASSIFICATION}),key:`classification:${e}`,error:r}},path(e,s){const r={type:s};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/path`,r),publicUrl:`/api/subjects/classifications/${e}/path`,key:`classification:${e}:path`}},paths(e){return{url:`/api/subjects/classifications/${e}/paths`,key:`classification:${e}:paths`}},children(e){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/children`,{query:c.CLASSIFICATION_COLLECTION}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/children`,{query:j.CLASSIFICATION_COLLECTION}),key:`classification:${e}:children`}},videos(e,s,r){if(!s)return;let t="limit:100,orderbydesc:timestamp";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}(videoCollection),subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.PinnedVideos}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.PinnedVideos}`,l),key:`classification:${e}:${a.PinnedVideos}:${r.join(":")}`}},playlists(e,s,r){if(!s)return;let t="limit:100,orderby:name";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.PLAYLIST_COLLECTION},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Playlists}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Playlists}`,l),key:`classification:${e}:${a.Playlists}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.cover)==null?void 0:b.url})}}}},series(e,s,r){if(!s)return;let t="limit:100";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.SERIES},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Series}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Series}`,l),key:`classification:${e}:${a.Series}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.tallPoster)==null?void 0:b.url})}}}},curriculumLinks(e,s){return{url:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),key:`curriculum:links:${e}:${s}`,normalize:!1}},subjectLinks(e,s){const r=i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Subject.toLowerCase()});return{url:r,publicUrl:r,key:`subject:links:${e}:${s}`,normalize:!1}},getMappedCurriculums(e,s){const r={type:n.Curriculum.toLowerCase()};return{url:i.urlBuilder(`{gateway}/v1/objects/${e}/presentations`,r),publicUrl:i.urlBuilder(`/api/subjects/${e}/presentations`,{...r,pid:s}),key:`mapped:curriculums:${e}:${s.join(",")}`,normalize:!1}},regionAlternatives(e,s,r,t){return{url:`/api/subjects/classifications/${e}/region-alternatives`,publicUrl:`/api/subjects/classifications/${e}/region-alternatives`,key:`classification:regionAlternatives:${e}`,normalize:!1,success:s,error:r,always:t}}};function S(e){return o.jsxs("svg",{...e,children:[o.jsx("defs",{children:o.jsx("path",{id:"a",d:"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6",fill:"currentColor"})}),o.jsx("use",{xlinkHref:"#a",fill:"#333"})]})}function d(e){return o.jsx("svg",{...e,children:o.jsx("path",{fill:"currentColor",d:"M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z"})})}export{L as C,d as L,n as P,S as V};
2
- //# sourceMappingURL=BW-tzVdx.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BW-tzVdx.chunk.js","sources":["../../../../libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","../../../../libs/shared/src/enums/PresentationType.ts","../../../../libs/shared/src/flight-requests/ClassificationRequests.ts","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx","../../../../libs/shared/src/images/svg/objects/LinkSvg.tsx"],"sourcesContent":["export enum ClassificationMemberType {\n Playlists = 'playlists',\n Series = 'series',\n Videos = 'videos',\n PinnedVideos = 'pinnedVideos'\n}","export enum PresentationType {\n Subject = 'Subject',\n Curriculum = 'Curriculum',\n StreamableLearning = 'StreamableLearning'\n}","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { PlaylistCollection, RegionAlternative, SeriesCollection } from 'libs/shared/interfaces';\n\nconst getClassificationMemberFilter = (ids: string[]) => `subjectpresentationaudiences.id:[${ids.join(',')}]`;\n\nexport const ClassificationRequests = {\n topicsFromAllAvailablePresentations(ids: string[]): Flight.PublicRequest {\n const params = { filterType: 'topics', presentationId: ids };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/search/filters', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/filters', params),\n key: 'classification:availableTopics',\n normalize: false\n };\n },\n\n availablePresentations(type?: PresentationType): Flight.PublicRequest {\n const queryStringOpts = { type: type?.toLowerCase() };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations/available', queryStringOpts),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/presentations/available', queryStringOpts),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n topLevelTopics(presentationId: string): Flight.PublicRequest {\n const params = {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n sort: 'alphabetical'\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/presentations/${presentationId}/classifications`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/classifications`, params),\n key: `presentation:${presentationId}:classifications`\n };\n },\n\n presentationById(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}`,\n publicUrl: `/api/subjects/presentations/${presentationId}`,\n key: `presentation:${presentationId}`\n };\n },\n\n presentationBySlug(presentationSlug: string, contentRegion: string, type: PresentationType): Flight.PublicRequest {\n const params = {\n type: type.toLowerCase(),\n contentRegion: contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n key: `current:presentation:${type.toLowerCase()}:${contentRegion}:${presentationSlug ?? ''}`,\n bootstrapName: 'presentation',\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n presentation(type: PresentationType, presentationId?: string): Flight.PublicRequest {\n const params = {\n type: type?.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations', params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}`, params),\n key: `current:presentation${type ? `:${type.toLowerCase()}` : ''}${presentationId ? `:${presentationId}` : ''}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n classifications(): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications', {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/classifications', {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n key: `classifications`\n };\n },\n\n classification(id: string, userId?: string, error?: (xhr: Xhr) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}`, {\n query: SharedWithStatements.CLASSIFICATION(userId)\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}`, {\n query: PublicWithStatement.CLASSIFICATION\n }),\n key: `classification:${id}`,\n error\n };\n },\n\n path(id: string, presentationType?: PresentationType): Flight.PublicRequest {\n const params = { type: presentationType };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/path`, params),\n publicUrl: `/api/subjects/classifications/${id}/path`,\n key: `classification:${id}:path`\n };\n },\n\n paths(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/paths`,\n key: `classification:${id}:paths`\n };\n },\n\n children(id: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/children`, {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/children`, {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION\n }),\n key: `classification:${id}:children`\n };\n },\n\n videos(\n id: string,\n presentationId: string,\n activeAudiences: string[]\n ): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderbydesc:timestamp';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}(videoCollection),subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.PinnedVideos}:${activeAudiences.join(':')}`\n };\n },\n\n /**\n * This request should only be used when displaying the playlist widget within a classification/topic page.\n * The current behaviour is to filter out any playlist that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderby:name';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\n formatData: (playlist: PlaylistCollection): PlaylistCollection => {\n if (!playlist)\n return;\n\n return {\n ...playlist,\n data: playlist.data?.filter(p => p.cover?.url)\n };\n }\n };\n },\n\n /**\n * This request should only be used when displaying the series widget within a classification/topic page.\n * The current behaviour is to filter out any series that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.SERIES}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\n formatData: (series: SeriesCollection): SeriesCollection => {\n if (!series)\n return;\n\n return {\n ...series,\n data: series.data?.filter(s => s.tallPoster?.url)\n };\n }\n };\n },\n\n curriculumLinks(id: string, curriculumId: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n key: `curriculum:links:${id}:${curriculumId}`,\n normalize: false\n };\n },\n\n subjectLinks(id: string, presentationId: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Subject.toLowerCase()\n });\n\n return {\n url,\n publicUrl: url,\n key: `subject:links:${id}:${presentationId}`,\n normalize: false\n };\n },\n\n getMappedCurriculums(\n id: string,\n pids: string[]\n ): Flight.PublicRequest {\n const params: HashObject = {\n type: PresentationType.Curriculum.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/presentations`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/${id}/presentations`, { ...params, pid: pids }),\n key: `mapped:curriculums:${id}:${pids.join(',')}`,\n normalize: false\n };\n },\n\n regionAlternatives(\n classificationId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n publicUrl: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n key: `classification:regionAlternatives:${classificationId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='a'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#a' fill='#333' />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function LinkSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z'\n />\n </svg>\n );\n}\n"],"names":["ClassificationMemberType","PresentationType","getClassificationMemberFilter","ids","ClassificationRequests","params","UrlHelper","type","queryStringOpts","presentationId","SharedWithStatements","presentationSlug","contentRegion","PublicWithStatement","id","userId","error","presentationType","activeAudiences","filter","queryStringObj","PermissionFilterOption","playlist","_a","p","series","s","curriculumId","url","pids","classificationId","success","always","VisibleOnSvg","props","jsxs","jsx","LinkSvg"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{p as L,r as s,ah as M,F as d}from"./app-BqRx5tK8.js";const g=()=>{const e=L.useRef(!0);return L.useEffect(()=>()=>{e.current=!1},[]),e},R=275,y=5,T={className:"",delay:0,style:null},Y={screenX:0,screenY:0};function H(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.add(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=t.style[u]}))}function h(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.remove(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=null}))}function b(e,t){return Math.abs(e.screenX-t.screenX)>y||Math.abs(e.screenY-t.screenY)>y}function X(e=T){const t=g(),[n,u]=s.useState(e),[l,c]=s.useState(!1),r=s.useRef(null);s.useEffect(()=>{M.isEqual(e,n)||u(e)},[e]);const i=d.throttle(()=>{H(r,n),t.current&&c(!0)},n.delay,{leading:!1}),f=()=>{d.isFunction(i.cancel)&&i.cancel(),h(r,n),t.current&&c(!1)};return s.useLayoutEffect(()=>{const o=r.current;if(o)return o.addEventListener("mouseenter",i),o.addEventListener("mouseleave",f),()=>{o.removeEventListener("mouseenter",i),o.removeEventListener("mouseleave",f)}},[r.current,n]),[r,l]}function w(e){const[t,n]=s.useState(e),u=s.useRef({...Y}),l=s.useRef(!1),c=s.useRef(0),r=s.useRef(null),[i,f]=s.useState(!1);s.useEffect(()=>{M.isEqual(e,t)||n(e)},[e]);function o(){c.current&&(window.clearTimeout(c.current),c.current=0)}function O(a,v){c.current||(c.current=window.setTimeout(a,v))}function m(){l.current=!0}function S(a){if(!l.current)return;const v={...u.current};u.current.screenX=a.screenX,u.current.screenY=a.screenY,b(v,a)&&o(),O(()=>{H(r,t),f(!0)},t.delay||R)}function E(){o(),h(r,t),l.current=!1,f(!1)}return s.useLayoutEffect(()=>{if(!r.current)return;const a=d.throttle(S,25,{leading:!1});return r.current.addEventListener("mouseenter",m),r.current.addEventListener("mousemove",a),r.current.addEventListener("mouseleave",E),()=>{r.current&&(r.current.removeEventListener("mouseenter",m),r.current.removeEventListener("mousemove",a),r.current.removeEventListener("mouseleave",E))}},[r.current,t]),[r,i]}export{w as a,X as u};
2
- //# sourceMappingURL=B_1LOG5E.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"B_1LOG5E.chunk.js","sources":["../../../../libs/shared/src/hooks/UseIsComponentMounted.ts","../../../../libs/shared/src/hooks/UseHover.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsComponentMounted = () => {\n const isMounted = React.useRef(true);\n\n React.useEffect(() => {\n return () => { isMounted.current = false; };\n }, []);\n\n return isMounted;\n};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { useIsComponentMounted } from 'libs/shared/hooks/UseIsComponentMounted';\n\nconst DEFAULT_HOVER_DELAY = 275;\nconst MOUSE_MOVE_THRESHOLD = 5; // value is in pixels\n\ninterface HoverOptions {\n /**\n * Classes to be applied to the target element on hover. Useful if you want to style the element on hover\n * after a delay (controlled by the `timeout` option below)\n */\n className?: string;\n\n /**\n * Style attribute to be applied to the target element on hover. Should only be used \n */\n style?: HashObject;\n\n /**\n * A delay between when the user actually hovers on the element, and when the hook returns `true` for `isHovering`.\n * This can be used to determine whether a user has actually intended for a hover event on an element to be\n * triggered or not. Defaults to 0.\n */\n delay?: number;\n}\n\nconst defaultOptions: HoverOptions = {\n className: '',\n delay: 0,\n style: null\n};\n\ninterface MousePosition {\n screenX: number;\n screenY: number;\n}\n\nconst defaultHoverState: MousePosition = {\n screenX: 0,\n screenY: 0\n};\n\nfunction setHoveringStyles<T extends HTMLElement>(\n ref: React.MutableRefObject<T>,\n options: HoverOptions\n): void {\n if (!ref.current)\n return;\n\n if (options.className)\n ref.current.classList?.add(options.className);\n\n if (options.style) {\n Object.keys(options.style).forEach((styleName: any) => {\n ref.current.style[styleName] = options.style[styleName];\n });\n }\n}\n\nfunction unSetHoveringStyles<T extends HTMLElement>(\n ref: React.MutableRefObject<T>,\n options: HoverOptions\n): void {\n if (!ref.current)\n return;\n\n if (options.className)\n ref.current.classList?.remove(options.className);\n\n if (options.style) {\n Object.keys(options.style).forEach((styleName: any) => {\n ref.current.style[styleName] = null;\n });\n }\n}\n\nfunction hasMouseMoved(prev: MousePosition, current: MousePosition): boolean {\n return Math.abs(prev.screenX - current.screenX) > MOUSE_MOVE_THRESHOLD ||\n Math.abs(prev.screenY - current.screenY) > MOUSE_MOVE_THRESHOLD;\n}\n\n/**\n * This hook detects hover events on an element.\n * This should only be used where CSS hover events won't suffice for what you are trying to achieve.\n * It will trigger after the delay regardless of pointer movement within the container, if you want\n * it to trigger only after the pointer has stopped moving, consider the `useHoverIntent` hook.\n */\nexport function useHover<T extends HTMLElement>(\n options: HoverOptions = defaultOptions\n): [ React.MutableRefObject<T>, boolean ] {\n const isMounted = useIsComponentMounted();\n const [ cachedOptions, setCachedOptions ] = React.useState(options);\n const [ isHovering, setIsHovering ] = React.useState(false);\n\n const ref = React.useRef<T>(null);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(options, cachedOptions))\n return;\n\n setCachedOptions(options);\n }, [options]);\n\n const triggerHover = FunctionHelper.throttle(() => {\n setHoveringStyles(ref, cachedOptions);\n if (isMounted.current)\n setIsHovering(true);\n }, cachedOptions.delay, { leading: false });\n\n const handleMouseOut = () => {\n if (FunctionHelper.isFunction(triggerHover.cancel))\n triggerHover.cancel();\n\n unSetHoveringStyles(ref, cachedOptions);\n\n if (isMounted.current)\n setIsHovering(false);\n };\n\n React.useLayoutEffect(() => {\n const node = ref.current;\n\n if (node) {\n node.addEventListener('mouseenter', triggerHover);\n node.addEventListener('mouseleave', handleMouseOut);\n\n return () => {\n node.removeEventListener('mouseenter', triggerHover);\n node.removeEventListener('mouseleave', handleMouseOut);\n };\n }\n }, [ ref.current, cachedOptions ]);\n\n return [ ref, isHovering ];\n}\n\n\n/**\n * This hook detects hover events on an element with intent.\n * This should only be used where CSS hover events won't suffice for what you are trying to achieve.\n * It will trigger after the pointer has stopped moving and the delay has elapsed, if you want it to trigger\n * regardless of pointer movement within the container, consider the `useHover` hook`.\n */\nexport function useHoverIntent<T extends HTMLElement>(options: HoverOptions): [ React.MutableRefObject<T>, boolean ] {\n const [ cachedOptions, setCachedOptions ] = React.useState(options);\n\n /**\n * Using refs for frequently updated state in order to not trigger react rendering\n */\n const mousePosition = React.useRef<MousePosition>({ ...defaultHoverState });\n const isInside = React.useRef<boolean>(false);\n const timeout = React.useRef<number>(0);\n\n const ref = React.useRef<T>(null);\n const [ isHovering, setIsHovering ] = React.useState(false);\n\n React.useEffect(() => {\n if (ObjectHelper.isEqual(options, cachedOptions))\n return;\n\n setCachedOptions(options);\n }, [options]);\n\n function localClearTimeout(): void {\n if (!timeout.current)\n return;\n\n window.clearTimeout(timeout.current);\n timeout.current = 0;\n }\n\n function localSetTimeout(fn: () => void, delay: number): void {\n if (timeout.current)\n return;\n\n timeout.current = window.setTimeout(fn, delay);\n }\n\n function onMouseEnter(): void {\n isInside.current = true;\n }\n\n function onMouseMove(event: MouseEvent): void {\n if (!isInside.current)\n return;\n\n const prev = { ...mousePosition.current };\n mousePosition.current.screenX = event.screenX;\n mousePosition.current.screenY = event.screenY;\n\n if (hasMouseMoved(prev, event))\n localClearTimeout();\n \n localSetTimeout(() => {\n setHoveringStyles(ref, cachedOptions);\n setIsHovering(true);\n }, cachedOptions.delay || DEFAULT_HOVER_DELAY);\n }\n\n function onMouseLeave(): void {\n localClearTimeout();\n unSetHoveringStyles(ref, cachedOptions);\n isInside.current = false;\n setIsHovering(false);\n }\n\n React.useLayoutEffect(() => {\n if (!ref.current)\n return;\n\n const throttledMouseMove = FunctionHelper.throttle(onMouseMove, 25, { leading: false });\n ref.current.addEventListener('mouseenter', onMouseEnter);\n ref.current.addEventListener('mousemove', throttledMouseMove);\n ref.current.addEventListener('mouseleave', onMouseLeave);\n \n return () => {\n if (!ref.current)\n return;\n ref.current.removeEventListener('mouseenter', onMouseEnter);\n ref.current.removeEventListener('mousemove', throttledMouseMove);\n ref.current.removeEventListener('mouseleave', onMouseLeave);\n };\n }, [ ref.current, cachedOptions ]);\n \n return [ ref, isHovering ];\n}"],"names":["useIsComponentMounted","isMounted","React","DEFAULT_HOVER_DELAY","MOUSE_MOVE_THRESHOLD","defaultOptions","defaultHoverState","setHoveringStyles","ref","options","_a","styleName","unSetHoveringStyles","hasMouseMoved","prev","current","useHover","cachedOptions","setCachedOptions","React.useState","isHovering","setIsHovering","React.useRef","React.useEffect","ObjectHelper","triggerHover","FunctionHelper","handleMouseOut","React.useLayoutEffect","node","useHoverIntent","mousePosition","isInside","timeout","localClearTimeout","localSetTimeout","fn","delay","onMouseEnter","onMouseMove","event","onMouseLeave","throttledMouseMove"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{b as r,P as d,e as m,c as h,V as l,r as E}from"./app-BqRx5tK8.js";import{u as F}from"./UWjf2h5X.chunk.js";function I(a){const{hasPermissions:n}=r(),o=n(d.ViewCustomerAnalytics),s=m(),e=F(o&&!!s&&a,{start:s==null?void 0:s.start,end:s==null?void 0:s.end}),[,i]=h(l.AUDIENCE_FILTER_SUGGESTIONS);E.useEffect(()=>{var t,u;e.data&&i("users",(u=(t=e.data)==null?void 0:t.students)==null?void 0:u.map(c=>c.user.id))},[e.isFetching])}export{I as u};
2
- //# sourceMappingURL=BaHk6QZB.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaHk6QZB.chunk.js","sources":["../../src/apps/interactives/hooks/UseSetSuggestedInteractiveResultsAudience.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { AudienceFilterSuggestions } from 'libs/shared/apps/analytics/interfaces/AudienceFilterSuggestions';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\n\n/**\n * This hooks fetches interactive results for all users within the set date range\n * (ignoring the audience filter) and sets any users with results as audience suggestions.\n * \n * Note: this is only for admins as teachers have a different audience filter.\n */\nexport function useSetSuggestedInteractiveResultsAudience(interactiveMetadataId: string): void {\n const { hasPermissions } = usePermissions();\n const canViewCustomerAnalytics = hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const filter = useGetRequestFilter();\n\n const shouldFetch = canViewCustomerAnalytics && !!filter;\n\n const results = useFetchInteractiveResults(\n shouldFetch && interactiveMetadataId,\n { start: filter?.start, end: filter?.end }\n );\n\n const [ , setSuggestions ] = useViewModel<AudienceFilterSuggestions>(ViewModelKeys.AUDIENCE_FILTER_SUGGESTIONS);\n\n useEffect(() => {\n if (!results.data)\n return;\n\n setSuggestions('users', results.data?.students?.map(s => s.user.id));\n }, [results.isFetching]);\n}"],"names":["useSetSuggestedInteractiveResultsAudience","interactiveMetadataId","hasPermissions","usePermissions","canViewCustomerAnalytics","PermissionName","filter","useGetRequestFilter","results","useFetchInteractiveResults","setSuggestions","useViewModel","ViewModelKeys","useEffect","_b","_a","s"],"mappings":"iHAmBO,SAASA,EAA0CC,EAAqC,CAC7F,KAAM,CAAE,eAAAC,CAAA,EAAmBC,EAAA,EACrBC,EAA2BF,EAAeG,EAAe,qBAAqB,EAE9EC,EAASC,EAAA,EAITC,EAAUC,EAFIL,GAA4B,CAAC,CAACE,GAGjCL,EACf,CAAE,MAAOK,GAAA,YAAAA,EAAQ,MAAO,IAAKA,GAAA,YAAAA,EAAQ,GAAA,CAAI,EAGrC,CAAA,CAAII,CAAe,EAAIC,EAAwCC,EAAc,2BAA2B,EAE9GC,EAAAA,UAAU,IAAM,SACTL,EAAQ,MAGbE,EAAe,SAASI,GAAAC,EAAAP,EAAQ,OAAR,YAAAO,EAAc,WAAd,YAAAD,EAAwB,IAAIE,GAAKA,EAAE,KAAK,GAAG,CACrE,EAAG,CAACR,EAAQ,UAAU,CAAC,CACzB"}
@@ -1,2 +0,0 @@
1
- import{d as r,j as c,A as t,g as o,L as p}from"./app-BqRx5tK8.js";import{S as m}from"./DuNeLCIS.chunk.js";const d={video(e,a,s,i){return{url:`{gateway}/v1/objects/${e}`,key:`video:${e}`,success:a,error:s,always:i}}},u="reportsVideos.videoNav",n=p.encloseNamespace(u);function v(e,a){const s=[e];return[{label:n("overview"),appLink:{application:o.VIDEOS,action:t.Videos.OVERVIEW,args:s,params:a}},{label:n("engagement"),appLink:{application:o.VIDEOS,action:t.Videos.ENGAGEMENT,args:s,params:a}}]}function g(e){const a=r(),s=v(e.id,a);return c.jsx(m,{items:s})}export{d as V,g as a};
2
- //# sourceMappingURL=Bbpuxobz.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bbpuxobz.chunk.js","sources":["../../src/shared/flight-requests/VideoRequests.ts","../../src/apps/videos/components/video-nav/VideoNav.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { Video } from 'libs/shared/interfaces';\n\nexport const VideoRequests = {\n video(id: string, success?: (data: Video) => void, error?: (data: any) => void, always?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `video:${id}`,\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nimport { SubNav, SubNavItem } from 'shared/components/sub-nav/SubNav';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsVideos.videoNav';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNavItems(id: string, params: FilterQueryParams): SubNavItem[] {\n const args = [id];\n\n return [\n {\n label: getPhrase('overview'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.OVERVIEW, args, params }\n },\n {\n label: getPhrase('engagement'),\n appLink: { application: AppChannels.VIDEOS, action: Actions.Videos.ENGAGEMENT, args, params }\n }\n ];\n}\n\ninterface VideoNavProps {\n id: string;\n}\n\nexport function VideoNav(props: VideoNavProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const navItems = getNavItems(props.id, filterQueryParams);\n\n return (\n <SubNav items={navItems} />\n );\n}"],"names":["VideoRequests","id","success","error","always","namespace","getPhrase","LanguageService","getNavItems","params","args","AppChannels","Actions","VideoNav","props","filterQueryParams","useGetAppLinkFilterParams","navItems","jsx","SubNav"],"mappings":"0GAIO,MAAMA,EAAgB,CAC3B,MAAMC,EAAYC,EAAiCC,EAA6BC,EAAqC,CACnH,MAAO,CACL,IAAK,wBAAwBH,CAAE,GAC/B,IAAK,SAASA,CAAE,GAChB,QAAAC,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF,ECHMC,EAAY,yBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAYP,EAAYQ,EAAyC,CACxE,MAAMC,EAAO,CAACT,CAAE,EAEhB,MAAO,CACL,CACE,MAAOK,EAAU,UAAU,EAC3B,QAAS,CAAE,YAAaK,EAAY,OAAQ,OAAQC,EAAQ,OAAO,SAAU,KAAAF,EAAM,OAAAD,CAAA,CAAO,EAE5F,CACE,MAAOH,EAAU,YAAY,EAC7B,QAAS,CAAE,YAAaK,EAAY,OAAQ,OAAQC,EAAQ,OAAO,WAAY,KAAAF,EAAM,OAAAD,CAAA,CAAO,CAC9F,CAEJ,CAMO,SAASI,EAASC,EAAmC,CAC1D,MAAMC,EAAoBC,EAAA,EAEpBC,EAAWT,EAAYM,EAAM,GAAIC,CAAiB,EAExD,OACEG,EAAAA,IAACC,EAAA,CAAO,MAAOF,CAAA,CAAU,CAE7B"}
@@ -1,2 +0,0 @@
1
- import{j as a}from"./app-BqRx5tK8.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=BfG3wCTD.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BfG3wCTD.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"}
@@ -1,2 +0,0 @@
1
- import{b as R,ad as O,c as T,d as A,e as F,u as i,bO as f,f as q,a as G,L,P as K,j as e,V as H,U as D,C as $}from"./app-BqRx5tK8.js";import{P as k,M as W,V as B,a as Q,E as Y}from"./BIbP_ulq.chunk.js";import{u as z}from"./UWjf2h5X.chunk.js";import{g as j}from"./CX5q-0jT.chunk.js";import{V as M}from"./BE7zUNFh.chunk.js";import{u as J}from"./Fd0gT6QK.chunk.js";import{u as X}from"./DxUueJN7.chunk.js";import{P as Z}from"./CqSaPgvV.chunk.js";import{u as ee}from"./C6eAAaNL.chunk.js";import{u as ae}from"./CaiGBx50.chunk.js";import{u as te}from"./CU-I5G45.chunk.js";import{u as ie,a as se}from"./BlAGsOOw.chunk.js";import{u as ne}from"./C6H2bU7H.chunk.js";import{E as re}from"./zaMwD-xl.chunk.js";import{V as oe}from"./BmScDBcl.chunk.js";import{u as me,I as de}from"./T4Chmiqz.chunk.js";import{O as ce}from"./COgPEQMR.chunk.js";import"./DecstRlc.chunk.js";import"./DU5sOcpt.chunk.js";import"./DFhb3ZfO.chunk.js";import"./5O9SdVRZ.chunk.js";import"./CW7x8M-z.chunk.js";import"./CXhesQTd.chunk.js";import"./CdzMtbgC.chunk.js";import"./xkqdG021.chunk.js";import"./BfG3wCTD.chunk.js";import"./VSmYRJOj.chunk.js";import"./B_1LOG5E.chunk.js";import"./BrLXFCMV.chunk.js";import"./DHqmPVfK.chunk.js";import"./Dp_vnjo0.chunk.js";import"./ClcYw2ra.chunk.js";import"./sFV5nxD4.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./CV5ioe9U.chunk.js";import"./BMba67Uf.chunk.js";import"./D1U_fPVs.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BBOfq9my.chunk.js";const ge="_viewCountContainer_8jne3_1",le="_engagementPercentageContainer_8jne3_4",ue="_engagementGraphContainer_8jne3_7",pe="_partialTable_8jne3_10",m={viewCountContainer:ge,engagementPercentageContainer:le,engagementGraphContainer:ue,partialTable:pe},ve="reportsInteractives.interactiveEngagement",he=L.encloseNamespace(ve);function oa(a){var u,p,v,h,C,I;const{hasPermissions:P}=R(),{hasShareFlowV2:x}=O(null),[E]=T(H.ANONYMISE_USERS),g=A(),n=F(),r=i(D.currentUser()),t=i(f.interactiveMetadata(a.interactiveMetadataId)),l=i(!!t.data&&f.interactive(t.data.interactiveId)),d=i(!!r.data&&!!n&&M.aggregateEngagement(a.interactiveMetadataId,n,r.data.id)),s=i(!!r.data&&!!n&&M.individualEngagement(a.interactiveMetadataId,n,r.data.id)),{users:b,isLoading:w,usersResponse:y}=q((p=(u=s.data)==null?void 0:u.data)==null?void 0:p.map(_=>_.userId)),c=i(k.createViewKey(a.interactiveMetadataId,W.MasterObject)),o=i($.config()),V=z(a.interactiveMetadataId,n);G({title:he("pageTitle",{interactive:(v=t.data)==null?void 0:v.name})}),ne((h=t.data)==null?void 0:h.name),ie(se(t.data)),te(a.interactiveMetadataId),ae(s),me(a.interactiveMetadataId),ee(t),X([l,d,s,...y.responses,c]),J(t);const S=x&&P(K.ViewMyShares),N=!!l.data&&!!t.data&&!!d.data&&!!c.data&&!!o.data,U=!!s.data&&(!s.data.data.length||!w);return e.jsxs("div",{className:"pb-3",children:[e.jsx(de,{interactiveMetadataId:a.interactiveMetadataId,hasInsights:S}),((C=V.data)==null?void 0:C.hasWatchedInLite)===!1&&e.jsx("div",{className:"mb-3",children:e.jsx(ce,{})}),e.jsxs("div",{className:"d-flex pb-3",children:[e.jsx("div",{className:`pe-2 ${m.viewCountContainer}`,children:e.jsx(oe,{objectId:a.interactiveMetadataId,useSharerId:!0,className:"h-100"})}),e.jsx("div",{className:`px-2 ${m.engagementPercentageContainer}`,children:e.jsx(re,{objectId:a.interactiveMetadataId,useSharerId:!0,className:"h-100",layout:"vertical"})}),e.jsx("div",{className:`ps-2 ${m.engagementGraphContainer}`,children:N?e.jsx(B,{engagement:d.data,viewKey:c.data.viewKey,imageCdnUrl:o.data.imageCdnUrl,playerApiUrl:o.data.playerApiUrl},j(g)):e.jsx(Q,{})})]}),U?e.jsx(Y,{engagement:s.data.data,users:b,imageCdnUrl:(I=o.data)==null?void 0:I.imageCdnUrl,anonymiseUsers:E,enableSort:!0},j(g)):e.jsx(Z,{className:m.partialTable})]})}export{oa as InteractiveEngagementView};
2
- //# sourceMappingURL=BfkzHBdb.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BfkzHBdb.chunk.js","sources":["../../src/apps/interactives/views/interactive-engagement/InteractiveEngagementView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EngagementTable } from 'libs/shared/apps/analytics/components/engagement-table/EngagementTable';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests as SharedUserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\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 { Config, CurrentUser, Interactive, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { Engagement, IndividualEngagementResponse } from 'libs/shared/interfaces';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { PartialVideoEngagementOverlay } from 'shared/components/video-engagement-overlay/PartialVideoEngagementOverlay';\nimport { VideoEngagementOverlay } from 'shared/components/video-engagement-overlay/VideoEngagementOverlay';\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { useGetAppLinkFilterParams, useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useHandleVideoError } from 'shared/hooks/UseHandleVideoError';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\nimport { useSetEngagementAudienceSuggestions } from 'shared/hooks/UseSetEngagementAudienceSuggestions';\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 { ViewCountPieChartCardView } from 'shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView';\n\nimport { InteractiveNav } from 'apps/interactives/components/interactive-nav/InteractiveNav';\nimport { OnlineDataWarning } from 'apps/interactives/components/online-data-warning/OnlineDataWarning';\nimport { useNoResultsPopup } from 'apps/interactives/hooks/UseNoResultsPopup';\n\nimport styles from './interactive-engagement.module.scss';\n\nconst namespace = 'reportsInteractives.interactiveEngagement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveEngagementViewProps {\n interactiveMetadataId: string;\n}\n\nexport function InteractiveEngagementView(props: InteractiveEngagementViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n\n\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n const filterQueryParams = useGetAppLinkFilterParams();\n const requestFilter = useGetRequestFilter();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(SharedUserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveMetadataId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n !!currentUser.data && !!requestFilter &&\n VideoViewRequests.aggregateEngagement(props.interactiveMetadataId, requestFilter, currentUser.data.id)\n );\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(\n !!currentUser.data && !!requestFilter &&\n VideoViewRequests.individualEngagement(props.interactiveMetadataId, requestFilter, currentUser.data.id)\n );\n\n const { users, isLoading, usersResponse } = useChunkedUsersResponse(\n individualEngagement.data?.data?.map(d => d.userId)\n );\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.interactiveMetadataId, MediaIdType.MasterObject)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const results = useFetchInteractiveResults(props.interactiveMetadataId, requestFilter);\n\n useSetPageMetadata({ title: getPhrase('pageTitle', { interactive: interactiveMetadata.data?.name }) });\n\n useSetHeaderTitle(interactiveMetadata.data?.name);\n useSetHeaderActions(useGetObjectHeaderActions(interactiveMetadata.data));\n useSetEngagementAudienceSuggestions(props.interactiveMetadataId);\n useSetAudienceFilterCount(individualEngagement);\n useNoResultsPopup(props.interactiveMetadataId);\n\n useHandleVideoError(interactiveMetadata);\n useHandleObjectError([ interactive, aggregateEngagement, individualEngagement, ...usersResponse.responses, viewKey ]);\n useCannotConsumeError(interactiveMetadata);\n\n const hasInsightsPermission = hasShareFlowV2 && hasPermissions(PermissionName.ViewMyShares);\n\n const engagementOverlayDataLoaded = !!interactive.data\n && !!interactiveMetadata.data\n && !!aggregateEngagement.data\n && !!viewKey.data\n && !!config.data;\n\n const tableDataLoaded = !!individualEngagement.data && (!individualEngagement.data.data.length || !isLoading);\n\n return (\n <div className='pb-3'>\n <InteractiveNav interactiveMetadataId={props.interactiveMetadataId} hasInsights={hasInsightsPermission} />\n {results.data?.hasWatchedInLite === false && <div className='mb-3'><OnlineDataWarning /></div>}\n <div className='d-flex pb-3'>\n <div className={`pe-2 ${styles.viewCountContainer}`}>\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='h-100'\n />\n </div>\n <div className={`px-2 ${styles.engagementPercentageContainer}`}>\n <EngagementOverviewCardView\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='h-100'\n layout='vertical'\n />\n </div>\n <div className={`ps-2 ${styles.engagementGraphContainer}`}>\n {engagementOverlayDataLoaded\n ? <VideoEngagementOverlay\n // key is used to trigger player re-render\n key={getFilterParamsKey(filterQueryParams)}\n engagement={aggregateEngagement.data}\n viewKey={viewKey.data.viewKey}\n imageCdnUrl={config.data.imageCdnUrl}\n playerApiUrl={config.data.playerApiUrl}\n />\n : <PartialVideoEngagementOverlay />\n }\n </div>\n </div>\n {tableDataLoaded\n ? <EngagementTable\n key={getFilterParamsKey(filterQueryParams)}\n engagement={individualEngagement.data.data}\n users={users}\n imageCdnUrl={config.data?.imageCdnUrl}\n anonymiseUsers={anonymiseUsers}\n enableSort\n />\n : <PartialTable className={styles.partialTable} />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","InteractiveEngagementView","props","hasPermissions","usePermissions","hasShareFlowV2","useSettings","anonymiseUsers","useViewModel","ViewModelKeys","filterQueryParams","useGetAppLinkFilterParams","requestFilter","useGetRequestFilter","currentUser","Flight.useBasicFetch","SharedUserRequests","interactiveMetadata","InteractiveRequests","interactive","aggregateEngagement","VideoViewRequests","individualEngagement","users","isLoading","usersResponse","useChunkedUsersResponse","_b","_a","d","viewKey","PlayerRequests","MediaIdType","config","ConfigRequests","results","useFetchInteractiveResults","useSetPageMetadata","_c","useSetHeaderTitle","_d","useSetHeaderActions","useGetObjectHeaderActions","useSetEngagementAudienceSuggestions","useSetAudienceFilterCount","useNoResultsPopup","useHandleVideoError","useHandleObjectError","useCannotConsumeError","hasInsightsPermission","PermissionName","engagementOverlayDataLoaded","tableDataLoaded","jsxs","jsx","InteractiveNav","_e","OnlineDataWarning","styles","ViewCountPieChartCardView","EngagementOverviewCardView","VideoEngagementOverlay","getFilterParamsKey","PartialVideoEngagementOverlay","EngagementTable","_f","PartialTable"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{s as a,bD as l}from"./app-BqRx5tK8.js";import{g as o}from"./sFV5nxD4.chunk.js";const g={logins(e,s,t,r){return{url:a.urlBuilder("{gateway}/v1/analytics/logins",{...e,timeOffset:l.getTimezoneOffset()}),key:o("logins",e),normalize:!1,success:s,error:t,always:r}}};export{g as L};
2
- //# sourceMappingURL=BiDX0yuI.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BiDX0yuI.chunk.js","sources":["../../src/shared/flight-requests/LoginRequests.ts"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\n\nexport const LoginRequests = {\n logins(\n filter: AnalyticsRequestFilter,\n success?: (data: LoginEventResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/logins', {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n }),\n key: getAnalyticsRequestKey('logins', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};"],"names":["LoginRequests","filter","success","error","always","UrlHelper","DateHelper","getAnalyticsRequestKey"],"mappings":"sFAUO,MAAMA,EAAgB,CAC3B,OACEC,EACAC,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WAAW,gCAAiC,CACzD,GAAGJ,EACH,WAAYK,EAAW,kBAAA,CAAkB,CAC1C,EACD,IAAKC,EAAuB,SAAUN,CAAM,EAC5C,UAAW,GACX,QAAAC,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF"}
@@ -1,2 +0,0 @@
1
- import{ax as S,s as V,L as d,u as f,U as L,aM as q,C as b,az as C,aI as D,aw as P,e as U,ad as M,ar as O,j as s,X as k,w as F,T as p,a1 as g,bD as R}from"./app-BqRx5tK8.js";import{u as w}from"./DHqmPVfK.chunk.js";const h="shared.verifiedEmailError";class T extends S{constructor(t,r,a){super("VerifiedEmailRequiredError"),this.message=t,this.liteUrl=r,this.hasLite=a}get name(){return"VerifiedEmailRequiredError"}get dialogOptions(){const t=V.safeUrlConcat(this.liteUrl,"settings/account");return{title:d.getPhrase(h,"heading"),text:this.hasLite?`${this.message} ${d.getPhrase(h,"visitSettings",{href:t})}`:this.message,buttons:[{text:d.getPhrase(h,"close"),className:"btn btn-dark",success:!0}]}}}const z=()=>{var o;const e=f(L.currentUser()),t=f(((o=e.data)==null?void 0:o.isAuthenticated)&&q.userProducts()),r=!t.hasCompleted;return{hasProduct:n=>{var i;return r||t.hasError||!((i=t.data)!=null&&i.length)?!1:t.data.some(c=>c.id===n)},products:t,isLoadingProducts:r}};function H(){const e=w(),{hasProduct:t,isLoadingProducts:r}=z(),a=f(b.config());function o(n,i,c){var l;if(!n.responseJSON||((l=n.responseJSON)==null?void 0:l.type)!=="no-email"){e.error(i);return}C.throw(new T(c,a.data.liteUrl,t(D.Primary)))}return{handleGenerateReportError:o,loading:!a.hasCompleted||r}}function v(e){return{dateRange:{start:e.start,end:e.end},offsetInMin:Math.abs(new Date().getTimezoneOffset())}}const x={videoViewsReport(e,t){return{url:"{gateway}/v1/analytics/video-views/reports",key:"video:views:report",type:P.POST,data:{...v(e),version:t},invalidationKeys:"export",normalize:!1}},loginsReport(e,t,r,a){return{url:"{gateway}/v1/analytics/logins/reports",key:"logins:report",data:v(e),type:P.POST,normalize:!1,success:t,error:r,always:a}}},E="reportsShared.generateReport",u=d.encloseNamespace(E);function N(e){switch(e){case 0:return"loginsDescription";case 1:return"videosDescription";default:return""}}function m(e){const t=R.convertUTCToLocal(e).toString();return R.format(t,"Do MMMM YYYY")}var y=(e=>(e[e.Logins=0]="Logins",e[e.VideoViews=1]="VideoViews",e))(y||{});function A(e){const t=U(),r=w(),{loading:a,handleGenerateReportError:o}=H(),{hasShareFlowV2:n}=M(null),i=O();function c(){switch(e.type){case 0:return x.loginsReport(t);case 1:return x.videoViewsReport(t,n?"v3":"v2");default:return null}}function l(){i(c()).then(()=>r.success(u("success"))).catch(j=>o(j,u("error"),u("noEmailError"))).finally(e.closePopup)}return s.jsx(k.Provider,{value:E,children:s.jsxs(F,{title:u("title"),showLoadingSpinner:a,closePopup:e.closePopup,children:[s.jsx("p",{children:s.jsx(p,{phrase:N(e.type)})}),s.jsx("p",{children:s.jsx(p,{phrase:"dateRange",options:{dateFrom:m(t.start),dateTo:m(t.end)}})}),s.jsx("p",{children:s.jsx(p,{phrase:"emailDescription"})}),s.jsxs(g,{children:[s.jsx(g.Cancel,{onClick:e.closePopup}),s.jsx(g.Submit,{variant:"dark",onClick:l,text:u("generateReport")})]})]})})}const _=Object.freeze(Object.defineProperty({__proto__:null,GenerateReportType:y,GenerateReportView:A,getReportFriendlyDate:m},Symbol.toStringTag,{value:"Module"}));export{y as G,_ as a,m as g,H as u};
2
- //# sourceMappingURL=BkcNwg7K.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BkcNwg7K.chunk.js","sources":["../../../../libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","../../../../libs/shared/src/hooks/UseProducts.ts","../../../../libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","../../src/shared/flight-requests/ReportRequests.ts","../../src/shared/views/generate-report/GenerateReportView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite\n ? `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}`\n : this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { Flight } from 'libs/common/flight';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Product } from 'libs/shared/interfaces';\n\nexport type HasProductFunc = (productId: ProductId) => boolean;\n\nexport interface UseProductsResponse {\n hasProduct: (product: ProductId) => boolean;\n products: Flight.Response<Product[]>;\n isLoadingProducts: boolean;\n}\n\nexport const useProducts = (): UseProductsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const products = Flight.useBasicFetch<Product[]>(currentUser.data?.isAuthenticated && ProductRequests.userProducts());\n const isLoadingProducts = !products.hasCompleted;\n\n const hasProduct = (productId: ProductId) => {\n if (isLoadingProducts || products.hasError)\n return false;\n\n if (!products.data?.length)\n return false;\n\n return products.data.some(product => product.id === productId);\n };\n\n return {\n hasProduct,\n products,\n isLoadingProducts\n };\n};","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\ntype ReportVersion = 'v2' | 'v3';\n\ninterface DateRange {\n start: string;\n end: string;\n}\n\ninterface ReportRequestPayload {\n dateRange: DateRange,\n offsetInMin: number;\n userIds?: number[],\n groupsIds?: number[]\n}\n\nfunction formatReportRequest(filterParams: AnalyticsRequestFilter): ReportRequestPayload {\n return {\n dateRange: {\n start: filterParams.start,\n end: filterParams.end\n },\n offsetInMin: Math.abs(new Date().getTimezoneOffset())\n };\n}\n\nexport const ReportRequests = {\n videoViewsReport(\n filterParams: AnalyticsRequestFilter,\n version: ReportVersion\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/video-views/reports',\n key: 'video:views:report',\n type: HttpVerbs.POST,\n data: { ...formatReportRequest(filterParams), version },\n invalidationKeys: 'export',\n normalize: false\n };\n },\n\n loginsReport(\n filterParams: AnalyticsRequestFilter,\n success?: () => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/analytics/logins/reports',\n key: 'logins:report',\n data: formatReportRequest(filterParams),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { ReportRequests } from 'shared/flight-requests/ReportRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'reportsShared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLangPhrase(type: GenerateReportType): string {\n switch (type) {\n case GenerateReportType.Logins:\n return 'loginsDescription';\n\n case GenerateReportType.VideoViews:\n return 'videosDescription';\n\n default:\n return '';\n }\n}\n\nexport function getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\nexport enum GenerateReportType {\n Logins,\n VideoViews\n}\n\ninterface GenerateReportViewProps {\n type: GenerateReportType;\n}\n\nexport function GenerateReportView(props: PropsWithPopupViewProps<GenerateReportViewProps>): JSX.Element {\n const filterQueryParams = useGetRequestFilter();\n const alerts = useAlerts();\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n const { hasShareFlowV2 } = useSettings(null);\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n function getRequest(): Flight.Request {\n switch (props.type) {\n case GenerateReportType.Logins:\n return ReportRequests.loginsReport(filterQueryParams);\n\n case GenerateReportType.VideoViews:\n return ReportRequests.videoViewsReport(filterQueryParams, hasShareFlowV2 ? 'v3' : 'v2');\n\n default:\n return null;\n }\n }\n\n function onClick() {\n fetchAsync(getRequest())\n .then(() => alerts.success(getPhrase('success')))\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={loading}\n closePopup={props.closePopup}\n >\n <p>\n <Text phrase={getLangPhrase(props.type)} />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(filterQueryParams.start),\n dateTo: getReportFriendlyDate(filterQueryParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClick}\n text={getPhrase('generateReport')}\n />\n </PopupButtons>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}"],"names":["namespace","VerifiedEmailRequiredError","DialogError","message","liteUrl","hasLite","href","UrlHelper","LanguageService","useProducts","currentUser","Flight.useBasicFetch","UserRequests","products","_a","ProductRequests","isLoadingProducts","productId","product","useVerifiedEmailRequiredErrorHandler","alerts","useAlerts","hasProduct","config","ConfigRequests","handleGenerateReportError","xhr","noEmailError","Core.ErrorHelper","ProductId","formatReportRequest","filterParams","ReportRequests","version","HttpVerbs","success","error","always","getPhrase","getLangPhrase","type","getReportFriendlyDate","date","localDate","DateHelper","GenerateReportType","GenerateReportView","props","filterQueryParams","useGetRequestFilter","loading","hasShareFlowV2","useSettings","fetchAsync","Flight.useGetFetchAsync","getRequest","onClick","jsx","LanguageNamespaceContext","jsxs","Popup","Text","PopupButtons"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{c,r as E,V as l,j as a,L as p,aj as d,A as i,g as r,l as f,h as A,N as R,E as N}from"./app-BqRx5tK8.js";import{u as g}from"./CqyCLTzN.chunk.js";import{G as u}from"./BkcNwg7K.chunk.js";function w(e){const[,s]=c(l.HEADER_ACTIONS);E.useEffect(()=>(s(e),()=>{s(null)}),[!!e])}const x="reportsShared.anonymiseAction",T=p.encloseNamespace(x);function h(){const[e,s]=c(l.ANONYMISE_USERS,!1);return a.jsxs("div",{className:"d-flex align-items center justify-content-between",onClick:()=>s(!e),children:[a.jsx("span",{className:"me-3",children:T("hideNames")}),a.jsx(d,{on:e,onClick:()=>{}})]})}const j="reportsShared.utils",t=p.encloseNamespace(j);function L(e,s){const o=g(N.getPrimaryObjectUrl),m=s==null?void 0:s();if(!e)return;const n=[];return!m&&f.isInteractive(e)&&n.push({label:t("generateReport"),appLink:{application:r.INTERACTIVES,action:i.Interactives.GENERATE_REPORT,args:[e.id]}}),o&&n.push({label:()=>a.jsxs("span",{className:"d-flex justify-content-between align-items-center",children:[a.jsx("span",{className:"me-2",children:t("seeVideo")}),a.jsx(A,{svg:R})]}),href:o(e),openInNewTab:!0}),n.push({label:()=>a.jsx(h,{})}),n}function V(){return[{label:t("generateReport"),appLink:{application:r.DEFAULT,action:i.Default.GENERATE_REPORT,params:{type:u.VideoViews}}}]}function O(){return[{label:t("generateReport"),appLink:{application:r.DEFAULT,action:i.Default.GENERATE_REPORT,params:{type:u.Logins}}}]}export{L as a,V as b,O as g,w as u};
2
- //# sourceMappingURL=BlAGsOOw.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlAGsOOw.chunk.js","sources":["../../src/shared/hooks/UseSetHeaderActions.ts","../../src/shared/components/anonymise-action/AnonymiseAction.tsx","../../src/shared/utils/HeaderActionUtils.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\n/**\n * This hook will only set the actions on the initial render.\n * If the actions are dynamic, either this hook will need to be updated\n * or useViewModel used directly.\n */\nexport function useSetHeaderActions(actions?: DropdownActionOptions[]): void {\n const [ , setActions ] = useViewModel<DropdownActionOptions[]>(ViewModelKeys.HEADER_ACTIONS);\n\n useEffect(() => {\n setActions(actions);\n\n return () => {\n setActions(null);\n };\n }, [!!actions]);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nconst namespace = 'reportsShared.anonymiseAction';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AnonymiseAction(): JSX.Element {\n const [ anonymiseUsers, setAnonymiseUsers ] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS, false);\n\n return (\n <div\n className='d-flex align-items center justify-content-between'\n onClick={() => setAnonymiseUsers(!anonymiseUsers)}\n >\n <span className='me-3'>\n {getPhrase('hideNames')}\n </span>\n <ToggleSwitch on={anonymiseUsers} onClick={() => {}} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DropdownActionOptions } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { AnonymiseAction } from 'shared/components/anonymise-action/AnonymiseAction';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetExternalUrl } from 'shared/hooks/UseGetExternalUrl';\nimport { GenerateReportType } from 'shared/views/generate-report/GenerateReportView';\n\nimport { ExternalRouteHelper } from './ExternalRouteHelper';\n\nconst namespace = 'reportsShared.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGetObjectHeaderActions(object?: BaseObject, getInsightsUrl?: () => string): DropdownActionOptions[] {\n const getObjectUrl = useGetExternalUrl(ExternalRouteHelper.getPrimaryObjectUrl);\n const insightsUrl = getInsightsUrl?.();\n if (!object)\n return;\n\n const actions: DropdownActionOptions[] = [];\n\n if (!insightsUrl && VideoHelper.isInteractive(object)) {\n actions.push({\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.GENERATE_REPORT,\n args: [object.id]\n }\n });\n }\n\n if (getObjectUrl)\n actions.push({\n label: () => (\n <span\n className='d-flex justify-content-between align-items-center'\n >\n <span className='me-2'>\n {/* // TODO: once we have non-video types this will need to be updated. */}\n {getPhrase('seeVideo')}\n </span>\n <SvgContainer svg={NewWindowSvg} />\n </span>\n ),\n href: getObjectUrl(object),\n openInNewTab: true\n });\n\n /**\n * Hiding this for now until lite can handle showing 'View my analytics' popup\n * using query params / url\n */\n // if (insightsUrl)\n // actions.push({\n // label: () => (\n // <span\n // className='d-flex justify-content-between align-items-center'\n // >\n // <span className='me-2'>\n // {getPhrase('viewMyAnalytics')}\n // </span>\n // <SvgContainer svgName={cvSvgLibrary.NewWindow} />\n // </span>\n // ),\n // href: getObjectUrl(object),\n // openInNewTab: true\n // });\n\n actions.push({\n label: () => <AnonymiseAction />\n });\n\n return actions;\n}\n\nexport function getVideoHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.VideoViews }\n }\n }];\n}\n\nexport function getLoginHeaderActions(): DropdownActionOptions[] {\n return [{\n label: getPhrase('generateReport'),\n appLink: {\n application: AppChannels.DEFAULT,\n action: Actions.Default.GENERATE_REPORT,\n params: { type: GenerateReportType.Logins }\n }\n }];\n}"],"names":["useSetHeaderActions","actions","setActions","useViewModel","ViewModelKeys","useEffect","namespace","getPhrase","LanguageService","AnonymiseAction","anonymiseUsers","setAnonymiseUsers","jsxs","jsx","ToggleSwitch","useGetObjectHeaderActions","object","getInsightsUrl","getObjectUrl","useGetExternalUrl","ExternalRouteHelper","insightsUrl","VideoHelper","AppChannels","Actions","SvgContainer","NewWindowSvg","getVideoHeaderActions","GenerateReportType","getLoginHeaderActions"],"mappings":"+LAaO,SAASA,EAAoBC,EAAyC,CAC3E,KAAM,CAAA,CAAIC,CAAW,EAAIC,EAAsCC,EAAc,cAAc,EAE3FC,EAAAA,UAAU,KACRH,EAAWD,CAAO,EAEX,IAAM,CACXC,EAAW,IAAI,CACjB,GACC,CAAC,CAAC,CAACD,CAAO,CAAC,CAChB,CCdA,MAAMK,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASG,GAA+B,CAC7C,KAAM,CAAEC,EAAgBC,CAAkB,EAAIR,EAAsBC,EAAc,gBAAiB,EAAK,EAExG,OACEQ,EAAAA,KAAC,MAAA,CACC,UAAU,oDACV,QAAS,IAAMD,EAAkB,CAACD,CAAc,EAEhD,SAAA,CAAAG,MAAC,OAAA,CAAK,UAAU,OACb,SAAAN,EAAU,WAAW,EACxB,EACAM,EAAAA,IAACC,EAAA,CAAa,GAAIJ,EAAgB,QAAS,IAAM,CAAC,CAAA,CAAG,CAAA,CAAA,CAAA,CAG3D,CCRA,MAAMJ,EAAY,sBACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASS,EAA0BC,EAAqBC,EAAwD,CACrH,MAAMC,EAAeC,EAAkBC,EAAoB,mBAAmB,EACxEC,EAAcJ,GAAA,YAAAA,IACpB,GAAI,CAACD,EACH,OAEF,MAAMf,EAAmC,CAAA,EAEzC,MAAI,CAACoB,GAAeC,EAAY,cAAcN,CAAM,GAClDf,EAAQ,KAAK,CACX,MAAOM,EAAU,gBAAgB,EACjC,QAAS,CACP,YAAagB,EAAY,aACzB,OAAQC,EAAQ,aAAa,gBAC7B,KAAM,CAACR,EAAO,EAAE,CAAA,CAClB,CACD,EAGCE,GACFjB,EAAQ,KAAK,CACX,MAAO,IACLW,EAAAA,KAAC,OAAA,CACC,UAAU,oDAEV,SAAA,CAAAC,MAAC,OAAA,CAAK,UAAU,OAEb,SAAAN,EAAU,UAAU,EACvB,EACAM,EAAAA,IAACY,EAAA,CAAa,IAAKC,CAAA,CAAc,CAAA,CAAA,CAAA,EAGrC,KAAMR,EAAaF,CAAM,EACzB,aAAc,EAAA,CACf,EAsBHf,EAAQ,KAAK,CACX,MAAO,IAAMY,MAACJ,EAAA,CAAA,CAAgB,CAAA,CAC/B,EAEMR,CACT,CAEO,SAAS0B,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAOpB,EAAU,gBAAgB,EACjC,QAAS,CACP,YAAagB,EAAY,QACzB,OAAQC,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAMI,EAAmB,UAAA,CAAW,CAChD,CACD,CACH,CAEO,SAASC,GAAiD,CAC/D,MAAO,CAAC,CACN,MAAOtB,EAAU,gBAAgB,EACjC,QAAS,CACP,YAAagB,EAAY,QACzB,OAAQC,EAAQ,QAAQ,gBACxB,OAAQ,CAAE,KAAMI,EAAmB,MAAA,CAAO,CAC5C,CACD,CACH"}
@@ -1,2 +0,0 @@
1
- import{j as e,O as o,bF as C,L as j,e as x,u as l,o as g,a5 as w,U as f}from"./app-BqRx5tK8.js";import{M as v,V as d}from"./BE7zUNFh.chunk.js";import{u as T}from"./DxUueJN7.chunk.js";import{U as N,V as u,E as S,P as b}from"./CV5ioe9U.chunk.js";import{a as V,T as c}from"./D1U_fPVs.chunk.js";import{u as I}from"./CaiGBx50.chunk.js";const E="reportsShared.viewCountPieChartEmptyState",m=j.encloseNamespace(E);function y(t){return e.jsxs(o,{className:"flex-grow-1 justify-content-center",children:[e.jsx(o.Image,{src:C.EmptyStates.Shared.ViewCount,className:"w-75 h-auto pb-0"}),e.jsx(o.Heading,{children:m("heading")}),e.jsx(o.Info,{className:"w-100",children:m(t.singular?"descriptionSingular":"descriptionMultiple")})]})}const P="_topicColumn_yyw9h_1",p={topicColumn:P},F="reportsShared.viewCountByTopicCard",n=j.encloseNamespace(F);function h(t){const a=x(),i=l(!!a&&V.viewsByTopic(a,t.type));return i.data?i.data.length?e.jsx("div",{className:"h-100 me-n2",children:e.jsxs(g.Scrollbars,{height:"100%",className:"mt-2",children:[e.jsxs("div",{className:"d-flex align-items-center pe-1",children:[e.jsxs("div",{className:`d-flex flex-wrap pe-2 ${p.topicColumn}`,children:[e.jsx("strong",{className:"me-1",children:n(t.type===c.RootTopic?"subject":"topic")}),e.jsx("span",{className:"text-secondary",children:n(t.type===c.RootTopic?"multipleSubjects":"multipleTopics")})]}),e.jsx("strong",{children:n("views")})]}),e.jsx("ul",{className:"list-unstyled",children:i.data.map((s,r)=>e.jsx("li",{children:e.jsxs(w,{title:s.collection.name,spanHack:!0,spanHackClassName:"d-flex align-items-center pe-1",children:[e.jsx("div",{className:`py-2 pe-2 ${p.topicColumn}`,children:e.jsx(v,{data:s.collection})}),e.jsx("strong",{children:n("viewCount",{smartCount:s.count})})]})},r))})]})}):e.jsx(y,{}):e.jsx(e.Fragment,{})}function H(t){const a=x(),i=l(!!t.useSharerId&&f.currentUser()),s=l(!!a&&(t.useSharerId?i.hasCompleted&&d.views(a,t.objectId,i.data.id):d.views(a,t.objectId)));T(s),I(s);const r=!t.objectId;return e.jsx("div",{className:`bg-white rounded p-3 position-relative d-flex flex-column ${t.className??""}`,children:s.data?e.jsx(N,{eventType:S.VideoView,events:s.data,objectId:t.objectId,emptyStateComponent:e.jsx(y,{singular:!!t.objectId}),customGroupBy:r?[{type:u.Subject,getComponent:()=>e.jsx(h,{type:c.RootTopic})},{type:u.Topic,getComponent:()=>e.jsx(h,{type:c.ChildTopic})}]:null}):e.jsx(b,{})})}export{H as V};
2
- //# sourceMappingURL=BmScDBcl.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BmScDBcl.chunk.js","sources":["../../src/shared/views/overview-cards/view-count-pie-chart-card/components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState.tsx","../../src/shared/views/overview-cards/view-count-pie-chart-card/components/view-count-by-topic/ViewCountByTopicCard.tsx","../../src/shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView.tsx"],"sourcesContent":["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\nconst namespace = 'reportsShared.viewCountPieChartEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ViewCountPieChartEmptyStateProps {\n singular?: boolean;\n}\n\nexport function ViewCountPieChartEmptyState(props: ViewCountPieChartEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.ViewCount}\n className='w-75 h-auto pb-0'\n />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase(props.singular ? 'descriptionSingular' : 'descriptionMultiple')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","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 { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\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';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport {\n ViewCountPieChartEmptyState\n} from 'shared/views/overview-cards/view-count-pie-chart-card/components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState';\n\nimport styles from './view-count-by-topic-card.module.scss';\n\nconst namespace = 'reportsShared.viewCountByTopicCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ViewCountByTopicCardProps {\n type: TopicAnalyticsType;\n}\n\nexport function ViewCountByTopicCard(props: ViewCountByTopicCardProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const viewsByTopic = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.viewsByTopic(requestFilter, props.type));\n\n if (!viewsByTopic.data)\n return <></>;\n\n if (!viewsByTopic.data.length)\n return <ViewCountPieChartEmptyState />;\n\n return (\n <div className='h-100 me-n2'>\n <Scrollbars height='100%' className='mt-2'>\n <div className='d-flex align-items-center pe-1'>\n <div className={`d-flex flex-wrap pe-2 ${styles.topicColumn}`}>\n <strong className='me-1'>\n {getPhrase(props.type === TopicAnalyticsType.RootTopic ? 'subject' : 'topic')}\n </strong>\n <span className='text-secondary'>\n {getPhrase(props.type === TopicAnalyticsType.RootTopic ? 'multipleSubjects' : 'multipleTopics')}\n </span>\n </div>\n <strong>{getPhrase('views')}</strong>\n </div>\n <ul className='list-unstyled'>\n {viewsByTopic.data.map((v, idx) => (\n <li key={idx}>\n <Tooltip\n title={v.collection.name}\n spanHack\n spanHackClassName='d-flex align-items-center pe-1'\n >\n <div className={`py-2 pe-2 ${styles.topicColumn}`}>\n <SubjectWidgetItem data={v.collection} />\n </div>\n <strong>\n {getPhrase('viewCount', { smartCount: v.count })}\n </strong>\n </Tooltip>\n </li>\n ))}\n </ul>\n </Scrollbars>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserRequests as SharedUserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PartialUserActivityPieChart } from 'shared/components/user-activity-pie-chart/partial-loading/PartialUserActivityPieChart';\nimport { UserActivityPieChart } from 'shared/components/user-activity-pie-chart/UserActivityPieChart';\nimport { VideoViewGroupBy } from 'shared/components/user-activity-pie-chart/utils/UserActivityPieChartTypes';\nimport { EventType } from 'shared/enums/EventType';\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\n\nimport { ViewCountByTopicCard } from './components/view-count-by-topic/ViewCountByTopicCard';\nimport { ViewCountPieChartEmptyState } from './components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState';\n\ninterface ViewCountPieChartCardViewProps {\n /**\n * className is required as a height must be specified.\n */\n className: string;\n objectId?: string;\n useSharerId?: boolean;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ViewCountPieChartCardView(props: ViewCountPieChartCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(!!props.useSharerId && SharedUserRequests.currentUser());\n\n const views = Flight.useBasicFetch<VideoViewEventResponse>(!!requestFilter && (props.useSharerId\n ? currentUser.hasCompleted &&\n VideoViewRequests.views(requestFilter, props.objectId, currentUser.data.id)\n : VideoViewRequests.views(requestFilter, props.objectId)\n ));\n\n useHandleObjectError(views);\n useSetAudienceFilterCount(views);\n\n const displayTopicFilters = !props.objectId;\n\n return (\n <div className={`bg-white rounded p-3 position-relative d-flex flex-column ${props.className ?? ''}`}>\n {views.data\n ? <UserActivityPieChart\n eventType={EventType.VideoView}\n events={views.data}\n objectId={props.objectId}\n emptyStateComponent={<ViewCountPieChartEmptyState singular={!!props.objectId} />}\n customGroupBy={displayTopicFilters ? [\n {\n type: VideoViewGroupBy.Subject,\n getComponent: () => <ViewCountByTopicCard type={TopicAnalyticsType.RootTopic} />\n },\n {\n type: VideoViewGroupBy.Topic,\n getComponent: () => <ViewCountByTopicCard type={TopicAnalyticsType.ChildTopic} />\n }\n ] : null}\n />\n : <PartialUserActivityPieChart />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ViewCountPieChartEmptyState","props","jsxs","EmptyState","jsx","ImageUrls","ViewCountByTopicCard","requestFilter","useGetRequestFilter","viewsByTopic","Flight.useBasicFetch","TopicRequests","Scrollbars","styles","TopicAnalyticsType","v","idx","Tooltip","SubjectWidgetItem","Fragment","ViewCountPieChartCardView","currentUser","SharedUserRequests","views","VideoViewRequests","useHandleObjectError","useSetAudienceFilterCount","displayTopicFilters","UserActivityPieChart","EventType","VideoViewGroupBy","PartialUserActivityPieChart"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{bS as I,ah as M,j as t,L as j,a5 as P,bT as p,p as h,bU as y,c as O,u as x,bO as N,bV as D,bW as H,w as T,a9 as E,C as B}from"./app-BqRx5tK8.js";import{u as V}from"./UWjf2h5X.chunk.js";import{I as $,a as q,u as W}from"./CKLfLzhr.chunk.js";import{a as F}from"./DU5sOcpt.chunk.js";import{g as _,a as G,d as L,I as z,e as K,f as Y}from"./cRQEJA0-.chunk.js";import{I as J}from"./ClcYw2ra.chunk.js";import{u as Q}from"./Fd0gT6QK.chunk.js";import{u as X}from"./DxUueJN7.chunk.js";import"./sFV5nxD4.chunk.js";import"./DHqmPVfK.chunk.js";import"./xkqdG021.chunk.js";import"./CXhesQTd.chunk.js";import"./BUM8Ub4p.chunk.js";import"./5O9SdVRZ.chunk.js";const Z={getAudienceAppLinkParams:()=>{const{appLink:e}=I.getCurrentRoute(),s=M.isObject(e.params)?e.params:{},{users:n,classrooms:o,classroomGroups:c}=s,a=u=>{const r=s[u];if(r)return Array.isArray(r)?r:[r]},i={};return n&&(i.users=a("users")),o&&(i.classrooms=a("classrooms")),c&&(i.classroomGroups=a("classroomGroups")),i},getDateRangeAppLinkParams:()=>{const{appLink:e}=I.getCurrentRoute(),s=M.isObject(e.params)?e.params:{},{from:n,to:o,rangeName:c}=s,a={};return n&&(a.from=n),o&&(a.to=o),c&&(a.rangeName=c),a}},ee="interactives.studentResponseList",f=j.encloseNamespace(ee);function te(e){const s=Object.keys(e.markedAnswers).length;return t.jsx("div",{className:"d-flex justify-content-end pt-3",children:t.jsxs("div",{children:[!e.showSubmitButtonSpinner&&t.jsx("button",{className:"btn btn-link",onClick:e.onClickClose,children:f("close")}),!!e.interactionsToMark.length&&t.jsx(t.Fragment,{children:e.isDemo?t.jsx(P,{id:"submitAnswers",title:f("demoOnly"),spanHack:!0,spanHackClassName:"d-inline-flex",children:t.jsx("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!s,children:f("submitAnswers")})}):t.jsx(p,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!s,showSpinner:e.showSubmitButtonSpinner,children:f("submitAnswers")})})]})})}const se="interactives.studentResponseList",m=j.encloseNamespace(se);function ne(e){const s=Object.keys(e.markedAnswers).length;return t.jsxs("div",{className:"d-flex justify-content-between pb-3",children:[t.jsxs("div",{className:"d-flex",children:[!!e.summary.unanswered&&t.jsxs("div",{className:"bg-light rounded p-2 me-2",children:[t.jsx("strong",{className:"me-2",children:m("unanswered")}),e.summary.unanswered]}),t.jsxs("div",{className:"bg-light rounded p-2 me-2",children:[t.jsx("strong",{className:"me-2",children:m("score")}),e.summary.awaitingMarking?t.jsx("em",{children:m("pending")}):`${Math.round(e.summary.percentCorrect*100)}%`]})]}),!!e.interactionsToMark.length&&t.jsx(t.Fragment,{children:e.isDemo?t.jsx(P,{id:"submitAnswers",title:m("demoOnly"),spanHack:!0,children:t.jsx("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!s,children:m("submitAnswers")})}):t.jsx(p,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!s,showSpinner:e.showSubmitButtonSpinner,children:m("submitAnswers")})})]})}const ae="_awaitingMarking_1nhv5_1",re={awaitingMarking:ae};function ie(e,s){return e.filter(n=>z.isInteractionCorrect(n,K(s))===Y.AwaitingMarking)}function oe(){const e=h.useRef(null),[s,n]=h.useState(!1);return h.useEffect(()=>{!e.current||s||(n(!0),requestAnimationFrame(()=>e.current.scrollIntoView({behavior:"smooth",block:"center"})))},[e.current,s]),e}function ce(e){const[s,n]=h.useState(!1),o=oe(),c=_(e.interactive,e.studentResults),a=G(e.interactive),i=ie(a,e.studentResults);function u(){n(!0),e.submitMarkedAnswers()}return t.jsxs(t.Fragment,{children:[t.jsx(ne,{summary:c,interactionsToMark:i,markedAnswers:e.markedAnswers,onClickSubmit:u,showSubmitButtonSpinner:s,isDemo:e.isDemo}),t.jsx("ul",{className:"list-unstyled",children:a.map((r,w)=>{var k;const l=r.id.toString()===((k=e.selectedInteractionId)==null?void 0:k.toString()),S=i.some(b=>b.id===r.id),g=F(e.studentResults.user,e.anonymiseUsers);let d="p-2 mb-3 rounded";return l&&(d+=" border-2 border-info shadow"),S?d+=` ${re.awaitingMarking}`:d+=" border",t.jsxs("li",{className:d,ref:l?o:null,children:[t.jsx("div",{className:"d-flex mb-2",children:t.jsx(J,{interaction:r,iconClassName:"flex-shrink-0"})}),e.reportsStyling?t.jsx($,{interaction:r,studentResults:e.studentResults,markedStatus:L(r.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:g,className:"bg-light ps-2",showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):t.jsx(q,{interaction:r,studentResults:e.studentResults,markedStatus:L(r.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:g,showFeedback:!0})]},w)})}),t.jsx(te,{interactionsToMark:i,markedAnswers:e.markedAnswers,onClickSubmit:u,onClickClose:e.onClickClose,showSubmitButtonSpinner:s,isDemo:e.isDemo})]})}function de(){h.useEffect(()=>(y.lockContentWidth(),()=>y.unlockContentWidth()),[])}const ue="shared.interactiveStudentResults",le=j.encloseNamespace(ue);function Ie(e){var d,k,b,C;const[s]=O(E.ANONYMISE_USERS);de();const n=x(N.interactiveMetadata(e.interactiveId)),o=x(((d=n.data)==null?void 0:d.interactiveId)&&N.interactive(n.data.interactiveId)),c=Z.getDateRangeAppLinkParams(),a=V(e.interactiveId,D(H(),c)),i=x(B.config());X([n,a]),Q(n);const{markedAnswers:u,addMarkedAnswers:r,submitMarkedAnswers:w}=W((k=o.data)==null?void 0:k.id,(b=n.data)==null?void 0:b.id,e.closePopup),l=(C=a.data)==null?void 0:C.students.find(U=>{var R,A,v;return((A=(R=U.user)==null?void 0:R.id)==null?void 0:A.toString())===((v=e.userId)==null?void 0:v.toString())}),S=l?le("heading",{studentName:F(l.user,s)}):"",g=!!o.data&&!!a.data&&!!i.data;return t.jsx(T,{title:S,showLoadingSpinner:!g,closePopup:e.closePopup,size:"lg",children:g&&t.jsx(ce,{interactive:o.data,studentResults:l,markedAnswers:u,addMarkedAnswers:r,submitMarkedAnswers:w,imageCdnUrl:i.data.imageCdnUrl,selectedInteractionId:e.interactionId,onClickClose:e.closePopup,anonymiseUsers:s,reportsStyling:!0})})}export{Ie as InteractiveStudentResultsView};
2
- //# sourceMappingURL=BnqNywwJ.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BnqNywwJ.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","../../../../libs/shared/src/apps/student-response-list/StudentResponseListFooter.tsx","../../../../libs/shared/src/apps/student-response-list/StudentResponseListHeader.tsx","../../../../libs/shared/src/apps/student-response-list/StudentResponseList.tsx","../../../../libs/shared/src/hooks/useLockContentWidth.ts","../../../../libs/shared/src/apps/analytics/views/interactive-student-results/InteractiveStudentResultsView.tsx"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListFooterProps {\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n onClickClose: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListFooter(props: StudentResponseListFooterProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-end pt-3'>\n <div>\n {!props.showSubmitButtonSpinner &&\n <button className='btn btn-link' onClick={props.onClickClose}>\n {getPhrase('close')}\n </button>\n }\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip\n id='submitAnswers'\n title={getPhrase('demoOnly')}\n spanHack\n spanHackClassName='d-inline-flex'\n >\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Interaction } from 'libs/shared/interfaces';\n\nconst namespace = 'interactives.studentResponseList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResponseListHeaderProps {\n summary: ResultsSummary;\n interactionsToMark: Interaction[];\n markedAnswers: MarkedAnswerHash;\n onClickSubmit: () => void;\n showSubmitButtonSpinner: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseListHeader(props: StudentResponseListHeaderProps): JSX.Element {\n const numMarkedAnswers = Object.keys(props.markedAnswers).length;\n\n return (\n <div className='d-flex justify-content-between pb-3'>\n <div className='d-flex'>\n {!!props.summary.unanswered &&\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('unanswered')}</strong>\n {props.summary.unanswered}\n </div>\n }\n <div className='bg-light rounded p-2 me-2'>\n <strong className='me-2'>{getPhrase('score')}</strong>\n {props.summary.awaitingMarking\n ? <em>{getPhrase('pending')}</em>\n : `${Math.round(props.summary.percentCorrect * 100)}%`\n }\n </div>\n </div>\n {!!props.interactionsToMark.length && (\n <>\n {props.isDemo ? (\n <Tooltip id='submitAnswers' title={getPhrase('demoOnly')} spanHack>\n <button\n className='btn btn-outline-dark pointer-events-none'\n disabled={!numMarkedAnswers}\n >\n {getPhrase('submitAnswers')}\n </button>\n </Tooltip>\n ) : (\n <SpinnerButton\n variant='outline-dark'\n onClick={props.onClickSubmit}\n disabled={!numMarkedAnswers}\n showSpinner={props.showSubmitButtonSpinner}\n >\n {getPhrase('submitAnswers')}\n </SpinnerButton>\n )}\n </>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { InteractionResponseItem } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem';\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getMarkedStatus, getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionResponse } from 'libs/shared/components/interaction-response/InteractionResponse';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, Interactive, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getInteractions, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport { StudentResponseListFooter } from './StudentResponseListFooter';\nimport { StudentResponseListHeader } from './StudentResponseListHeader';\n\nimport styles from './student-response-list.module.scss';\n\nfunction getInteractionsToMark(\n interactions: Interaction[],\n studentResults: StudentResults\n): Interaction[] {\n return interactions.filter(i => {\n return InteractiveCorrectnessHelper.isInteractionCorrect(\n i,\n getStudentResult(studentResults)\n ) === InteractionCorrectness.AwaitingMarking;\n });\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nfunction useScrollSelectedInteractionIntoView(): React.MutableRefObject<HTMLLIElement> {\n const ref = React.useRef<HTMLLIElement>(null);\n const [ scrolled, setScrolled ] = React.useState(false);\n\n // Only scroll once\n React.useEffect(() => {\n if (!ref.current || scrolled)\n return;\n\n setScrolled(true);\n requestAnimationFrame(() => ref.current.scrollIntoView({ behavior: 'smooth', block: 'center' }));\n }, [ ref.current, scrolled ]);\n\n return ref;\n}\n\ninterface StudentResponseListProps {\n interactive: Interactive;\n markedAnswers: MarkedAnswerHash;\n studentResults: StudentResults;\n addMarkedAnswers: (answer: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n submitMarkedAnswers: () => void;\n onClickClose: () => void;\n imageCdnUrl: string;\n selectedInteractionId?: string;\n anonymiseUsers: boolean;\n reportsStyling?: boolean;\n isDemo?: boolean;\n}\n\nexport function StudentResponseList(props: StudentResponseListProps): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n const selectedInteractionRef = useScrollSelectedInteractionIntoView();\n\n const summary = getStudentResultsSummary(props.interactive, props.studentResults);\n const interactions = getInteractions(props.interactive);\n const questionsToMark = getInteractionsToMark(interactions, props.studentResults);\n\n function onClickSubmit(): void {\n setShowSpinner(true);\n props.submitMarkedAnswers();\n }\n\n return (\n <>\n <StudentResponseListHeader\n summary={summary}\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n <ul className='list-unstyled'>\n {interactions.map((interaction, idx) => {\n const isSelected = interaction.id.toString() === props.selectedInteractionId?.toString();\n const markingRequired = questionsToMark.some(q => q.id === interaction.id);\n const anonymisedUserName = anonymiseUserName(\n props.studentResults.user,\n props.anonymiseUsers\n );\n\n let className = 'p-2 mb-3 rounded';\n\n if (isSelected)\n className += ' border-2 border-info shadow';\n\n if (markingRequired)\n className += ` ${styles.awaitingMarking}`;\n else\n className += ' border';\n\n return (\n <li key={idx} className={className} ref={isSelected ? selectedInteractionRef : null}>\n <div className='d-flex mb-2'>\n <InteractionLabel\n interaction={interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n {props.reportsStyling ? (\n <InteractionResponse\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n className='bg-light ps-2'\n showFeedback\n reportsStyling\n responseComponentClass='mx-n2'\n />\n ) : (\n <InteractionResponseItem\n interaction={interaction}\n studentResults={props.studentResults}\n markedStatus={getMarkedStatus(interaction.id, props.studentResults, props.markedAnswers)}\n markInteraction={props.addMarkedAnswers}\n imageCdnUrl={props.imageCdnUrl}\n anonymisedUserName={anonymisedUserName}\n showFeedback\n />\n )}\n </li>\n );\n })}\n </ul>\n <StudentResponseListFooter\n interactionsToMark={questionsToMark}\n markedAnswers={props.markedAnswers}\n onClickSubmit={onClickSubmit}\n onClickClose={props.onClickClose}\n showSubmitButtonSpinner={showSpinner}\n isDemo={props.isDemo}\n />\n </>\n );\n}","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { useMarkAnswers } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { StudentResponseList } from 'libs/shared/apps/student-response-list/StudentResponseList';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { Config, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveStudentResults';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveStudentResultsViewProps extends PopupViewProps {\n userId: string;\n interactiveId: string;\n interactionId?: string;\n}\n\nexport function InteractiveStudentResultsView(props: InteractiveStudentResultsViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(\n props.interactiveId,\n getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n useHandleObjectError([ interactiveMetadata, results ]);\n useCannotConsumeError(interactiveMetadata);\n\n const { markedAnswers, addMarkedAnswers, submitMarkedAnswers } = useMarkAnswers(\n interactive.data?.id,\n interactiveMetadata.data?.id,\n props.closePopup\n );\n\n const studentResults = results.data?.students.find(s => s.user?.id?.toString() === props.userId?.toString());\n\n const popupTitle = studentResults\n ? getPhrase('heading', { studentName: anonymiseUserName(studentResults.user, anonymiseUsers) })\n : '';\n const dataLoaded = !!interactive.data && !!results.data && !!config.data;\n\n return (\n <Popup\n title={popupTitle}\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n size='lg'\n >\n {dataLoaded &&\n <StudentResponseList\n interactive={interactive.data}\n studentResults={studentResults}\n markedAnswers={markedAnswers}\n addMarkedAnswers={addMarkedAnswers}\n submitMarkedAnswers={submitMarkedAnswers}\n imageCdnUrl={config.data.imageCdnUrl}\n selectedInteractionId={props.interactionId}\n onClickClose={props.closePopup}\n anonymiseUsers={anonymiseUsers}\n reportsStyling\n />\n }\n </Popup>\n );\n}\n"],"names":["AnalyticsFilterHelper","appLink","ContextService","params","ObjectHelper","users","classrooms","classroomGroups","getParam","key","param","audienceFilters","from","to","rangeName","dateRangeFilters","namespace","getPhrase","LanguageService","StudentResponseListFooter","props","numMarkedAnswers","jsx","Fragment","Tooltip","SpinnerButton","StudentResponseListHeader","jsxs","getInteractionsToMark","interactions","studentResults","i","InteractiveCorrectnessHelper","getStudentResult","InteractionCorrectness","useScrollSelectedInteractionIntoView","ref","React","scrolled","setScrolled","StudentResponseList","showSpinner","setShowSpinner","selectedInteractionRef","summary","getStudentResultsSummary","getInteractions","questionsToMark","onClickSubmit","interaction","idx","isSelected","_a","markingRequired","q","anonymisedUserName","anonymiseUserName","className","styles","InteractionLabel","InteractionResponse","getMarkedStatus","InteractionResponseItem","useLockContentWidth","LayoutHelper","InteractiveStudentResultsView","anonymiseUsers","useViewModel","SharedViewModelKeys","interactiveMetadata","Flight.useBasicFetch","InteractiveRequests","interactive","dateRangeAppLinkParams","results","useFetchInteractiveResults","getStartEndParams","getInsightsDateRangePresets","config","ConfigRequests","useHandleObjectError","useCannotConsumeError","markedAnswers","addMarkedAnswers","submitMarkedAnswers","useMarkAnswers","_b","_c","_d","s","popupTitle","dataLoaded","Popup"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{cT as $}from"./app-BqRx5tK8.js";const u=(n,s,e)=>{n=n.toString();const t=s-n.length;return t<=0?n:new Array(t+1).join(e)+n},c={ToDisplayDuration(n,s){if(!$(n))return"";const e=new Date(n),t=e.getUTCHours(),r=u(e.getUTCMinutes(),2,"0"),o=u(e.getUTCSeconds(),2,"0");return s||t>0?`${t}:${r}:${o}`:`${r}:${o}`},ToDisplayDurationNewStyle(n,s){if(!$(n))return"";const e=new Date(n),t=e.getUTCHours();let r=e.getUTCMinutes();const o=e.getUTCSeconds();if((t>0||r>0)&&o>=30&&(r=r+1),t>0){const i=t>1?"hrs":"hr";return r>0?s&&o>0?`${t}${i} ${r}m ${o}s`:`${t}${i} ${r}m `:`${t} ${i}`}return r>0?s&&o>0?`${r}m ${o}s`:`${r}m`:`${o}s`}};export{c as D};
2
- //# sourceMappingURL=BrLXFCMV.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrLXFCMV.chunk.js","sources":["../../../../libs/shared/src/utils/DurationHelper.ts"],"sourcesContent":["import * as _ from 'underscore';\n\nconst padLeft = (value: string | number, totalLength: number, padChar: string) => {\n value = value.toString();\n\n const diff = totalLength - value.length;\n\n if (diff <= 0)\n return value;\n\n return new Array(diff + 1).join(padChar) + value;\n};\n\nconst DurationHelper = {\n /**\n * Copypasta from Online. Feel free to improve it if you see fit - Sha\n */\n ToDisplayDuration(milliseconds: number, showAll?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n \n const time = new Date(milliseconds);\n \n const h = time.getUTCHours();\n const m = padLeft(time.getUTCMinutes(), 2, '0');\n const s = padLeft(time.getUTCSeconds(), 2, '0');\n \n if (showAll || h > 0) {\n return `${h}:${m}:${s}`;\n }\n \n return `${m}:${s}`;\n },\n\n ToDisplayDurationNewStyle(milliseconds: number, includeSeconds?: boolean): string {\n if (!_.isNumber(milliseconds))\n return '';\n\n const time = new Date(milliseconds);\n\n const h = time.getUTCHours();\n let m = time.getUTCMinutes();\n const s = time.getUTCSeconds();\n\n // Round up 1m when >= 30s\n if ((h > 0 || m > 0) && s >= 30) {\n m = m + 1;\n }\n \n if (h > 0) {\n const hourUnit = h > 1 ? 'hrs' : 'hr';\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${h}${hourUnit} ${m}m ${s}s`;\n }\n\n return `${h}${hourUnit} ${m}m `;\n }\n \n return `${h} ${hourUnit}`;\n }\n\n if (m > 0) {\n if (includeSeconds && s > 0) {\n return `${m}m ${s}s`;\n }\n\n return `${m}m`;\n }\n\n return `${s}s`;\n }\n};\n\nexport { DurationHelper };"],"names":["padLeft","value","totalLength","padChar","diff","DurationHelper","milliseconds","showAll","_.isNumber","time","h","m","s","includeSeconds","hourUnit"],"mappings":"uCAEA,MAAMA,EAAU,CAACC,EAAwBC,EAAqBC,IAAoB,CAChFF,EAAQA,EAAM,SAAA,EAEd,MAAMG,EAAOF,EAAcD,EAAM,OAEjC,OAAIG,GAAQ,EACHH,EAEF,IAAI,MAAMG,EAAO,CAAC,EAAE,KAAKD,CAAO,EAAIF,CAC7C,EAEMI,EAAiB,CAIrB,kBAAkBC,EAAsBC,EAA2B,CACjE,GAAI,CAACC,EAAWF,CAAY,EAC1B,MAAO,GAET,MAAMG,EAAO,IAAI,KAAKH,CAAY,EAE5BI,EAAID,EAAK,YAAA,EACTE,EAAIX,EAAQS,EAAK,cAAA,EAAiB,EAAG,GAAG,EACxCG,EAAIZ,EAAQS,EAAK,cAAA,EAAiB,EAAG,GAAG,EAE9C,OAAIF,GAAWG,EAAI,EACV,GAAGA,CAAC,IAAIC,CAAC,IAAIC,CAAC,GAGhB,GAAGD,CAAC,IAAIC,CAAC,EAClB,EAEA,0BAA0BN,EAAsBO,EAAkC,CAChF,GAAI,CAACL,EAAWF,CAAY,EAC1B,MAAO,GAET,MAAMG,EAAO,IAAI,KAAKH,CAAY,EAE5BI,EAAID,EAAK,YAAA,EACf,IAAIE,EAAIF,EAAK,cAAA,EACb,MAAMG,EAAIH,EAAK,cAAA,EAOf,IAJKC,EAAI,GAAKC,EAAI,IAAMC,GAAK,KAC3BD,EAAIA,EAAI,GAGND,EAAI,EAAG,CACT,MAAMI,EAAWJ,EAAI,EAAI,MAAQ,KAEjC,OAAIC,EAAI,EACFE,GAAkBD,EAAI,EACjB,GAAGF,CAAC,GAAGI,CAAQ,IAAIH,CAAC,KAAKC,CAAC,IAG5B,GAAGF,CAAC,GAAGI,CAAQ,IAAIH,CAAC,KAGtB,GAAGD,CAAC,IAAII,CAAQ,EACzB,CAEA,OAAIH,EAAI,EACFE,GAAkBD,EAAI,EACjB,GAAGD,CAAC,KAAKC,CAAC,IAGZ,GAAGD,CAAC,IAGN,GAAGC,CAAC,GACb,CACF"}
@@ -1,2 +0,0 @@
1
- import{a as e,L as a,j as o}from"./app-BqRx5tK8.js";import{u as t}from"./C6H2bU7H.chunk.js";import{V as i}from"./CXK1uNgx.chunk.js";import{T as m,b as c,a as p}from"./DmGrKXgL.chunk.js";import"./BE7zUNFh.chunk.js";import"./sFV5nxD4.chunk.js";import"./DMoPMSgN.chunk.js";import"./DJLuyZJi.chunk.js";import"./ByllnMKt.chunk.js";import"./DxUueJN7.chunk.js";import"./DAocQXXC.chunk.js";import"./Dp_vnjo0.chunk.js";import"./BMba67Uf.chunk.js";import"./CaiGBx50.chunk.js";import"./CrlegiVC.chunk.js";import"./DWv8V3Lc.chunk.js";import"./CqyCLTzN.chunk.js";import"./D1U_fPVs.chunk.js";import"./Bt3gUzzG.chunk.js";import"./D_Erj5Yn.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./CwyVC768.chunk.js";import"./DHqmPVfK.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./xkqdG021.chunk.js";import"./CdzMtbgC.chunk.js";import"./B_1LOG5E.chunk.js";import"./BUM8Ub4p.chunk.js";const l="_column1_1xf0u_1",n="_column2_1xf0u_4",d="_column3_1xf0u_7",u="_topSearches_1xf0u_11",x="_topTopics_1xf0u_14",h="_barChart_1xf0u_17",r={column1:l,column2:n,column3:d,topSearches:u,topTopics:x,barChart:h},_="reportsDashboard.teacherOverviewDashboard",s=a.encloseNamespace(_);function K(){return e({title:s("dashboard")}),t(s("dashboard")),o.jsx("div",{children:o.jsxs("div",{className:"d-flex",children:[o.jsxs("div",{className:`d-flex flex-column ${r.column1}`,children:[o.jsx("div",{className:"pb-3",children:o.jsx(m,{className:r.topSearches})}),o.jsx(c,{className:r.topTopics})]}),o.jsx("div",{className:`${r.column2} px-3`,children:o.jsx(p,{})}),o.jsx("div",{className:`d-flex flex-column ${r.column3}`,children:o.jsx(i,{className:r.barChart})})]})})}export{K as TeacherOverviewDashboardView};
2
- //# sourceMappingURL=BsFynggy.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BsFynggy.chunk.js","sources":["../../src/apps/dashboard/views/teacher-overview-dashboard/TeacherOverviewDashboardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { ViewCountBarChartCardView } from 'shared/views/overview-cards/view-count-bar-chart-card/ViewCountBarChartCardView';\n\nimport { TopSearchesCardView } from 'apps/dashboard/views/overview-cards/top-searches/TopSearchesCardView';\nimport { TopTopicsCardView } from 'apps/dashboard/views/overview-cards/top-topics/TopTopicsCardView';\nimport { TopVideosCardView } from 'apps/dashboard/views/overview-cards/top-videos/TopVideosCardView';\n\nimport styles from './teacher-overview-dashboard.module.scss';\n\nconst namespace = 'reportsDashboard.teacherOverviewDashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TeacherOverviewDashboardView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('dashboard') });\n useSetHeaderTitle(getPhrase('dashboard'));\n\n return (\n <div>\n <div className='d-flex'>\n <div className={`d-flex flex-column ${styles.column1}`}>\n <div className='pb-3'>\n <TopSearchesCardView className={styles.topSearches} />\n </div>\n <TopTopicsCardView className={styles.topTopics} />\n </div>\n <div className={`${styles.column2} px-3`}>\n <TopVideosCardView />\n </div>\n <div className={`d-flex flex-column ${styles.column3}`}>\n <ViewCountBarChartCardView className={styles.barChart} />\n </div>\n </div>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","TeacherOverviewDashboardView","useSetPageMetadata","useSetHeaderTitle","jsx","jsxs","styles","TopSearchesCardView","TopTopicsCardView","TopVideosCardView","ViewCountBarChartCardView"],"mappings":"umCAeMA,EAAY,4CACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAErD,SAASG,GAA4C,CAC1D,OAAAC,EAAmB,CAAE,MAAOH,EAAU,WAAW,EAAG,EACpDI,EAAkBJ,EAAU,WAAW,CAAC,EAGtCK,EAAAA,IAAC,MAAA,CACC,SAAAC,EAAAA,KAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAA,OAAC,MAAA,CAAI,UAAW,sBAAsBC,EAAO,OAAO,GAClD,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAACG,GAAoB,UAAWD,EAAO,YAAa,CAAA,CACtD,EACAF,EAAAA,IAACI,EAAA,CAAkB,UAAWF,EAAO,SAAA,CAAW,CAAA,EAClD,EACAF,EAAAA,IAAC,OAAI,UAAW,GAAGE,EAAO,OAAO,QAC/B,SAAAF,EAAAA,IAACK,EAAA,CAAA,CAAkB,CAAA,CACrB,EACAL,EAAAA,IAAC,MAAA,CAAI,UAAW,sBAAsBE,EAAO,OAAO,GAClD,SAAAF,EAAAA,IAACM,EAAA,CAA0B,UAAWJ,EAAO,QAAA,CAAU,CAAA,CACzD,CAAA,CAAA,CACF,CAAA,CACF,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{s as n,v as u}from"./app-BqRx5tK8.js";import{g as l}from"./sFV5nxD4.chunk.js";const y={topVideos(e,r,o,i,s){return{url:n.urlBuilder("{gateway}/v1/analytics/videos/top",{"query.video":"thumbnail,series","query.interactive":"_parentVideo[_rating],_parentClip,_thumbnail","query.clip":"_parentVideo[_rating],_thumbnail",limit:r,...e}),key:l(`top:videos:${r??0}`,e),normalize:!1,formatData:t=>{const a=u.sortBy(t.data,"count");return a.reverse(),{...t,data:a}},success:o,error:i,always:s}}};export{y as V};
2
- //# sourceMappingURL=Bt3gUzzG.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bt3gUzzG.chunk.js","sources":["../../src/shared/flight-requests/VideoViewRequests.ts"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopVideosResponse } from 'shared/interfaces';\n\nexport const VideoViewRequests = {\n topVideos(\n filter: AnalyticsRequestFilter,\n limit?: number,\n success?: (data: TopVideosResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/videos/top', {\n 'query.video': 'thumbnail,series',\n 'query.interactive': '_parentVideo[_rating],_parentClip,_thumbnail',\n 'query.clip': '_parentVideo[_rating],_thumbnail',\n limit,\n ...filter\n }),\n key: getAnalyticsRequestKey(`top:videos:${limit ?? 0}`, filter),\n normalize: false,\n formatData: (data: TopVideosResponse) => {\n const sorted = ArrayHelper.sortBy(data.data, 'count');\n \n sorted.reverse();\n \n return {\n ...data,\n data: sorted\n };\n },\n success,\n error,\n always\n };\n }\n};"],"names":["VideoViewRequests","filter","limit","success","error","always","UrlHelper","getAnalyticsRequestKey","data","sorted","ArrayHelper"],"mappings":"qFAUO,MAAMA,EAAoB,CAC/B,UACEC,EACAC,EACAC,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WAAW,oCAAqC,CAC7D,cAAe,mBACf,oBAAqB,+CACrB,aAAc,mCACd,MAAAJ,EACA,GAAGD,CAAA,CACJ,EACD,IAAKM,EAAuB,cAAcL,GAAS,CAAC,GAAID,CAAM,EAC9D,UAAW,GACX,WAAaO,GAA4B,CACvC,MAAMC,EAASC,EAAY,OAAOF,EAAK,KAAM,OAAO,EAEpD,OAAAC,EAAO,QAAA,EAEA,CACL,GAAGD,EACH,KAAMC,CAAA,CAEV,EACA,QAAAN,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF"}