@clickview/reports 0.69.0-rc.0 → 0.69.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/bundles.json +2 -3
  61. package/dist/css/1VpVng8x.chunk.css +1 -0
  62. package/dist/css/BBwBgFf_.chunk.css +1 -0
  63. package/dist/css/BDijM1kt.chunk.css +1 -0
  64. package/dist/css/BMPwvOki.chunk.css +1 -0
  65. package/dist/css/BNt45Kgy.chunk.css +1 -0
  66. package/dist/css/BSGhUWzl.chunk.css +1 -0
  67. package/dist/css/BZ3_uhDP.chunk.css +1 -0
  68. package/dist/css/BaadNO4A.chunk.css +1 -0
  69. package/dist/css/BdUNjJqp.chunk.css +1 -0
  70. package/dist/css/BdeI0FAV.chunk.css +1 -0
  71. package/dist/css/BxcMGr8Y.chunk.css +1 -0
  72. package/dist/css/ByuL_xKJ.chunk.css +1 -0
  73. package/dist/css/C-A0Pj_7.chunk.css +1 -0
  74. package/dist/css/C4jMfPWU.chunk.css +1 -0
  75. package/dist/css/C7XoyEPr.chunk.css +1 -0
  76. package/dist/css/C8sxda3R.chunk.css +1 -0
  77. package/dist/css/CD1qrI1T.chunk.css +1 -0
  78. package/dist/css/CFO--d_R.chunk.css +1 -0
  79. package/dist/css/CX9nw8t8.chunk.css +1 -0
  80. package/dist/css/C_qGRdC2.chunk.css +1 -0
  81. package/dist/css/CdC6ugQR.chunk.css +1 -0
  82. package/dist/css/ClRRGXPb.chunk.css +1 -0
  83. package/dist/css/Cr1bwtZG.chunk.css +1 -0
  84. package/dist/css/DBlPz5Fw.chunk.css +1 -0
  85. package/dist/css/DDnpOnVB.chunk.css +1 -0
  86. package/dist/css/DFZQCLLg.chunk.css +1 -0
  87. package/dist/css/DJwAbl6l.chunk.css +1 -0
  88. package/dist/css/DWjg_0sz.chunk.css +1 -0
  89. package/dist/css/DYV9jjVn.chunk.css +1 -0
  90. package/dist/css/Dgeh4AqU.chunk.css +9 -0
  91. package/dist/css/DlOtoSz0.chunk.css +1 -0
  92. package/dist/css/DlxOgKUu.chunk.css +1 -0
  93. package/dist/css/DwgaDUzz.chunk.css +1 -0
  94. package/dist/css/FPQ_LmXH.chunk.css +1 -0
  95. package/dist/css/H09rC9gw.chunk.css +1 -0
  96. package/dist/css/LAFr2dPT.chunk.css +1 -0
  97. package/dist/css/Pg1TlYG6.chunk.css +1 -0
  98. package/dist/css/PsQn3-kb.chunk.css +1 -0
  99. package/dist/css/alkEuPrr.chunk.css +1 -0
  100. package/dist/css/k4DgCj_g.chunk.css +1 -0
  101. package/dist/en.json +1 -0
  102. package/dist/scripts/-b_h0A4y.chunk.js +2 -0
  103. package/dist/scripts/-b_h0A4y.chunk.js.map +1 -0
  104. package/dist/scripts/0UfVJrf5.chunk.js +2 -0
  105. package/dist/scripts/0UfVJrf5.chunk.js.map +1 -0
  106. package/dist/scripts/2cd-ulth.chunk.js +2 -0
  107. package/dist/scripts/2cd-ulth.chunk.js.map +1 -0
  108. package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
  109. package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
  110. package/dist/scripts/72EXv822.chunk.js +2 -0
  111. package/dist/scripts/72EXv822.chunk.js.map +1 -0
  112. package/dist/scripts/8CNwntVY.chunk.js +2 -0
  113. package/dist/scripts/8CNwntVY.chunk.js.map +1 -0
  114. package/dist/scripts/9pagDMWN.chunk.js +2 -0
  115. package/dist/scripts/9pagDMWN.chunk.js.map +1 -0
  116. package/dist/scripts/AKgZQGT0.chunk.js +2 -0
  117. package/dist/scripts/AKgZQGT0.chunk.js.map +1 -0
  118. package/dist/scripts/ASoPpgM4.chunk.js +2 -0
  119. package/dist/scripts/ASoPpgM4.chunk.js.map +1 -0
  120. package/dist/scripts/B0ZIDriY.chunk.js +6 -0
  121. package/dist/scripts/B0ZIDriY.chunk.js.map +1 -0
  122. package/dist/scripts/B3PA8QNB.chunk.js +2 -0
  123. package/dist/scripts/B3PA8QNB.chunk.js.map +1 -0
  124. package/dist/scripts/B6QS1MPy.chunk.js +4 -0
  125. package/dist/scripts/B6QS1MPy.chunk.js.map +1 -0
  126. package/dist/scripts/B9I2jvNY.chunk.js +2 -0
  127. package/dist/scripts/B9I2jvNY.chunk.js.map +1 -0
  128. package/dist/scripts/B9IzwFHp.chunk.js +2 -0
  129. package/dist/scripts/B9IzwFHp.chunk.js.map +1 -0
  130. package/dist/scripts/BBGDjrt-.chunk.js +2 -0
  131. package/dist/scripts/BBGDjrt-.chunk.js.map +1 -0
  132. package/dist/scripts/BHZ8VWq7.chunk.js +2 -0
  133. package/dist/scripts/BHZ8VWq7.chunk.js.map +1 -0
  134. package/dist/scripts/BIIsc-MA.chunk.js +2 -0
  135. package/dist/scripts/BIIsc-MA.chunk.js.map +1 -0
  136. package/dist/scripts/BLEXuU9u.chunk.js +2 -0
  137. package/dist/scripts/BLEXuU9u.chunk.js.map +1 -0
  138. package/dist/scripts/BLIHpHXi.chunk.js +2 -0
  139. package/dist/scripts/BLIHpHXi.chunk.js.map +1 -0
  140. package/dist/scripts/BLSeaGtL.chunk.js +2 -0
  141. package/dist/scripts/BLSeaGtL.chunk.js.map +1 -0
  142. package/dist/scripts/BLuY6AYO.chunk.js +2 -0
  143. package/dist/scripts/BLuY6AYO.chunk.js.map +1 -0
  144. package/dist/scripts/BSe8MmUc.chunk.js +2 -0
  145. package/dist/scripts/BSe8MmUc.chunk.js.map +1 -0
  146. package/dist/scripts/BZf-mjTJ.chunk.js +380 -0
  147. package/dist/scripts/BZf-mjTJ.chunk.js.map +1 -0
  148. package/dist/scripts/BbvzsNLZ.chunk.js +2 -0
  149. package/dist/scripts/BbvzsNLZ.chunk.js.map +1 -0
  150. package/dist/scripts/BdX0pSRt.chunk.js +2 -0
  151. package/dist/scripts/BdX0pSRt.chunk.js.map +1 -0
  152. package/dist/scripts/Bgidb-to.chunk.js +2 -0
  153. package/dist/scripts/Bgidb-to.chunk.js.map +1 -0
  154. package/dist/scripts/BhPjzT2a.chunk.js +2 -0
  155. package/dist/scripts/BhPjzT2a.chunk.js.map +1 -0
  156. package/dist/scripts/BihcsiRl.chunk.js +2 -0
  157. package/dist/scripts/BihcsiRl.chunk.js.map +1 -0
  158. package/dist/scripts/BlUKEHqx.chunk.js +2 -0
  159. package/dist/scripts/BlUKEHqx.chunk.js.map +1 -0
  160. package/dist/scripts/BpWIcknK.chunk.js +2 -0
  161. package/dist/scripts/BpWIcknK.chunk.js.map +1 -0
  162. package/dist/scripts/BqY3bZyH.chunk.js +2 -0
  163. package/dist/scripts/BqY3bZyH.chunk.js.map +1 -0
  164. package/dist/scripts/BrXmRwXi.chunk.js +2 -0
  165. package/dist/scripts/BrXmRwXi.chunk.js.map +1 -0
  166. package/dist/scripts/BsOLqypJ.chunk.js +2 -0
  167. package/dist/scripts/BsOLqypJ.chunk.js.map +1 -0
  168. package/dist/scripts/BvArNs1K.chunk.js +2 -0
  169. package/dist/scripts/BvArNs1K.chunk.js.map +1 -0
  170. package/dist/scripts/BxBPX67V.chunk.js +2 -0
  171. package/dist/scripts/BxBPX67V.chunk.js.map +1 -0
  172. package/dist/scripts/C0Ak1kpS.chunk.js +3 -0
  173. package/dist/scripts/C0Ak1kpS.chunk.js.map +1 -0
  174. package/dist/scripts/C0GFlX65.chunk.js +2 -0
  175. package/dist/scripts/C0GFlX65.chunk.js.map +1 -0
  176. package/dist/scripts/C0nQ0Xnx.chunk.js +6 -0
  177. package/dist/scripts/C0nQ0Xnx.chunk.js.map +1 -0
  178. package/dist/scripts/C6UUJ8P5.chunk.js +2 -0
  179. package/dist/scripts/C6UUJ8P5.chunk.js.map +1 -0
  180. package/dist/scripts/C8oA7_zY.chunk.js +2 -0
  181. package/dist/scripts/C8oA7_zY.chunk.js.map +1 -0
  182. package/dist/scripts/CEy1YX0b.chunk.js +2 -0
  183. package/dist/scripts/CEy1YX0b.chunk.js.map +1 -0
  184. package/dist/scripts/CNfESBlK.chunk.js +2 -0
  185. package/dist/scripts/CNfESBlK.chunk.js.map +1 -0
  186. package/dist/scripts/CNgTzzan.chunk.js +42 -0
  187. package/dist/scripts/CNgTzzan.chunk.js.map +1 -0
  188. package/dist/scripts/CP2i5uhZ.chunk.js +2 -0
  189. package/dist/scripts/CP2i5uhZ.chunk.js.map +1 -0
  190. package/dist/scripts/CSmXZuTZ.chunk.js +2 -0
  191. package/dist/scripts/CSmXZuTZ.chunk.js.map +1 -0
  192. package/dist/scripts/CTMVj7AR.chunk.js +2 -0
  193. package/dist/scripts/CTMVj7AR.chunk.js.map +1 -0
  194. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  195. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  196. package/dist/scripts/CWEUVMEm.chunk.js +2 -0
  197. package/dist/scripts/CWEUVMEm.chunk.js.map +1 -0
  198. package/dist/scripts/CWViZWyh.chunk.js +34 -0
  199. package/dist/scripts/CWViZWyh.chunk.js.map +1 -0
  200. package/dist/scripts/CX5q-0jT.chunk.js +2 -0
  201. package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
  202. package/dist/scripts/CbBaa9Aj.chunk.js +2 -0
  203. package/dist/scripts/CbBaa9Aj.chunk.js.map +1 -0
  204. package/dist/scripts/Ce_zROQ3.chunk.js +2 -0
  205. package/dist/scripts/Ce_zROQ3.chunk.js.map +1 -0
  206. package/dist/scripts/CfTCpF5i.chunk.js +4 -0
  207. package/dist/scripts/CfTCpF5i.chunk.js.map +1 -0
  208. package/dist/scripts/Cl1c9Acb.chunk.js +2 -0
  209. package/dist/scripts/Cl1c9Acb.chunk.js.map +1 -0
  210. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  211. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  212. package/dist/scripts/Cn0ghy_D.chunk.js +2 -0
  213. package/dist/scripts/Cn0ghy_D.chunk.js.map +1 -0
  214. package/dist/scripts/Cs1UnwSi.chunk.js +2 -0
  215. package/dist/scripts/Cs1UnwSi.chunk.js.map +1 -0
  216. package/dist/scripts/CsP3Lruv.chunk.js +3 -0
  217. package/dist/scripts/CsP3Lruv.chunk.js.map +1 -0
  218. package/dist/scripts/CsROrwVV.chunk.js +2 -0
  219. package/dist/scripts/CsROrwVV.chunk.js.map +1 -0
  220. package/dist/scripts/Ctu1A4hw.chunk.js +2 -0
  221. package/dist/scripts/Ctu1A4hw.chunk.js.map +1 -0
  222. package/dist/scripts/D1UdZdfs.chunk.js +2 -0
  223. package/dist/scripts/D1UdZdfs.chunk.js.map +1 -0
  224. package/dist/scripts/D2pFW6EB.chunk.js +2 -0
  225. package/dist/scripts/D2pFW6EB.chunk.js.map +1 -0
  226. package/dist/scripts/D9oCeDYw.chunk.js +10 -0
  227. package/dist/scripts/D9oCeDYw.chunk.js.map +1 -0
  228. package/dist/scripts/DAajosqn.chunk.js +2 -0
  229. package/dist/scripts/DAajosqn.chunk.js.map +1 -0
  230. package/dist/scripts/DDGxV4ns.chunk.js +2 -0
  231. package/dist/scripts/DDGxV4ns.chunk.js.map +1 -0
  232. package/dist/scripts/DFlfmBPU.chunk.js +2 -0
  233. package/dist/scripts/DFlfmBPU.chunk.js.map +1 -0
  234. package/dist/scripts/DHZefNDC.chunk.js +2 -0
  235. package/dist/scripts/DHZefNDC.chunk.js.map +1 -0
  236. package/dist/scripts/DJzpw8qX.chunk.js +2 -0
  237. package/dist/scripts/DJzpw8qX.chunk.js.map +1 -0
  238. package/dist/scripts/DKEdZyAE.chunk.js +2 -0
  239. package/dist/scripts/DKEdZyAE.chunk.js.map +1 -0
  240. package/dist/scripts/DKu8iTnz.chunk.js +2 -0
  241. package/dist/scripts/DKu8iTnz.chunk.js.map +1 -0
  242. package/dist/scripts/DMd0fZar.chunk.js +2 -0
  243. package/dist/scripts/DMd0fZar.chunk.js.map +1 -0
  244. package/dist/scripts/DNDksLLJ.chunk.js +2 -0
  245. package/dist/scripts/DNDksLLJ.chunk.js.map +1 -0
  246. package/dist/scripts/DNP9cLqQ.chunk.js +2 -0
  247. package/dist/scripts/DNP9cLqQ.chunk.js.map +1 -0
  248. package/dist/scripts/DO-V6YKu.chunk.js +2 -0
  249. package/dist/scripts/DO-V6YKu.chunk.js.map +1 -0
  250. package/dist/scripts/DQA8MZy3.chunk.js +2 -0
  251. package/dist/scripts/DQA8MZy3.chunk.js.map +1 -0
  252. package/dist/scripts/DT1lPNaD.chunk.js +2 -0
  253. package/dist/scripts/DT1lPNaD.chunk.js.map +1 -0
  254. package/dist/scripts/DTL-Rceb.chunk.js +2 -0
  255. package/dist/scripts/DTL-Rceb.chunk.js.map +1 -0
  256. package/dist/scripts/DTotSVIi.chunk.js +2 -0
  257. package/dist/scripts/DTotSVIi.chunk.js.map +1 -0
  258. package/dist/scripts/DWkaXclo.chunk.js +10 -0
  259. package/dist/scripts/DWkaXclo.chunk.js.map +1 -0
  260. package/dist/scripts/DXFcNENa.chunk.js +2 -0
  261. package/dist/scripts/DXFcNENa.chunk.js.map +1 -0
  262. package/dist/scripts/Ddy6mQmA.chunk.js +2 -0
  263. package/dist/scripts/Ddy6mQmA.chunk.js.map +1 -0
  264. package/dist/scripts/DlxDC-9E.chunk.js +2 -0
  265. package/dist/scripts/DlxDC-9E.chunk.js.map +1 -0
  266. package/dist/scripts/Dn5-Zvws.chunk.js +2 -0
  267. package/dist/scripts/Dn5-Zvws.chunk.js.map +1 -0
  268. package/dist/scripts/DnhffgUu.chunk.js +2 -0
  269. package/dist/scripts/DnhffgUu.chunk.js.map +1 -0
  270. package/dist/scripts/Dv9OgzKw.chunk.js +2 -0
  271. package/dist/scripts/Dv9OgzKw.chunk.js.map +1 -0
  272. package/dist/scripts/DvV9e2O3.chunk.js +3 -0
  273. package/dist/scripts/DvV9e2O3.chunk.js.map +1 -0
  274. package/dist/scripts/Dvf_hOR3.chunk.js +2 -0
  275. package/dist/scripts/Dvf_hOR3.chunk.js.map +1 -0
  276. package/dist/scripts/DxOc33K6.chunk.js +3 -0
  277. package/dist/scripts/DxOc33K6.chunk.js.map +1 -0
  278. package/dist/scripts/DxbQzyJg.chunk.js +2 -0
  279. package/dist/scripts/DxbQzyJg.chunk.js.map +1 -0
  280. package/dist/scripts/DyaAoFDP.chunk.js +2 -0
  281. package/dist/scripts/DyaAoFDP.chunk.js.map +1 -0
  282. package/dist/scripts/EBNeK_uD.chunk.js +2 -0
  283. package/dist/scripts/EBNeK_uD.chunk.js.map +1 -0
  284. package/dist/scripts/HBvGjr-A.chunk.js +2 -0
  285. package/dist/scripts/HBvGjr-A.chunk.js.map +1 -0
  286. package/dist/scripts/IC6KSiqE.chunk.js +2 -0
  287. package/dist/scripts/IC6KSiqE.chunk.js.map +1 -0
  288. package/dist/scripts/LT6WE6TB.chunk.js +2 -0
  289. package/dist/scripts/LT6WE6TB.chunk.js.map +1 -0
  290. package/dist/scripts/P0RdEZGz.chunk.js +2 -0
  291. package/dist/scripts/P0RdEZGz.chunk.js.map +1 -0
  292. package/dist/scripts/P3PkkK_o.chunk.js +2 -0
  293. package/dist/scripts/P3PkkK_o.chunk.js.map +1 -0
  294. package/dist/scripts/SA1hxE7y.chunk.js +15 -0
  295. package/dist/scripts/SA1hxE7y.chunk.js.map +1 -0
  296. package/dist/scripts/YHL8PX91.chunk.js +2 -0
  297. package/dist/scripts/YHL8PX91.chunk.js.map +1 -0
  298. package/dist/scripts/app-5iiM5qQY.js +224 -0
  299. package/dist/scripts/app-5iiM5qQY.js.map +1 -0
  300. package/dist/scripts/fORcC1yd.chunk.js +2 -0
  301. package/dist/scripts/fORcC1yd.chunk.js.map +1 -0
  302. package/dist/scripts/hU1zzvt8.chunk.js +2 -0
  303. package/dist/scripts/hU1zzvt8.chunk.js.map +1 -0
  304. package/dist/scripts/kFXLewpU.chunk.js +2 -0
  305. package/dist/scripts/kFXLewpU.chunk.js.map +1 -0
  306. package/dist/scripts/k_p1R4KR.chunk.js +2 -0
  307. package/dist/scripts/k_p1R4KR.chunk.js.map +1 -0
  308. package/dist/scripts/mqFCEyYv.chunk.js +2 -0
  309. package/dist/scripts/mqFCEyYv.chunk.js.map +1 -0
  310. package/dist/scripts/qwzILhQ0.chunk.js +8 -0
  311. package/dist/scripts/qwzILhQ0.chunk.js.map +1 -0
  312. package/dist/scripts/sFV5nxD4.chunk.js +2 -0
  313. package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
  314. package/dist/scripts/uBcZoYae.chunk.js +2 -0
  315. package/dist/scripts/uBcZoYae.chunk.js.map +1 -0
  316. package/dist/scripts/yaRKidLW.chunk.js +2 -0
  317. package/dist/scripts/yaRKidLW.chunk.js.map +1 -0
  318. package/dist/scripts/ysP6mL-L.chunk.js +2 -0
  319. package/dist/scripts/ysP6mL-L.chunk.js.map +1 -0
  320. package/package.json +5 -3
  321. package/typings/utils/imports.d.ts +1 -1
  322. package/vite.config.ts +6 -0
  323. package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
  324. package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
  325. package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
  326. package/dist/css/209-reports-cdae99d0ee.chunk.css +0 -11
  327. package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
  328. package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
  329. package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
  330. package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
  331. package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
  332. package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
  333. package/dist/css/6031-reports-d558076846.chunk.css +0 -6
  334. package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
  335. package/dist/css/6546-reports-f190450b10.chunk.css +0 -60
  336. package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
  337. package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
  338. package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
  339. package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
  340. package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
  341. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
  342. package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
  343. package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
  344. package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
  345. package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
  346. package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
  347. package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
  348. package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
  349. package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
  350. package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
  351. package/dist/css/reports-app-b4c4ec5632.css +0 -32
  352. package/dist/languages/en.json +0 -1
  353. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
  354. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
  355. package/dist/scripts/1456-019d93e620-reports.chunk.js +0 -1
  356. package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
  357. package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
  358. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
  359. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
  360. package/dist/scripts/209-d769572af9-reports.chunk.js +0 -1
  361. package/dist/scripts/2150-2cbadacf12-reports.chunk.js +0 -1
  362. package/dist/scripts/2217-eb2f8619c9-reports.chunk.js +0 -1
  363. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
  364. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
  365. package/dist/scripts/2997-62d81c3442-reports.chunk.js +0 -1
  366. package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
  367. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
  368. package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
  369. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
  370. package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
  371. package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
  372. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
  373. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
  374. package/dist/scripts/5051-72c53737e2-reports.chunk.js +0 -1
  375. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
  376. package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
  377. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
  378. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
  379. package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
  380. package/dist/scripts/6007-346d08e3ae-reports.chunk.js +0 -1
  381. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
  382. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
  383. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
  384. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
  385. package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
  386. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
  387. package/dist/scripts/645-e72b3d845e-reports.chunk.js +0 -1
  388. package/dist/scripts/6545-f07bcd318a-reports.chunk.js +0 -1
  389. package/dist/scripts/6546-72384574e1-reports.chunk.js +0 -2
  390. package/dist/scripts/6546-72384574e1-reports.chunk.js.LICENSE.txt +0 -1
  391. package/dist/scripts/6811-add7c7c1a2-reports.chunk.js +0 -1
  392. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
  393. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
  394. package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
  395. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
  396. package/dist/scripts/7747-a4fcf6b02f-reports.chunk.js +0 -2
  397. package/dist/scripts/7747-a4fcf6b02f-reports.chunk.js.LICENSE.txt +0 -1
  398. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
  399. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
  400. package/dist/scripts/8393-686a7866e1-reports.chunk.js +0 -1
  401. package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
  402. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
  403. package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
  404. package/dist/scripts/8622-ca384ec4b0-reports.chunk.js +0 -1
  405. package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
  406. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
  407. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
  408. package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
  409. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
  410. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
  411. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
  412. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
  413. package/dist/scripts/9822-379ea90dd3-reports.chunk.js +0 -1
  414. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
  415. package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +0 -1
  416. package/dist/scripts/bundle-17c29f9bf9.min.js +0 -2
  417. package/dist/scripts/bundle-17c29f9bf9.min.js.LICENSE.txt +0 -108
  418. package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as o,y as c,j as e,z as D,B as d,G as L,H as R,J as p,K as $,M as b,a as B}from"./app-5iiM5qQY.js";const N=D("h4");N.displayName="DivStyledAsH4";const g=o.forwardRef(({className:s,bsPrefix:a,as:r=N,...n},t)=>(a=c(a,"alert-heading"),e.jsx(r,{ref:t,className:d(s,a),...n})));g.displayName="AlertHeading";const A=o.forwardRef(({className:s,bsPrefix:a,as:r=L,...n},t)=>(a=c(a,"alert-link"),e.jsx(r,{ref:t,className:d(s,a),...n})));A.displayName="AlertLink";const C=o.forwardRef((s,a)=>{const{bsPrefix:r,show:n=!0,closeLabel:t="Close alert",closeVariant:k,className:y,children:w,variant:m="primary",onClose:u,dismissible:h,transition:x=p,...f}=R(s,{show:"onClose"}),l=c(r,"alert"),E=$(H=>{u&&u(!1,H)}),i=x===!0?p:x,j=e.jsxs("div",{role:"alert",...i?void 0:f,ref:a,className:d(y,l,m&&`${l}-${m}`,h&&`${l}-dismissible`),children:[h&&e.jsx(b,{onClick:E,"aria-label":t,variant:k}),w]});return i?e.jsx(i,{unmountOnExit:!0,...f,ref:void 0,in:n,children:j}):n?j:null});C.displayName="Alert";const v=Object.assign(C,{Link:A,Heading:g});function F({error:s}){return B({title:"Dev Error"}),s?e.jsxs("div",{className:"px-3",children:[e.jsx("h1",{children:s.name}),e.jsx(v,{variant:"danger",children:e.jsx("h2",{children:s.message})}),e.jsxs(v,{variant:"warning",children:[e.jsx("h3",{children:"Call stack"}),e.jsx("code",{children:s.stack})]})]}):e.jsx(e.Fragment,{})}export{F as DevErrorView};
2
+ //# sourceMappingURL=BbvzsNLZ.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BbvzsNLZ.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/AlertHeading.js","../../../../../node_modules/react-bootstrap/esm/AlertLink.js","../../../../../node_modules/react-bootstrap/esm/Alert.js","../../../../libs/shared/src/views/dev-error/DevErrorView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport divWithClassName from './divWithClassName';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = DivStyledAsH4,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-heading');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertHeading.displayName = 'AlertHeading';\nexport default AlertHeading;","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AlertLink = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = Anchor,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'alert-link');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nAlertLink.displayName = 'AlertLink';\nexport default AlertLink;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AlertHeading from './AlertHeading';\nimport AlertLink from './AlertLink';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n bsPrefix,\n show = true,\n closeLabel = 'Close alert',\n closeVariant,\n className,\n children,\n variant = 'primary',\n onClose,\n dismissible,\n transition = Fade,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n const handleClose = useEventCallback(e => {\n if (onClose) {\n onClose(false, e);\n }\n });\n const Transition = transition === true ? Fade : transition;\n const alert = /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n ...(!Transition ? props : undefined),\n ref: ref,\n className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n onClick: handleClose,\n \"aria-label\": closeLabel,\n variant: closeVariant\n }), children]\n });\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/_jsx(Transition, {\n unmountOnExit: true,\n ...props,\n ref: undefined,\n in: show,\n children: alert\n });\n});\nAlert.displayName = 'Alert';\nexport default Object.assign(Alert, {\n Link: AlertLink,\n Heading: AlertHeading\n});","import * as React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\ninterface DevErrorViewProps {\n error: Error;\n}\n\nexport function DevErrorView({ error }: DevErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: 'Dev Error' });\n\n if (!error)\n return <></>;\n\n return (\n <div className='px-3'>\n <h1>{error.name}</h1>\n <Alert variant='danger'>\n <h2>{error.message}</h2>\n </Alert>\n <Alert variant='warning'>\n <h3>Call stack</h3>\n <code>{error.stack}</code>\n </Alert>\n </div>\n );\n}"],"names":["DivStyledAsH4","divWithClassName","AlertHeading","React.forwardRef","className","bsPrefix","Component","props","ref","useBootstrapPrefix","_jsx","classNames","AlertLink","Anchor","Alert","uncontrolledProps","show","closeLabel","closeVariant","children","variant","onClose","dismissible","transition","Fade","useUncontrolled","prefix","handleClose","useEventCallback","e","Transition","alert","_jsxs","CloseButton","Alert$1","DevErrorView","error","useSetPageMetadata","jsxs","jsx","Fragment"],"mappings":"4GAOA,MAAMA,EAAgBC,EAAiB,IAAI,EAC3CD,EAAc,YAAc,gBAC5B,MAAME,EAA4BC,EAAAA,WAAiB,CAAC,CAClD,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYN,EAChB,GAAGO,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,eAAe,EACnCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDL,EAAa,YAAc,eCf3B,MAAMU,EAAyBT,EAAAA,WAAiB,CAAC,CAC/C,UAAAC,EACA,SAAAC,EACA,GAAIC,EAAYO,EAChB,GAAGN,CACL,EAAGC,KACDH,EAAWI,EAAmBJ,EAAU,YAAY,EAChCK,EAAAA,IAAKJ,EAAW,CAClC,IAAKE,EACL,UAAWG,EAAWP,EAAWC,CAAQ,EACzC,GAAGE,CACP,CAAG,EACF,EACDK,EAAU,YAAc,YCPxB,MAAME,EAAqBX,EAAAA,WAAiB,CAACY,EAAmBP,IAAQ,CACtE,KAAM,CACJ,SAAAH,EACA,KAAAW,EAAO,GACP,WAAAC,EAAa,cACb,aAAAC,EACA,UAAAd,EACA,SAAAe,EACA,QAAAC,EAAU,UACV,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaC,EACb,GAAGjB,CACP,EAAMkB,EAAgBV,EAAmB,CACrC,KAAM,SACV,CAAG,EACKW,EAASjB,EAAmBJ,EAAU,OAAO,EAC7CsB,EAAcC,EAAiBC,GAAK,CACpCR,GACFA,EAAQ,GAAOQ,CAAC,CAEpB,CAAC,EACKC,EAAaP,IAAe,GAAOC,EAAOD,EAC1CQ,EAAqBC,EAAAA,KAAM,MAAO,CACtC,KAAM,QACN,GAAKF,EAAqB,OAARvB,EAClB,IAAKC,EACL,UAAWG,EAAWP,EAAWsB,EAAQN,GAAW,GAAGM,CAAM,IAAIN,CAAO,GAAIE,GAAe,GAAGI,CAAM,cAAc,EAClH,SAAU,CAACJ,GAA4BZ,EAAAA,IAAKuB,EAAa,CACvD,QAASN,EACT,aAAcV,EACd,QAASC,CACf,CAAK,EAAGC,CAAQ,CAChB,CAAG,EACD,OAAKW,EACepB,EAAAA,IAAKoB,EAAY,CACnC,cAAe,GACf,GAAGvB,EACH,IAAK,OACL,GAAIS,EACJ,SAAUe,CACd,CAAG,EAPuBf,EAAOe,EAAQ,IAQzC,CAAC,EACDjB,EAAM,YAAc,QACpB,MAAAoB,EAAe,OAAO,OAAOpB,EAAO,CAClC,KAAMF,EACN,QAASV,CACX,CAAC,ECnDM,SAASiC,EAAa,CAAE,MAAAC,GAAgD,CAG7E,OAFAC,EAAmB,CAAE,MAAO,YAAa,EAEpCD,EAIHE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAI,WAAM,IAAA,CAAK,EAChBA,EAAAA,IAACzB,GAAM,QAAQ,SACb,eAAC,KAAA,CAAI,SAAAsB,EAAM,QAAQ,CAAA,CACrB,EACAE,EAAAA,KAACxB,EAAA,CAAM,QAAQ,UACb,SAAA,CAAAyB,EAAAA,IAAC,MAAG,SAAA,YAAA,CAAU,EACdA,EAAAA,IAAC,OAAA,CAAM,SAAAH,EAAM,KAAA,CAAM,CAAA,CAAA,CACrB,CAAA,EACF,EAZOG,EAAAA,IAAAC,EAAAA,SAAA,EAAE,CAcb","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,2 @@
1
+ import{j as n,a5 as r,L as o}from"./app-5iiM5qQY.js";import{P as l}from"./P3PkkK_o.chunk.js";const m="interactives.pendingIndicator",d=o.encloseNamespace(m);function u(e){let t="d-flex align-items-center h-100";return t+=e.showLabel?" justify-content-between":" justify-content-center",e.className&&(t+=` ${e.className}`),t}function g(e){const{title:t,showLabel:a,tooltipClassName:c,showIndicator:i=!0}=e,s=()=>n.jsxs("div",{className:u(e),children:[!!a&&n.jsx("em",{children:d("pending")}),!!i&&n.jsx(l,{})]});return t?n.jsx(r,{title:t,spanHack:!0,spanHackClassName:c||"h-100 w-100 d-flex align-items-center",children:n.jsx(s,{})}):n.jsx(s,{})}export{g as P};
2
+ //# sourceMappingURL=BdX0pSRt.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdX0pSRt.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/components/pending-indicator/PendingIndicator.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PercentageIndicator } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'interactives.pendingIndicator';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(props: PendingIndicatorProps): string {\n let className = 'd-flex align-items-center h-100';\n\n className += props.showLabel ? ' justify-content-between' : ' justify-content-center';\n\n if (props.className)\n className += ` ${props.className}`;\n\n return className;\n}\n\ninterface PendingIndicatorProps {\n title?: string;\n className?: string;\n showLabel?: boolean;\n tooltipClassName?: string;\n showIndicator?: boolean;\n}\n\nexport function PendingIndicator(props: PendingIndicatorProps): JSX.Element {\n const { title, showLabel, tooltipClassName, showIndicator = true } = props;\n\n const Indicator = () => (\n <div className={getClassName(props)}>\n {!!showLabel &&\n <em>{getPhrase('pending')}</em>\n }\n {!!showIndicator &&\n <PercentageIndicator />\n }\n </div>\n );\n\n if (!title)\n return <Indicator />;\n\n return (\n <Tooltip title={title} spanHack spanHackClassName={tooltipClassName || 'h-100 w-100 d-flex align-items-center'}>\n <Indicator />\n </Tooltip>\n );\n}"],"names":["namespace","getPhrase","LanguageService","getClassName","props","className","PendingIndicator","title","showLabel","tooltipClassName","showIndicator","Indicator","jsxs","jsx","PercentageIndicator","Tooltip"],"mappings":"6FAOA,MAAMA,EAAY,gCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAaC,EAAsC,CAC1D,IAAIC,EAAY,kCAEhB,OAAAA,GAAaD,EAAM,UAAY,2BAA6B,0BAExDA,EAAM,YACRC,GAAa,IAAID,EAAM,SAAS,IAE3BC,CACT,CAUO,SAASC,EAAiBF,EAA2C,CAC1E,KAAM,CAAE,MAAAG,EAAO,UAAAC,EAAW,iBAAAC,EAAkB,cAAAC,EAAgB,IAASN,EAE/DO,EAAY,IAChBC,EAAAA,KAAC,OAAI,UAAWT,EAAaC,CAAK,EAC/B,SAAA,CAAA,CAAC,CAACI,GACDK,EAAAA,IAAC,KAAA,CAAI,SAAAZ,EAAU,SAAS,EAAE,EAE3B,CAAC,CAACS,GACDG,MAACC,EAAA,CAAA,CAAoB,CAAA,EAEzB,EAGF,OAAKP,EAIHM,EAAAA,IAACE,EAAA,CAAQ,MAAAR,EAAc,SAAQ,GAAC,kBAAmBE,GAAoB,wCACrE,SAAAI,EAAAA,IAACF,EAAA,CAAA,CAAU,CAAA,CACb,QALQA,EAAA,EAAU,CAOtB"}
@@ -0,0 +1,2 @@
1
+ import{j as o,v as _,p as S,L as j,D as d}from"./app-5iiM5qQY.js";import{a as v,H as w,b as T}from"./DvV9e2O3.chunk.js";import{m as b,u as x}from"./k_p1R4KR.chunk.js";const G="_partialHeading_hwefc_1",L="_partialSelector_hwefc_5",R="_partialCount_hwefc_9",g={partialHeading:G,partialSelector:L,partialCount:R};function Q(){return o.jsxs("div",{className:"d-flex align-items-start justify-content-between",children:[o.jsxs("div",{children:[o.jsx("div",{className:`partial-loading-background mb-2 ${g.partialHeading}`}),o.jsx("div",{className:`partial-loading-background ${g.partialCount}`})]}),o.jsx("div",{className:`partial-loading-background rounded ${g.partialSelector}`})]})}function m(e,n,t,r){const i={},l=e[n];return l==null||l.forEach(s=>{const c=s.name||"Unknown";t!=null&&t.includes(c.toLowerCase())||(i[c]=i[c]??0,i[c]+=s.count)}),b(_.sortBy(Object.keys(i).map(s=>({name:r?r(s):s,y:i[s],type:"pie"})),"name"))}function A(e){const n=e.findIndex(t=>t.name==="Staff");if(n>-1){const[t]=e.splice(n,1);e.push(t)}return e.sort((t,r)=>{var s,c;const i=parseInt((s=t.name.match(/\d+/))==null?void 0:s[0]),l=parseInt((c=r.name.match(/\d+/))==null?void 0:c[0]);return i-l})}function P(e){return(e==null?void 0:e.reduce((n,t)=>n+t.y,0))??null}var p=(e=>(e.Login="login",e.VideoView="video_view",e))(p||{}),a=(e=>(e.YearGroup="year_group",e.Role="role",e))(a||{}),u=(e=>(e.ContentType="content_type",e.Subject="subject",e.Topic="topic",e))(u||{});const I={[p.Login]:"login_group_by",[p.VideoView]:"video_view_group_by"},f={[a.YearGroup]:"yearGroups",[a.Role]:"role",[u.ContentType]:"contentType",[u.Subject]:"subject",[u.Topic]:"topic"},E=a.YearGroup,H={[p.Login]:{[a.YearGroup]:"totalStudentLogins",[a.Role]:"totalLogins"},[p.VideoView]:{[a.YearGroup]:"totalStudentViews",[a.Role]:"totalViews",[u.ContentType]:"totalViews",[u.Subject]:"totalViews",[u.Topic]:"totalViews"}},V={[p.Login]:"logins",[p.VideoView]:"views"},N={title:{text:null},credits:{enabled:!1},chart:{backgroundColor:"transparent",spacing:[0,0,0,0]},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0}}};function C(e,n){const t=I[e];return n?t+"_single":t}function Y(e,n){const t=localStorage.getItem(C(e,n));return f[t]?t:E}function k(e,n,t){localStorage.setItem(C(e,t),n)}function B(e,n){const t=[a.YearGroup,a.Role];return e===p.VideoView&&t.push(u.ContentType),n&&t.push(...n.map(r=>r.type)),t}function O(e,n){return{...N,series:[{type:"pie",name:n,data:e}]}}function U(e,n){switch(n){case a.YearGroup:return A(m(e,"yearGroupCount",["staff","unknown"]));case a.Role:return m(e,"userTypeCount",null,v);case u.ContentType:return m(e,"contentTypeCount")}}function D(e,n){var t;return Array.isArray(n)?(t=n.find(r=>r.type===e))==null?void 0:t.getComponent:void 0}const $="_totalCount_9enzr_1",z="_chartContainer_9enzr_4",h={totalCount:$,chartContainer:z},F="shared.userActivityPieChart",y=j.encloseNamespace(F);function K(e){const n=B(e.eventType,e.customGroupBy);return o.jsxs(d,{align:"end",children:[o.jsx(d.Toggle,{id:"group-by-dropdown",variant:"outline-dark",className:"no-caret",children:y(f[e.selectedOption])}),o.jsx(d.Menu,{children:n.map((t,r)=>e.selectedOption!==t&&o.jsx(d.Item,{onClick:()=>e.onSelect(t),children:y(f[t])},r))})]})}function W(e){const[n,t]=S.useState(Y(e.eventType,!!e.objectId));x();const r=U(e.events,n),i=P(r),l=D(n,e.customGroupBy);function s(c){k(e.eventType,c,!!e.objectId),t(c)}return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"d-flex align-items-start justify-content-between w-100",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"h6 m-0",children:y(H[e.eventType][n])}),typeof i=="number"&&o.jsx("strong",{className:h.totalCount,children:i})]}),o.jsx(K,{eventType:e.eventType,selectedOption:n,onSelect:s,customGroupBy:e.customGroupBy})]}),!!l&&l(),!l&&(r!=null&&r.length?o.jsx(w,{highcharts:T,options:O(r,y(V[e.eventType])),containerProps:{className:`${h.chartContainer} position-absolute w-100 h-75 flex-grow-1`}}):e.emptyStateComponent)]})}export{p as E,Q as P,W as U,u as V};
2
+ //# sourceMappingURL=Bgidb-to.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bgidb-to.chunk.js","sources":["../../src/shared/components/user-activity-pie-chart/partial-loading/PartialUserActivityPieChart.tsx","../../../../libs/shared/src/apps/analytics/utils/SharedUserActivityPieChartUtils.ts","../../src/shared/enums/EventType.ts","../../src/shared/components/user-activity-pie-chart/utils/UserActivityPieChartTypes.ts","../../src/shared/components/user-activity-pie-chart/utils/UserActivityPieChartConstants.ts","../../src/shared/components/user-activity-pie-chart/utils/UserActivityPieChartUtils.ts","../../src/shared/components/user-activity-pie-chart/UserActivityPieChart.tsx"],"sourcesContent":["import React from 'react';\n\nimport styles from './partial-user-activity-pie-chart.module.scss';\n\nexport function PartialUserActivityPieChart(): JSX.Element {\n return (\n <div className='d-flex align-items-start justify-content-between'>\n <div>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n <div className={`partial-loading-background ${styles.partialCount}`} />\n </div>\n <div className={`partial-loading-background rounded ${styles.partialSelector}`} />\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { BaseAnalyticsEventResponse, GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { UnionEventResponse } from 'libs/shared/apps/analytics/interfaces/UnionEvent';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { mixinSeriesColours } from 'libs/shared/apps/analytics/utils/ChartColourUtils';\n\ntype EventResponseGroupByAttributes = keyof Pick<VideoViewEventResponse, 'contentTypeCount'>\n | keyof Pick<BaseAnalyticsEventResponse, 'userTypeCount' | 'yearGroupCount'>;\n\nexport function groupEvents(\n events: UnionEventResponse,\n groupBy: EventResponseGroupByAttributes,\n groupsToOmit?: string[],\n getSeriesName?: (group: string) => string\n): Highcharts.PointOptionsObject[] {\n const groups: HashObject<number> = {};\n\n const eventCounts = events[groupBy as keyof UnionEventResponse] as GroupedAnalyticsCount[];\n\n eventCounts?.forEach(ev => {\n const name = ev.name || 'Unknown';\n\n if (!name || groupsToOmit?.includes(name.toLowerCase()))\n return;\n\n groups[name] = groups[name] ?? 0;\n groups[name] += ev.count;\n });\n\n return mixinSeriesColours(ArrayHelper.sortBy(Object.keys(groups).map(group => ({\n name: getSeriesName ? getSeriesName(group) : group,\n y: groups[group],\n type: 'pie'\n })), 'name'));\n}\n\nexport function sortByYearGroup(data: Highcharts.PointOptionsObject[]) {\n const staffIndex = data.findIndex(group => group.name === 'Staff');\n\n // Move Staff to last index\n if (staffIndex > -1) {\n const [staffObject] = data.splice(staffIndex, 1);\n\n data.push(staffObject);\n }\n return data.sort((a, b) => {\n const numA = parseInt((a.name as string).match(/\\d+/)?.[0]);\n const numB = parseInt((b.name as string).match(/\\d+/)?.[0]);\n return numA - numB;\n });\n}\n\nexport function getTotalEventCount(data?: Highcharts.PointOptionsObject[]): number | null {\n return data?.reduce((a, b) => a + b.y, 0) ?? null;\n}","export enum EventType {\n Login = 'login',\n VideoView = 'video_view'\n}","export enum BaseGroupBy {\n YearGroup = 'year_group',\n Role = 'role'\n}\n\nexport enum VideoViewGroupBy {\n ContentType = 'content_type',\n Subject = 'subject',\n Topic = 'topic'\n}\n\nexport type GroupBy = BaseGroupBy | VideoViewGroupBy;\n\nexport interface CustomGroupByComponent {\n type: GroupBy;\n getComponent: () => JSX.Element;\n}","import Highcharts from 'highcharts';\n\nimport { EventType } from 'shared/enums/EventType';\n\nimport { BaseGroupBy, VideoViewGroupBy } from './UserActivityPieChartTypes';\n\nexport const LOCAL_STORAGE_KEYS = {\n [EventType.Login]: 'login_group_by',\n [EventType.VideoView]: 'video_view_group_by'\n};\n\nexport const GROUP_BY_PHRASES = {\n [BaseGroupBy.YearGroup]: 'yearGroups',\n [BaseGroupBy.Role]: 'role',\n [VideoViewGroupBy.ContentType]: 'contentType',\n [VideoViewGroupBy.Subject]: 'subject',\n [VideoViewGroupBy.Topic]: 'topic'\n};\n\nexport const DEFAULT_GROUP_BY = BaseGroupBy.YearGroup;\n\nexport const CHART_TITLE_PHRASES: {[index: string]: { [index: string]: string }} = {\n [EventType.Login]: {\n [BaseGroupBy.YearGroup]: 'totalStudentLogins',\n [BaseGroupBy.Role]: 'totalLogins'\n },\n [EventType.VideoView]: {\n [BaseGroupBy.YearGroup]: 'totalStudentViews',\n [BaseGroupBy.Role]: 'totalViews',\n [VideoViewGroupBy.ContentType]: 'totalViews',\n [VideoViewGroupBy.Subject]: 'totalViews',\n [VideoViewGroupBy.Topic]: 'totalViews'\n }\n};\n\nexport const SERIES_PHRASES = {\n [EventType.Login]: 'logins',\n [EventType.VideoView]: 'views'\n};\n\nexport const STATIC_CHART_OPTIONS: Highcharts.Options = {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n chart: {\n backgroundColor: 'transparent',\n spacing: [ 0, 0, 0, 0 ]\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: 'pointer',\n dataLabels: {\n enabled: false\n },\n showInLegend: true\n }\n }\n};","import Highcharts from 'highcharts';\n\nimport { UnionEventResponse } from 'libs/shared/apps/analytics/interfaces/UnionEvent';\nimport { groupEvents, sortByYearGroup } from 'libs/shared/apps/analytics/utils/SharedUserActivityPieChartUtils';\n\nimport { DEFAULT_GROUP_BY, GROUP_BY_PHRASES, LOCAL_STORAGE_KEYS, STATIC_CHART_OPTIONS } from 'shared/components/user-activity-pie-chart/utils/UserActivityPieChartConstants';\nimport { BaseGroupBy, CustomGroupByComponent, GroupBy, VideoViewGroupBy } from 'shared/components/user-activity-pie-chart/utils/UserActivityPieChartTypes';\nimport { EventType } from 'shared/enums/EventType';\nimport { mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\n\nfunction getLocalStorageKey(eventType: EventType, isSingleObject: boolean): string {\n const key = LOCAL_STORAGE_KEYS[eventType];\n\n if (!isSingleObject)\n return key;\n\n return key + '_single';\n}\n\nexport function getInitialGroupBy(eventType: EventType, isSingleObject: boolean): GroupBy {\n const localStoragePreference = localStorage.getItem(getLocalStorageKey(eventType, isSingleObject)) as GroupBy;\n\n /**\n * Check that the local storage value is a valid before using it. \n * \n * This also allows us to re-map a value even if users have the old value persisted in local storage. \n * We'll return the default and let them reset their preference.\n */\n if (GROUP_BY_PHRASES[localStoragePreference])\n return localStoragePreference;\n\n return DEFAULT_GROUP_BY;\n}\n\nexport function setGroupByPreference(eventType: EventType, groupBy: GroupBy, isSingleObject: boolean): void {\n localStorage.setItem(getLocalStorageKey(eventType, isSingleObject), groupBy);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getGroupByOptions(eventType: EventType, customGroupBy?: CustomGroupByComponent[]): GroupBy[] {\n const options: GroupBy[] = [ BaseGroupBy.YearGroup, BaseGroupBy.Role ];\n\n if (eventType === EventType.VideoView)\n options.push(VideoViewGroupBy.ContentType);\n\n if (customGroupBy)\n options.push(...customGroupBy.map(g => g.type));\n\n return options;\n}\n\nexport function getChartOptions(\n data: Highcharts.PointOptionsObject[],\n seriesName: string\n): Highcharts.Options {\n return {\n ...STATIC_CHART_OPTIONS,\n series: [{\n type: 'pie',\n name: seriesName,\n data\n }]\n };\n}\n\nexport function groupData(\n events: UnionEventResponse,\n groupBy: GroupBy\n): Highcharts.PointOptionsObject[] {\n switch (groupBy) {\n case BaseGroupBy.YearGroup:\n return sortByYearGroup(groupEvents(events, 'yearGroupCount', [ 'staff', 'unknown' ]));\n\n case BaseGroupBy.Role:\n return groupEvents(events, 'userTypeCount', null, mapUserTypeToChartLabel);\n \n case VideoViewGroupBy.ContentType:\n return groupEvents(events, 'contentTypeCount');\n }\n}\nexport function getCustomComponent(\n selectedOption: GroupBy,\n customGroupBy?: CustomGroupByComponent[]\n): () => JSX.Element | undefined {\n return Array.isArray(customGroupBy)\n ? customGroupBy.find(g => g.type === selectedOption)?.getComponent\n : undefined;\n}\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UnionEventResponse } from 'libs/shared/apps/analytics/interfaces/UnionEvent';\nimport { getTotalEventCount } from 'libs/shared/apps/analytics/utils/SharedUserActivityPieChartUtils';\n\nimport { EventType } from 'shared/enums/EventType';\nimport { useListenToNavState } from 'shared/hooks/UseListenToNavState';\n\nimport { CHART_TITLE_PHRASES, GROUP_BY_PHRASES, SERIES_PHRASES } from './utils/UserActivityPieChartConstants';\nimport { CustomGroupByComponent, GroupBy } from './utils/UserActivityPieChartTypes';\nimport {\n getChartOptions,\n getCustomComponent,\n getGroupByOptions,\n getInitialGroupBy,\n groupData,\n setGroupByPreference\n} from './utils/UserActivityPieChartUtils';\n\nimport styles from './user-activity-pie-chart.module.scss';\n\nconst namespace = 'shared.userActivityPieChart';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GroupByDropdownProps {\n eventType: EventType;\n selectedOption: GroupBy;\n onSelect: (option: GroupBy) => void;\n customGroupBy?: CustomGroupByComponent[];\n}\n\nfunction GroupByDropdown(props: GroupByDropdownProps): JSX.Element {\n const options = getGroupByOptions(props.eventType, props.customGroupBy);\n\n return (\n <Dropdown align='end'>\n <Dropdown.Toggle\n id='group-by-dropdown'\n variant='outline-dark'\n className='no-caret'\n >\n {getPhrase(GROUP_BY_PHRASES[props.selectedOption])}\n </Dropdown.Toggle>\n <Dropdown.Menu>\n {options.map((g, idx) => (\n props.selectedOption !== g &&\n <Dropdown.Item key={idx} onClick={() => props.onSelect(g)}>\n {getPhrase(GROUP_BY_PHRASES[g])}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}\n\ninterface UserActivityPieChartProps {\n events: UnionEventResponse;\n eventType: EventType;\n emptyStateComponent: JSX.Element;\n objectId?: string;\n customGroupBy?: CustomGroupByComponent[];\n}\n\nexport function UserActivityPieChart(props: UserActivityPieChartProps): JSX.Element {\n const [ groupBy, setGroupBy ] = React.useState<GroupBy>(getInitialGroupBy(props.eventType, !!props.objectId));\n\n useListenToNavState();\n\n const data = groupData(props.events, groupBy);\n const totalEventCount = getTotalEventCount(data);\n const customComponentCtor = getCustomComponent(groupBy, props.customGroupBy);\n\n function onSelectGroupBy(selection: GroupBy): void {\n setGroupByPreference(props.eventType, selection, !!props.objectId);\n setGroupBy(selection);\n }\n\n return (\n <>\n <div className='d-flex align-items-start justify-content-between w-100'>\n <div>\n <h3 className='h6 m-0'>{getPhrase(CHART_TITLE_PHRASES[props.eventType][groupBy])}</h3>\n {typeof totalEventCount === 'number' &&\n <strong className={styles.totalCount}>{totalEventCount}</strong>\n }\n </div>\n <GroupByDropdown\n eventType={props.eventType}\n selectedOption={groupBy}\n onSelect={onSelectGroupBy}\n customGroupBy={props.customGroupBy}\n />\n </div>\n\n {!!customComponentCtor && customComponentCtor()}\n\n {!customComponentCtor && (data?.length\n ? <HighchartsReact\n highcharts={Highcharts}\n options={getChartOptions(data, getPhrase(SERIES_PHRASES[props.eventType]))}\n containerProps={{\n className: `${styles.chartContainer} position-absolute w-100 h-75 flex-grow-1`\n }}\n />\n : props.emptyStateComponent\n )}\n </>\n );\n}"],"names":["PartialUserActivityPieChart","jsxs","jsx","styles","groupEvents","events","groupBy","groupsToOmit","getSeriesName","groups","eventCounts","ev","name","mixinSeriesColours","ArrayHelper","group","sortByYearGroup","data","staffIndex","staffObject","a","b","numA","_a","numB","_b","getTotalEventCount","EventType","BaseGroupBy","VideoViewGroupBy","LOCAL_STORAGE_KEYS","GROUP_BY_PHRASES","DEFAULT_GROUP_BY","CHART_TITLE_PHRASES","SERIES_PHRASES","STATIC_CHART_OPTIONS","getLocalStorageKey","eventType","isSingleObject","key","getInitialGroupBy","localStoragePreference","setGroupByPreference","getGroupByOptions","customGroupBy","options","g","getChartOptions","seriesName","groupData","mapUserTypeToChartLabel","getCustomComponent","selectedOption","namespace","getPhrase","LanguageService","GroupByDropdown","props","Dropdown","idx","UserActivityPieChart","setGroupBy","React","useListenToNavState","totalEventCount","customComponentCtor","onSelectGroupBy","selection","Fragment","HighchartsReact","Highcharts"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e,h as n,bP as a,T as s}from"./app-5iiM5qQY.js";const t="interactives.onlineDataWarning";function r(){return e.jsxs("div",{className:"rounded p-2 bg-light-blue text-info fw-semibold",role:"alert",children:[e.jsx(n,{svg:a})," ",e.jsx(s,{namespace:t,phrase:"message"})]})}export{r as O};
2
+ //# sourceMappingURL=BhPjzT2a.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BhPjzT2a.chunk.js","sources":["../../src/apps/interactives/components/online-data-warning/OnlineDataWarning.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WarningSvg } from 'libs/shared/images/svg/status/WarningSvg';\n\nconst namespace = 'interactives.onlineDataWarning';\n\nexport function OnlineDataWarning(): JSX.Element {\n return (\n <div className='rounded p-2 bg-light-blue text-info fw-semibold' role='alert'>\n <SvgContainer svg={WarningSvg} />\n &nbsp;\n <Text namespace={namespace} phrase='message' />\n </div>\n );\n}"],"names":["namespace","OnlineDataWarning","jsxs","jsx","SvgContainer","WarningSvg","Text"],"mappings":"4DAMA,MAAMA,EAAY,iCAEX,SAASC,GAAiC,CAC/C,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,kDAAkD,KAAK,QACpE,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAa,IAAKC,CAAA,CAAY,EAAE,IAEjCF,EAAAA,IAACG,EAAA,CAAK,UAAAN,EAAsB,OAAO,SAAA,CAAU,CAAA,EAC/C,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as i,v as u,L as b}from"./app-5iiM5qQY.js";import{c as l,H as m,b as p,m as y}from"./DvV9e2O3.chunk.js";const o={chart:{spacing:[0,36,0,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null}},xAxis:{lineWidth:0,labels:{style:l,align:"left",reserveSpace:!0}},legend:{enabled:!1},plotOptions:{bar:{borderRadius:4,dataLabels:{enabled:!0,style:l,inside:!1,crop:!1,overflow:"allow"},pointWidth:12,pointPadding:0,minPointLength:8}}},A=(e,t)=>({...o,chart:{...o.chart,height:8+t.length*40},xAxis:{...o.xAxis,categories:e},series:[{type:"bar",label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function I(e){const t=A(e.data.map(n=>n.name),e.data);return i.jsx(i.Fragment,{children:i.jsx(m,{highcharts:p,options:t})})}function H(e,t,n){if(!e)return null;const s=e.map(a=>({name:t?t(a.name):a.name,y:a.count,color:n?n(a.name):y(a.name)})),c=s.findIndex(a=>a.name==="Staff");if(c>-1){const[a]=s.splice(c,1);s.push(a)}return s.sort((a,x)=>{var d,h;const g=parseInt((d=a.name.match(/\d+/))==null?void 0:d[0]),f=parseInt((h=x.name.match(/\d+/))==null?void 0:h[0]);return g-f})}const S="reportsShared.lineChart",T=b.encloseNamespace(S),r={title:{text:null},credits:{enabled:!1},yAxis:{title:{text:null},labels:{style:l},gridLineDashStyle:"LongDash",endOnTick:!0,tickAmount:5,min:0},xAxis:{labels:{style:l},min:0},chart:{backgroundColor:"transparent",spacing:[40,0,0,4]},legend:{enabled:!0,align:"right",verticalAlign:"top",floating:!0,y:-40,itemStyle:l},tooltip:{style:{...l,fontSize:"12px"},borderRadius:6}},C=(e,t)=>{var s;const n=(s=u.first(t))==null?void 0:s.data.length;return{...r,yAxis:{...r.yAxis,max:n?null:100},xAxis:{...r.xAxis,categories:e,max:e.length-1},legend:{...r.legend,...n?{}:{symbolPadding:0,symbolWidth:0,symbolHeight:0,squareSymbol:!1}},series:n?t:[{type:"line",name:T("noViews"),data:[]}]}};function R(e){const t=C(e.categories,e.data);return i.jsx(i.Fragment,{children:i.jsx(m,{highcharts:p,options:t,containerProps:{className:"h-100"}})})}export{R as L,I as V,H as g};
2
+ //# sourceMappingURL=BihcsiRl.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BihcsiRl.chunk.js","sources":["../../src/shared/components/vertical-bar-chart/VerticalBarChart.tsx","../../src/shared/utils/BarChartByGroupUtils.ts","../../src/shared/components/line-chart/LineChart.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_BAR_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 0, 36, 0, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n }\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: CHART_FONT_STYLES,\n align: 'left',\n reserveSpace: true\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n bar: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n pointWidth: 12,\n pointPadding: 0,\n minPointLength: 8\n }\n }\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[]\n): Highcharts.Options => ({\n ...STATIC_BAR_CHART_OPTIONS,\n chart: {\n ...STATIC_BAR_CHART_OPTIONS.chart,\n height: 8 + (data.length * 40)\n },\n xAxis: {\n ...STATIC_BAR_CHART_OPTIONS.xAxis,\n categories\n },\n series: [{\n type: 'bar',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface VerticalBarChartProps {\n data: Highcharts.PointOptionsObject[]\n}\n\nexport function VerticalBarChart(props: VerticalBarChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data);\n\n return (\n <>\n <HighchartsReact\n highcharts={Highcharts}\n options={chartOptions}\n />\n </>\n );\n}","import { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\n\nimport { mapUserTypeToChartColour } from 'shared/utils/UserUtils';\n\nexport function getCountByGroup(\n countGroup: GroupedAnalyticsCount[],\n getGroupName?: (group: string) => string,\n getChartColour?: (group: string) => string\n): Highcharts.PointOptionsObject[] {\n if (!countGroup) return null;\n\n const mappedGroups: Highcharts.PointOptionsObject[] = countGroup.map(group => {\n return {\n name: getGroupName ? getGroupName(group.name) : group.name,\n y: group.count,\n color: getChartColour ? getChartColour(group.name) : mapUserTypeToChartColour(group.name)\n };\n });\n\n const staffIndex = mappedGroups.findIndex(group => group.name === 'Staff');\n\n // Move Staff to last index\n if (staffIndex > -1) {\n const [staffObject] = mappedGroups.splice(staffIndex, 1);\n\n mappedGroups.push(staffObject);\n }\n return mappedGroups.sort((a, b) => {\n const numA = parseInt((a.name as string).match(/\\d+/)?.[0]);\n const numB = parseInt((b.name as string).match(/\\d+/)?.[0]);\n return numA - numB;\n });\n}","import React from 'react';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst namespace = 'reportsShared.lineChart';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst STATIC_LINE_CHART_OPTIONS: Highcharts.Options = {\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: CHART_FONT_STYLES\n },\n gridLineDashStyle: 'LongDash',\n endOnTick: true,\n tickAmount: 5,\n min: 0\n },\n xAxis: {\n labels: {\n style: CHART_FONT_STYLES\n },\n min: 0\n },\n chart: {\n backgroundColor: 'transparent',\n spacing: [ 40, 0, 0, 4 ]\n },\n legend: {\n enabled: true,\n align: 'right',\n verticalAlign: 'top',\n floating: true,\n y: -40,\n itemStyle: CHART_FONT_STYLES\n },\n tooltip: {\n style: {\n ...CHART_FONT_STYLES,\n fontSize: '12px'\n },\n borderRadius: 6\n }\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.SeriesLineOptions[]\n): Highcharts.Options => {\n const hasData = ArrayHelper.first(data)?.data.length;\n\n return {\n ...STATIC_LINE_CHART_OPTIONS,\n yAxis: {\n ...STATIC_LINE_CHART_OPTIONS.yAxis,\n max: !hasData ? 100 : null\n },\n xAxis: {\n ...STATIC_LINE_CHART_OPTIONS.xAxis,\n categories,\n max: categories.length - 1\n },\n legend: {\n ...STATIC_LINE_CHART_OPTIONS.legend,\n ...(!hasData ? {\n symbolPadding: 0,\n symbolWidth: 0,\n symbolHeight: 0,\n squareSymbol: false\n } : {})\n },\n series: hasData ? data : [{\n type: 'line',\n name: getPhrase('noViews'),\n data: []\n }]\n };\n};\n\ninterface LineChartProps {\n categories: string[];\n data: Highcharts.SeriesLineOptions[]\n}\n\nexport function LineChart(props: LineChartProps) {\n const chartOptions = getChartOptions(props.categories, props.data);\n\n return (\n <>\n <HighchartsReact\n highcharts={Highcharts}\n options={chartOptions}\n containerProps={{ className: 'h-100' }}\n />\n </>\n );\n}"],"names":["STATIC_BAR_CHART_OPTIONS","CHART_FONT_STYLES","getChartOptions","categories","data","VerticalBarChart","props","chartOptions","jsx","Fragment","HighchartsReact","Highcharts","getCountByGroup","countGroup","getGroupName","getChartColour","mappedGroups","group","mapUserTypeToChartColour","staffIndex","staffObject","b","numA","_a","numB","_b","namespace","getPhrase","LanguageService","STATIC_LINE_CHART_OPTIONS","hasData","ArrayHelper","LineChart"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{s as u}from"./app-5iiM5qQY.js";import{g as a}from"./sFV5nxD4.chunk.js";var c=(o=>(o[o.RootTopic=1]="RootTopic",o[o.ChildTopic=2]="ChildTopic",o))(c||{});function i(o,r,t){return{...o,topicAnalyticsType:r,query:"cover",limit:t}}const v={topTopics(o,r,t,e,s){return{url:u.urlBuilder("{gateway}/v1/analytics/topics/top",i(o,r)),key:a(`top:topics:${r}`,o),success:t,error:e,always:s}},topTopicsV2(o,r,t,e,s,p){return{url:u.urlBuilder("{gateway}/v2/analytics/topics/top",i(o,r,t)),key:a(`top:topics:${r}:v2:${t}`,o),success:e,error:s,always:p}},viewsByTopic(o,r,t,e,s){return{url:u.urlBuilder("{gateway}/v1/analytics/topics/count",i(o,r)),key:a(`views:topics:${r}`,o),normalize:!1,success:t,error:e,always:s}}};export{c as T,v as a};
2
+ //# sourceMappingURL=BlUKEHqx.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlUKEHqx.chunk.js","sources":["../../src/shared/enums/TopicAnalyticsType.ts","../../src/shared/flight-requests/TopicRequests.ts"],"sourcesContent":["export enum TopicAnalyticsType {\n RootTopic = 1,\n ChildTopic = 2\n}","import { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsRequestFilter, Classification } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\n\nfunction getTopicRequestParams(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit?: number\n): HashObject {\n return {\n ...filter,\n topicAnalyticsType,\n query: 'cover',\n limit\n };\n}\n\nexport const TopicRequests = {\n topTopics(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}`, filter),\n success,\n error,\n always\n };\n },\n\n topTopicsV2(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n limit: number,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v2/analytics/topics/top',\n getTopicRequestParams(filter, topicAnalyticsType, limit)\n ),\n key: getAnalyticsRequestKey(`top:topics:${topicAnalyticsType}:v2:${limit}`, filter),\n success,\n error,\n always\n };\n },\n\n viewsByTopic(\n filter: AnalyticsRequestFilter,\n topicAnalyticsType: TopicAnalyticsType,\n success?: (data: Classification[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(\n '{gateway}/v1/analytics/topics/count',\n getTopicRequestParams(filter, topicAnalyticsType)\n ),\n key: getAnalyticsRequestKey(`views:topics:${topicAnalyticsType}`, filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};"],"names":["TopicAnalyticsType","getTopicRequestParams","filter","topicAnalyticsType","limit","TopicRequests","success","error","always","UrlHelper","getAnalyticsRequestKey"],"mappings":"8EAAO,IAAKA,GAAAA,IACVA,EAAAA,EAAA,UAAY,CAAA,EAAZ,YACAA,EAAAA,EAAA,WAAa,CAAA,EAAb,aAFUA,IAAAA,GAAA,CAAA,CAAA,ECUZ,SAASC,EACPC,EACAC,EACAC,EACY,CACZ,MAAO,CACL,GAAGF,EACH,mBAAAC,EACA,MAAO,QACP,MAAAC,CAAA,CAEJ,CAEO,MAAMC,EAAgB,CAC3B,UACEH,EACAC,EACAG,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WACb,oCACAR,EAAsBC,EAAQC,CAAkB,CAAA,EAElD,IAAKO,EAAuB,cAAcP,CAAkB,GAAID,CAAM,EACtE,QAAAI,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,EAEA,YACEN,EACAC,EACAC,EACAE,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WACb,oCACAR,EAAsBC,EAAQC,EAAoBC,CAAK,CAAA,EAEzD,IAAKM,EAAuB,cAAcP,CAAkB,OAAOC,CAAK,GAAIF,CAAM,EAClF,QAAAI,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,EAEA,aACEN,EACAC,EACAG,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WACb,sCACAR,EAAsBC,EAAQC,CAAkB,CAAA,EAElD,IAAKO,EAAuB,gBAAgBP,CAAkB,GAAID,CAAM,EACxE,UAAW,GACX,QAAAI,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF"}
@@ -0,0 +1,2 @@
1
+ import{v as c,j as n,w as i,x as a,F as l}from"./app-5iiM5qQY.js";function x(t){let s=t.buttons.map(e=>{const o=()=>{e.success?l.isFunction(t.onDone)&&t.onDone():l.isFunction(t.onFail)&&t.onFail(),t.closePopup()};return{buttonText:e.text,className:e.className,onClick:o,type:e.type,close:e.close}});return s=c.sortBy(s,"close"),n.jsxs(i,{title:t.title,closePopup:t.closePopup,children:[n.jsx("p",{dangerouslySetInnerHTML:{__html:a.sanitize(t.text)}}),n.jsx("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3",children:s.map((e,o)=>n.jsx("button",{className:e.className,onClick:e.onClick,type:e.type,children:e.buttonText},o))})]})}export{x as DialogView};
2
+ //# sourceMappingURL=BpWIcknK.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BpWIcknK.chunk.js","sources":["../../../../libs/shared/src/views/dialog/DialogView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { DialogOptions, PopupViewProps } from 'libs/shared/interfaces';\n\ninterface DialogViewProps extends DialogOptions {\n onDone?: () => void;\n onFail?: () => void;\n}\n\ntype PropTypes = React.PropsWithChildren<DialogViewProps & PopupViewProps>;\n\nexport function DialogView(props: PropTypes): React.ReactElement {\n let buttons = props.buttons.map(b => {\n const onClick = () => {\n if (b.success)\n FunctionHelper.isFunction(props.onDone) && props.onDone();\n else\n FunctionHelper.isFunction(props.onFail) && props.onFail();\n\n props.closePopup();\n };\n\n return {\n buttonText: b.text,\n className: b.className,\n onClick,\n type: b.type,\n close: b.close\n };\n });\n\n /**\n * The dismiss action should always be on the left side of the popup\n */\n buttons = ArrayHelper.sortBy(buttons, 'close');\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <p dangerouslySetInnerHTML={{ __html: TextHelper.sanitize(props.text) }} />\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\n {buttons.map((b, idx) => (\n <button key={idx} className={b.className} onClick={b.onClick} type={b.type}>\n {b.buttonText}\n </button>\n ))}\n </div>\n </Popup>\n );\n}"],"names":["DialogView","props","buttons","b","onClick","FunctionHelper","ArrayHelper","Popup","jsx","TextHelper","idx"],"mappings":"kEAgBO,SAASA,EAAWC,EAAsC,CAC/D,IAAIC,EAAUD,EAAM,QAAQ,IAAIE,GAAK,CACnC,MAAMC,EAAU,IAAM,CAChBD,EAAE,QACJE,EAAe,WAAWJ,EAAM,MAAM,GAAKA,EAAM,OAAA,EAEjDI,EAAe,WAAWJ,EAAM,MAAM,GAAKA,EAAM,OAAA,EAEnDA,EAAM,WAAA,CACR,EAEA,MAAO,CACL,WAAYE,EAAE,KACd,UAAWA,EAAE,UACb,QAAAC,EACA,KAAMD,EAAE,KACR,MAAOA,EAAE,KAAA,CAEb,CAAC,EAKD,OAAAD,EAAUI,EAAY,OAAOJ,EAAS,OAAO,SAG1CK,EAAA,CAAM,MAAON,EAAM,MAAO,WAAYA,EAAM,WAC3C,SAAA,CAAAO,EAAAA,IAAC,IAAA,CAAE,wBAAyB,CAAE,OAAQC,EAAW,SAASR,EAAM,IAAI,CAAA,EAAK,EACzEO,EAAAA,IAAC,MAAA,CAAI,UAAU,wDACZ,SAAAN,EAAQ,IAAI,CAACC,EAAGO,IACfF,EAAAA,IAAC,SAAA,CAAiB,UAAWL,EAAE,UAAW,QAASA,EAAE,QAAS,KAAMA,EAAE,KACnE,SAAAA,EAAE,UAAA,EADQO,CAEb,CACD,CAAA,CACH,CAAA,EACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as n,L as c,a5 as w,ab as x,Y as p,h as v,bH as g,a3 as d,c4 as z}from"./app-5iiM5qQY.js";import{D as b}from"./Cs1UnwSi.chunk.js";import{a as P,F as S}from"./DMd0fZar.chunk.js";var f=(e=>(e.Draft="Draft",e.Published="Published",e.Archived="Archived",e))(f||{}),u=(e=>(e.Exchange="exchange",e.Streamable="streamable",e.MoviesAndTv="movies_and_tv",e.Twig="twig",e))(u||{});function j(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z",clipRule:"evenodd"})})}function H(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z",fill:"currentColor"})})}var l=(e=>(e.Folder="category",e.CategoryTree="category_tree",e.CustomLibrary="custom_library",e.HostedLibrary="hosted_library",e.Exchange="exchange",e.Workspace="workspace",e.Video="video",e.Clip="clip",e.Interactive="interactive",e))(l||{}),i=(e=>(e.Pdf="pdf",e.Image="image",e.PowerPoint="powerpoint",e.Document="document",e.Excel="excel",e.Zip="archive",e.File="text",e))(i||{});function A(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z",fill:"currentColor"})})}function D(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39",fill:"currentColor"})})}function E(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z",fill:"currentColor"})})}function N(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z",fill:"currentColor"})})}function q(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z",fill:"currentColor"})})}function L(e){return n.jsx("svg",{...e,children:n.jsx("path",{d:"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z",fill:"currentColor"})})}const o="shared.shared-utils",V={mapRatingToClass(e){return e?(t=>{switch(!0){case t<32:return"bg-purple";case t<48:return"bg-green";case t<80:return"bg-blue";case t<96:return"bg-red";case t<128:return"bg-pink";case t>=128:return"bg-yellow";default:return""}})(e):""},mapSourceToDisplayName(e,r){switch(e.type){case l.HostedLibrary:case l.CustomLibrary:return e.name;case l.Exchange:return c.getPhrase(o,"exchange");case l.Workspace:return c.getPhrase(o,r?"myVideos":"workspace");default:return""}},mapSourceToClass(e){switch(e){case l.HostedLibrary:case l.CustomLibrary:return"bg-blue";case l.Exchange:return"bg-green";case l.Workspace:default:return"bg-red"}},isInteractive(e){var r,t;return!!((t=(r=e==null?void 0:e.interactives)==null?void 0:r.data)!=null&&t.length)},mapTypeToSvg(e){let t={[i.Pdf]:D,[i.Image]:P,[i.PowerPoint]:E,[i.Document]:q,[i.Excel]:A,[i.Zip]:L,[i.File]:N}[e];return t||(t=S),t},mapTypeToClass(e){switch(e){case i.Pdf:return"icon-red";case i.Image:return"icon-purple";case i.Document:return"icon-blue";case i.Excel:return"icon-green";case i.PowerPoint:return"icon-orange";case i.Zip:return"icon-teal";case i.File:return"icon-gray";default:return""}},mapTypeToExtension(e){return e?{pdf:"pdf",image:"png",powerpoint:"pptx"}[e.toLowerCase()]:""},mapTypeToName(e){if(!e)return"";switch(e){case i.Pdf:return c.getPhrase(o,"pdf");case i.Image:return c.getPhrase(o,"image");case i.Document:return c.getPhrase(o,"document");case i.Excel:return c.getPhrase(o,"spreadsheet");case i.PowerPoint:return c.getPhrase(o,"presentation");case i.Zip:return c.getPhrase(o,"zipArchive");case i.File:return c.getPhrase(o,"file");default:return""}}},k="shared.badges",F=c.encloseNamespace(k);var M=(e=>(e.DurationExact="duration-exact",e.DurationApproximate="duration-approximate",e.Interactive="interactive",e.Rating="rating",e.ProductionYear="production-year",e.Captions="captions",e.Status="status",e.Trending="trending",e.Count="count",e.Restriction="restriction",e.Source="source",e))(M||{});const I={xs:d.ExtraSmall,sm:d.Small,std:d.Standard,lg:d.Large},$={xs:"badge-xs",sm:"badge-sm",std:"badge-std",lg:"badge-lg"};function R(e){switch(e){case g.Published:case f.Published:return"bg-success";case g.Archived:case g.Rejected:case f.Archived:return"bg-danger";case g.Draft:case f.Draft:return"draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center";case g.Pending:case g.Processing:return"bg-warning"}}function T(e){return e.includes(u.Streamable)?`px-1 text-nowrap d-flex align-items-center ${z.streamable}`:e.includes(u.MoviesAndTv)?"bg-indigo text-white px-1 text-nowrap d-flex align-items-center":e.includes(u.Exchange)?"bg-orange text-white px-1 text-nowrap d-flex align-items-center":e.includes(u.Twig)?"bg-pink text-white px-1 text-nowrap d-flex align-items-center":""}function Z(e,r,t){const a="badge",h=$[t];let s="";if(e==="duration-approximate"&&(s="duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center"),e==="duration-exact"&&(s="duration-badge"),e==="interactive"&&(s="interactive-badge"),e==="rating"&&(s=`rating-badge text-shadow ${V.mapRatingToClass(r.value)}`),e==="production-year"&&(s="production-year-badge text-shadow"),e==="captions")return"p-0";if(e==="status")return`badge ${R(r)}`;if(e==="trending")return`trending-badge px-1 d-flex align-items-center ${h}`;if(e==="count"&&(s="count-badge px-1 rounded"),e==="restriction"){const m=x.mapRestrictionToClass(r.restrictions);return p("restriction-badge rounded-pill px-2 d-flex align-items-center",m)}return e==="source"&&(s=T(r)),p(a,s)}function _(e,r,t){if(e==="interactive")return F("interactive");if(e==="duration-approximate")return b.ToDisplayDurationNewStyle(r);if(e==="duration-exact")return b.ToDisplayDuration(r);if(e==="rating")return r.code;if(e==="production-year")return r;if(e==="captions")return n.jsx(v,{svg:H});if(e==="status")return typeof r=="number"?g[r]:r;if(e==="trending")return n.jsxs(n.Fragment,{children:[n.jsx(v,{svg:j,size:I[t]}),n.jsx("span",{className:"ps-1",children:r})]});if(e==="count")return r;if(e==="restriction")return n.jsxs(n.Fragment,{children:[n.jsx(v,{svg:x.mapRestrictionToSvg(r.restrictions)}),n.jsx("span",{children:x.mapRestrictionToText(r.restrictions,r.yearGroups)})]});if(e==="source"){const a=r;return a.includes(u.Streamable)?"streamable":a.includes(u.MoviesAndTv)?"movies + tv":a.includes(u.Exchange)?"exchange":a.includes(u.Twig)?"twig":"-"}}function W(e,r){return e==="rating"?{title:r.name,placement:"top"}:null}function Y(e,r){var t,a;return typeof r=="boolean"?!!r:e==="rating"?r&&!!r.value:e==="interactive"?!!(r!=null&&r.length)||!!((t=r==null?void 0:r.data)!=null&&t.length):e==="captions"?!!(r!=null&&r.length)||!!((a=r==null?void 0:r.data)!=null&&a.length):e==="status"?typeof r=="number"||typeof r=="string":!!r}function Q(e){const{type:r,data:t,size:a="std"}=e;if(!Y(r,t))return n.jsx(n.Fragment,{});let h=Z(r,t,a);h=`${h} ${e.inline?"d-inline-block":"d-flex justify-content-center"} ${e.className||""}`;const s=_(r,t,a),m=W(r,t),C=e.inline&&"d-inline-block";return m?n.jsx("div",{className:"badge-wrapper d-inline",children:n.jsx(w,{...m,spanHack:!0,spanHackClassName:C,children:n.jsx("span",{className:h,children:s})})}):n.jsx("span",{className:`${h} badge-wrapper`,children:s})}export{Q as B,H as C,M as a};
2
+ //# sourceMappingURL=BqY3bZyH.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BqY3bZyH.chunk.js","sources":["../../../../libs/shared/src/interfaces/models/Dashboard.ts","../../../../libs/shared/src/enums/VideoSource.ts","../../../../libs/shared/src/images/svg/objects/TrendingSvg.tsx","../../../../libs/shared/src/images/svg/status/CloseCaptionBadgeSvg.tsx","../../../../libs/shared/src/enums/MasterObjectTypes.ts","../../../../libs/shared/src/enums/ResourceFileType.ts","../../../../libs/shared/src/images/svg/objects/FileExcelSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePdfSvg.tsx","../../../../libs/shared/src/images/svg/objects/FilePptSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileWordSvg.tsx","../../../../libs/shared/src/images/svg/objects/FileZipSvg.tsx","../../../../libs/shared/src/utils/VideoDetailsHelper.ts","../../../../libs/shared/src/components/badges/Badge.tsx"],"sourcesContent":["import { HashObject } from 'libs/common/react/interfaces';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { CustomerType } from 'libs/shared/enums/CustomerType';\nimport { LibraryType } from 'libs/shared/enums/LibraryType';\nimport { BaseObject, BasePaginatedCollection, CuratedWidget, CuratedWidgetContent, CuratedWidgetData } from 'libs/shared/interfaces';\n\nexport enum DashboardLearningLevel {\n Any = 'Any',\n Level_1 = 'Level_1',\n Level_2 = 'Level_2',\n Level_3 = 'Level_3',\n Level_4 = 'Level_4',\n}\n\nexport enum DashboardUserType {\n Any = 'Any',\n Staff = 'Staff',\n Learner = 'Learner',\n}\n\nexport enum DashboardStatus {\n Draft = 'Draft',\n Published = 'Published',\n Archived = 'Archived',\n}\n\nexport interface Dashboard extends BaseObject {\n libraryType: LibraryType;\n customerType: CustomerType;\n userRole: number;\n}\n\nexport interface CuratedDashboard<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BaseObject {\n contentRegion: ContentRegion;\n description: string;\n learningLevel: DashboardLearningLevel;\n userType: DashboardUserType;\n status: DashboardStatus;\n target: string;\n widgets: CuratedWidget<TWidgetData, TWidgetContent>[];\n metadata: HashObject;\n datePublished: string;\n}\n\nexport interface CuratedDashboardCollection<\n TWidgetData extends CuratedWidgetData = CuratedWidgetData,\n TWidgetContent extends CuratedWidgetContent = CuratedWidgetContent\n> extends BasePaginatedCollection<CuratedDashboard<TWidgetData, TWidgetContent>>{}\n\n/**\n * Dashboard identification below\n */\nexport enum DashboardTargetType {\n Discover = 'discover',\n Classification = 'classification',\n ClassificationDirectory = 'classification-directory',\n ClassificationCurriculum = 'classification-curriculum',\n MoviesAndTv = 'movies-and-tv',\n Company = 'company',\n Search = 'search'\n}\n\ninterface DiscoverDashboardInfo {\n targetType: DashboardTargetType.Discover;\n presentationId: string;\n}\n\nexport interface ClassificationDashboardInfo {\n targetType: DashboardTargetType.Classification;\n classificationId: string;\n}\n\nexport interface ClassificationDirectoryInfo {\n targetType: DashboardTargetType.ClassificationDirectory;\n classificationId: string;\n}\n\nexport interface ClassificationCurriculumInfo {\n targetType: DashboardTargetType.ClassificationCurriculum;\n classificationId: string;\n}\n\ninterface MoviesAndTvDashboardInfo {\n targetType: DashboardTargetType.MoviesAndTv;\n presentationId: string;\n}\n\nexport interface CompanyDashboardInfo {\n targetType: DashboardTargetType.Company;\n companyId: string;\n presentationId: string;\n}\n\nexport type DashboardTargetInfo = DiscoverDashboardInfo |\n ClassificationDashboardInfo |\n ClassificationDirectoryInfo |\n ClassificationCurriculumInfo |\n MoviesAndTvDashboardInfo |\n CompanyDashboardInfo;\n\nexport interface UnknownDashboardTargetInfo {\n targetType: DashboardTargetType;\n presentationId: string;\n classificationId: string;\n companyId: string;\n}","export enum VideoSource {\n Exchange = 'exchange',\n Streamable = 'streamable',\n MoviesAndTv = 'movies_and_tv',\n Twig = 'twig'\n}","import React from 'react';\n\nexport function TrendingSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M15.333 7.333a.667.667 0 1 0 0 1.334h2.39L13 13.39l-2.862-2.862a.667.667 0 0 0-.943 0l-5 5a.667.667 0 1 0 .943.942l4.529-4.528 2.862 2.862c.26.26.682.26.942 0l5.196-5.196V12A.667.667 0 0 0 20 12V8a.667.667 0 0 0-.667-.666z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CloseCaptionBadgeSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4M11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","export enum MasterObjectTypes {\n Folder = 'category',\n CategoryTree = 'category_tree',\n CustomLibrary = 'custom_library',\n HostedLibrary = 'hosted_library',\n Exchange = 'exchange',\n Workspace = 'workspace',\n Video = 'video',\n Clip = 'clip',\n Interactive = 'interactive'\n}","// File types match metadata for a resource FileApi\nexport enum ResourceFileType {\n Pdf = 'pdf',\n Image = 'image',\n PowerPoint = 'powerpoint',\n Document = 'document',\n Excel = 'excel',\n Zip = 'archive',\n File = 'text'\n}\n","import React from 'react';\n\nexport function FileExcelSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.09 7-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePdfSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.4 1.4 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292q.213-.539.43-1.205a42 42 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a8 8 0 0 1-.086 1.088q.238.293.513.606a31 31 0 0 0 1.73 1.81 14 14 0 0 0 .863.761q.697-.106 1.213-.105c.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a9 9 0 0 1-.538-.38 21 21 0 0 0-.944.191q-.586.131-1.22.3a45 45 0 0 0-2.27.667M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm4.43 8.39q-.104.315-.207.606l.055-.016a46 46 0 0 1 1.608-.459 34 34 0 0 1 1.538-.37 16 16 0 0 1-.378-.35 32 32 0 0 1-1.882-1.98l-.083.32a39 39 0 0 1-.652 2.248zm-2.157 2.603q.18-.162.382-.51a2.4 2.4 0 0 0-.553.37c-.092.092-.09.086-.083.096a.5.5 0 0 0 .138.116c.017.01.025.01.116-.072m7.434-2.3q-.07 0-.146.002c.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08m-5.36-5.49q.098.235.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FilePptSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5.07 6.96h1.22q.27 0 .52-.04a1.2 1.2 0 0 0 .44-.155.84.84 0 0 0 .305-.325q.115-.21.115-.55t-.115-.55a.84.84 0 0 0-.305-.325 1.2 1.2 0 0 0-.44-.155 3 3 0 0 0-.52-.04h-1.22zM9.5 8.6h3.22q.67 0 1.14.195t.765.515.43.73a2.7 2.7 0 0 1 0 1.695q-.135.415-.43.735a2.1 2.1 0 0 1-.765.515q-.47.195-1.14.195h-1.65v2.56H9.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m6.586 1H6v14h12V9.414zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileWordSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function FileZipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1m0 1v14h12V5zm5 0h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1zm-1 1h1v1h-1zm1 1h1v1h-1z'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { Library, Video } from 'libs/shared/interfaces';\n\nimport { FileExcelSvg } from '../images/svg/objects/FileExcelSvg';\nimport { FileImgSvg } from '../images/svg/objects/FileImgSvg';\nimport { FilePdfSvg } from '../images/svg/objects/FilePdfSvg';\nimport { FilePptSvg } from '../images/svg/objects/FilePptSvg';\nimport { FileSvg } from '../images/svg/objects/FileSvg';\nimport { FileWordSvg } from '../images/svg/objects/FileWordSvg';\nimport { FileZipSvg } from '../images/svg/objects/FileZipSvg';\nimport { FolderSvg } from '../images/svg/objects/FolderSvg';\n\n\nconst lang = 'shared.shared-utils';\n\nexport const VideoDetailsHelper = {\n mapRatingToClass(ratingValue: number): string {\n if (!ratingValue) return '';\n\n const ratings = (rating: number): string => {\n switch (true) {\n case (rating < 32):\n return 'bg-purple';\n case (rating < 48):\n return 'bg-green';\n case (rating < 80):\n return 'bg-blue';\n case (rating < 96):\n return 'bg-red';\n case (rating < 128):\n return 'bg-pink';\n case (rating >= 128):\n return 'bg-yellow';\n default:\n return ''; // Handles unrated\n }\n };\n\n return ratings(ratingValue);\n },\n\n mapSourceToDisplayName(library: Library, hasLite?: boolean): string {\n switch (library.type) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return library.name;\n case MasterObjectTypes.Exchange:\n return LanguageService.getPhrase(lang, 'exchange');\n case MasterObjectTypes.Workspace:\n return LanguageService.getPhrase(lang, hasLite ? 'myVideos' : 'workspace');\n default:\n return '';\n }\n },\n\n mapSourceToClass(sourceType: MasterObjectTypes | 'online_supplementary_library'): string {\n switch (sourceType) {\n case MasterObjectTypes.HostedLibrary:\n case MasterObjectTypes.CustomLibrary:\n return 'bg-blue';\n case MasterObjectTypes.Exchange:\n return 'bg-green';\n case MasterObjectTypes.Workspace:\n default:\n return 'bg-red';\n }\n },\n\n isInteractive(video: Video): boolean {\n return !!video?.interactives?.data?.length;\n },\n\n mapTypeToSvg(type: string): any {\n const types: HashObject = {\n [ResourceFileType.Pdf]: FilePdfSvg,\n [ResourceFileType.Image]: FileImgSvg,\n [ResourceFileType.PowerPoint]: FilePptSvg,\n [ResourceFileType.Document]: FileWordSvg,\n [ResourceFileType.Excel]: FileExcelSvg,\n [ResourceFileType.Zip]: FileZipSvg,\n [ResourceFileType.File]: FileSvg\n };\n\n let mappedType = types[type];\n\n if (!mappedType)\n mappedType = FolderSvg;\n\n return mappedType;\n },\n\n mapTypeToClass(type: string): any {\n switch (type) {\n case ResourceFileType.Pdf:\n return 'icon-red';\n\n case ResourceFileType.Image:\n return 'icon-purple';\n\n case ResourceFileType.Document:\n return 'icon-blue';\n\n case ResourceFileType.Excel:\n return 'icon-green';\n\n case ResourceFileType.PowerPoint:\n return 'icon-orange';\n\n case ResourceFileType.Zip:\n return 'icon-teal';\n\n case ResourceFileType.File:\n return 'icon-gray';\n\n default:\n return '';\n }\n },\n\n mapTypeToExtension(type: string): string {\n if (!type) return '';\n\n const extensions: HashObject = {\n pdf: 'pdf',\n image: 'png',\n powerpoint: 'pptx'\n };\n\n return extensions[type.toLowerCase()];\n },\n\n mapTypeToName(type: string): string {\n if (!type) return '';\n\n switch (type) {\n case ResourceFileType.Pdf: return LanguageService.getPhrase(lang, 'pdf');\n case ResourceFileType.Image: return LanguageService.getPhrase(lang, 'image');\n case ResourceFileType.Document: return LanguageService.getPhrase(lang, 'document');\n case ResourceFileType.Excel: return LanguageService.getPhrase(lang, 'spreadsheet');\n case ResourceFileType.PowerPoint: return LanguageService.getPhrase(lang, 'presentation');\n case ResourceFileType.Zip: return LanguageService.getPhrase(lang, 'zipArchive');\n case ResourceFileType.File: return LanguageService.getPhrase(lang, 'file');\n\n default:\n return '';\n }\n }\n};\n","import * as React from 'react';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { VideoSource } from 'libs/shared/enums/VideoSource';\nimport { TrendingSvg } from 'libs/shared/images/svg/objects/TrendingSvg';\nimport { CloseCaptionBadgeSvg } from 'libs/shared/images/svg/status/CloseCaptionBadgeSvg';\nimport { DashboardStatus, Rating } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport styles from './badge.module.scss';\n\nconst namespace = 'shared.badges';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum BadgeType {\n DurationExact = 'duration-exact',\n DurationApproximate = 'duration-approximate',\n Interactive = 'interactive',\n Rating = 'rating',\n ProductionYear = 'production-year',\n Captions = 'captions',\n Status = 'status',\n Trending = 'trending',\n Count = 'count',\n Restriction = 'restriction',\n Source = 'source'\n}\n\ntype BadgeSize = 'xs' | 'sm' | 'std' | 'lg';\n\ninterface BadgeProps {\n type: BadgeType;\n data: any;\n inline?: boolean;\n className?: string;\n /**\n * Only Trending badge supports this attribute atm\n */\n size?: BadgeSize;\n}\n\ninterface TooltipOptions {\n placement: Placement;\n title: string;\n}\n\nconst badgeSvgContainerSizeMap: {[key in BadgeSize]: SvgContainerSize} = {\n xs: SvgContainerSize.ExtraSmall,\n sm: SvgContainerSize.Small,\n std: SvgContainerSize.Standard,\n lg: SvgContainerSize.Large\n};\n\nconst badgeSizeClassNameMap: {[key in BadgeSize]: string} = {\n xs: 'badge-xs',\n sm: 'badge-sm',\n std: 'badge-std',\n lg: 'badge-lg'\n};\n\nfunction getStatusClassName(status: CurationStatus | DashboardStatus): string {\n switch (status) {\n case CurationStatus.Published:\n case DashboardStatus.Published:\n return 'bg-success';\n\n case CurationStatus.Archived:\n case CurationStatus.Rejected:\n case DashboardStatus.Archived:\n return 'bg-danger';\n\n case CurationStatus.Draft:\n case DashboardStatus.Draft:\n return 'draft-badge px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n case CurationStatus.Pending:\n case CurationStatus.Processing:\n return 'bg-warning';\n }\n}\n\nfunction getSourceClassName(sources: VideoSource[]): string {\n if (sources.includes(VideoSource.Streamable))\n return `px-1 text-nowrap d-flex align-items-center ${styles.streamable}`;\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'bg-indigo text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Exchange))\n return 'bg-orange text-white px-1 text-nowrap d-flex align-items-center';\n\n if (sources.includes(VideoSource.Twig))\n return `bg-pink text-white px-1 text-nowrap d-flex align-items-center`;\n\n return '';\n}\n\nfunction getClassName(type: BadgeType, data: any, size: BadgeSize): string {\n const baseClass = 'badge';\n const sizeClass = badgeSizeClassNameMap[size];\n\n let typeClass = '';\n\n if (type === BadgeType.DurationApproximate)\n typeClass = 'duration-badge-new px-2 rounded-pill text-nowrap d-flex align-items-center';\n\n if (type === BadgeType.DurationExact)\n typeClass = 'duration-badge';\n\n if (type === BadgeType.Interactive)\n typeClass = 'interactive-badge';\n\n if (type === BadgeType.Rating)\n typeClass = `rating-badge text-shadow ${VideoDetailsHelper.mapRatingToClass((data as Rating).value)}`;\n\n if (type === BadgeType.ProductionYear)\n typeClass = 'production-year-badge text-shadow';\n\n if (type === BadgeType.Captions)\n return 'p-0';\n\n if (type === BadgeType.Status)\n return `badge ${getStatusClassName(data)}`;\n\n if (type === BadgeType.Trending)\n return `trending-badge px-1 d-flex align-items-center ${sizeClass}`;\n\n if (type === BadgeType.Count)\n typeClass = 'count-badge px-1 rounded';\n\n if (type === BadgeType.Restriction) {\n const restrictionBgClass = RestrictionHelper.mapRestrictionToClass(data.restrictions);\n return classNames('restriction-badge rounded-pill px-2 d-flex align-items-center', restrictionBgClass);\n }\n \n if (type === BadgeType.Source)\n typeClass = getSourceClassName(data);\n\n return classNames(baseClass, typeClass);\n}\n\nfunction getBadgeContent(type: BadgeType, data: any, size: BadgeSize): string | JSX.Element {\n if (type === BadgeType.Interactive)\n return getPhrase('interactive');\n\n if (type === BadgeType.DurationApproximate)\n return DurationHelper.ToDisplayDurationNewStyle(data);\n\n if (type === BadgeType.DurationExact)\n return DurationHelper.ToDisplayDuration(data);\n\n if (type === BadgeType.Rating)\n return (data as Rating).code; // data expected to be a rating object\n\n if (type === BadgeType.ProductionYear)\n return data; // data should be the production year\n\n if (type === BadgeType.Captions)\n return <SvgContainer svg={CloseCaptionBadgeSvg} />;\n\n if (type === BadgeType.Status) {\n if (typeof(data) === 'number') {\n return CurationStatus[data];\n }\n return data;\n }\n\n if (type === BadgeType.Trending)\n return (\n <>\n <SvgContainer svg={TrendingSvg} size={badgeSvgContainerSizeMap[size]} />\n <span className='ps-1'>{data}</span>\n </>\n );\n\n if (type === BadgeType.Count)\n return data;\n\n if (type === BadgeType.Restriction)\n return (\n <>\n <SvgContainer\n svg={RestrictionHelper.mapRestrictionToSvg(data.restrictions)}\n />\n <span>\n {RestrictionHelper.mapRestrictionToText(data.restrictions, data.yearGroups)}\n </span>\n </>\n );\n\n if (type === BadgeType.Source) {\n const sources = data as VideoSource[];\n\n if (sources.includes(VideoSource.Streamable))\n return 'streamable';\n\n if (sources.includes(VideoSource.MoviesAndTv))\n return 'movies + tv';\n\n if (sources.includes(VideoSource.Exchange))\n return 'exchange';\n\n if (sources.includes(VideoSource.Twig))\n return 'twig';\n\n return '-';\n }\n}\n\nfunction getTooltip(type: BadgeType, data: any): TooltipOptions {\n if (type === BadgeType.Rating)\n return {\n title: (data as Rating).name,\n placement: 'top'\n };\n\n return null;\n}\n\nfunction hasData(type: BadgeType, data: any): boolean {\n if (typeof(data) === 'boolean')\n return !!data;\n\n if (type === BadgeType.Rating)\n return data && !!(data as Rating).value;\n\n if (type === BadgeType.Interactive)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Captions)\n return !!data?.length || !!data?.data?.length;\n\n if (type === BadgeType.Status)\n return typeof(data) === 'number' || typeof(data) === 'string';\n\n return !!data;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { type, data, size = 'std' } = props;\n \n if (!hasData(type, data))\n return <></>;\n\n let className = getClassName(type, data, size);\n className = `${className} ${props.inline ? 'd-inline-block' : 'd-flex justify-content-center'} ${props.className || ''}`;\n const content = getBadgeContent(type, data, size);\n const tooltip = getTooltip(type, data);\n const spanHackClassName = props.inline && 'd-inline-block';\n\n if (tooltip) {\n return (\n <div className='badge-wrapper d-inline'>\n <Tooltip {...tooltip} spanHack spanHackClassName={spanHackClassName}>\n <span className={className}>{content}</span>\n </Tooltip>\n </div>\n );\n }\n\n return <span className={`${className} badge-wrapper`}>{content}</span>;\n}"],"names":["DashboardStatus","VideoSource","TrendingSvg","props","jsx","CloseCaptionBadgeSvg","MasterObjectTypes","ResourceFileType","FileExcelSvg","FilePdfSvg","FilePptSvg","FileSvg","FileWordSvg","FileZipSvg","lang","VideoDetailsHelper","ratingValue","rating","library","hasLite","LanguageService","sourceType","video","_b","_a","type","mappedType","FileImgSvg","FolderSvg","namespace","getPhrase","BadgeType","badgeSvgContainerSizeMap","SvgContainerSize","badgeSizeClassNameMap","getStatusClassName","status","CurationStatus","getSourceClassName","sources","styles","getClassName","data","size","baseClass","sizeClass","typeClass","restrictionBgClass","RestrictionHelper","classNames","getBadgeContent","DurationHelper","SvgContainer","jsxs","Fragment","getTooltip","hasData","Badge","className","content","tooltip","spanHackClassName","Tooltip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{d as r,j as c,A as t,g as o,L as p}from"./app-5iiM5qQY.js";import{S as m}from"./SA1hxE7y.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=BrXmRwXi.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrXmRwXi.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"}
@@ -0,0 +1,2 @@
1
+ import{d as o,j as t,L as m,i as c,A as u,g as l}from"./app-5iiM5qQY.js";import{g}from"./DTL-Rceb.chunk.js";import{E as p}from"./BIIsc-MA.chunk.js";const d="interactives.markingRequiredAlert",r=m.encloseNamespace(d);function k(e,s){let a=0;return s.students.forEach(n=>{const i=g(e,n);a+=i.awaitingMarking}),a}function j(e){const s=o(),a=k(e.interactive,e.results);return a?t.jsxs("div",{className:"alert bg-white box-shadow",role:"alert",children:[t.jsx(p,{emoji:"👋",children:r("markingRequired",{smartCount:a})})," ",t.jsx(c,{className:"text-info",appLink:{application:l.INTERACTIVES,action:u.Interactives.QUESTION_LIST,args:[e.interactiveMetadataId],params:s},children:r("seeQuestions")})]}):t.jsx(t.Fragment,{})}export{j as M};
2
+ //# sourceMappingURL=BsOLqypJ.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BsOLqypJ.chunk.js","sources":["../../src/apps/interactives/components/marking-required-alert/MarkingRequiredAlert.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nconst namespace = 'interactives.markingRequiredAlert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getNumQuestionsToMark(interactive: Interactive, results: InteractiveResultSet): number {\n let numToMark = 0;\n\n results.students.forEach(s => {\n const summary = getStudentResultsSummary(interactive, s);\n numToMark += summary.awaitingMarking;\n });\n\n return numToMark;\n}\n\ninterface MarkingRequiredAlertProps {\n interactive: Interactive;\n results: InteractiveResultSet;\n interactiveMetadataId: string;\n}\n\nexport function MarkingRequiredAlert(props: MarkingRequiredAlertProps): JSX.Element {\n const filterQueryParams = useGetAppLinkFilterParams();\n\n const numToMark = getNumQuestionsToMark(props.interactive, props.results);\n\n if (!numToMark)\n return <></>;\n\n return (\n <div className='alert bg-white box-shadow' role='alert'>\n <EmojiText\n emoji='👋'\n >\n {getPhrase('markingRequired', { smartCount: numToMark })}\n </EmojiText>\n &nbsp;\n <AppLink className='text-info' appLink={{\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.QUESTION_LIST,\n args: [props.interactiveMetadataId],\n params: filterQueryParams\n }}>\n {getPhrase('seeQuestions')}\n </AppLink>\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","getNumQuestionsToMark","interactive","results","numToMark","s","summary","getStudentResultsSummary","MarkingRequiredAlert","props","filterQueryParams","useGetAppLinkFilterParams","jsxs","jsx","EmojiText","AppLink","AppChannels","Actions","Fragment"],"mappings":"oJAaA,MAAMA,EAAY,oCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAE5D,SAASG,EAAsBC,EAA0BC,EAAuC,CAC9F,IAAIC,EAAY,EAEhB,OAAAD,EAAQ,SAAS,QAAQE,GAAK,CAC5B,MAAMC,EAAUC,EAAyBL,EAAaG,CAAC,EACvDD,GAAaE,EAAQ,eACvB,CAAC,EAEMF,CACT,CAQO,SAASI,EAAqBC,EAA+C,CAClF,MAAMC,EAAoBC,EAAA,EAEpBP,EAAYH,EAAsBQ,EAAM,YAAaA,EAAM,OAAO,EAExE,OAAKL,EAIHQ,EAAAA,KAAC,MAAA,CAAI,UAAU,4BAA4B,KAAK,QAC9C,SAAA,CAAAC,EAAAA,IAACC,EAAA,CACC,MAAM,KAEL,SAAAf,EAAU,kBAAmB,CAAE,WAAYK,EAAW,CAAA,CAAA,EAC7C,IAEZS,EAAAA,IAACE,EAAA,CAAQ,UAAU,YAAY,QAAS,CACtC,YAAaC,EAAY,aACzB,OAAQC,EAAQ,aAAa,cAC7B,KAAM,CAACR,EAAM,qBAAqB,EAClC,OAAQC,CAAA,EAEP,SAAAX,EAAU,cAAc,CAAA,CAC3B,CAAA,EACF,EAlBOc,EAAAA,IAAAK,EAAAA,SAAA,EAAE,CAoBb"}
@@ -0,0 +1,2 @@
1
+ import{cL as g,L as o,az as a,bY as u,cO as f,cR as h,r as p}from"./app-5iiM5qQY.js";const i="shared.regionLockedResourceError";class E extends g{constructor(){super(o.getPhrase(i,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return o.getPhrase(i,"heading")}get description(){return o.getPhrase(i,"description")}}const c="shared.privateResourceError";class d extends g{constructor(){super(o.getPhrase(c,"title"))}get name(){return"PrivateResourceError"}get heading(){return o.getPhrase(c,"heading")}get description(){return o.getPhrase(c,"description")}}const l={notFound:h,forbidden:{rating:d,yearLevel:d,region:E,privacy:d},badRequest:f,internalServerError:f};function R(r,n={},t={}){if(!r)return;let e;typeof r=="number"?e=r:e=r.status;const s={...l,...n};if(e&&a.isStatusCodeError(e)){if(e===u.InternalServer){t.internalServerError||a.throw(new f);return}if(e===u.NotFound){t.notFound||a.throw(new s.notFound);return}if(e===u.Forbidden){t.forbidden||a.throw(new s.forbidden.privacy);return}t.badRequest||a.throw(new s.badRequest)}}function v(r){return r.map(n=>n.statusCode).join(":")}function P(r,n,t){const e=Array.isArray(r)?r:[r];p.useEffect(()=>{e.forEach(s=>{R(s.statusCode,n,t)})},[v(e),n,t])}export{E as R,P as u};
2
+ //# sourceMappingURL=BvArNs1K.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BvArNs1K.chunk.js","sources":["../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts","../../../../libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["namespace","RegionLockedResourceError","ErrorPageError","LanguageService","PrivateResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect"],"mappings":"qFAIA,MAAMA,EAAY,mCAEX,MAAMC,UAAkCC,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,8BAEX,MAAMI,UAA6BF,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQF,EACR,UAAWA,EACX,OAAQH,EACR,QAASG,CAAA,EAEX,WAAYG,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD,CCxFA,SAASG,EAAiBC,EAAiD,CACzE,OAAOA,EAAW,IAAIC,GAAOA,EAAI,UAAU,EAAE,KAAK,GAAG,CACvD,CAGO,SAASC,EACdC,EACAC,EACAC,EACM,CACN,MAAML,EAAa,MAAM,QAAQG,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE1EG,EAAAA,UAAU,IAAM,CACdN,EAAW,QAAQC,GAAO,CACxBV,EAAgBU,EAAI,WAAYG,EAAcC,CAAY,CAC5D,CAAC,CACH,EAAG,CAAEN,EAAiBC,CAAU,EAAGI,EAAcC,CAAa,CAAC,CACjE"}
@@ -0,0 +1,2 @@
1
+ import{c as t,r,V as o}from"./app-5iiM5qQY.js";function a(e){const[,s]=t(o.HEADER_TITLE);r.useEffect(()=>(s(e),()=>{s(null)}),[e])}export{a as u};
2
+ //# sourceMappingURL=BxBPX67V.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BxBPX67V.chunk.js","sources":["../../src/shared/hooks/UseSetHeaderTitle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nexport function useSetHeaderTitle(title?: string): void {\n const [ , setTitle ] = useViewModel<string>(ViewModelKeys.HEADER_TITLE);\n\n useEffect(() => {\n setTitle(title);\n\n return () => {\n setTitle(null);\n };\n }, [title]);\n}"],"names":["useSetHeaderTitle","title","setTitle","useViewModel","ViewModelKeys","useEffect"],"mappings":"+CAMO,SAASA,EAAkBC,EAAsB,CACtD,KAAM,CAAA,CAAIC,CAAS,EAAIC,EAAqBC,EAAc,YAAY,EAEtEC,EAAAA,UAAU,KACRH,EAASD,CAAK,EAEP,IAAM,CACXC,EAAS,IAAI,CACf,GACC,CAACD,CAAK,CAAC,CACZ"}
@@ -0,0 +1,3 @@
1
+ import{bC as L,s as r,j as i,i as b,bx as I,I as k,R as $,aP as P,a3 as T,a4 as M,Y as O,T as w,r as D,c1 as V,a0 as B,av as E,at as H}from"./app-5iiM5qQY.js";import{g as d}from"./sFV5nxD4.chunk.js";import{g as R,B as A,I as U,a as z}from"./DNP9cLqQ.chunk.js";import{M as F}from"./C6UUJ8P5.chunk.js";const ue={individualEngagement(e,a,t,l){const n={objectId:e,...a};return t&&(n.sharerId=t),l&&(n.includePublicViews=!0),{url:r.urlBuilder("{gateway}/v1/analytics/heat-map",n),key:d(`engagement:${e}`,a,t),formatData:c=>{var o;return{...c,data:(o=c.data)==null?void 0:o.map(m=>({...m,heatMap:m.heatMap??[]}))}},normalize:!1}},aggregateEngagement(e,a,t,l){const n={objectId:e,...a};return t&&(n.sharerId=t),l&&(n.includePublicViews=!0),{url:r.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",n),key:d(`aggregate:engagement:${e}`,a,t),formatData:c=>({...c,heatMap:c.heatMap??[]}),normalize:!1}},views(e,a,t,l){const n={...e,timeOffset:L.getTimezoneOffset()};return a&&(n.objectId=a),t&&(n.sharerId=t),l&&(n.includePublicViews=!0),{url:r.urlBuilder("{gateway}/v1/analytics/video-views",n),key:d(`video:views:${a}`,e,t),normalize:!1}}},q="_appLink_18mu0_1",W="_name_18mu0_4",G="_selectedMask_18mu0_7",K="_widgetItem_18mu0_15",Y="_hasThemeColor_18mu0_19",J="_text_18mu0_26",Q="_imagePanel_18mu0_29",X="_selected_18mu0_7",Z="_image_18mu0_29",p="_large_18mu0_59",ee="_comingSoonPanel_18mu0_69",ae="_newVideos_18mu0_75",te="_partialIcon_18mu0_106",s={appLink:q,name:W,selectedMask:G,widgetItem:K,hasThemeColor:Y,text:J,imagePanel:Q,selected:X,image:Z,large:p,comingSoonPanel:ee,newVideos:ae,partialIcon:te},S="shared.subjectWidgetItem",ne=({name:e,multiline:a,noUnderLine:t})=>{let l=`${s.comingSoonPanel}
2
+ d-flex flex-column align-items-center justify-content-center px-3 text-center`,n="";return a?n+=` ${s.clamped} clamp-2`:(l+=" text-nowrap",n+=" text-truncate"),i.jsxs("div",{className:l,children:[i.jsx("small",{className:"text-secondary",children:i.jsx(w,{namespace:S,phrase:"comingSoon"})}),i.jsx("p",{className:`${t?"":s.name} h6`,children:i.jsx("span",{className:n,children:e})})]})},ie=({name:e,multiline:a,subtitle:t,noUnderLine:l,newVideosCount:n})=>{let c="px-3 d-flex flex-column justify-content-center",o=`${l?"":s.name} h6`;return a?o+=` ${n?"clamp-2":"clamp-3"} text-start`:(c+=" text-nowrap text-truncate",o+=" text-truncate mb-0"),i.jsxs("div",{className:c,children:[t&&i.jsx("div",{className:`text-secondary clamp-1 ${s.text}`,children:t}),i.jsx("div",{className:o,title:e,children:e}),!!n&&i.jsx("div",{className:`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${s.newVideos}`,children:i.jsx(w,{namespace:S,phrase:"newVideos",options:{smartCount:n}})})]})};g.defaultProps={showFallbackBackgroundColour:!0};function g(e){var o;const a=I.createUrl(e.coverUrl,{size:e.isLarge?k.Medium:k.Small});let t;F.isClassification(e.data)&&(t=e.data);const l={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?(o=t==null?void 0:t.externalMetadata)==null?void 0:o.childDashboardNewVideoCount:0},n={backgroundImage:a?`url('${a}')`:null,backgroundColor:e.coverBgColor},c=R(e.data.name,A);return i.jsxs("div",{className:`${e.themeColor?s.hasThemeColor:"border"} d-flex position-relative ${e.className} ${s.widgetItem} ${e.isSelected?"border-success border-2":""} ${e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""}`,style:e.themeColor?{"--themeColor":e.themeColor}:{},id:`${e.data.id}-${$.getRandomInt()}`,children:[e.isSelected&&i.jsx("div",{className:`${s.selectedMask} border-2`}),i.jsxs("div",{className:`${s.imagePanel} ${e.isLarge?s.large:""}`,children:[e.isSelected&&!e.hideCheckmark&&i.jsx("div",{className:s.selected,children:i.jsx(P,{svg:M,svgSize:T.Large,textVariant:"white",variant:"green"})}),a&&i.jsx("div",{className:O(s.image,e.imageClassName,!e.coverBgColor&&e.showFallbackBackgroundColour&&c),style:n}),!e.hideFallback&&i.jsx(U,{type:z.Subject,extraClasses:e.isLarge?s.large:""})]}),e.isComingSoon?i.jsx(ne,{...l}):i.jsx(ie,{...l})]})}function le(e){var t;const a=e.getChildAppLink?e.getChildAppLink(e.data):null;return i.jsx(i.Fragment,{children:a?i.jsx(b,{className:s.appLink,appLink:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:(t=e.getChildAppLinkOptions)==null?void 0:t.call(e),children:i.jsx(g,{...e})}):i.jsx(g,{...e})})}const se={MULTI_PRESENTATION_THRESHOLD:2};var j=(e=>(e.Draft="Draft",e.ComingSoon="ComingSoon",e.Published="Published",e))(j||{});function ce(e,a){var l;if((a==null?void 0:a.length)>=se.MULTI_PRESENTATION_THRESHOLD)return(l=a==null?void 0:a.find(n=>n.id===e))==null?void 0:l.name}function oe(e){var c,o,m,u,h,x,C,_,f,y,v,N;const a=((c=e.data)==null?void 0:c.status)===j.ComingSoon,t=ce(e.data.presentationId,e==null?void 0:e.availablePresentations),l={...e.analyticsData,id:((o=e.analyticsData)==null?void 0:o.id)||((m=e.data)==null?void 0:m.id),name:(u=e.data)==null?void 0:u.name,presentationId:((h=e.analyticsData)==null?void 0:h.presentationId)||e.data.presentationId,comingSoon:!!a},n={location:H.ClassificationListItem,entity:E.Classification,...e.analyticsOptions,actionType:B.Click,descriptor:V.Cover};return i.jsx(le,{...e,analyticsData:l,analyticsOptions:n,coverUrl:(x=e.data.cover)==null?void 0:x.url,coverBgColor:(_=(C=e.data)==null?void 0:C.metadata)==null?void 0:_.backgroundColor,subtitle:((f=e.getSubtitle)==null?void 0:f.call(e,e.data))||t,isComingSoon:a,themeColor:(y=e.shouldHighlight)!=null&&y.call(e,e.data)?((N=(v=e.data)==null?void 0:v.metadata)==null?void 0:N.backgroundColor)??"":""})}const he=D.memo(oe);export{he as M,ue as V,s};
3
+ //# sourceMappingURL=C0Ak1kpS.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C0Ak1kpS.chunk.js","sources":["../../../../libs/shared/src/flight-requests/VideoViewRequests.ts","../../../../libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","../../../../libs/shared/src/constants/TopicsConstants.ts","../../../../libs/shared/src/enums/ClassificationStatus.ts","../../../../libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}`, filter, sharerId),\n normalize: false\n };\n }\n};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport styles from './cover-pill.module.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n showFallbackBackgroundColour?: boolean;\n}\n\nCoverPillWidgetContent.defaultProps = {\n showFallbackBackgroundColour: true\n};\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svg={CheckSvg} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && props.showFallbackBackgroundColour && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","export const TopicsConstants = {\n MULTI_PRESENTATION_THRESHOLD: 2\n};","// Maps to enum in SubjectApi but uses the\n// key rather than the value as SubjectsApi returns the key.\nexport enum ClassificationStatus {\n Draft = 'Draft',\n ComingSoon = 'ComingSoon',\n Published = 'Published'\n}","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };"],"names":["VideoViewRequests","objectId","filter","sharerId","includePublicViews","queryParams","UrlHelper","getAnalyticsRequestKey","data","_a","d","DateHelper","namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","styles","textClassName","jsxs","jsx","Text","NormalNamePanel","subtitle","newVideosCount","CoverPillWidgetContent","props","coverUrl","ImageHelper","ImageSize","classification","MasterTypeHelper","childProps","coverStyle","fallbackCoverBgClassName","getBgColorClass","BG_COLOUR_CLASS_NAMES","RandomHelper","IconCircle","CheckSvg","SvgContainerSize","classNames","ImageFallback","ImageFallbackType","CoverPillWidgetContentWrapper","appLink","AppLink","TopicsConstants","ClassificationStatus","usePresentationName","presentationId","availablePresentations","p","SubjectWidgetItem","isComingSoon","presentationName","analyticsData","_b","_c","_d","_e","analyticsOptions","LocationContext","EntityType","UserAction","ClickDescriptor","_f","_h","_g","_i","_j","_l","_k","Memoized","React.memo"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{bR as I,ah as M,j as t,L as j,a5 as P,bS as p,p as h,bT as N,c as D,u as x,bN as y,bU as H,bV as O,w as T,a9 as E,C as B}from"./app-5iiM5qQY.js";import{u as V}from"./DJzpw8qX.chunk.js";import{I as $,a as q,u as _}from"./CWViZWyh.chunk.js";import{a as F}from"./CsP3Lruv.chunk.js";import{g as G,a as W,d as L,I as z,e as K,f as Y}from"./DTL-Rceb.chunk.js";import{I as J}from"./CNgTzzan.chunk.js";import{u as Q}from"./CSmXZuTZ.chunk.js";import{u as X}from"./BvArNs1K.chunk.js";import"./sFV5nxD4.chunk.js";import"./BLuY6AYO.chunk.js";import"./LT6WE6TB.chunk.js";import"./hU1zzvt8.chunk.js";import"./CTMVj7AR.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=G(e.interactive,e.studentResults),a=W(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(()=>(N.lockContentWidth(),()=>N.unlockContentWidth()),[])}const ue="shared.interactiveStudentResults",le=j.encloseNamespace(ue);function Ie(e){var d,k,b,C;const[s]=D(E.ANONYMISE_USERS);de();const n=x(y.interactiveMetadata(e.interactiveId)),o=x(((d=n.data)==null?void 0:d.interactiveId)&&y.interactive(n.data.interactiveId)),c=Z.getDateRangeAppLinkParams(),a=V(e.interactiveId,H(O(),c)),i=x(B.config());X([n,a]),Q(n);const{markedAnswers:u,addMarkedAnswers:r,submitMarkedAnswers: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=C0GFlX65.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C0GFlX65.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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"}