@clickview/reports 0.69.1-dev.1 → 0.70.0-rc.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 (417) hide show
  1. package/dist/bundles.json +3 -2
  2. package/dist/css/1103-reports-d3d5cc00db.chunk.css +31 -0
  3. package/dist/css/1456-reports-4a5871a275.chunk.css +9 -0
  4. package/dist/css/1648-reports-012456ba48.chunk.css +2 -0
  5. package/dist/css/209-reports-c33663a53e.chunk.css +11 -0
  6. package/dist/css/2150-reports-84ec0e9770.chunk.css +4 -0
  7. package/dist/css/2217-reports-74dec0a3fe.chunk.css +32 -0
  8. package/dist/css/2997-reports-e08318f14b.chunk.css +9 -0
  9. package/dist/css/2999-reports-f190450b10.chunk.css +60 -0
  10. package/dist/css/4582-reports-d3d5cc00db.chunk.css +31 -0
  11. package/dist/css/5304-reports-22c2d8d635.chunk.css +9 -0
  12. package/dist/css/6007-reports-5ba77c55a3.chunk.css +8 -0
  13. package/dist/css/6031-reports-d558076846.chunk.css +6 -0
  14. package/dist/css/6356-reports-8c5b220bf6.chunk.css +1 -0
  15. package/dist/css/6811-reports-baf2e97e71.chunk.css +35 -0
  16. package/dist/css/7723-reports-8c6d3c414b.chunk.css +4 -0
  17. package/dist/css/7747-reports-2d9e191b5a.chunk.css +12 -0
  18. package/dist/css/8087-reports-cfe23ba648.chunk.css +10 -0
  19. package/dist/css/8294-reports-c797263ac2.chunk.css +1 -0
  20. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +29 -0
  21. package/dist/css/8450-reports-06493dfde5.chunk.css +9 -0
  22. package/dist/css/8622-reports-9e8970cc7f.chunk.css +8 -0
  23. package/dist/css/8839-reports-8e46644943.chunk.css +1 -0
  24. package/dist/css/8989-reports-92b4f1dde8.chunk.css +8 -0
  25. package/dist/css/9059-reports-a2ac630ebc.chunk.css +35 -0
  26. package/dist/css/9285-reports-5b9af8380f.chunk.css +13 -0
  27. package/dist/css/9661-reports-7435e94a85.chunk.css +4 -0
  28. package/dist/css/9822-reports-a1db1900c7.chunk.css +8 -0
  29. package/dist/css/9949-reports-f22fa2b407.chunk.css +15 -0
  30. package/dist/css/reports-app-b4c4ec5632.css +32 -0
  31. package/dist/languages/en.json +1 -0
  32. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +1 -0
  33. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +1 -0
  34. package/dist/scripts/1456-019d93e620-reports.chunk.js +1 -0
  35. package/dist/scripts/1648-e892604f5a-reports.chunk.js +1 -0
  36. package/dist/scripts/1934-ca8497c768-reports.chunk.js +2 -0
  37. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +9 -0
  38. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +1 -0
  39. package/dist/scripts/209-79eb8be706-reports.chunk.js +1 -0
  40. package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +1 -0
  41. package/dist/scripts/2217-15fa35197a-reports.chunk.js +1 -0
  42. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +1 -0
  43. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +1 -0
  44. package/dist/scripts/2997-62d81c3442-reports.chunk.js +1 -0
  45. package/dist/scripts/2999-c1890ca868-reports.chunk.js +2 -0
  46. package/dist/scripts/2999-c1890ca868-reports.chunk.js.LICENSE.txt +1 -0
  47. package/dist/scripts/312-8b006e92ff-reports.chunk.js +1 -0
  48. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +1 -0
  49. package/dist/scripts/4372-26474a3318-reports.chunk.js +1 -0
  50. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +1 -0
  51. package/dist/scripts/4582-230f130f41-reports.chunk.js +1 -0
  52. package/dist/scripts/4752-db4247883d-reports.chunk.js +2 -0
  53. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +118 -0
  54. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +1 -0
  55. package/dist/scripts/5051-72c53737e2-reports.chunk.js +1 -0
  56. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +1 -0
  57. package/dist/scripts/5173-cce3b37672-reports.chunk.js +1 -0
  58. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +1 -0
  59. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +1 -0
  60. package/dist/scripts/5802-2125536755-reports.chunk.js +1 -0
  61. package/dist/scripts/6007-673706aa31-reports.chunk.js +1 -0
  62. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +1 -0
  63. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +1 -0
  64. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +2 -0
  65. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +1 -0
  66. package/dist/scripts/6198-189ddde870-reports.chunk.js +1 -0
  67. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +1 -0
  68. package/dist/scripts/645-e8b19128e5-reports.chunk.js +1 -0
  69. package/dist/scripts/6545-f07bcd318a-reports.chunk.js +1 -0
  70. package/dist/scripts/6811-40ded4c089-reports.chunk.js +1 -0
  71. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +1 -0
  72. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +1 -0
  73. package/dist/scripts/7709-82750ee317-reports.chunk.js +1 -0
  74. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +1 -0
  75. package/dist/scripts/7747-d34db3ff10-reports.chunk.js +2 -0
  76. package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +1 -0
  77. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +1 -0
  78. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +1 -0
  79. package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +1 -0
  80. package/dist/scripts/8418-9f96caf039-reports.chunk.js +1 -0
  81. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +1 -0
  82. package/dist/scripts/8591-4811082ab0-reports.chunk.js +1 -0
  83. package/dist/scripts/8622-ee045574e2-reports.chunk.js +1 -0
  84. package/dist/scripts/8839-711793a97f-reports.chunk.js +1 -0
  85. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +1 -0
  86. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +1 -0
  87. package/dist/scripts/9162-7ffc692736-reports.chunk.js +1 -0
  88. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +1 -0
  89. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +1 -0
  90. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +1 -0
  91. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +1 -0
  92. package/dist/scripts/9822-621fac26e6-reports.chunk.js +1 -0
  93. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +1 -0
  94. package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +1 -0
  95. package/dist/scripts/bundle-44f8e893eb.min.js +2 -0
  96. package/dist/scripts/bundle-44f8e893eb.min.js.LICENSE.txt +108 -0
  97. package/dist/scripts/polyfills-3db3f009d4.min.js +1 -0
  98. package/package.json +3 -5
  99. package/typings/utils/imports.d.ts +1 -1
  100. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  101. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  102. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  103. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  104. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  105. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  106. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  107. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  108. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  109. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  110. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  111. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  112. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  113. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  114. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  115. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  116. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  117. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  118. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  119. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  120. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  121. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  122. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  123. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  124. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  125. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  126. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  127. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  128. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  129. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  130. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  131. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  132. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  133. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  134. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  135. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  136. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  137. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  138. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  139. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  140. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  141. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  142. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  143. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  144. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  145. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  146. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  147. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  148. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  149. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  150. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  151. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  152. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  153. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  154. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  155. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  156. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  157. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  158. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  159. package/dist/css/1VpVng8x.chunk.css +0 -1
  160. package/dist/css/BBwBgFf_.chunk.css +0 -1
  161. package/dist/css/BDijM1kt.chunk.css +0 -1
  162. package/dist/css/BMPwvOki.chunk.css +0 -1
  163. package/dist/css/BNt45Kgy.chunk.css +0 -1
  164. package/dist/css/BSGhUWzl.chunk.css +0 -1
  165. package/dist/css/BZ3_uhDP.chunk.css +0 -1
  166. package/dist/css/BaadNO4A.chunk.css +0 -1
  167. package/dist/css/BdUNjJqp.chunk.css +0 -1
  168. package/dist/css/BdeI0FAV.chunk.css +0 -1
  169. package/dist/css/BxcMGr8Y.chunk.css +0 -1
  170. package/dist/css/ByuL_xKJ.chunk.css +0 -1
  171. package/dist/css/C-A0Pj_7.chunk.css +0 -1
  172. package/dist/css/C4jMfPWU.chunk.css +0 -1
  173. package/dist/css/C7XoyEPr.chunk.css +0 -1
  174. package/dist/css/C8sxda3R.chunk.css +0 -1
  175. package/dist/css/CD1qrI1T.chunk.css +0 -1
  176. package/dist/css/CFO--d_R.chunk.css +0 -1
  177. package/dist/css/CX9nw8t8.chunk.css +0 -1
  178. package/dist/css/C_qGRdC2.chunk.css +0 -1
  179. package/dist/css/CdC6ugQR.chunk.css +0 -1
  180. package/dist/css/ClRRGXPb.chunk.css +0 -1
  181. package/dist/css/Cr1bwtZG.chunk.css +0 -1
  182. package/dist/css/DBlPz5Fw.chunk.css +0 -1
  183. package/dist/css/DDnpOnVB.chunk.css +0 -1
  184. package/dist/css/DFZQCLLg.chunk.css +0 -1
  185. package/dist/css/DJwAbl6l.chunk.css +0 -1
  186. package/dist/css/DWjg_0sz.chunk.css +0 -1
  187. package/dist/css/DYV9jjVn.chunk.css +0 -1
  188. package/dist/css/Dgeh4AqU.chunk.css +0 -9
  189. package/dist/css/DlOtoSz0.chunk.css +0 -1
  190. package/dist/css/DlxOgKUu.chunk.css +0 -1
  191. package/dist/css/DwgaDUzz.chunk.css +0 -1
  192. package/dist/css/FPQ_LmXH.chunk.css +0 -1
  193. package/dist/css/H09rC9gw.chunk.css +0 -1
  194. package/dist/css/LAFr2dPT.chunk.css +0 -1
  195. package/dist/css/Pg1TlYG6.chunk.css +0 -1
  196. package/dist/css/PsQn3-kb.chunk.css +0 -1
  197. package/dist/css/alkEuPrr.chunk.css +0 -1
  198. package/dist/css/k4DgCj_g.chunk.css +0 -1
  199. package/dist/en.json +0 -1
  200. package/dist/scripts/5JDMPiCK.chunk.js +0 -2
  201. package/dist/scripts/5JDMPiCK.chunk.js.map +0 -1
  202. package/dist/scripts/5O9SdVRZ.chunk.js +0 -2
  203. package/dist/scripts/5O9SdVRZ.chunk.js.map +0 -1
  204. package/dist/scripts/B8i2s45X.chunk.js +0 -2
  205. package/dist/scripts/B8i2s45X.chunk.js.map +0 -1
  206. package/dist/scripts/BBOfq9my.chunk.js +0 -2
  207. package/dist/scripts/BBOfq9my.chunk.js.map +0 -1
  208. package/dist/scripts/BE7zUNFh.chunk.js +0 -3
  209. package/dist/scripts/BE7zUNFh.chunk.js.map +0 -1
  210. package/dist/scripts/BIbP_ulq.chunk.js +0 -380
  211. package/dist/scripts/BIbP_ulq.chunk.js.map +0 -1
  212. package/dist/scripts/BJe4D9vd.chunk.js +0 -2
  213. package/dist/scripts/BJe4D9vd.chunk.js.map +0 -1
  214. package/dist/scripts/BKx5S6xk.chunk.js +0 -2
  215. package/dist/scripts/BKx5S6xk.chunk.js.map +0 -1
  216. package/dist/scripts/BMba67Uf.chunk.js +0 -2
  217. package/dist/scripts/BMba67Uf.chunk.js.map +0 -1
  218. package/dist/scripts/BUM8Ub4p.chunk.js +0 -2
  219. package/dist/scripts/BUM8Ub4p.chunk.js.map +0 -1
  220. package/dist/scripts/BW-tzVdx.chunk.js +0 -2
  221. package/dist/scripts/BW-tzVdx.chunk.js.map +0 -1
  222. package/dist/scripts/B_1LOG5E.chunk.js +0 -2
  223. package/dist/scripts/B_1LOG5E.chunk.js.map +0 -1
  224. package/dist/scripts/BaHk6QZB.chunk.js +0 -2
  225. package/dist/scripts/BaHk6QZB.chunk.js.map +0 -1
  226. package/dist/scripts/Bbpuxobz.chunk.js +0 -2
  227. package/dist/scripts/Bbpuxobz.chunk.js.map +0 -1
  228. package/dist/scripts/BfG3wCTD.chunk.js +0 -2
  229. package/dist/scripts/BfG3wCTD.chunk.js.map +0 -1
  230. package/dist/scripts/BfkzHBdb.chunk.js +0 -2
  231. package/dist/scripts/BfkzHBdb.chunk.js.map +0 -1
  232. package/dist/scripts/BiDX0yuI.chunk.js +0 -2
  233. package/dist/scripts/BiDX0yuI.chunk.js.map +0 -1
  234. package/dist/scripts/BkcNwg7K.chunk.js +0 -2
  235. package/dist/scripts/BkcNwg7K.chunk.js.map +0 -1
  236. package/dist/scripts/BlAGsOOw.chunk.js +0 -2
  237. package/dist/scripts/BlAGsOOw.chunk.js.map +0 -1
  238. package/dist/scripts/BmScDBcl.chunk.js +0 -2
  239. package/dist/scripts/BmScDBcl.chunk.js.map +0 -1
  240. package/dist/scripts/BnqNywwJ.chunk.js +0 -2
  241. package/dist/scripts/BnqNywwJ.chunk.js.map +0 -1
  242. package/dist/scripts/BrLXFCMV.chunk.js +0 -2
  243. package/dist/scripts/BrLXFCMV.chunk.js.map +0 -1
  244. package/dist/scripts/BsFynggy.chunk.js +0 -2
  245. package/dist/scripts/BsFynggy.chunk.js.map +0 -1
  246. package/dist/scripts/Bt3gUzzG.chunk.js +0 -2
  247. package/dist/scripts/Bt3gUzzG.chunk.js.map +0 -1
  248. package/dist/scripts/BuHHZnEg.chunk.js +0 -2
  249. package/dist/scripts/BuHHZnEg.chunk.js.map +0 -1
  250. package/dist/scripts/ByllnMKt.chunk.js +0 -2
  251. package/dist/scripts/ByllnMKt.chunk.js.map +0 -1
  252. package/dist/scripts/BzBFC5UE.chunk.js +0 -2
  253. package/dist/scripts/BzBFC5UE.chunk.js.map +0 -1
  254. package/dist/scripts/C4382UCA.chunk.js +0 -2
  255. package/dist/scripts/C4382UCA.chunk.js.map +0 -1
  256. package/dist/scripts/C6H2bU7H.chunk.js +0 -2
  257. package/dist/scripts/C6H2bU7H.chunk.js.map +0 -1
  258. package/dist/scripts/C6eAAaNL.chunk.js +0 -2
  259. package/dist/scripts/C6eAAaNL.chunk.js.map +0 -1
  260. package/dist/scripts/CAh5UtFh.chunk.js +0 -2
  261. package/dist/scripts/CAh5UtFh.chunk.js.map +0 -1
  262. package/dist/scripts/CFIWZ5KT.chunk.js +0 -2
  263. package/dist/scripts/CFIWZ5KT.chunk.js.map +0 -1
  264. package/dist/scripts/CKLfLzhr.chunk.js +0 -34
  265. package/dist/scripts/CKLfLzhr.chunk.js.map +0 -1
  266. package/dist/scripts/COgPEQMR.chunk.js +0 -2
  267. package/dist/scripts/COgPEQMR.chunk.js.map +0 -1
  268. package/dist/scripts/CRWOsqvB.chunk.js +0 -2
  269. package/dist/scripts/CRWOsqvB.chunk.js.map +0 -1
  270. package/dist/scripts/CU-I5G45.chunk.js +0 -2
  271. package/dist/scripts/CU-I5G45.chunk.js.map +0 -1
  272. package/dist/scripts/CV5ioe9U.chunk.js +0 -2
  273. package/dist/scripts/CV5ioe9U.chunk.js.map +0 -1
  274. package/dist/scripts/CW7x8M-z.chunk.js +0 -2
  275. package/dist/scripts/CW7x8M-z.chunk.js.map +0 -1
  276. package/dist/scripts/CX5q-0jT.chunk.js +0 -2
  277. package/dist/scripts/CX5q-0jT.chunk.js.map +0 -1
  278. package/dist/scripts/CXK1uNgx.chunk.js +0 -2
  279. package/dist/scripts/CXK1uNgx.chunk.js.map +0 -1
  280. package/dist/scripts/CXhesQTd.chunk.js +0 -2
  281. package/dist/scripts/CXhesQTd.chunk.js.map +0 -1
  282. package/dist/scripts/CaiGBx50.chunk.js +0 -2
  283. package/dist/scripts/CaiGBx50.chunk.js.map +0 -1
  284. package/dist/scripts/CbmUUNB4.chunk.js +0 -2
  285. package/dist/scripts/CbmUUNB4.chunk.js.map +0 -1
  286. package/dist/scripts/CdoC9Mtd.chunk.js +0 -2
  287. package/dist/scripts/CdoC9Mtd.chunk.js.map +0 -1
  288. package/dist/scripts/CdzMtbgC.chunk.js +0 -2
  289. package/dist/scripts/CdzMtbgC.chunk.js.map +0 -1
  290. package/dist/scripts/Cl51qIgL.chunk.js +0 -2
  291. package/dist/scripts/Cl51qIgL.chunk.js.map +0 -1
  292. package/dist/scripts/ClLzLF-_.chunk.js +0 -2
  293. package/dist/scripts/ClLzLF-_.chunk.js.map +0 -1
  294. package/dist/scripts/ClcYw2ra.chunk.js +0 -42
  295. package/dist/scripts/ClcYw2ra.chunk.js.map +0 -1
  296. package/dist/scripts/Cmu1J2M7.chunk.js +0 -262
  297. package/dist/scripts/Cmu1J2M7.chunk.js.map +0 -1
  298. package/dist/scripts/CpwEUwsc.chunk.js +0 -2
  299. package/dist/scripts/CpwEUwsc.chunk.js.map +0 -1
  300. package/dist/scripts/CqSaPgvV.chunk.js +0 -2
  301. package/dist/scripts/CqSaPgvV.chunk.js.map +0 -1
  302. package/dist/scripts/CqyCLTzN.chunk.js +0 -2
  303. package/dist/scripts/CqyCLTzN.chunk.js.map +0 -1
  304. package/dist/scripts/CrlegiVC.chunk.js +0 -2
  305. package/dist/scripts/CrlegiVC.chunk.js.map +0 -1
  306. package/dist/scripts/CsD4Xb6n.chunk.js +0 -2
  307. package/dist/scripts/CsD4Xb6n.chunk.js.map +0 -1
  308. package/dist/scripts/Ct187YvN.chunk.js +0 -2
  309. package/dist/scripts/Ct187YvN.chunk.js.map +0 -1
  310. package/dist/scripts/CwyVC768.chunk.js +0 -2
  311. package/dist/scripts/CwyVC768.chunk.js.map +0 -1
  312. package/dist/scripts/Cy4L5XsI.chunk.js +0 -2
  313. package/dist/scripts/Cy4L5XsI.chunk.js.map +0 -1
  314. package/dist/scripts/CzF-hI_x.chunk.js +0 -2
  315. package/dist/scripts/CzF-hI_x.chunk.js.map +0 -1
  316. package/dist/scripts/D1U_fPVs.chunk.js +0 -2
  317. package/dist/scripts/D1U_fPVs.chunk.js.map +0 -1
  318. package/dist/scripts/D9POXla0.chunk.js +0 -2
  319. package/dist/scripts/D9POXla0.chunk.js.map +0 -1
  320. package/dist/scripts/DAocQXXC.chunk.js +0 -2
  321. package/dist/scripts/DAocQXXC.chunk.js.map +0 -1
  322. package/dist/scripts/DD-2boW1.chunk.js +0 -2
  323. package/dist/scripts/DD-2boW1.chunk.js.map +0 -1
  324. package/dist/scripts/DFhb3ZfO.chunk.js +0 -2
  325. package/dist/scripts/DFhb3ZfO.chunk.js.map +0 -1
  326. package/dist/scripts/DFp9UBZB.chunk.js +0 -4
  327. package/dist/scripts/DFp9UBZB.chunk.js.map +0 -1
  328. package/dist/scripts/DHqmPVfK.chunk.js +0 -2
  329. package/dist/scripts/DHqmPVfK.chunk.js.map +0 -1
  330. package/dist/scripts/DJLuyZJi.chunk.js +0 -2
  331. package/dist/scripts/DJLuyZJi.chunk.js.map +0 -1
  332. package/dist/scripts/DK7va7iQ.chunk.js +0 -2
  333. package/dist/scripts/DK7va7iQ.chunk.js.map +0 -1
  334. package/dist/scripts/DMoPMSgN.chunk.js +0 -2
  335. package/dist/scripts/DMoPMSgN.chunk.js.map +0 -1
  336. package/dist/scripts/DNTR3iW5.chunk.js +0 -2
  337. package/dist/scripts/DNTR3iW5.chunk.js.map +0 -1
  338. package/dist/scripts/DNt9Tv5W.chunk.js +0 -2
  339. package/dist/scripts/DNt9Tv5W.chunk.js.map +0 -1
  340. package/dist/scripts/DQtbfeRV.chunk.js +0 -2
  341. package/dist/scripts/DQtbfeRV.chunk.js.map +0 -1
  342. package/dist/scripts/DRQ39FRr.chunk.js +0 -2
  343. package/dist/scripts/DRQ39FRr.chunk.js.map +0 -1
  344. package/dist/scripts/DTFFRoLz.chunk.js +0 -2
  345. package/dist/scripts/DTFFRoLz.chunk.js.map +0 -1
  346. package/dist/scripts/DU5sOcpt.chunk.js +0 -3
  347. package/dist/scripts/DU5sOcpt.chunk.js.map +0 -1
  348. package/dist/scripts/DWv8V3Lc.chunk.js +0 -2
  349. package/dist/scripts/DWv8V3Lc.chunk.js.map +0 -1
  350. package/dist/scripts/DYFT7QHy.chunk.js +0 -2
  351. package/dist/scripts/DYFT7QHy.chunk.js.map +0 -1
  352. package/dist/scripts/DZAYXeaL.chunk.js +0 -2
  353. package/dist/scripts/DZAYXeaL.chunk.js.map +0 -1
  354. package/dist/scripts/D_Erj5Yn.chunk.js +0 -10
  355. package/dist/scripts/D_Erj5Yn.chunk.js.map +0 -1
  356. package/dist/scripts/DeY3SuCM.chunk.js +0 -2
  357. package/dist/scripts/DeY3SuCM.chunk.js.map +0 -1
  358. package/dist/scripts/DecstRlc.chunk.js +0 -8
  359. package/dist/scripts/DecstRlc.chunk.js.map +0 -1
  360. package/dist/scripts/Df8zbYVK.chunk.js +0 -10
  361. package/dist/scripts/Df8zbYVK.chunk.js.map +0 -1
  362. package/dist/scripts/DgHfAOys.chunk.js +0 -2
  363. package/dist/scripts/DgHfAOys.chunk.js.map +0 -1
  364. package/dist/scripts/DgWHvURU.chunk.js +0 -2
  365. package/dist/scripts/DgWHvURU.chunk.js.map +0 -1
  366. package/dist/scripts/DmGrKXgL.chunk.js +0 -2
  367. package/dist/scripts/DmGrKXgL.chunk.js.map +0 -1
  368. package/dist/scripts/Dp_vnjo0.chunk.js +0 -3
  369. package/dist/scripts/Dp_vnjo0.chunk.js.map +0 -1
  370. package/dist/scripts/DuNeLCIS.chunk.js +0 -15
  371. package/dist/scripts/DuNeLCIS.chunk.js.map +0 -1
  372. package/dist/scripts/DxJzyDBL.chunk.js +0 -2
  373. package/dist/scripts/DxJzyDBL.chunk.js.map +0 -1
  374. package/dist/scripts/DxUueJN7.chunk.js +0 -2
  375. package/dist/scripts/DxUueJN7.chunk.js.map +0 -1
  376. package/dist/scripts/DykFRaNZ.chunk.js +0 -4
  377. package/dist/scripts/DykFRaNZ.chunk.js.map +0 -1
  378. package/dist/scripts/Fd0gT6QK.chunk.js +0 -2
  379. package/dist/scripts/Fd0gT6QK.chunk.js.map +0 -1
  380. package/dist/scripts/MaYDtnoS.chunk.js +0 -2
  381. package/dist/scripts/MaYDtnoS.chunk.js.map +0 -1
  382. package/dist/scripts/T4Chmiqz.chunk.js +0 -2
  383. package/dist/scripts/T4Chmiqz.chunk.js.map +0 -1
  384. package/dist/scripts/UWjf2h5X.chunk.js +0 -2
  385. package/dist/scripts/UWjf2h5X.chunk.js.map +0 -1
  386. package/dist/scripts/VSmYRJOj.chunk.js +0 -2
  387. package/dist/scripts/VSmYRJOj.chunk.js.map +0 -1
  388. package/dist/scripts/W5zJjbqu.chunk.js +0 -2
  389. package/dist/scripts/W5zJjbqu.chunk.js.map +0 -1
  390. package/dist/scripts/YDhSgJI6.chunk.js +0 -2
  391. package/dist/scripts/YDhSgJI6.chunk.js.map +0 -1
  392. package/dist/scripts/Yi67NERS.chunk.js +0 -2
  393. package/dist/scripts/Yi67NERS.chunk.js.map +0 -1
  394. package/dist/scripts/app-BqRx5tK8.js +0 -228
  395. package/dist/scripts/app-BqRx5tK8.js.map +0 -1
  396. package/dist/scripts/cRQEJA0-.chunk.js +0 -2
  397. package/dist/scripts/cRQEJA0-.chunk.js.map +0 -1
  398. package/dist/scripts/g3bqr4mt.chunk.js +0 -6
  399. package/dist/scripts/g3bqr4mt.chunk.js.map +0 -1
  400. package/dist/scripts/h4z9gHMh.chunk.js +0 -2
  401. package/dist/scripts/h4z9gHMh.chunk.js.map +0 -1
  402. package/dist/scripts/kGI4LAzn.chunk.js +0 -6
  403. package/dist/scripts/kGI4LAzn.chunk.js.map +0 -1
  404. package/dist/scripts/kt1K5Xlc.chunk.js +0 -2
  405. package/dist/scripts/kt1K5Xlc.chunk.js.map +0 -1
  406. package/dist/scripts/mdJqhxeb.chunk.js +0 -2
  407. package/dist/scripts/mdJqhxeb.chunk.js.map +0 -1
  408. package/dist/scripts/sFV5nxD4.chunk.js +0 -2
  409. package/dist/scripts/sFV5nxD4.chunk.js.map +0 -1
  410. package/dist/scripts/tCFcWStO.chunk.js +0 -2
  411. package/dist/scripts/tCFcWStO.chunk.js.map +0 -1
  412. package/dist/scripts/wND_WD0i.chunk.js +0 -2
  413. package/dist/scripts/wND_WD0i.chunk.js.map +0 -1
  414. package/dist/scripts/xkqdG021.chunk.js +0 -2
  415. package/dist/scripts/xkqdG021.chunk.js.map +0 -1
  416. package/dist/scripts/zaMwD-xl.chunk.js +0 -3
  417. package/dist/scripts/zaMwD-xl.chunk.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"CKLfLzhr.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/hooks/UseMarkAnswers.ts","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/IllustrationResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MissingWordResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MultipleChoiceResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/ShortAnswerResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/TrueOrFalseResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup.tsx","../../../../libs/shared/src/components/interaction-response/InteractionResponseCorrectness.tsx","../../../../libs/shared/src/components/interaction-response/InteractionStudentDetailsHeader.tsx","../../../../libs/shared/src/images/svg/objects/CrossCircleFilledSvg.tsx","../../../../libs/shared/src/images/svg/objects/CrossCircleSvg.tsx","../../../../libs/shared/src/images/svg/status/CheckCircleSvg.tsx","../../../../libs/shared/src/components/interaction-response/MarkResponse.tsx","../../../../libs/shared/src/components/interaction-response/response-types/NoResponse.tsx","../../../../libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem.tsx","../../../../libs/shared/src/components/interaction-response/response-types/IllustrationResponse.tsx","../../../../libs/shared/src/components/interaction-response/response-types/MissingWordResponse.tsx","../../../../../node_modules/simplebar/dist/simplebar-core.esm.js","../../../../../node_modules/simplebar-react/dist/simplebar-react.esm.js","../../../../libs/shared/src/components/interaction-answers/multiple-choice/MultipleChoiceInteractionAnswers.tsx","../../../../libs/shared/src/components/interaction-response/response-types/MultipleChoiceResponse.tsx","../../../../libs/shared/src/components/interaction-response/response-types/ShortAnswerResponse.tsx","../../../../libs/shared/src/components/interaction-answers/true-or-false/TrueOrFalseInteractionAnswers.tsx","../../../../libs/shared/src/components/interaction-response/response-types/TrueOrFalseResponse.tsx","../../../../libs/shared/src/components/interaction-response/response-types/ResponseComponentLookup.tsx","../../../../libs/shared/src/components/interaction-response/InteractionResponse.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { getMarkedAnswerId } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { StudentAnswer } from 'libs/shared/interfaces';\n\nconst getPhrase = LanguageService.encloseNamespace('reportsShared.dataHooks');\n\nexport type MarkedAnswerHash = { [id: string]: StudentAnswer };\n\n/**\n * This hook manages the storing of a marked answer hash in state and then the submitting\n * of those answers via an api call.\n */\nexport const useMarkAnswers = (interactiveId: string, interactiveMetadataId: string, onDone?: () => void) => {\n const [ markedAnswers, setMarkedAnswers ] = useState<MarkedAnswerHash>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n function addMarkedAnswers(answers: StudentAnswer[], status: InteractiveAnswerStatus): void {\n answers.forEach(a => {\n setMarkedAnswers(m => ({ ...m, [getMarkedAnswerId(a)]: { ...a, status } }));\n });\n }\n\n function submitMarkedAnswers(): void {\n const answers = Object.keys(markedAnswers).map(key => markedAnswers[key]);\n\n if (!answers.length)\n return;\n\n let completeCount = 0;\n let successCount = 0;\n\n function onSuccess(): void {\n successCount++;\n }\n\n function onAlways(): void {\n completeCount++;\n\n if (completeCount === answers.length)\n onComplete();\n }\n\n function onComplete(): void {\n let alertMessage = '';\n let useErrorAlert = false;\n\n if (successCount === 0) {\n alertMessage = getPhrase('error', { smartCount: answers.length });\n useErrorAlert = true;\n }\n\n if (successCount < completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount })\n + ` ${getPhrase('partialError', { smartCount: completeCount - successCount })}`;\n }\n\n if (successCount === completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount });\n }\n\n useErrorAlert\n ? alerts.error(alertMessage)\n : alerts.success(alertMessage);\n\n setMarkedAnswers({});\n\n onDone && onDone();\n }\n\n answers.forEach(({ id, resultId, questionId, status }) => {\n Flight.fetch(dispatch, InteractiveResultsRequests.mark(\n interactiveId,\n interactiveMetadataId,\n id,\n { id, resultId, questionId, status },\n onSuccess,\n null,\n onAlways\n ));\n });\n }\n\n return {\n markedAnswers,\n addMarkedAnswers,\n submitMarkedAnswers\n };\n};","import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { StudentAnswer } from 'libs/shared/interfaces';\n\ninterface AnswerContainerProps extends React.PropsWithChildren {\n answer: StudentAnswer;\n textClassName?: string;\n customAnswer?: boolean;\n}\n\nexport function AnswerContainer(props: AnswerContainerProps) {\n const { answer } = props;\n\n function getBgColour(status: InteractiveAnswerStatus) {\n switch (status) {\n case InteractiveAnswerStatus.Correct: return 'bg-light-green';\n case InteractiveAnswerStatus.Incorrect: return 'bg-light-red';\n case InteractiveAnswerStatus.PendingReview: return 'bg-light-blue';\n }\n }\n\n return (\n <div key={answer.id} className={`${getBgColour(answer.status)} rounded p-2 mb-2`}>\n <div className='d-flex align-items-center gap-2'>\n {answer.status === InteractiveAnswerStatus.Correct && <SvgContainer svg={CheckSvg} className='svg-container flex-shrink-0 text-success' />}\n {answer.status === InteractiveAnswerStatus.Incorrect && <SvgContainer svg={CloseSvg} className='svg-container flex-shrink-0 text-danger' />}\n {!props.customAnswer && <span className={props.textClassName}>{answer.text}</span>}\n </div>\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nconst namespace = 'shared.interactionResponses';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function IllustrationResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} customAnswer>\n <div className='ratio ratio-16x9'>\n <img\n className='img-fluid bg-white border rounded h-100 w-100'\n src={answer.text}\n alt={`${getPhrase('illustrationAlt')}: ${props.interaction.name}`}\n />\n </div>\n {props.children}\n </AnswerContainer>\n );\n}","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\n\nexport function MissingWordResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer\n answer={answer}\n textClassName='bg-white p-1 border border-gray-300 rounded'\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function MultipleChoiceResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer answer={answer} />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function ShortAnswerResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer}>\n {props.children}\n </AnswerContainer>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function TrueOrFalseResponse(props: ResponseItemComponentProps) {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} />\n );\n}","import React from 'react';\n\nimport { Interaction, InteractionTypeId, StudentAnswer, User } from 'libs/shared/interfaces';\n\nimport { IllustrationResponse } from './components/IllustrationResponse';\nimport { MissingWordResponse } from './components/MissingWordResponse';\nimport { MultipleChoiceResponse } from './components/MultipleChoiceResponse';\nimport { ShortAnswerResponse } from './components/ShortAnswerResponse';\nimport { TrueOrFalseResponse } from './components/TrueOrFalseResponse';\n\nexport interface ResponseItemComponentProps extends React.PropsWithChildren {\n interaction: Interaction;\n answers: StudentAnswer[];\n imageCdnUrl: string;\n user: User;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n}\nconst NoResponseRequired = () => <></>;\n\nexport const ResponseItemComponentLookup: {\n [typeId: number]: (props: ResponseItemComponentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: NoResponseRequired,\n [InteractionTypeId.Image]: NoResponseRequired,\n [InteractionTypeId.MissingWord]: MissingWordResponse,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceResponse,\n [InteractionTypeId.TrueOrFalse]: TrueOrFalseResponse,\n [InteractionTypeId.ShortAnswer]: ShortAnswerResponse,\n [InteractionTypeId.Illustration]: IllustrationResponse\n};","import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { TickSvg } from 'libs/shared/images/svg/status/TickSvg';\n\n\ninterface InteractionResponseCorrectnessProps {\n correctness: InteractionCorrectness;\n}\n\nexport function InteractionResponseCorrectness(props: InteractionResponseCorrectnessProps): JSX.Element {\n return (\n <>\n {props.correctness === InteractionCorrectness.Correct &&\n <div className='ms-2 text-success'>\n <SvgContainer svg={TickSvg} />\n </div>\n }\n {props.correctness === InteractionCorrectness.Incorrect &&\n <div className='ms-2 text-danger'>\n <SvgContainer svg={CloseSvg} />\n </div>\n }\n </>\n );\n}","import React from 'react';\n\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { StudentResults } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InteractionResponseCorrectness } from './InteractionResponseCorrectness';\n\ninterface InteractionStudentDetailsProps {\n studentResults: StudentResults;\n correctness: InteractionCorrectness;\n anonymisedUserName?: string;\n}\n\nexport function InteractionStudentDetailsHeader(props: InteractionStudentDetailsProps): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-between mb-2'>\n <p className='fw-semibold mb-0'>\n {props.anonymisedUserName || UserHelper.getFullName(props.studentResults.user)}\n </p>\n <InteractionResponseCorrectness correctness={props.correctness} />\n </div>\n );\n}","import React from 'react';\n\nexport function CrossCircleFilledSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M12.034 21C7.044 21 3 16.968 3 11.993s4.045-9.006 9.034-9.006 9.034 4.032 9.034 9.006S17.023 21 12.034 21M14.95 8.22l-2.946 2.867-2.89-2.91a.646.646 0 0 0-.909 0 .633.633 0 0 0 0 .9l2.891 2.91-2.89 2.922a.633.633 0 0 0 0 .9c.25.25.657.25.908 0l2.89-2.92 2.946 2.92c.251.25.658.25.909 0a.633.633 0 0 0 0-.9l-2.946-2.921L15.86 9.12a.633.633 0 0 0 0-.9.646.646 0 0 0-.909 0'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CrossCircleSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <rect width='24' height='24' fill='white'/>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M21 12c0-4.972-4.028-9-9-9s-9 4.028-9 9 4.028 9 9 9 9-4.028 9-9M6.492 6.492A7.74 7.74 0 0 1 12 4.212c2.081 0 4.037.809 5.508 2.28A7.74 7.74 0 0 1 19.788 12c0 2.081-.809 4.037-2.28 5.508A7.74 7.74 0 0 1 12 19.788a7.74 7.74 0 0 1-5.508-2.28A7.74 7.74 0 0 1 4.212 12c0-2.081.809-4.037 2.28-5.508m8.46 1.728-2.947 2.867-2.89-2.91a.646.646 0 0 0-.909 0 .633.633 0 0 0 0 .9l2.891 2.91-2.89 2.922a.633.633 0 0 0 0 .9c.25.25.657.25.908 0l2.89-2.92 2.946 2.92c.251.25.658.25.909 0a.633.633 0 0 0 0-.9l-2.946-2.921L15.86 9.12a.633.633 0 0 0 0-.9.646.646 0 0 0-.909 0'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function CheckCircleSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9m4.244 5.578a.77.77 0 0 0-1.058.068l-4.722 5.18-1.684-1.615a.77.77 0 0 0-1.06 0 .7.7 0 0 0 0 1.018l2.25 2.16a.77.77 0 0 0 1.094-.035l5.25-5.76a.7.7 0 0 0-.07-1.016'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { CrossCircleFilledSvg } from 'libs/shared/images/svg/objects/CrossCircleFilledSvg';\nimport { CrossCircleSvg } from 'libs/shared/images/svg/objects/CrossCircleSvg';\nimport { CheckCircleOutlineSvg } from 'libs/shared/images/svg/status/CheckCircleOutlineSvg';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { StudentAnswer, StudentAttempt } from 'libs/shared/interfaces';\n\n\ninterface MarkResponseProps {\n studentAttempt: StudentAttempt;\n correctness: InteractionCorrectness;\n markInteraction: (answers: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n markedStatus?: InteractiveAnswerStatus;\n}\n\nexport function MarkResponse(props: MarkResponseProps): JSX.Element {\n if (props.correctness !== InteractionCorrectness.AwaitingMarking)\n return <></>;\n\n return (\n <div className='d-flex justify-content-end gap-2 mt-2'>\n <div className={\n `d-flex flex-column justify-content-end cursor-pointer\n ${props.markedStatus === InteractiveAnswerStatus.Correct ? 'text-success' : ''}`\n }>\n <SvgContainer\n svg={props.markedStatus === InteractiveAnswerStatus.Correct\n ? CheckCircleSvg\n : CheckCircleOutlineSvg\n }\n onClick={\n () => props.markInteraction(props.studentAttempt.answers, InteractiveAnswerStatus.Correct)\n }\n />\n </div>\n <div className={\n `d-flex flex-column justify-content-end cursor-pointer\n ${props.markedStatus === InteractiveAnswerStatus.Incorrect ? ' text-danger' : ''}`\n }>\n <SvgContainer\n svg={props.markedStatus === InteractiveAnswerStatus.Incorrect\n ? CrossCircleFilledSvg\n : CrossCircleSvg\n }\n onClick={\n () => props.markInteraction(props.studentAttempt.answers, InteractiveAnswerStatus.Incorrect)\n }\n />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'interactives.responseTypes';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function NoResponse(): JSX.Element {\n return (\n <p className='p-2'><em>{getPhrase('noResponse')}</em></p>\n );\n}","import React from 'react';\n\nimport { ResponseItemComponentLookup } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { InteractionResponseCorrectness } from 'libs/shared/components/interaction-response/InteractionResponseCorrectness';\nimport { InteractionStudentDetailsHeader } from 'libs/shared/components/interaction-response/InteractionStudentDetailsHeader';\nimport { MarkResponse } from 'libs/shared/components/interaction-response/MarkResponse';\nimport { NoResponse } from 'libs/shared/components/interaction-response/response-types/NoResponse';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './interaction-response-item.module.scss';\n\ninterface InteractionResponseProps {\n interaction: Interaction;\n studentResults: StudentResults;\n imageCdnUrl: string;\n markInteraction: (answers: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n markedStatus?: InteractiveAnswerStatus;\n showStudentDetails?: boolean;\n className?: string;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n responseComponentClass?: string;\n}\n\nexport function InteractionResponseItem(props: InteractionResponseProps): JSX.Element {\n const ResponseItemComponent = ResponseItemComponentLookup[props.interaction.typeId];\n\n if (!ResponseItemComponent)\n return <></>;\n\n const result = getStudentResult(props.studentResults);\n\n const studentAttempt = getStudentAttempt(props.interaction.id, result);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n return (\n <div className='position-relative'>\n <div className={`rounded ${props.className ?? ''}`}>\n <div className='d-flex'>\n {!!props.showStudentDetails &&\n <div className='me-2'>\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.studentResults.user?.name, props.studentResults.user?.surname)\n }\n imageUrl={props.anonymisedUserName ? null : props.studentResults.user?.avatar?.url}\n showAnonymousUser={!!props.studentResults?.user?.sessionId}\n />\n </div>\n \n </div>\n }\n <div className='flex-grow-1'>\n {!!props.showStudentDetails &&\n <InteractionStudentDetailsHeader\n studentResults={props.studentResults}\n correctness={correctness}\n anonymisedUserName={props.anonymisedUserName}\n />\n }\n <div className='d-flex justify-content-between'>\n <div className={`flex-grow-1 mb-2 ${props.responseComponentClass ? props.responseComponentClass : ''}`}>\n {studentAttempt\n ? <ResponseItemComponent\n interaction={props.interaction}\n answers={studentAttempt.answers}\n imageCdnUrl={props.imageCdnUrl}\n user={props.studentResults.user}\n showFeedback={props.showFeedback}\n showAvatar={props.showAvatar}\n >\n <MarkResponse\n studentAttempt={studentAttempt}\n correctness={correctness}\n markInteraction={props.markInteraction}\n markedStatus={props.markedStatus}\n />\n </ResponseItemComponent>\n : <NoResponse />\n }\n </div>\n {!props.showStudentDetails &&\n <InteractionResponseCorrectness correctness={correctness} />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ResponseComponentProps } from './ResponseComponentLookup';\n\nexport function IllustrationResponse(props: ResponseComponentProps): JSX.Element {\n // There should only be one answer.\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n let className = 'rounded p-2 mb-2 w-50';\n\n if (!props.reportsStyling)\n className += ' text-white';\n \n return (\n <div className={className}>\n <img\n className='img-fluid border rounded'\n src={answer.text}\n alt={`Illustrated answer to the question: ${props.interaction.name}`}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\n\nimport { ResponseComponentProps } from './ResponseComponentLookup';\n\nconst PLACEHOLDER = 'cv-missing-word-';\n\nexport function MissingWordResponse(props: ResponseComponentProps): JSX.Element {\n const cleanedUp = (props.interaction.data.sentence as string).replace(/{([^{}]*)}/g, (match: string, val: string) => {\n return `{${PLACEHOLDER}${val}}`;\n });\n\n const items = cleanedUp.split(/{([^{}]*)}/g);\n\n let className = 'p-2';\n\n if (!props.reportsStyling)\n className += ' border rounded';\n\n return (\n <div className={className}>\n {items.map((item, idx) => {\n if (!item.startsWith(PLACEHOLDER))\n return item;\n\n const order = item.replace(PLACEHOLDER, '');\n\n const actionableItem = props.interaction.actionableItems.find(a => a.order.toString() === order);\n\n if (!actionableItem)\n return;\n\n // eslint-disable-next-line\n const answer = props.answers.find(a => a.id == actionableItem.id);\n \n if (!answer)\n return;\n\n if (!props.showFeedback)\n return <strong key={idx} className='text-info'>{answer.text}</strong>;\n\n const isCorrect = answer.status === InteractiveAnswerStatus.Correct;\n\n return (\n <React.Fragment key={idx}>\n {!isCorrect && <><del className='text-danger'><strong>{answer.text}</strong></del>&nbsp;</>}\n <strong className='text-success'>{actionableItem.name}</strong>\n </React.Fragment>\n );\n })}\n </div>\n );\n}","/**\n * SimpleBar.js - v5.3.0\n * Scrollbars, simpler.\n * https://grsmto.github.io/simplebar/\n *\n * Made by Adrien Denat from a fork by Jonathan Nicol\n * Under MIT License\n */\n\nimport 'core-js/modules/es.array.filter';\nimport 'core-js/modules/es.array.for-each';\nimport 'core-js/modules/es.array.iterator';\nimport 'core-js/modules/es.object.assign';\nimport 'core-js/modules/es.object.to-string';\nimport 'core-js/modules/es.parse-int';\nimport 'core-js/modules/es.string.iterator';\nimport 'core-js/modules/es.weak-map';\nimport 'core-js/modules/web.dom-collections.iterator';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport memoize from 'lodash.memoize';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport canUseDOM from 'can-use-dom';\nimport 'core-js/modules/es.array.reduce';\nimport 'core-js/modules/es.function.name';\nimport 'core-js/modules/es.regexp.exec';\nimport 'core-js/modules/es.string.match';\nimport 'core-js/modules/es.string.replace';\n\nvar cachedScrollbarWidth = null;\nvar cachedDevicePixelRatio = null;\n\nif (canUseDOM) {\n window.addEventListener('resize', function () {\n if (cachedDevicePixelRatio !== window.devicePixelRatio) {\n cachedDevicePixelRatio = window.devicePixelRatio;\n cachedScrollbarWidth = null;\n }\n });\n}\n\nfunction scrollbarWidth() {\n if (cachedScrollbarWidth === null) {\n if (typeof document === 'undefined') {\n cachedScrollbarWidth = 0;\n return cachedScrollbarWidth;\n }\n\n var body = document.body;\n var box = document.createElement('div');\n box.classList.add('simplebar-hide-scrollbar');\n body.appendChild(box);\n var width = box.getBoundingClientRect().right;\n body.removeChild(box);\n cachedScrollbarWidth = width;\n }\n\n return cachedScrollbarWidth;\n}\n\nfunction getElementWindow(element) {\n if (!element || !element.ownerDocument || !element.ownerDocument.defaultView) {\n return window;\n }\n\n return element.ownerDocument.defaultView;\n}\nfunction getElementDocument(element) {\n if (!element || !element.ownerDocument) {\n return document;\n }\n\n return element.ownerDocument;\n}\n\nvar SimpleBar =\n/*#__PURE__*/\nfunction () {\n function SimpleBar(element, options) {\n var _this = this;\n\n this.onScroll = function () {\n var elWindow = getElementWindow(_this.el);\n\n if (!_this.scrollXTicking) {\n elWindow.requestAnimationFrame(_this.scrollX);\n _this.scrollXTicking = true;\n }\n\n if (!_this.scrollYTicking) {\n elWindow.requestAnimationFrame(_this.scrollY);\n _this.scrollYTicking = true;\n }\n };\n\n this.scrollX = function () {\n if (_this.axis.x.isOverflowing) {\n _this.showScrollbar('x');\n\n _this.positionScrollbar('x');\n }\n\n _this.scrollXTicking = false;\n };\n\n this.scrollY = function () {\n if (_this.axis.y.isOverflowing) {\n _this.showScrollbar('y');\n\n _this.positionScrollbar('y');\n }\n\n _this.scrollYTicking = false;\n };\n\n this.onMouseEnter = function () {\n _this.showScrollbar('x');\n\n _this.showScrollbar('y');\n };\n\n this.onMouseMove = function (e) {\n _this.mouseX = e.clientX;\n _this.mouseY = e.clientY;\n\n if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {\n _this.onMouseMoveForAxis('x');\n }\n\n if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {\n _this.onMouseMoveForAxis('y');\n }\n };\n\n this.onMouseLeave = function () {\n _this.onMouseMove.cancel();\n\n if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {\n _this.onMouseLeaveForAxis('x');\n }\n\n if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {\n _this.onMouseLeaveForAxis('y');\n }\n\n _this.mouseX = -1;\n _this.mouseY = -1;\n };\n\n this.onWindowResize = function () {\n // Recalculate scrollbarWidth in case it's a zoom\n _this.scrollbarWidth = _this.getScrollbarWidth();\n\n _this.hideNativeScrollbar();\n };\n\n this.hideScrollbars = function () {\n _this.axis.x.track.rect = _this.axis.x.track.el.getBoundingClientRect();\n _this.axis.y.track.rect = _this.axis.y.track.el.getBoundingClientRect();\n\n if (!_this.isWithinBounds(_this.axis.y.track.rect)) {\n _this.axis.y.scrollbar.el.classList.remove(_this.classNames.visible);\n\n _this.axis.y.isVisible = false;\n }\n\n if (!_this.isWithinBounds(_this.axis.x.track.rect)) {\n _this.axis.x.scrollbar.el.classList.remove(_this.classNames.visible);\n\n _this.axis.x.isVisible = false;\n }\n };\n\n this.onPointerEvent = function (e) {\n var isWithinTrackXBounds, isWithinTrackYBounds;\n _this.axis.x.track.rect = _this.axis.x.track.el.getBoundingClientRect();\n _this.axis.y.track.rect = _this.axis.y.track.el.getBoundingClientRect();\n\n if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {\n isWithinTrackXBounds = _this.isWithinBounds(_this.axis.x.track.rect);\n }\n\n if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {\n isWithinTrackYBounds = _this.isWithinBounds(_this.axis.y.track.rect);\n } // If any pointer event is called on the scrollbar\n\n\n if (isWithinTrackXBounds || isWithinTrackYBounds) {\n // Preventing the event's default action stops text being\n // selectable during the drag.\n e.preventDefault(); // Prevent event leaking\n\n e.stopPropagation();\n\n if (e.type === 'mousedown') {\n if (isWithinTrackXBounds) {\n _this.axis.x.scrollbar.rect = _this.axis.x.scrollbar.el.getBoundingClientRect();\n\n if (_this.isWithinBounds(_this.axis.x.scrollbar.rect)) {\n _this.onDragStart(e, 'x');\n } else {\n _this.onTrackClick(e, 'x');\n }\n }\n\n if (isWithinTrackYBounds) {\n _this.axis.y.scrollbar.rect = _this.axis.y.scrollbar.el.getBoundingClientRect();\n\n if (_this.isWithinBounds(_this.axis.y.scrollbar.rect)) {\n _this.onDragStart(e, 'y');\n } else {\n _this.onTrackClick(e, 'y');\n }\n }\n }\n }\n };\n\n this.drag = function (e) {\n var eventOffset;\n var track = _this.axis[_this.draggedAxis].track;\n var trackSize = track.rect[_this.axis[_this.draggedAxis].sizeAttr];\n var scrollbar = _this.axis[_this.draggedAxis].scrollbar;\n var contentSize = _this.contentWrapperEl[_this.axis[_this.draggedAxis].scrollSizeAttr];\n var hostSize = parseInt(_this.elStyles[_this.axis[_this.draggedAxis].sizeAttr], 10);\n e.preventDefault();\n e.stopPropagation();\n\n if (_this.draggedAxis === 'y') {\n eventOffset = e.pageY;\n } else {\n eventOffset = e.pageX;\n } // Calculate how far the user's mouse is from the top/left of the scrollbar (minus the dragOffset).\n\n\n var dragPos = eventOffset - track.rect[_this.axis[_this.draggedAxis].offsetAttr] - _this.axis[_this.draggedAxis].dragOffset; // Convert the mouse position into a percentage of the scrollbar height/width.\n\n var dragPerc = dragPos / (trackSize - scrollbar.size); // Scroll the content by the same percentage.\n\n var scrollPos = dragPerc * (contentSize - hostSize); // Fix browsers inconsistency on RTL\n\n if (_this.draggedAxis === 'x') {\n scrollPos = _this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted ? scrollPos - (trackSize + scrollbar.size) : scrollPos;\n scrollPos = _this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted ? -scrollPos : scrollPos;\n }\n\n _this.contentWrapperEl[_this.axis[_this.draggedAxis].scrollOffsetAttr] = scrollPos;\n };\n\n this.onEndDrag = function (e) {\n var elDocument = getElementDocument(_this.el);\n var elWindow = getElementWindow(_this.el);\n e.preventDefault();\n e.stopPropagation();\n\n _this.el.classList.remove(_this.classNames.dragging);\n\n elDocument.removeEventListener('mousemove', _this.drag, true);\n elDocument.removeEventListener('mouseup', _this.onEndDrag, true);\n _this.removePreventClickId = elWindow.setTimeout(function () {\n // Remove these asynchronously so we still suppress click events\n // generated simultaneously with mouseup.\n elDocument.removeEventListener('click', _this.preventClick, true);\n elDocument.removeEventListener('dblclick', _this.preventClick, true);\n _this.removePreventClickId = null;\n });\n };\n\n this.preventClick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n\n this.el = element;\n this.minScrollbarWidth = 20;\n this.options = Object.assign({}, SimpleBar.defaultOptions, {}, options);\n this.classNames = Object.assign({}, SimpleBar.defaultOptions.classNames, {}, this.options.classNames);\n this.axis = {\n x: {\n scrollOffsetAttr: 'scrollLeft',\n sizeAttr: 'width',\n scrollSizeAttr: 'scrollWidth',\n offsetSizeAttr: 'offsetWidth',\n offsetAttr: 'left',\n overflowAttr: 'overflowX',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n },\n y: {\n scrollOffsetAttr: 'scrollTop',\n sizeAttr: 'height',\n scrollSizeAttr: 'scrollHeight',\n offsetSizeAttr: 'offsetHeight',\n offsetAttr: 'top',\n overflowAttr: 'overflowY',\n dragOffset: 0,\n isOverflowing: true,\n isVisible: false,\n forceVisible: false,\n track: {},\n scrollbar: {}\n }\n };\n this.removePreventClickId = null; // Don't re-instantiate over an existing one\n\n if (SimpleBar.instances.has(this.el)) {\n return;\n }\n\n this.recalculate = throttle(this.recalculate.bind(this), 64);\n this.onMouseMove = throttle(this.onMouseMove.bind(this), 64);\n this.hideScrollbars = debounce(this.hideScrollbars.bind(this), this.options.timeout);\n this.onWindowResize = debounce(this.onWindowResize.bind(this), 64, {\n leading: true\n });\n SimpleBar.getRtlHelpers = memoize(SimpleBar.getRtlHelpers);\n this.init();\n }\n /**\n * Static properties\n */\n\n /**\n * Helper to fix browsers inconsistency on RTL:\n * - Firefox inverts the scrollbar initial position\n * - IE11 inverts both scrollbar position and scrolling offset\n * Directly inspired by @KingSora's OverlayScrollbars https://github.com/KingSora/OverlayScrollbars/blob/master/js/OverlayScrollbars.js#L1634\n */\n\n\n SimpleBar.getRtlHelpers = function getRtlHelpers() {\n var dummyDiv = document.createElement('div');\n dummyDiv.innerHTML = '<div class=\"hs-dummy-scrollbar-size\"><div style=\"height: 200%; width: 200%; margin: 10px 0;\"></div></div>';\n var scrollbarDummyEl = dummyDiv.firstElementChild;\n document.body.appendChild(scrollbarDummyEl);\n var dummyContainerChild = scrollbarDummyEl.firstElementChild;\n scrollbarDummyEl.scrollLeft = 0;\n var dummyContainerOffset = SimpleBar.getOffset(scrollbarDummyEl);\n var dummyContainerChildOffset = SimpleBar.getOffset(dummyContainerChild);\n scrollbarDummyEl.scrollLeft = 999;\n var dummyContainerScrollOffsetAfterScroll = SimpleBar.getOffset(dummyContainerChild);\n return {\n // determines if the scrolling is responding with negative values\n isRtlScrollingInverted: dummyContainerOffset.left !== dummyContainerChildOffset.left && dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left !== 0,\n // determines if the origin scrollbar position is inverted or not (positioned on left or right)\n isRtlScrollbarInverted: dummyContainerOffset.left !== dummyContainerChildOffset.left\n };\n };\n\n SimpleBar.getOffset = function getOffset(el) {\n var rect = el.getBoundingClientRect();\n var elDocument = getElementDocument(el);\n var elWindow = getElementWindow(el);\n return {\n top: rect.top + (elWindow.pageYOffset || elDocument.documentElement.scrollTop),\n left: rect.left + (elWindow.pageXOffset || elDocument.documentElement.scrollLeft)\n };\n };\n\n var _proto = SimpleBar.prototype;\n\n _proto.init = function init() {\n // Save a reference to the instance, so we know this DOM node has already been instancied\n SimpleBar.instances.set(this.el, this); // We stop here on server-side\n\n if (canUseDOM) {\n this.initDOM();\n this.scrollbarWidth = this.getScrollbarWidth();\n this.recalculate();\n this.initListeners();\n }\n };\n\n _proto.initDOM = function initDOM() {\n var _this2 = this;\n\n // make sure this element doesn't have the elements yet\n if (Array.prototype.filter.call(this.el.children, function (child) {\n return child.classList.contains(_this2.classNames.wrapper);\n }).length) {\n // assume that element has his DOM already initiated\n this.wrapperEl = this.el.querySelector(\".\" + this.classNames.wrapper);\n this.contentWrapperEl = this.options.scrollableNode || this.el.querySelector(\".\" + this.classNames.contentWrapper);\n this.contentEl = this.options.contentNode || this.el.querySelector(\".\" + this.classNames.contentEl);\n this.offsetEl = this.el.querySelector(\".\" + this.classNames.offset);\n this.maskEl = this.el.querySelector(\".\" + this.classNames.mask);\n this.placeholderEl = this.findChild(this.wrapperEl, \".\" + this.classNames.placeholder);\n this.heightAutoObserverWrapperEl = this.el.querySelector(\".\" + this.classNames.heightAutoObserverWrapperEl);\n this.heightAutoObserverEl = this.el.querySelector(\".\" + this.classNames.heightAutoObserverEl);\n this.axis.x.track.el = this.findChild(this.el, \".\" + this.classNames.track + \".\" + this.classNames.horizontal);\n this.axis.y.track.el = this.findChild(this.el, \".\" + this.classNames.track + \".\" + this.classNames.vertical);\n } else {\n // Prepare DOM\n this.wrapperEl = document.createElement('div');\n this.contentWrapperEl = document.createElement('div');\n this.offsetEl = document.createElement('div');\n this.maskEl = document.createElement('div');\n this.contentEl = document.createElement('div');\n this.placeholderEl = document.createElement('div');\n this.heightAutoObserverWrapperEl = document.createElement('div');\n this.heightAutoObserverEl = document.createElement('div');\n this.wrapperEl.classList.add(this.classNames.wrapper);\n this.contentWrapperEl.classList.add(this.classNames.contentWrapper);\n this.offsetEl.classList.add(this.classNames.offset);\n this.maskEl.classList.add(this.classNames.mask);\n this.contentEl.classList.add(this.classNames.contentEl);\n this.placeholderEl.classList.add(this.classNames.placeholder);\n this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl);\n this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);\n\n while (this.el.firstChild) {\n this.contentEl.appendChild(this.el.firstChild);\n }\n\n this.contentWrapperEl.appendChild(this.contentEl);\n this.offsetEl.appendChild(this.contentWrapperEl);\n this.maskEl.appendChild(this.offsetEl);\n this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl);\n this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl);\n this.wrapperEl.appendChild(this.maskEl);\n this.wrapperEl.appendChild(this.placeholderEl);\n this.el.appendChild(this.wrapperEl);\n }\n\n if (!this.axis.x.track.el || !this.axis.y.track.el) {\n var track = document.createElement('div');\n var scrollbar = document.createElement('div');\n track.classList.add(this.classNames.track);\n scrollbar.classList.add(this.classNames.scrollbar);\n track.appendChild(scrollbar);\n this.axis.x.track.el = track.cloneNode(true);\n this.axis.x.track.el.classList.add(this.classNames.horizontal);\n this.axis.y.track.el = track.cloneNode(true);\n this.axis.y.track.el.classList.add(this.classNames.vertical);\n this.el.appendChild(this.axis.x.track.el);\n this.el.appendChild(this.axis.y.track.el);\n }\n\n this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector(\".\" + this.classNames.scrollbar);\n this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector(\".\" + this.classNames.scrollbar);\n\n if (!this.options.autoHide) {\n this.axis.x.scrollbar.el.classList.add(this.classNames.visible);\n this.axis.y.scrollbar.el.classList.add(this.classNames.visible);\n }\n\n this.el.setAttribute('data-simplebar', 'init');\n };\n\n _proto.initListeners = function initListeners() {\n var _this3 = this;\n\n var elWindow = getElementWindow(this.el); // Event listeners\n\n if (this.options.autoHide) {\n this.el.addEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(function (e) {\n _this3.el.addEventListener(e, _this3.onPointerEvent, true);\n });\n ['touchstart', 'touchend', 'touchmove'].forEach(function (e) {\n _this3.el.addEventListener(e, _this3.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n this.el.addEventListener('mousemove', this.onMouseMove);\n this.el.addEventListener('mouseleave', this.onMouseLeave);\n this.contentWrapperEl.addEventListener('scroll', this.onScroll); // Browser zoom triggers a window resize\n\n elWindow.addEventListener('resize', this.onWindowResize); // Hack for https://github.com/WICG/ResizeObserver/issues/38\n\n var resizeObserverStarted = false;\n var resizeObserver = elWindow.ResizeObserver || ResizeObserver;\n this.resizeObserver = new resizeObserver(function () {\n if (!resizeObserverStarted) return;\n\n _this3.recalculate();\n });\n this.resizeObserver.observe(this.el);\n this.resizeObserver.observe(this.contentEl);\n elWindow.requestAnimationFrame(function () {\n resizeObserverStarted = true;\n }); // This is required to detect horizontal scroll. Vertical scroll only needs the resizeObserver.\n\n this.mutationObserver = new elWindow.MutationObserver(this.recalculate);\n this.mutationObserver.observe(this.contentEl, {\n childList: true,\n subtree: true,\n characterData: true\n });\n };\n\n _proto.recalculate = function recalculate() {\n var elWindow = getElementWindow(this.el);\n this.elStyles = elWindow.getComputedStyle(this.el);\n this.isRtl = this.elStyles.direction === 'rtl';\n var isHeightAuto = this.heightAutoObserverEl.offsetHeight <= 1;\n var isWidthAuto = this.heightAutoObserverEl.offsetWidth <= 1;\n var contentElOffsetWidth = this.contentEl.offsetWidth;\n var contentWrapperElOffsetWidth = this.contentWrapperEl.offsetWidth;\n var elOverflowX = this.elStyles.overflowX;\n var elOverflowY = this.elStyles.overflowY;\n this.contentEl.style.padding = this.elStyles.paddingTop + \" \" + this.elStyles.paddingRight + \" \" + this.elStyles.paddingBottom + \" \" + this.elStyles.paddingLeft;\n this.wrapperEl.style.margin = \"-\" + this.elStyles.paddingTop + \" -\" + this.elStyles.paddingRight + \" -\" + this.elStyles.paddingBottom + \" -\" + this.elStyles.paddingLeft;\n var contentElScrollHeight = this.contentEl.scrollHeight;\n var contentElScrollWidth = this.contentEl.scrollWidth;\n this.contentWrapperEl.style.height = isHeightAuto ? 'auto' : '100%'; // Determine placeholder size\n\n this.placeholderEl.style.width = isWidthAuto ? contentElOffsetWidth + \"px\" : 'auto';\n this.placeholderEl.style.height = contentElScrollHeight + \"px\";\n var contentWrapperElOffsetHeight = this.contentWrapperEl.offsetHeight;\n this.axis.x.isOverflowing = contentElScrollWidth > contentElOffsetWidth;\n this.axis.y.isOverflowing = contentElScrollHeight > contentWrapperElOffsetHeight; // Set isOverflowing to false if user explicitely set hidden overflow\n\n this.axis.x.isOverflowing = elOverflowX === 'hidden' ? false : this.axis.x.isOverflowing;\n this.axis.y.isOverflowing = elOverflowY === 'hidden' ? false : this.axis.y.isOverflowing;\n this.axis.x.forceVisible = this.options.forceVisible === 'x' || this.options.forceVisible === true;\n this.axis.y.forceVisible = this.options.forceVisible === 'y' || this.options.forceVisible === true;\n this.hideNativeScrollbar(); // Set isOverflowing to false if scrollbar is not necessary (content is shorter than offset)\n\n var offsetForXScrollbar = this.axis.x.isOverflowing ? this.scrollbarWidth : 0;\n var offsetForYScrollbar = this.axis.y.isOverflowing ? this.scrollbarWidth : 0;\n this.axis.x.isOverflowing = this.axis.x.isOverflowing && contentElScrollWidth > contentWrapperElOffsetWidth - offsetForYScrollbar;\n this.axis.y.isOverflowing = this.axis.y.isOverflowing && contentElScrollHeight > contentWrapperElOffsetHeight - offsetForXScrollbar;\n this.axis.x.scrollbar.size = this.getScrollbarSize('x');\n this.axis.y.scrollbar.size = this.getScrollbarSize('y');\n this.axis.x.scrollbar.el.style.width = this.axis.x.scrollbar.size + \"px\";\n this.axis.y.scrollbar.el.style.height = this.axis.y.scrollbar.size + \"px\";\n this.positionScrollbar('x');\n this.positionScrollbar('y');\n this.toggleTrackVisibility('x');\n this.toggleTrackVisibility('y');\n }\n /**\n * Calculate scrollbar size\n */\n ;\n\n _proto.getScrollbarSize = function getScrollbarSize(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n if (!this.axis[axis].isOverflowing) {\n return 0;\n }\n\n var contentSize = this.contentEl[this.axis[axis].scrollSizeAttr];\n var trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n var scrollbarSize;\n var scrollbarRatio = trackSize / contentSize; // Calculate new height/position of drag handle.\n\n scrollbarSize = Math.max(~~(scrollbarRatio * trackSize), this.options.scrollbarMinSize);\n\n if (this.options.scrollbarMaxSize) {\n scrollbarSize = Math.min(scrollbarSize, this.options.scrollbarMaxSize);\n }\n\n return scrollbarSize;\n };\n\n _proto.positionScrollbar = function positionScrollbar(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n if (!this.axis[axis].isOverflowing) {\n return;\n }\n\n var contentSize = this.contentWrapperEl[this.axis[axis].scrollSizeAttr];\n var trackSize = this.axis[axis].track.el[this.axis[axis].offsetSizeAttr];\n var hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n var scrollbar = this.axis[axis].scrollbar;\n var scrollOffset = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n scrollOffset = axis === 'x' && this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted ? -scrollOffset : scrollOffset;\n var scrollPourcent = scrollOffset / (contentSize - hostSize);\n var handleOffset = ~~((trackSize - scrollbar.size) * scrollPourcent);\n handleOffset = axis === 'x' && this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted ? handleOffset + (trackSize - scrollbar.size) : handleOffset;\n scrollbar.el.style.transform = axis === 'x' ? \"translate3d(\" + handleOffset + \"px, 0, 0)\" : \"translate3d(0, \" + handleOffset + \"px, 0)\";\n };\n\n _proto.toggleTrackVisibility = function toggleTrackVisibility(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n var track = this.axis[axis].track.el;\n var scrollbar = this.axis[axis].scrollbar.el;\n\n if (this.axis[axis].isOverflowing || this.axis[axis].forceVisible) {\n track.style.visibility = 'visible';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'scroll';\n } else {\n track.style.visibility = 'hidden';\n this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'hidden';\n } // Even if forceVisible is enabled, scrollbar itself should be hidden\n\n\n if (this.axis[axis].isOverflowing) {\n scrollbar.style.display = 'block';\n } else {\n scrollbar.style.display = 'none';\n }\n };\n\n _proto.hideNativeScrollbar = function hideNativeScrollbar() {\n this.offsetEl.style[this.isRtl ? 'left' : 'right'] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? \"-\" + this.scrollbarWidth + \"px\" : 0;\n this.offsetEl.style.bottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? \"-\" + this.scrollbarWidth + \"px\" : 0;\n }\n /**\n * On scroll event handling\n */\n ;\n\n _proto.onMouseMoveForAxis = function onMouseMoveForAxis(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n this.axis[axis].track.rect = this.axis[axis].track.el.getBoundingClientRect();\n this.axis[axis].scrollbar.rect = this.axis[axis].scrollbar.el.getBoundingClientRect();\n var isWithinScrollbarBoundsX = this.isWithinBounds(this.axis[axis].scrollbar.rect);\n\n if (isWithinScrollbarBoundsX) {\n this.axis[axis].scrollbar.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n }\n\n if (this.isWithinBounds(this.axis[axis].track.rect)) {\n this.showScrollbar(axis);\n this.axis[axis].track.el.classList.add(this.classNames.hover);\n } else {\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n }\n };\n\n _proto.onMouseLeaveForAxis = function onMouseLeaveForAxis(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n this.axis[axis].track.el.classList.remove(this.classNames.hover);\n this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);\n };\n\n /**\n * Show scrollbar\n */\n _proto.showScrollbar = function showScrollbar(axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n var scrollbar = this.axis[axis].scrollbar.el;\n\n if (!this.axis[axis].isVisible) {\n scrollbar.classList.add(this.classNames.visible);\n this.axis[axis].isVisible = true;\n }\n\n if (this.options.autoHide) {\n this.hideScrollbars();\n }\n }\n /**\n * Hide Scrollbar\n */\n ;\n\n /**\n * on scrollbar handle drag movement starts\n */\n _proto.onDragStart = function onDragStart(e, axis) {\n if (axis === void 0) {\n axis = 'y';\n }\n\n var elDocument = getElementDocument(this.el);\n var elWindow = getElementWindow(this.el);\n var scrollbar = this.axis[axis].scrollbar; // Measure how far the user's mouse is from the top of the scrollbar drag handle.\n\n var eventOffset = axis === 'y' ? e.pageY : e.pageX;\n this.axis[axis].dragOffset = eventOffset - scrollbar.rect[this.axis[axis].offsetAttr];\n this.draggedAxis = axis;\n this.el.classList.add(this.classNames.dragging);\n elDocument.addEventListener('mousemove', this.drag, true);\n elDocument.addEventListener('mouseup', this.onEndDrag, true);\n\n if (this.removePreventClickId === null) {\n elDocument.addEventListener('click', this.preventClick, true);\n elDocument.addEventListener('dblclick', this.preventClick, true);\n } else {\n elWindow.clearTimeout(this.removePreventClickId);\n this.removePreventClickId = null;\n }\n }\n /**\n * Drag scrollbar handle\n */\n ;\n\n _proto.onTrackClick = function onTrackClick(e, axis) {\n var _this4 = this;\n\n if (axis === void 0) {\n axis = 'y';\n }\n\n if (!this.options.clickOnTrack) return;\n var elWindow = getElementWindow(this.el);\n this.axis[axis].scrollbar.rect = this.axis[axis].scrollbar.el.getBoundingClientRect();\n var scrollbar = this.axis[axis].scrollbar;\n var scrollbarOffset = scrollbar.rect[this.axis[axis].offsetAttr];\n var hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);\n var scrolled = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];\n var t = axis === 'y' ? this.mouseY - scrollbarOffset : this.mouseX - scrollbarOffset;\n var dir = t < 0 ? -1 : 1;\n var scrollSize = dir === -1 ? scrolled - hostSize : scrolled + hostSize;\n\n var scrollTo = function scrollTo() {\n if (dir === -1) {\n if (scrolled > scrollSize) {\n var _this4$contentWrapper;\n\n scrolled -= _this4.options.clickOnTrackSpeed;\n\n _this4.contentWrapperEl.scrollTo((_this4$contentWrapper = {}, _this4$contentWrapper[_this4.axis[axis].offsetAttr] = scrolled, _this4$contentWrapper));\n\n elWindow.requestAnimationFrame(scrollTo);\n }\n } else {\n if (scrolled < scrollSize) {\n var _this4$contentWrapper2;\n\n scrolled += _this4.options.clickOnTrackSpeed;\n\n _this4.contentWrapperEl.scrollTo((_this4$contentWrapper2 = {}, _this4$contentWrapper2[_this4.axis[axis].offsetAttr] = scrolled, _this4$contentWrapper2));\n\n elWindow.requestAnimationFrame(scrollTo);\n }\n }\n };\n\n scrollTo();\n }\n /**\n * Getter for content element\n */\n ;\n\n _proto.getContentElement = function getContentElement() {\n return this.contentEl;\n }\n /**\n * Getter for original scrolling element\n */\n ;\n\n _proto.getScrollElement = function getScrollElement() {\n return this.contentWrapperEl;\n };\n\n _proto.getScrollbarWidth = function getScrollbarWidth() {\n // Try/catch for FF 56 throwing on undefined computedStyles\n try {\n // Detect browsers supporting CSS scrollbar styling and do not calculate\n if (getComputedStyle(this.contentWrapperEl, '::-webkit-scrollbar').display === 'none' || 'scrollbarWidth' in document.documentElement.style || '-ms-overflow-style' in document.documentElement.style) {\n return 0;\n } else {\n return scrollbarWidth();\n }\n } catch (e) {\n return scrollbarWidth();\n }\n };\n\n _proto.removeListeners = function removeListeners() {\n var _this5 = this;\n\n var elWindow = getElementWindow(this.el); // Event listeners\n\n if (this.options.autoHide) {\n this.el.removeEventListener('mouseenter', this.onMouseEnter);\n }\n\n ['mousedown', 'click', 'dblclick'].forEach(function (e) {\n _this5.el.removeEventListener(e, _this5.onPointerEvent, true);\n });\n ['touchstart', 'touchend', 'touchmove'].forEach(function (e) {\n _this5.el.removeEventListener(e, _this5.onPointerEvent, {\n capture: true,\n passive: true\n });\n });\n this.el.removeEventListener('mousemove', this.onMouseMove);\n this.el.removeEventListener('mouseleave', this.onMouseLeave);\n\n if (this.contentWrapperEl) {\n this.contentWrapperEl.removeEventListener('scroll', this.onScroll);\n }\n\n elWindow.removeEventListener('resize', this.onWindowResize);\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n } // Cancel all debounced functions\n\n\n this.recalculate.cancel();\n this.onMouseMove.cancel();\n this.hideScrollbars.cancel();\n this.onWindowResize.cancel();\n }\n /**\n * UnMount mutation observer and delete SimpleBar instance from DOM element\n */\n ;\n\n _proto.unMount = function unMount() {\n this.removeListeners();\n SimpleBar.instances.delete(this.el);\n }\n /**\n * Check if mouse is within bounds\n */\n ;\n\n _proto.isWithinBounds = function isWithinBounds(bbox) {\n return this.mouseX >= bbox.left && this.mouseX <= bbox.left + bbox.width && this.mouseY >= bbox.top && this.mouseY <= bbox.top + bbox.height;\n }\n /**\n * Find element children matches query\n */\n ;\n\n _proto.findChild = function findChild(el, query) {\n var matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;\n return Array.prototype.filter.call(el.children, function (child) {\n return matches.call(child, query);\n })[0];\n };\n\n return SimpleBar;\n}();\n\nSimpleBar.defaultOptions = {\n autoHide: true,\n forceVisible: false,\n clickOnTrack: true,\n clickOnTrackSpeed: 40,\n classNames: {\n contentEl: 'simplebar-content',\n contentWrapper: 'simplebar-content-wrapper',\n offset: 'simplebar-offset',\n mask: 'simplebar-mask',\n wrapper: 'simplebar-wrapper',\n placeholder: 'simplebar-placeholder',\n scrollbar: 'simplebar-scrollbar',\n track: 'simplebar-track',\n heightAutoObserverWrapperEl: 'simplebar-height-auto-observer-wrapper',\n heightAutoObserverEl: 'simplebar-height-auto-observer',\n visible: 'simplebar-visible',\n horizontal: 'simplebar-horizontal',\n vertical: 'simplebar-vertical',\n hover: 'simplebar-hover',\n dragging: 'simplebar-dragging'\n },\n scrollbarMinSize: 25,\n scrollbarMaxSize: 0,\n timeout: 1000\n};\nSimpleBar.instances = new WeakMap();\n\nexport default SimpleBar;\n//# sourceMappingURL=simplebar-core.esm.js.map\n","/**\n * simplebar-react - v2.3.0\n * React component for SimpleBar\n * https://grsmto.github.io/simplebar/\n *\n * Made by Adrien Denat\n * Under MIT License\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport SimpleBarJS from 'simplebar/dist/simplebar-core.esm';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/* Deprecated\n * Hardcore this here until we can safely deprecated it.\n * Helper function to retrieve options from element attributes\n */\n\nvar getOptions = function getOptions(obj) {\n var options = Array.prototype.reduce.call(obj, function (acc, attribute) {\n var option = attribute.name.match(/data-simplebar-(.+)/);\n\n if (option) {\n var key = option[1].replace(/\\W+(.)/g, function (x, chr) {\n return chr.toUpperCase();\n });\n\n switch (attribute.value) {\n case 'true':\n acc[key] = true;\n break;\n\n case 'false':\n acc[key] = false;\n break;\n\n case undefined:\n acc[key] = true;\n break;\n\n default:\n acc[key] = attribute.value;\n }\n }\n\n return acc;\n }, {});\n return options;\n};\n\nvar SimpleBar = React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n _ref$scrollableNodePr = _ref.scrollableNodeProps,\n scrollableNodeProps = _ref$scrollableNodePr === void 0 ? {} : _ref$scrollableNodePr,\n otherProps = _objectWithoutProperties(_ref, [\"children\", \"scrollableNodeProps\"]);\n\n var instance;\n var scrollableNodeRef = useRef();\n var elRef = useRef();\n var contentNodeRef = useRef();\n var options = {};\n var rest = {};\n var deprecatedOptions = [];\n Object.keys(otherProps).forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(SimpleBarJS.defaultOptions, key)) {\n options[key] = otherProps[key];\n } else if (key.match(/data-simplebar-(.+)/) && key !== 'data-simplebar-direction') {\n deprecatedOptions.push({\n name: key,\n value: otherProps[key]\n });\n } else {\n rest[key] = otherProps[key];\n }\n });\n\n if (deprecatedOptions.length) {\n console.warn(\"simplebar-react: this way of passing options is deprecated. Pass it like normal props instead:\\n 'data-simplebar-auto-hide=\\\"false\\\"' \\u2014> 'autoHide=\\\"false\\\"'\\n \");\n }\n\n useEffect(function () {\n scrollableNodeRef = scrollableNodeProps.ref || scrollableNodeRef;\n\n if (elRef.current) {\n instance = new SimpleBarJS(elRef.current, _objectSpread2({}, getOptions(deprecatedOptions), {}, options, {}, scrollableNodeRef && {\n scrollableNode: scrollableNodeRef.current\n }, {}, contentNodeRef.current && {\n contentNode: contentNodeRef.current\n }));\n\n if (ref) {\n ref.current = instance;\n }\n }\n\n return function () {\n instance.unMount();\n instance = null;\n };\n }, []);\n return React.createElement(\"div\", _extends({\n ref: elRef,\n \"data-simplebar\": true\n }, rest), React.createElement(\"div\", {\n className: \"simplebar-wrapper\"\n }, React.createElement(\"div\", {\n className: \"simplebar-height-auto-observer-wrapper\"\n }, React.createElement(\"div\", {\n className: \"simplebar-height-auto-observer\"\n })), React.createElement(\"div\", {\n className: \"simplebar-mask\"\n }, React.createElement(\"div\", {\n className: \"simplebar-offset\"\n }, typeof children === 'function' ? children({\n scrollableNodeRef: scrollableNodeRef,\n contentNodeRef: contentNodeRef\n }) : React.createElement(\"div\", _extends({}, scrollableNodeProps, {\n className: \"simplebar-content-wrapper\".concat(scrollableNodeProps.className ? \" \".concat(scrollableNodeProps.className) : '')\n }), React.createElement(\"div\", {\n className: \"simplebar-content\"\n }, children)))), React.createElement(\"div\", {\n className: \"simplebar-placeholder\"\n })), React.createElement(\"div\", {\n className: \"simplebar-track simplebar-horizontal\"\n }, React.createElement(\"div\", {\n className: \"simplebar-scrollbar\"\n })), React.createElement(\"div\", {\n className: \"simplebar-track simplebar-vertical\"\n }, React.createElement(\"div\", {\n className: \"simplebar-scrollbar\"\n })));\n});\nSimpleBar.displayName = 'SimpleBar';\nSimpleBar.propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n scrollableNodeProps: PropTypes.object\n};\n\nexport default SimpleBar;\n","import React from 'react';\nimport { HtmlPortalNode, InPortal } from 'react-reverse-portal';\nimport SimpleBar from 'simplebar-react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { CrossCircleFilledSvg } from 'libs/shared/images/svg/objects/CrossCircleFilledSvg';\nimport { CheckCircleSvg } from 'libs/shared/images/svg/status/CheckCircleSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { ActionableItem, Interaction } from 'libs/shared/interfaces';\n\nimport styles from './multiple-choice-interaction-answers.module.scss';\n\nconst alphabet = [ 'A', 'B', 'C', 'D' ];\n\ninterface MultipleChoiceInteractionAnswersProps {\n interaction: Interaction;\n showFeedback: boolean;\n getSelectedAnswer?: (actionableItemId: string) => string;\n imageApi?: string;\n userInitials?: string;\n userAvatar?: string;\n submitted?: boolean;\n size?: 'sm' | 'lg';\n showCorrectnessIcons?: boolean;\n\n /**\n * onSelectAnswer can be omitted when showing read-only results.\n */\n onSelectAnswer?: (answer: ActionableItem, checked: boolean) => void;\n\n onlyShowSelectedAnswer?: boolean;\n\n /**\n * Will hide the tick and cross from the answer tiles\n */\n hideFeedbackIcons?: boolean;\n unCheckedBackground?: string;\n\n leftHandSidePortalNode?: HtmlPortalNode;\n\n /**\n * Used when displaying the answer in reports\n */\n isDisplayOnly?: boolean;\n}\n\nMultipleChoiceInteractionAnswers.defaultProps = {\n size: 'lg',\n unCheckedBackground: 'bg-white'\n};\n\nexport function MultipleChoiceInteractionAnswers(props: MultipleChoiceInteractionAnswersProps): JSX.Element {\n const [ previewAnswer, setPreviewAnswer ] = React.useState<string>(null);\n\n const hasImages = !!props.interaction.actionableItems.find(a => !!a.data?.imageUrl);\n\n const scrollRef = React.useRef(null);\n\n const small = props.size === 'sm' || (hasImages && props.interaction.actionableItems.length > 2);\n\n return (\n <ul className={`${hasImages ? `row ${small && !props.isDisplayOnly ? 'px-lg-5 p-0' : ''}` : ''} list-unstyled`}>\n {props.interaction.actionableItems.map((a, index) => {\n const answer = props.getSelectedAnswer?.(a.id);\n const imageUrl = a.data?.imageUrl;\n const hasText = !!a.name;\n\n function onSelectAnswer(): void {\n if (props.submitted)\n return;\n\n if (props.onSelectAnswer)\n props.onSelectAnswer(a, !answer);\n\n setPreviewAnswer(answer ? null : a.id);\n }\n\n if (props.onlyShowSelectedAnswer && !answer)\n return <React.Fragment key={index}></React.Fragment>;\n\n let className = answer ?\n 'bg-blue text-white' :\n props.unCheckedBackground;\n\n let LeftPart = () => <>{alphabet[index]}</>;\n\n if (props.showFeedback) {\n if (!props.showCorrectnessIcons) {\n className = a.isCorrect ?\n 'bg-success text-white' :\n `bg-danger text-white ${styles.incorrect}`;\n }\n\n if (!props.hideFeedbackIcons) {\n LeftPart = () => {\n return (\n <>\n {a.isCorrect ?\n <SvgContainer size={SvgContainerSize.Small} svg={CheckSvg} /> :\n <SvgContainer size={SvgContainerSize.Small} svg={CloseSvg} />}\n </>\n );\n };\n }\n }\n\n /**\n * Allow keyboard controls, but not when we show feedback\n */\n const accessibility = props.showFeedback ? {} : {\n role: 'button',\n tabIndex: 0,\n onKeyDown: (e: React.KeyboardEvent) => e.key === 'Enter' && onSelectAnswer()\n };\n\n let hasImageClass = '';\n if (hasImages) {\n hasImageClass = 'col-6';\n }\n\n const showImagePreview = a.id.toString() === previewAnswer?.toString()\n && props.leftHandSidePortalNode\n && imageUrl\n && !props.submitted;\n\n return (\n <React.Fragment key={index}>\n {showImagePreview &&\n <InPortal node={props.leftHandSidePortalNode}>\n <SimpleBar className='h-100' ref={scrollRef}>\n <div className='p-3 d-flex flex-column h-100'>\n <div className='flex-grow-1'>\n <div className='cv-image-container text-center'>\n <img\n className='img-fluid rounded'\n src={imageUrl}\n alt={a.name || alphabet[index]}\n />\n </div>\n <div className={`${styles.answer} h6 text-center text-dark p-3`}>\n <span className={`d-inline-block ${hasText ? 'me-3' : ''} cv-multiple-choice-bullet`}><LeftPart /></span>\n {hasText && <span className='flex-grow-1 pe-4'>{a.name}</span>}\n </div>\n </div>\n <div className='text-end'>\n <DivButton\n className='btn btn-link'\n onClick={() => setPreviewAnswer(null)}\n >\n Close\n </DivButton>\n </div>\n </div>\n </SimpleBar>\n </InPortal>\n }\n <li className={`${hasImageClass} mb-3`}>\n <label\n className={`\n d-block\n rounded-3\n shadow-sm\n position-relative\n ${props.showFeedback ? '' : 'cursor-pointer'}\n ${styles.answer}\n ${className}\n ${hasImages ? 'mb-0 h-100' : ''}\n `}\n key={index}\n onClick={onSelectAnswer}\n {...accessibility}\n >\n {hasImages &&\n <div>\n {props.showCorrectnessIcons && (\n <div className={`${styles.svgFill} position-absolute top-0 start-0 p-2 z-1`}>\n {a.isCorrect\n ? <SvgContainer svg={CheckCircleSvg} size={SvgContainerSize.ExtraLarge} className='svg-container text-success' />\n : <SvgContainer svg={CrossCircleFilledSvg} size={SvgContainerSize.Large} className='svg-container text-red' />\n }\n </div>\n )}\n <span className={`d-block position-relative ${styles.imageContainer}`}>\n <span\n className={`\n ${styles.image}\n position-absolute\n start-0\n end-0\n top-0\n bottom-0\n rounded-top\n `}\n style={{ backgroundImage: imageUrl ? `url(${imageUrl})` : undefined }}\n title={a.name || alphabet[index]}\n />\n </span>\n </div>\n }\n <span className={`d-flex ${hasText || props.isDisplayOnly ? 'justify-content-between' : 'justify-content-center'} ${small ? 'p-2' : 'p-3'}`}>\n <span className={`d-inline-block ${hasText ? 'me-3' : ''} cv-multiple-choice-bullet`}><LeftPart /></span>\n {hasText && <span className='flex-grow-1 pe-4'>{a.name}</span>}\n {props.userAvatar && !props.onlyShowSelectedAnswer &&\n <span className={`${styles.avatarContainer} ${hasImages ? styles.avatarContainerImage : ''}`}>\n {answer &&\n <Avatar\n imageCdnUrl={props.imageApi}\n initials={props.userInitials}\n imageUrl={props.userAvatar}\n extraClasses={'border border-white'}\n />\n }\n </span>\n }\n </span>\n </label>\n </li>\n </React.Fragment>\n );\n })}\n </ul>\n );\n}","import React from 'react';\n\nimport { MultipleChoiceInteractionAnswers } from 'libs/shared/components/interaction-answers/multiple-choice/MultipleChoiceInteractionAnswers';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { ResponseComponentProps } from './ResponseComponentLookup';\n\nimport styles from './response-types.module.scss';\n\nexport function MultipleChoiceResponse(props: ResponseComponentProps): JSX.Element {\n function getAnswer(id: string): string {\n // eslint-disable-next-line\n const answer = props.answers.find(a => a.id == id);\n return answer?.id;\n }\n\n let className = 'my-2';\n\n if (props.reportsStyling)\n className += ' mx-2';\n\n return (\n <div className={className}>\n <MultipleChoiceInteractionAnswers\n interaction={props.interaction}\n showFeedback={props.showFeedback}\n getSelectedAnswer={getAnswer}\n imageApi={props.imageCdnUrl}\n userInitials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.user?.name, props.user?.surname)\n }\n userAvatar={props.anonymisedUserName ? null : props.user?.avatar?.url}\n onlyShowSelectedAnswer={!props.showAvatar}\n size='sm'\n unCheckedBackground={props.showFeedback ? '' : `${styles.uncheckedBackground} text-white`}\n isDisplayOnly\n />\n </div>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ResponseComponentProps } from './ResponseComponentLookup';\n\nexport function ShortAnswerResponse(props: ResponseComponentProps): JSX.Element {\n // There should only be one answer.\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n let className = 'rounded p-2 mb-2';\n\n if (!props.reportsStyling)\n className += ' bg-blue text-white';\n \n return (\n <div className={className}>\n {answer.text}\n </div>\n );\n}","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { ActionableItem, Interaction } from 'libs/shared/interfaces';\n\nimport styles from './true-or-false-interaction-answers.module.scss';\n\ninterface TrueOrFalseInteractionAnswersProps {\n className?: string;\n interaction: Interaction;\n showFeedback: boolean;\n getSelectedAnswer: (actionableItemId: string) => string;\n imageApi: string;\n userInitials: string;\n userAvatar: string;\n size?: 'sm' | 'lg'\n \n /**\n * onSelectAnswer can be omitted when showing read-only results.\n */\n onSelectAnswer?: (answer: ActionableItem) => void;\n\n /**\n * Will hide the tick and cross from the answer tiles\n */\n hideFeedbackIcons?: boolean;\n unCheckedBackground?: string;\n}\n\nTrueOrFalseInteractionAnswers.defaultProps = {\n size: 'lg',\n unCheckedBackground: 'bg-white'\n};\n\nexport function TrueOrFalseInteractionAnswers(props: TrueOrFalseInteractionAnswersProps): JSX.Element {\n function onSelectAnswer(answer: ActionableItem): void {\n if (props.onSelectAnswer)\n props.onSelectAnswer(answer);\n }\n \n return (\n <div\n className={`d-flex ${props.className ? props.className : ''} ${props.size === 'sm' ? 'mx-n1' : 'mx-n2'}`}>\n {props.interaction.actionableItems.map((a, index) => {\n const answer = props.getSelectedAnswer(a.id);\n\n let className = answer ?\n 'bg-blue text-white' :\n props.unCheckedBackground;\n\n let LeftPart = () => <></>;\n\n if (props.showFeedback) {\n className = a.isCorrect ?\n 'bg-success text-white' :\n `bg-danger text-white ${styles.incorrect}`;\n\n if (!props.hideFeedbackIcons) {\n LeftPart = () => {\n return (\n <>\n {a.isCorrect ?\n <SvgContainer size={SvgContainerSize.Small} svg={CheckSvg} /> :\n <SvgContainer size={SvgContainerSize.Small} svg={CloseSvg} />}\n </>\n );\n };\n }\n }\n\n /**\n * Allow keyboard controls, but not when we show feedback\n */\n const accessibility = props.showFeedback ? {} : {\n role: 'button',\n tabIndex: 0,\n onKeyDown: (e: React.KeyboardEvent) => e.key === 'Enter' && onSelectAnswer(a)\n };\n\n return (\n <label\n key={index}\n htmlFor={a.id}\n className={`\n rounded-3\n shadow-sm\n my-0\n position-relative\n overflow-hidden\n d-flex\n align-items-center\n justify-content-center\n ${props.size === 'sm' ? `${styles.small} mx-1 h5` : `${styles.large} mx-2 h4`}\n ${props.showFeedback ? '' : 'cursor-pointer'}\n ${className}`}\n {...accessibility}\n >\n <input\n id={a.id}\n type={'radio'}\n name='multiple-choice'\n checked={!!answer}\n onChange={() => onSelectAnswer(a)}\n disabled={props.showFeedback}\n hidden\n />\n {a.name}\n <span className={`position-absolute p-2 ${styles.feedback}`}><LeftPart /></span>\n <span className={`${styles.avatarContainer}${props.size === 'sm' ? ` ${styles.avatarContainerSmall}` : ''}`}>\n {answer &&\n <Avatar\n imageCdnUrl={props.imageApi}\n initials={props.userInitials}\n imageUrl={props.userAvatar}\n extraClasses={`border border-white ${props.size === 'sm' ? styles.avatarSmall : ''}`}\n />\n }\n </span>\n </label>\n );\n })}\n </div>\n );\n}","import React from 'react';\n\nimport { TrueOrFalseInteractionAnswers } from 'libs/shared/components/interaction-answers/true-or-false/TrueOrFalseInteractionAnswers';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { ResponseComponentProps } from './ResponseComponentLookup';\n\nimport styles from './response-types.module.scss';\n\nexport function TrueOrFalseResponse(props: ResponseComponentProps): JSX.Element {\n function getAnswer(id: string): string {\n // eslint-disable-next-line\n const answer = props.answers.find(a => a.id == id);\n return answer?.text;\n }\n\n let className = 'justify-content-start';\n\n if (props.reportsStyling)\n className = 'justify-content-center';\n \n return (\n <div className='my-2'>\n <TrueOrFalseInteractionAnswers\n className={className}\n interaction={props.interaction}\n showFeedback={props.showFeedback}\n hideFeedbackIcons={!props.showAvatar}\n getSelectedAnswer={getAnswer}\n imageApi={props.imageCdnUrl}\n userInitials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.user?.name, props.user?.surname)\n }\n userAvatar={props.anonymisedUserName ? null : props.user?.avatar?.url}\n size='sm'\n unCheckedBackground={props.showFeedback ? '' : `${styles.uncheckedBackground} text-white`}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { IllustrationResponse } from 'libs/shared/components/interaction-response/response-types/IllustrationResponse';\nimport { Interaction, InteractionTypeId, StudentAnswer, User } from 'libs/shared/interfaces';\n\nimport { MissingWordResponse } from './MissingWordResponse';\nimport { MultipleChoiceResponse } from './MultipleChoiceResponse';\nimport { ShortAnswerResponse } from './ShortAnswerResponse';\nimport { TrueOrFalseResponse } from './TrueOrFalseResponse';\n\nexport interface ResponseComponentProps {\n interaction: Interaction;\n answers: StudentAnswer[];\n imageCdnUrl: string;\n user: User;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n reportsStyling?: boolean;\n}\nconst NoResponseRequired = () => <></>;\n\nexport const ResponseComponentLookup: {\n [typeId: number]: (props: ResponseComponentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: NoResponseRequired,\n [InteractionTypeId.Image]: NoResponseRequired,\n [InteractionTypeId.MissingWord]: MissingWordResponse,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceResponse,\n [InteractionTypeId.TrueOrFalse]: TrueOrFalseResponse,\n [InteractionTypeId.ShortAnswer]: ShortAnswerResponse,\n [InteractionTypeId.Illustration]: IllustrationResponse\n};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { NoResponse } from './response-types/NoResponse';\nimport { ResponseComponentLookup } from './response-types/ResponseComponentLookup';\nimport { InteractionResponseCorrectness } from './InteractionResponseCorrectness';\nimport { InteractionStudentDetailsHeader } from './InteractionStudentDetailsHeader';\nimport { MarkResponse } from './MarkResponse';\n\nimport styles from './interaction-response.module.scss';\n\n\ninterface InteractionResponseProps {\n interaction: Interaction;\n studentResults: StudentResults;\n imageCdnUrl: string;\n markInteraction: (answers: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n markedStatus?: InteractiveAnswerStatus;\n showStudentDetails?: boolean;\n className?: string;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n reportsStyling?: boolean;\n responseComponentClass?: string;\n}\n\nexport function InteractionResponse(props: InteractionResponseProps): JSX.Element {\n const ResponseComponent = ResponseComponentLookup[props.interaction.typeId];\n\n if (!ResponseComponent)\n return <></>;\n\n const result = getStudentResult(props.studentResults);\n\n const studentAttempt = getStudentAttempt(props.interaction.id, result);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n return (\n <div className='position-relative mt-2'>\n <div className={`rounded ${props.className ?? ''}`}>\n <div className='d-flex'>\n {!!props.showStudentDetails &&\n <div className='me-2'>\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.studentResults.user?.name, props.studentResults.user?.surname)\n }\n imageUrl={props.anonymisedUserName ? null : props.studentResults.user?.avatar?.url}\n />\n </div>\n </div>\n }\n <div className='flex-grow-1'>\n {!!props.showStudentDetails &&\n <InteractionStudentDetailsHeader\n studentResults={props.studentResults}\n correctness={correctness}\n anonymisedUserName={props.anonymisedUserName}\n />\n }\n <div className='d-flex justify-content-between'>\n <div className={`flex-grow-1 ${props.responseComponentClass ? props.responseComponentClass : ''}`}>\n {studentAttempt\n ? <ResponseComponent\n interaction={props.interaction}\n answers={studentAttempt.answers}\n imageCdnUrl={props.imageCdnUrl}\n user={props.studentResults.user}\n showFeedback={props.showFeedback}\n showAvatar={props.showAvatar}\n reportsStyling={props.reportsStyling}\n />\n : <NoResponse />\n }\n </div>\n {!props.showStudentDetails &&\n <InteractionResponseCorrectness correctness={correctness} />\n }\n </div>\n </div>\n </div>\n <MarkResponse\n studentAttempt={studentAttempt}\n correctness={correctness}\n markInteraction={props.markInteraction}\n markedStatus={props.markedStatus}\n />\n </div>\n </div>\n );\n}"],"names":["getPhrase","LanguageService","useMarkAnswers","interactiveId","interactiveMetadataId","onDone","markedAnswers","setMarkedAnswers","useState","dispatch","useDispatch","alerts","useAlerts","addMarkedAnswers","answers","status","a","m","getMarkedAnswerId","submitMarkedAnswers","key","completeCount","successCount","onSuccess","onAlways","onComplete","alertMessage","useErrorAlert","id","resultId","questionId","Flight.fetch","InteractiveResultsRequests","AnswerContainer","props","answer","getBgColour","InteractiveAnswerStatus","jsxs","jsx","SvgContainer","CheckSvg","CloseSvg","namespace","IllustrationResponse","ArrayHelper","Fragment","MissingWordResponse","MultipleChoiceResponse","ShortAnswerResponse","TrueOrFalseResponse","NoResponseRequired","ResponseItemComponentLookup","InteractionTypeId","InteractionResponseCorrectness","InteractionCorrectness","TickSvg","InteractionStudentDetailsHeader","UserHelper","CrossCircleFilledSvg","CrossCircleSvg","CheckCircleSvg","MarkResponse","CheckCircleOutlineSvg","NoResponse","InteractionResponseItem","ResponseItemComponent","result","getStudentResult","studentAttempt","getStudentAttempt","correctness","InteractiveCorrectnessHelper","styles","Avatar","_a","_b","_d","_c","_f","_e","className","PLACEHOLDER","items","match","val","item","idx","order","actionableItem","isCorrect","React","cachedScrollbarWidth","cachedDevicePixelRatio","canUseDOM","scrollbarWidth","body","box","width","getElementWindow","element","getElementDocument","SimpleBar","options","_this","elWindow","e","isWithinTrackXBounds","isWithinTrackYBounds","eventOffset","track","trackSize","scrollbar","contentSize","hostSize","dragPos","dragPerc","scrollPos","elDocument","throttle","debounce","memoize","dummyDiv","scrollbarDummyEl","dummyContainerChild","dummyContainerOffset","dummyContainerChildOffset","dummyContainerScrollOffsetAfterScroll","el","rect","_proto","_this2","child","_this3","resizeObserverStarted","resizeObserver","ResizeObserver","isHeightAuto","isWidthAuto","contentElOffsetWidth","contentWrapperElOffsetWidth","elOverflowX","elOverflowY","contentElScrollHeight","contentElScrollWidth","contentWrapperElOffsetHeight","offsetForXScrollbar","offsetForYScrollbar","axis","scrollbarSize","scrollbarRatio","scrollOffset","scrollPourcent","handleOffset","isWithinScrollbarBoundsX","_this4","scrollbarOffset","scrolled","t","dir","scrollSize","scrollTo","_this4$contentWrapper","_this4$contentWrapper2","_this5","bbox","query","matches","_defineProperty","obj","value","_extends","target","i","source","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","getOptions","acc","attribute","option","x","chr","_ref","ref","children","_ref$scrollableNodePr","scrollableNodeProps","otherProps","instance","scrollableNodeRef","useRef","elRef","contentNodeRef","rest","deprecatedOptions","SimpleBarJS","useEffect","PropTypes","alphabet","MultipleChoiceInteractionAnswers","previewAnswer","setPreviewAnswer","hasImages","scrollRef","small","index","imageUrl","hasText","onSelectAnswer","LeftPart","SvgContainerSize","accessibility","hasImageClass","showImagePreview","InPortal","DivButton","getAnswer","TrueOrFalseInteractionAnswers","ResponseComponentLookup","InteractionResponse","ResponseComponent"],"mappings":"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","x_google_ignoreList":[18,19]}
@@ -1,2 +0,0 @@
1
- import{j as e,h as n,bQ as a,T as s}from"./app-BqRx5tK8.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=COgPEQMR.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"COgPEQMR.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"}
@@ -1,2 +0,0 @@
1
- import{e as p,u as d,a as n,L as u,j as e,q as c}from"./app-BqRx5tK8.js";import{u as V}from"./DxUueJN7.chunk.js";import{P as l}from"./CqSaPgvV.chunk.js";import{P as v}from"./DK7va7iQ.chunk.js";import{V as f}from"./Bt3gUzzG.chunk.js";import{u as j}from"./CaiGBx50.chunk.js";import{u as w,b as x}from"./BlAGsOOw.chunk.js";import{u as h}from"./C6H2bU7H.chunk.js";import{C as b}from"./ClLzLF-_.chunk.js";import{V as g,a as C}from"./kt1K5Xlc.chunk.js";import"./sFV5nxD4.chunk.js";import"./CqyCLTzN.chunk.js";import"./BkcNwg7K.chunk.js";import"./DHqmPVfK.chunk.js";import"./DuNeLCIS.chunk.js";import"./DeY3SuCM.chunk.js";import"./BrLXFCMV.chunk.js";import"./DJLuyZJi.chunk.js";import"./DecstRlc.chunk.js";import"./D_Erj5Yn.chunk.js";import"./CwyVC768.chunk.js";import"./D9POXla0.chunk.js";import"./W5zJjbqu.chunk.js";import"./DMoPMSgN.chunk.js";import"./xkqdG021.chunk.js";import"./CdzMtbgC.chunk.js";import"./B_1LOG5E.chunk.js";import"./BUM8Ub4p.chunk.js";const P="reportsVideos.customerVideoViews",m=u.encloseNamespace(P),S=100;function ee(){var r,a;const i=p(),t=d(!!i&&f.topVideos(i,S));V(t),n({title:m("videos")}),h(m("videos")),j(t),w(x());const o=t.hasCompleted,s=!!((a=(r=t.data)==null?void 0:r.data)!=null&&a.length);return e.jsxs("div",{className:"pb-3",children:[e.jsx(b,{}),!o&&e.jsx(l,{variant:"video-views",children:e.jsx(v,{variant:"video-views"})}),o&&s&&e.jsx(g,{videos:t.data.data,getVideoAppLink:c}),o&&!s&&e.jsx(C,{})]})}export{ee as CustomerVideoViewsView};
2
- //# sourceMappingURL=CRWOsqvB.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CRWOsqvB.chunk.js","sources":["../../src/apps/videos/views/customer-video-views/CustomerVideoViewsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\n\nimport { PartialTable } from 'shared/components/partial-loading/PartialTable';\nimport { PartialTableContent } from 'shared/components/partial-loading/PartialTableContent';\nimport { VideoViewRequests } from 'shared/flight-requests/VideoViewRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\nimport { useSetHeaderActions } from 'shared/hooks/UseSetHeaderActions';\nimport { useSetHeaderTitle } from 'shared/hooks/UseSetHeaderTitle';\nimport { TopVideosResponse } from 'shared/interfaces';\nimport { getVideoHeaderActions } from 'shared/utils/HeaderActionUtils';\nimport { getVideoAppLink } from 'shared/utils/ReportsAppLinkUtils';\n\nimport { CustomerVideosNav } from 'apps/videos/components/customer-videos-nav/CustomerVideosNav';\nimport { VideoViewsTableEmptyState } from 'apps/videos/components/video-views-table/video-views-table-empty-state/VideoViewsTableEmptyState';\nimport { VideoViewsTable } from 'apps/videos/components/video-views-table/VideoViewsTable';\n\nconst namespace = 'reportsVideos.customerVideoViews';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 100;\n\nexport function CustomerVideoViewsView(): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const videos = Flight.useBasicFetch<TopVideosResponse>(!!requestFilter &&\n VideoViewRequests.topVideos(requestFilter, LIMIT));\n\n useHandleObjectError(videos);\n\n useSetPageMetadata({ title: getPhrase('videos') });\n useSetHeaderTitle(getPhrase('videos'));\n useSetAudienceFilterCount(videos);\n useSetHeaderActions(getVideoHeaderActions());\n\n const hasLoaded = videos.hasCompleted;\n const hasVideoViews = !!videos.data?.data?.length;\n\n return (\n <div className='pb-3'>\n <CustomerVideosNav />\n {!hasLoaded &&\n <PartialTable variant='video-views'>\n <PartialTableContent variant='video-views' />\n </PartialTable>\n }\n {hasLoaded && hasVideoViews &&\n <VideoViewsTable videos={videos.data.data} getVideoAppLink={getVideoAppLink} />\n }\n {hasLoaded && !hasVideoViews && <VideoViewsTableEmptyState />}\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","LIMIT","CustomerVideoViewsView","requestFilter","useGetRequestFilter","videos","Flight.useBasicFetch","VideoViewRequests","useHandleObjectError","useSetPageMetadata","useSetHeaderTitle","useSetAudienceFilterCount","useSetHeaderActions","getVideoHeaderActions","hasLoaded","hasVideoViews","_b","_a","jsxs","jsx","CustomerVideosNav","PartialTable","PartialTableContent","VideoViewsTable","getVideoAppLink","VideoViewsTableEmptyState"],"mappings":"u7BAuBA,MAAMA,EAAY,mCACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAEtDG,EAAQ,IAEP,SAASC,IAAsC,SACpD,MAAMC,EAAgBC,EAAA,EAEhBC,EAASC,EAAwC,CAAC,CAACH,GACvDI,EAAkB,UAAUJ,EAAeF,CAAK,CAAC,EAEnDO,EAAqBH,CAAM,EAE3BI,EAAmB,CAAE,MAAOV,EAAU,QAAQ,EAAG,EACjDW,EAAkBX,EAAU,QAAQ,CAAC,EACrCY,EAA0BN,CAAM,EAChCO,EAAoBC,GAAuB,EAE3C,MAAMC,EAAYT,EAAO,aACnBU,EAAgB,CAAC,GAACC,GAAAC,EAAAZ,EAAO,OAAP,YAAAY,EAAa,OAAb,MAAAD,EAAmB,QAE3C,OACEE,EAAAA,KAAC,MAAA,CAAI,UAAU,OACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAkB,EAClB,CAACN,GACAK,EAAAA,IAACE,EAAA,CAAa,QAAQ,cACpB,SAAAF,EAAAA,IAACG,EAAA,CAAoB,QAAQ,aAAA,CAAc,CAAA,CAC7C,EAEDR,GAAaC,GACZI,EAAAA,IAACI,EAAA,CAAgB,OAAQlB,EAAO,KAAK,KAAM,gBAAAmB,EAAkC,EAE9EV,GAAa,CAACC,GAAiBI,EAAAA,IAACM,EAAA,CAAA,CAA0B,CAAA,EAC7D,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{b as m,P as g,e as E,u as n,U as V,c as S,V as U,r as h}from"./app-BqRx5tK8.js";import{V as p}from"./BE7zUNFh.chunk.js";function l(i){const{hasPermissions:o}=m(),r=o(g.ViewCustomerAnalytics),s=E(),t=n(V.currentUser()),u=r&&!!t.data&&!!s,e=n(u&&p.individualEngagement(i,{start:s==null?void 0:s.start,end:s==null?void 0:s.end},t.data.id)),[,c]=S(U.AUDIENCE_FILTER_SUGGESTIONS);h.useEffect(()=>{var a;e.data&&c("users",(a=e.data)==null?void 0:a.data.map(d=>d.userId))},[e.isFetching])}export{l as u};
2
- //# sourceMappingURL=CU-I5G45.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CU-I5G45.chunk.js","sources":["../../src/shared/hooks/UseSetEngagementAudienceSuggestions.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AudienceFilterSuggestions } from 'libs/shared/apps/analytics/interfaces/AudienceFilterSuggestions';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests as SharedVideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { IndividualEngagementResponse } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\n\n/**\n * This hook sets engagement data for all users within the set date range (ignoring the audience filter)\n * and sets any users with results as audience suggestions.\n * \n * Note: this is only for admins as staff have a different audience filter.\n */\nexport function useSetEngagementAudienceSuggestions(videoId: string): void {\n const { hasPermissions } = usePermissions();\n const canViewCustomerAnalytics = hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const filter = useGetRequestFilter();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const shouldFetch = canViewCustomerAnalytics && !!currentUser.data && !!filter;\n\n const engagement = Flight.useBasicFetch<IndividualEngagementResponse>(shouldFetch &&\n SharedVideoViewRequests.individualEngagement(\n videoId,\n { start: filter?.start, end: filter?.end },\n currentUser.data.id\n ));\n\n const [ , setSuggestions ] = useViewModel<AudienceFilterSuggestions>(ViewModelKeys.AUDIENCE_FILTER_SUGGESTIONS);\n\n useEffect(() => {\n if (!engagement.data)\n return;\n\n setSuggestions('users', engagement.data?.data.map(e => e.userId));\n }, [engagement.isFetching]);\n}"],"names":["useSetEngagementAudienceSuggestions","videoId","hasPermissions","usePermissions","canViewCustomerAnalytics","PermissionName","filter","useGetRequestFilter","currentUser","Flight.useBasicFetch","UserRequests","shouldFetch","engagement","SharedVideoViewRequests","setSuggestions","useViewModel","ViewModelKeys","useEffect","_a","e"],"mappings":"+HAsBO,SAASA,EAAoCC,EAAuB,CACzE,KAAM,CAAE,eAAAC,CAAA,EAAmBC,EAAA,EACrBC,EAA2BF,EAAeG,EAAe,qBAAqB,EAE9EC,EAASC,EAAA,EACTC,EAAcC,EAAkCC,EAAa,aAAa,EAE1EC,EAAcP,GAA4B,CAAC,CAACI,EAAY,MAAQ,CAAC,CAACF,EAElEM,EAAaH,EAAmDE,GACpEE,EAAwB,qBACtBZ,EACA,CAAE,MAAOK,GAAA,YAAAA,EAAQ,MAAO,IAAKA,GAAA,YAAAA,EAAQ,GAAA,EACrCE,EAAY,KAAK,EAAA,CAClB,EAEG,CAAA,CAAIM,CAAe,EAAIC,EAAwCC,EAAc,2BAA2B,EAE9GC,EAAAA,UAAU,IAAM,OACTL,EAAW,MAGhBE,EAAe,SAASI,EAAAN,EAAW,OAAX,YAAAM,EAAiB,KAAK,IAAIC,GAAKA,EAAE,OAAO,CAClE,EAAG,CAACP,EAAW,UAAU,CAAC,CAC5B"}
@@ -1,2 +0,0 @@
1
- import{j as o,v as _,p as S,L as j,D as d}from"./app-BqRx5tK8.js";import{a as v,H as w,b as T}from"./Dp_vnjo0.chunk.js";import{m as b,u as x}from"./BMba67Uf.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=CV5ioe9U.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CV5ioe9U.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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"}
@@ -1,2 +0,0 @@
1
- var a={exports:{}},p;function o(){return p||(p=1,(function(r){function e(){return r.exports=e=Object.assign?Object.assign.bind():function(x){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)({}).hasOwnProperty.call(s,n)&&(x[n]=s[n])}return x},r.exports.__esModule=!0,r.exports.default=r.exports,e.apply(null,arguments)}r.exports=e,r.exports.__esModule=!0,r.exports.default=r.exports})(a)),a.exports}export{o as r};
2
- //# sourceMappingURL=CW7x8M-z.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CW7x8M-z.chunk.js","sources":["../../../../../node_modules/@babel/runtime/helpers/extends.js"],"sourcesContent":["function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_extends","module","n","e","t","r"],"mappings":"8DAAA,SAASA,GAAW,CAClB,OAAOC,EAAA,QAAiBD,EAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAUE,EAAG,CACrF,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAI,UAAUD,CAAC,EACnB,QAASE,KAAKD,GAAI,CAAA,GAAI,eAAe,KAAKA,EAAGC,CAAC,IAAMH,EAAEG,CAAC,EAAID,EAAEC,CAAC,EACpE,CACI,OAAOH,CACX,EAAKD,qBAA4B,GAAMA,EAAO,QAAQ,QAAaA,EAAO,QAASD,EAAS,MAAM,KAAM,SAAS,CACjH,CACAC,EAAA,QAAiBD,EAAUC,EAAA,QAAA,WAA4B,GAAMA,EAAO,QAAQ,QAAaA,EAAO","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- function e(n){const t=[];return Object.keys(n).forEach(a=>{const r=n[a];r&&t.push(`${a}:${Array.isArray(r)?r.join(","):r}`)}),t.join(":")}export{e as g};
2
- //# sourceMappingURL=CX5q-0jT.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CX5q-0jT.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/utils/FilterParamUtils.ts"],"sourcesContent":["import { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\n\nexport function getFilterParamsKey(filters: FilterQueryParams): string {\n const keys: string[] = [];\n\n Object.keys(filters).forEach((key: keyof FilterQueryParams) => {\n const val = filters[key];\n\n if (!val)\n return;\n\n keys.push(`${key}:${Array.isArray(val) ? val.join(',') : val}`);\n });\n\n return keys.join(':');\n}"],"names":["getFilterParamsKey","filters","keys","key","val"],"mappings":"AAEO,SAASA,EAAmBC,EAAoC,CACrE,MAAMC,EAAiB,CAAA,EAEvB,cAAO,KAAKD,CAAO,EAAE,QAASE,GAAiC,CAC7D,MAAMC,EAAMH,EAAQE,CAAG,EAElBC,GAGLF,EAAK,KAAK,GAAGC,CAAG,IAAI,MAAM,QAAQC,CAAG,EAAIA,EAAI,KAAK,GAAG,EAAIA,CAAG,EAAE,CAChE,CAAC,EAEMF,EAAK,KAAK,GAAG,CACtB"}
@@ -1,2 +0,0 @@
1
- import{e as c,u as i,U as d,j as s,L as n}from"./app-BqRx5tK8.js";import{V as o}from"./BE7zUNFh.chunk.js";import{u as m}from"./DxUueJN7.chunk.js";import{U as h,P as v}from"./DAocQXXC.chunk.js";import{u as l}from"./CaiGBx50.chunk.js";const w="shared.viewCountBarChartCard",C=n.encloseNamespace(w);function x(e){const a=c(),r=i(!!e.useSharerId&&d.currentUser()),t=i(!!a&&(e.useSharerId?!!r.data&&o.views(a,e.objectId,r.data.id):o.views(a,e.objectId)));return m(t),l(t),s.jsx("div",{className:`bg-white rounded p-3 ${e.className??""}`,children:t.data?s.jsx(h,{events:t.data.data,getEventDate:u=>u.groupedDateWatched,title:C("videoViews")}):s.jsx(v,{})})}export{x as V};
2
- //# sourceMappingURL=CXK1uNgx.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CXK1uNgx.chunk.js","sources":["../../src/shared/views/overview-cards/view-count-bar-chart-card/ViewCountBarChartCardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { VideoViewEvent, VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserRequests as SharedUserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PartialUserActivityBarChart } from 'shared/components/user-activity-bar-chart/PartialUserActivityBarChart';\nimport { UserActivityBarChart } from 'shared/components/user-activity-bar-chart/UserActivityBarChart';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\n\nconst namespace = 'shared.viewCountBarChartCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ViewCountBarChartCardViewProps {\n /**\n * className is required as a height must be specified.\n */\n className: string;\n objectId?: string;\n useSharerId?: boolean;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ViewCountBarChartCardView(props: ViewCountBarChartCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(!!props.useSharerId && SharedUserRequests.currentUser());\n\n const views = Flight.useBasicFetch<VideoViewEventResponse>(!!requestFilter && (props.useSharerId\n ? !!currentUser.data && VideoViewRequests.views(requestFilter, props.objectId, currentUser.data.id)\n : VideoViewRequests.views(requestFilter, props.objectId)\n ));\n\n useHandleObjectError(views);\n\n useSetAudienceFilterCount(views);\n\n return (\n <div className={`bg-white rounded p-3 ${props.className ?? ''}`}>\n {views.data\n ? <UserActivityBarChart\n events={views.data.data}\n getEventDate={(ev: VideoViewEvent) => ev.groupedDateWatched}\n title={getPhrase('videoViews')}\n />\n : <PartialUserActivityBarChart />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ViewCountBarChartCardView","props","requestFilter","useGetRequestFilter","currentUser","Flight.useBasicFetch","SharedUserRequests","views","VideoViewRequests","useHandleObjectError","useSetAudienceFilterCount","jsx","UserActivityBarChart","ev","PartialUserActivityBarChart"],"mappings":"yOAgBA,MAAMA,EAAY,+BACZC,EAAYC,EAAgB,iBAAiBF,CAAS,EAYrD,SAASG,EAA0BC,EAAoD,CAC5F,MAAMC,EAAgBC,EAAA,EAEhBC,EAAcC,EAAkC,CAAC,CAACJ,EAAM,aAAeK,EAAmB,aAAa,EAEvGC,EAAQF,EAA6C,CAAC,CAACH,IAAkBD,EAAM,YACjF,CAAC,CAACG,EAAY,MAAQI,EAAkB,MAAMN,EAAeD,EAAM,SAAUG,EAAY,KAAK,EAAE,EAChGI,EAAkB,MAAMN,EAAeD,EAAM,QAAQ,EACxD,EAED,OAAAQ,EAAqBF,CAAK,EAE1BG,EAA0BH,CAAK,EAG7BI,EAAAA,IAAC,OAAI,UAAW,wBAAwBV,EAAM,WAAa,EAAE,GAC1D,SAAAM,EAAM,KACHI,EAAAA,IAACC,EAAA,CACD,OAAQL,EAAM,KAAK,KACnB,aAAeM,GAAuBA,EAAG,mBACzC,MAAOf,EAAU,YAAY,CAAA,CAAA,EAE7Ba,MAACG,EAAA,CAAA,CAA4B,EAEnC,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{cx as xt,aE as et,cy as jt,cz as Ct,cA as Rt,cB as St,cC as Mt,cD as It,cE as At,cF as qt,cG as Dt,cH as zt,cI as Lt,cJ as Ft,cK as Pt}from"./app-BqRx5tK8.js";xt();var at,dt;function Ht(){if(dt)return at;dt=1;var t=!!(typeof window<"u"&&window.document&&window.document.createElement);return at=t,at}var Wt=Ht();const he=et(Wt);jt();Ct();Rt();St();Mt();It();At();qt();var st,vt;function Gt(){if(vt)return st;vt=1;var t="Expected a function",e=NaN,n="[object Symbol]",o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,v=/^0b[01]+$/i,b=/^0o[0-7]+$/i,T=parseInt,O=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,L=typeof self=="object"&&self&&self.Object===Object&&self,F=O||L||Function("return this")(),K=Object.prototype,X=K.toString,$=Math.max,W=Math.min,R=function(){return F.Date.now()};function k(a,f,p){var m,y,x,_,d,w,S=0,M=!1,C=!1,q=!0;if(typeof a!="function")throw new TypeError(t);f=c(f)||0,P(p)&&(M=!!p.leading,C="maxWait"in p,x=C?$(c(p.maxWait)||0,f):x,q="trailing"in p?!!p.trailing:q);function j(h){var E=m,I=y;return m=y=void 0,S=h,_=a.apply(I,E),_}function Y(h){return S=h,d=setTimeout(z,f),M?j(h):_}function B(h){var E=h-w,I=h-S,Q=f-E;return C?W(Q,x-I):Q}function D(h){var E=h-w,I=h-S;return w===void 0||E>=f||E<0||C&&I>=x}function z(){var h=R();if(D(h))return U(h);d=setTimeout(z,B(h))}function U(h){return d=void 0,q&&m?j(h):(m=y=void 0,_)}function H(){d!==void 0&&clearTimeout(d),S=0,m=w=y=d=void 0}function G(){return d===void 0?_:U(R())}function l(){var h=R(),E=D(h);if(m=arguments,y=this,w=h,E){if(d===void 0)return Y(w);if(C)return d=setTimeout(z,f),j(w)}return d===void 0&&(d=setTimeout(z,f)),_}return l.cancel=H,l.flush=G,l}function A(a,f,p){var m=!0,y=!0;if(typeof a!="function")throw new TypeError(t);return P(p)&&(m="leading"in p?!!p.leading:m,y="trailing"in p?!!p.trailing:y),k(a,f,{leading:m,maxWait:f,trailing:y})}function P(a){var f=typeof a;return!!a&&(f=="object"||f=="function")}function J(a){return!!a&&typeof a=="object"}function N(a){return typeof a=="symbol"||J(a)&&X.call(a)==n}function c(a){if(typeof a=="number")return a;if(N(a))return e;if(P(a)){var f=typeof a.valueOf=="function"?a.valueOf():a;a=P(f)?f+"":f}if(typeof a!="string")return a===0?a:+a;a=a.replace(o,"");var p=v.test(a);return p||b.test(a)?T(a.slice(2),p?2:8):s.test(a)?e:+a}return st=A,st}var $t=Gt();const le=et($t);var ct,pt;function kt(){if(pt)return ct;pt=1;var t="Expected a function",e=NaN,n="[object Symbol]",o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,v=/^0b[01]+$/i,b=/^0o[0-7]+$/i,T=parseInt,O=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,L=typeof self=="object"&&self&&self.Object===Object&&self,F=O||L||Function("return this")(),K=Object.prototype,X=K.toString,$=Math.max,W=Math.min,R=function(){return F.Date.now()};function k(c,a,f){var p,m,y,x,_,d,w=0,S=!1,M=!1,C=!0;if(typeof c!="function")throw new TypeError(t);a=N(a)||0,A(f)&&(S=!!f.leading,M="maxWait"in f,y=M?$(N(f.maxWait)||0,a):y,C="trailing"in f?!!f.trailing:C);function q(l){var h=p,E=m;return p=m=void 0,w=l,x=c.apply(E,h),x}function j(l){return w=l,_=setTimeout(D,a),S?q(l):x}function Y(l){var h=l-d,E=l-w,I=a-h;return M?W(I,y-E):I}function B(l){var h=l-d,E=l-w;return d===void 0||h>=a||h<0||M&&E>=y}function D(){var l=R();if(B(l))return z(l);_=setTimeout(D,Y(l))}function z(l){return _=void 0,C&&p?q(l):(p=m=void 0,x)}function U(){_!==void 0&&clearTimeout(_),w=0,p=d=m=_=void 0}function H(){return _===void 0?x:z(R())}function G(){var l=R(),h=B(l);if(p=arguments,m=this,d=l,h){if(_===void 0)return j(d);if(M)return _=setTimeout(D,a),q(d)}return _===void 0&&(_=setTimeout(D,a)),x}return G.cancel=U,G.flush=H,G}function A(c){var a=typeof c;return!!c&&(a=="object"||a=="function")}function P(c){return!!c&&typeof c=="object"}function J(c){return typeof c=="symbol"||P(c)&&X.call(c)==n}function N(c){if(typeof c=="number")return c;if(J(c))return e;if(A(c)){var a=typeof c.valueOf=="function"?c.valueOf():c;c=A(a)?a+"":a}if(typeof c!="string")return c===0?c:+c;c=c.replace(o,"");var f=v.test(c);return f||b.test(c)?T(c.slice(2),f?2:8):s.test(c)?e:+c}return ct=k,ct}var Nt=kt();const de=et(Nt);var ut,_t;function Bt(){if(_t)return ut;_t=1;var t="Expected a function",e="__lodash_hash_undefined__",n="[object Function]",o="[object GeneratorFunction]",s=/[\\^$.*+?()[\]{}|]/g,v=/^\[object .+?Constructor\]$/,b=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,T=typeof self=="object"&&self&&self.Object===Object&&self,O=b||T||Function("return this")();function L(r,i){return r==null?void 0:r[i]}function F(r){var i=!1;if(r!=null&&typeof r.toString!="function")try{i=!!(r+"")}catch{}return i}var K=Array.prototype,X=Function.prototype,$=Object.prototype,W=O["__core-js_shared__"],R=(function(){var r=/[^.]+$/.exec(W&&W.keys&&W.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})(),k=X.toString,A=$.hasOwnProperty,P=$.toString,J=RegExp("^"+k.call(A).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),N=K.splice,c=h(O,"Map"),a=h(Object,"create");function f(r){var i=-1,u=r?r.length:0;for(this.clear();++i<u;){var g=r[i];this.set(g[0],g[1])}}function p(){this.__data__=a?a(null):{}}function m(r){return this.has(r)&&delete this.__data__[r]}function y(r){var i=this.__data__;if(a){var u=i[r];return u===e?void 0:u}return A.call(i,r)?i[r]:void 0}function x(r){var i=this.__data__;return a?i[r]!==void 0:A.call(i,r)}function _(r,i){var u=this.__data__;return u[r]=a&&i===void 0?e:i,this}f.prototype.clear=p,f.prototype.delete=m,f.prototype.get=y,f.prototype.has=x,f.prototype.set=_;function d(r){var i=-1,u=r?r.length:0;for(this.clear();++i<u;){var g=r[i];this.set(g[0],g[1])}}function w(){this.__data__=[]}function S(r){var i=this.__data__,u=H(i,r);if(u<0)return!1;var g=i.length-1;return u==g?i.pop():N.call(i,u,1),!0}function M(r){var i=this.__data__,u=H(i,r);return u<0?void 0:i[u][1]}function C(r){return H(this.__data__,r)>-1}function q(r,i){var u=this.__data__,g=H(u,r);return g<0?u.push([r,i]):u[g][1]=i,this}d.prototype.clear=w,d.prototype.delete=S,d.prototype.get=M,d.prototype.has=C,d.prototype.set=q;function j(r){var i=-1,u=r?r.length:0;for(this.clear();++i<u;){var g=r[i];this.set(g[0],g[1])}}function Y(){this.__data__={hash:new f,map:new(c||d),string:new f}}function B(r){return l(this,r).delete(r)}function D(r){return l(this,r).get(r)}function z(r){return l(this,r).has(r)}function U(r,i){return l(this,r).set(r,i),this}j.prototype.clear=Y,j.prototype.delete=B,j.prototype.get=D,j.prototype.has=z,j.prototype.set=U;function H(r,i){for(var u=r.length;u--;)if(wt(r[u][0],i))return u;return-1}function G(r){if(!ht(r)||I(r))return!1;var i=Tt(r)||F(r)?J:v;return i.test(Q(r))}function l(r,i){var u=r.__data__;return E(i)?u[typeof i=="string"?"string":"hash"]:u.map}function h(r,i){var u=L(r,i);return G(u)?u:void 0}function E(r){var i=typeof r;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?r!=="__proto__":r===null}function I(r){return!!R&&R in r}function Q(r){if(r!=null){try{return k.call(r)}catch{}try{return r+""}catch{}}return""}function nt(r,i){if(typeof r!="function"||i&&typeof i!="function")throw new TypeError(t);var u=function(){var g=arguments,it=i?i.apply(this,g):g[0],ot=u.cache;if(ot.has(it))return ot.get(it);var lt=r.apply(this,g);return u.cache=ot.set(it,lt),lt};return u.cache=new(nt.Cache||j),u}nt.Cache=j;function wt(r,i){return r===i||r!==r&&i!==i}function Tt(r){var i=ht(r)?P.call(r):"";return i==n||i==o}function ht(r){var i=typeof r;return!!r&&(i=="object"||i=="function")}return ut=nt,ut}var Ut=Bt();const ve=et(Ut);var mt=(function(){if(typeof Map<"u")return Map;function t(e,n){var o=-1;return e.some(function(s,v){return s[0]===n?(o=v,!0):!1}),o}return(function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(n){var o=t(this.__entries__,n),s=this.__entries__[o];return s&&s[1]},e.prototype.set=function(n,o){var s=t(this.__entries__,n);~s?this.__entries__[s][1]=o:this.__entries__.push([n,o])},e.prototype.delete=function(n){var o=this.__entries__,s=t(o,n);~s&&o.splice(s,1)},e.prototype.has=function(n){return!!~t(this.__entries__,n)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(n,o){o===void 0&&(o=null);for(var s=0,v=this.__entries__;s<v.length;s++){var b=v[s];n.call(o,b[1],b[0])}},e})()})(),ft=typeof window<"u"&&typeof document<"u"&&window.document===document,Z=(function(){return typeof globalThis<"u"&&globalThis.Math===Math?globalThis:typeof self<"u"&&self.Math===Math?self:typeof window<"u"&&window.Math===Math?window:Function("return this")()})(),Vt=(function(){return typeof requestAnimationFrame=="function"?requestAnimationFrame.bind(Z):function(t){return setTimeout(function(){return t(Date.now())},1e3/60)}})(),Kt=2;function Xt(t,e){var n=!1,o=!1,s=0;function v(){n&&(n=!1,t()),o&&T()}function b(){Vt(v)}function T(){var O=Date.now();if(n){if(O-s<Kt)return;o=!0}else n=!0,o=!1,setTimeout(b,e);s=O}return T}var Jt=20,Yt=["top","right","bottom","left","width","height","size","weight"],Qt=typeof MutationObserver<"u",Zt=(function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=Xt(this.refresh.bind(this),Jt)}return t.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},t.prototype.removeObserver=function(e){var n=this.observers_,o=n.indexOf(e);~o&&n.splice(o,1),!n.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){var e=this.updateObservers_();e&&this.refresh()},t.prototype.updateObservers_=function(){var e=this.observers_.filter(function(n){return n.gatherActive(),n.hasActive()});return e.forEach(function(n){return n.broadcastActive()}),e.length>0},t.prototype.connect_=function(){!ft||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Qt?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){!ft||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(e){var n=e.propertyName,o=n===void 0?"":n,s=Yt.some(function(v){return!!~o.indexOf(v)});s&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t})(),gt=(function(t,e){for(var n=0,o=Object.keys(e);n<o.length;n++){var s=o[n];Object.defineProperty(t,s,{value:e[s],enumerable:!1,writable:!1,configurable:!0})}return t}),V=(function(t){var e=t&&t.ownerDocument&&t.ownerDocument.defaultView;return e||Z}),yt=rt(0,0,0,0);function tt(t){return parseFloat(t)||0}function bt(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return e.reduce(function(o,s){var v=t["border-"+s+"-width"];return o+tt(v)},0)}function te(t){for(var e=["top","right","bottom","left"],n={},o=0,s=e;o<s.length;o++){var v=s[o],b=t["padding-"+v];n[v]=tt(b)}return n}function ee(t){var e=t.getBBox();return rt(0,0,e.width,e.height)}function re(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return yt;var o=V(t).getComputedStyle(t),s=te(o),v=s.left+s.right,b=s.top+s.bottom,T=tt(o.width),O=tt(o.height);if(o.boxSizing==="border-box"&&(Math.round(T+v)!==e&&(T-=bt(o,"left","right")+v),Math.round(O+b)!==n&&(O-=bt(o,"top","bottom")+b)),!ie(t)){var L=Math.round(T+v)-e,F=Math.round(O+b)-n;Math.abs(L)!==1&&(T-=L),Math.abs(F)!==1&&(O-=F)}return rt(s.left,s.top,T,O)}var ne=(function(){return typeof SVGGraphicsElement<"u"?function(t){return t instanceof V(t).SVGGraphicsElement}:function(t){return t instanceof V(t).SVGElement&&typeof t.getBBox=="function"}})();function ie(t){return t===V(t).document.documentElement}function oe(t){return ft?ne(t)?ee(t):re(t):yt}function ae(t){var e=t.x,n=t.y,o=t.width,s=t.height,v=typeof DOMRectReadOnly<"u"?DOMRectReadOnly:Object,b=Object.create(v.prototype);return gt(b,{x:e,y:n,width:o,height:s,top:n,right:e+o,bottom:s+n,left:e}),b}function rt(t,e,n,o){return{x:t,y:e,width:n,height:o}}var se=(function(){function t(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=rt(0,0,0,0),this.target=e}return t.prototype.isActive=function(){var e=oe(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},t})(),ce=(function(){function t(e,n){var o=ae(n);gt(this,{target:e,contentRect:o})}return t})(),ue=(function(){function t(e,n,o){if(this.activeObservations_=[],this.observations_=new mt,typeof e!="function")throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=n,this.callbackCtx_=o}return t.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof V(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)||(n.set(e,new se(e)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof V(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)&&(n.delete(e),n.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&e.activeObservations_.push(n)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,n=this.activeObservations_.map(function(o){return new ce(o.target,o.broadcastRect())});this.callback_.call(e,n,e),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t})(),Et=typeof WeakMap<"u"?new WeakMap:new mt,Ot=(function(){function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Zt.getInstance(),o=new ue(e,n,this);Et.set(this,o)}return t})();["observe","unobserve","disconnect"].forEach(function(t){Ot.prototype[t]=function(){var e;return(e=Et.get(this))[t].apply(e,arguments)}});var pe=(function(){return typeof Z.ResizeObserver<"u"?Z.ResizeObserver:Ot})();Dt();zt();Lt();Ft();Pt();export{he as c,de as d,pe as i,ve as m,le as t};
2
- //# sourceMappingURL=CXhesQTd.chunk.js.map