@clickview/reports 0.71.0 → 0.71.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/bundles.json +2 -3
  61. package/dist/css/1VpVng8x.chunk.css +1 -0
  62. package/dist/css/BDijM1kt.chunk.css +1 -0
  63. package/dist/css/BMPwvOki.chunk.css +1 -0
  64. package/dist/css/BNt45Kgy.chunk.css +1 -0
  65. package/dist/css/BSGhUWzl.chunk.css +1 -0
  66. package/dist/css/BZ3_uhDP.chunk.css +1 -0
  67. package/dist/css/BaadNO4A.chunk.css +1 -0
  68. package/dist/css/BdUNjJqp.chunk.css +1 -0
  69. package/dist/css/BdeI0FAV.chunk.css +1 -0
  70. package/dist/css/BxcMGr8Y.chunk.css +1 -0
  71. package/dist/css/ByuL_xKJ.chunk.css +1 -0
  72. package/dist/css/C-A0Pj_7.chunk.css +1 -0
  73. package/dist/css/C4jMfPWU.chunk.css +1 -0
  74. package/dist/css/C7XoyEPr.chunk.css +1 -0
  75. package/dist/css/C8sxda3R.chunk.css +1 -0
  76. package/dist/css/CD1qrI1T.chunk.css +1 -0
  77. package/dist/css/CFO--d_R.chunk.css +1 -0
  78. package/dist/css/CX9nw8t8.chunk.css +1 -0
  79. package/dist/css/C_qGRdC2.chunk.css +1 -0
  80. package/dist/css/CdC6ugQR.chunk.css +1 -0
  81. package/dist/css/ClRRGXPb.chunk.css +1 -0
  82. package/dist/css/Cr1bwtZG.chunk.css +1 -0
  83. package/dist/css/DBlPz5Fw.chunk.css +1 -0
  84. package/dist/css/DDnpOnVB.chunk.css +1 -0
  85. package/dist/css/DFZQCLLg.chunk.css +1 -0
  86. package/dist/css/DJwAbl6l.chunk.css +1 -0
  87. package/dist/css/DWjg_0sz.chunk.css +1 -0
  88. package/dist/css/DYV9jjVn.chunk.css +1 -0
  89. package/dist/css/Dgeh4AqU.chunk.css +9 -0
  90. package/dist/css/DlOtoSz0.chunk.css +1 -0
  91. package/dist/css/DlxOgKUu.chunk.css +1 -0
  92. package/dist/css/Dp3arkyy.chunk.css +1 -0
  93. package/dist/css/DwgaDUzz.chunk.css +1 -0
  94. package/dist/css/FPQ_LmXH.chunk.css +1 -0
  95. package/dist/css/H09rC9gw.chunk.css +1 -0
  96. package/dist/css/LAFr2dPT.chunk.css +1 -0
  97. package/dist/css/Pg1TlYG6.chunk.css +1 -0
  98. package/dist/css/PsQn3-kb.chunk.css +1 -0
  99. package/dist/css/alkEuPrr.chunk.css +1 -0
  100. package/dist/css/k4DgCj_g.chunk.css +1 -0
  101. package/dist/en.json +1 -0
  102. package/dist/scripts/5O9SdVRZ.chunk.js +2 -0
  103. package/dist/scripts/5O9SdVRZ.chunk.js.map +1 -0
  104. package/dist/scripts/71lqp_27.chunk.js +2 -0
  105. package/dist/scripts/71lqp_27.chunk.js.map +1 -0
  106. package/dist/scripts/B29cILrj.chunk.js +2 -0
  107. package/dist/scripts/B29cILrj.chunk.js.map +1 -0
  108. package/dist/scripts/B8h79IbE.chunk.js +10 -0
  109. package/dist/scripts/B8h79IbE.chunk.js.map +1 -0
  110. package/dist/scripts/BAY69EEW.chunk.js +4 -0
  111. package/dist/scripts/BAY69EEW.chunk.js.map +1 -0
  112. package/dist/scripts/BAb7U5e_.chunk.js +2 -0
  113. package/dist/scripts/BAb7U5e_.chunk.js.map +1 -0
  114. package/dist/scripts/BENXQfLb.chunk.js +2 -0
  115. package/dist/scripts/BENXQfLb.chunk.js.map +1 -0
  116. package/dist/scripts/BF6robfP.chunk.js +2 -0
  117. package/dist/scripts/BF6robfP.chunk.js.map +1 -0
  118. package/dist/scripts/BHgJhw0m.chunk.js +2 -0
  119. package/dist/scripts/BHgJhw0m.chunk.js.map +1 -0
  120. package/dist/scripts/BJDrvt1V.chunk.js +3 -0
  121. package/dist/scripts/BJDrvt1V.chunk.js.map +1 -0
  122. package/dist/scripts/BKardFg7.chunk.js +2 -0
  123. package/dist/scripts/BKardFg7.chunk.js.map +1 -0
  124. package/dist/scripts/BNPb8jz9.chunk.js +2 -0
  125. package/dist/scripts/BNPb8jz9.chunk.js.map +1 -0
  126. package/dist/scripts/BPjdUUKC.chunk.js +2 -0
  127. package/dist/scripts/BPjdUUKC.chunk.js.map +1 -0
  128. package/dist/scripts/BQIPBrM1.chunk.js +2 -0
  129. package/dist/scripts/BQIPBrM1.chunk.js.map +1 -0
  130. package/dist/scripts/BSOiWR0F.chunk.js +6 -0
  131. package/dist/scripts/BSOiWR0F.chunk.js.map +1 -0
  132. package/dist/scripts/BUXFRkJU.chunk.js +2 -0
  133. package/dist/scripts/BUXFRkJU.chunk.js.map +1 -0
  134. package/dist/scripts/BVwIslOW.chunk.js +2 -0
  135. package/dist/scripts/BVwIslOW.chunk.js.map +1 -0
  136. package/dist/scripts/BWQPt-2Q.chunk.js +2 -0
  137. package/dist/scripts/BWQPt-2Q.chunk.js.map +1 -0
  138. package/dist/scripts/BcPvb8J5.chunk.js +2 -0
  139. package/dist/scripts/BcPvb8J5.chunk.js.map +1 -0
  140. package/dist/scripts/Bf0d_B71.chunk.js +2 -0
  141. package/dist/scripts/Bf0d_B71.chunk.js.map +1 -0
  142. package/dist/scripts/Bic1CpMi.chunk.js +2 -0
  143. package/dist/scripts/Bic1CpMi.chunk.js.map +1 -0
  144. package/dist/scripts/BjgJ1i6i.chunk.js +6 -0
  145. package/dist/scripts/BjgJ1i6i.chunk.js.map +1 -0
  146. package/dist/scripts/BjiBJyQD.chunk.js +2 -0
  147. package/dist/scripts/BjiBJyQD.chunk.js.map +1 -0
  148. package/dist/scripts/BkuaVwYH.chunk.js +2 -0
  149. package/dist/scripts/BkuaVwYH.chunk.js.map +1 -0
  150. package/dist/scripts/BmVEWaPp.chunk.js +4 -0
  151. package/dist/scripts/BmVEWaPp.chunk.js.map +1 -0
  152. package/dist/scripts/BohkY37l.chunk.js +2 -0
  153. package/dist/scripts/BohkY37l.chunk.js.map +1 -0
  154. package/dist/scripts/BvIrLDbv.chunk.js +2 -0
  155. package/dist/scripts/BvIrLDbv.chunk.js.map +1 -0
  156. package/dist/scripts/BvJAziJf.chunk.js +2 -0
  157. package/dist/scripts/BvJAziJf.chunk.js.map +1 -0
  158. package/dist/scripts/BzoD15bZ.chunk.js +2 -0
  159. package/dist/scripts/BzoD15bZ.chunk.js.map +1 -0
  160. package/dist/scripts/C0fIn5Jw.chunk.js +2 -0
  161. package/dist/scripts/C0fIn5Jw.chunk.js.map +1 -0
  162. package/dist/scripts/C1LS2BqQ.chunk.js +2 -0
  163. package/dist/scripts/C1LS2BqQ.chunk.js.map +1 -0
  164. package/dist/scripts/C89Wm2QM.chunk.js +2 -0
  165. package/dist/scripts/C89Wm2QM.chunk.js.map +1 -0
  166. package/dist/scripts/CFp1zKGZ.chunk.js +8 -0
  167. package/dist/scripts/CFp1zKGZ.chunk.js.map +1 -0
  168. package/dist/scripts/CGvB_tzk.chunk.js +2 -0
  169. package/dist/scripts/CGvB_tzk.chunk.js.map +1 -0
  170. package/dist/scripts/CJGzIuaC.chunk.js +2 -0
  171. package/dist/scripts/CJGzIuaC.chunk.js.map +1 -0
  172. package/dist/scripts/CK9SUSD9.chunk.js +2 -0
  173. package/dist/scripts/CK9SUSD9.chunk.js.map +1 -0
  174. package/dist/scripts/CRnFAzfK.chunk.js +2 -0
  175. package/dist/scripts/CRnFAzfK.chunk.js.map +1 -0
  176. package/dist/scripts/CVftTaOh.chunk.js +2 -0
  177. package/dist/scripts/CVftTaOh.chunk.js.map +1 -0
  178. package/dist/scripts/CW7x8M-z.chunk.js +2 -0
  179. package/dist/scripts/CW7x8M-z.chunk.js.map +1 -0
  180. package/dist/scripts/CX5q-0jT.chunk.js +2 -0
  181. package/dist/scripts/CX5q-0jT.chunk.js.map +1 -0
  182. package/dist/scripts/CcJo9tyC.chunk.js +2 -0
  183. package/dist/scripts/CcJo9tyC.chunk.js.map +1 -0
  184. package/dist/scripts/Cd8Y7VGD.chunk.js +2 -0
  185. package/dist/scripts/Cd8Y7VGD.chunk.js.map +1 -0
  186. package/dist/scripts/CdEUIVMJ.chunk.js +2 -0
  187. package/dist/scripts/CdEUIVMJ.chunk.js.map +1 -0
  188. package/dist/scripts/Cf7yxDlS.chunk.js +2 -0
  189. package/dist/scripts/Cf7yxDlS.chunk.js.map +1 -0
  190. package/dist/scripts/Ch38wU3l.chunk.js +2 -0
  191. package/dist/scripts/Ch38wU3l.chunk.js.map +1 -0
  192. package/dist/scripts/Cj1EIzRP.chunk.js +2 -0
  193. package/dist/scripts/Cj1EIzRP.chunk.js.map +1 -0
  194. package/dist/scripts/Ckh8ZMGm.chunk.js +2 -0
  195. package/dist/scripts/Ckh8ZMGm.chunk.js.map +1 -0
  196. package/dist/scripts/ClIb9fji.chunk.js +10 -0
  197. package/dist/scripts/ClIb9fji.chunk.js.map +1 -0
  198. package/dist/scripts/ClkubQ2J.chunk.js +2 -0
  199. package/dist/scripts/ClkubQ2J.chunk.js.map +1 -0
  200. package/dist/scripts/ClngJcaG.chunk.js +2 -0
  201. package/dist/scripts/ClngJcaG.chunk.js.map +1 -0
  202. package/dist/scripts/Cmh_kkGl.chunk.js +2 -0
  203. package/dist/scripts/Cmh_kkGl.chunk.js.map +1 -0
  204. package/dist/scripts/Cmu1J2M7.chunk.js +262 -0
  205. package/dist/scripts/Cmu1J2M7.chunk.js.map +1 -0
  206. package/dist/scripts/CqnFgpqG.chunk.js +2 -0
  207. package/dist/scripts/CqnFgpqG.chunk.js.map +1 -0
  208. package/dist/scripts/Ctl4eE7j.chunk.js +2 -0
  209. package/dist/scripts/Ctl4eE7j.chunk.js.map +1 -0
  210. package/dist/scripts/Cu2SZCs_.chunk.js +3 -0
  211. package/dist/scripts/Cu2SZCs_.chunk.js.map +1 -0
  212. package/dist/scripts/Cus4Epw8.chunk.js +2 -0
  213. package/dist/scripts/Cus4Epw8.chunk.js.map +1 -0
  214. package/dist/scripts/Cwr3w1_A.chunk.js +2 -0
  215. package/dist/scripts/Cwr3w1_A.chunk.js.map +1 -0
  216. package/dist/scripts/CyS0Qcff.chunk.js +2 -0
  217. package/dist/scripts/CyS0Qcff.chunk.js.map +1 -0
  218. package/dist/scripts/Cz6t-6nF.chunk.js +2 -0
  219. package/dist/scripts/Cz6t-6nF.chunk.js.map +1 -0
  220. package/dist/scripts/D22pDzdH.chunk.js +2 -0
  221. package/dist/scripts/D22pDzdH.chunk.js.map +1 -0
  222. package/dist/scripts/D2z6V6KN.chunk.js +2 -0
  223. package/dist/scripts/D2z6V6KN.chunk.js.map +1 -0
  224. package/dist/scripts/D3rgHjw0.chunk.js +2 -0
  225. package/dist/scripts/D3rgHjw0.chunk.js.map +1 -0
  226. package/dist/scripts/D4zllLcC.chunk.js +2 -0
  227. package/dist/scripts/D4zllLcC.chunk.js.map +1 -0
  228. package/dist/scripts/D5FZp_R5.chunk.js +2 -0
  229. package/dist/scripts/D5FZp_R5.chunk.js.map +1 -0
  230. package/dist/scripts/D9PHjOfy.chunk.js +42 -0
  231. package/dist/scripts/D9PHjOfy.chunk.js.map +1 -0
  232. package/dist/scripts/DMIuTLXg.chunk.js +2 -0
  233. package/dist/scripts/DMIuTLXg.chunk.js.map +1 -0
  234. package/dist/scripts/DNgLQx2d.chunk.js +2 -0
  235. package/dist/scripts/DNgLQx2d.chunk.js.map +1 -0
  236. package/dist/scripts/DPPRKUKt.chunk.js +2 -0
  237. package/dist/scripts/DPPRKUKt.chunk.js.map +1 -0
  238. package/dist/scripts/DTDgnfLK.chunk.js +2 -0
  239. package/dist/scripts/DTDgnfLK.chunk.js.map +1 -0
  240. package/dist/scripts/DTUnn1Hh.chunk.js +2 -0
  241. package/dist/scripts/DTUnn1Hh.chunk.js.map +1 -0
  242. package/dist/scripts/DWKdFOij.chunk.js +2 -0
  243. package/dist/scripts/DWKdFOij.chunk.js.map +1 -0
  244. package/dist/scripts/DXjxFPuU.chunk.js +2 -0
  245. package/dist/scripts/DXjxFPuU.chunk.js.map +1 -0
  246. package/dist/scripts/DZYVycui.chunk.js +2 -0
  247. package/dist/scripts/DZYVycui.chunk.js.map +1 -0
  248. package/dist/scripts/D_Q6UyjE.chunk.js +2 -0
  249. package/dist/scripts/D_Q6UyjE.chunk.js.map +1 -0
  250. package/dist/scripts/D_YN6yks.chunk.js +2 -0
  251. package/dist/scripts/D_YN6yks.chunk.js.map +1 -0
  252. package/dist/scripts/DecntqLn.chunk.js +2 -0
  253. package/dist/scripts/DecntqLn.chunk.js.map +1 -0
  254. package/dist/scripts/DfBzbPUM.chunk.js +2 -0
  255. package/dist/scripts/DfBzbPUM.chunk.js.map +1 -0
  256. package/dist/scripts/Di60KvwG.chunk.js +2 -0
  257. package/dist/scripts/Di60KvwG.chunk.js.map +1 -0
  258. package/dist/scripts/Dj0aHq7R.chunk.js +2 -0
  259. package/dist/scripts/Dj0aHq7R.chunk.js.map +1 -0
  260. package/dist/scripts/DjZDmVy9.chunk.js +2 -0
  261. package/dist/scripts/DjZDmVy9.chunk.js.map +1 -0
  262. package/dist/scripts/DjgLQWKh.chunk.js +2 -0
  263. package/dist/scripts/DjgLQWKh.chunk.js.map +1 -0
  264. package/dist/scripts/DljLRdDL.chunk.js +2 -0
  265. package/dist/scripts/DljLRdDL.chunk.js.map +1 -0
  266. package/dist/scripts/DoKirPj2.chunk.js +2 -0
  267. package/dist/scripts/DoKirPj2.chunk.js.map +1 -0
  268. package/dist/scripts/DrZPksO1.chunk.js +2 -0
  269. package/dist/scripts/DrZPksO1.chunk.js.map +1 -0
  270. package/dist/scripts/DwXWjOFd.chunk.js +2 -0
  271. package/dist/scripts/DwXWjOFd.chunk.js.map +1 -0
  272. package/dist/scripts/Dwsvd8p8.chunk.js +3 -0
  273. package/dist/scripts/Dwsvd8p8.chunk.js.map +1 -0
  274. package/dist/scripts/Ewq6yyV4.chunk.js +2 -0
  275. package/dist/scripts/Ewq6yyV4.chunk.js.map +1 -0
  276. package/dist/scripts/GOwzfXiv.chunk.js +2 -0
  277. package/dist/scripts/GOwzfXiv.chunk.js.map +1 -0
  278. package/dist/scripts/GybZtYpZ.chunk.js +3 -0
  279. package/dist/scripts/GybZtYpZ.chunk.js.map +1 -0
  280. package/dist/scripts/H13OLF2T.chunk.js +2 -0
  281. package/dist/scripts/H13OLF2T.chunk.js.map +1 -0
  282. package/dist/scripts/HdH1xgCy.chunk.js +2 -0
  283. package/dist/scripts/HdH1xgCy.chunk.js.map +1 -0
  284. package/dist/scripts/K65Dt7jg.chunk.js +2 -0
  285. package/dist/scripts/K65Dt7jg.chunk.js.map +1 -0
  286. package/dist/scripts/M-TSYEoo.chunk.js +2 -0
  287. package/dist/scripts/M-TSYEoo.chunk.js.map +1 -0
  288. package/dist/scripts/O9F9Sybw.chunk.js +34 -0
  289. package/dist/scripts/O9F9Sybw.chunk.js.map +1 -0
  290. package/dist/scripts/PRj0OsVz.chunk.js +2 -0
  291. package/dist/scripts/PRj0OsVz.chunk.js.map +1 -0
  292. package/dist/scripts/SsbfqiCA.chunk.js +2 -0
  293. package/dist/scripts/SsbfqiCA.chunk.js.map +1 -0
  294. package/dist/scripts/app-BDrXtKwD.js +228 -0
  295. package/dist/scripts/app-BDrXtKwD.js.map +1 -0
  296. package/dist/scripts/bOC-mo3v.chunk.js +2 -0
  297. package/dist/scripts/bOC-mo3v.chunk.js.map +1 -0
  298. package/dist/scripts/cCAKx9a1.chunk.js +2 -0
  299. package/dist/scripts/cCAKx9a1.chunk.js.map +1 -0
  300. package/dist/scripts/csPZD_eN.chunk.js +2 -0
  301. package/dist/scripts/csPZD_eN.chunk.js.map +1 -0
  302. package/dist/scripts/iTBVzKEZ.chunk.js +2 -0
  303. package/dist/scripts/iTBVzKEZ.chunk.js.map +1 -0
  304. package/dist/scripts/jhT3mG38.chunk.js +2 -0
  305. package/dist/scripts/jhT3mG38.chunk.js.map +1 -0
  306. package/dist/scripts/lcnUAi0K.chunk.js +2 -0
  307. package/dist/scripts/lcnUAi0K.chunk.js.map +1 -0
  308. package/dist/scripts/mBxqWw8V.chunk.js +2 -0
  309. package/dist/scripts/mBxqWw8V.chunk.js.map +1 -0
  310. package/dist/scripts/nR79RHo_.chunk.js +15 -0
  311. package/dist/scripts/nR79RHo_.chunk.js.map +1 -0
  312. package/dist/scripts/sFV5nxD4.chunk.js +2 -0
  313. package/dist/scripts/sFV5nxD4.chunk.js.map +1 -0
  314. package/dist/scripts/t5MCaEYl.chunk.js +2 -0
  315. package/dist/scripts/t5MCaEYl.chunk.js.map +1 -0
  316. package/dist/scripts/uoF107dn.chunk.js +380 -0
  317. package/dist/scripts/uoF107dn.chunk.js.map +1 -0
  318. package/dist/scripts/zeFMHqhy.chunk.js +2 -0
  319. package/dist/scripts/zeFMHqhy.chunk.js.map +1 -0
  320. package/package.json +5 -3
  321. package/typings/utils/imports.d.ts +1 -1
  322. package/dist/css/1103-reports-d3d5cc00db.chunk.css +0 -31
  323. package/dist/css/1456-reports-4a5871a275.chunk.css +0 -9
  324. package/dist/css/1648-reports-012456ba48.chunk.css +0 -2
  325. package/dist/css/209-reports-c33663a53e.chunk.css +0 -11
  326. package/dist/css/2150-reports-84ec0e9770.chunk.css +0 -4
  327. package/dist/css/2217-reports-74dec0a3fe.chunk.css +0 -32
  328. package/dist/css/2997-reports-e08318f14b.chunk.css +0 -9
  329. package/dist/css/2999-reports-f190450b10.chunk.css +0 -60
  330. package/dist/css/4582-reports-d3d5cc00db.chunk.css +0 -31
  331. package/dist/css/5304-reports-22c2d8d635.chunk.css +0 -9
  332. package/dist/css/6007-reports-5ba77c55a3.chunk.css +0 -8
  333. package/dist/css/6031-reports-d558076846.chunk.css +0 -6
  334. package/dist/css/6356-reports-8c5b220bf6.chunk.css +0 -1
  335. package/dist/css/6811-reports-baf2e97e71.chunk.css +0 -35
  336. package/dist/css/7723-reports-8c6d3c414b.chunk.css +0 -4
  337. package/dist/css/7747-reports-2d9e191b5a.chunk.css +0 -12
  338. package/dist/css/8087-reports-cfe23ba648.chunk.css +0 -10
  339. package/dist/css/8294-reports-c797263ac2.chunk.css +0 -1
  340. package/dist/css/8418-reports-0ada3f3ce2.chunk.css +0 -29
  341. package/dist/css/8450-reports-06493dfde5.chunk.css +0 -9
  342. package/dist/css/8622-reports-9e8970cc7f.chunk.css +0 -8
  343. package/dist/css/8839-reports-8e46644943.chunk.css +0 -1
  344. package/dist/css/8989-reports-92b4f1dde8.chunk.css +0 -8
  345. package/dist/css/9059-reports-a2ac630ebc.chunk.css +0 -35
  346. package/dist/css/9285-reports-5b9af8380f.chunk.css +0 -13
  347. package/dist/css/9661-reports-7435e94a85.chunk.css +0 -4
  348. package/dist/css/9822-reports-a1db1900c7.chunk.css +0 -8
  349. package/dist/css/9949-reports-f22fa2b407.chunk.css +0 -15
  350. package/dist/css/reports-app-b4c4ec5632.css +0 -32
  351. package/dist/languages/en.json +0 -1
  352. package/dist/scripts/1103-d77d388f5b-reports.chunk.js +0 -1
  353. package/dist/scripts/1177-7cf7817e74-reports.chunk.js +0 -1
  354. package/dist/scripts/1456-019d93e620-reports.chunk.js +0 -1
  355. package/dist/scripts/1648-e892604f5a-reports.chunk.js +0 -1
  356. package/dist/scripts/1934-ca8497c768-reports.chunk.js +0 -2
  357. package/dist/scripts/1934-ca8497c768-reports.chunk.js.LICENSE.txt +0 -9
  358. package/dist/scripts/2087-e0ef668e1f-reports.chunk.js +0 -1
  359. package/dist/scripts/209-79eb8be706-reports.chunk.js +0 -1
  360. package/dist/scripts/2150-4e9e1fb433-reports.chunk.js +0 -1
  361. package/dist/scripts/2217-15fa35197a-reports.chunk.js +0 -1
  362. package/dist/scripts/2476-a700f69dc4-reports.chunk.js +0 -1
  363. package/dist/scripts/2539-04dfb4f4f1-reports.chunk.js +0 -1
  364. package/dist/scripts/2997-62d81c3442-reports.chunk.js +0 -1
  365. package/dist/scripts/2999-785ad6d65a-reports.chunk.js +0 -2
  366. package/dist/scripts/2999-785ad6d65a-reports.chunk.js.LICENSE.txt +0 -1
  367. package/dist/scripts/312-8b006e92ff-reports.chunk.js +0 -1
  368. package/dist/scripts/4234-e3c04f41eb-reports.chunk.js +0 -1
  369. package/dist/scripts/4372-26474a3318-reports.chunk.js +0 -1
  370. package/dist/scripts/438-b444dfb8c6-reports.chunk.js +0 -1
  371. package/dist/scripts/4582-230f130f41-reports.chunk.js +0 -1
  372. package/dist/scripts/4752-db4247883d-reports.chunk.js +0 -2
  373. package/dist/scripts/4752-db4247883d-reports.chunk.js.LICENSE.txt +0 -118
  374. package/dist/scripts/4979-7e14b09f33-reports.chunk.js +0 -1
  375. package/dist/scripts/5051-72c53737e2-reports.chunk.js +0 -1
  376. package/dist/scripts/5091-ddd6f61b55-reports.chunk.js +0 -1
  377. package/dist/scripts/5173-cce3b37672-reports.chunk.js +0 -1
  378. package/dist/scripts/5177-a7372e7b8d-reports.chunk.js +0 -1
  379. package/dist/scripts/5304-d5674b32b4-reports.chunk.js +0 -1
  380. package/dist/scripts/5802-2125536755-reports.chunk.js +0 -1
  381. package/dist/scripts/6007-673706aa31-reports.chunk.js +0 -1
  382. package/dist/scripts/6031-b1c60cc409-reports.chunk.js +0 -1
  383. package/dist/scripts/6081-2bbda6cac3-reports.chunk.js +0 -1
  384. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js +0 -2
  385. package/dist/scripts/6180-bdb237ffbe-reports.chunk.js.LICENSE.txt +0 -1
  386. package/dist/scripts/6198-189ddde870-reports.chunk.js +0 -1
  387. package/dist/scripts/6356-a1b313c73e-reports.chunk.js +0 -1
  388. package/dist/scripts/645-e8b19128e5-reports.chunk.js +0 -1
  389. package/dist/scripts/6545-f07bcd318a-reports.chunk.js +0 -1
  390. package/dist/scripts/6811-40ded4c089-reports.chunk.js +0 -1
  391. package/dist/scripts/7238-de5ef0ebfb-reports.chunk.js +0 -1
  392. package/dist/scripts/7562-748e60c3fc-reports.chunk.js +0 -1
  393. package/dist/scripts/7709-82750ee317-reports.chunk.js +0 -1
  394. package/dist/scripts/7723-1799f5aa26-reports.chunk.js +0 -1
  395. package/dist/scripts/7747-d34db3ff10-reports.chunk.js +0 -2
  396. package/dist/scripts/7747-d34db3ff10-reports.chunk.js.LICENSE.txt +0 -1
  397. package/dist/scripts/7925-c6c532c9c4-reports.chunk.js +0 -1
  398. package/dist/scripts/8087-1d9e9701e5-reports.chunk.js +0 -1
  399. package/dist/scripts/8393-c37cc22b4c-reports.chunk.js +0 -1
  400. package/dist/scripts/8418-9f96caf039-reports.chunk.js +0 -1
  401. package/dist/scripts/8450-f2d5d99614-reports.chunk.js +0 -1
  402. package/dist/scripts/8591-4811082ab0-reports.chunk.js +0 -1
  403. package/dist/scripts/8622-ee045574e2-reports.chunk.js +0 -1
  404. package/dist/scripts/8839-711793a97f-reports.chunk.js +0 -1
  405. package/dist/scripts/8989-ca5cab7f45-reports.chunk.js +0 -1
  406. package/dist/scripts/9059-b2dcf3cdb2-reports.chunk.js +0 -1
  407. package/dist/scripts/9162-7ffc692736-reports.chunk.js +0 -1
  408. package/dist/scripts/9285-ecddd01efb-reports.chunk.js +0 -1
  409. package/dist/scripts/9590-41bb23ae71-reports.chunk.js +0 -1
  410. package/dist/scripts/9647-f0c111d3f0-reports.chunk.js +0 -1
  411. package/dist/scripts/9661-2dee4c3417-reports.chunk.js +0 -1
  412. package/dist/scripts/9822-621fac26e6-reports.chunk.js +0 -1
  413. package/dist/scripts/9895-3b3feb12b9-reports.chunk.js +0 -1
  414. package/dist/scripts/9949-6b1d1f4d32-reports.chunk.js +0 -1
  415. package/dist/scripts/bundle-31e281ea99.min.js +0 -2
  416. package/dist/scripts/bundle-31e281ea99.min.js.LICENSE.txt +0 -108
  417. package/dist/scripts/polyfills-3db3f009d4.min.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{bG as D,az as W,bH as K,ah as Y,v as O,aw as b,aW as d,s as p,l as j,bI as m,bJ as q,bK as v,bL as z,bM as J,L as H,u as C,bN as Q,bO as X,m as Z,au as ee,at as te,av as S,an as x,a0 as $,a3 as I,a1 as k,a2 as re,ab as se,bx as E,bD as B,bP as ie}from"./app-BDrXtKwD.js";import{S as T}from"./cCAKx9a1.chunk.js";import{C as ae,V}from"./BkuaVwYH.chunk.js";const ne=5,A={getRecentItem(e,t,r=!0){let s=r?t.cacheGet(e):t.get(e);return Array.isArray(s)||(s=[]),s},setRecentItem(e,t,r,s){if(Array.isArray(t)){if(s){r.cacheSet(e,t);return}r.set(e,t)}},addRecentItem(e,t,r){const{id:s,limit:i=ne,expire:n=!0}=r;let a=A.getRecentItem(e,t,n);const l=a.indexOf(s);return l>-1&&a.splice(l,1),a.unshift(s),a.length>i&&(a=a.slice(0,i)),A.setRecentItem(e,a,t,n),a},removeRecentItem(e,t,r){const i=A.getRecentItem(e,r).filter(n=>n!==t.toString());A.setRecentItem(e,i,r)}},_=e=>`recently:shared:to:${e}`,le={getRecentlySharedTo(e){return A.getRecentItem(_(e),D)},addRecentlySharedTo(e,t){return A.addRecentItem(_(e),D,t)}};class oe{constructor(t){this.setData(t)}setData(t){const{collectionPrefix:r,id:s,sort:i,cursor:n}=t;s&&(this.id=s),i&&(this.sort=i),n&&(this.cursor=n),r&&(this.collectionPrefix=r)}toString(){return[this.collectionPrefix,this.id,this.sort,this.cursor].filter(Boolean).join(":")}toParams(){const t={};return this.sort&&(t.sort=this.getSortTypeParam().toLowerCase()),this.cursor&&(t.cursor=this.cursor),t}getSortTypeParam(){return W.throw(new K("getSortTypeParam must be implemented when extending BaseCollectionIdentifier")),""}}class ce extends oe{constructor(t,r=""){super({collectionPrefix:"playlist:videos",id:t,cursor:r})}}const U={deletePlaylist(e){return t=>{const r={...t};return r.hasOwnProperty(e)&&delete r[e],r}},incrementVideoCount(e,t){return r=>{const s={...r};return s.hasOwnProperty(e)?(s[e].videos||(s[e].videos={}),s[e].videos.count=s[e].videos.count?s[e].videos.count+t:t,s):r}}},ue={reorder(e,t,r){if(t===r)return{reorderedItems:e,reorderRequest:null};const s=O.moveItem(e,t,r),i=r<e.length-1?s[r+1].id:null,n={sourceMemberId:s[r].id,destinationMemberId:i};return{reorderedItems:s,reorderRequest:n}},updateState(e,t,r){const s=[],i=Y.deepClone(r),n=[e];let a=r[e];const l=!!a&&!!a.data&&a.data.length;for(;a&&Array.isArray(a.data);){s.push(...a.data);const y=a.pagination&&a.pagination.cursors&&a.pagination.cursors.next,w=!!y&&`${e}:${y}`;a=y&&r[w],a&&n.push(w)}if(!s.length)return r;const c=O.findIndex(s,y=>y.id===t.sourceMemberId);let u=[...s];const g=u.splice(c,1),f=t.destinationMemberId?O.findIndex(u,y=>y.id===t.destinationMemberId):u.length;return u.splice(f,0,g[0]),u=u.map(y=>({id:y.id})),n.forEach(y=>{const w=u.splice(0,l);i[y].data=w}),i}},pe={getUserPlaylists(e){const{sort:t,type:r}=e,s={sort:t,query:`{limit:100}${v.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`};return e.cursor&&(s.cursor=e.cursor),{url:p.urlBuilder(`/api/domain/v2/me/playlists/${r}`,s),key:e.toString()}},getPlaylist(e,t,r){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated`}),key:`playlist:${e}`,success:t,error:r}},getSharedPlaylist(e,t,r,s){return{url:p.urlBuilder(`/api/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner`,shareId:t}),key:`shared:playlist:${e}:${t}`,success:r,error:s}},playlistWithThumbnailAndCount(e){return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`${v.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`}),key:`playlist:${e}:thumbnail:count`}},getPlaylistVideos(e,t){const{VIDEO_COLLECTION:r,CLIP_COLLECTION:s,INTERACTIVE:i}=v,n={query:`(videos[${r}]{status:[${m.Published},${m.Archived}]}|clips[${s}]{status:[${m.Published},${m.Archived}]}|interactives[${i}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata};return t&&(n.cursor=t),{url:p.urlBuilder(`{gateway}/v1/objects/${e}/members`,n),publicUrl:p.urlBuilder(`/api/objects/${e}/members`,n),key:`playlist:${e}:videos${t?`:${t}`:""}`}},getSharedPlaylistVideos(e,t,r){const{VIDEO_COLLECTION:s,CLIP_COLLECTION:i,INTERACTIVE:n}=v,a={query:`(videos[${s}]{status:[${m.Published},${m.Archived}]}|clips[${i}]{status:[${m.Published},${m.Archived}]}|interactives[${n}]){orderBy:orderindex,limit:100}`,permissionFilterOption:q.StripMetadata,shareId:t};return r&&(a.cursor=r),{url:p.urlBuilder(`/api/objects/${e}/members`,a),key:`shared:playlist:${e}:${t}:videos:${r}`}},getPlaylistVideosCount(e){const t=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),publicUrl:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${t},clips[count()]${t},interactives[count()]${t}`}),key:`playlist:count:${e}`,normalize:!1}},getSharedPlaylistVideosCount(e,t){const r=`{limit:0,status:[${m.Published},${m.Archived}]}`;return{url:p.urlBuilder(`/api/objects/${e}`,{query:`videos[count()]${r},clips[count()]${r},interactives[count()]${r}`,shareId:t}),key:`shared:playlist:count:${e}:${t}`,normalize:!1}},getVideoPlaylists(e,t,r){return{url:`{gateway}/v1/objects/${e}/playlists?query={limit:100,owner.id:[${t}]}`,key:`video:playlists:${e}${r?":cursor":""}`}},createPlaylist(e,t,r,s,i){return{key:"create:playlist",url:`{gateway}/v1/objects/${e}/playlists`,data:t,type:b.POST,success:r,error:s,always:i,invalidationKeys:"user:playlists"}},updatePlaylist(e,t,r,s,i){return{key:"update:playlist",url:`{gateway}/v1/objects/${e}`,data:t,type:b.PUT,success:r,error:s,always:i}},deletePlaylist(e,t,r,s){return{key:"delete:playlist",url:`{gateway}/v1/objects/${e}`,type:b.DELETE,success:t,error:r,always:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}`,updateData:U.deletePlaylist(`playlist:${e}`)}}},copyPlaylist(e,t,r,s){return{url:"{gateway}/v1/playlists/copy",key:"copy:playlist",data:{playlistId:e},type:b.POST,invalidationKeys:"user:playlists",success:t,error:r,always:s}},addToPlaylist(e,t,r,s){const i=["user:playlists",new ce(e).toString(),`playlist:${e}:videos`];t.forEach(a=>{i.push(`video:playlists:${a.id}`)});const n=t.reduce((a,l)=>(j.isClip(l)&&(Array.isArray(a.clips)?a.clips.push({id:l.id}):a.clips=[{id:l.id}]),j.isInteractive(l)&&(Array.isArray(a.interactives)?a.interactives.push({id:l.id}):a.interactives=[{id:l.id}]),j.isVideo(l)&&(Array.isArray(a.videos)?a.videos.push({id:l.id}):a.videos=[{id:l.id}]),a),{});return{key:`add:to:playlist:${e}:${t.map(a=>a.id).join(":")}`,url:`{gateway}/v1/objects/${e}`,data:n,type:b.PUT,success:r,error:s,invalidationKeys:i,updateState:{keys:`playlist:${e}`,updateData:U.incrementVideoCount(`playlist:${e}`,t.length)},normalize:!1}},removePlaylistVideo(e,t,r,s,i){let n=`{gateway}/v1/objects/${e}`;return r===d.Clip?n+="/clips":r===d.Interactive?n+="/interactives":n+="/videos",{key:"remove:playlist:video",url:p.urlBuilder(n,{memberId:t}),type:b.DELETE,success:s,error:i,invalidationKeys:["user:playlists",`playlist:${e}:videos`,`video:playlists:${t}`,`playlist:${e}`]}},getIsFollowingPlaylist(e,t){const r=s=>{var i;return{objectId:e,isFollowing:!!((i=s==null?void 0:s.data)!=null&&i.length)}};return{url:`{gateway}/v1/objects/${t}/followedPlaylists?query={id:${e}}`,key:`playlist:${e}:following:${t}`,formatData:r,normalize:!1}},followPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}`,key:`follow:playlist:${e}`,data:{followedPlaylists:e},type:b.PUT,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},unfollowPlaylist(e,t,r,s,i){return{url:`{gateway}/v1/objects/${t}/followedPlaylists?memberId=${e}`,key:`unfollow:playlist:${e}`,type:b.DELETE,invalidationKeys:["user:playlists",`playlist:${e}`,"shared:playlist"],success:r,error:s,always:i}},reorderVideos(e,t,r,s){return{key:"reorder:playlist",url:`{gateway}/v1/playlists/${e}/reorder`,data:t,type:b.PUT,success:r,error:s,invalidationKeys:"user:playlists",updateState:{keys:`playlist:${e}:videos`,updateData:i=>ue.updateState(`playlist:${e}:videos`,t,i)}}},getVideoCandidate(e){return{url:`{gateway}/v1/objects/${e}?query=_restrictions`,key:`add:to:playlist:candidate:${e}`}}},G={sharedSeries:(e,t)=>p.urlBuilder(`/api/objects/${e}`,{query:v.SERIES,shareId:t}),seriesWithVideos:(e,t=3)=>`{gateway}/v1/objects/${e}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${t}}`},ye={series(e){const t={query:v.SERIES};return{url:p.urlBuilder(`{gateway}/v1/objects/${e}`,t),publicUrl:p.urlBuilder(`/api/objects/${e}`,t),key:`series:${e}`}},sharedSeries(e,t){return{url:G.sharedSeries(e,t),key:`shared:series:${e}:${t}`}},seriesWithVideos(e,t=3){return{url:G.seriesWithVideos(e,t),key:`series:${e}:with:videos:${t}`}},seriesWithThumbnailAndCount(e){return{url:`{gateway}/v1/objects/${e}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,key:`series:${e}:thumbnail:count`}},seriesVideos(e,t,r,s){const i=z.getVideoSortParam(r),n=["series",e,"videos",s,r].filter(a=>!!a).join(":");return{url:p.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:`{${i}}${v.VIDEO_COLLECTION}`,cursor:s}),publicUrl:p.urlBuilder(`/api/objects/collections/${e}/videos`,{query:`{${i}}${J.VIDEO_COLLECTION}`,cursor:s}),key:n}}},de="shared.share",h=H.encloseNamespace(de),P={getObjectTypeId(e){switch(e){case"video":return d.Video;case"playlist":return d.Playlist;case"subject":return d.Subject;case"series":return d.Series;case"interactive":return d.Interactive;case"clip":return d.Clip}},createLink(e){const t=i=>{$.logUserAction({...i,objectName:e.entity.name},$.mergeOptions(P.getAnalyticsOptions(e.entityType),{actionType:I.Create,entity:S.ShareLink,eventVersion:k.V3})),e.success&&e.success(i)},r=()=>{e.alerts.error(h("createLinkError",{name:e.entity.name}))},s={resourceId:e.entity.id,overrideRestrictions:!1};e.password&&(s.password=e.password),e.linkExpireDate&&(s.linkExpireDate=e.linkExpireDate),x(e.dispatch,T.createShareLink(s,t,r))},updateLink(e,t,r,s,i,n,a,l){const c=g=>{$.logUserAction({...g,objectName:t.name},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Edit,entity:S.ShareLink,eventVersion:k.V3})),a&&a(g),n.success(h("editSuccess",{name:t.name,escapeText:!0}))},u=()=>{l&&l(),n.error(h("editError",{name:t.name,escapeText:!0}))};x(e,T.editShareLink(s,i,c,u))},deleteLink(e,t,r,s,i,n,a){const l=()=>{$.logUserAction({...s,objectName:t.name},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Delete,entity:S.ShareLink})),n&&n(),i.success(h("deleteSuccess",{name:t.name,escapeText:!0}))},c=()=>{i.error(h("deleteError",{name:t.name,escapeText:!0}))},u=()=>{a&&a()};x(e,T.deleteShareLink(s,l,c,u))},createOrUpdateDirectShare(e){const{dispatch:t,entity:r,entityType:s,currentUser:i,recipients:n,sentDirectShare:a,message:l,onSuccess:c,onError:u,onDone:g}=e,f=N=>{c&&c(N),$.logUserAction({id:r.id,name:r.name,shareCount:n.length},$.mergeOptions(P.getAnalyticsOptions(s),{actionType:I.Share,descriptor:re.DirectShare,eventVersion:k.V3})),n.map(F=>{le.addRecentlySharedTo(i.id,{id:F.id})})},y={objectId:r.id,objectTypeId:P.getObjectTypeId(s),recipients:n,message:l},w={recipients:n,message:l},M=a?T.updateDirectShareRecipients(a.id,w,f,u,g):T.createDirectShare(y,f,u,g);x(t,M)},removeDirectShareRecipient(e,t,r,s,i,n){const a=l=>{i&&i(l),$.logUserAction({shareCount:1},$.mergeOptions(P.getAnalyticsOptions(r),{actionType:I.Unshare}))};x(e,T.removeDirectShareRecipient(s.id,t,a,n))},getDirectShareRecipientsRequest(e,t){var s;return!!((s=t==null?void 0:t.recipients)!=null&&s.length)&&T.getDirectShareRecipientsById(t.id,t.recipients,e)},getAnalyticsEntity(e){switch(e){case"playlist":return S.Playlist;case"subject":return S.Classification;case"video":return S.Video;case"series":return S.Series;case"interactive":return S.Interactive;case"clip":return S.Clip}},getAnalyticsOptions(e){return{entity:P.getAnalyticsEntity(e),location:te.Popup,workflowPhase:ee.Complete}},getFetchFunctionByType:e=>{switch(e){case"video":return t=>C(Z.video(t));case"playlist":return t=>C(pe.getPlaylist(t));case"subject":return(t,r)=>C(ae.classification(t,r));case"series":return t=>C(ye.series(t));case"interactive":return t=>C(X.interactiveMetadata(t));case"clip":return t=>C(Q.clip(t))}},getImageUrl(e){var t,r,s,i;return"thumbnail"in e&&e.thumbnail?(t=e.thumbnail)==null?void 0:t.url:"_thumbnail"in e&&e._thumbnail?(r=e._thumbnail)==null?void 0:r.url:"cover"in e?(s=e.cover)==null?void 0:s.url:"tallPoster"in e?(i=e.tallPoster)==null?void 0:i.url:""},getShareRecipientsPhrase(e){var l,c,u;if(!e.length)return;let t={};if(e.length===1)return O.first(e).name;e.forEach(g=>{let f;switch(g.typeId){case d.User:f="users";break;case d.Classroom:f="classrooms";break;case d.ClassroomGroup:f="classroomGroups";break}const y=t[f]??[];y.push(g),t={...t,[f]:O.uniq(y)}});const r=t.classrooms&&!t.classroomGroups&&!t.users,s=t.classroomGroups&&!t.classrooms&&!t.users,i=t.users&&!t.classrooms&&!t.classroomGroups;if(r)return h("classrooms",{smartCount:t.classrooms.length});if(s)return h("groups",{smartCount:t.classroomGroups.length});if(i)return h("users",{smartCount:t.users.length});const n=[];(l=t.classrooms)!=null&&l.length&&n.push(h("classrooms",{smartCount:t.classrooms.length})),(c=t.classroomGroups)!=null&&c.length&&n.push(h("groups",{smartCount:t.classroomGroups.length})),(u=t.users)!=null&&u.length&&n.push(h("users",{smartCount:t.users.length}));const a=n.pop();return`${n.join(", ")} ${h("and")} ${a}`}};var R=(e=>(e.Expired="Expired",e.Active="Active",e))(R||{});const me="share.shareLinkInfo",o=H.encloseNamespace(me),L={getPrivateIconAndText:e=>{const{entityTypeId:t,privacy:r,hasStudentExp:s,entity:i,yearGroups:n}=e;if(t===d.Topic||t===d.Series)return{icon:V,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r.privacy){case"public":return{icon:V,text:o("publicDescription")};case"protected":return r.overrideRestrictions?{icon:V,text:o("clickViewOnly")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"just_my_customer":return r.overrideRestrictions?{icon:E,text:o(s?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:E,text:L.getRespectRatingText(i,n,s)};case"restricted":case"private":return{icon:E,text:o("privateDescription")};default:return{}}},getIconAndText:e=>{const{linkExpireDate:t,isPasswordProtected:r,status:s}=e;if(!t&&!r)return L.getPrivateIconAndText(e);if(!t)return{icon:E,text:o("password")};const i=B.isToday(t),n=B.diffBetween(t,new Date,"day");if(!r){let l=i?o("expiryToday"):o("expiry",{days:n});return s===R.Expired&&(l=o("expired")),{icon:ie,text:l}}let a=i?o("passwordExpiryToday"):o("passwordExpiry",{days:n});return s===R.Expired&&(a=o("passwordExpired")),{icon:E,text:a}},getRespectRatingText(e,t,r){var l;if(!e||!t)return null;if(r)return o("justMySchoolTeachers");if(!j.isVideoType(e))return o("collectionRating");const s=se.getWeightedRestriction((l=e._restrictions)==null?void 0:l.value);if(s&&!s.yearGroup)return o("onlyAdmins");const i=j.getRating(e);let n,a;for(const c of t)(!n||c.value>n.value)&&(n=c),!(s&&c.value<=s.yearGroup)&&(i&&c.rating.value<i.value||(!a||c.value<a.value)&&(a=c));return a?t.length===1?o("clickViewOnly"):a.value===n.value?o("maxYearGroup",{yearGroup:n.name}):o("yearGroupRange",{yearGroup:a.name}):o("onlyStaff")}};export{le as R,P as S,L as a,R as b};
2
+ //# sourceMappingURL=BjiBJyQD.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BjiBJyQD.chunk.js","sources":["../../../../libs/shared/src/utils/RecentItemHelper.ts","../../../../libs/shared/src/apps/share/utils/RecentShareHelper.ts","../../../../libs/common/src/backbone/interfaces/BaseCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistVideoCollectionIdentifier.ts","../../../../libs/shared/src/apps/playlists/utils/PlaylistStateUpdateHelper.ts","../../../../libs/shared/src/utils/ReorderHelper.ts","../../../../libs/shared/src/flight-requests/PlaylistRequests.ts","../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../../../libs/shared/src/apps/share/views/share/ShareViewHelper.ts","../../../../libs/shared/src/enums/ShareLinkStatus.ts","../../../../libs/shared/src/apps/share/utils/ShareLinkHelper.ts"],"sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nconst DEFAULT_STORAGE_LIMIT = 5;\n\ninterface AddRecentItemOptions {\n id: string;\n limit?: number;\n expire?: boolean;\n}\n\nexport const RecentItemHelper = {\n getRecentItem(cacheKey: string, dataSource: StorageHelper, expire: boolean = true): string[] {\n let recentItems = expire ? dataSource.cacheGet(cacheKey) : dataSource.get(cacheKey);\n\n if (!Array.isArray(recentItems))\n recentItems = [];\n\n return recentItems;\n },\n\n setRecentItem(cacheKey: string, ids: string[], dataSource: StorageHelper, expire?: boolean): void {\n if (!Array.isArray(ids))\n return;\n\n if (expire) {\n dataSource.cacheSet(cacheKey, ids);\n return;\n }\n\n dataSource.set(cacheKey, ids);\n },\n\n addRecentItem(cacheKey: string, dataSource: StorageHelper, options: AddRecentItemOptions): string[] {\n const { id, limit = DEFAULT_STORAGE_LIMIT, expire = true } = options;\n\n let recentItems = RecentItemHelper.getRecentItem(cacheKey, dataSource, expire);\n\n const idIndex = recentItems.indexOf(id);\n\n /**\n * If the item is already in the stored list, \n * remove it so that it will be inserted at the first position.\n */\n if (idIndex > -1)\n recentItems.splice(idIndex, 1);\n\n recentItems.unshift(id);\n\n if (recentItems.length > limit)\n recentItems = recentItems.slice(0, limit);\n\n RecentItemHelper.setRecentItem(cacheKey, recentItems, dataSource, expire);\n\n return recentItems;\n },\n\n removeRecentItem(cacheKey: string, id: string, dataSource: StorageHelper): void {\n const items = RecentItemHelper.getRecentItem(cacheKey, dataSource);\n const omitted = items.filter(i => i !== id.toString());\n RecentItemHelper.setRecentItem(cacheKey, omitted, dataSource);\n }\n};","import { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { RecentItemHelper } from 'libs/shared/utils/RecentItemHelper';\n\nconst getCacheKey = (userId: string) => `recently:shared:to:${userId}`;\n\ninterface AddRecentShareOptions {\n id: string;\n limit?: number;\n}\n\nexport const RecentShareHelper = {\n /**\n * Get a list of ids of recipients recently shared to.\n */\n getRecentlySharedTo(userId: string): string[] {\n return RecentItemHelper.getRecentItem(getCacheKey(userId), LocalStorageHelper);\n },\n \n addRecentlySharedTo(userId: string, options: AddRecentShareOptions): string[] {\n return RecentItemHelper.addRecentItem(getCacheKey(userId), LocalStorageHelper, options);\n }\n};","import { ObjectHash } from 'backbone';\n\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nexport interface BaseCollectionIdentifierOptions<T> {\n collectionPrefix?: string;\n id?: string;\n sort?: T;\n cursor?: string;\n}\n\nexport class BaseCollectionIdentifier<T = HashObject> {\n public id: string;\n public sort: T;\n public cursor: string;\n public collectionPrefix: string;\n\n constructor(options: BaseCollectionIdentifierOptions<T>) {\n this.setData(options);\n }\n\n protected setData(options: BaseCollectionIdentifierOptions<T>): void {\n const { collectionPrefix, id, sort, cursor } = options;\n\n if (id)\n this.id = id;\n\n if (sort)\n this.sort = sort;\n\n if (cursor)\n this.cursor = cursor;\n\n if (collectionPrefix)\n this.collectionPrefix = collectionPrefix;\n }\n\n public toString(): string {\n const params = [\n this.collectionPrefix,\n this.id,\n this.sort,\n this.cursor\n ];\n\n return params.filter(Boolean).join(':');\n }\n\n public toParams(): ObjectHash {\n const params: ObjectHash = {};\n\n if (this.sort)\n params.sort = this.getSortTypeParam().toLowerCase();\n\n if (this.cursor)\n params.cursor = this.cursor;\n\n return params;\n }\n\n protected getSortTypeParam(): string {\n ErrorHelper.throw(new DevError('getSortTypeParam must be implemented when extending BaseCollectionIdentifier'));\n\n return '';\n }\n}","import { BaseCollectionIdentifier } from 'libs/common/backbone/interfaces';\n\nexport class PlaylistVideoCollectionIdentifier extends BaseCollectionIdentifier {\n constructor(id: string, cursor: string = '') {\n super({ collectionPrefix: 'playlist:videos', id, cursor });\n }\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\n\ntype StateMap = { [key: string]: HashObject };\n\nexport const PlaylistStateUpdateHelper = {\n deletePlaylist(key: string): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (updatedState.hasOwnProperty(key))\n delete updatedState[key];\n\n return updatedState;\n };\n },\n\n incrementVideoCount(key: string, count: number): (state: StateMap) => StateMap {\n return (state: StateMap) => {\n const updatedState = { ...state };\n\n if (!updatedState.hasOwnProperty(key))\n return state;\n\n if (!updatedState[key].videos)\n updatedState[key].videos = {};\n\n updatedState[key].videos.count = updatedState[key].videos.count\n ? updatedState[key].videos.count + count\n : count;\n\n return updatedState;\n };\n }\n};","import { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { BaseObject, ReorderRequest } from 'libs/shared/interfaces';\n\ninterface ReorderResult<T extends BaseObject> {\n reorderRequest: ReorderRequest;\n reorderedItems: T[];\n}\n\nexport const ReorderHelper = {\n reorder<T extends BaseObject>(items: T[], oldIdx: number, newIdx: number): ReorderResult<T> {\n if (oldIdx === newIdx)\n return { reorderedItems: items, reorderRequest: null };\n\n const reorderedItems: T[] = ArrayHelper.moveItem(items, oldIdx, newIdx);\n\n /**\n * If newIdx is the last idx then we set\n * destinationMemberId to null.\n */\n const destinationMemberId = newIdx < items.length - 1\n ? reorderedItems[newIdx + 1].id\n : null;\n\n const reorderRequest: ReorderRequest = {\n sourceMemberId: reorderedItems[newIdx].id,\n destinationMemberId\n };\n\n return { reorderedItems, reorderRequest };\n },\n\n updateState(\n dataPrefix: string,\n reorderRequest: ReorderRequest,\n data: { [key: string]: HashObject }\n ): { [key: string]: HashObject } {\n const items: BaseObject[] = [];\n const updatedData = ObjectHelper.deepClone(data);\n\n const keys = [dataPrefix]; // Maintain an ordered list of keys.\n let page = data[dataPrefix];\n const pageSize = !!page && !!page.data && page.data.length;\n\n /**\n * Flatten items\n */\n while (page) {\n if (!Array.isArray(page.data))\n break;\n\n items.push(...page.data as BaseObject[]);\n\n const nextCursor = page.pagination\n && page.pagination.cursors\n && page.pagination.cursors.next;\n\n const nextKey = !!nextCursor && `${dataPrefix}:${nextCursor}`;\n\n page = nextCursor && data[nextKey];\n\n if (page)\n keys.push(nextKey);\n }\n\n if (!items.length)\n return data;\n\n /**\n * Reorder items\n */\n const removeIdx = ArrayHelper.findIndex(items, i => i.id === reorderRequest.sourceMemberId);\n\n let reorderedItems = [...items];\n\n const itemToMove = reorderedItems.splice(removeIdx, 1);\n\n const insertIdx = reorderRequest.destinationMemberId\n ? ArrayHelper.findIndex(reorderedItems, r => r.id === reorderRequest.destinationMemberId)\n : reorderedItems.length;\n\n reorderedItems.splice(insertIdx, 0, itemToMove[0]);\n\n reorderedItems = reorderedItems.map(v => ({ id: v.id }));\n\n /**\n * Paginate reordered items\n */\n keys.forEach(key => {\n const itemsToInsert = reorderedItems.splice(0, pageSize);\n updatedData[key].data = itemsToInsert;\n });\n\n return updatedData;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { CreateOrUpdatePlaylistRequest, PlaylistCollectionIdentifier, PlaylistVideoCollectionIdentifier } from 'libs/shared/apps/playlists/interfaces';\nimport { PlaylistStateUpdateHelper } from 'libs/shared/apps/playlists/utils/PlaylistStateUpdateHelper';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Following, ReorderRequest, UserCollection, VideoTypes } from 'libs/shared/interfaces';\nimport { ObjectApiXhr } from 'libs/shared/interfaces/responses/ErrorResponse';\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nexport const PlaylistRequests = {\n // TODO: Get working with objects api (playlist count needs to include clips and ints too)\n getUserPlaylists(collectionIdentifier: PlaylistCollectionIdentifier): Flight.Request {\n const { sort, type } = collectionIdentifier;\n\n const params: HashObject = {\n sort: sort,\n query: `{limit:100}${SharedWithStatements.PLAYLIST_COLLECTION},_isClickViewCurated,_liteOwner`\n };\n\n if (collectionIdentifier.cursor)\n params.cursor = collectionIdentifier.cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v2/me/playlists/${type}`, params),\n key: collectionIdentifier.toString()\n };\n },\n\n getPlaylist(id: string, success?: (data: any) => void, error?: (data: any) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated`\n }),\n key: `playlist:${id}`,\n success,\n error\n };\n },\n\n getSharedPlaylist(\n id: string,\n shareId: string,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner`,\n shareId\n }),\n key: `shared:playlist:${id}:${shareId}`,\n success,\n error\n };\n },\n\n playlistWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `${SharedWithStatements.PLAYLIST},_isClickViewCurated,_liteOwner,videos[count()]{limit:1},interactives[count()]{limit:1},clips[count()]{limit:1}`\n }),\n key: `playlist:${id}:thumbnail:count`\n };\n },\n\n getPlaylistVideos(id: string, cursor?: string): Flight.PublicRequest {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `playlist:${id}:videos${cursor ? `:${cursor}` : ''}`\n };\n },\n\n getSharedPlaylistVideos(id: string, shareId: string, cursor?: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const params: HashObject = {\n query: `(videos[${VIDEO_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|clips[${CLIP_COLLECTION}]{status:[${CurationStatus.Published},${CurationStatus.Archived}]}|interactives[${INTERACTIVE}]){orderBy:orderindex,limit:100}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}/members`, params),\n key: `shared:playlist:${id}:${shareId}:videos:${cursor}`\n };\n },\n\n getPlaylistVideosCount(id: string): Flight.PublicRequest {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`\n }),\n key: `playlist:count:${id}`,\n normalize: false\n };\n },\n\n getSharedPlaylistVideosCount(\n id: string,\n shareId: string\n ): Flight.Request {\n const filter = `{limit:0,status:[${CurationStatus.Published},${CurationStatus.Archived}]}`;\n return {\n url: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: `videos[count()]${filter},clips[count()]${filter},interactives[count()]${filter}`,\n shareId\n }),\n key: `shared:playlist:count:${id}:${shareId}`,\n normalize: false\n };\n },\n\n getVideoPlaylists(videoId: string, userId: string, cursor?: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/playlists?query={limit:100,owner.id:[${userId}]}`,\n key: `video:playlists:${videoId}${cursor ? ':cursor' : ''}`\n };\n },\n\n createPlaylist(\n userId: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'create:playlist',\n url: `{gateway}/v1/objects/${userId}/playlists`,\n data,\n type: HttpVerbs.POST,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists'\n };\n },\n\n updatePlaylist(\n id: string,\n data: CreateOrUpdatePlaylistRequest,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'update:playlist',\n url: `{gateway}/v1/objects/${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deletePlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: 'delete:playlist',\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n always,\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}`,\n updateData: PlaylistStateUpdateHelper.deletePlaylist(`playlist:${id}`)\n }\n };\n },\n\n copyPlaylist(\n id: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/playlists/copy',\n key: 'copy:playlist',\n data: { playlistId: id },\n type: HttpVerbs.POST,\n invalidationKeys: 'user:playlists',\n success,\n error,\n always\n };\n },\n\n addToPlaylist(\n playlistId: string,\n videos: VideoTypes[],\n success?: (data: any) => void,\n error?: (data: ObjectApiXhr) => void\n ): Flight.Request {\n /**\n * Invalidate:\n * - Playlists as they are fetched with first video.\n * - Playlist video collection.\n * - Playlists for each video.\n */\n const invalidationKeys = [\n 'user:playlists',\n (new PlaylistVideoCollectionIdentifier(playlistId)).toString(),\n `playlist:${playlistId}:videos`\n ];\n\n videos.forEach(video => {\n invalidationKeys.push(`video:playlists:${video.id}`);\n });\n\n const body = videos.reduce((acc: HashObject, video: VideoTypes) => {\n if (VideoHelper.isClip(video)) {\n if (Array.isArray(acc.clips))\n acc.clips.push({ id: video.id });\n else\n acc.clips = [{ id: video.id }];\n }\n\n if (VideoHelper.isInteractive(video)) {\n if (Array.isArray(acc.interactives))\n acc.interactives.push({ id: video.id });\n else\n acc.interactives = [{ id: video.id }];\n }\n\n if (VideoHelper.isVideo(video)) {\n if (Array.isArray(acc.videos))\n acc.videos.push({ id: video.id });\n else\n acc.videos = [{ id: video.id }];\n }\n\n return acc;\n }, {});\n\n return {\n key: `add:to:playlist:${playlistId}:${videos.map(v => v.id).join(':')}`,\n url: `{gateway}/v1/objects/${playlistId}`,\n data: body,\n type: HttpVerbs.PUT,\n success,\n error,\n invalidationKeys,\n updateState: {\n keys: `playlist:${playlistId}`,\n updateData: PlaylistStateUpdateHelper.incrementVideoCount(`playlist:${playlistId}`, videos.length)\n },\n normalize: false\n };\n },\n\n removePlaylistVideo(\n playlistId: string,\n videoId: string,\n typeId: MasterType,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n let baseUrl = `{gateway}/v1/objects/${playlistId}`;\n\n if (typeId === MasterType.Clip)\n baseUrl += '/clips';\n else if (typeId === MasterType.Interactive)\n baseUrl += '/interactives';\n else\n baseUrl += '/videos';\n\n return {\n key: 'remove:playlist:video',\n url: UrlHelper.urlBuilder(baseUrl, { memberId: videoId }),\n type: HttpVerbs.DELETE,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: [\n 'user:playlists',\n `playlist:${playlistId}:videos`,\n `video:playlists:${videoId}`,\n `playlist:${playlistId}`\n ]\n };\n },\n\n getIsFollowingPlaylist(playlistId: string, userId: string): Flight.Request {\n const formatData: ((data: UserCollection) => Following) = (data: UserCollection) => (\n { objectId: playlistId, isFollowing: !!data?.data?.length }\n );\n\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?query={id:${playlistId}}`,\n key: `playlist:${playlistId}:following:${userId}`,\n formatData,\n normalize: false\n };\n },\n\n followPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}`,\n key: `follow:playlist:${playlistId}`,\n data: { followedPlaylists: playlistId },\n type: HttpVerbs.PUT,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n unfollowPlaylist(\n playlistId: string,\n userId: string,\n success?: (data: any) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${userId}/followedPlaylists?memberId=${playlistId}`,\n key: `unfollow:playlist:${playlistId}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'user:playlists', `playlist:${playlistId}`, 'shared:playlist' ],\n success,\n error,\n always\n };\n },\n\n // TODO: Use objects api and get working with clips + ints\n reorderVideos(\n id: string,\n reorderRequest: ReorderRequest,\n success?: (data: any) => void,\n error?: (data: any) => void\n ): Flight.Request {\n return {\n key: `reorder:playlist`,\n url: `{gateway}/v1/playlists/${id}/reorder`,\n data: reorderRequest,\n type: HttpVerbs.PUT,\n success,\n error,\n // Invalidate playlists as they are fetched with the first video.\n invalidationKeys: 'user:playlists',\n updateState: {\n keys: `playlist:${id}:videos`,\n updateData: (data: { [key: string]: HashObject }) =>\n ReorderHelper.updateState(`playlist:${id}:videos`, reorderRequest, data)\n }\n };\n },\n\n getVideoCandidate(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=_restrictions`,\n key: `add:to:playlist:candidate:${id}`\n };\n }\n};\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport {\n AnalyticsOptions, EntityType, EventVersion, LocationContext, ShareDescriptors, UserAction, WorkflowPhase\n} from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { CreateDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/CreateDirectShareRequest';\nimport { CreateShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/CreateShareLinkRequest';\nimport { EditDirectShareRequest } from 'libs/shared/apps/share/interfaces/requests/EditDirectShareRequest';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { RecentShareHelper } from 'libs/shared/apps/share/utils/RecentShareHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseObject, Classification, Classroom, ClassroomGroup, Clip, CurrentUser, DirectShare, InteractiveMetadata, Playlist, Series, ShareLink, ShareRecipient, Subject, User, Video } from 'libs/shared/interfaces';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport type SharableRecipient = User | Classroom | ClassroomGroup;\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n getObjectTypeId(type: SharableEntityType): MasterType {\n switch (type) {\n case 'video':\n return MasterType.Video;\n\n case 'playlist':\n return MasterType.Playlist;\n\n case 'subject':\n return MasterType.Subject;\n\n case 'series':\n return MasterType.Series;\n\n case 'interactive':\n return MasterType.Interactive;\n\n case 'clip':\n return MasterType.Clip;\n }\n },\n\n createLink(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n alerts: Alerts;\n password?: string;\n linkExpireDate?: string;\n success?: (shareLink: ShareLink) => void;\n }): void {\n const success = (newShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...newShareLink, objectName: options.entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(options.entityType), {\n actionType: UserAction.Create,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (options.success)\n options.success(newShareLink);\n };\n\n const error = () => {\n options.alerts.error(getPhrase('createLinkError', { name: options.entity.name }));\n };\n\n const data: CreateShareLinkRequest = {\n resourceId: options.entity.id,\n overrideRestrictions: false\n };\n\n if (options.password)\n data.password = options.password;\n\n if (options.linkExpireDate)\n data.linkExpireDate = options.linkExpireDate;\n\n\n Flight.fetch(options.dispatch, ShareRequests.createShareLink(data, success, error));\n },\n\n updateLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n data: EditShareLinkRequest,\n alerts: Alerts,\n onSuccess?: (data?: ShareLink) => void,\n onError?: () => void\n ): void {\n const success = (updatedShareLink: ShareLink) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShareLink);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.editShareLink(shareLink, data, success, error));\n },\n\n deleteLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n shareLink: ShareLink,\n alerts: Alerts,\n onSuccess?: () => void,\n onDone?: () => void\n ): void {\n const success = () => {\n AnalyticsHelper.logUserAction(\n { ...shareLink, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Delete,\n entity: EntityType.ShareLink\n })\n );\n\n if (onSuccess)\n onSuccess();\n\n alerts.success(getPhrase('deleteSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n alerts.error(getPhrase('deleteError', { name: entity.name, escapeText: true }));\n };\n\n const always = () => {\n if (onDone)\n onDone();\n };\n\n Flight.fetch(dispatch, ShareRequests.deleteShareLink(shareLink, success, error, always));\n },\n\n createOrUpdateDirectShare(options: {\n dispatch: Flight.Dispatch;\n entity: SharableEntity;\n entityType: SharableEntityType;\n currentUser: CurrentUser;\n recipients: ShareRecipient[];\n sentDirectShare?: DirectShare;\n message: string;\n onSuccess?: (updatedDirectShare: DirectShare) => void;\n onError?: () => void;\n onDone?: () => void;\n }): void {\n const {\n dispatch, entity, entityType, currentUser, recipients, sentDirectShare, message,\n onSuccess, onError, onDone\n } = options;\n\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n {\n id: entity.id,\n name: entity.name,\n shareCount: recipients.length\n },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Share,\n descriptor: ShareDescriptors.DirectShare,\n eventVersion: EventVersion.V3\n })\n );\n\n recipients.map(recipient => {\n RecentShareHelper.addRecentlySharedTo(currentUser.id, { id: recipient.id });\n });\n };\n\n const createData: CreateDirectShareRequest = {\n objectId: entity.id,\n objectTypeId: ShareViewHelper.getObjectTypeId(entityType),\n recipients,\n message\n };\n\n const updateData: EditDirectShareRequest = {\n recipients,\n message\n };\n\n const request = sentDirectShare\n ? ShareRequests.updateDirectShareRecipients(sentDirectShare.id, updateData, success, onError, onDone)\n : ShareRequests.createDirectShare(createData, success, onError, onDone);\n\n Flight.fetch(dispatch, request);\n },\n\n removeDirectShareRecipient(\n dispatch: Flight.Dispatch,\n recipientId: string,\n entityType: SharableEntityType,\n sentDirectShare?: DirectShare,\n onSuccess?: (updatedDirectShare: DirectShare) => void,\n onError?: () => void\n ): void {\n const success = (updatedDirectShare: DirectShare) => {\n if (onSuccess)\n onSuccess(updatedDirectShare);\n\n AnalyticsHelper.logUserAction(\n { shareCount: 1 },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Unshare\n })\n );\n };\n\n Flight.fetch(\n dispatch,\n ShareRequests.removeDirectShareRecipient(\n sentDirectShare.id,\n recipientId,\n success,\n onError\n )\n );\n },\n\n getDirectShareRecipientsRequest(customerId: string, directShare?: DirectShare): Flight.Request {\n const hasRecipients = !!directShare?.recipients?.length;\n\n return hasRecipients &&\n ShareRequests.getDirectShareRecipientsById(directShare.id, directShare.recipients, customerId);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n\n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n\n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n\n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getImageUrl(sharedResource: SharableEntity): string {\n // Videos and potentially interactives + clips\n if ('thumbnail' in sharedResource && !!sharedResource.thumbnail)\n return sharedResource.thumbnail?.url;\n\n if ('_thumbnail' in sharedResource && !!sharedResource._thumbnail)\n return sharedResource._thumbnail?.url;\n\n // Topics and playlists\n if ('cover' in sharedResource)\n return sharedResource.cover?.url;\n\n // Series\n if ('tallPoster' in sharedResource)\n return sharedResource.tallPoster?.url;\n\n return '';\n },\n\n getShareRecipientsPhrase(selections: BaseObject[]) {\n if (!selections.length)\n return;\n\n let recipients: { [type: string]: BaseObject[] } = {};\n\n if (selections.length === 1) {\n return ArrayHelper.first(selections).name;\n }\n \n selections.forEach(s => {\n let paramKey;\n \n switch (s.typeId) {\n case MasterType.User:\n paramKey = 'users';\n break;\n \n case MasterType.Classroom:\n paramKey = 'classrooms';\n break;\n \n case MasterType.ClassroomGroup:\n paramKey = 'classroomGroups';\n break;\n }\n\n const recipientType = recipients[paramKey] ?? [];\n\n recipientType.push(s);\n\n recipients = {\n ...recipients,\n [paramKey]: ArrayHelper.uniq(recipientType)\n };\n });\n\n const onlyClassroomsSelected = recipients.classrooms &&\n !recipients.classroomGroups &&\n !recipients.users;\n const onlyGroupsSelected = recipients.classroomGroups &&\n !recipients.classrooms &&\n !recipients.users;\n const onlyUsersSelected = recipients.users &&\n !recipients.classrooms &&\n !recipients.classroomGroups;\n \n if (onlyClassroomsSelected)\n return getPhrase('classrooms', { smartCount: recipients.classrooms.length });\n \n if (onlyGroupsSelected)\n return getPhrase('groups', { smartCount: recipients.classroomGroups.length });\n \n if (onlyUsersSelected)\n return getPhrase('users', { smartCount: recipients.users.length });\n \n const mixedSelections = [];\n \n if (recipients.classrooms?.length)\n mixedSelections.push(getPhrase('classrooms', { smartCount: recipients.classrooms.length }));\n \n if (recipients.classroomGroups?.length)\n mixedSelections.push(getPhrase('groups', { smartCount: recipients.classroomGroups.length }));\n \n if (recipients.users?.length)\n mixedSelections.push(getPhrase('users', { smartCount: recipients.users.length }));\n \n const lastSelection = mixedSelections.pop();\n \n return `${mixedSelections.join(', ')} ${getPhrase('and')} ${lastSelection}`;\n }\n};","export enum ShareLinkStatus {\n Expired = 'Expired',\n Active = 'Active'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { LockSvg } from 'libs/shared/images/svg/status/LockSvg';\nimport { TimerSvg } from 'libs/shared/images/svg/status/TimerSvg';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GetIconAndTextOptions {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n entity: BaseObject;\n yearGroups: YearGroup[];\n}\n\n\nexport const ShareLinkHelper = {\n getPrivateIconAndText: (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n \n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: VisibleOnSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n \n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n \n switch (privacy.privacy) {\n case 'public':\n return { icon: VisibleOnSvg, text: getPhrase('publicDescription') };\n case 'protected':\n if (privacy.overrideRestrictions)\n return { icon: VisibleOnSvg, text: getPhrase('clickViewOnly') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n case 'just_my_customer':\n if (privacy.overrideRestrictions)\n return { icon: LockSvg, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n return {\n icon: LockSvg,\n text: ShareLinkHelper.getRespectRatingText(entity, yearGroups, hasStudentExp)\n };\n /**\n * Because we plan to add restricted management later \n * for the time being we treat is the same as private \n */\n case 'restricted':\n case 'private':\n return { icon: LockSvg, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n },\n\n getIconAndText: (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return ShareLinkHelper.getPrivateIconAndText(options);\n \n if (!linkExpireDate)\n return { icon: LockSvg, text: getPhrase('password') };\n \n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n \n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n \n return { icon: TimerSvg, text };\n }\n \n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n \n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n \n return { icon: LockSvg, text };\n },\n\n getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n \n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n \n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n \n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n \n /**\n * Restrictions without a year level are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n \n const rating = VideoHelper.getRating(video);\n \n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n \n for (const yearGroup of yearGroups) {\n /**\n * If our year level is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n \n /**\n * If the restriction is higher than this year level, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n \n /**\n * If therating is higher than this year level's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n \n /**\n * If our year level is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n \n /**\n * If no year levels are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n \n \n /**\n * If there's only one year level, and it's allowed, then we can just\n * say that everyone in your school can access it.\n */\n if (yearGroups.length === 1)\n return getPhrase('clickViewOnly');\n \n /**\n * We differentiate the copy if it's the highest year level or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n \n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n }\n};"],"names":["DEFAULT_STORAGE_LIMIT","RecentItemHelper","cacheKey","dataSource","expire","recentItems","ids","options","id","limit","idIndex","omitted","i","getCacheKey","userId","RecentShareHelper","LocalStorageHelper","BaseCollectionIdentifier","collectionPrefix","sort","cursor","params","ErrorHelper","DevError","PlaylistVideoCollectionIdentifier","PlaylistStateUpdateHelper","key","state","updatedState","count","ReorderHelper","items","oldIdx","newIdx","reorderedItems","ArrayHelper","destinationMemberId","reorderRequest","dataPrefix","data","updatedData","ObjectHelper","keys","page","pageSize","nextCursor","nextKey","removeIdx","itemToMove","insertIdx","r","v","itemsToInsert","PlaylistRequests","collectionIdentifier","type","SharedWithStatements","UrlHelper","success","error","shareId","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","CurationStatus","PermissionFilterOption","filter","videoId","always","HttpVerbs","playlistId","videos","invalidationKeys","video","body","acc","VideoHelper","typeId","baseUrl","MasterType","formatData","_a","endpoints","videoCount","SeriesRequests","queryStringObj","sortFilter","VideoSortHelper","k","PublicWithStatement","namespace","getPhrase","LanguageService","ShareViewHelper","newShareLink","AnalyticsHelper","UserAction","EntityType","EventVersion","Flight.fetch","ShareRequests","dispatch","entity","entityType","shareLink","alerts","onSuccess","onError","updatedShareLink","onDone","currentUser","recipients","sentDirectShare","message","updatedDirectShare","ShareDescriptors","recipient","createData","updateData","request","recipientId","customerId","directShare","LocationContext","WorkflowPhase","Flight.useBasicFetch","VideoRequests","ClassificationRequests","InteractiveRequests","ClipRequests","sharedResource","_b","_c","_d","selections","s","paramKey","recipientType","onlyClassroomsSelected","onlyGroupsSelected","onlyUsersSelected","mixedSelections","lastSelection","ShareLinkStatus","ShareLinkHelper","entityTypeId","privacy","hasStudentExp","yearGroups","VisibleOnSvg","LockSvg","linkExpireDate","isPasswordProtected","status","isToday","DateHelper","dayDifference","text","TimerSvg","restriction","RestrictionHelper","rating","maxYearGroup","minAllowedYearGroup","yearGroup"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{s as i,bJ as f,bK as c,bM as j,j as o}from"./app-BDrXtKwD.js";var a=(e=>(e.Playlists="playlists",e.Series="series",e.Videos="videos",e.PinnedVideos="pinnedVideos",e))(a||{}),n=(e=>(e.Subject="Subject",e.Curriculum="Curriculum",e.StreamableLearning="StreamableLearning",e))(n||{});const m=e=>`subjectpresentationaudiences.id:[${e.join(",")}]`,L={topicsFromAllAvailablePresentations(e){const s={filterType:"topics",presentationId:e};return{url:i.urlBuilder("{gateway}/v1/search/filters",s),publicUrl:i.urlBuilder("/api/search/filters",s),key:"classification:availableTopics",normalize:!1}},availablePresentations(e){const s={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations/available",s),publicUrl:i.urlBuilder("/api/subjects/presentations/available",s),key:`available:presentations:${e}`,normalizeOptions:{namespace:"presentation"}}},topLevelTopics(e){const s={query:c.CLASSIFICATION_COLLECTION,sort:"alphabetical"};return{url:i.urlBuilder(`{gateway}/v1/subjects/presentations/${e}/classifications`,s),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}/classifications`,s),key:`presentation:${e}:classifications`}},presentationById(e){return{url:`{gateway}/v1/subjects/presentations/${e}`,publicUrl:`/api/subjects/presentations/${e}`,key:`presentation:${e}`}},presentationBySlug(e,s,r){const t={type:r.toLowerCase(),contentRegion:s};return{url:i.urlBuilder(`/api/subjects/presentations/${e}`,t),publicUrl:i.urlBuilder(`/api/subjects/presentations/${e}`,t),key:`current:presentation:${r.toLowerCase()}:${s}:${e??""}`,bootstrapName:"presentation",normalizeOptions:{namespace:"presentation"}}},presentation(e,s){const r={type:e==null?void 0:e.toLowerCase()};return{url:i.urlBuilder("{gateway}/v1/users/me/presentations",r),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}`,r),key:`current:presentation${e?`:${e.toLowerCase()}`:""}${s?`:${s}`:""}`,normalizeOptions:{namespace:"presentation"}}},classifications(){return{url:i.urlBuilder("{gateway}/v1/users/me/classifications",{query:c.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),publicUrl:i.urlBuilder("/api/subjects/classifications",{query:j.CLASSIFICATION_COLLECTION,type:n.Subject.toLowerCase()}),key:"classifications"}},classification(e,s,r){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}`,{query:c.CLASSIFICATION(s)}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}`,{query:j.CLASSIFICATION}),key:`classification:${e}`,error:r}},path(e,s){const r={type:s};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/path`,r),publicUrl:`/api/subjects/classifications/${e}/path`,key:`classification:${e}:path`}},paths(e){return{url:`/api/subjects/classifications/${e}/paths`,key:`classification:${e}:paths`}},children(e){return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/children`,{query:c.CLASSIFICATION_COLLECTION}),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/children`,{query:j.CLASSIFICATION_COLLECTION}),key:`classification:${e}:children`}},videos(e,s,r){if(!s)return;let t="limit:100,orderbydesc:timestamp";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}(videoCollection),subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.PinnedVideos}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.PinnedVideos}`,l),key:`classification:${e}:${a.PinnedVideos}:${r.join(":")}`}},playlists(e,s,r){if(!s)return;let t="limit:100,orderby:name";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.PLAYLIST_COLLECTION},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Playlists}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Playlists}`,l),key:`classification:${e}:${a.Playlists}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.cover)==null?void 0:b.url})}}}},series(e,s,r){if(!s)return;let t="limit:100";r.length&&(t+=`,${m(r)}`);const l={query:`{${t}}${c.SERIES},subjectpresentationaudiences{presentationId:${s}}`,permissionFilterOption:f.StripMetadata};return{url:i.urlBuilder(`{gateway}/v1/subjects/classifications/${e}/${a.Series}`,l),publicUrl:i.urlBuilder(`/api/subjects/classifications/${e}/${a.Series}`,l),key:`classification:${e}:${a.Series}:${r.join(":")}`,formatData:u=>{var p;if(u)return{...u,data:(p=u.data)==null?void 0:p.filter($=>{var b;return(b=$.tallPoster)==null?void 0:b.url})}}}},curriculumLinks(e,s){return{url:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),publicUrl:i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Curriculum.toLowerCase()}),key:`curriculum:links:${e}:${s}`,normalize:!1}},subjectLinks(e,s){const r=i.urlBuilder(`/api/subjects/presentations/${s}/objects/${e}/classifications/paths`,{type:n.Subject.toLowerCase()});return{url:r,publicUrl:r,key:`subject:links:${e}:${s}`,normalize:!1}},getMappedCurriculums(e,s){const r={type:n.Curriculum.toLowerCase()};return{url:i.urlBuilder(`{gateway}/v1/objects/${e}/presentations`,r),publicUrl:i.urlBuilder(`/api/subjects/${e}/presentations`,{...r,pid:s}),key:`mapped:curriculums:${e}:${s.join(",")}`,normalize:!1}},regionAlternatives(e,s,r,t){return{url:`/api/subjects/classifications/${e}/region-alternatives`,publicUrl:`/api/subjects/classifications/${e}/region-alternatives`,key:`classification:regionAlternatives:${e}`,normalize:!1,success:s,error:r,always:t}}};function S(e){return o.jsxs("svg",{...e,children:[o.jsx("defs",{children:o.jsx("path",{id:"a",d:"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6",fill:"currentColor"})}),o.jsx("use",{xlinkHref:"#a",fill:"#333"})]})}function d(e){return o.jsx("svg",{...e,children:o.jsx("path",{fill:"currentColor",d:"M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z"})})}export{L as C,d as L,n as P,S as V};
2
+ //# sourceMappingURL=BkuaVwYH.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BkuaVwYH.chunk.js","sources":["../../../../libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","../../../../libs/shared/src/enums/PresentationType.ts","../../../../libs/shared/src/flight-requests/ClassificationRequests.ts","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx","../../../../libs/shared/src/images/svg/objects/LinkSvg.tsx"],"sourcesContent":["export enum ClassificationMemberType {\n Playlists = 'playlists',\n Series = 'series',\n Videos = 'videos',\n PinnedVideos = 'pinnedVideos'\n}","export enum PresentationType {\n Subject = 'Subject',\n Curriculum = 'Curriculum',\n StreamableLearning = 'StreamableLearning'\n}","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { PlaylistCollection, RegionAlternative, SeriesCollection } from 'libs/shared/interfaces';\n\nconst getClassificationMemberFilter = (ids: string[]) => `subjectpresentationaudiences.id:[${ids.join(',')}]`;\n\nexport const ClassificationRequests = {\n topicsFromAllAvailablePresentations(ids: string[]): Flight.PublicRequest {\n const params = { filterType: 'topics', presentationId: ids };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/search/filters', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/filters', params),\n key: 'classification:availableTopics',\n normalize: false\n };\n },\n\n availablePresentations(type?: PresentationType): Flight.PublicRequest {\n const queryStringOpts = { type: type?.toLowerCase() };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations/available', queryStringOpts),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/presentations/available', queryStringOpts),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n topLevelTopics(presentationId: string): Flight.PublicRequest {\n const params = {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n sort: 'alphabetical'\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/presentations/${presentationId}/classifications`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/classifications`, params),\n key: `presentation:${presentationId}:classifications`\n };\n },\n\n presentationById(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}`,\n publicUrl: `/api/subjects/presentations/${presentationId}`,\n key: `presentation:${presentationId}`\n };\n },\n\n presentationBySlug(presentationSlug: string, contentRegion: string, type: PresentationType): Flight.PublicRequest {\n const params = {\n type: type.toLowerCase(),\n contentRegion: contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n key: `current:presentation:${type.toLowerCase()}:${contentRegion}:${presentationSlug ?? ''}`,\n bootstrapName: 'presentation',\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n presentation(type: PresentationType, presentationId?: string): Flight.PublicRequest {\n const params = {\n type: type?.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations', params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}`, params),\n key: `current:presentation${type ? `:${type.toLowerCase()}` : ''}${presentationId ? `:${presentationId}` : ''}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n classifications(): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications', {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/classifications', {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n key: `classifications`\n };\n },\n\n classification(id: string, userId?: string, error?: (xhr: Xhr) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}`, {\n query: SharedWithStatements.CLASSIFICATION(userId)\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}`, {\n query: PublicWithStatement.CLASSIFICATION\n }),\n key: `classification:${id}`,\n error\n };\n },\n\n path(id: string, presentationType?: PresentationType): Flight.PublicRequest {\n const params = { type: presentationType };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/path`, params),\n publicUrl: `/api/subjects/classifications/${id}/path`,\n key: `classification:${id}:path`\n };\n },\n\n paths(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/paths`,\n key: `classification:${id}:paths`\n };\n },\n\n children(id: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/children`, {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/children`, {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION\n }),\n key: `classification:${id}:children`\n };\n },\n\n videos(\n id: string,\n presentationId: string,\n activeAudiences: string[]\n ): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderbydesc:timestamp';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}(videoCollection),subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.PinnedVideos}:${activeAudiences.join(':')}`\n };\n },\n\n /**\n * This request should only be used when displaying the playlist widget within a classification/topic page.\n * The current behaviour is to filter out any playlist that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderby:name';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\n formatData: (playlist: PlaylistCollection): PlaylistCollection => {\n if (!playlist)\n return;\n\n return {\n ...playlist,\n data: playlist.data?.filter(p => p.cover?.url)\n };\n }\n };\n },\n\n /**\n * This request should only be used when displaying the series widget within a classification/topic page.\n * The current behaviour is to filter out any series that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.SERIES}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\n formatData: (series: SeriesCollection): SeriesCollection => {\n if (!series)\n return;\n\n return {\n ...series,\n data: series.data?.filter(s => s.tallPoster?.url)\n };\n }\n };\n },\n\n curriculumLinks(id: string, curriculumId: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n key: `curriculum:links:${id}:${curriculumId}`,\n normalize: false\n };\n },\n\n subjectLinks(id: string, presentationId: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Subject.toLowerCase()\n });\n\n return {\n url,\n publicUrl: url,\n key: `subject:links:${id}:${presentationId}`,\n normalize: false\n };\n },\n\n getMappedCurriculums(\n id: string,\n pids: string[]\n ): Flight.PublicRequest {\n const params: HashObject = {\n type: PresentationType.Curriculum.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/presentations`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/${id}/presentations`, { ...params, pid: pids }),\n key: `mapped:curriculums:${id}:${pids.join(',')}`,\n normalize: false\n };\n },\n\n regionAlternatives(\n classificationId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n publicUrl: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n key: `classification:regionAlternatives:${classificationId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='a'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#a' fill='#333' />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function LinkSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M17.834 5.916a2.5 2.5 0 0 0-3.536 0L12.53 7.684a.5.5 0 0 1-.707-.707l1.768-1.768a3.5 3.5 0 1 1 4.95 4.95l-3.687 3.687a3.786 3.786 0 0 1-5.354 0l-.152-.152a.5.5 0 0 1 .707-.707l.152.152a2.786 2.786 0 0 0 3.94 0l3.687-3.687a2.5 2.5 0 0 0 0-3.536m-8.94 3.99a3.643 3.643 0 0 1 5.152 0l.606.607a.5.5 0 1 1-.707.707l-.607-.606a2.643 2.643 0 0 0-3.737 0l-3.435 3.434a2.5 2.5 0 1 0 3.536 3.536l1.414-1.415a.5.5 0 0 1 .707.707l-1.414 1.415a3.5 3.5 0 1 1-4.95-4.95z'\n />\n </svg>\n );\n}\n"],"names":["ClassificationMemberType","PresentationType","getClassificationMemberFilter","ids","ClassificationRequests","params","UrlHelper","type","queryStringOpts","presentationId","SharedWithStatements","presentationSlug","contentRegion","PublicWithStatement","id","userId","error","presentationType","activeAudiences","filter","queryStringObj","PermissionFilterOption","playlist","_a","p","series","s","curriculumId","url","pids","classificationId","success","always","VisibleOnSvg","props","jsxs","jsx","LinkSvg"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import{j as t,p as m,c0 as j,L as C,c1 as S,h as p,_ as M,aa as $,c as b,V as v,v as g}from"./app-BDrXtKwD.js";import{P as x}from"./CRnFAzfK.chunk.js";import{a as R}from"./Dwsvd8p8.chunk.js";import{b as H,I as L,e as k,f as u,g as T,a as A}from"./BUXFRkJU.chunk.js";import{P as N,a as y}from"./K65Dt7jg.chunk.js";import{D as E}from"./Cmh_kkGl.chunk.js";import{b as O,I as D}from"./D9PHjOfy.chunk.js";const P="_container_18up8_1",U="_interaction_18up8_6",w={container:P,interaction:U};function F(e,n){return e.interactions.find(i=>i.id===n.id)||e.interactions[0]}function K(e){return e.duration?t.jsx(t.Fragment,{children:e.interactive.timepoints.map((n,i)=>{if(!n.interactions.length)return t.jsx(t.Fragment,{});const r=F(n,e.selectedInteraction),c=r.id===e.selectedInteraction.id,s=c?O.getTypeInfo(r.typeId).bgClassName:"bg-gray-500",a=n.visibleAt/1e3/e.duration*100;return t.jsxs("div",{className:`${w.container} text-center`,style:{left:`${a}%`},children:[t.jsx("div",{className:`${w.interaction} ${s}`}),!!c&&t.jsx("div",{children:E.ToDisplayDuration(n.visibleAt)})]},i)})}):t.jsx(t.Fragment,{})}const V="_bar_1r368_1",q={bar:V},G="shared.interactionResultsSummary",f=C.encloseNamespace(G);function W(e){return e._parentClip?e._parentClip.endTime-e._parentClip.startTime:e._parentVideo.duration?e._parentVideo.duration/1e3:0}function Y(e){const n=m.useMemo(()=>H(e.interaction,e.results),[e.interaction,e.results]);return t.jsxs("div",{className:"px-1 pt-1",children:[t.jsx("div",{className:"d-flex",children:t.jsx(D,{interaction:e.interaction,iconClassName:"flex-shrink-0"})}),t.jsx("div",{className:`my-4 ${q.bar}`,children:t.jsx(K,{interactive:e.interactive,duration:W(e.interactiveMetadata),selectedInteraction:e.interaction})}),t.jsxs("div",{className:"row pt-1 pb-2",children:[t.jsx("div",{className:"col-6 pe-1",children:t.jsxs("div",{className:"bg-light rounded p-2 h-100",children:[!n.awaitingMarking&&t.jsxs("div",{className:"d-flex align-items-center justify-content-between",children:[t.jsx("strong",{children:f("correctlyAnswered")}),t.jsx(N,{percentage:n.percentCorrect,layout:y.LabelOnly})]}),!!n.awaitingMarking&&t.jsx("div",{className:"d-flex align-items-center justify-content-center",children:t.jsx("strong",{children:t.jsx("em",{children:f("pending")})})})]})}),t.jsx("div",{className:"col-6 ps-1",children:t.jsxs("div",{className:"bg-light rounded h-100 p-2 d-flex align-items-center justify-content-between",children:[t.jsx("strong",{children:f("unanswered")}),t.jsx("span",{children:n.unanswered})]})})]})]})}const z=m.forwardRef(({interaction:e,interactive:n,interactiveMetadata:i,results:r,...c},s)=>t.jsx("div",{className:"popover-lg",children:t.jsx(j,{id:`interaction-results-summary-${e.id}`,ref:s,...c,children:t.jsx(j.Body,{children:t.jsx(Y,{interaction:e,interactive:n,interactiveMetadata:i,results:r})})})})),J="_header_2be6f_1",Q="_row_2be6f_4",X="_fixedTable_2be6f_7",Z="_interactionHeaderCellOuter_2be6f_26",B="_hasResults_2be6f_29",ee="_interactionHeaderCellInner_2be6f_36",te="_resultsCellOuter_2be6f_40",ne="_correct_2be6f_56",re="_incorrect_2be6f_70",se="_awaitingMarking_2be6f_80",ie="_unanswered_2be6f_90",ae="_highlightColumn_2be6f_100",ce="_resultsCellInner_2be6f_110",le="_highlightResultsRow_2be6f_121",oe="_resultsRow_2be6f_137",l={header:J,row:Q,fixedTable:X,interactionHeaderCellOuter:Z,hasResults:B,interactionHeaderCellInner:ee,resultsCellOuter:te,correct:ne,incorrect:re,awaitingMarking:se,unanswered:ie,highlightColumn:ae,resultsCellInner:ce,highlightResultsRow:le,resultsRow:oe};function ue(e){var n;return t.jsx(S,{trigger:(n=e.results.students)!=null&&n.length?"click":null,placement:"bottom",overlay:t.jsx(z,{interaction:e.interaction,interactive:e.interactive,interactiveMetadata:e.interactiveMetadata,results:e.results}),rootClose:!0,children:t.jsx("div",{className:`text-center h-100
2
+ d-flex align-items-center justify-content-center
3
+ ${l.interactionHeaderCellInner}`,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,children:t.jsx("div",{className:"p-1 position-relative",children:e.interactionNumber})})})}function de(e){return t.jsx("svg",{...e,children:t.jsx("path",{fillRule:"evenodd",d:"M7 11h10c.554 0 1 .446 1 1s-.446 1-1 1H7c-.554 0-1-.446-1-1s.446-1 1-1",fill:"currentColor"})})}function me(e){if(e===u.Correct)return M;if(e===u.Incorrect)return $;if(e===u.UnAnswered)return de}function he(e){let n=`${l.resultsCellInner} h-100 position-relative`;return e===u.Correct&&(n+=` ${l.correct} text-success`),e===u.Incorrect&&(n+=` ${l.incorrect} text-danger`),e===u.AwaitingMarking&&(n+=` ${l.awaitingMarking}`),e===u.UnAnswered&&(n+=` ${l.unanswered} text-warning`),n}function ge(e){const n=L.isInteractionCorrect(e.interaction,k(e.studentResults)),i=me(n);return t.jsxs("div",{className:he(n),children:[!!i&&t.jsx(p,{svg:i}),n===u.AwaitingMarking&&t.jsx(x,{})]})}const fe="interactives.studentResultsTable",_=C.encloseNamespace(fe),xe=60;function d(e){return t.jsx("div",{className:`d-flex align-items-center p-2 h-100 ${e.className??""}`,children:e.children})}function h(e){return t.jsx(d,{className:e.column.isSorted&&"fw-bold",children:_(e.phraseKey)})}function ye(e){var r;const[n]=b(v.ANONYMISE_USERS),i=!!((r=e.students)!=null&&r.length);return m.useMemo(()=>[{Header:({column:s})=>t.jsx(h,{column:s,phraseKey:"name"}),accessor:"user",Cell:({value:s})=>t.jsx(d,{children:t.jsx("span",{className:"text-truncate",children:R(s,n)})}),disableSortBy:!i},{Header:({column:s})=>t.jsx(h,{column:s,phraseKey:"unanswered"}),accessor:"summary.unanswered",sortType:"basic",sortDescFirst:!0,disableSortBy:!i,Cell:({value:s})=>t.jsx(d,{children:s})},{Header:({column:s})=>t.jsx(h,{column:s,phraseKey:"score"}),accessor:"summary",id:"score",Cell:({value:s})=>s.awaitingMarking?t.jsx(d,{children:t.jsx(x,{title:_("markingRequired"),className:"flex-grow-1",showLabel:!0})}):t.jsx(d,{children:`${s.correct}/${s.answered+s.unanswered}`}),width:125,sortDescFirst:!0,disableSortBy:!i},{Header:({column:s})=>t.jsx(h,{column:s,phraseKey:"percentage"}),accessor:"summary",id:"percentage",Cell:({value:s})=>s.awaitingMarking?t.jsx(d,{children:t.jsx(x,{title:_("markingRequired"),className:"flex-grow-1",showLabel:!0})}):t.jsx(d,{children:t.jsx(N,{percentage:s.percentCorrect,layout:y.LabelBefore,className:"flex-grow-1"})}),width:125,sortDescFirst:!0,disableSortBy:!i}],[n,i])}function Ie(e,n,i,r,c){return m.useMemo(()=>A(e).map((a,o)=>({Header:()=>t.jsx(ue,{interaction:a,results:i,interactive:e,interactiveMetadata:n,interactionNumber:o+1,onMouseEnter:()=>r(o),onMouseLeave:()=>r(null)}),accessor:"results",id:a.id,disableSortBy:!0,width:xe,Cell:({row:{original:I}})=>t.jsx(ge,{interaction:a,studentResults:I})})),[c])}function Se(e,n,i,r){const[c]=b(v.ANONYMISE_USERS);return m.useMemo(()=>{const s=[];if(n.students.forEach(a=>{s.push({...a,summary:T(e,a)})}),(r==null?void 0:r.id)==="user"){const a=g.sortBy(s,o=>R(o.user,c));return r.desc?a.reverse():a}if((r==null?void 0:r.id)==="summary.unanswered"){const a=g.sortBy(s,o=>o.summary.unanswered);return r.desc?a.reverse():a}if((r==null?void 0:r.id)==="score"||(r==null?void 0:r.id)==="percentage"){const a=g.sortBy(s,o=>o.summary.awaitingMarking?-1:o.summary.percentCorrect);return r.desc?a.reverse():a}return s},[i,r,c])}function pe(e,n){if(!e)return;const i=e.querySelectorAll(`.${l.resultsRow}`);i==null||i.forEach(r=>{r.childNodes.forEach((c,s)=>{c.classList.remove(l.highlightColumn),s===n&&c.classList.add(l.highlightColumn)})})}function Me(e,n){if(!e)return;const i=e.querySelectorAll(`.${l.resultsRow}`);i==null||i.forEach((r,c)=>{r.classList.remove(l.highlightResultsRow),c===n&&r.classList.add(l.highlightResultsRow)})}export{xe as R,Ie as a,Se as b,Me as c,pe as h,l as s,ye as u};
4
+ //# sourceMappingURL=BmVEWaPp.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BmVEWaPp.chunk.js","sources":["../../../../libs/shared/src/apps/analytics/components/student-results/interactions-bar/InteractionsBar.tsx","../../../../libs/shared/src/apps/analytics/components/student-results/interaction-results-summary/InteractionResultsSummary.tsx","../../src/apps/interactives/views/interactive-student-results-list/components/student-results-table/InteractionHeaderCell.tsx","../../../../libs/shared/src/images/svg/actions/MinusSvg.tsx","../../src/apps/interactives/views/interactive-student-results-list/components/student-results-table/StudentResultCell.tsx","../../src/apps/interactives/views/interactive-student-results-list/components/student-results-table/StudentResultsTableUtils.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Interaction, Interactive, Timepoint } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { InteractionTypeHelper } from 'libs/shared/utils/interaction-type-helper/InteractionTypeHelper';\n\nimport styles from './interactions-bar.module.scss';\n\nfunction getInteraction(timepoint: Timepoint, selectedInteraction: Interaction): Interaction {\n return timepoint.interactions.find(i => i.id === selectedInteraction.id) || timepoint.interactions[0];\n}\n\ninterface InteractionBarProps {\n interactive: Interactive;\n duration: number;\n selectedInteraction: Interaction;\n}\n\nexport function InteractionsBar(props: InteractionBarProps): React.ReactElement {\n if (!props.duration)\n return <></>;\n\n return (\n <>\n {props.interactive.timepoints.map((t, i) => {\n if (!t.interactions.length)\n return <></>;\n\n const interaction = getInteraction(t, props.selectedInteraction);\n const isSelected = interaction.id === props.selectedInteraction.id;\n\n const bgClassName = isSelected ? (InteractionTypeHelper.getTypeInfo(interaction.typeId)).bgClassName : 'bg-gray-500';\n\n const left = ((t.visibleAt / 1000) / props.duration) * 100;\n\n return (\n <div\n key={i}\n className={`${styles.container} text-center`}\n style={{ left: `${left}%` }}\n >\n <div className={`${styles.interaction} ${bgClassName}`} />\n {!!isSelected &&\n <div>\n {DurationHelper.ToDisplayDuration(t.visibleAt)}\n </div>\n }\n </div>\n );\n })}\n </>\n );\n}","import React from 'react';\nimport { Popover } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InteractionsBar } from 'libs/shared/apps/analytics/components/student-results/interactions-bar/InteractionsBar';\nimport { getInteractionResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interaction, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport styles from './interaction-results-summary.module.scss';\n\nconst namespace = 'shared.interactionResultsSummary';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getDuration(interactiveMetadata: InteractiveMetadata): number {\n if (interactiveMetadata._parentClip)\n return interactiveMetadata._parentClip.endTime - interactiveMetadata._parentClip.startTime;\n\n if (!interactiveMetadata._parentVideo.duration)\n return 0;\n\n return interactiveMetadata._parentVideo.duration / 1000;\n}\n\ninterface InteractionResultsSummaryProps {\n interaction: Interaction;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n}\n\nfunction InteractionResultsSummary(props: InteractionResultsSummaryProps): JSX.Element {\n const summary = React.useMemo(\n () => getInteractionResultsSummary(props.interaction, props.results),\n [ props.interaction, props.results ]\n );\n\n return (\n <div className='px-1 pt-1'>\n <div className='d-flex'>\n <InteractionLabel\n interaction={props.interaction}\n iconClassName='flex-shrink-0'\n />\n </div>\n <div className={`my-4 ${styles.bar}`}>\n <InteractionsBar\n interactive={props.interactive}\n duration={getDuration(props.interactiveMetadata)}\n selectedInteraction={props.interaction}\n />\n </div>\n <div className='row pt-1 pb-2'>\n <div className='col-6 pe-1'>\n <div className='bg-light rounded p-2 h-100'>\n {!summary.awaitingMarking &&\n <div className='d-flex align-items-center justify-content-between'>\n <strong>{getPhrase('correctlyAnswered')}</strong>\n <PercentageIndicator\n percentage={summary.percentCorrect}\n layout={PercentageIndicatorLayout.LabelOnly}\n />\n </div>\n }\n {!!summary.awaitingMarking &&\n <div className='d-flex align-items-center justify-content-center'>\n <strong>\n <em>{getPhrase('pending')}</em>\n </strong>\n </div>\n }\n </div>\n </div>\n <div className='col-6 ps-1'>\n <div className='bg-light rounded h-100 p-2 d-flex align-items-center justify-content-between'>\n <strong>{getPhrase('unanswered')}</strong>\n <span>{summary.unanswered}</span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nconst InteractionResultsSummaryPopover = React.forwardRef((\n { interaction, interactive, interactiveMetadata, results, ...popoverProps }: InteractionResultsSummaryProps,\n ref: React.MutableRefObject<HTMLElement>\n) => {\n return (\n <div className='popover-lg'>\n <Popover\n id={`interaction-results-summary-${interaction.id}`}\n ref={ref as any}\n {...popoverProps}\n >\n <Popover.Body>\n <InteractionResultsSummary\n interaction={interaction}\n interactive={interactive}\n interactiveMetadata={interactiveMetadata}\n results={results}\n />\n </Popover.Body>\n </Popover>\n </div>\n );\n});\n\nexport { InteractionResultsSummaryPopover as InteractionResultsSummary };","import React from 'react';\nimport { OverlayTrigger } from 'react-bootstrap';\n\nimport {\n InteractionResultsSummary\n} from 'libs/shared/apps/analytics/components/student-results/interaction-results-summary/InteractionResultsSummary';\nimport { Interaction, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport styles from './student-results-table.module.scss';\n\ninterface InteractionHeaderCellProps {\n interaction: Interaction;\n results: InteractiveResultSet;\n interactionNumber: number;\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport function InteractionHeaderCell(props: InteractionHeaderCellProps): JSX.Element {\n return (\n <OverlayTrigger\n trigger={props.results.students?.length ? 'click' : null}\n placement='bottom'\n overlay={\n <InteractionResultsSummary\n interaction={props.interaction}\n interactive={props.interactive}\n interactiveMetadata={props.interactiveMetadata}\n results={props.results}\n />\n }\n rootClose\n >\n <div\n className={\n `text-center h-100\n d-flex align-items-center justify-content-center\n ${styles.interactionHeaderCellInner}`\n }\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n <div className='p-1 position-relative'>\n {props.interactionNumber}\n </div>\n </div>\n </OverlayTrigger>\n );\n}","import React from 'react';\n\nexport function MinusSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fillRule='evenodd'\n d='M7 11h10c.554 0 1 .446 1 1s-.446 1-1 1H7c-.554 0-1-.446-1-1s.446-1 1-1'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\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 { MinusSvg } from 'libs/shared/images/svg/actions/MinusSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\nimport { Interaction, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\nimport styles from './student-results-table.module.scss';\n\nfunction getSvg(correctness: InteractionCorrectness) {\n if (correctness === InteractionCorrectness.Correct)\n return CheckSvg;\n\n if (correctness === InteractionCorrectness.Incorrect)\n return CloseSvg;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n return MinusSvg;\n}\n\nfunction getClassName(correctness: InteractionCorrectness): string {\n let className = `${styles.resultsCellInner} h-100 position-relative`;\n\n if (correctness === InteractionCorrectness.Correct)\n className += ` ${styles.correct} text-success`;\n\n if (correctness === InteractionCorrectness.Incorrect)\n className += ` ${styles.incorrect} text-danger`;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n className += ` ${styles.awaitingMarking}`;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n className += ` ${styles.unanswered} text-warning`;\n\n return className;\n}\n\ninterface StudentResultCellProps {\n interaction: Interaction;\n studentResults: StudentResults;\n}\n\nexport function StudentResultCell(props: StudentResultCellProps): JSX.Element {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(\n props.interaction,\n getStudentResult(props.studentResults)\n );\n\n const svg = getSvg(correctness);\n\n return (\n <div className={getClassName(correctness)}>\n {!!svg && <SvgContainer svg={svg} />}\n {correctness === InteractionCorrectness.AwaitingMarking &&\n <PendingIndicator />\n }\n </div>\n );\n}","import React from 'react';\nimport { CellProps, Column, ColumnInstance, SortingRule } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PendingIndicator } from 'libs/shared/apps/analytics/components/pending-indicator/PendingIndicator';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { getStudentResultsSummary } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { PercentageIndicator, PercentageIndicatorLayout } from 'libs/shared/components/percentage-indicator/PercentageIndicator';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getInteractions } from 'libs/shared/utils/InteractiveHelper';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\nimport { InteractionHeaderCell } from './InteractionHeaderCell';\nimport { StudentResultCell } from './StudentResultCell';\n\nimport styles from './student-results-table.module.scss';\n\nconst namespace = 'interactives.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const RESULTS_COL_WIDTH = 60;\n\ninterface CellWrapperProps {\n className?: string;\n}\n\nfunction CellWrapper(props: React.PropsWithChildren<CellWrapperProps>): JSX.Element {\n return (\n <div className={`d-flex align-items-center p-2 h-100 ${props.className ?? ''}`}>\n {props.children}\n </div>\n );\n}\n\ninterface HeaderCellProps {\n column: ColumnInstance<StudentResultsWithSummary>;\n phraseKey: string;\n}\n\nfunction HeaderCell(props: HeaderCellProps): JSX.Element {\n return (\n <CellWrapper className={props.column.isSorted && 'fw-bold'}>\n {getPhrase(props.phraseKey)}\n </CellWrapper>\n );\n}\n\nexport function useGetFixedColumns(results: InteractiveResultSet): Column<StudentResultsWithSummary>[] {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n const hasResults = !!results.students?.length;\n\n return React.useMemo(() => {\n const cols: Column<StudentResultsWithSummary>[] = [\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='name' />,\n accessor: 'user',\n Cell: ({ value }) => (\n <CellWrapper>\n <span className='text-truncate'>{anonymiseUserName(value, anonymiseUsers)}</span>\n </CellWrapper>\n ),\n disableSortBy: !hasResults\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='unanswered' />,\n accessor: 'summary.unanswered' as keyof StudentResultsWithSummary,\n sortType: 'basic', // Default is 'alphanumeric' which would treat the numbers as strings\n sortDescFirst: true,\n disableSortBy: !hasResults,\n Cell: ({ value }: CellProps<StudentResultsWithSummary, any>) => <CellWrapper>{value}</CellWrapper>\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='score' />,\n accessor: 'summary',\n id: 'score',\n Cell: ({ value }) => {\n if (value.awaitingMarking) {\n return (\n <CellWrapper>\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n showLabel\n />\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n {`${value.correct}/${value.answered + value.unanswered}`}\n </CellWrapper>\n );\n },\n width: 125,\n sortDescFirst: true,\n disableSortBy: !hasResults\n },\n {\n Header: ({ column }) => <HeaderCell column={column} phraseKey='percentage' />,\n accessor: 'summary',\n id: 'percentage',\n Cell: ({ value }) => {\n if (value.awaitingMarking) {\n return (\n <CellWrapper>\n <PendingIndicator\n title={getPhrase('markingRequired')}\n className='flex-grow-1'\n showLabel\n />\n </CellWrapper>\n );\n }\n\n return (\n <CellWrapper>\n <PercentageIndicator\n percentage={value.percentCorrect}\n layout={PercentageIndicatorLayout.LabelBefore}\n className='flex-grow-1'\n />\n </CellWrapper>\n );\n },\n width: 125,\n sortDescFirst: true,\n disableSortBy: !hasResults\n }\n ];\n\n return cols;\n }, [ anonymiseUsers, hasResults ]);\n}\n\n/**\n * Returns memoized table columns. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetResultColumns(\n interactive: Interactive,\n interactiveMetadata: InteractiveMetadata,\n results: InteractiveResultSet,\n onColumnHover: (index?: number) => void,\n refreshData: boolean\n): Column<StudentResultsWithSummary>[] {\n return React.useMemo(() => {\n const interactions = getInteractions(interactive);\n\n return interactions.map((interaction, index) => {\n const col: Column<StudentResultsWithSummary> = {\n Header: () => {\n return (\n <InteractionHeaderCell\n interaction={interaction}\n results={results}\n interactive={interactive}\n interactiveMetadata={interactiveMetadata}\n interactionNumber={index + 1}\n onMouseEnter={() => onColumnHover(index)}\n onMouseLeave={() => onColumnHover(null)}\n />\n );\n },\n accessor: 'results',\n /**\n * `onSelectStudentResponse` in `StudentResultsTable` expects the column id to the interaction id\n */\n id: interaction.id,\n disableSortBy: true,\n width: RESULTS_COL_WIDTH,\n Cell: ({ row: { original: studentResults } }) => (\n <StudentResultCell interaction={interaction} studentResults={studentResults} />\n )\n };\n return col;\n });\n }, [refreshData]);\n}\n\n/**\n * Returns memoized table data. To trigger a recalculation, toggle the value of `refreshData`.\n */\nexport function useGetResultsTableData(\n interactive: Interactive,\n results: InteractiveResultSet,\n refreshData: boolean,\n sortBy?: SortingRule<StudentResultsWithSummary>\n): StudentResultsWithSummary[] {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n return React.useMemo(() => {\n const students: StudentResultsWithSummary[] = [];\n\n results.students.forEach(s => {\n students.push(({ ...s, summary: getStudentResultsSummary(interactive, s) }));\n });\n\n if (sortBy?.id === 'user') {\n const sorted = ArrayHelper.sortBy(students, student => anonymiseUserName(student.user, anonymiseUsers));\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'summary.unanswered') {\n const sorted = ArrayHelper.sortBy(students, student => student.summary.unanswered);\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n if (sortBy?.id === 'score' || sortBy?.id === 'percentage') {\n const sorted = ArrayHelper.sortBy(students, student => {\n if (student.summary.awaitingMarking)\n return -1;\n\n return student.summary.percentCorrect;\n });\n\n return sortBy.desc ? sorted.reverse() : sorted;\n }\n\n return students;\n }, [ refreshData, sortBy, anonymiseUsers ]);\n}\n\nexport function highlightColumns(tableEl: HTMLElement, highlightIndex?: number): void {\n if (!tableEl)\n return;\n\n const rows = tableEl.querySelectorAll(`.${styles.resultsRow}`);\n\n rows?.forEach(row => {\n row.childNodes.forEach((col: HTMLElement, colIdx: number) => {\n col.classList.remove(styles.highlightColumn);\n\n if (colIdx === highlightIndex)\n col.classList.add(styles.highlightColumn);\n });\n });\n}\n\nexport function highlightRows(tableEl: HTMLElement, highlightIndex?: number): void {\n if (!tableEl)\n return;\n\n const rows = tableEl.querySelectorAll(`.${styles.resultsRow}`);\n\n rows?.forEach((row, rowIdx) => {\n row.classList.remove(styles.highlightResultsRow);\n\n if (rowIdx === highlightIndex)\n row.classList.add(styles.highlightResultsRow);\n });\n}"],"names":["getInteraction","timepoint","selectedInteraction","InteractionsBar","props","t","jsx","Fragment","interaction","isSelected","bgClassName","InteractionTypeHelper","left","jsxs","styles","DurationHelper","namespace","getPhrase","LanguageService","getDuration","interactiveMetadata","InteractionResultsSummary","summary","React","getInteractionResultsSummary","InteractionLabel","PercentageIndicator","PercentageIndicatorLayout","InteractionResultsSummaryPopover","interactive","results","popoverProps","ref","Popover","InteractionHeaderCell","OverlayTrigger","_a","MinusSvg","getSvg","correctness","InteractionCorrectness","CheckSvg","CloseSvg","getClassName","className","StudentResultCell","InteractiveCorrectnessHelper","getStudentResult","svg","SvgContainer","PendingIndicator","RESULTS_COL_WIDTH","CellWrapper","HeaderCell","useGetFixedColumns","anonymiseUsers","useViewModel","ViewModelKeys","hasResults","column","value","anonymiseUserName","useGetResultColumns","onColumnHover","refreshData","getInteractions","index","studentResults","useGetResultsTableData","sortBy","students","s","getStudentResultsSummary","sorted","ArrayHelper","student","highlightColumns","tableEl","highlightIndex","rows","row","col","colIdx","highlightRows","rowIdx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{s as a,bD as l}from"./app-BDrXtKwD.js";import{g as o}from"./sFV5nxD4.chunk.js";const g={logins(e,s,t,r){return{url:a.urlBuilder("{gateway}/v1/analytics/logins",{...e,timeOffset:l.getTimezoneOffset()}),key:o("logins",e),normalize:!1,success:s,error:t,always:r}}};export{g as L};
2
+ //# sourceMappingURL=BohkY37l.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BohkY37l.chunk.js","sources":["../../src/shared/flight-requests/LoginRequests.ts"],"sourcesContent":["import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LoginEventResponse } from 'libs/shared/apps/analytics/interfaces/LoginEvent';\nimport { AnalyticsRequestFilter } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\n\nexport const LoginRequests = {\n logins(\n filter: AnalyticsRequestFilter,\n success?: (data: LoginEventResponse) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/logins', {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n }),\n key: getAnalyticsRequestKey('logins', filter),\n normalize: false,\n success,\n error,\n always\n };\n }\n};"],"names":["LoginRequests","filter","success","error","always","UrlHelper","DateHelper","getAnalyticsRequestKey"],"mappings":"sFAUO,MAAMA,EAAgB,CAC3B,OACEC,EACAC,EACAC,EACAC,EACgB,CAChB,MAAO,CACL,IAAKC,EAAU,WAAW,gCAAiC,CACzD,GAAGJ,EACH,WAAYK,EAAW,kBAAA,CAAkB,CAC1C,EACD,IAAKC,EAAuB,SAAUN,CAAM,EAC5C,UAAW,GACX,QAAAC,EACA,MAAAC,EACA,OAAAC,CAAA,CAEJ,CACF"}
@@ -0,0 +1,2 @@
1
+ import{r as a,d as u,c as i,V as o}from"./app-BDrXtKwD.js";import{g as f}from"./CX5q-0jT.chunk.js";function E(e){const[s,t]=a.useState(!1),n=f(u());return a.useEffect(()=>{t(r=>!r)},[e.isFetching]),a.useEffect(()=>{t(r=>!r)},[n]),s}function d(e){var t;const[,s]=i(o.AUDIENCE_FILTER_SELECTED_COUNT);a.useEffect(()=>{if(!e.data){s(null);return}s(e.data.studentCount)},[(t=e.data)==null?void 0:t.studentCount])}export{E as a,d as u};
2
+ //# sourceMappingURL=BvIrLDbv.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BvIrLDbv.chunk.js","sources":["../../src/apps/interactives/hooks/UseRefreshInteractiveResults.ts","../../src/apps/interactives/hooks/UseSetInteractiveResultsAudienceFilterCount.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { getFilterParamsKey } from 'libs/shared/apps/analytics/utils/FilterParamUtils';\nimport { InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { useGetAppLinkFilterParams } from 'shared/hooks/UseGetFilterQueryParams';\n\nexport function useRefreshInteractiveResults(results: Flight.Response<InteractiveResultSet>): boolean {\n const [ refresh, setRefresh ] = useState(false);\n\n const filterKey = getFilterParamsKey(useGetAppLinkFilterParams());\n\n useEffect(() => {\n setRefresh(r => !r);\n }, [results.isFetching]);\n\n useEffect(() => {\n setRefresh(r => !r);\n }, [filterKey]);\n \n return refresh;\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { InteractiveResultSet } from 'libs/shared/interfaces';\n\nimport { ViewModelKeys } from 'shared/constants/ReportsViewModels';\n\n/**\n * So that we can display the number of selected users in the audience filter\n * (including users in classrooms and groups), we read it from the InteractiveResultSet and\n * set it in a view model so that it can be read in AudienceFilterToggle.\n */\nexport function useSetInteractiveResultsAudienceFilterCount(results: Flight.Response<InteractiveResultSet>): void {\n const [ , setFilterCount ] = useViewModel<number>(ViewModelKeys.AUDIENCE_FILTER_SELECTED_COUNT);\n\n useEffect(() => {\n if (!results.data) {\n setFilterCount(null);\n return;\n }\n \n setFilterCount(results.data.studentCount);\n }, [results.data?.studentCount]);\n}"],"names":["useRefreshInteractiveResults","results","refresh","setRefresh","useState","filterKey","getFilterParamsKey","useGetAppLinkFilterParams","useEffect","useSetInteractiveResultsAudienceFilterCount","setFilterCount","useViewModel","ViewModelKeys","_a"],"mappings":"mGASO,SAASA,EAA6BC,EAAyD,CACpG,KAAM,CAAEC,EAASC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EAExCC,EAAYC,EAAmBC,GAA2B,EAEhEC,OAAAA,EAAAA,UAAU,IAAM,CACdL,EAAW,GAAK,CAAC,CAAC,CACpB,EAAG,CAACF,EAAQ,UAAU,CAAC,EAEvBO,EAAAA,UAAU,IAAM,CACdL,EAAW,GAAK,CAAC,CAAC,CACpB,EAAG,CAACE,CAAS,CAAC,EAEPH,CACT,CCTO,SAASO,EAA4CR,EAAsD,OAChH,KAAM,CAAA,CAAIS,CAAe,EAAIC,EAAqBC,EAAc,8BAA8B,EAE9FJ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACP,EAAQ,KAAM,CACjBS,EAAe,IAAI,EACnB,MACF,CAEAA,EAAeT,EAAQ,KAAK,YAAY,CAC1C,EAAG,EAACY,EAAAZ,EAAQ,OAAR,YAAAY,EAAc,YAAY,CAAC,CACjC"}
@@ -0,0 +1,2 @@
1
+ import{j as e,O as o,bF as C,L as j,e as x,u as l,o as g,a7 as w,U as f}from"./app-BDrXtKwD.js";import{M as v,V as d}from"./GybZtYpZ.chunk.js";import{u as T}from"./BzoD15bZ.chunk.js";import{U as N,V as u,E as S,P as b}from"./BKardFg7.chunk.js";import{a as V,T as c}from"./DTDgnfLK.chunk.js";import{u as I}from"./M-TSYEoo.chunk.js";const E="reportsShared.viewCountPieChartEmptyState",m=j.encloseNamespace(E);function y(t){return e.jsxs(o,{className:"flex-grow-1 justify-content-center",children:[e.jsx(o.Image,{src:C.EmptyStates.Shared.ViewCount,className:"w-75 h-auto pb-0"}),e.jsx(o.Heading,{children:m("heading")}),e.jsx(o.Info,{className:"w-100",children:m(t.singular?"descriptionSingular":"descriptionMultiple")})]})}const P="_topicColumn_yyw9h_1",p={topicColumn:P},F="reportsShared.viewCountByTopicCard",n=j.encloseNamespace(F);function h(t){const a=x(),i=l(!!a&&V.viewsByTopic(a,t.type));return i.data?i.data.length?e.jsx("div",{className:"h-100 me-n2",children:e.jsxs(g.Scrollbars,{height:"100%",className:"mt-2",children:[e.jsxs("div",{className:"d-flex align-items-center pe-1",children:[e.jsxs("div",{className:`d-flex flex-wrap pe-2 ${p.topicColumn}`,children:[e.jsx("strong",{className:"me-1",children:n(t.type===c.RootTopic?"subject":"topic")}),e.jsx("span",{className:"text-secondary",children:n(t.type===c.RootTopic?"multipleSubjects":"multipleTopics")})]}),e.jsx("strong",{children:n("views")})]}),e.jsx("ul",{className:"list-unstyled",children:i.data.map((s,r)=>e.jsx("li",{children:e.jsxs(w,{title:s.collection.name,spanHack:!0,spanHackClassName:"d-flex align-items-center pe-1",children:[e.jsx("div",{className:`py-2 pe-2 ${p.topicColumn}`,children:e.jsx(v,{data:s.collection})}),e.jsx("strong",{children:n("viewCount",{smartCount:s.count})})]})},r))})]})}):e.jsx(y,{}):e.jsx(e.Fragment,{})}function H(t){const a=x(),i=l(!!t.useSharerId&&f.currentUser()),s=l(!!a&&(t.useSharerId?i.hasCompleted&&d.views(a,t.objectId,i.data.id):d.views(a,t.objectId)));T(s),I(s);const r=!t.objectId;return e.jsx("div",{className:`bg-white rounded p-3 position-relative d-flex flex-column ${t.className??""}`,children:s.data?e.jsx(N,{eventType:S.VideoView,events:s.data,objectId:t.objectId,emptyStateComponent:e.jsx(y,{singular:!!t.objectId}),customGroupBy:r?[{type:u.Subject,getComponent:()=>e.jsx(h,{type:c.RootTopic})},{type:u.Topic,getComponent:()=>e.jsx(h,{type:c.ChildTopic})}]:null}):e.jsx(b,{})})}export{H as V};
2
+ //# sourceMappingURL=BvJAziJf.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BvJAziJf.chunk.js","sources":["../../src/shared/views/overview-cards/view-count-pie-chart-card/components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState.tsx","../../src/shared/views/overview-cards/view-count-pie-chart-card/components/view-count-by-topic/ViewCountByTopicCard.tsx","../../src/shared/views/overview-cards/view-count-pie-chart-card/ViewCountPieChartCardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nconst namespace = 'reportsShared.viewCountPieChartEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ViewCountPieChartEmptyStateProps {\n singular?: boolean;\n}\n\nexport function ViewCountPieChartEmptyState(props: ViewCountPieChartEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.ViewCount}\n className='w-75 h-auto pb-0'\n />\n <EmptyState.Heading>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase(props.singular ? 'descriptionSingular' : 'descriptionMultiple')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport {\n ViewCountPieChartEmptyState\n} from 'shared/views/overview-cards/view-count-pie-chart-card/components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState';\n\nimport styles from './view-count-by-topic-card.module.scss';\n\nconst namespace = 'reportsShared.viewCountByTopicCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ViewCountByTopicCardProps {\n type: TopicAnalyticsType;\n}\n\nexport function ViewCountByTopicCard(props: ViewCountByTopicCardProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const viewsByTopic = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.viewsByTopic(requestFilter, props.type));\n\n if (!viewsByTopic.data)\n return <></>;\n\n if (!viewsByTopic.data.length)\n return <ViewCountPieChartEmptyState />;\n\n return (\n <div className='h-100 me-n2'>\n <Scrollbars height='100%' className='mt-2'>\n <div className='d-flex align-items-center pe-1'>\n <div className={`d-flex flex-wrap pe-2 ${styles.topicColumn}`}>\n <strong className='me-1'>\n {getPhrase(props.type === TopicAnalyticsType.RootTopic ? 'subject' : 'topic')}\n </strong>\n <span className='text-secondary'>\n {getPhrase(props.type === TopicAnalyticsType.RootTopic ? 'multipleSubjects' : 'multipleTopics')}\n </span>\n </div>\n <strong>{getPhrase('views')}</strong>\n </div>\n <ul className='list-unstyled'>\n {viewsByTopic.data.map((v, idx) => (\n <li key={idx}>\n <Tooltip\n title={v.collection.name}\n spanHack\n spanHackClassName='d-flex align-items-center pe-1'\n >\n <div className={`py-2 pe-2 ${styles.topicColumn}`}>\n <SubjectWidgetItem data={v.collection} />\n </div>\n <strong>\n {getPhrase('viewCount', { smartCount: v.count })}\n </strong>\n </Tooltip>\n </li>\n ))}\n </ul>\n </Scrollbars>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { UserRequests as SharedUserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PartialUserActivityPieChart } from 'shared/components/user-activity-pie-chart/partial-loading/PartialUserActivityPieChart';\nimport { UserActivityPieChart } from 'shared/components/user-activity-pie-chart/UserActivityPieChart';\nimport { VideoViewGroupBy } from 'shared/components/user-activity-pie-chart/utils/UserActivityPieChartTypes';\nimport { EventType } from 'shared/enums/EventType';\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { useSetAudienceFilterCount } from 'shared/hooks/UseSetAudienceFilterCount';\n\nimport { ViewCountByTopicCard } from './components/view-count-by-topic/ViewCountByTopicCard';\nimport { ViewCountPieChartEmptyState } from './components/view-count-pie-chart-empty-state/ViewCountPieChartEmptyState';\n\ninterface ViewCountPieChartCardViewProps {\n /**\n * className is required as a height must be specified.\n */\n className: string;\n objectId?: string;\n useSharerId?: boolean;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ViewCountPieChartCardView(props: ViewCountPieChartCardViewProps): JSX.Element {\n const requestFilter = useGetRequestFilter();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(!!props.useSharerId && SharedUserRequests.currentUser());\n\n const views = Flight.useBasicFetch<VideoViewEventResponse>(!!requestFilter && (props.useSharerId\n ? currentUser.hasCompleted &&\n VideoViewRequests.views(requestFilter, props.objectId, currentUser.data.id)\n : VideoViewRequests.views(requestFilter, props.objectId)\n ));\n\n useHandleObjectError(views);\n useSetAudienceFilterCount(views);\n\n const displayTopicFilters = !props.objectId;\n\n return (\n <div className={`bg-white rounded p-3 position-relative d-flex flex-column ${props.className ?? ''}`}>\n {views.data\n ? <UserActivityPieChart\n eventType={EventType.VideoView}\n events={views.data}\n objectId={props.objectId}\n emptyStateComponent={<ViewCountPieChartEmptyState singular={!!props.objectId} />}\n customGroupBy={displayTopicFilters ? [\n {\n type: VideoViewGroupBy.Subject,\n getComponent: () => <ViewCountByTopicCard type={TopicAnalyticsType.RootTopic} />\n },\n {\n type: VideoViewGroupBy.Topic,\n getComponent: () => <ViewCountByTopicCard type={TopicAnalyticsType.ChildTopic} />\n }\n ] : null}\n />\n : <PartialUserActivityPieChart />\n }\n </div>\n );\n}"],"names":["namespace","getPhrase","LanguageService","ViewCountPieChartEmptyState","props","jsxs","EmptyState","jsx","ImageUrls","ViewCountByTopicCard","requestFilter","useGetRequestFilter","viewsByTopic","Flight.useBasicFetch","TopicRequests","Scrollbars","styles","TopicAnalyticsType","v","idx","Tooltip","SubjectWidgetItem","Fragment","ViewCountPieChartCardView","currentUser","SharedUserRequests","views","VideoViewRequests","useHandleObjectError","useSetAudienceFilterCount","displayTopicFilters","UserActivityPieChart","EventType","VideoViewGroupBy","PartialUserActivityPieChart"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{cM as g,L as o,az as a,bZ as u,cP as f,cS as h,r as p}from"./app-BDrXtKwD.js";const i="shared.regionLockedResourceError";class E extends g{constructor(){super(o.getPhrase(i,"title"))}get name(){return"RegionLockedResourceError"}get heading(){return o.getPhrase(i,"heading")}get description(){return o.getPhrase(i,"description")}}const c="shared.privateResourceError";class d extends g{constructor(){super(o.getPhrase(c,"title"))}get name(){return"PrivateResourceError"}get heading(){return o.getPhrase(c,"heading")}get description(){return o.getPhrase(c,"description")}}const l={notFound:h,forbidden:{rating:d,yearLevel:d,region:E,privacy:d},badRequest:f,internalServerError:f};function R(r,n={},t={}){if(!r)return;let e;typeof r=="number"?e=r:e=r.status;const s={...l,...n};if(e&&a.isStatusCodeError(e)){if(e===u.InternalServer){t.internalServerError||a.throw(new f);return}if(e===u.NotFound){t.notFound||a.throw(new s.notFound);return}if(e===u.Forbidden){t.forbidden||a.throw(new s.forbidden.privacy);return}t.badRequest||a.throw(new s.badRequest)}}function v(r){return r.map(n=>n.statusCode).join(":")}function b(r,n,t){const e=Array.isArray(r)?r:[r];p.useEffect(()=>{e.forEach(s=>{R(s.statusCode,n,t)})},[v(e),n,t])}export{E as R,b as u};
2
+ //# sourceMappingURL=BzoD15bZ.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BzoD15bZ.chunk.js","sources":["../../../../libs/shared/src/errors/general/region-locked-resource/RegionLockedResourceError.ts","../../../../libs/shared/src/errors/general/private-resource/PrivateResourceError.ts","../../../../libs/shared/src/errors/handlers/HttpErrorHandlers.ts","../../../../libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.regionLockedResourceError';\n\nexport class RegionLockedResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'RegionLockedResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.privateResourceError';\n\nexport class PrivateResourceError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'PrivateResourceError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["namespace","RegionLockedResourceError","ErrorPageError","LanguageService","PrivateResourceError","defaultErrors","NotFoundError","UnspecifiedError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","Core.ErrorHelper","HttpStatus","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect"],"mappings":"qFAIA,MAAMA,EAAY,mCAEX,MAAMC,UAAkCC,CAAe,CAC5D,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,2BACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCrBA,MAAMA,EAAY,8BAEX,MAAMI,UAA6BF,CAAe,CACvD,aAAc,CACZ,MAAMC,EAAgB,UAAUH,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,sBACT,CAGA,IAAW,SAAkB,CAC3B,OAAOG,EAAgB,UAAUH,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAOG,EAAgB,UAAUH,EAAW,aAAa,CAC3D,CACF,CCEA,MAAMK,EAA8B,CAClC,SAAUC,EACV,UAAW,CACT,OAAQF,EACR,UAAWA,EACX,OAAQH,EACR,QAASG,CAAA,EAEX,WAAYG,EACZ,oBAAqBA,CACvB,EAEO,SAASC,EACdC,EACAC,EAA+B,CAAA,EAK/BC,EAAgC,CAAA,EAC1B,CACN,GAAI,CAACF,EACH,OAEF,IAAIG,EAEA,OAAOH,GAAU,SACnBG,EAAaH,EAEbG,EAAaH,EAAK,OAGpB,MAAMI,EAAW,CACf,GAAGR,EACH,GAAGK,CAAA,EAGL,GAAKE,GAGAE,EAAiB,kBAAkBF,CAAU,EAGlD,IAAIA,IAAeG,EAAW,eAAgB,CACvCJ,EAAU,qBACbG,EAAiB,MAAM,IAAIP,CAAkB,EAC/C,MACF,CAEA,GAAIK,IAAeG,EAAW,SAAU,CACjCJ,EAAU,UACbG,EAAiB,MAAM,IAAID,EAAS,QAAU,EAChD,MACF,CAEA,GAAID,IAAeG,EAAW,UAAW,CAKlCJ,EAAU,WACbG,EAAiB,MAAM,IAAID,EAAS,UAAU,OAAS,EACzD,MACF,CAEKF,EAAU,YACbG,EAAiB,MAAM,IAAID,EAAS,UAAY,EACpD,CCxFA,SAASG,EAAiBC,EAAiD,CACzE,OAAOA,EAAW,IAAIC,GAAOA,EAAI,UAAU,EAAE,KAAK,GAAG,CACvD,CAGO,SAASC,EACdC,EACAC,EACAC,EACM,CACN,MAAML,EAAa,MAAM,QAAQG,CAAW,EAAIA,EAAc,CAACA,CAAW,EAE1EG,EAAAA,UAAU,IAAM,CACdN,EAAW,QAAQC,GAAO,CACxBV,EAAgBU,EAAI,WAAYG,EAAcC,CAAY,CAC5D,CAAC,CACH,EAAG,CAAEN,EAAiBC,CAAU,EAAGI,EAAcC,CAAa,CAAC,CACjE"}
@@ -0,0 +1,2 @@
1
+ import{j as a,e as x,u as f,i as j,S as h,p,I as u,T as g}from"./app-BDrXtKwD.js";import{B as b}from"./C89Wm2QM.chunk.js";import{I as r,a as d}from"./D4zllLcC.chunk.js";import{a as v}from"./DTDgnfLK.chunk.js";const N="_cover_ggfj4_1",C="_fallbackImage_ggfj4_5",n={cover:N,fallbackImage:C};function t(s){return a.jsxs("div",{className:"d-flex position-relative mb-3",children:[a.jsx("div",{className:`${n.fallbackImage} me-2`,children:a.jsx(r,{type:d.Subject,extraClasses:"border rounded"})}),a.jsx("div",{className:"w-100",children:a.jsx("div",{className:`partial-loading-background ${s.className}`,children:" "})})]})}function k(){return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"partial-loading-background w-25 mb-3",children:" "}),a.jsx(t,{className:"w-25"}),a.jsx(t,{className:"w-50"}),a.jsx(t,{className:"w-33"}),a.jsx(t,{className:"w-25"})]})}const I="reportsShared.topClassificationsCard";function w(s){const[i,e]=p.useState(!1);return a.jsxs("div",{className:"d-flex position-relative",children:[!i&&a.jsx(r,{type:d.Subject,extraClasses:`${n.fallbackImage} border rounded`}),a.jsx("div",{className:`${n.cover} flex-shrink-0 me-2 rounded overflow-hidden`,children:a.jsx(b,{data:s.topClassification.collection.cover,imageOptions:{size:u.Medium},onLoad:()=>e(!0)})}),a.jsxs("div",{children:[a.jsx("h3",{className:"h6 mb-0 clamp-2 mt-1",children:s.topClassification.collection.name}),a.jsx("p",{children:a.jsx(g,{namespace:I,phrase:"views",options:{smartCount:s.topClassification.count}})})]})]})}function F(s){var o;const i=x(),e=f(!!i&&v.topTopicsV2(i,s.type,s.limit)),m=(o=e.data)==null?void 0:o.sort((l,c)=>c.count-l.count);return a.jsx("div",{className:"d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3",children:e.data?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex justify-content-between",children:[a.jsx("h2",{className:"h6 mb-3",children:s.heading}),s.appLink&&s.appLinkText&&a.jsx(j,{appLink:s.appLink,className:"text-info",children:s.appLinkText})]}),e.data.length?a.jsx(h,{className:"pb-3",children:a.jsx("ul",{className:"list-unstyled m-0 pe-3",children:m.map((l,c)=>a.jsx("li",{className:"pb-3",children:a.jsx(w,{topClassification:l})},c))})}):a.jsx("div",{className:"d-flex align-items-center justify-content-center h-100",children:s.emptyStateText})]}):a.jsx(k,{})})}export{F as T};
2
+ //# sourceMappingURL=C0fIn5Jw.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C0fIn5Jw.chunk.js","sources":["../../src/shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard.tsx","../../src/shared/views/overview-cards/top-classifications-card/TopClassificationsCardView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from '../top-classification-card.module.scss';\n\ninterface PartialClassificationItemProps {\n className?: string;\n}\n\nfunction PartialClassificationItem(props: PartialClassificationItemProps) {\n return (\n <div className='d-flex position-relative mb-3'>\n <div className={`${styles.fallbackImage} me-2`}>\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses='border rounded'\n />\n </div>\n\n <div className='w-100'>\n <div className={`partial-loading-background ${props.className}`}>&nbsp;</div>\n </div>\n </div>\n );\n}\n\nexport function PartialTopClassificationsCard() {\n return (\n <>\n <div className='partial-loading-background w-25 mb-3'>&nbsp;</div>\n\n <PartialClassificationItem className='w-25' />\n <PartialClassificationItem className='w-50' />\n <PartialClassificationItem className='w-33'/>\n <PartialClassificationItem className='w-25'/>\n </>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport { TopicAnalyticsType } from 'shared/enums/TopicAnalyticsType';\nimport { TopicRequests } from 'shared/flight-requests/TopicRequests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { CollectionViewEvent } from 'shared/interfaces';\nimport { PartialTopClassificationsCard } from 'shared/views/overview-cards/top-classifications-card/partial-loading/PartialTopClassificationsCard';\n\nimport styles from './top-classification-card.module.scss';\n\nconst namespace = 'reportsShared.topClassificationsCard';\n\ninterface ClassificationListItemProps {\n topClassification: CollectionViewEvent<Classification>;\n}\n\nfunction ClassificationListItem(props: ClassificationListItemProps) {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n\n return (\n <div className='d-flex position-relative'>\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`${styles.fallbackImage} border rounded`}\n />\n )}\n <div className={`${styles.cover} flex-shrink-0 me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.topClassification.collection.cover}\n imageOptions={{ size: ImageSize.Medium }}\n onLoad={() => setHasLoadedImage(true)}\n />\n </div>\n <div>\n <h3 className='h6 mb-0 clamp-2 mt-1'>\n {props.topClassification.collection.name}\n </h3>\n <p><Text namespace={namespace} phrase='views' options={{ smartCount: props.topClassification.count }} /></p>\n </div>\n </div>\n );\n}\n\ninterface TopClassificationsCardProps {\n heading: string;\n type: TopicAnalyticsType;\n appLink?: Core.AppLink;\n appLinkText?: string;\n emptyStateText: string;\n limit: number;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function TopClassificationsCardView(props: TopClassificationsCardProps) {\n const requestFilter = useGetRequestFilter();\n \n const topClassifications = Flight.useBasicFetch<CollectionViewEvent<Classification>[]>(!!requestFilter &&\n TopicRequests.topTopicsV2(requestFilter, props.type, props.limit));\n\n const sortedTopClassifications = topClassifications.data?.sort((a, b) => b.count - a.count);\n\n return (\n <div className='d-flex flex-column h-100 bg-white overflow-hidden rounded pt-3 px-3'>\n {topClassifications.data ?\n <>\n <div className='d-flex justify-content-between'>\n <h2 className='h6 mb-3'>{props.heading}</h2>\n\n {props.appLink && props.appLinkText &&\n <AppLink\n appLink={props.appLink}\n className='text-info'\n >\n {props.appLinkText}\n </AppLink>\n }\n </div>\n {topClassifications.data.length ?\n <Scrollbars className='pb-3'>\n <ul className='list-unstyled m-0 pe-3'>\n {sortedTopClassifications.map((t, idx) => (\n <li key={idx} className='pb-3'>\n <ClassificationListItem topClassification={t} />\n </li>\n ))}\n </ul>\n </Scrollbars>\n : <div className='d-flex align-items-center justify-content-center h-100'>{props.emptyStateText}</div>\n }\n </> : <PartialTopClassificationsCard />\n }\n </div>\n );\n}"],"names":["PartialClassificationItem","props","jsxs","jsx","styles","ImageFallback","ImageFallbackType","PartialTopClassificationsCard","Fragment","namespace","ClassificationListItem","hasLoadedImage","setHasLoadedImage","React","BaseImage","ImageSize","Text","TopClassificationsCardView","requestFilter","useGetRequestFilter","topClassifications","Flight.useBasicFetch","TopicRequests","sortedTopClassifications","_a","a","b","AppLink","Scrollbars","t","idx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as a,j as s,ae as v,h as H,a6 as I,F as m,cb as P,cc as g}from"./app-BDrXtKwD.js";import{u as w}from"./DecntqLn.chunk.js";import{C as L}from"./DZYVycui.chunk.js";const N="_container_1kfhe_1",_="_spinner_1kfhe_4",C={container:N,spinner:_};j.defaultProps={fetchOnScroll:!1};function j(e){const[i,n]=w();return a.useEffect(()=>{var r;e.fetchOnScroll&&(!n||e.isFetching||(r=e.fetchNext)==null||r.call(e,e.nextCursor))},[n,e.isFetching]),s.jsx("div",{className:`p-3 text-center ${C.container}`,children:e.isFetching?s.jsx(v,{as:"span",animation:"border",role:"status",className:C.spinner}):s.jsx("div",{ref:i,children:s.jsx(H,{svg:L,className:"svg-container cursor-pointer",size:I.Large,onClick:()=>{var r;return(r=e.fetchNext)==null?void 0:r.call(e,e.nextCursor)}})})})}const d=400;function k(e){const i=()=>{if(!e.isFetching){if(e.scrollContainer){const{scrollContainer:n}=e,r=n.getBoundingClientRect().height+n.scrollTop,u=n.scrollHeight-d;if(r<u)return}else{const n=window.innerHeight+document.documentElement.scrollTop,r=document.documentElement.scrollHeight-d;if(n<r)return}e.fetchNextPage()}};a.useEffect(()=>{const n=m.throttle(i,200),r=e.scrollContainer||window;return e.hasMore&&r.addEventListener("scroll",n),()=>r.removeEventListener("scroll",n)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function y(e,i,n,r,u,S){const[x,o]=a.useState(0),f=i;function F(c){if(!e)return null;const l=e(c);return l?l.key:null}const t=P(F,r);function E(){if(!(!i||!e||!t))return o(c=>c+1),f(t.nextCursor)}return k({fetchNextPage:E,hasMore:!!(t!=null&&t.nextCursor),isFetching:t==null?void 0:t.isFetching,scrollContainer:S}),a.useEffect(()=>{t&&t.shouldInitialFetch&&i&&(f(),o(c=>c+1))},[t==null?void 0:t.shouldInitialFetch,i]),a.useEffect(()=>{var l,h;if(!(t!=null&&t.statusCode)||!m.isFunction(n))return;const c=+((h=(l=t.statusCode)==null?void 0:l.toString())==null?void 0:h.substr(0,1));c!==g.ClientError&&c!==g.ServerError||n(x,t.statusCode)},[t==null?void 0:t.statusCode]),{items:t==null?void 0:t.items,hasMore:!!(t!=null&&t.nextCursor),nextCursor:t==null?void 0:t.nextCursor,isFetching:t==null?void 0:t.isFetching,totalItems:t==null?void 0:t.totalItems,hasFirstPageCompleted:t==null?void 0:t.hasFirstPageCompleted}}export{j as I,y as u};
2
+ //# sourceMappingURL=C1LS2BqQ.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C1LS2BqQ.chunk.js","sources":["../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts"],"sourcesContent":["import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}"],"names":["InfiniteScrollFooter","props","ref","inView","useInView","React.useEffect","_a","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","HttpStatusClass"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as b,j as o,ah as k,by as L,i as I,bz as c}from"./app-BDrXtKwD.js";import{u as N}from"./DecntqLn.chunk.js";function x(e={}){const{prevent:r,rootMargin:a,triggerOnce:t=!0}=e;let[i,m,g]=N({triggerOnce:t,rootMargin:a});return(r===!0||typeof window.IntersectionObserver>"u")&&(m=!0,i=null),{ref:i,inView:m,initialized:!!g}}const v="_image_pp6me_1",A={image:v},T="500px",$="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",j=b.memo(function(e){const{forceLoad:r,extraClasses:a="",errorFallbackImageSrc:t,preventLoad:i=!1,errorFallbackImageClassName:m,src:g,alt:f,...u}=e,{ref:_,inView:s}=x({rootMargin:T}),[l,C]=b.useState(!1);b.useEffect(()=>{if(!r&&!s||i)return;const d=new Image;return d.onerror=()=>{C(!0),t&&(d.src=t)},d.src=g,()=>d.onerror=null},[s,i]);function y(){return l&&t?t:e.src}if(l&&!t)return o.jsx(o.Fragment,{});if(!_)return o.jsx("img",{className:`${A.image} ${a} ${l&&m||""}`,alt:f,src:y(),...u});const h={alt:f,...u,...(s||r)&&!i?{src:y()}:{src:$}};return r||(h.ref=_),o.jsx("img",{className:`${A.image} ${a} ${l&&m||""}`,...h})}),p="_image_1himm_1",P="_thumbnail_1himm_13",F="_tallPoster_1himm_16",O="_cover_1himm_19",S="_banner_1himm_22",E="_poster_1himm_25",w="_pdf_1himm_28",D="_link_1himm_31",n={image:p,thumbnail:P,tallPoster:F,cover:O,banner:S,poster:E,pdf:w,link:D};function B(e){let r=n.image,a="";return e.imageType===c.Thumbnails&&(a=`thumbnail ${n.thumbnail}`),e.imageType===c.TallPosters&&(a=n.tallPoster),e.imageType===c.Covers&&(a=n.cover),e.imageType===c.Banners&&(a=n.banner),e.imageType===c.Posters&&(a=n.poster),e.imageType===c.Pdf&&(a=n.pdf),e.imageType===c.Link&&(a=n.link),a&&(r+=` ${a}`),e.className&&(r+=` ${e.className}`),r}function H(e){const{data:r,imageOptions:a,appLink:t,preload:i,preventLoad:m,analyticsOptions:g,analyticsData:f,imageClassName:u,alt:_}=e;let s="";typeof r=="string"?s=r:k.isObject(r)&&(s=r.url);const l=s&&a?L.createUrl(s,a):s;return o.jsx("div",{className:B(e),style:e.imageStyle,children:o.jsxs(I,{appLink:t,analyticsData:f,analyticsOptions:g,onClick:e.onClick,preventFocus:e.preventFocus,className:e.appLinkClassName,children:[e.children,l&&o.jsx(j,{src:l,alt:_,forceLoad:i,preventLoad:m,extraClasses:u,errorFallbackImageSrc:e.errorFallbackImageSrc,errorFallbackImageClassName:e.errorFallbackImageClassName,onLoad:e.onLoad})]})})}export{H as B};
2
+ //# sourceMappingURL=C89Wm2QM.chunk.js.map